転移学習とは何か



最近転移学習について議論する場があったが、転移学習についてそもそもあまり理解できていなかったので、理解の整理と備忘録を兼ねてまとめておく。

転移学習 (Transfer Learning) とは

あるドメインのタスクについて学習させた学習済みのモデルがあるとき、関連する別ドメインのタスクに対して学習済みのモデルを利用する手法を転移学習と呼ぶ。学習に使用できるデータが少量しかないタスク (いわゆるコールドスタート問題) に対して、データ量の多いタスクで学習したモデルを利用するのが一般的な転移学習の枠組みである。

転移学習がうまく作用する背景としては、元ドメイン (source domain) と、関連する転移先の目標ドメイン (target domain) 間で低レベルで共通する特徴が存在しているという仮定がある。そのため、何も考えずに適当な学習済みモデルを流用してくれば常にうまくいくというものではない (言うまでもないが) 。こちらの図が分かりやすかったので、引用する。

http://ruder.io/transfer-learning/ より

タスク間で転移学習の効率を詳細に示した研究としては、 Taskonomy (CVPR ’18 Best Paper) が挙げられる。この研究では、複数のタスク間でのモデルの転移効率を可視化することに成功している。(参考)

転移学習の例

pre-trained モデルの活用

一般物体認識のようなタスクにおいては、ImageNet などの大規模なデータで事前に学習した重みを用いることで、少量の訓練データでも十分な性能を得ることができることが知られている。CNN においては、入力層に近い下位層では普遍的な特徴を、上位層ではよりリッチな特徴を捉えていることが分かっているため、限られた上位層のみ再学習すれば凡そうまくいくというのが大雑把な理屈である。

http://cs.brown.edu/courses/cs143/2017_Spring/proj6a/ より

pre-trained モデルを流用する際は、学習データ数が少ない場合は出力層のみを、十分にある場合は上位の複数層を再学習させることが多い。また、重みを完全に固定したり、学習率を小さくして未知の事例を新たに学習させたりと学習の方法も色々なパターンがある。pre-trained モデルの重みを流用して新たなモデルを再学習させる枠組みは fine tuning として広く知られている。

新規ドメインの適用

転移学習のシナリオの一つで、source domain と target domain の観測データは同じであるが、その分布が異なるタスク (=ドメインバイアスが存在する) を指す。Domain Adaptation (ドメイン適用) とも呼ばれる。

一般的な機械学習のタスクでは訓練データとテストデータが同じ分布であることを前提において学習を行うが、実世界のデータではそうはいかない場合が多い。下の例のように、照明や角度はもちろん、色の違いから似顔絵と顔写真の違いに至るまでさまざまな差異を考慮する必要がある。よって、特徴空間上でソースとターゲットの分布を一致させるよう学習することが Domain Adaptation の一般的な目標となる。

Deep Visual Domain Adaptation: A Survey より (CVPR ‘18)

実例としては、大量に集められる CG や Web 上のデータを source に用いて、実空間という target に変換する研究などがある。特に、ターゲットドメインが一切ラベルを持たないタスクは Unsupervised Domain Adaptation (UDA) と呼ばれ、昨今盛んに研究されている分野の一つである。ドメインに不変な特徴量を取得する手法 (ADDA など) が知られている。

ドメイン間の違いを学習

ドメインに固有な特徴とドメイン間で共通的な特徴を分離させるよう学習を行うことにより、ラベルなしのターゲットをうまく識別する手法。StarGAN などの Image-to-Image Translation もドメイン変換を学習させる手法としてこれに含まれる。(これらも実質 Domain Adaptation の一部)

複数ドメインで共通的な表現の学習

ドメイン (タスク) に非固有な複数ドメインで利用できる表現を学習することによって、正解データのないドメインに対応する手法。AutoEncoder や GAN の中間表現を活用する手法がある。

転移学習に関連する領域

学習に使用できるデータが限られるという問題に対して、転移学習以外にも様々な試みが行われている。それらについて以下に簡単に列挙する。 (浅くしか調べていないので色々怪しい)

Semi-supervised Learning (半教師あり学習)

正解ラベルが付与されたデータが少数しかない場合に、それらをうまく活用して正解ラベルがないデータに適用する手法。類似の取り組みとして、正解ラベルなしデータの出力を正解ラベルとして扱い、学習に使用する Data Distillation (データ蒸留) という手法もある。

Weakly-supervised Learning (弱教師あり学習)

出力に必要な情報よりも少ない情報を与える学習の手法。例としては、物体検出のタスクに画像の分類ラベルのみ付与されたデータを用いるなど。
(参考: CVPR ’18 の弱教師あり学習による物体検出のチュートリアル)

Self-supervised Learning (自己教師あり学習)

本来解きたいタスクとは関係のなさそうなタスク (pretext task) で事前に特徴表現を学習させ、学習したいタスクに利用する手法。(参考)

{Few, One, Zero}-shot learning

物体認識のようなタスクでは、ロングテールに属する事例の画像が少量や1枚しかない、もしくは全く存在しないという場合があり得る。このような問題に取り組む枠組みが、{Few, One, Zero}-shot Learning である。物体認識においては、単語の分散表現や WordNet のようなグラフ構造を持った知識ベースを用いる手法などが提案されている。

Multi-task Learning

学習済みのモデルを転移させるのではなく、最初からマルチタスクを解けるモデルを作ってしまうという手法。複数タスクに対応するために、一般的にはモデルを大きくする必要がある。UberNet では、1枚の画像から7タスクを同時に解くモデルを実現している。(デモ)

UberNet より(CVPR ‘17)

Data Augmentation

画像を変形させたり明るさを変えたりすることで教師データを水増しする手法。最近では、モデルの正則化を目的として入力画像をランダムにマスクする Cutout / Random Erasing や、2つの訓練サンプルを合成して新たなサンプルを作り出す Mixup なども活用されている。

参考

Source: Deep Learning on Medium