1.SSD:半教師あり蒸留を使ってGoogle検索を改善(1/2)まとめ
・以前の半教師あり学習はラベル有データが豊富な場合は完全教師あり学習と競合できなかった
・Noisy Studentは高データ体制でうまく機能する半教師あり学習でモデルの堅牢性も向上した
・Noisy Studentの簡略版であるSSDをGoogle検索に適用しパフォーマンスが大幅に向上した
2.Noisy Studentとは?
以下、ai.googleblog.comより「From Vision to Language: Semi-supervised Learning in Action…at Scale」の意訳です。元記事は2021年7月14日、Thang LuongさんとJingcao Huさんによる投稿です。
全く話題になってませんが、いわゆる検索エンジン最適化施策(SEO)に関する重大なヒントが本稿の後半にシレっと書いてあります。「SSDは2020年に展開されたGoogle 検索に関する上位施策の中で最高のパフォーマンス向上の1つを達成しました」との事です。
2020年は5月と12月にコアアップデートとしてGoogle検索のアルゴリズムが改善されてます。そして2021年は6月と7月にコアアップデートが行われて、7月のコアアップデートが終わったのって2021年7月13日なんですね。たまたまの可能性もありますが、本稿の投稿日は2021年7月14日なので、コアアップデートが無事完了したのを見届けてから発表した感があり、2021年のコアアップデートにも関係しているのだろうなと感じます。
蒸留をイメージしたアイキャッチ画像のクレジットはPhoto by Joey Huang on Unsplash
教師あり学習(Supervised learning)は、既知の結果(つまり、ラベル付けされたデータ)を持つデータポイントを使用して予測モデルをトレーニングする機械学習タスクであり、その単純さから、一般的に業界で推奨されるアプローチです。ただし、教師あり学習には正確にラベル付けされたデータが必要であり、その収集には多くの場合、非常にコストがかかる労働集約的作業になりです。さらに、アーキテクチャ、アルゴリズム、ハードウェア(GPU/TPU)が改善されるとモデルの効率が向上するため、大規模なモデルをトレーニングして品質を向上させることが容易になりますが、継続的な進歩のためにはさらに多くのラベル付きデータが必要になります。
このようなデータ準備の課題を軽減するために、半教師あり学習(semi-supervised learning)、つまり少量のラベル付きデータと大量のラベルなしデータを組み合わせる機械学習パラダイムが、UDA、SimCLRなどの手法で最近成功を収めています。
私達の以前の研究では、半教師あり学習アプローチであるNoisy StudentがImageNetで最先端のパフォーマンスを実現できることを初めて示しました。この研究では画像分類のための大規模な学術ベンチマークを、より多くのラベル無しデータを利用して実行しました。
これらの結果に触発されて、本日、Noisy Studentの簡略版である「半教師あり蒸留(SSD:Semi-Supervised Distillation)」を紹介し、この手法を言語領域に適用する事に成功したことを示します。Google検索で言語理解にSSDを適用することで、パフォーマンスが大幅に向上しました。
これは、このような大規模に適用された半教師あり学習の最初の成功例であり、本番規模のシステムに対するこのようなアプローチの潜在的な影響を示しています。
Noisy Studentのトレーニング
2019年11月にNoisy Studentが発表される前にも、半教師あり学習に関する多くの研究がありました。ただし、広く影響を与える研究であったにもかかわらず、このようなシステムは通常、CIFAR、SVHN、ImageNetの10%など、少ないデータのみが利用できる低データ体制の場合にのみうまく機能しました。
ラベル付けされたデータが豊富な場合、半教師あり学習モデルは完全教師あり学習システムと競合できず、検索エンジンや自動運転車などの製品展開される重要なアプリケーションに半教師ありアプローチを適用できませんでした。
この欠点が、多くのデータが利用できる高データ体制でうまく機能する半教師あり学習アプローチであるNoisy Student Trainingの開発の動機となり、当時、1.3億の追加のラベルなし画像を使用してImageNetで最先端の精度を達成しました。
Noisy Studentのトレーニングには以下4つの簡単なステップで行います。
(1)ラベル付けされたデータを使って分類器(教師)をトレーニングします。
(2)次に、教師は、はるかに大きなラベルなしデータセットに疑似ラベル(pseudo-labels)を推測して付与ます。
(3)次に、ラベル付きデータと疑似ラベル付きデータを組み合わせて、より大きな分類器(noisy student)をトレーニングします。トレーニング中にはデータにノイズを追加します。
(4)(オプション)ステップ2に戻ります。新たに学習したモデルを教師としてNoisy Studentの訓練に使用できます。
モデルは、パフォーマンスを向上させるために自身を再トレーニングする疑似ラベルを生成します。そのため、Noisy Studentを自己トレーニングの一形態と見なすことができます。
Noisy Student Trainingの驚くべき特性は、トレーニングされたモデルが、ImageNet-A、ImageNet-C、ImageNet-Pなど、堅牢性をテストするためのデータセットで非常にうまく機能することです。トレーニング中に追加されたノイズは、学習に役立つだけでなく、モデルをより堅牢にするという仮説を立てました。
基本モデル(Baseline)では正しく分類されないが、Noisy Studentモデルでは正しく分類されている画像の例
左:ImageNet-Aから選択した変更されていない画像
中央と右:ImageNet-Cから選択された、ノイズが追加された画像
ImageNet-Pを含むその他の事例については、Noisy Studentの論文「Self-training with Noisy Student improves ImageNet classification」を参照してください。
3.SSD:半教師あり蒸留を使ってGoogle検索を改善(1/2)関連リンク
1)ai.googleblog.com
From Vision to Language: Semi-supervised Learning in Action…at Scale
2)arxiv.org
Self-training with Noisy Student improves ImageNet classification
4つの簡単なステップによるnoisy studenトレーニングの概要
モデルノイズ(DropoutやStochastic Depth)と入力ノイズ(RandAugmentなどのデータ拡張)の2種類のノイズを使用します。