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初期の頃は,層の深いモデルをいっぺんに学習する技術が(ファインチューニングしたとしても)まだ確立されていなかったので,序盤の特徴抽出ネットワークと終盤の予測モデルを,分割して分けてそれぞれ学習することが普通であった.例えば物体検出の初期モデルの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で学習する.一方,Fast R-CNNは,前半のselective searchで領域提案を候補ROIとして貰ってから,後半のFast R-CNNでそのROIを元に予測を行うので,2モデルで分離しておりend-to-end学習ではない.

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

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

seq2seqの論文で初めて登場した「系列対系列変換(sequence-to-sequence translation)」も,end-to-end 学習に習って造られた用語である.

また,pix2pixやCycleGANから始まった,画像対画像変換(Image-to-Image translation)も,end-to-endから作られた用語である.

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

2. まとめ

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

関連記事

関連書籍

SNSでシェアやブックマークを行う