1. end-to-end learning (端対端学習) とは [概要]
end-to-end learning (端対端学習) とは,ディープラーニングにおいて,1つの問題やタスクに対して,ネットワーク中の入力層(端)から出力層(端)までの全層の重みを,いっぺんに学習することを言う.逆に,1つの問題を,2つ以上のモデルで手分けして,それぞれ個別にモデルを学習し,それらを連結して力を合わせて解く場合は,End-to-End 学習と言わない.
end-to-end 学習は,日本語圏だと,たまに「一貫学習」と翻訳されることがある.しかし先に使われていた「end-to-end」から派生した「A-to-B 学習」という呼び名 (1.3節) と統一する形をとり,管理人流の和訳としては,「(末)端対(末)端学習」と翻訳しておきたいと思う.(「端対端学習」の読み方は,「はし・たい・はし」学習としておく)
ただし,この見慣れない「端対端学習」の呼びかたを使いすぎると,慣れないと読みづらいと思うので,しばらくは,英日ミックスしたend-to-end 学習 を基本的に用いる.そして,end-to-end 学習が可能なネットワークのことをend-to-end モデル (端対端モデル)やend-to-end ネットワーク(端対端ネットワーク)と呼ぶ.
※ 「一貫(consistent)」と翻訳すると,Cycle GANの 循環一貫性損失(cycle consistency loss)のような意味あいに聞こえてしまうと思う.
図1は,物体認識向けの画像分類CNNを例に,「ネットワーク全体のend-to-end 学習を行う様子の模式図」を描いている(図1-a).また,かつては非end-to-end 学習であった「深層学習以前の古典的な画像認識パイプライン(図1-b)」とも比較しやすくしいように管理人の方で描いた図である.
図1-(b)の頃は,CNNのうち前半~中盤のバックボーン部分に対応する「特徴抽出,コーディング・プーリング,次元削減」などが個別に設計・選択・学習され,それとは別に,終盤層のCNNヘッド部分も,SVMやboosting識別などで,個別に学習されていた.それに対して,図1-(a)のように,物体認識向けCNNでは,全部の部品が一気に学習され明確な区別はなく,一気に全体を学習する.CNN中の,バックボーン部分が(低~中レベルの)特徴抽出を担当し,終盤が識別器には相当するが,その明確な境界はない.
また,その境界のなさゆえ,図1-(b)の頃の「部分ごとの設計や個別学習」と違って,中身がブラックボックス化しやすいのがend-to-end学習の特徴でもある.よって,アテンション機構の追加や,CAM, grad-CAMなどの,「解釈可能化技術」が,のちにCNN(やDNN全般)で,重要視されていくことにもなった.
1.1 end-to-end 学習という呼び方が登場した経緯
なぜ,このend-to-endという呼び名が登場したかについて,もうすこし歴史的な経緯を順に述べていきたい.
初期の時代(特にAlexNet登場以前)のディープラーニングでは,大規模モデルを深い多くの層数で,一気に学習しきるのは不可能で,とても難題であった.その当時は「とてもじゃないけど,深いネットワークは学習できるようCNN (畳み込みニューラルネットワーク)にはなりそうにないな…」という壁にぶち当たっていた時代である.
CNN初期の頃は,「層数の多い,深くて大規模なネットワーク」を,(精密調整をしたとしても)安定して大域最適解付近まで,うまく学習をすすめきる技術がまだ確立されていなかった.従って,序盤の(1) 特徴抽出ネットワークと,終盤の(2)予測モデルを,分割して,それぞれ個別に(なんとかして)学習することが普通であった.例えば物体検出の初期モデルのR-CNN(2014)では,2ステージ処理のうち,前半の画像特徴抽出CNNと,後半の予測モデル(SVMと線形回帰)を,個別に分けて学習していた.
その後,ResNet登場までは,層数を多くに増やそうとしても,大規模データに対してスケール化できなかった.ImageNet事前学習済みのCNNを,目標タスクのデータセットにファイン・チューニング(fine-tuning)することで,やっと予測精度がそこそこ良いCNNが学習できていた(例:VGGnet をバックボーンに用いる,Faster R-CNNなど).
しかし,2015年,バッチ正規化やResNetの登場のおかげで,深いCNNもきちんと学習できるようになった.これまでは分割して個別にモデルを学習していたタスクでも,結合した大きな1つのモデルを,一気にend-to-end学習でうまく学習できるようになった (ただし,まだ直接スクラッチの学習するのではなく「事前学習→精密調整」で行う).この時期に,当初の「あまり深いネットワークは学習できなさそうだぞ」という暗い未来予想は外れることになり,かなり深い大規模ネットワークでも,end-to-end学習できるようになっていった.
1.2 その他の各タスクでの例
1.2.1 物体検出での例
例えば,先ほども例を出した,物体検出の Faster R-CNNシリーズ 3部作が,合体モデルとして発展していき,end-to-end化していった例である. Faster R-CNNは,前半ステージのRPN(領域提案ネットワーク)も,後半ステージのFast R-CNNも,end-to-endで同時学習する.
1.2.2 Vision-Languageで,2モーダル両方から入力を受け取る例.
また,Vision -Language などマルチモーダル・クロスモーダルな問題でよくある「2モーダルの両方からを入力受け取るタスク」についても,学習手順の典型例を述べておきたい.Image GroundingやImage-Text Embeddingなど,画像EncoderもテキストEncoderも用意する問題での,ディープネットワーク構造を例として考える.
このマルチモーダルフュージョン的な構成では,以下に述べるように (1)2つのEncoderは,事前学習済みからフリーズさせて精密調整しないパターン (2) Encoder2つも精密調整するパターン,の2つがある
※ (1), (2)のどちらの方が良いかは時と場合によるので,2通り存在することを紹介するだけに留める
(1) Encoder2つはフリーズするパターン
入力画像から画像表現をEncodeするCNNバックボーンや,文章表現を計算するLSTM・BERT Encoderは,それぞれ事前学習済みの物を,重みをフリーズしてそのまま用いることも多い.
この場合,画像ブランチと言語ブランチで計算した2表現をフュージョンし,最終出力を予測する後半ネットワーク部分だけを学習することになる.
(2) Encoderも精密調整するパターン
逆に,前半2つのEncoderネットワークはフリーズせず,画像CNNやText埋め込み層も精密調整(fine-tuning)する場合は,全体で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)について紹介した.
関連書籍
- Pythonで学ぶ画像認識 (機械学習実践シリーズ), 田村 雅人, 中村 克行, インプレス, 2023.
- 深層学習による自然言語処理(機械学習プロフェッショナルシリーズ) 坪井祐太,海野裕也,鈴木潤.講談社,2017.
- 3.4 系列変換モデル,補足3.6 (p89)