Upgrade to Pro — share decks privately, control downloads, hide ads and more …

慶應義塾大学 機械学習基礎06 誤差逆伝播法

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

慶應義塾大学 機械学習基礎06 誤差逆伝播法

More Decks by Semantic Machine Intelligence Lab., Keio Univ.

Other Decks in Technology

Transcript

  1. 誤差逆伝播法: デルタを求める - - 19 ▪ 出力層への重みに関する偏微分 ▪ が求まれば、 が得られる

    ▪ 例:簡単のため、回帰問題かつ 1サンプル分の誤差を考える 活性化関数が 恒等写像なら1 同様に考えれば、
  2. 誤差逆伝播法: デルタの漸化式を求める - - 20 ▪ 出力層への重みに関する偏微分 ▪ が求まれば、 が得られる

    ▪ デルタの漸化式を求めたい 同様に考えれば、 L層のデルタ (計算済) 偏微分の 連鎖律
  3. 誤差逆伝播法: 順伝播と逆伝播 - - 23 ▪ まとめると、 ▪ 順伝播 ▪

    逆伝播 ▪ デルタの漸化式が求まった ReLUなら0または1
  4. コードとの対応例(3): 逆伝播 - - 26 ▪ ニューラルネットの構造 ▪ E.backward() 以前以後

     0.1 0.4 0.9 0.5 0.weight.data = tensor([[0.1]]) 0.weight.grad = None 0.bias.data = tensor([0.4]) 0.bias.grad = None 2.weight.data = tensor([[0.5]]) 2.weight.grad = None 2.bias.data = tensor([0.9]) 2.bias.grad = None 0.weight.data = tensor([[0.1]]) 0.weight.grad = tensor([[-8.25]]) 0.bias.data = tensor([[0.4]]) 0.bias.grad = tensor([[-2.75]]) 2.weight.data = tensor([[0.5]]) 2.weight.grad = tensor([[-3.85]]) 2.bias.data = tensor([[0.9]]) 2.bias.grad = tensor([[-5.5]])
  5. 勾配消失・勾配爆発 - - 27 ▪ 勾配消失問題(vanishing gradient problem) ▪ 逆伝播計算では出力から入力

    まで何度も線形変換を行うた め、勾配が急速に小さくなる ことがある ▪ 逆に勾配が発散する場合を 勾配爆発問題と呼ぶ ▪ 1980-2000年代まで、ニューラ ルネットの深層化を阻む問題で あった
  6. 勾配消失・勾配爆発の緩和 - - 28 ▪ 勾配消失問題(vanishing gradient problem) ▪ 逆伝播計算では出力から入力

    まで何度も線形変換を行うた め、勾配が急速に小さくなる ことがある ▪ 逆に勾配が発散する場合を 勾配爆発問題と呼ぶ ▪ 1980-2000年代まで、ニューラ ルネットの深層化を阻む問題で あった ▪ 現代では種々の技術により緩和 ▪ バッチ正規化 ▪ 残差接続 ▪ ReLU(微分が1) ▪ ⇔シグモイド関数の場合、 最大0.25  0.0625  0.015..  0.0039..  … シグモイド 関数の微分
  7. ★残差接続(residual connection)[He+ 2016] - - 29 ▪ 層を迂回する近道を設ける接続方法 ▪ 効果:

    深層化を可能にした ↑迂回された層が不要なら、ゼロになるよう学習されれば良い ▪ 迂回された層の役割: 残差 の予測 スキップ接続(skip connection) 残差ブロック(residual block)
  8. 本講義全体の参考図書 - - 30 ▪ ★機械学習スタートアップシリーズ これならわかる深層学習入門 瀧雅人著 講談 社(本講義では、異なる表記を用いることがあるので注意)

    ▪ ★Dive into Deep Learning (https://d2l.ai/) ▪ 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之著 講談社 ▪ ディープラーニングを支える技術 岡野原大輔著 技術評論社 ▪ 画像認識 (機械学習プロフェッショナルシリーズ) 原田達也著 講談社 ▪ 深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ) 坪井祐太、 海野裕也、鈴木潤 著、講談社 ▪ 東京大学工学教程 情報工学 機械学習 中川 裕志著、東京大学工学教程編纂委員会 編 丸善出版 ▪ パターン認識と機械学習 上・下 C.M. ビショップ著 丸善出版
  9. 参考文献 - - 31 1. Sietsma, J., & Dow, R.

    J. (1991). Creating artificial neural networks that generalize. Neural networks, 4(1), 67-79. 2. Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. The journal of machine learning research, 15(1), 1929-1958. 3. Ioffe, S., & Szegedy, C. (2015, June). Batch normalization: Accelerating deep network training by reducing internal covariate shift. In International conference on machine learning (pp. 448- 456). PMLR.
  10. DNNの学習におけるGPUの利用 - - 49 ▪ 背景 ▪ CPUによる計算ではDNNの 学習に時間がかかりすぎる ▪

    GPUで学習を行うには、入力x、 ラベルy、モデルの3点をGPUに 送る ▪ x = x.to(device) ▪ y = y.to(device) ▪ model = MyMnistNet().to(device)
  11. DNNの学習におけるGPUの利用 - - 50 ▪ 背景 ▪ CPUによる計算ではDNNの 学習に時間がかかりすぎる ▪

    GPUで学習を行うには、入力x、 ラベルy、モデルの3点をGPUに 送る ▪ x = x.to(device) ▪ y = y.to(device) ▪ model = MyMnistNet().to(device) ▪ device = torch.device("cuda") ▪ torch.device("cuda") ▪ 複数あるGPUのうちデフォ ルトのGPUが使用される ▪ torch.device("cpu") ▪ CPUが使用される