アルゴリズム弱太郎

Twitter @01futabato10

半教師あり学習について学ぶ

この記事は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等様々な手法があるようです。

arxiv.org

Entropy Minimization

以下の記事の説明がわかりやすいので引用させていただきます。

www.skillupai.com

Entropy Minimizationは「決定境界は特徴空間上でデータが密集しているところを通るべきでない」という考えのもと、 モデルから出力されるConfidence Scoreを高くするように導く手法です。

N個の値をとる確率変数のエントロピーが最大になるのは、N個の値(Confidence Score)がすべて1/Nで等しい場合なので、そのようにモデルが予測を出すのは曖昧に判断していると考えることができます。エントロピーを最小にすれば、モデルの予測ははっきりしていると考えることができそうです。

Entropy Minimizationのイメージ
Entropy Minimization

papers.nips.cc

Pseudo-Labeling

Entropy Minimiazationの有名な手法としてはPseudo-Labelingが挙げられます。 Pseudo-Labelingでは、最もConfidence Scoreが高く出力されたクラスを1、他を0とする疑似的なone-hotベクトルに変換してラベルを作成します。

Pseudo-Labelのイメージ
Pseudo-Label

Pseudo-Labelingを使ったSelf-Training(後述)の学習の流れとしては以下のようなイメージです。

  1. 手持ちのデータを使って学習されたモデルで未知のデータに対して予測をして、高いConfidence Scoreを出したものにラベルを付与する。
  2. ラベルが作成されたデータはアノテーションがされたデータとして追加され、通常の教師あり学習と同じように学習をして1に戻る。

Pseudo-Labelingについて調べていると、Kaggleでよく使われる手法の1つだということがわかりました。 私はまだ機械学習コンペのまともな参加経験がないのですが、Pseudo-Labelingは第3回全国医療AIコンテストで出てきたのが記憶にありました。

zenn.dev

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が低い(= 決定境界の決定に寄与しうる)データを人間にラベル情報を付与してもらうことで、効率よく分類器を学習できる手法です。

www.sciencedirect.com

References

About IPFactory

最後までご覧いただきありがとうございます。 今年もIPFactoryはAdvent Calendarを実施しています。

qiita.com

IPFactoryについては以下のページをご覧ください。

ipfactory.org

昨日12月7日はn01e0による「3の倍数でアホになるコンパイラ」でした。 feneshi.co

明日12月9日はTamaくんによる「DependabotとMergifyで依存関係のアップデートからブランチへのマージまで自動化する」です。お楽しみに。

zenn.dev