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

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

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

本サイトは「スクラッチからの学習」と,こちらにも名前をつけて,この統一された名称でCVMLエキスパートガイド内では呼ぶことにしたい.そして,このあと3節において,2者の簡単な対比も行い,2者の違いを(2者とも名前がある状態で)はっきりさせる.

これまでのテキスト・書籍等では,「初期値からの学習」側には名前が付けられておらず,2つの類似タスク間で行う「事前学習からのファイン・チューニング」の方にのみ,名前が与えられていた,しかし,これだと2者を呼び分けづらく,比較して考えるときも面倒くさいので,「初期値からの学習」を英語の翻訳で「スクラッチからの学習」と,本サイトでは呼ぶことする.

1.1 記事の構成

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

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

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

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

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

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

スクラッチからの学習(learning from scratch)
図1 CNNの「スクラッチからの学習(learning from scratch)」

ディープニューラルネットのうち,CNNを「スクラッチからの学習」で学習する際,以下の2手順で行う:

  1. 重み初期化:学習可能な各層のパラメータを初期化.
  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を事前学習する.その「ImageNetで事前学習済みの,良い初期値(類似タスクで得たVGGNetの特徴抽出Encoder)」をもとに,2段階目の最適化であるファイン・チューニングにより,Faster R-CNN・SSDなどのモデルを,物体検出データセット(Pascal VOC 2007やCOCO)で学習するという流れ・仕組みである.

例えば物体検出タスク$\mathcal{T}_d$では,画像識別タスク$\mathcal{T}_c$でImageNet事前学習済みのCNNから,ファイン・チューニングを行う.具体的には,ImageNetでクラス識別モデルを学習済みのCNNバックボーンの終盤層までの重みパラメータを元に (例 VGGNet-16層のpool5まで),終盤層以降だけを物体検出用の出力推定用の層に替えて,そのCNNをファイン・チューニングすることが多い(例: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)をスクラッチから学習したところ,ファイン・チューニングで学習した同じモデルと同等かそれ以上の精度を達成した.

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

この研究以降のCNNバックボーンの研究例をあげておく.CVPR2021年発表の,Lite-HRNet [Yu et al., 2021](High Resolution Networkの軽量版)でも,COCOで「スクラッチからの学習」を行っている.このように,2020年以降のCNNでは,各タスクのデータセットを用いて,いきなりスクラッチから学習するようになっている(古いCNNモデルやその解説記事・書籍だと,いまだにImageNet事前学習・ファインチューニングが常識である感じの説明になっており,)

とはいえ,今はコンピュータビジョンの研究はTransformer, Vision Transformerに移行中であり,この記事はあくあくまでCNN向けの話である.よって,(Tokenベースの)Vision向けのTransformerでは,この記事とは話が違うことに気を付けてほしい.また,自己教師あり学習による(超大量データからの)事前学習という話が,Transformerを使うと絡んでくるが,自己教師あり学習はCNN(の例えば対照学習)でも

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.
SNSでシェアやブックマークを行う