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

深層学習による自然言語処理 輪読会#5 資料

深層学習による自然言語処理 輪読会#5 資料

機械学習プロフェッショナルシリーズの「深層学習による自然言語処理」の輪読会の第5回資料。

6章「汎化性能を向上させる技術」

https://learn-stats-ml.connpass.com/event/245115/

Natural Language Processing by Deep Learning
section06

F994a1fd489d95ac93ae9610734a25bc?s=128

Yoichi Tokita

April 21, 2022
Tweet

More Decks by Yoichi Tokita

Other Decks in Science

Transcript

  1. 深層学習による⾃然⾔語 処理 輪読会 #5 2022/04/21 @yoichi_t

  2. ⾃⼰紹介 • tokita(@yoichi_t) • 所属:株式会社Glia Computing (https://www.glia-computing.com/) • 2018年8⽉に設⽴(Co-Founder) •

    機械学習/データ分析のPoC、導⼊⽀援、コンサル • 過去 • 広告会社で推薦システムの開発をやっていたり、警備会社で⼈物⾏動 の研究をしてました
  3. ⾃⼰紹介 • tokita(@yoichi_t) • チョコボールの秘密を解明するために、⽇々データを収集&解析 • その他の活動はこちら チョコボール 統計

  4. 6章 汎化性能を向上させる技術 汎化誤差の分類と誤差低減に効果のある⼿法 • 6.1 汎化誤差の分解 • 近似誤差、推定誤差、最適化誤差に分類 • 6.2

    推定誤差低減に効く⼿法 • 正則化 • 6.3 最適化誤差低減に効く⼿法 • 主に勾配法に起因する誤差を低減させる⼿法 • 6.4 超パラメータ選択 • ベイズ最適化
  5. 6.1 汎化誤差の分解 • 汎化誤差(generalization error) • ⺟集団における誤差。これを⼩さくすることが⽬的 • 汎化誤差の分類 •

    近似誤差(approximation error) • モデルの表現⼒が⾜りないことによる誤差。モデルのパラメータを増やして⾃由 度を上げる。 • 推定誤差(estimation error) • 偏った事例を使ったことによる誤差。訓練データを増やす、パラメータを減らし てモデルの⾃由度の下げる。 • 最適化誤差(optimization error) • 最適化アルゴリズムによる誤差。洗練された最適化アルゴリズムを使うなど。
  6. どの誤差が⼤きいか? • 適切な性能改善を⽬指すためにどの誤差が⼤きいかを分析 (p.160, 図6.1) • 開発データでの誤差が⼤きい(過学習)→推定誤差が⼤きい • 訓練データの誤差が⼤きい •

    モデルの⾃由度を上げて誤差が低減する→近似誤差が⼤きかった • それ以外→ 最適化誤差が⼤きい • 近似誤差への対処は容易 • モデルの表現⼒を上げる • 層数を増やすと学習がそもそも難しくなるので、最適化誤差との切り分けが難し くなってくるので注意
  7. 6.2 推定誤差低減に効く⼿法 • 正則化(regularization) • 過学習(overfitting)を防ぐ⼿法。訓練データに対する誤差を低減さ せることには寄与しない。 • データに対して何らかの仮定をおくことで、汎化誤差の低減を狙う •

    ベイズ的な⼿法と関連(ベイズ推論は正則化と解釈できる) • ⾊々な仮定が考えられ、そのため多くの⼿法が提案されている • これらは排他的ではなく、複数組み合わせて使うことも普通 • e.g. CNN(ネットワーク構造の⼯夫)+L2正則化(ペナルティ項) など
  8. ネットワーク構造の選択 • 機械学習の⽬的はデータに基づいて何らかの関数を獲得する • 関数形はあらかじめ設計者が指定(ネットワーク構造など) • パラメータ(重みなど)をデータに基づいて調整する • データを表現する真の関数形が分かれば簡単 •

    最低限のパラメータを調整すればよい。無駄に⾃由度が⾼いと余計な ノイズにも最適化されてしまう。 • データに対する知識を基に仮定を置き、パラメータを制限する • CNN:画像の局所的な特徴を捉える「フィルタ」を設計(=重みの範 囲の制限と重みの共有) • 原理的には順伝播型NNでもCNNと同様の構造を獲得することは可能だが、デー タ構造から事前に重みに制約をかけることで⾃由度を減らしている(学習させた いものを学習させるように⼯夫)
  9. L2正則化(L2 regularization) • ⽬的関数にパラメータの⼤きさに対する罰則項を追加 • 𝐿 𝜃 + ! "

    𝜃 " • L2正則化の仮定 • パラメータは極端に絶対値が⼤きな値を取らない(特定の⼊⼒パター ンに特化しないように)ように、0付近に範囲を制限 • パラメータの事前分布に正規分布を仮定するとL2正則化を導出できる • 事前分布としてラプラス分布を仮定するとL1正則化が導出できる • 勾配法の更新式((6.3)式)も併せて確認
  10. 早期終了(early stopping) • 学習(パラメータ更新)の中で評価データに対して改善が⾒ら れない場合には学習を停⽌する • 訓練データに対する誤差は低減していくが評価データと乖離していく ことがある(過学習の典型、図6.3) • 早期終了の仮定

    • パラメータの初期値の周辺に動く範囲を制限 • L2正則化と同様に、パラメータが極端な値を取るのを避ける
  11. 学習率減衰(learning rate decay) • 学習の中で、評価データの性能が改善しない場合には学習率を 下げる • 早期終了のように、評価データでの性能が悪化した際にパラメータが あまり変わらないようにする •

    学習率減衰の仮定 • 評価データの誤差が増え始める直前のパラメータの周辺に動く範囲を 制限
  12. パラメータ共有(parameter sharing) • ニューラルネットの複数の要素で同じパラメータに制限する • 要素間の依存関係を表す • 特定のパターンに特化することを防ぐ • パラメータ数を減らす(⾃由度を下げる)

    • 例 • RNN:隠れ状態を計算する際の重みは位置に依らず共通(式(2.37)など) • 再帰ニューラル⾔語モデルにおいて、⼊⼒層の重み(埋め込み⾏列??)と出⼒層の 重みを共有すると汎化性能が良いとの報告がある(符号化と複合化の対称性) • CNN:特定の特徴(例えば斜め線など)に反応するフィルタを構成するために、 画像中の画素に対して共通の重みをかける
  13. パラメータ共有(parameter sharing) • パラメータ共有の仮定 • 局所的な情報の表現の仕⽅はどこでも共通であることを仮定 • マルチタスク学習の例(テキストp.168) • パラメータ結束という考え⽅も提案されている

    • 完全に同じパラメータではなく、⼆つのパラメータが近い値になるよ うな制約をかける
  14. 事前学習(pre-training) • 別の補助タスクで学習したパラメータを主タスクのニューラル ネットの⼀部として使う • パラメータを完全に固定してしまう⽅法や初期値として追加で学習さ せる⽅法などがある • 画像処理関連では、Imagenetで学習済みのVGGやResNetなど •

    NLPでは、BERT、単語埋め込みベクトル(word2vec) • 準教師あり学習(semi-supervised learning)などもこれ • 事前学習の仮定 • 補助タスクと主タスクが類似していることを仮定
  15. アンサンブル(ensemble method) • 複数のモデルを組み合わせて予測のばらつきを減らす • 単純に複数のモデルを⽤意して多数決を取るなど • 初期値が違うだけ、勾配法の途中経過を切り出して別のモデルとする、パラメー タ数を変えるなど様々な⽅法がある •

    計算量が⼤きくなることに注意 • アンサンブルの仮定 • 以下の仮定が成り⽴てば誤差のバラツキは減る • 個々のモデルがランダムな予測よりは良い • 個々のモデルの予測は独⽴である
  16. ドロップアウト(dropout) • 訓練時に状態変数の⼀部をランダムに0にする • 特定の状態変数だけを重視した学習を防ぐ • 要素間の接続が異なる⼩さい規模のネットワークをランダムに利⽤す ることに相当(図6.4)。これで特定のネットワーク構造に依存しない 学習ができると期待 •

    ドロップアウトの評価時の計算 • 確率pで各要素が0になるため、確率pをかけて期待値を計算 • ℎ(") = 𝑝ℎ("$%) • 各要素が 0, ℎ! となる複数のネットワークのアンサンブル効果があるとも解釈できる
  17. 6.3 最適化誤差低減に効く⼿法 • 最適化誤差(optimization error) • 最適化アルゴリズムによる誤差。 • 洗練された最適化アルゴリズムを使うなど。 •

    書籍で取り上げる項⽬ • 初期値設定 • 活性化関数(ReLU) • カリキュラム学習 • 正規化(batch normalization) • 確率的勾配法の拡張(Adam)
  18. 初期値設定 • 学習対象のパラメータW(NNの重み)は通常何らかの乱数に よって初期化 • 最適化誤差が初期値に強く依存 • 誤差が凸関数でないため、初期値によって様々な局所最適解に陥ってしまう • 初期化の⽅法

    • ⼀様乱数𝑈 −𝐶, 𝐶 から⽣成 • 複数のCを試して選ぶ • Xavier初期化:𝐶 = " #("#$)$#" • 状態変数の分散と勾配の分散が⼀定に保たれることを狙った⽅法 • 学習初期の勾配爆発や勾配消失が起きにくくなる効果が得られる
  19. 初期値設定 • 学習対象のパラメータW(NNの重み)は通常何らかの乱数に よって初期化 • 初期化の⽅法 • IRNN:RNNにおいて、ℎ&$% (") にかかる係数を単位⾏列に初期化する

    • ℎ%&' ()) からℎ% ())へのショートカットができることに相当 • LSTMにおける忘却ゲートのバイアスパラメータを⼤きな値にする • 忘却ゲートが1になるとショートカットと同じになる(2章) 忘却ゲート(p.35, 式(2.58)参照)
  20. 活性化関数 • 活性化関数の選択 • シグモイド関数、tanhは有界の関数 なので安定するが、微分係数が⼩さ いため勾配消失が起きやすい • ReLUが使われる •

    ReLUの派⽣がたくさん提案されている • maxoutなど(論⽂、MLPシリーズ深層 学習など参照) • NNの出⼒をK個の線形変換を通して、 その最⼤値を出⼒とする
  21. カリキュラム学習 • 簡単な概念の学習から始めて徐々に複雑な概念を学習する • 訓練データの中から簡単なデータから学習し、徐々に難しいデータの 損失関数も最⼩化させるようにスケジューリングする • NLPにおける難易度の並び替え⽅法 • 出現頻度が⾼い単語のみに⽂脈と予測対象を限定した訓練データを利

    ⽤。徐々に多様性を増していく。 • ⾼頻度の単語動詞は関係が学習しやすいという仮定 • 学習初期は短い⽂章を使う • ⻑い⽂章は学習が難しいという仮定 • 学習中のモデルの予測が簡単な訓練データを選ぶ
  22. 正規化 • バッチ正規化(batch normalization) • ミニバッチ内の隠れ状態ベクトルの要素を平均0、分散1になるように 正規化 • 各層の依存関係によって状態変数の値が⼤きく変化することが防げる。 勾配法が安定する。

    • 多層NNは層間に依存性がある。勾配法では他のパラメータにとの関係が考慮さ れないため、依存性がある場合に問題になることがある。 テキストp.178, (6.12~6.14) 普通の隠れ状態の計算 正規化(平均0、分散1) パラメータベクトルψとの線形変換みたいなもの 正規化された値に対 するベクトルなので 学習は⽐較的容易
  23. 確率的勾配法の拡張(Adam) • 勾配法の課題と拡張 • 確率的勾配降下法(SGD)は学習率をうまく設定しないと振動したり 発散してしまうことがある • 重みの更新幅(学習率)を適応的に調整することで課題に対処 • Adam

    • RMSPropとモメンタムを合わせた⼿法 • RMSProp:勾配に関する移動平均を使って学習率を調整する • モメンタム:勾配に関する移動平均を使ってパラメータを更新(移動平均なので 振動が抑えられる)
  24. 確率的勾配法の拡張(Adam) • Adam 勾配の移動平均(モメンタムに関連) 勾配の2乗の移動平均(RMSPropに関連) 初期値の影響を補正する パラメータの更新式 更新量は移動平均に依存する(振動が抑えられる) 勾配が⼩さいパラメータは更新量を⼤きく、勾配が継続して⼤ きい場合は更新量を⼩さくする(学習率を調整)

  25. 6.4 超パラメータ選択 • 超パラメータ(hyper-parameter) • 正則化の重みや学習係数などの設計者が設定するパラメータ • 超パラメータの性質で精度が⼤きく変わってくる→調整が必要 • 超パラメータ探索

    • グリッド探索(grid search) • パラメータの組み合わせを総当たりで試⾏する。現実的には計算量の問題が • ランダム探索(random search) • あらかじめ設定した範囲からランダムにパラメータを取得して試⾏ • ベイズ的最適化(Bayesian optimization) • ランダム探索をさらに効率化
  26. ベイズ的最適化 • ガウス過程を利⽤して、最適解が得られそうな探索点を効率的 にサンプルしていく • 評価結果の不確実性が⾼く、かつ、評価結果が良さそうな点を選ぶ

  27. まとめ • 「汎化誤差」を分類 • 近似誤差、推定誤差、最適化誤差 • 推定誤差、最適化誤差を低減させるためのアイディアを解説 • 推定誤差 •

    「正則化」を軸にして、複数の⼿法を紹介 • 基になる考え⽅:真の関数形が分かれば良いが⼀般には知ることはできない。そ のため、データやタスクに関する「事前知識」を⽤いてパラメータを制限する。 • 最適化誤差 • 初期化、活性化関数、学習⽅法、正規化、Optimizer • 超パラメータ探索 • パラメータの選択が性能を左右する • ランダム探索 → ベイズ的最適化