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

Keio Univ intro to ml 2021 04

Keio Univ intro to ml 2021 04

Transcript

  1. 情報工学科 准教授 杉浦孔明 Email: komei.sugiura@keio.jp Slack: 1_sugiura.komei 慶應義塾大学理工学部 機械学習基礎 第4回

  2. これまでの復習 - - 4

  3. 【第1回】例題:教室のCO2濃度を予測したい 訓練集合とテスト集合 - - 5 CO2濃度を予測したい ↓ が の良い近似になるように、 パラメータを設定したい

    新規サンプルについて予測したい ID 風速 濃度 1 2.0 685 2 1.2 790 3 1.8 733 … … … 1000 1.6 743 1001 1.8 740 1002 2.6 677 パラメータ推定 に使うサンプル 集合 新規サンプルとみ なす(=濃度は知 らなかったものと する) 絶対値でも良いが最小二乗法(least squares method)を習った
  4. 【第2回】順伝播型ニューラルネット - - 6  順伝播型ニューラルネット(feed-forward neural network; FFNN) 入力層

    出力層 中間層(L-1個) 一般化すると
  5. 【第3回】 Adam [Kingma+ 2014] 更新則 - - 7  Adam

     勾配の指数移動平均を使う点が AdaDeltaと異なる  Adamの更新則 真の値より0側に偏るので以下のよ うに補正 ↑ρ1のt乗
  6. 深層ニューラルネットの学習 - - 8

  7. 訓練誤差・テスト誤差・汎化誤差の違い - - 9  訓練誤差(training error)  訓練集合に対する誤差 

    テスト誤差(test error)  テスト集合に対する誤差  機械学習の目標  新規未知データに対して誤り を小さくしたい ならば、仮想で考える しかない
  8. 訓練誤差・テスト誤差・汎化誤差の違い - - 10  訓練誤差(training error)  訓練集合に対する誤差 

    テスト誤差(test error)  テスト集合に対する誤差  機械学習の目標  新規未知データに対して誤り を小さくしたい  当該データを生成する仮想的な 分布を考える(現実には計算で きない) ↓  データの生成分布に対するモデ ル(DNN)の誤差の期待値 =汎化誤差(generalization error) ならば、仮想で考える しかない 汎化性能の手軽な代用物として テスト誤差を使用する
  9. 学習曲線(learning curve) - - 11  途中まで  訓練誤差とテスト誤差が共 に下がる

     途中から  訓練誤差が下がる  テスト誤差が上がる  過学習(過適合、overfitting) 更新回数 誤差 テスト誤差 訓練誤差
  10. 過学習: 単なる訓練誤差の最小化だけでは不十分 - - 12  過学習の原因  本来学習させたい特徴とは無 関係な特徴にまで適合してし

    まうため ↑訓練集合は有限なのでどう しても統計的ばらつきが発生 してしまう  過学習は機械学習における普遍 的問題  最適化対象と汎化誤差のミス マッチ 更新回数 誤差 テスト誤差 訓練誤差 次スライドから過学習を 避ける手法を紹介する
  11. 早期終了(early stopping) 過学習に陥る前にパラメータ更新を停止 - - 13  訓練集合をさらに分割  検証用集合(validation

    set, development set)→パラ メータ推定に使用しない  分割比の例  訓練:検証:テスト=8:1:1 訓練集合 検証用集合 テスト集合 訓練集合 テスト集合
  12. 早期終了(early stopping) 過学習に陥る前にパラメータ更新を停止 - - 14  訓練集合をさらに分割  検証用集合(validation

    set, development set)→パラ メータ推定に使用しない  分割比の例  訓練:検証:テスト=8:1:1 訓練集合 検証用集合 テスト集合 訓練集合 テスト集合 検証用集合の誤差を最小とするモ デルでテスト誤差を計測すること で過学習を避ける ※テスト集合の誤差を最小とする モデルを選択するのはチート 更新回数 誤差 検証用集合の誤差 訓練誤差
  13. 早期終了の基準例 - - 15  例  Nエポック以内でvalidation errorが最小 

    Nエポック以内で検証集合の 精度が最大  Nエポック間validation error が増加 検証用集合の誤差を最小とするモ デルでテスト誤差を計測すること で過学習を避ける ※テスト集合の誤差を最小とする モデルを選択するのはチート 更新回数 誤差 検証用集合の誤差 訓練誤差
  14. 本講義における検証用集合とテスト集合の定義 - - 16  検証用集合の主な用途はモデル 選択(or ハイパーパラメータ探 索) 

    検証用集合とテスト集合の定義  一度も評価に使用されていな い集合を「真のテスト集合」 とする流儀もある  本講義では、データセットを 訓練集合とテスト集合に分割 し、テスト集合を評価に使う ものとする ↑多くの教科書の慣習に従う エポック毎に検証用集合とテス ト集合の誤差をプロットするので あれば、両者の違いは何?という ことになる 更新回数 誤差 検証用集合の誤差 訓練誤差 テスト誤差
  15. 交差検証(cross-validation) 訓練集合とテスト集合に分ける場合 - - 17  背景  テスト集合が一定だと結果が 偏る可能性がある

     N-fold cross-validation  右図のような集合に対して学 習を行い、性能はN回の平均 とする  N=5または4が多い  5-fold cross-validationの例 訓練 テスト 訓練 テスト 訓練 テスト 訓練 テスト テスト 訓練
  16. 交差検証(cross-validation) 訓練・検証用・テスト集合を用いる場合 - - 18  モデル選択  層数、層のユニット数等 

    その他のハイパーパラメータ  学習率等  手順 1. N-fold cross-validationに基 づき、モデルやハイパーパラ メータ等を決定 2. 訓練集合と検証用集合を合わ せて1のモデルを再度訓練 3. 未使用のテスト集合で2のモ デルを性能評価 訓練 検証用 訓練 検証用 訓練 検証用 訓練 検証用 検証用 訓練 テスト
  17. 理解度確認 - - 19

  18. 理解度確認 以下について周りと相談して1分以内に答えよ 1. バッチ学習とミニバッチ学習の違いは何か? 2. エポックとは何か? 3. 大域的極小値と局所的極小値の英語名は何か? 4. RMSpropとAdaDeltaの違いは何か?

    - - 20
  19. 理解度確認 以下について周りと相談して1分以内に答えよ 1. 3層ニューラルネットを構成する層は何と何と何と呼ばれるか? 2. 順伝播型ニューラルネットの英語名は何か? 3. 活性化関数の例を挙げよ。 4. Kクラス分類問題に対する交差エントロピー誤差関数を

    を使って 表せ。 - - 21
  20. 理解度確認 以下について周りと相談して1分以内に答えよ 1. 訓練集合とテスト集合の違いは何か? 2. 訓練集合と訓練サンプルの違いは何か? 3. ミニバッチ確率的勾配降下法の英語名は何か? 4. 損失関数の例を挙げよ。

    - - 22
  21. 本編に戻る - - 23

  22. 正則化(regularization) - - 24  損失関数に正則化項(penalty term) を追加することで、過学習 を避ける 

    正則化項:モデルの複雑さに対するペナルティ  例:lasso=正則化項がパラメータの絶対値の和 通常の誤差 正則化パラメータ: と のバランスを指定 L1ノルムと呼ぶ L2ノルム(パラメータの2乗和)を 用いる場合はリッジ回帰と呼ばれる
  23. ノイズ付加(noise injection) - - 25  背景  入力が微小なノイズで乱された場合にも正しく予測できることが望 ましい

     学習時に入力 に対してガウス分布に基づくノイズ を 付加  正則化と理論的にほぼ同等であることが知られている[Sietsma+ 1991] 各次元が(平均0, 標準偏差ε)で あるガウス分布から独立に得られた
  24. ドロップアウト(dropout) [Srivastava+ 2014] - - 26  深層学習における重要技術  中間層に対するノイズ付加に相

    当  性能を安定化させる効果  p=0.2-0.5が多い 元の モデル ユニット ※アンサンブル学習の一種と考えられる理論的背景がある ドロップ アウトの 例1 ドロップ アウトの 例2
  25. バッチ正規化 [Ioffe+ 2015] - - 27  バッチ正規化(batch normalization)とその派生(layer normalization等)は、最近の応用で重要な働き

     収束を早め、ドロップアウトの機能を部分的に代替 https://blog.google/products/search/search-language-understanding-bert/ https://www.whichfaceisreal.com/ GAN Transformer 「USA to ブラジル」 が検索上位に 「ブラジル to USA 」 が検索上位に
  26. バッチ正規化 [Ioffe+ 2015]の背景: 内部共変量シフト - - 28  入力 は分布

    から サンプリングされるとする  例 → は分布 からサンプ リングされる → は分布 からサンプ リングされる →… 入力層 出力層 中間層(L-1個)
  27. バッチ正規化 [Ioffe+ 2015]の背景: 内部共変量シフト - - 29  入力 は分布

    から サンプリングされるとする  例 → は分布 からサンプ リングされる → は分布 からサンプ リングされる →… に合わせて重みパラメータ を更新 に合わせて重みパラメータ を更新 入力層 出力層 中間層(L-1個) 次の更新では が変化してしまう
  28. バッチ正規化 [Ioffe+ 2015] ユニット出力の各次元に対するバッチ正規化 - - 30  ミニバッチのサンプル平均 

    ミニバッチのサンプル分散  標準化(正規化の一種):平均 0・分散1になるように変換 ゼロ除算を避けるための微小な正数
  29. バッチ正規化 [Ioffe+ 2015] ユニット出力の各次元に対するバッチ正規化 - - 31  ミニバッチのサンプル平均 

    ミニバッチのサンプル分散  標準化(正規化の一種):平均 0・分散1になるように変換  スカラー に対するバッチ正 規化 の定義  xがベクトルの場合も同様に要素 ごとに標準化する 学習パラメータ ゼロ除算を避けるために微小な正数を導入
  30. 本講義全体の参考図書  ★機械学習スタートアップシリーズ これならわかる深層学習入門 瀧 雅人著 講談社(本講義では、異なる表記を用いることがあるので注意)  ★Dive into

    Deep Learning (https://d2l.ai/)  画像認識 (機械学習プロフェッショナルシリーズ) 原田達也著 講談 社  深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ) 坪井祐太、海野裕也、鈴木潤 著、講談社  東京大学工学教程 情報工学 機械学習 中川 裕志著、東京大学工学教 程編纂委員会編 丸善出版  パターン認識と機械学習 上・下 C.M. ビショップ著 丸善出版 - - 35
  31. 参考文献 - - 36 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.
  32. 実習 - - 37

  33. DNNの学習におけるGPUの利用 - - 38  背景  CPUによる計算ではDNNの学 習に時間がかかりすぎる 

    GPUで学習を行うには、入力x、 ラベルy、モデルの3点をGPUに 送る  x = x.to(device)  y = y.to(device)  model = MyMnistNet().to(device)
  34. DNNの学習におけるGPUの利用 - - 39  背景  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が使用される
  35. 実習  わからなければ手を挙げてください→TAが対応します  詳しい人は他の人に積極的に教えてください  実習課題の場所:Canvasから辿る - - 40

  36. 情報工学科 准教授 杉浦孔明 Email: komei.sugiura@keio.jp Slack: 1_sugiura.komei 慶應義塾大学理工学部 機械学習基礎 第4回