0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学習データ増加における過去の深層学習モデルとの評価指標の比較(notデータ拡張)

Posted at

概要

 学習データを増やした際に過去の深層学習モデルとどのようにして比較するか。もしくは比較できるようにデータセットをどのように増やすかについてついて独自の考えを記載する。なお本稿における学習データを増やすとはデータ拡張のことではない。

結論

 データ間でマクロ平均を取って深層学習モデルを比較する。
 つまり元のデータのテストデータと新しいデータのテストデータそれぞれでAIモデルに推論をさせて、その推論結果の平均を取って比較するのである。
 

動機

 学習データを増やした際の過去の深層学習モデルとの評価指標の比較方法のドキュメントが全く無いので、ココに記載しようと思う。
 何故か調べてヒットするのがデータ拡張(Data Augmentation)ばかりヒットする。

シナリオ

 Aさんは単一物体検出AIを作成することになりました。ある日に画像データを収集してアノテーションを行い、ホールドアウト法を用いて以下のようにデータを学習データとテストデータに分割してデータセットを作成しました。

image.png

 このデータセットを用いて深層学習モデルを学習してテストデータで評価を行いました。この評価値に対して上司から評価値が低いからなんとかならないかと指摘を受けました。
 この時用いてたAIモデルは最新のモデルであったため、学習データを増やすしかありません。AIには学習データを増やせば増やすほど性能がよくなるというスケーリング則というものがあるからです。

 この時正しいデータセットの増やし方および、正しい過去の深層学習モデルの評価指標の比較方法をどうすればよいでしょうか?

データセットの増やし方

 以下のようにデータを増やした時にどのように配分すればよいか。
 なお、TrainAで学習された過去の深層学習モデルの名称はモデルAとする。

image.png

A)新しいデータ全てを学習データにする

image.png

 新しいデータを全て学習データとしてモデルBを学習させて、テストデータAを用いてモデルAとモデルBを比較させる。
 この方法は(×)
 同一のテストデータを用いているため一見よく見えるが、これはテストデータが多様である場合はよいが現実ではそうではないから良くない。(自分の考えではそうだが根拠の引用がない)
 テストデータが多様でなく、新しく追加した学習データが多様であった場合は確実に性能が下がるという直感的な結果が思い浮かぶ。

B)合成してホールドアウト法で作成

image.png

 新しいデータをデータセット全てに合成させて新しくホールドアウト法を用いてデータセットを作成する。
 この方法は(×)
 この方法は、テストデータZに学習データAが混ざっている可能性がモデルAの評価の際に正しい評価ができない。

C)それぞれのデータセットでホールドアウト法を用いて分割してから合成させる。

image.png

 この方法は新しいデータをホールドアウト法で分割して合成させる。学習データA+学習データBで深層学習モデル(モデルB)を学習させる。そしてテストデータA+テストデータBを用いてモデルAとモデルBで評価して比較を行う。
 どうやらコレだと、テストデータの多様性が増え、またテストデータが学習データに混ざることもなくなるので良さそうである。
 この方法は(○)

本当にコレでいいか?

 実際に(C)の方法でデータを増やしてモデルの評価を比較していたが、再びデータを追加したが評価指標が下がってしまう現象が発生した。
 理由として挙げられるのは追加データが少ないためテストデータに不均衡性が発生していることだ。
 コレにより、追加データのテストデータの評価指標が低くても元データのテストデータの評価指標が高い方が全体としてはよいという結果が発生してしまう。
 このような現象は一回や二回の追加では発生しないかもしれないが、元データが蓄積していくほど巨大になっていくため、いつかは発生する現象である。

解決策

 解決策として考えられるのはマクロ平均を用いて計算をすることである。
 マクロ平均とは、多クラス分類における不均衡データを用いたモデルを評価する際に用いられることが多い。
 この計算は、通常の平均が全体数で割るのに対して、各クラスの評価指標を各クラスの数で割った後にそれぞれのクラスの評価指標を足し合わせてクラスの数で割る計算方法である。

 今回はマクロ平均をクラスではなくデータに対して行う。
 これにより、
モデルAの評価指標=(テストデータAの評価指標+テストデータBの評価指標)/2
モデルBの評価指標=(テストデータAの評価指標+テストデータBの評価指標)/2
 となりデータの不均衡に関係なく深層学習モデルの学習データ増加による過去の深層学習モデルとの評価指標の比較ができるようになる。

問題点

  • 今回は単一物体検出の例だったからうまくいったが多クラス物体検出だと、どうすればよいだろうか?それぞれのクラスごとにやるべきか?
  • モデル学習時のバリデーションのデータセットに対してマクロ平均を計算するのはOSSが対応していないので、導入できない
  • データ増加によってモデルの性能が向上したことは証明できるが、最初に上司に提示した評価指標結果より下がるため(汎用性は向上するが特定のデータに関しては下がることが予想されるので)、「お前下がってんじゃねえか」と言われる点
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?