はじめに
コンピュータの発展に伴い,深層学習をはじめとした多くの機械学習手法が開発されてきました.その中でも教師あり学習手法は,モデルへの入力と期待される出力の組をデータセットとして与え,学習させることでモデルに予測をさせるというものです.
では転移学習とは機械学習においてどのような働きをなすのでしょうか?
本記事では,転移学習の概念についてケンブリッジ大学出版の「転移学習」1という書籍を参考にしながら解説していきます.
たとえば
まずは以下のような状況を考えてみましょう.
「男性の声のデータセットを用いて,音声認識を行う機械学習モデルを学習させた.このモデルを実際に使ってみると,男性の声には精度良く音声認識を行えたが,女性の声にたいしての精度はあまり良くなかった.」
この原因は,学習を行ったモデルを別の新たなドメインに適用しようとしたからだ,ということができるでしょう.
なら,「女性の声が沢山用意されたデータセットを与えてモデルを調整したらいいじゃないか!」と思うかもしれません.しかし,女友達がいない,などの理由で女性の声を沢山用意することができないという状況も考えられます.
転移学習とは
そこで登場するのが転移学習です.
転移学習には「あるドメインから抽出した知識を用いて,別のドメインや別のターゲットに関する学習を効率化させよう」というモチベーションがあります.
先程の例でいうと,男性の声のデータセットで十分に学習させたモデルを,少数の女性の声のデータセットで再度学習させることで,男女関係なく音声認識なモデルが構築しよう,ということです.
転移学習では知識の受け渡しが行われます.男性の声のデータセットで学習を進めることで,モデルは既に「どのように特徴量を抽出すればいいだろう」「どの特徴量に注目すればいいだろう」といった知識を得ていると考えられます.この知識を再利用することで,少数の女性の声のデータセットからでも十分な精度のモデルを構築できたら嬉しいですよね.
転移学習の定義
ドメインとタスクの定式化
ここからは,数式を交えながら転移学習の定義について説明していきます.これまでもドメインやタスクといった言葉が出てきましたが、それぞれ
- ドメイン:モデルの入力に関する情報
- タスク:モデルの出力に関する情報
と理解しておいてください.
一般に,ドメイン$\mathbb{D}$は特徴空間$\mathscr{X}$と周辺確率分布$\mathbb{P}^X$から成ります.このことを,$\mathbb{D}=\lbrace \mathscr{X}, \mathbb{P}^X \rbrace$と表します.
どういうことかというと,モデルへの入力データを$\mathbf{x}$とすると$\mathbf{x}\in\mathscr{X}$であり,また$\mathbf{x}$の出現確率は$\mathbb{P}^X$により決められているということです.
同様に,タスク$\mathbb{T}=\lbrace \mathscr{Y}, f() \rbrace$とします.$\mathscr{Y}$はラベル空間といい,モデル出力が属する空間になります.ラベルといっても離散値である必要はなく,連続量でも構いません.$f()$は$\mathbf{x}\in\mathscr{X}$から$y\in\mathscr{Y}$を予測する関数であり,$y$の$\mathbf{x}$に対する条件付き確率を最大化する$y$を出力にすると考えれば,$f(\mathbf{x})$の代わりに$P(y|\mathbf{x})$と書いても問題ありません.
転移学習の定義
ここから,ソース・ターゲットという言葉が出てきますが,それぞれ
- ソース:転移させる元
- ターゲット:転移させる先
と理解しましょう.ターゲットとタスクは言葉が似ていますので注意してください.
ここで,ソース$s$の学習済みモデルが獲得した知識を利用してターゲット$t$におけるモデルを構築する転移学習を考えます.$s$,$t$それぞれのドメインは$\mathbb{D}_s$,$\mathbb{D}_t$であると理解してください.
データセットを用意しましょう.ソース$s$のデータセットを
\mathscr{D}_s = \lbrace (\mathbf{x}_{s_i}, y_{s_i}) \rbrace ^{n_s} _{i=1}
とかきます.ここで$n_s$はソース$s$のサンプルデータ数です.同様に,ターゲット$t$のデータセットも
\mathscr{D}_t = \lbrace (\mathbf{x}_{t_i}, y_{t_i}) \rbrace ^{n_t} _{i=1}
と表記します.このとき,転移学習は以下のように定義できます1.
ソースドメイン$\mathbb{D}_s$とタスク$\mathbb{T}_s$,ターゲットドメイン$\mathbb{D}_t$とタスク$\mathbb{T}_t$があるとする.転移学習とはドメイン$\mathbb{D}_t$に対するターゲットの予測関数$f_t()$の学習を$\mathbb{D}_s$と$\mathbb{T}_s$を用いて改善させることである.このとき,$\mathbb{D}_s \neq \mathbb{D}_t$であるか,または$\mathbb{T}_s \neq \mathbb{T}_t$である.
もし$\mathbb{D}_s = \mathbb{D}_t$かつ$\mathbb{T}_s = \mathbb{T}_t$だと,これは転移学習でない従来の学習手法と同じになってしまいます.
転移学習の分類
転移学習は大きく分けて2つに分類できます1.
- ホモジニアス転移学習:$\mathscr{X}_s \cap \mathscr{X}_t \neq \varnothing$かつ$\mathscr{Y}_s = \mathscr{Y}_t$
- ヘテロジニアス転移学習:$\mathscr{X}_s \cap \mathscr{X}_t=\varnothing$または$\mathscr{Y}_s \neq \mathscr{Y}_t$
数式がややこしくなってきたので解説していきましょう.
ホモジニアス転移学習は,まずラベル空間が同じです.ということは,モデルの出力が同じ物理量であるということですから,ソースとターゲットとが同じようなタスクを達成しようとしていることとなります.また,ドメイン空間の共通部分が存在するということは,モデルへの入力も似たようなものである,ということです.
対してヘテロジニアス転移学習では,ドメイン空間の共通部分が存在しないか,またはラベル空間が異なります.つまり入力データが全く異なるものであるか,または出力データが全く異なるのです.
ホモジニアス転移学習の方が難易度は低そうですね.
-
Q. Yang, U. Zhang, W Dai and S. J. Pan, Transfer Learning, Cambridge University Press, 2020. https://www.cambridge.org/core/books/transfer-learning/CCFFAFE3CDBC245047F1DEC71D9EF3C7 ↩ ↩2 ↩3