この記事はIPFactory Advent Calendar 2021の8日目の記事です。
こんにちは、futabatoです。 今まで触れてこなかった半教師あり学習について学ぶ機会があったので、勉強したことをBlogに残しておきます。
Semi-Supervised Learning Overview
Motivation
アノテーションコストの低減(専門家しかアノテーション作業ができない、アノテーションしなければいけないデータの量が多い、セグメンテーションのアノテーションは大変)、アノテーション作業の属人化の解消等の理由から、データセットの一部に対してアノテーションをしてアノテーションされていないデータも利用して精度向上を図りたいというモチベーションのもと半教師あり学習(Semi-Supervised Learning)という学習手法が存在しています。
半教師あり学習のアルゴリズムは通常の教師あり学習と教師なし学習を組み合わせたような形で、アノテーションされていないデータをいかにして学習に組み込むかがポイントになっていると考えています。
半教師あり学習にはConsistency RegularizationとEntropy Minimizationという2つの大きな考え方があります。半教師あり学習として提案されている手法は以下の2つのうちのどちらか、またはその両方として理解することができます。
Consistency Regularization
Consistency Regularizationは「アノテーションされていない同じデータに対して、異なる摂動を加えて入力したモデルの予測は一貫したものになるべき」という考え方のもと、一貫性があるようにするペナルティをかける正則化手法です。
正則化のパターンとしては、BCEやMSE(摂動を加えた入力に対するモデルの出力と、摂動が加えられていない入力に対するモデルの出力との間)、KLダイバージェンス(クラス分布間)等があります。
摂動の加え方には、画像の反転、回転、切り取り、Adversarial Attacks等様々な手法があるようです。
Entropy Minimization
以下の記事の説明がわかりやすいので引用させていただきます。
Entropy Minimizationは「決定境界は特徴空間上でデータが密集しているところを通るべきでない」という考えのもと、 モデルから出力されるConfidence Scoreを高くするように導く手法です。
N個の値をとる確率変数のエントロピーが最大になるのは、N個の値(Confidence Score)がすべて1/Nで等しい場合なので、そのようにモデルが予測を出すのは曖昧に判断していると考えることができます。エントロピーを最小にすれば、モデルの予測ははっきりしていると考えることができそうです。
Pseudo-Labeling
Entropy Minimiazationの有名な手法としてはPseudo-Labelingが挙げられます。 Pseudo-Labelingでは、最もConfidence Scoreが高く出力されたクラスを1、他を0とする疑似的なone-hotベクトルに変換してラベルを作成します。
Pseudo-Labelingを使ったSelf-Training(後述)の学習の流れとしては以下のようなイメージです。
- 手持ちのデータを使って学習されたモデルで未知のデータに対して予測をして、高いConfidence Scoreを出したものにラベルを付与する。
- ラベルが作成されたデータはアノテーションがされたデータとして追加され、通常の教師あり学習と同じように学習をして1に戻る。
Pseudo-Labelingについて調べていると、Kaggleでよく使われる手法の1つだということがわかりました。 私はまだ機械学習コンペのまともな参加経験がないのですが、Pseudo-Labelingは第3回全国医療AIコンテストで出てきたのが記憶にありました。
Methods of Semi-Supervised Learning
ここまでで、半教師あり学習アルゴリズムの基本となる考え方を見てきました。
半教師あり学習のアルゴリズムもたくさんありますが、大きく分類器による手法とクラスタリングのようなデータの分布に基づく手法の2つに分けることができます。
Classifier-based methods
(画像)分類器を使った半教師あり学習はブートストラップ法と称されます。
Self-Training
Self-Training(自己学習)は、Pseudo-Labelingで説明したとおりアノテーションされていないデータを分類器の予測に通して高いConfidence Scoreが出力されたデータをアノテーションされたデータとして教師データに加え、再度学習を繰り返します。
直感的には、早い段階で教師データとして加えられたデータが誤ったクラスのものであれば精度の良い分類器を作るのは難しいように感じます。
Co-Training
Co-Training(共学習)は、各データに対して2つの異なる視点(素性)が存在する場合の問題設定で、各視点の2つの分類器で別々に学習されます。Self-Trainingと同様に、高いConfidence Scoreが出力されたアノテーションされていないデータをもう片方の分類器に渡すようにして2つの分類器で情報を相互に補完することで学習が進められます。
例えば、Webページの分類器を作るときの2つの視点はそのページに出現する文字とハイパーリンクに出現する文字に分けることができます。
https://dl.acm.org/doi/10.1145/279943.279962
Data-based methods
データに基づく手法は、分類器で分類は行わずに、データの分布や類似度によって分類していく手法です。
Graph-based Semi-Supervised Learning (Classification)
グラフべースの半教師あり学習は自然言語処理の方で成功を収めているようです。 ひとつひとつのデータをノード、データの類似度をエッジの重みとしたグラフを構築して、そのグラフ上でラベルを伝播(Label Propagation)させていきます。
エッジの重みを適切に再定義することと、どのノード間にエッジを繋げるかというさまざまな研究がされているようです。
https://www.jstage.jst.go.jp/article/tjsai/28/4/28_400/_pdf
Active Learning
最後に、能動学習(Active Learning)について触れておきます。 これまでに説明してきた手法はすべてコンピュータの中で完結していましたが、能動学習では人間が登場します。
能動学習では、人間(の専門家)が学習アルゴリズムとやり取りをしてアルゴリズムがデータのラベルの情報を要求してきた際に人間がラベルを与えます。 能動学習の有名な手法としては不確実サンプリング(Uncertainty Sampling)が挙げられます。
モデルの出力のConfidence Scoreが低い(= 決定境界の決定に寄与しうる)データを人間にラベル情報を付与してもらうことで、効率よく分類器を学習できる手法です。
References
- 半教師あり学習_Semi-Supervised Learning (Vol.20)
- 半教師あり学習の概要と研究事例
- 画像分類タスクにおける半教師有り学習 第1回
- Zhang, Han, et al. "Consistency regularization for generative adversarial networks." (2019).
- Blum, Avrim, and Tom Mitchell. "Combining labeled and unlabeled data with co-training." (1998).
- 耕平, 小嵜 et al. “相互 k -近傍グラフを用いた半教師あり分類.” (2013).
About IPFactory
最後までご覧いただきありがとうございます。 今年もIPFactoryはAdvent Calendarを実施しています。
IPFactoryについては以下のページをご覧ください。
昨日12月7日はn01e0による「3の倍数でアホになるコンパイラ」でした。 feneshi.co
明日12月9日はTamaくんによる「DependabotとMergifyで依存関係のアップデートからブランチへのマージまで自動化する」です。お楽しみに。