画像分類タスクにおける半教師有り学習 第1回

こんにちは、モルフォリサーチャーの芳賀です。

一般に機械学習で精度の高いモデルを作るためにはドメインに応じたたくさんの学習データが必要となります。 しかし実際の業務においては、入力データは容易に集められてもアノテーションコストが問題になる場合があります。 「手元にたくさんデータはあるけどアノテーションが大変。」そういうときにアノテーションラベルが付いていなくても学習データとして使う手法の一つに半教師有り学習(Semi-Supervised Learning)というものがあります。

今回から3回に渡って、画像分類タスクにおいて半教師有り学習がどのように発展を遂げてきたかについて紹介します。

1回目のテーマは、半教師有り学習の概要についてです。 その中でも、ラベル有りデータとラベル無しデータを一度に学習に組み込むone-stage学習に焦点を当てて、基本コンセプトである「consistency regularization」「entropy minimization」について具体的な手法を交えながら解説したいと思います。

半教師有り学習

半教師有り学習とは、機械学習の分類の一つで、名前の通り教師有り学習と教師無し学習の間となる設定における学習手法になります。 具体的には与えられたデータセットの中で答えとなる教師ラべルが付与されてる一部のラベル有りデータと、通常多数のラベル無しデータを用いてうまく学習を進めていく仕組みのことを指します。

各学習手法の違い。半教師有り学習では一部のデータのみラベルにアクセスできる状況で学習を行う。

このような設定の需要として例として以下の3点が上げられます。

  • アノテーションコストの低減
  • アノテーションの属人性の排除
  • ビッグデータの活用

やはり効果として大きいのは1つめのアノテーションコストの低減なのではないでしょうか。学習の入力となるデータを集めることは比較的コストが低いですが、人の手で数千数万ものデータに分類クラスやBoundingBoxなどラベルを付与する作業は非常にコストが高いのでなるだけ避けたい作業ではあります。 かといってラベルのついてないデータをみすみす使わないのはもったいないので、ラベルのついてないデータもなんとか学習に組み込めないかというモチベーションで半教師有り学習の研究が進んでいます。

では、手元に十分なラベル有りデータがある場合は半教師有り学習について考える意義は無いのでしょうか? 答えはNoで、実は半教師有り学習の知見を入れた教師有り学習を行うと精度が上がるという報告もあるため、知識として知っていて損はないと思います。

半教師有り学習の分類

以降では、画像認識タスクに焦点を当てて解説していきます。 文献[1]では半教師有り学習を学習戦略の観点から主に2種類に分類しています。

  • one-stage
  • multi-stage

one-stage

one-stageは1回の学習プロセスで分類器を作ります。 具体的には、ラベル有りデータとラベル無しデータをまとめて扱ってそれぞれうまくロスを設計することで一度に学習を進めるアプローチです。

multi-stage

multi-stageは少なくとも2段階の学習プロセスを経て最終的な分類器を作ります。 1段階目ではラベル情報を用いずに自己教師有り学習(self-supervised)によるデータの潜在的な表現を学習させます。 この段階で行う学習タスクをpretext taskと呼んだりもします*1

そして最終段階では前段階でのモデルと教師ラベルを用いてfine tuningを行い最終的な分類器を学習させます。


本記事は手法としてシンプルなone-stageの学習戦略を採用した手法に絞って解説したいと思います。 しかしone-stageとmulti-stageを明確に分ける意味はなく、単なる一つの分類として捉えていただければと思います。

半教師有り学習の基本コンセプト

ラベル無しデータをどのように学習に組み込むかが気になるところだと思います。 基本的にはラベル無しデータのラベルをなんらかの手法で推定してロスに組み込んだり、ラベル無しデータの出力に正則化による制約をかけたりします。 半教師有り学習では、以下に挙げる2種類のコンセプトを用いてラベル無しデータを学習に組み込んでいます。

  • entropy minimization
  • consistency regularization

上記の概念をベースとなる具体的な手法と交えて解説したいと思います。

準備

まずは準備としておなじみの損失関数として使われる計算式を定義しておきます。

cross entropy

\displaystyle
CE(y, \hat{y}) = -y \log \hat{y} - (1 - y) \log (1 - \hat{y})

状況に応じて変数の解釈は異なりますが、基本的にはyが教師ラベルとなるone-hotベクトルで\hat{y}がモデルの出力ベクトルを想定しています。

mean squared error (MSE)

\displaystyle
MSE(z, \tilde{z}) = || z - \tilde{z} ||_2^{2}

こちらも状況に応じて変数の解釈は異なりますが、z, \tilde{z}としてモデルの出力ベクトルを想定しています。

entropy minimization

一つ目のコンセプトとしてentropy minimizationがあります。 これは、モデルから出力される予測の信頼度を高くするように導く考え方のことです。 信頼度の高い予測というのは、分類タスクの場合出力ベクトル*2のエントロピーが小さい状態と捉えることができます。

確率分布とエントロピー

ある確率変数の取りうる離散確率分布がp=(p_1, \ldots, p_d)と表されるときのエントロピーH(p)は数式では以下のように表されます。

\displaystyle
H(p) = \sum_{i=1}^{d} -p_i \log p_i

ここでいう確率分布は「入力xが分類クラスc\in Cである確率P(c|x)」と解釈できるため、画像xを入力したときのモデルの出力ベクトルに相当します。 ラベル有りデータの教師ラベルは通常one-hotベクトルで表すことができ、H(p) = 0の最もエントロピーが下がった状態と言えます。 一方でp_iのどの要素も等確率な状態のエントロピーは、計算するとH(p) = \log dとなりエントロピー最大値を取ります。

したがって、信頼度の高い出力ベクトルになるよう制御するentropy minimiazationのアイデアは、ラベル無しデータの扱いにとって重要になります。

Pseudo-label

entropy minimiaztionをimplicitに組み込んだ代表的な例としてPseudo-label[2]という手法が2013年の論文で提案されました。*3

当時は半教師有り学習といえば、教師無し学習によるpre-trainingフェーズと教師有り学習を用いたfine-tuningフェーズの二段階構成(multi-stage)で行う手法が多く、うまくone-stageでラベル有り無しデータひっくるめて学習できないかというモチベーションで提案されています。

具体的には、Pseudo-labelとはモデルからの出力を「最も出力値の高いラベルを1に他を0にするone-hotベクトル」に変換することによりラベル無しデータのラベルを推定する手法で、図示すると以下のように表されます。

モデルの出力 \hat{y}から作られるPseudo-label  \hat{y}^{\prime}

学習に組み込む際のロスLは以下のように計算します。

\displaystyle
L = \frac{1}{n} \sum_{m=1}^n \sum_{i=1}^C CE(y_i^m, f(x_i^m)) + \alpha(t) \frac{1}{n^{\prime}} \sum_{m=1}^{n^{\prime}} \sum_{i=1}^C CE(y_i^{\prime m}, f(x_i^{\prime m}))

分類器f、分類クラス数Cとして、 ミニバッチ内のラベル有りデータについて

  • n:データ数
  • x_i^m:入力画像
  • y_i^m:教師ラベル

同じくミニバッチ内のラベル無しデータについて

  • n^{\prime}:データ数
  • x_i^{\prime m}:入力画像
  • y_i^{\prime m}:モデルの出力f(x_i^{\prime m})に対し作ったPseudo-label

を表します。

\alpha(t)はエポック数tが進むにつれてラベル無しデータのロスの割合を大きくする効果を与えるパラメータで、他の手法でも同じような仕組みが採用されています。 学習の初期においては信頼度の低い出力しか得られないため、そこからPseudo-labelを作ってしまうことによる悪影響を防ぐためのものと考えると納得できます。

consistency regularization

二つ目は、consistency regularizationという正則化の手法です。 同じ画像に対し異なる摂動を加えても、モデルに流したときの出力が似たような予測になるべきという仮定のもとの正則化です。 ここでいう摂動とはデータ拡張やDropout正則化、または明示的にガウシアンノイズを加えるといった内容を指します。(この点は論文によって指す内容が異なります)

ここではconsistency regularizationを提唱した論文として有名な1つの具体的な手法について紹介したいと思います。

Π-model

consistency regularizationの考えを半教師有り学習に組み込んだ例としてΠ-model[3, 4]という手法が提案されています。*4

Π-modelでは学習の順伝搬時の確率的な挙動、つまりランダムに学習ノードの接続を落とすDropout正則化やランダムに入力を変化させるデータ拡張などの特性を活かし、異なる2回の順伝搬でパスの違いはあるものの出力が同じであるべきという信念で学習を設計しています。

Π-modelの具体的な学習のイテレーションについても以下の論文内の図と合わせて見ていきましょう。

Π-model全体図:[3]より引用

分類クラス数C、ミニバッチをB、その中のラベル有りデータの集合をLとします。

  1. 入力x_iに対しデータ拡張gを行いモデルf_{\theta}に流し出力z_i = f_{\theta}(g(x_i))を得る。(\thetaはモデルのパラメータを指します)
  2. 同じ入力x_iに対し1.と同様の処理を行い出力\tilde{z}_i = f_{\theta}(g(x_i))を得る。(データ拡張やDropoutのランダム性から全く同じ出力になるわけではないことに注意)
  3. consistency regularizationの項として二乗誤差MSE(z_i, \tilde{z}_i) = || z_i - \tilde{z}_i ||_2^2を計算する
  4. 入力がラベル有りのデータならばラベルy_iと片方の出力z_iに対しcross entropy CE(y_i, z_i)を計算する
  5. ミニバッチごとに以下のロスlossを計算して誤差逆伝搬を行う。 \displaystyle
loss = -\frac{1}{|B|}\sum_{i\in B\cap L} CE(y_i, z_i) + w(t) \frac{1}{C|B|} \sum_{i\in B} MSE(z_i, \tilde{z}_i)

ロスの第二項がconsistency regularizationを表します*5が、入力がラベル有りデータならば第一項のcross entropyをロスに寄与させるというような形になります。

また、w(t)はPseudo-labelでの\alpha(t)と同じような役割で最初0から始めてどんどん大きくしていく関数を採用します。

まとめ

今回は以上です。

半教師有り学習の「consistency regularization」「entropy minimization」の考え方は一般の学習にも応用できそうに感じました。

次回は、最近の手法に至るまでの数々の手法について紹介したいと思います!

参考文献

[1] Schmarje, Lars et al. “A survey on Semi-, Self- and Unsupervised Learning for Image Classification.” (2020).

[2] Lee, Dong-Hyun. "Pseudo-Label: The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks."

[3] Laine, Samuli, and Timo Aila. "Temporal ensembling for semi-supervised learning." arXiv preprint arXiv:1610.02242 (2016).

[4] Sajjadi, Mehdi et al. "Regularization With Stochastic Transformations and Perturbations for Deep Semi-Supervised Learning." arXiv preprint arXiv:1606.04586 (2016).

*1:pretext taskは例えば入力画像の回転(0°, 90°, 180°, 270°)を推定するものやジグソーパズルを解かせるタスクなどが提案されています。

*2:教師有り学習におけるSoftmaxレイヤーの入力であるロジットを想定

*3:Pseudo-labelのことを「ラベル無しデータに対する推定ラベル」という意味合いで用いる文献もあるので注意が必要ですが、基本的にはPseudo-labelは本論文の手法のことを指します。

*4:Π-modelという名前を付けているのは[3]の論文ですが、オリジナルのアイデアは[4]の論文で提案されており、前者は後者の簡易的なケースを考えているものとなっています。 本記事では説明の関係上、前者の提案手法をもとに解説したいと思います。

*5:3.のconsistency regularizationでなぜCEではなくMSEなのか?と私は疑問に思いました。 論文によるとMSEはCEと比べてやや罰則が弱いが実験結果としてはMSEを用いたほうが良い結果が出たと述べています。