end-to-end 学習(端対端学習)

1. end-to-end 学習 (端対端学習) とは [概要]

end-to-end 学習 (端対端学習) とは,ディープラーニングにおいて,1つの問題やタスクに対して,ネットワークの「入力層(端)」から「出力層(端)」までの全層の重みパラメータをいっぺんに最適化で学習することを言う(「端対端学習」の読み方は,「はし・たい・はし」学習).逆に,1つの問題を,2つ以上のモデルで手分けして,それぞれ個別にモデルを学習し,それらを連結して力を合わせて解く場合は,end-to-end 学習と言わない.

end-to-end 学習は,日本語圏だと,たまに「一貫学習」と翻訳されることがある.しかし先に使われていた「end-to-end」から派生した「A-to-B 学習」という呼び名 (1.3節) に統一する形で,「末端対末端学習」と翻訳したい.ただし,この見慣れない呼びかたを使うと,各記事が読みづらいと思うので,英日ミックスした「end-to-end 学習」という呼びかたを基本的に用いる.

※ 「一貫(consistent)」と翻訳すると,Cycle GAN の循環一貫性損失(cycle consistency loss)のように,end-to-endと微妙に意味が異なるように聞こえてしまう.

そして,end-to-end 学習が可能なネットワークのことをend-to-end モデル(端対端モデル)end-to-end ネットワーク(端対端ネットワーク)と呼ぶ.

1.1 end-to-end 学習という呼び方が登場した経緯

そもそもなぜ,このEnd-to-Endという呼び名が登場したかについて述べたい.元々は,初期のディープニューラルネットワークだと,取り組む課題が難しくなると,スクラッチからの学習で一気に1つのネットワークを端対端学習できる最適化技術は揃っておらず,「事前学習 + ファインチューニング」も必要であった.

初期の深層学習モデル(特にAlexNet登場以前)では,今のように大規模モデルを深いで層数で一気に学習することが難しい課題であった.その当時は「とても深いネットワークは,どうも学習できるようにはなりそうにないぞ」という壁にぶち当たっていたで時代である.

CNN初期の頃は,層の深いモデルをいっぺんに学習する技術が(ファインチューニングしたとしても)まだ確立されていなかった.従って,序盤(1)の特徴抽出ネットワークと,(2)終盤の予測モデルを,分割して,それぞれ個別に学習することが普通であった.

例えば物体検出の初期モデルのR-CNN(2014)のように,2ステージ処理の前半モデル(CNN)と後半モデル(SVMと線形回帰)を,別々に分離して個別学習することが普通であった.もしその2つを繋げたモデルを,一気にend-to-end 学習するためには,それ以前に,「深いCNNをきちんと学習できるようにする必要がある」という時代であったのだ.

しかし,2015年,バッチ正規化ResNetの登場のおかげで,深いCNNもきちんと学習できるようになり,これまでは2モデル以上に分割して個別に学習していたタスクでも,結合した大きなモデルを一気にend-to-end学習できるようになった(まだ,スクラッチの学習からではなく,事前学習からファインチューニング).つまり当初の「あまり深いネットワークは学習できなさそうだぞ?」という暗い未来予想は外れて,かなりの深い大規模ネットワークでも,スクラッチからの学習でend-to-end学習するという世の中になった.このおかげで,複数モデルに分割して解いていた問題も,1モデルで一気にend-to-end学習するのが普通となった.

1.2 各タスクでの例

例えば,先ほども例を出した,物体検出Faster R-CNNシリーズ 3部作が,合体モデルとして発展していき,end-to-end化していった例である. Faster R-CNNは,前半ステージのRPN(領域提案ネットワーク)も,後半ステージのFast R-CNNも,一気にend-to-endで同時に学習する.

また,Vision and Languageなどマルチモーダル・クロスモーダルな問題でよくある2モーダルを入力として用いるタスクについて述べておく.画像表現を計算するCNNや,文章表現を計算するLSTMやBERTは,事前学習済みの物を重みをフリーズしてそのまま用いて,学習せず,そのあと画像ブランチと言語ブランチで計算した表現2つをフュージョンして出力を予測する後半ネットワークだけを学習する場合がある(Image GroundingやVisual-Text Embeddingなど).これらの場合は,前半ネットワークのパラメータはフリーズして学習を行わないないことも多いので,ネットワーク全体では end-to-endで学習しない例である.逆に,前半2つのネットワークはフリーズせず,画像CNNやText埋め込み層もファイン・チューニングする場合は,end-to-end な学習である.

1.3 「end-to-end 」から派生した呼び方の例

seq2seqの論文で初めて登場した「系列対系列変換(sequence-to-sequence translation)」も,end-to-end 学習の呼びかたに習って造られた用語である.end-to-endは学習の入出力全体一貫性であるが,系列対系列変換では,推論時の「入力(系列)-to-出力(系列)」がA-to-Bのイメージで同じであることによる.同じく,pix2pixやCycleGANから始まった,「画像対画像変換(Image-to-Image translation)」も同様であある.

つまり,A-to-B と端から端に学習する場合にならって,データAからデータBに変換する場合も,ディープラーニング業界では,(一般化されて)「A-to-B 変換」といずれも呼ばれるようになった.

2. まとめ

以上,簡単にであるが end-to-end 学習 について,登場した過去の状況(1.1),モデル例(1.2),および派生した呼び名の例(1.3)について紹介した.

関連記事

関連書籍