SELF-LABELLING VIA SIMULTANEOUS CLUSTERING AND REPRESENTATION LEARNINGを読んだのでメモ
はじめに
SELF-LABELLING VIA SIMULTANEOUS CLUSTERING AND REPRESENTATION LEARNINGを読んだのでメモ. K-Meansクラスタリングによりデータにラベル付け(self-labeling)を行うDeepClusterに対し,self-labelingで生成されたラベルとモデルの出力間のクロスエントロピーを最適輸送問題として考えることでself-labelingを行う手法.
Method
事前準備として色々定義する. まず,データを適当な空間マッピングするニューラルネットを考える. ただし,は特徴ベクトル. さらに,特徴ベクトルを入力とし識別を行うclassification head を考える. ただし,はカテゴリ数を表す. データは点あるとし,それぞれのデータに対応するラベルをとする. 最終的な分類スコアはsoftmax関数を用いて下記のように計算される.(論文の通りに書いたが,ここまでの定義に従えばを挟んでいるのではとなる気がする.)
モデルは下記のクロスエントロピーを最小化するように学習が進められる.
上記の学習は,ラベルが利用できない場合にはself-labelingの方法によって自動的にラベル付けを行う必要がある.
半教師あり学習などの枠組みではモデルとラベルの同時最適化となるが,完全な教師なし学習では全てを同一ラベルにアサインすることによってコストを簡単に最小化してしまう. そのためここではラベルを事後分布として下記のようにクロスエントロピーを書き直す.
仮に事後分布をクロネッカーのデルタとして決定的に定義をしたのならば上記の式は最初に定義したクロスエントロピーの式に等しい([E(p,q)=E(p|y_1,\dots,y_N)]). この式でも自明な解にたどり着くため,下記のように制約を与えることでこれを避ける.
この制約は,各データには一つのラベルしか割り当てが行われず,各カテゴリに属するデータ数が均一であることを意味する. するとこの問題は最適輸送理論の問題として考えることが可能となる. より具体化するためをモデルから予測されたの同時確率行列とし,同様にをの同時確率行列とする. ここではを次のような輸送多面体の要素(すなわちではなくの連続値)に緩和する.
は全要素が1の列ベクトルで,はを列方向,行方向へ積分することを意味している. ここでが条件付き確率となることを要請する.すなわち
これにより元の目的関数(クロスエントロピー)は次のように書き直される.
はフロべニウス内積(要素積+総和)では行列の各要素ごとに適用されるものとする. 結果として最適なは次の最小化問題を解くことで得られる.
これは線形計画法で溶けるが,通常データ数がミリオンオーダーでクラス数が数千になるので解くことが困難である. ここではSiknhorn Distance(以前まとめたブログ記事)で導入された次のような正則化を導入することで高速に解く方法を提案する.
はKullback-Leiblerダイバージェンスではの確率行列. この正則化の導入により上記の最小化問題のかいが次のように表現される.
注意としては行列の乗ではなく要素毎の乗を表す. とはが確率行列の性質を満たすためのスケーリング係数ベクトルで単純な繰り返し計算で得られる. 面白い知見としては,は大きな値を取れば元の最適輸送問題と等しくなるが,ここではを大きくして正確に解くよりも適当な固定のを使う方が良い結果が得られた. おそらくの緩和により,各クラスに属するデータが均一であるという制約も多少緩和されるためや,smooth labelを使うと良いという知られた知見によるものと考えられる.
最終的なアルゴリズムとしては,モデルとの最適化を交互に解くことで表現学習をする. より具体的には
- 現在得られているに対し,クロスエントロピーの最小化によりのパラメータを更新.
- 現在得られているモデルに対しを計算し,とを次のように更新することでを得る.
の更新は行列ベクトル積であり計算オーダーはであるため,線形計画法で解くよりもリーズナブルに計算が可能(とは言えくらいなのでどうなのかという疑問がある). 論文によれば繰り返し計算はGPUで収束まで2分程とのこと.
解釈
ここまでのアルゴリズムが結局何をやっているのかを考える. 簡単のため,データをそのインデックスとしてと書き換える. すると
とかける. この最小値はの時に得られる. ここで,,周辺化エントロピーが定数,からもまた定数と仮定する. するとエントロピーから二つの定数を引くことで
と相互情報量が導かれる. すなわち結果として元の問題は相互情報量の最大化に等しくなっている.
まとめ
DeepClusterとの関連や,data augmentationの活用,マルチタスクでの学習に関する説明は省略した. データ数が各クラス毎に均一という仮定を導入することで最適輸送問題としてラベリングを定式化する着眼点が非常に面白かった. 一方で,をデータ数に対して線形時間で得ることができると言っているがデータ数を考えるとそんな簡単な話でもない気がするがどうなのか. またの更新の際にを計算する必要があるが,それもナイーブには全データを一回モデルに入力する必要があるので実装上どう実現されているか気になるところ(実験の章はまともに読んでいないので書いてあるかも…).