論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
1. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
論文輪読: Data-Dependent Initializations of Convolutional
Neural Networks / All You Need Is a Good Init
味曽野雅史 (松尾研 B4)
2016/2/12
2016/2/12 味曽野雅史 (松尾研 B4) 1
2. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
基礎情報: Data-Dependent Initializations of CNN
URL: http://arxiv.org/abs/1511.06856
学会: ICLR’16
著者: Philipp Krahenbuhl, Carl Doersch, Jeff Donahue, Trevor Darrell
所属: UCB, CMU
1. What is this?
CNN のための高速かつシンプルなデータ依存のネットワーク初期化方法を提案
2. 先行研究との比較
学習データが少ないときに有効な初期化方法を探る (not 学習速度)
(ランダムな初期化ではなく)構造的な初期化をおこなう
3. 提案手法
各重みが同じ割合で学習されるように重みの初期値を調整する
4. 実験
VOC 2007 の分類/検出タスクでの性能比較 (一部実験未完)
5. 議論
事前学習用データを使わない場合に提案手法は効果を発揮.ただし ILSCRC の
モデルが使えるなら現状それを使った方が良さそう
2016/2/12 味曽野雅史 (松尾研 B4) 2
3. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
fine-tuning
訓練データが少ないとき,まず数千万枚のデータがある ImageNet を利用し
てネットワークを学習(事前学習)し,その後 fine-tuning するのが一般的
2016/2/12 味曽野雅史 (松尾研 B4) 3
4. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
何故 fine-tuning をおこなうか
1. 訓練速度の向上
2. 汎化能力の向上
適切に初期化をおこなえば,多くの場合 fine-tuning をしなくても訓練誤差は
減る
しかし fine-tuning をしない場合,テスト時の性能が悪化することが多数報告さ
れている
訓練データが少ないとき,fine-tuning をすれば良いことはわかっているが,
何が汎化能力の向上に寄与するのかほとんど分かっていない
2016/2/12 味曽野雅史 (松尾研 B4) 4
5. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
関連研究 : どう fine-tuning すべきか?
Yosinski et al. (NIPS’14)
様々な条件で fine-tuning をおこない性能比較
結果: 少数の訓練データで fine-tuning をするとき,訓練によって一部の層
の重みのみを大きく変更する(他の層の重みは固定する)より,全ての層
の重みを少し変更した方がテスト時の性能が良い
この結果から得られる仮説: 各層が同じ割合で重みを学習した方がいいの
では?
各層の重みの leraning rate を同じにするだけでは不十分
zk = relu(Wk zk−1 + bk ), zk+1 = Wk+1zk + bk+1 のとき α > 0 を用いて,
zk+1 = relu(α(Wk zk−1 + bk )), zk+1 = 1/α(Wk+1zk ) + bk+1 とすれば zk+1
の値は変わらない
一方勾配値は変化する
2016/2/12 味曽野雅史 (松尾研 B4) 5
6. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
提案手法: Data-Dependent Initialization
目的: ネットワークの各パラメータ(重み)が均等に学習するようにしたい
各パラメータに関する勾配の大きさの割合を等しくしたい
やること: パラメータの初期値を各層がパラメータを同じ速さで学習する
ように設定する
手順
0. 適当な方法で重みを初期化する
1. レイヤーごとに重みの正規化
2. レイヤー間でスケールを合わせる
2016/2/12 味曽野雅史 (松尾研 B4) 6
7. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
手法の概要
N 層のネットワーク,損失関数 L(zN ) = ηT
zN とする
η = N(0, I), L(zN ) はラベルに依存しない損失関数
C2
k,i,j を k 層目の重み Wk (i, j) に関する勾配のノルムの平均だとする
ここで D は初期化に利用する適当な画像集合,yk は逆伝播誤差
各重みが同じ割合で学習するようにしたい → 式 (1) を重みの大きさ
||Wk ||2
2 で割ったものが各重みで同じになるようにしたい
しかし通常 yk は zk−1 の関数であるため,zk−1 に関係する重みを変更する
と,それは yk にも影響する
そこで式 (2) を簡略化する
2016/2/12 味曽野雅史 (松尾研 B4) 7
8. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
手法の概要 (cont’d)
各重みが同じ割合で学習するように重み
を初期化する代わりに,重み行列 Wk の各列が同じ割合で学習するようにする
ここで N は重み行列の行数
zk−1(j) : 下の層の一つの活性化値
||yk ||2
: 逆伝播誤差のノルム
通常 ||yk ||2
zk−1(j) なので,zk−1(j) と ||yk ||2
が独立であると近似す
ると,
2016/2/12 味曽野雅史 (松尾研 B4) 8
9. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
1. レイヤーごとに重みの正規化
k + 1 層目が入力として受け取る各チャネルが均等に分布するようにしたい
Ez0∼D,a,b[zk (i, a, b)] = β, Ez0∼D,a,b[(zk (i, a, b) − β)2
] = 1 にする
| ˜D| は数十~数百で十分らしい
β について以降の論文で出てこないので詳細不明..
2016/2/12 味曽野雅史 (松尾研 B4) 9
10. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
2. レイヤー間でスケールを合わせる
手順 1. で zk (i) の分散は 1 になるので,重み行列 Wk の列 i に関する C2
k,i
は全ての列で一定となる
一方で,レイヤー間については何も保証されない
各層における平均の変化率 ˜Ck,i,j を計算,その幾何平均を全体の変化率と
する
各層の平均変化率が全体の変化率に近づくようスケールする
これを収束するまで繰り返す
α = 0.25 を使ったらしい / 通常数十回で収束
2016/2/12 味曽野雅史 (松尾研 B4) 10
11. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
重みの初期値に関して
重みの初期値はランダムガウシアンでなくても良い
実験では 2 つのデータ依存の重み初期値を利用
ただし畳み込み層についてのみ (全結合層に対しては十分なデータがなかった
ため)
ちょっと詳細分かってない
1. PCA-based initialization
各レイヤーの出力が白色化 / 無相関になるようにする
2. k-means based initialization
Coates & Ng (2012)
2016/2/12 味曽野雅史 (松尾研 B4) 11
12. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験設定
実装: Caffe
データセット: PASCAL VOC 2007 ; 訓練画像 5011, テスト画像 4952
ネットワーク: CaffeNet, (VGG, GoogLeNet)
タスク
1. 画像分類 (20 カテゴリ)
2. 物体検出 (Fast R-CNN)
2016/2/12 味曽野雅史 (松尾研 B4) 12
13. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 1: ˜Ck,i,j に関して
複数の初期化方法について,˜Ck,i,j を VOC の 100 の画像を使って計算
比較対象
ImageNet pre-trained model (Krizhevsky et al. 2012)
ランダムガウシアン
unscaled k-means
提案手法 (gaussian, k-means)
2016/2/12 味曽野雅史 (松尾研 B4) 13
14. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 1: スケーリング手法別の比較
VOC 2007 分類タスク
重みの初期値: gaussian / k-means
k-mean の初期値を Algorithm1,2 でスケールさせたものが最も良い成績
2016/2/12 味曽野雅史 (松尾研 B4) 14
15. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 2: 重みの初期化方法別の比較
Glorot & Bengio はいわゆる xavier initialization
Glorot & Bengio や He et al. は (CaffeNet で使われる)Pooling や LRN と
いったレイヤーよりも ReLU やtanh を活性化関数として利用する線形なレ
イヤーに注目した手法 (なので,random gaussian よりも精度が下がった可
能性がある)
2016/2/12 味曽野雅史 (松尾研 B4) 15
16. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 3: 他の事前学習手法との比較
提案手法 (k-means) は分類タスクにおいて他の事前学習手法に匹敵する
性能
提案手法 (k-means) と他の事前学習手法を組み合わせると精度が向上
ImageNet の pre-trained モデルと組み合わせると..?
2016/2/12 味曽野雅史 (松尾研 B4) 16
17. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 3: 初期化によって得られる特徴量
Figure 1:
2016/2/12 味曽野雅史 (松尾研 B4) 17
18. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 4: ネットワーク別比較
VGG, GoogLeNet でも実験
結果は分類タスクの MAP がgaussian, k-mean の初期化それぞれの場合で
VGG: 53.8%, 56.5%
GoogLeNet: 50.0%, 55.0%
CaffeNet よりも悪い結果
訓練データ数が少ないことが影響している可能性
CaffeNet と比べると訓練時間は 4~12 倍遅い
2016/2/12 味曽野雅史 (松尾研 B4) 18
19. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 5: ImageNet の訓練
CaffeNet
2016/2/12 味曽野雅史 (松尾研 B4) 19
20. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 5: ImageNet の訓練
GoogLeNet
学習終了していない
2016/2/12 味曽野雅史 (松尾研 B4) 20
21. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
まとめ
CNN のための新しい重みの初期化方法を提案
各重みが均等に学習されるように
モデルを一から訓練するときに効果を発揮
ただし ILSVRC のモデルを fine-tuning できるならまだそれを使った方が物
体認識系は精度が出そう
2016/2/12 味曽野雅史 (松尾研 B4) 21
22. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
基礎情報: All You Need Is a Good Init
URL: http://arxiv.org/abs/1511.06422
学会: ICLR’16
著者: Dmytro Mishkin, Jiri Matas
所属: Czech Technical University in Prague
コード: https://github.com/ducha-aiki/LSUVinit
1. What is this?
こちらもシンプルな重み初期化方法の提案
汎化性能の向上 / 学習速度の向上
2. 先行研究との比較
Orthonormal Initialization (Saxe et al. 2014) の拡張
3. 提案手法
一番最初だけBatch Normalization する感じ
4. 実験
MNIST / CIFAR-10 / ImageNet
2016/2/12 味曽野雅史 (松尾研 B4) 22
23. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
提案手法: Layer-Sequential Unit-Variance (LSUV) Initialization
1. Orthonormal Initialization (Saxe et al. 2014)
1.1 重みを分散 1 のガウシアンで初期化
1.2 QR あるいは SVD を適用して重みをその成分に置き換える
2. 各畳み込み層および全結合層における分散を 1 にする
CaffeNet の場合 fc6 の重み行列は 9216x4096. これの SVD には数分かかる
2016/2/12 味曽野雅史 (松尾研 B4) 23
24. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : MNIST / CIFAR-10
Fitnet を利用
2016/2/12 味曽野雅史 (松尾研 B4) 24
25. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : CIFAR-10
Figure 2:
2016/2/12 味曽野雅史 (松尾研 B4) 25
26. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : 各初期化手法 / 活性化関数別比較
FitNet4, CIFAR-10
Residual learning(He et al. 2015) を取り入れたFitNet4
2016/2/12 味曽野雅史 (松尾研 B4) 26
27. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : Batch Normalization との比較
LSUV は最初だけbatch normalization したものと考えられる
CIFAR-10 に関しては LSUV はBatch Normalization と同程度の性能
ImageNet 等の大規模なデータに関しては?
2016/2/12 味曽野雅史 (松尾研 B4) 27
28. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : (補足) Batch Normalization の場所
FitNet4, CIFAR-10 において BN は活性化関数の後ろに入れた方が良い結果
となった
理由は?
2016/2/12 味曽野雅史 (松尾研 B4) 28
29. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : ImageNet
CaffeNet: 最初は LSUV の方が良いが,最終的には original (Krizhevsky et
al. 2012) の方が良い結果
2016/2/12 味曽野雅史 (松尾研 B4) 29
30. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
実験 : ImageNet2
GoogLeNet: LSUV の方がいい結果
2016/2/12 味曽野雅史 (松尾研 B4) 30
31. 論文輪読: Data-Dependent Initializations of Convolutional Neural Networks / All You Need Is a Good Init
まとめ
提案手法自体は非常にシンプル
何故これをしようと思ったのかよく分からなかった..
BN との比較の実験がもう少し欲しかった
Data-Dependent Initializations of CNN と比べてどちらがいいのか?
2016/2/12 味曽野雅史 (松尾研 B4) 31