質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

意見交換

クローズ

3回答

401閲覧

深層学習におけるデータセットの増やし方(not拡張)について教えてください。

kenhara

総合スコア11

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2023/09/18 09:31

0

0

テーマ、知りたいこと

深層学習における学習データやテストデータの増やし方について教えてください。
Data Augumentation ではありません。

背景、状況

 現在、自己データを用いた「物体検出」タスクに取り組んでいます。まず、ある程度の量のデータを用意して、学習用、テスト用、検証用に分割しデータセットAとします。モデルを学習して評価を行い、モデルの精度が判明しました。

 この後、モデルの精度を向上させたいので、追加でデータを収集しました。新たに収集したデータの量は、前回に比べて少なかったとします。このデータを同じように学習用、テスト用、検証用に分割してデータセットBとします。学習にはデータセットA+Bとしてデータを用いて学習を行い。以下の表の用な結果が出ました(数値は適当)。

学習データA(mAP)学習データA+B(mAP)
テストデータA90%85%
テストデータB80%90%
テストデータA+B85%80%

 期待していた結果としてはテストデータA+Bでの精度が向上している状態でしたが、期待した結果は得られませんでした。このような結果になった理由としては追加したデータが少なかったため、テストデータA+Bのデータ内のデータセットAのテストデータの比率が高かったことが考えられます。このような場合はテストデータAとテストデータBの比率が同じになるようにするか、そもそも追加するデータの量を前回のデータの量と同じだけ収集することが必要ではないかと考えております。

 このような場合でのデータセットの増やし方を教えていただけませんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答3

#1

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/09/19 14:22

データAとデータBで多様性が増えるであろうA+Bでかえって結果が悪くなった、ということと理解しました。「スコア改善」が目的であればネットワーク構造(Dropoutなどが王道ですね)が出ますが、それではなくデータの集め方の改善というアプローチで考える、ということですね(違ったらコメントください)。

たぶんですが、データの多様性に沿ってデータのサンプリングをする必要があるように思います。どうやるんだ、というとすぐに手法名は出てきませんが恐らく

  1. 全結合層の手前の次元のデータに埋め込まれている情報に対してt-SNEなのかクラスタリングなのか適当な処理をして
  2. 同じクラスの画像の中でも「画像同士がなるべく似ていない画像」をかき集めるようにサンプリングをして
  3. 多様性を確保したデータセットで学習

が良いと思います。

素人がぱっと思いついた方法なので、英語で調べれば「んなもなぁ5年も前にarXivされてるわ!」みたいな感じでgithubにコードがオープンになっているハズです。embeddingstransfer learningなどがキーワードになりそうです。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

kenhara

総合スコア11

投稿2023/09/20 01:17

回答ありがとうございます。

 そうですね。モデルの性能の向上を目的に、アルゴリズムの変更では無く、単純にデータを増やすと性能が上がるだろうという考えのもと(アノテーションの質は変化していないという前提)に実行して、性能が上がらなくて困っているということです。新規データのテストデータに対しての性能は上がっているですが...

物体検出のROIなどによって切り取られる前、部分の特徴マップを用いて1.2.3.を実行するということでしょうか?
それとも、ImageNet等で事前学習されたResnet101等を用いたbackbone層の出力に対して行うでしょうか?

また、このサンプリングはテストデータにも適用するべきでしょうか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/09/20 10:38

#2
もし参考事例があればそれに倣うのが良いです。イメージ的には、backboneの前のイメージで考えています。
※全体像が見えていないので回答にROIのことは気にしていません。もしくり抜いて云々しているのであれば、くり抜いた画像で多様性(略)を気にしないといけなさそうです。

テストデータに関してはなるべく恣意的な操作は介在しない方が良いと思いますので、加工や取捨選択していない画像に対してした方が意図に沿ったテストができそうです。

なにぶんノーフリーランチ理論な世界なので、やってみてうまくいったらそれが正義です。good luck :)

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問