Practical recommendations for gradient-based training of deep architectures

33,518 views

Published on

Yoshua Bengio, Practical recommendations for gradient-based training of deep architectures, arXiv:1206.5533v2, 2012 の解説

Published in: Technology
0 Comments
82 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
33,518
On SlideShare
0
From Embeds
0
Number of Embeds
22,439
Actions
Shares
0
Downloads
454
Comments
0
Likes
82
Embeds 0
No embeds

No notes for slide

Practical recommendations for gradient-based training of deep architectures

  1. 1. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References . . Practical Recommendations for Gradient-Based Training of Deep Architectures ∼Bengio 先生のおすすめレシピ∼ Yoshua Bengio Universit de Montral すずかけ論文読み会#6 2013/09/21 紹介者:matsuda 1 / 54
  2. 2. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Outline ...1 勾配 ...2 Hyper-Parameters 考慮すべきハイパーパラメータ ハイパーパラメータの最適化 ...3 デバッグと可視化 Gradient Checking and Controlled Overfitting Visualizations and Statistics ...4 その他 Multi-core machines, BLAS and GPUs Sparse High-Dimensional Inputs ...5 まとめ 2 / 54
  3. 3. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References はじめに ”Neural Networks: Tricks of the Trade”という書籍の (改訂版 の) 草稿のようです 今回はその中の一章,Bengio 先生による Deep Learning の おすすめレシピを読み解いていきます 盛りだくさんなので,適宜飛ばします (よくわからないところを飛ばした,とも言います) 基本的に,CAE もしくは DAE(要は,正則化つき Auto-Encoders) を前提としています RBMs の話もところどころに出てきます 人工知能学会誌の Deep Learning 特集が参考になりますの で,そちらもどうぞ 7 月号の麻生先生の記事,9 月号の岡野原さんの記事が今回の 内容と大きく関連 3 / 54
  4. 4. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Auto-Encoders の基本 . . 書こうとして力尽きました.他によい資料がいくらでもあります ので,そちらをご覧ください. . あらかじめ押さえておくべきこと .. . NN は Forward-propagation, Back-propagation の二つのス テップを繰り返して学習する,ということ Auto-Encoders は,与えられたデータ自体を復元するような ネットワークを学習する教師なし学習である,ということ Auto-Encoders の学習を Supervised な学習の前段階として 行う,という技術がある (Unsupervised Pre-training) という こと 機械学習においては,過学習を抑えるために,正則化という テクニックがよく使われるということ 4 / 54
  5. 5. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References DAE/CAE . Auto-Encoders .. . JAE (θ) = ∑ x∈D L(x, g(f(x))) . Denoising Auto-Encoders .. . JDAE (θ) = ∑ x∈D Ex [L(x, g(f(˜x)))] ˜x = x + , ∼ N(0, σ2 ) . Contractive Auto-Encoders .. . JCAE (θ) = ∑ x∈D (L(x, g(f(x))) + λ δf(x) δx 2 F ) ※特定の状況において,CAE と DAE はほぼ等価 (前回の復習) 5 / 54
  6. 6. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Outline ...1 勾配 ...2 Hyper-Parameters 考慮すべきハイパーパラメータ ハイパーパラメータの最適化 ...3 デバッグと可視化 Gradient Checking and Controlled Overfitting Visualizations and Statistics ...4 その他 Multi-core machines, BLAS and GPUs Sparse High-Dimensional Inputs ...5 まとめ 6 / 54
  7. 7. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 勾配の計算 勾配ベース,という場合は,以下のいずれかが用いられる 確率的勾配法 (Stochastic Gradient Descent) θ(t) ← θ(t−1) − t ∂L(zt , θ) ∂θ ミニバッチ確率的勾配法 θ(t) ← θ(t−1) − t 1 B B(t+1) ∑ t =Bt+1 ∂L(zt , θ) ∂θ . ミニバッチにおいて B = 1 とした場合はふつうの SGD, B = デー タ数とした場合は (確率的ではない) 勾配法 7 / 54
  8. 8. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 勾配の計算 NN はさまざまな「層」の組み合わせ Chain-Rule を用いて,層ごとに勾配を計算すればよいのが ポイント 層をブロックのように組み合わせてネットワークを作ること ができる ブロックに対しては,あらかじめ損失と勾配がどのような形 をしているのか計算しておくことができる ブロックを提供しているライブラリがいろいろあるので,そ れを使おう Torch, Lush, Theano など Theano は記号微分が実装されている 8 / 54
  9. 9. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Theano の例 (記号微分) 雰囲気をつかむための超簡単な例: δ(x2) δx = 2x . Python Code .. . from theano import pp x = T.dscalar(’x’) # x の関数であることを宣言 y = x ** 2 gy = T.grad(y, x) # y を x で微分 => x * 2 f = function([x], gy) f(4) # => 8.0 9 / 54
  10. 10. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Torch で 10 行ニューラルネット . Torch Lua Code .. . require "nn" mlp=nn.Sequential(); #多層パーセプトロン inputs=2; outputs=1; HUs=20; mlp:add(nn.Linear(inputs,HUs)) #層の定義 mlp:add(nn.Tanh()) mlp:add(nn.Linear(HUs,outputs)) criterion = nn.MSECriterion() #損失関数 trainer = nn.StochasticGradient(mlp, criterion) trainer.learningRate = 0.01 trainer:train(dataset) # SGD で学習 Torch にはさまざまな層,損失関数が用意されている SoftMax, Sigmoid, Tanh, HardTanh, Convolution, etc... MSECriterion, MarginRankingCriterion, etc... 10 / 54
  11. 11. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Outline ...1 勾配 ...2 Hyper-Parameters 考慮すべきハイパーパラメータ ハイパーパラメータの最適化 ...3 デバッグと可視化 Gradient Checking and Controlled Overfitting Visualizations and Statistics ...4 その他 Multi-core machines, BLAS and GPUs Sparse High-Dimensional Inputs ...5 まとめ 11 / 54
  12. 12. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References ハイパーパラメータのいろいろ . 最適化のためのパラメータ .. . 学習率 (初期値,減衰) ミニバッチのサイズ イテレーション回数 Momentum . モデル自身のパラメータ .. . 隠れ層のユニット数 重みの正則化 ユニットの (アクティベー ションの) スパース化 活性化関数の選択 . その他 .. . 重みの初期化 (のスケール) 乱数 前処理 12 / 54
  13. 13. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 最適化のためのパラメータ 学習率の初期値 0 10−6 から 1 の間に設定,0.1 くらいがデフォルト.後述する ようにかなり重要なパラメータなので,最適化すべき. 学習率のスケジューリング t O(1/tα) で減少するようスケジューリング.α < 1(O(1/t) より若干緩やか) がおおよその目安. t = 0τ max(t, τ) 上記のように,最初の τ イテレーションは減衰させず,その 後減衰させるとよい,という報告もある (Bergstra and Bengio, 2012) 13 / 54
  14. 14. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 最適化のためのパラメータ ミニバッチのサイズ B 32 くらいが経験的によく,あまり調節の必要はないらしい イテレーション回数 T validation-set を使って,validation-error が減少しなくなっ たら止める (Early Stopping) ただし,error を毎回測るのは無駄なので,ときどきでよい. Momentum β (Polyak and Juditsky, 1992) 勾配自体を過去の平均と混ぜる (慣性をつけるイメージ) ¯g ← (1 − β)¯g + βg 多くのケースでは β = 1(Momentum なし) でよいが,チュー ニングしたほうが良い場合も 14 / 54
  15. 15. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References モデル自身のパラメータ . . 隠れユニット数 (ネットワークの構造) 重みの正則化 (Weight Decay) アクティベーションのスパース化 活性化関数の選択 15 / 54
  16. 16. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References ネットワークの構造 過学習への対処が適切であれば,隠れ層のユニット数は基本 的に「多いほど良い」 ネットワークの構造は,各層が同じサイズで良い場合が多い (Larochelle et al., 2009) (ピラミッド or 逆ピラミッドである 必要はない) Unsupervised Pre-training を行う際は,純 Supervised に比 べて多くしたほうが良い (10 倍とか) Pre-training の段階においては,target-task が分からないた め,データの分布それ自体を学習しなければならない (高い表 現力が要求される) 単なる Supervised な NN であれば,target-task に対する損 失を最小化すればよいため,比較的表現力が低くてもよい 16 / 54
  17. 17. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 二つの正則化 . 重みの正則化 λ (Weight Decay) .. . 各層の重み W が大きくならないよ う調整,L2 or L1 が一般的. バイアス項には正則化をかけない方 法もある. 17 / 54
  18. 18. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 二つの正則化 . 重みの正則化 λ (Weight Decay) .. . 各層の重み W が大きくならないよ う調整,L2 or L1 が一般的. バイアス項には正則化をかけない方 法もある. . アクティベーションのスパース化 (Ranzato et al., 2007) など .. . 隠れ層がスパースになるよう,活性 化関数を調整する → 脳内のニューロンの発火はス パースである,という観察 (sparse coding, sparse auto-encoder) 18 / 54
  19. 19. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 活性化関数 . 代表的なもの .. . Sigmoid 1/(1 + e−a) Tanh ea+e−a ea−e−a Rectified Linear Unit (ReLU, Rectifier) max(0, a) Hard tanh . なめらかな関数 .. . 表現力が高い (最終的な精度 を期待できる) が,収束が遅 い(勾配の消滅), . 非連続な関数 .. . 収束は速く,勾配が疎だが, 表現力が低い (最終的な精度 が伸び悩むかもしれない) 出力層においては,問題の形 (回帰か,分類か,マルチラベルか) に応じて適切な関数が選べるが,隠れ層においては定石といえる ものは無さそう 19 / 54
  20. 20. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 活性化関数のいろいろ PFI Seminer ”Deep Learning の技術と未来” http://www.slideshare.net/beam2d/deep-learning-22544096 MaxOut については後述します 20 / 54
  21. 21. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References その他のパラメータ 重みの初期化 AE の場合,一様分布を用いるのが定石.tanh のユニットで あれば,ノードの次数 (繋がっているエッジの数) を用いて, w ∼ Uniform(−r, r), r = √ 6/(fan-in + fan-out) とする.(Glorot and Bengio, 2010) RBMs の場合は平均 0 で分散が小さい (0.1 or 0.01) の正規分 布を用いる (Hinton, 2010) 乱数 初期化によって得られる結果が異なるため,乱数の種を 10 個くらい試して,それらを組み合わせる (平均を取る,マ ジョリティーを取る,最も良いものを取る)という方法もあ ります.バギングと関連あり. 前処理 基本データ依存.PCA,正規化,uniformization など 21 / 54
  22. 22. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 覚えておくべきこと さまざまな値で試そう validation-error は複雑なカーブを描くので,例えば 3 点だけ 調べる,とかでは不十分なことが多い log-scale で探索しよう 例) 0.1 と,0.11 は殆ど変わらないことが多い.対して, 0.01 と 0.02 は,結果が大きく異なることがある. 計算量の問題 ハイパーパラメータの探索に必要となる,validation error の 算出は計算量が大きい 代わりに,より計算量の小さな指標が提案されているので, そちらを(以下略) . 現実的によく使われる手法 (座標軸降下法) .. . ...1 順番を決めて,あるパラメータに対して最適値を探索, ...2 パラメータを固定して,別なパラメータを最適化 22 / 54
  23. 23. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Greedy layer-wise optimization 層ごとのハイパーパラメータは,層ごとに最適化してしまう (Mesnil et al., 2011) . 論文中の Algorithm 1 (超絶オミット) .. . プレトレーニング: 各層に対して: プレトレーニングを行い,最大 K 個のパラメータ設定を残す ファインチューニング: K 個のパラメータそれぞれに対して: それぞれ validation-set で評価 23 / 54
  24. 24. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Greedy layer-wise optimization 層ごとのハイパーパラメータは,層ごとに最適化してしまう (Mesnil et al., 2011) . 論文中の Algorithm 1 (超絶オミット) .. . プレトレーニング: 各層に対して: プレトレーニングを行い,最大 K 個のパラメータ設定を残す ファインチューニング: K 個のパラメータそれぞれに対して: それぞれ validation-set で評価 . 衝撃的な事実 (Bergstra and Bengio, 2012) .. . じつは,グリッドサーチ (などのシステマチックな探索) よりラン ダムサンプリングのほうがいいパラメータを早くみつけることが できる! 特に,最適化すべきパラメーターが非常に多い場合 24 / 54
  25. 25. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References ハイパーパラメータのランダムサンプリング Bergstra and Bengio, JMLR, 2013 25 / 54
  26. 26. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References ランダムサンプリングがうまく動くわけ 重要なパラメータと,そうでないパラメータがある グリッドサーチだと,重要なパラメータを「重点的に」探ること は難しい 26 / 54
  27. 27. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References ランダムサンプリング VS グリッドサーチ . ランダムサンプリングの利点 (速いだけでなく・・・) .. . 計算をいつやめても良い 計算機が追加で利用可能になった場合,特にグリッドの再設 定などの考慮を行わなくて良い それぞれの trial は,非同期に行える ある trial が失敗しても,単に無視すればよい 結論:ハイパーパラメータはランダムサンプリングしましょう! 個人的には,ちょっと気持ち悪いと思う部分もありますが... Low-discrepancy sequence(超一様分布列)を用いた実験 計画法もあるようです 高次元の数値積分を効率よく計算するための「ばらけた」数列 いわゆる「乱数」とは異なります 27 / 54
  28. 28. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References もう少しハイパーパラメータについて 学習率が多くの場合,最も重要なパラメータ 28 / 54
  29. 29. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Outline ...1 勾配 ...2 Hyper-Parameters 考慮すべきハイパーパラメータ ハイパーパラメータの最適化 ...3 デバッグと可視化 Gradient Checking and Controlled Overfitting Visualizations and Statistics ...4 その他 Multi-core machines, BLAS and GPUs Sparse High-Dimensional Inputs ...5 まとめ 29 / 54
  30. 30. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References バグさがし テイラー近似による微分値のチェック ( = 10−4 が目安) ∂f(x) ∂x ≈ f(x + ε) − f(x − ε) 2ε + o(ε2 ). → 非連続な活性化関数でも使えるのかは不明 (´・ω・`) 小規模のデータで試す L-BFGS などと SGD で全然違う解に収束していたら要注意 メモリの扱いに注意する 一つのテクニックとして,メモリをアロケートするときに NaN で埋めておく,というテクニックがある メモリ中の変なところにアクセスすると,NaN が伝播してく るので,バグが見つけやすくなる C++だと signaling_NaN() というものがある 30 / 54
  31. 31. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 過学習をおさえる もちろん,バグ由来ではなく,そもそもモデルとして性能が 出ないこともある 過学習なのか,モデルの表現力がそもそも低いのか いろいろな解決法があります 訓練データを増やす (おそらく最もシンプル) 正則化項を増やす/見直す マルチタスク学習(!) Unsupervised pre-training, 目的関数に Unsupervised な要素 を加える (データの事前確率など) そもそもネットワークの構造を変える 要は設定変えてやり直せ,ってことです 31 / 54
  32. 32. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 可視化と統計値で学習結果をチェックしよう 各 epoch における訓練データと validation データのエラー率 をチェックする → エラー率が訓練データに対しても下がらない場合は何か がおかしい → 訓練データに対しても下がって validation データに対して 下がらない場合は過学習の兆候 可視化 Hinton Diagram (Hinton, 1989) (重みの可視化) 重みを直接画像にする t-SNE (van der Maaten and Hinton, 2008) (Embedding の可 視化) Manifold Tangent (Rifai et al., 2011b) (CAE で学習された多 様体の上の距離を可視化) Learning Trajectory (Erhan et al., 2010b) (学習の軌跡の可 視化) 32 / 54
  33. 33. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 重みの可視化と Embedding の可視化 . 重みの可視化 .. . 特定の層の重みを可視化 (上の層のユニット数 * 下の 層のユニット数) の行列 Hinton Diagram, Gabor Filter など . Embedding の可視化 .. . あるデータを入力した場合, 隠れ層がどのような値をと るか ベクトル (の集合) の可視化 t-SNE, Isomap など 33 / 54
  34. 34. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Hinton Diagram(重みの可視化) 四角形の大きさは重みの絶対値, 四角形の色は符号 殆どのセルで大きさが変わっていない場合は,学習できていなさ そう,などの観察 (読解は匠の技っぽい) 34 / 54
  35. 35. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 重みを画像でみる 構文解析 ( Compositional Vector Grammer[Socher+2013] ) の例 DT-NP の組であれば NP が head に来る (重要だ),という言語学 における観察が,学習の結果,重みとして得られている 35 / 54
  36. 36. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References t-SNE (MNIST) 36 / 54
  37. 37. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References t-SNE (Turian’s Embedding) 37 / 54
  38. 38. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References t-SNE (Turian’s Embedding) 38 / 54
  39. 39. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Learning Trajectory with t-SNE 学習によって重みがどう変化しているかを可視化 (青:序盤,緑:終盤) Pre-training したほうが分散が小さい,各グループは別々の local minima に向かっている,ということが言えるらしい 39 / 54
  40. 40. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Outline ...1 勾配 ...2 Hyper-Parameters 考慮すべきハイパーパラメータ ハイパーパラメータの最適化 ...3 デバッグと可視化 Gradient Checking and Controlled Overfitting Visualizations and Statistics ...4 その他 Multi-core machines, BLAS and GPUs Sparse High-Dimensional Inputs ...5 まとめ 40 / 54
  41. 41. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Multi-core machines, BLAS and GPUs 計算の殆どは行列演算 BLAS のようなライブラリを使うことで,マルチコアの恩恵 を得られる GPU は適切に使えばとても速い,しかし難易度が高い Theano なら GPU 用のコードも吐けますしおすすめです! GPU を用いる際は,メモリの少なさと CPU 側との帯域の狭 さが問題 人工知能学会誌の岡野原さんの記事でも,マルチマシン,マ ルチ GPU の難しさについて扱われています 41 / 54
  42. 42. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Sparse High-Dimensional Inputs スパース行列の演算には多少のオーバーヘッドがありますが, いわゆる Supervised な NN ではさほど問題になりません しかし,Unsupervised Learning ではけっこう問題 (Reconstruction が重い) Sampled Reconstruction (Dauphin et al., 2011) という方法 があります 42 / 54
  43. 43. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Sampled Reconstruction 超ざっくり:Reconstruction をサボろう,というアイディア L = ∑ x H(x, g(f(x))) ≈ 1 Z ∑ x px H(x, g(f(x))) px ∈ {0, 1}, px ∼ Bin(θ) p = 0 のところは,損失を計算しない 22x の高速化! 43 / 54
  44. 44. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Open Questions 深い構造における学習の難しさ 局所解が非常に多い 初期化/設定によって,drastically に性能がかわる ひとつの方向性として,カリキュラム学習 (Bengio et al., 2009) は有望 簡単な問題から順に学習させる C&W の研究でみたように,ちょっとづつ語彙を増やす (言語モ デルを複雑にする) など 「なぜ」深い構造は学習が難しいのかは,まだ分かっていな いことが多い パーツ自体は単純ではあるが全体の挙動は複雑 (人工知能学会 誌の岡野原さんの記事より) 正直,パラメータ多すぎますよね 44 / 54
  45. 45. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References カリキュラム学習 45 / 54
  46. 46. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 現在実験的に確かめられていること Local training signal (すみません,ちょっとわかりませんでした) 適切に初期化する レイヤの重みのヤコビアンの特異値が 1 に近くなるように初 期化するとよいという報告も (Glorot and Bengio, 2010) (あれ?行列の特異値って一般に複数あるよね?) 活性化関数の選び方 (Glorot et al., 2011a) 一般的には,対称な関数形のほうがよさそう Rectifier(ReLU) は,非対称ながらうまく動く → 勾配がよく伝播するのが理由のようだ それぞれの隠れ層の活性化関数をセンタリング(平均がゼロ になるよう動かす)するとよいという報告もある (Raiko et al., 2012) 46 / 54
  47. 47. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Learning rate の呪いから逃れる Learning rate は非常にクリティカルなパラメータ 最近は適応的に学習率を決める方法も研究されています (AdaGrad(Duchi et al., 2011) など) 各次元ごとに,重みの更新履歴を用いて,「大きく更新される 重みは小さな学習率,そうでないものは学習率を大きく」と いうアイディア → 逆の考え方もありそう 最初は SGD でおおよその解を見つけ,あとは共役勾配法や L-BFGS で丁寧に探索という方向性もあるようです SGD は一次収束だが局所解に捕まりにくい,L-BFGS は収束 が速い (超一次) だが局所解に弱い 47 / 54
  48. 48. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References その他,本稿で触れられていない最近の話題 . DropOut .. . 過学習を防ぐテクニック 隠れ層のノードのある割合 (半分とか) を無かった事にして バックプロパゲーション 推定時は重みを割ってつじつまをあわせる いろいろな亜種がある (DropConnect, MaxPooling, etc...) バギングの一種と解釈できるらしい . MaxOut .. . 最近提案された活性化関数, さまざまな線形関数の Max を とる SoftMax との組み合わせで任意の関数を表現できる (表現力の高い Soft な活性化関数と,学習が速い非連続な活 性化関数のイイトコどり) 48 / 54
  49. 49. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References MaxOut PFI Seminer ”Deep Learning の技術と未来” http://www.slideshare.net/beam2d/deep-learning-22544096 49 / 54
  50. 50. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References Outline ...1 勾配 ...2 Hyper-Parameters 考慮すべきハイパーパラメータ ハイパーパラメータの最適化 ...3 デバッグと可視化 Gradient Checking and Controlled Overfitting Visualizations and Statistics ...4 その他 Multi-core machines, BLAS and GPUs Sparse High-Dimensional Inputs ...5 まとめ 50 / 54
  51. 51. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References まとめ Auto-Encoders Based な Deep Learning を実装・利用する上で, 知っておいたほうが良いことを紹介 ハイパーパラメータ さまざまなハイパーパラメータとその役割 ハイパーパラメータの最適化における定石 バグさがし・可視化のテクニック 勾配の近似,t-SNE, Learning Trajectory など その他,高次元な入力空間における留意事項 GPU, Sampled Reconstruction, SGD と準ニュートン法の組 み合わせなど . まとめのまとめ .. . ハイパーパラメータはランダムサンプリングしましょう! やっぱりちょっと気持ち悪い... 51 / 54
  52. 52. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 参考文献 I Bergstra, J. and Bengio, Y. (2012). Random search for hyper-parameter optimization. J. Machine Learning Res., 13, 281–305. Polyak, B. and Juditsky, A. (1992). Acceleration of stochastic approximation by averaging. SIAM J. Control and Optimization, 30(4), 838–855. Larochelle, H., Bengio, Y., Louradour, J., and Lamblin, P. (2009). Exploring strategies for training deep neural networks. J. Machine Learning Res., 10, 1–40. Ranzato, M., Poultney, C., Chopra, S., and LeCun, Y. (2007). Efficient learning of sparse representations with an energy-based model. In NIPS’06. Glorot, X. and Bengio, Y. (2010). Understanding the difficulty of training deep feedforward neural networks. In AISTATS’2010, pages 249–256. Hinton, G. E. (2013). A practical guide to training restricted boltzmann machines. In K.-R. M¨uller, G. Montavon, and G. B. Orr, editors, Neural Networks: Tricks of the Trade, Reloaded. Springer. Hinton, G. E. (2010). A practical guide to training restricted Boltzmann machines. Technical Report UTML TR 2010-003, Department of Computer Science, University of Toronto. 52 / 54
  53. 53. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 参考文献 II Mesnil, G., Dauphin, Y., Glorot, X., Rifai, S., Bengio, Y., Goodfellow, I., Lavoie, E., Muller, X., Desjardins, G., Warde-Farley, D., Vincent, P., Courville, A., and Bergstra, J. (2011). Unsupervised and transfer learning challenge: a deep learning approach. In JMLR W&CP: Proc. Unsupervised and Transfer Learning, volume 7. Hinton, G. E. (1989). Connectionist learning procedures. Artificial Intelligence, 40, 185–234. van der Maaten, L. and Hinton, G. E. (2008). Visualizing data using t-sne. J. Machine Learning Res., 9. Rifai, S., Dauphin, Y., Vincent, P., Bengio, Y., and Muller, X. (2011b). The manifold tangent classifier. In NIPS’2011. Erhan, D., Bengio, Y., Courville, A., Manzagol, P.-A., Vincent, P., and Bengio, S. (2010b). Why does unsupervised pre-training help deep learning? J. Machine Learning Res., 11, 625–660. Dauphin, Y., Glorot, X., and Bengio, Y. (2011). Sampled reconstruction for large-scale learning of embeddings. In Proc. ICML’2011. Bengio, Y., Louradour, J., Collobert, R., and Weston, J. (2009). Curriculum learning. In ICML’09. Glorot, X., Bordes, A., and Bengio, Y. (2011a). Deep sparse rectifier neural networks. In AISTATS’2011. 53 / 54
  54. 54. 勾配 . . . . . . . . . . . . . . . Hyper-Parameters . . . . . . . . . デバッグと可視化 . . . . . . . . . その他 まとめ References 参考文献 III Raiko, T., Valpola, H., and LeCun, Y. (2012). Deep learning made easier by linear transformations in perceptrons. In AISTATS’2012. Duchi, J., Hazan, E., and Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research. 54 / 54

×