スクラッチからの学習 (learn from scratch)

記事を共有する:

1. スクラッチからの学習 (learn from scratch) とは [概要]

スクラッチからの学習 (train from scratch)とは,大規模なディープニューラルネットワーク (DNN)の学習において,重み初期化により決めたランダムな初期値から,SGDで直接学習を最後までおこなうことをいう.

この記事では,画像認識CNNにおける,一般的な「スクラッチからの学習」の処理手順 (2節)をまず説明する.その後,物体検出むけCNNの学習を例に,「事前学習→精密調整」と「スクラッチからの学習」の間での,手順の違いを比較する(3.1節).また,[He et al., 2019] の提案以降,最近のResNetベースの画像認識ネットワークの学習では,事前学習を行わず,目標タスクのデータセット(COCOなど)を使用して,スクラッチから学習することが主流になってきていることを触れる(3.2節)

learn CNN from scratch という慣習的呼び方は「ImageNet事前学習結果を,初期重み値に用いて,CNNを精密調整(fine-tuning)する」と対比しやすくする意味で,徐々に定着していった.既存テキストでは,「DNNをランダム重み初期化から学習する」ことに対して,名称が定義されていない「無名状態」なのがほとんどであった.それを,慣習的な言いかたとしてはたまに使われていた「スクラッチからの学習」とはっきり名付けて,今後この呼びかたを当サイトで使用したい.

1.1 記事の構成

2節以降,以下の構成で進める:

  • 2節「スクラッチからの学習」の処理手順
  • 3節 「事前学習→精密調整」との比較
    • 3.1 かつての定番: ImageNet事前学習後に,目的タスクのデータに精密調整.
    • 3.2 [He et al., 2019] 移行の,各タスクでの調整と,スクラッチからの学習だけでResNetの学習を済ませる新傾向について.
  • 4節 まとめ

そして,3章では,2者の比較ののちに,近年(2019後半以降)のCNNモデルは,各コンピュータビジョンタスクのデータセットから,「スクラッチからの学習」を行うようになってきていることについて述べる(3.2節)

  • 「事前学習と精密調整」のより詳しい例や解説は,別途「事前学習からの精密調整」の記事にて行う予定.
    • その記事では,物体認識CNNにおける,ImageNetを用いた教師ありの事前学習からの精密調整(fine-tuning)の話を中心に説明する予定.
  • (順序的にかなり後になると思うが,)のちに,教師なし事前学習の紹介も,「自己教師有り学習(self-supervised learning)」の記事にて,別途行うつもりである.
    • 主にBERT・GPTなどの(一般化)言語モデルを利用する今ではもう古典的であるが,word2vecGloVeなどの単語埋め込み(分散表現)も,教師なし事前学習の代表例である.最近の研究では使わなくなってきているが,実用には当然役立つところも多いので,word2vecの仕組みも知っておくと,比較対象として参考になるはず.

2. 「スクラッチからの学習」の処理手順

スクラッチからの学習 (learn from scratch)
図1. スクラッチからの学習 (learn from scratch)

例えば物体認識CNNを「スクラッチからの学習」でImageNetをデータセットに用いて学習する際,以下の2手順で行う:

  1. 重み初期化:学習可能な各層のパラメータを初期化.
    • Heの初期化により,CNNの畳み込み層全結合層のパラメータを,ランダム初期化する (※ He初期化の詳細は,重み初期化の記事で).
    • バッチ正規化層を使用している場合は,各バッチ正規化層のパラメータも初期化.
  2. SGDによる最適化:各層のパラメータを学習し,最適化が終われば終了.

素直にスクラッチからCNNを学習するこの手順は,AlexNetVGGNetの学習で行われていた.ただ,これらの初期の大規模クラス識別CNN(特に最初のものであるAlexNet)は,深いCNNを,安定して最適解近くまで収束させる技術が未熟な時代であった.AlexNetでは,ランダム初期化や重み減衰に頼るくらいで,よいCNNが学習できるかはまだ運任せであり,「なんとか運良くうまく成功したら,良いCNNができ上がる」という学習が深層学習は不安定な時代であった.

それが,バッチ正規化の登場や,ResNetの残差学習による逆伝搬の分散・スキップ化などが登場したことで,ランダム初期化を用いたスクラッチからの学習でも,高性能のCNNが学習できるようになった.

その結果,3.2節で述べるように,他のタスクでも直接そのデータセットから「スクラッチからの学習」を行えるようになてく.これにより,あらかじめImageNet事前学習を行っておく必要性が,あまりなくなっていった.とはいえ,ViTなどの巨大モデルではImageNet-21Kで事前学習するので,

3. 「事前学習からの精密調整(fine-tuning)」との比較

スクラッチからの学習(learn from scratch)と精密調整(fine-tuning)の比較
図2. スクラッチからの学習(learn from scratch)と精密調整(fine-tuning)の比較

ここでは,物体検出CNN (Faster R-CNN)などを,事前学習済みのCNNバックボーン (VGGNet, ResNetなど)を用いて精密調整(fine-tuning)する手順に対して,「スクラッチからの学習(2節)」の手順がどのように違うかを比較したい.

2節で述べたように(CNNの)スクラッチからの学習では,各タスク $\mathcal{T}_{\text{target}}$ のデータセット $\mathcal{D}_{\text{target}}$ を用いて,重み初期化した畳み込み層全結合層のパラメータを初期値に,一気に(長い学習時間を経て)SGDでパラメータを学習する (図2-a).

一方,CNNにおける「事前学習からの精密調整」は,2ステージ構成の段階的な最適化である (図2-b).最適化で用いられる,『初期化』→『洗練(refinement)』の典型的な2ステージ構成に,図2-bの2ステージがそれぞれ対応していると考えると,各処理の意味を理解しやすい.

ただし,精密調整では,同一のデータセットで2ステージとも学習するのではなく,2ステージをそれぞれ異なるデータセットであるが,似ているが異なるタスク間 (ImageNet v.s COCOなど)でSGDでの(転移)学習を行うという点に注意(途中まで学習した状態から,同じデータセットを使ったままもう少し学習を進めることは転移学習ではないので,精密調整とも呼ばない).

3.1 かつての定番: ImageNet事前学習後に,目的タスクのデータに精密調整

まず,ImageNet データセットのクラス識別モデルとしてCNNを事前学習する.類似タスクである物体認識の学習で得た,VGGNetの特徴抽出Encoderを学習しておく.そして,「ImageNetで事前学習済みの,良い初期値」をもとに,精密調整を行うことで,Faster R-CNNSSDなどのモデルを,物体検出データセット(Pascal VOC 2007COCO)で学習するという流れ・仕組みである.

例えば物体検出タスク $\mathcal{T}_d$ では,物体認識タスク $\mathcal{T}_c$ でImageNet事前学習済みのCNNバックボーンの後段に,FPNや出力ヘッド層を終盤に加えたネットワークを,精密調整する.

例えば具体的には,ImageNet物体認識モデルを学習済みのCNNバックボーンの終盤層までの重みパラメータを元に (例 VGGNet-16層のpool5まで),終盤層以降だけを物体検出用の出力推定用の線形層に替えて重み初期化を行い,ファイン・チューニングすることが多い (例:Faster R-CNNの前後半ネットワークや,Yolo, SSDなど ).

3.2 ImageNet 事前学習は,もう要らない?

ResNetや,Mask R-CNNなどの著者である Kaiming He らのチームは「Rethinking ImageNet Pre-training 」[He et al., 2019] の研究において,以下に挙げる主張のように,「ImageNet事前学習→ファインチューニング」は不要かもしれないので再考するべきとの研究を発表した:

  • 現在(2019の秋)では,画像識別以外のタスクでも,ResNetを,スクラッチからの学習を行うだけで,十分高い精度のResNetモデルが学習できる.
  • 従って,これまで常識だった「ImageNet事前学習→精密調整」の手順は,最近のCNNモデルであれば,もう不要では?
  • 実際,COCO データセットを用いて,物体検出CNNとインスタンスセグメンテーションCNN(Mask R-CNN)をスクラッチから学習したところ,「事前学習→精密調整」で学習した同じモデルと,同等かそれ以上の精度を達成した.

つまり,[He et al., 2019]は,COCOの各タスクでは「もう精密調整する必要はなく,スクラッチからの学習すれば,予測精度が十分になる」ことを発見した研究である.その後,例えばCVPR2021発表の,Lite-HRNet [Yu et al., 2021] (High Resolution Networkの軽量版)では,COCOでスクラッチからの学習を行って十分な精度を達成している.

この例のように,2020年以降のCNNバックボーンの研究論文では,各タスクのデータセットを用いて,スクラッチから学習するほうが普通となってきている.ただし,古いCNNモデルの論文や,その解説記事・書籍では,「ImageNet 事前学習後に・そこから各タスクへファイン・チューニング」だけが常識である感じの説明にも,なっているで,この3.2節で紹介した2019以降のCNNの状況を知れないことに注意である.

一方で,今はコンピュータビジョンの研究はTransformer, Vision Transformerに移行中であり,Vision-Transformerでは精密調整するが,DETRはCOCOからスクラッチ学習するし,CLIPなどV-L対照学習モデルでは,あとでプロンプトでモデル調整するなど,それぞれ対処方法が違う.つまり「3.2節」はあくまでCNN向けの話であり,ViTやDETR, Transformerモデルだと,個別に話が変わることには気を付けてほしい.

4. まとめ

「スクラッチからの学習」について,CNNを対象とした話を中心に述べた().

「事前学習→ファイン・チューニング」と,「スクラッチからの学習」の比較を行った(3節).CNNの ファイン・チューニングは,AlexNetやVGGNetなどの初期は,安定的に行うことが難しかった.それが,バッチ正規化ResNet(残差接続)などの新技術の登場で, ファイン・チューニングを安定的に完了させることも容易になっていった.しまいには,COCOなどの各タスクのデータセットで,ResNetのスクラッチからの学習を直接行えることが確認され,ResNet系モデルだと,事前学習モデルはそもそも学習に使わないようにもなっていることも述べた (3.2節).

この記事では,RNN・系列対系列変換モデルでの「スクラッチからの学習 v.s. ファイン・チューニング」の対比や,そもそも「系列モデル系には,事前学習できないモデルもある」というような話題はまだ述べていない.また,CNNが自己教師有り学習でどうなるかも,この記事ではまだ触れていない.

関連記事

関連書籍

References

  • [He et al., 2019] Kaiming He, Ross Girshick, and Piotr Dollar. Rethinking ImageNet pre-training. In ICCV, 2019. 
  • [Yu et al., 2021] Yu, Changqian, Bin Xiao, Changxin Gao, Lu Yuan, Lei Zhang, Nong Sang, and Jingdong Wang. “Lite-hrnet: A lightweight high-resolution network.” In CVPR, 2021.