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

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

スクラッチからの学習(learning from scratch)とは,大規模なディープニューラルネットワーク(DNN)のパラメータの学習において,重み初期化により決めたランダムな初期値から,SGDで直接学習することをいう.慣習的な呼びかたであった「learn CNN from scratch」という呼び方は,「ImageNet事前学習結果を初期重み値に用いて,CNNをファインチューニング」と対比しやすくする意味で,徐々に定着していった.

この記事では,画像認識CNNにおける「スクラッチからの学習」の処理手順 (2節)をまず説明する.その後,物体検出CNNの学習で「事前学習とファイン・チューニング」の手順を元に,「スクラッチからの学習」との比較を行う(3節).

既存テキストでは,DNNをランダム初期化からの学習に対して,名称が定義されていないことが多い.それを,「スクラッチからの学習」と,統一された名称で呼ぶことにしたい.また,2者間での簡単な対比も行い,2者の違いをはっきりさせる(3節).

1.1 記事の構成

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

  • 2節「スクラッチからの学習」の処理手順
  • 3節 「事前学習からのファインチューニング」との比較
  • 4節 まとめ

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

  • 自然言語処理タスクや,物体検出以外の画像認識タスクにおける「事前学習とファイン・チューニング」のより詳しい例や解説は,別途「事前学習からのファイン・チューニング」の記事にて行う予定である.
  • この記事は,物体検出CNNにおける,ImageNetを用いた教師ありの事前学習を中心に展開する (のちに教師なし事前学習の紹介も,「自己教師有り学習(self-supervised learning)」の記事にて,別途行うつもりではある.)
  • 主にBERT・GPTなどの(一般化)言語モデルを利用する今では,もう古典的であるが,word2vecGloVeなどの単語埋め込み(分散表現)も,教師なし事前学習の代表例である.最近の研究では使わなくなってきているが,実用には当然役立つところも多いので,word2vecの仕組みも知っておくと,比較対象として参考になるはずだ.

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

スクラッチからの学習(learning from scratch)
図1. CNNの「スクラッチからの学習(learning 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. 「 事前学習からのファインチューニング」との比較

CNNの「スクラッチからの学習」と「事前学習からのファインチューニング」を比較
図2 CNNの「スクラッチからの学習」と「事前学習からのファインチューニング」を比較

2節で述べたように「(CNNにおける)スクラッチからの学習」の手順は,各タスク$\mathcal{T}_{\text{target}}$のデータセット$\mathcal{D}_{\text{target}}$を用いて,重み初期化から一気に(長い学習時間を経て)SGD学習を実施する(図2-a).

一方,CNNにおける「事前学習からのファインチューニング」は,2ステージ構成の段階的な最適化である(図2-b).古くからの最適化での「初期化」→「洗練(refinement)」のステージ最適化に,2ステージがそれぞれ対応していると考えるとわかりやすい.

ただし,ファインチューニングでは,同一のデータセットで2ステージとも学習するのではなく,2ステージをそれぞれ異なるデータセットであるが,似たタスク間(ImageNet v.s COCOなど)でSGD最適化を行う.

3.1 かつての定番: ImageNet事前学習後に,目的タスクのデータにファインチューニング

まず,ImageNet データセットのクラス識別モデルとしてCNNを事前学習する.類似タスクである物体認識の学習で得た,VGGNetの特徴抽出Encoderを学習しておく.そして,「ImageNetで事前学習済みの,良い初期値」をもとに,2段階目の最適化であるファイン・チューニングにより,Faster R-CNNSSDなどのモデルを,物体検出データセット(Pascal VOC 2007やCOCO)で学習するという流れ・仕組みである.

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

まとめると,追加した検出用のヘッドだけは,重み初期化(Xavier初期化など)を用いて初期化し,他の序盤から終盤層のVGGNet部分は全て,ImageNetで事前学習済みの重みパラメータを初期値に用いるわけである.

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)をスクラッチから学習したところ,ファイン・チューニングで学習した同じモデルと同等かそれ以上の精度を達成した.

つまり,これ以前の常識では「ImageNet事前学習を行ったCNNからファイン・チューニングで学習しないと高精度にならない」というのをみんな信じてその手順を追っていたのだが,2019年の時点では,COCOの各タスクでも,もうファイン・チューニングする必要はなく,スクラッチからの学習で十分になってきていることを確認したという話である.

この研究以降のCNNバックボーンの研究例をあげておく.CVPR2021年発表の,Lite-HRNet [Yu et al., 2021](High Resolution Networkの軽量版)でも,COCOで「スクラッチからの学習」を行っている.このように,2020年以降のCNNでは,各タスクのデータセットを用いて,いきなりスクラッチから学習するようになっている

というわけで,[He et al., 2019]以降は,各タスクのデータセットから直接ファインチューニングすることも定番になっている.ただし,古いCNNモデルやその解説記事・書籍だと,いまだに「ImageNet事前学習後に・そこから各タスクへファインチューニング」が常識である感じの説明になっているので,この2019以降のCNNの状況を知れないことに注意である.

一方で,今はコンピュータビジョンの研究はTransformer, Vision Transformerに移行中であり,そこではファイニンチューニングは登場しない (この記事はあくまでCNN向けの話である).Vision向けのTransformerでは,転移学習が厳しく,また話が違うことに気を付けてほしい.また,自己教師あり学習による(超大量データからの)事前学習という話でも,話が異なることに注意.

4. まとめ

「スクラッチからの学習」について,CNNを対象とした際の話を中心に述べた.AlexNetやVGGNetなど最初は,難しかったCNNの学習は,バッチ正規化・ResNet(残差学習)の登場で,難しくなくなっていったことを述べた.

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

関連記事

  • 「事前学習からのファイン・チューニング」(T.B.D)
  • 「自己教師あり学習(= 教師なし事前学習)」(T.B.D)
  • 「一般化言語モデルの事前学習 (BERTやGPT)」(T.B.D)

関連書籍

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.