ABEJAでリサーチャーをしている白川です。
皆さん、アノテーションしていますか? 私はしています。アノテーション、自分でやるのは大変ですよね。
AIというとモデルの学習に注目されがちですが、もしかしたら、アノテーションはAI開発においてモデル開発以上に重要で注意の必要なプロセスかもしれません。今回はなぜアノテーションがそれほど重要なのか、良いアノテーションとはどのようなアノテーションなのかについて、機械学習的にアプローチしてみたいと思います。
アノテーションを機械学習で解析するの、楽しいですよ。
なお、本記事に関連して、2018年7月1日に開催されるccse2018というカンファレンスでもお話させていただく予定です。記事内では触れられなかった内容についてもお話させていただくかもしれないので、ご興味ある方はチェックしてみてください。
この記事を読むとわかること
- アノテーションはAIの開発・運用にとってクリティカル
- 精度の良い、大量のアノテーションデータを作ることが重要
- 機械学習によりアノテーションプロセスを解析・改善が可能
なぜ今アノテーションか
AI パイプライン的観点
アノテーションはデータに意味付けを与えるプロセスです。たとえば下記はアノテーションの例です。
- 画像中の人の顔部分に枠を付けて目鼻口の位置をポインティングする
- 口コミ文にたいしてポジ/ネガ/ニュートラルのラベル付けをする
- 工業製品の画像データに対して、傷のついた部分を塗りつぶしてマーキングする
- 画像に写っている人間の人数を数える
- 犬の画像に対して犬種情報を付与する
- 二枚の料理画像にたいして、どちらのほうが美味しそうに見えるかを記録する
...
このように、データに対して具体的に意味指示することにより、データから読み取るべき情報を後段で学習するモデルに明確に伝えることができるようになります。言ってみれば、モデルにとってアノテーションとは、データに生命を吹き込む作業となります。
次に、AIの開発・運用パイプラインに沿ってアノテーションを見てみましょう。
上図の通り、アノテーションはこのパイプラインの上流に位置するプロセスです。そのため、アノテーションに間違いが多ければ、モデルの学習や評価(多くの場合、評価データもアノテーションにより作られます)を含め、後段のプロセスに致命的な影響を与えてしまうかもしれません。同様の理由でデータの収集も非常に重要なプロセスとなりますが、こちらについては今回は割愛します。
小まとめ: なぜアノテーションが重要か
- データから読み取るべき内容を一意化するため
- AIのパイプラインの上流プロセスで、モデルの学習・評価などの後段のプロセスに対して致命的な影響を与えるため
少量のアノテーションでの学習は可能か
では、本当にアノテーションは必要なのでしょうか?
アノテーションは基本的にはつらい作業です。やってみると思ってもみなかった気づきがたくさん得られるので、ぜひ開発者自身で行っていただくことを推奨しますが、 案外集中力を要するので、私の場合、数時間集中してアノテーションをすると、その後なにも手につかなくなってしまいます。可能であればアノテーションを極力せずに十分な学習ができるとうれしいです。
機械学習の分野では、半教師あり学習という、(一般には)少量のアノテーション付きデータ(教師ありデータ)と多量のアノテーションなしデータ(教師なしデータ)から学習する枠組みがあります。
最近も盛んに研究されている分野なので、結構な量の論文が出ているのですが、その中でも実装が容易で高精度と言われているTemporal Ensemble [1] とMean Teacher [2]という手法を実装し、アノテーションをなるべくせずに精度が出せるものか試してみました。
本当はVAT[3]やWGAN-CT[4]のような手法も検証したのですが、VATに関しては学習時にForward/Backwardを2往復分行う必要があり、一般的な画像処理タスクを見据えた場合、学習時間とメモリ使用量的に辛かったこと、WGAN-CTに関しては学習が非常に不安定で汎用的に使えるようなものではなさそうだったこともあり、今回の比較検討ではスコープアウトしています(ただしこれらの手法は、少なくとも後述のCIFAR10での実験設定では、Temporal Ensemble, Mean Teacherよりも高精度と報告されており、ほぼ90%程度の精度が出ます)。
以下、技術的ですので、そういう手法があるのかと割り切って実験結果まで飛ばしていただいても構いません。
※ この実験は、弊社に在籍していた髙橋智洋くんと共同で行いました。
比較対象の手法
Temporal Emsemble
Temporal Ensemble [1] はDropoutやData Augmentationなどの確率要素により出力が確率的にゆらぐ識別モデル ( はデータとそのラベル、はDropoutやData Augmentationなどに由来する確率的なゆらぎを表す確率変数)において、番目のデータとそのときにサンプリングされたに対して定義される
という正則化項を対数尤度に加えて学習する手法です。ここで、は過去イテレーションにおける の移動平均です。 Temporal Ensembleでは、モデルがなるべく揺らがないようにパラメータに制限をかけることになります。
この正則化項には番目のラベルが不要なため、教師なしデータを使ってこの正則化項を評価することができます。
Mean Teacher
[2]より引用
Mean Teacher [2] はTemporal Ensembleと同様、確率的な揺らぎを制限する手法です。Temporal Ensembleにおいてはがその移動平均になるべく一致するように学習するのに対し、Mean Teacherでは、移動平均モデルの出力となるべく一致するように学習します。わかりやすいように にモデルのパラメータ を明記して と書くと、移動平均モデルは過去イテレーションでのモデルパラメータの移動平均を用いて、と表されます。これを用い、Mean Teacherは
という正則化を加えます(移動平均モデルの確率変数は一般にはオリジナルモデルのそれとは異なるので、区別するためとしました)。 Mean Teacherの正則化項もTemporal Ensembleと同様、教師なしデータで評価可能です。
Temporal Ensemble++
これは筆者らが考案した未発表手法です。Temporal Ensembleにおける正則化項
が何を表すのかを理論的に理解するため考えた末、WAIC (Widely Applicable Information Criteria) [5] に思いあたり、Temporal Ensembleの補正を試みたものです。 WAICについては渡辺先生がご自身のHPでもご紹介されていますので、ご覧ください([6])。 下記は先生のHPからの引用です。
また、書籍[7, 8]も出版されています(原著者の手によるこのような書物が和書でも手に入るのは非常に幸運と思います):
- 作者: 渡辺澄夫
- 出版社/メーカー: コロナ社
- 発売日: 2012/03/01
- メディア: 単行本
- 購入: 1人 クリック: 4回
- この商品を含むブログ (8件) を見る
WAIC(のデータセットのサンプルに関する期待値)は、漸近的に汎化誤差に一致することが知られており、
となります(細かいことを言えば、対数尤度は揺らぎに対する期待尤度の対数だったりしますが)。ここで汎関数分散はモデルの揺らぎを表し、揺らぎに対する対数尤度の分散となります(ただしデータセット単位で定義される概念なので、上記の通りデータ数で割っておく必要があります)。
ちょろっと計算すると、WAICは識別モデル にも通用するように変形でき、の分散を正則化項に加えると良いことがわかります。ただし、この分散はラベル も与えられた前提で計算されるものですので、教師なしデータには通用しません。
Temporal Ensemble++ はこれをリスペクトし、
を正則化項として加えたものです。はの移動平均です。本来的には はデータとして与えるべきところを、モデルによる推定で置き換えた形になります(モデルが収束したらほぼ一致するだろうとの期待を込めています)。
論理的にもしっくり来たのでうまくいきそうな気がしていました。
実験結果
CIFAR10で実験をしました(手元では他のデータでも実験をしています)。モデルは [3] で紹介されているConvLargeという、比較的標準的なCNNモデルを使っています。半教師あり学習の文脈ではしばしばこのモデルが使われ、CIFAR10でじっくり学習すると93~94%くらいの精度がでるという、結構高精度なモデルです(個人的には1層目を含む入力層に近いConvolution層の出力チャンネルが大きいのがミソな気がします)。
([3]より引用)
以下は、実験結果です。下記の3パターンを比較しています。
- 学習データ4,000件のみを使って教師あり学習
- 学習データの4,000件を教師ありデータ、残りの46,000件を教師なしデータとして半教師あり学習
- 学習データ全50,000件を教師ありデータとして教師あり学習
Temporal Ensemble, Mean Teacherはオリジナル実装等を可能な限り忠実に再現して再実装し、Temporal Ensemble++は独自実装してあります。
上図のとおり、考案手法(Temporal Ensemble++)が半教師あり学習としては最も精度が良くないという残念な結果になってしまいました。いずれの手法も4,000件のデータだけで教師あり学習をした場合よりは明確な精度向上が見られますが、全データを使って教師あり学習をした場合の精度には及びませんでした。
運用まで見据えて考えた場合、モデルの精度は高ければ高いほどよいです。その意味では、アノテーションが物理的に難しい状況では半教師あり学習は非常に有望なものの、そうでない状況では、難しいことを考える前に積極的にアノテーションをしてしまったほうが手っ取り早くて着実かもしれません。
なお、たとえばMean Teacherのオリジナル実装はshake shake regularizationを使っていたりデータセットに合わせたパラメータチューニングがかなりされていたり、手法の比較としてどうなのかなと思うところはあったりなかったり。。。それらのチューニングを入れないで実装すると、オリジナル実装ほどの精度は出にくいです。
このあたりについては、最近、半教師あり手法の評価について再考すべしという論文[9]がでて、同じことを感じていたのは自分たちだけではなかったのだと、ちょっと安心しました(しかも著者にI. Goodfellowもいるし)。精度競争の弊害なんでしょうか。
WAICを使った手法については、可能性を感じるので、今後もうすこし深掘りしてみたいと思います。
小まとめ: 少量のアノテーションでの学習は可能か
- 半教師あり学習により精度向上可能
- ただし、多量の教師ありデータでの学習には及ばないこともある
- アノテーションできる場合はおとなしくアノテーションしてしまったほうが良いかも
クリーンで大量のアノテーション
では、大量のアノテーションがあればよいのかというと、実はまだそれだけでは不足しています。
話はかわりますが、弊社では顔認識アルゴリズムの開発もしています。顔認識とは、画像や動画に写った人の顔から、人物特定をするタスクです。iPhone Xにも入っていますね。
(顔認識を応用したリピーター検出)
顔認識も非常に盛んに研究されており、最新の手法であれば、標準的なデータセット(LFWなど)でMNISTレベルの精度(論文レベルなら99.8+%)が出たりします。
この精度向上は、もちろん技術の改善によるところもありますが、クリーンな大規模データセットが公開されたことによるところが大きいです。
下記はdavidsandberg/facenetで公開されている学習済みモデルですが、最新のモデルは99.65%という精度が得られています。
実はちょっと前まではこのサイトの公開されているモデルはMS-Celeb-1Mという大規模データセットで学習されたモデルで、精度は99%強くらいだったのですが、最近公開されたVGGFace2というデータセットで学習することで、大きな精度改善がなされました。モデルはいずれもInception ResNet v1ですので、わりと標準的なモデルです。
いまはもう記述が消えてしまったようですが、ちょっと前までは
The best performing model has been trained on a subset of the MS-Celeb-1M dataset. This dataset is significantly larger but also contains significantly more label noise, and therefore it is crucial to apply dataset filtering on this dataset
という記述があって、MS-Celeb-1Mはノイジーなので、精度向上にはクリーニングが必要という旨が明記されていました。
現在はVGGFace2でふつうに学習したモデルが一番精度が良いようですが、実はVGGFace2は、大規模な上に綿密にクリーニングがなされたデータセットです。 このデータセットについて説明した論文[10]には、VGGFace2を作るにあたって、
- クリーニング前のデータで顔認識モデルを学習し、このモデルで異常画像をフィルタリングして除去
- ほぼ同一な顔画像を除去
- 人の顔でないデータ、顔が写っていなかったり複数の顔が写っているデータを除去(人力+自動)
というクリーニングをしていると明記されています。結果的にできあがったデータセットは、約9,000人分の330万枚の画像からなるかなりの大規模なデータですので、相当な労力をつかってクリーニングされたことが窺えます。
このように、顔認識の文脈では、大量のクリーンな教師ありデータセットが精度改善にとってはクリティカルであると認識されていましたが、十分量のクリーンなデータセットを用意するのが重要というのは、顔認識に限った話ではないと思われます。
小まとめ: クリーンで大量のアノテーション
- 顔認識で精度改善が起きた理由は、大規模でクリーンなデータセットが公開されたこと
アノテーションノイズをもっとよく理解する
アノテーションノイズの精度にたいする影響
上記のとおり、確実な精度改善のためには、大量の正確なアノテーションデータを用意することが重要そうであることがわかりました。では、アノテーションノイズ(アノテーションの誤り)はどれくらい学習されたモデルの精度に影響するのでしょうか?
気になったので、実験してみました。データセットとしてはMNIST, CIFAR10/100を用いました。モデルは半教師あり学習の検証と同様、ConvLargeです(データセットごとにラベルの種類が違ったり画像サイズが異なったりするので最小限の修正はしました)。
アノテーションノイズの影響を検証するため、学習データの0, 10, ..., 100%のラベルをもともと付けられているラベルとは異なる別のラベルにランダムにつけ直したデータセットでモデルを学習し、 オリジナルのラベルをつけたままのテストデータで評価しました。
学習のエポックは時間の都合からいずれのデータセットも100としています(CIFAR10/100にはすこしエポックが少ないかもしれません)。
アノテーションノイズの影響
下記は実験結果の凡例です。
横軸は学習のエポック、縦軸は学習されたモデルの精度です。アノテーションのエラー率(0, 10, ..., 100%)ごとに精度変化をプロットしています。以下、MNIST, CIFAR10/100の結果です。
個人的にMNISTはDeep Learning界の単体テストだと思っているのですが、MNISTだとなんと80%のラベルが誤っていてもそれなりに学習されてしまいますね。それくらい簡単なデータセットということですね(学習にとって簡単というのはどういうことなのか気になります)。
CIFAR10/100については、アノテーションノイズが小さいほど精度が高いということが見て取れると思います。とくに、ラベルの種類が増えた(=難しい)cifar100においてはその差がより明確なのは面白いですね。
また、どうやらノイズが少ないほうが過学習しにくそうです。
アノテーションノイズとデータセットサイズの影響
次は、アノテーションノイズ(0, 10, ..., 100%)の他に、学習に使うデータセットのサイズ(10, 20, ..., 100%)も変えた結果を見てみましょう。先と同じようにプロットすると
という感じで何がなんだかわからなくなるので、下記の用にヒートマップで表示することにします。
エポックごとの進捗はアニメーションとして表示します。また、参考までに全100エポック中の最良エポックでの精度との相対精度(精度/最良精度)でも描画してみます。ちなみにヒートマップのマス目1個が1つのセッティングでの学習に相当し、cifarはだいたい1時間くらいかかっています。。。
下記はMNIST, CIFAR10/100の結果です。
MNIST
精度:
相対精度:
CIFAR10
精度:
相対精度:
CIFAR100
精度:
相対精度:
アノテーションノイズの少ない多量のデータで学習したほうが精度が上がりやすいことがわかると思います(ただし、同一エポックでなめるデータ数が異なるので、安易な結論は出しにくいですが)。
おまけ: アノテーションノイズ100%で学習して、予測時に最も尤度の低いラベルを出力
アノテーションノイズのみを動かした実験で、全ラベルを入れ替えたパターンも学習していました(アノテーションノイズ100%)。このモデルは真のモデルを避けたラベルを予測すると思われるため、予測時には逆に最も確率の低いラベルを出力をしてみた場合、どれくらい精度が出るのか気になったのでやってみました。
下記はMNISTの場合の結果です。96%も出ました。。。これはこれで深掘りするとなにかわかりそうな気もしますね。
小まとめ: アノテーションノイズの精度にたいする影響
- アノテーションノイズの少ないほうが高精度
- データセットサイズが大きいほうが高精度
アノテーションノイズは検知できるのか
アノテーションノイズは少ないほうがよい、ということがわかりました。 そのため、アノテーションノイズが疑われる場合は、データ取得、アノテーションプロセスを見直すべきかもしれません。
とはいうものの、そもそも、アノテーションノイズは検知できるのでしょうか?
EM algorithm basedな方法
アノテーションエラーはアノテーターが誤ってアノテーションすることにより発生します。そのため、アノテーションエラーを理解するためには、 各データについてのアノテーションの誤りのほか、各アノテーターの間違え方の傾向を知ることも重要です。
比較的簡単な手法として、EM algorithmを用いた古典的な手法があります[11]。本手法については、下記の書籍でも解説されています[12]。
ヒューマンコンピュテーションとクラウドソーシング (機械学習プロフェッショナルシリーズ)
- 作者: 鹿島久嗣,小山聡,馬場雪乃
- 出版社/メーカー: 講談社
- 発売日: 2016/04/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
この手法では、各アノテーターによるアノテーションの傾向をConfusion Matrixとして表現して、
- 各データにたいする尤もらしいラベル
- 各アノテーターのConfusion Matrix
をデータから推定します。たとえば、顔画像からの性別推定であれば、Confusion Matrixは下記のような感じになります。この場合、男性のはずの画像の0.3%にたいして誤って女性とラベル付けしてしまっていることになります。
EM algorithmで推定する場合には、下記のようにします。前提として、アノテーターは複数人おり、いくつかのデータについては、複数人で重複的にアノテーションしてあるものとします。
- 各アノテーターのConfusion Matrixを単位行列で初期化
- E-step: Confusion Matrixを固定し、各データのラベルの尤度を推定
- M-step: 各データにたいするラベルの推定尤度を固定し、尤度が最大になるようにConfusion Matrixを更新
詳細は論文[11]か書籍[12]を参照していただきたいですが、基本的には重複データに対して各アノテーターのアノテーションを集計するだけで計算可能です。
以下は、実際の解析例です。弊社実験環境で撮影された人物の顔写真にたいしてアノテーションを行い、EM algorithmによりアノテーターのConfusion Matrixを推定したもの(の一部)です。撮影には撮影条件を変えた複数台のカメラを用いています。
いずれも対角成分が1でそれ以外の成分が0の単位行列になっているのが望ましいですが、全然そうなっていないのが確認できるかと思います。アノテーター自身の性別・年齢などによってアノテーションにバイアスが発生したり、カメラの設置状況によってアノテーション傾向が変化したりというようなことが疑われます。
Model basedな方法
EM algorithmによる方法は実装も簡単で非常に使いやすいのですが、重複アノテーションが必要という欠点があります。どれくらい重複的にアノテーションさせればよいかを事前に知るのは難しいですし、重複アノテーションをすると時間もお金もかかります。
論文[13]では、実は各データについて1回だけアノテーションされている状況でも、EM algorithm を使った方法と同様の解析が可能なことを示しています。具体的には、下記のようにモデルを立てます。
真のラベルを潜在変数として、推定する至極全うなモデルです。これを最適化することで、結果的に
- 各データに対する真のラベルの推定モデル
- アノテーターのConfusion Matrix
が得られることになります(細かいことを言うと、ラベルの付替えの任意性みたいなものを排除するために、ちょっとした正則化はいれます)。
この手法の良いところは、重複アノテーションが不要なだけでなく、基本的に任意のモデルに適用できることです。さらに、下記の通り、非常に興味深い精度評価までされています。
([13]より引用)
大雑把に気持ちだけ伝えると、この定理はアノテーターの精度がある程度高ければ、同一データに重複アノテーションをするよりもデータを増やしてユニークにアノテーションをしていくほうが精度が高くなることを述べています。
全体のまとめ
- クリーンでできるだけ大量のアノテーションが重要
- アノテーションエラーの解析は可能で重要
おわり
少々長くなってしまいましたが、アノテーションを機械学習的に解析することの魅力と有用性が伝わったなら幸いです。
以下、ちょびっと追加の宣伝です。今回の記事の参考文献は最後にあります。
まえがき部分でも言及しましたが、本記事に関連して、2018年7月1日に開催されるccse2018というカンファレンスでもお話させていただきます。ご興味ある方はチェックしてみてください。
また、実は弊社ではアノテーションをサービスとして提供しています。
経験を積んだ専門のアノテーターも多数(たぶんちょっと驚くくらいたくさん)保有し、ダブルチェックによるアノテーションの精度保証やアノテーションマニュアルの自動生成などなど、よりよい機械学習を促進するような工夫も取り入れ、日々改善しています。
私もリサーチャーとして、アノテーションで世界を変えられたらと思い、面白い役に立つ工夫を随時追加していけたらと考えています!
最後に、弊社では、アノテーションサービスに(限らず)興味のあるイケててヤバイ
- リサーチャー
- エンジニア
- ビジネスデベロッパー
- デザイナー
- コンサルタント
- カスタマーサクセス
...
やインターン生を大絶賛募集しています。
一緒に夢と社会的意義のあることをしたい方は気軽にポチッとして頂けると幸いです。 https://www.wantedly.com/projects/220333
ABEJAが発信する最新テクノロジーに興味がある方は、是非ともブログの読者に!
ABEJAという会社に興味が湧いてきた方はWantedlyで会社、事業、人の情報を発信しているので、是非ともフォローを!! www.wantedly.com
ABEJAの中の人と話ししたい!オフィス見学してみたいも随時受け付けておりますので、気軽にポチッとどうぞ↓↓
参考文献等
[1] S. Laine+, “Temporal Ensembling for Semi-Supervised Learning”, ICLR 2017
[2] A. Tarvainen+, “Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results”, NIPS 2017
[3] T. Miyato+, “Virtual Adversarial Training: a Regularization Method for Supervised and Semi-supervised Learning”, 2017
[4] X. Wei+, "IMPROVING THE IMPROVED TRAINING OF WASSERSTEIN GANS: A CONSISTENCY TERM AND ITS DUAL EFFECT", ICLR 2018
[5] S. Watanabe, "Asymptotic Equivalence of Bayes Cross Validation and Widely Applicable Information Criterion in Singular Learning Theory", JMLR 2010
[6] http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/waic2011.html
[7] 渡辺 澄夫 「ベイズ統計の理論と方法」2012年 コロナ社
[8] S. Watanabe, "Singular Learning Theory", 2009, Cambridge University Press.
[9] A. Oliver+, "Realistic Evaluation of Deep Semi-Supervised Learning Algorithms", ICLR 2018 Workshop
[10] Q. Cao+, "VGGFace2: A dataset for recognising faces across pose and age", FG 2018
[11] A. P. Dawid+, "Maximum likelihood estimation of observer error-rates using the em algorithm", Applied statistics 1979
[12] 鹿島 久嗣 ほか 「ヒューマンコンピュテーションとクラウドソーシング(機械学習プロフェッショナルシリーズ)」 2016年 講談社
[13] A. Khetan+, "Learning From Noisy Singly-labeled Data", ICLR 2018