G検定 › Web参考書 › 第4章

誤差逆伝播法(連鎖律、信用割当問題、勾配消失・勾配爆発)

第4章 ディープラーニングの概要 / 節 5

シラバスのキーワード: 連鎖律信用割当問題勾配消失問題勾配爆発問題

本文を読んだあと、覚えているか確認してください。

誤差逆伝播法の仕組み

ニューラルネットワークの出力は各層の関数の合成なので、誤差の各重みに対する偏微分は連鎖律(合成関数の微分は各関数の微分の積)によって「出力側の勾配 × その層の局所的な微分」として計算できます。この計算を出力層から入力層に向かって順に行うのが誤差逆伝播法で、1986年にラメルハートらによって多層ネットワークの学習法として広まりました。

信用割当問題

最終的な出力の誤差に対して「どの層のどの重みがどれだけ責任を負っているか」を決める問題です。誤差逆伝播法はニューラルネットワークにおけるこの問題の解法です。強化学習では、遅れて得られる報酬をどの行動に帰属させるかという形で現れます。

勾配消失問題と勾配爆発問題

問題 現象 主な原因 対策
勾配消失 層をさかのぼるほど勾配が0に近づき、入力に近い層が学習しない 微分が1より小さい活性化関数(シグモイド)を深く重ねる ReLU、適切な初期化、バッチ正規化、スキップ結合、LSTM
勾配爆発 勾配が指数的に大きくなり更新が発散する 重みが大きい状態で深く重ねる、RNNの長い系列 勾配クリッピング(閾値を超えたら縮める)、学習率の調整

試験で問われる観点

この節の練習問題(7問)

答えを見る前に選んでから開いてください。同じ問題は章別演習でランダム出題されます。

  1. 問1
    誤差逆伝播法の説明として、最も適切なものを選びなさい。
    1. 1出力層で求めた誤差を、微分の連鎖律を使って出力側から入力側へ順にさかのぼって各層の重みの勾配を効率よく計算する手法
    2. 2入力層で受け取った信号を、各層の重みと活性化関数を使って入力側から出力側へ順に伝えて予測値を計算する手法
    3. 3各層の重みをランダムに少しずつ変化させ、誤差が減った変化だけを採用することを繰り返して重みを最適化する手法
    4. 4出力層で求めた誤差を、各層のノード数に比例して均等に配分し、その値をそのまま重みの更新量として用いる手法
    答えと解説

    正解: 1

    ニューラルネットワークの学習では、出力の誤差に対して各層の重みがどれだけ寄与したか(信用割当問題)を求める必要があります。誤差逆伝播法は、合成関数の微分である連鎖律を用いて、誤差の勾配を出力層から入力層へ逆向きに伝えながら各重みの勾配を計算する手法で、これによって多層のネットワークを勾配降下法で学習できるようになりました。入力から出力へ信号を伝えるのは順伝播で、ランダム探索や均等割り振りは誤差逆伝播法ではありません。

  2. 問2
    深いネットワークの誤差逆伝播で起きる「勾配消失問題」と「勾配爆発問題」の説明の組み合わせとして最も適切なものを選びなさい。
    1. 1勾配消失: 出力層に近い層ほど勾配が0に近づき、出力層が学習されなくなる。勾配爆発: 入力層に近い層ほど勾配が大きくなり、入力層だけが更新される
    2. 2勾配消失: 層をさかのぼるほど勾配が0に近づき、入力側の層が学習されなくなる。勾配爆発: 勾配が層をさかのぼるごとに大きくなり、重みの更新が発散する
    3. 3勾配消失: 学習が進むにつれて訓練データの誤差が0になり、それ以上学習が進まなくなる。勾配爆発: 学習率が大きすぎて訓練データの誤差が増え続ける
    4. 4勾配消失: 勾配が層をさかのぼるごとに大きくなり、重みの更新が発散する。勾配爆発: 層をさかのぼるほど勾配が0に近づき、入力側の層が学習されなくなる
    答えと解説

    正解: 2

    誤差逆伝播では各層の微分が掛け合わされるため、1より小さい値が続くと勾配が指数的に小さくなり(勾配消失)、1より大きい値が続くと指数的に大きくなります(勾配爆発)。勾配消失にはReLUなどの活性化関数やスキップ結合、バッチ正規化、勾配爆発には勾配の大きさに上限を設ける勾配クリッピングなどが対策になります。RNNでは系列が長いほど両方の問題が起きやすく、LSTMのゲート機構が対策として生まれました。

  3. 問3
    誤差逆伝播法で、出力層の誤差から各層の重みに対する勾配を効率よく計算できる数学的な根拠として、最も適切なものを選びなさい。
    1. 1合成関数の微分は各関数の微分の積で表せるという連鎖律により、出力側から順に勾配を掛け合わせて伝えられるため
    2. 2すべての重みの組み合わせを格子状に列挙して誤差を評価し、最小となる点の周辺から差分で勾配を近似できるため
    3. 3各層の重みは互いに独立した変数として扱えるため、層ごとに最小二乗法で閉じた形の解を求めて順に代入できるため
    4. 4誤差関数が重みに関して常に線形であるため、勾配は定数となり、学習の最初に一度だけ計算すれば全体で使い回せるため
    答えと解説

    正解: 1

    ニューラルネットワークの出力は各層の関数の合成なので、誤差の各重みに対する偏微分は連鎖律によって「出力側の勾配 × その層の局所的な微分」の積として計算できます。この計算を出力層から入力層に向かって順に行うのが誤差逆伝播法です。総当たり、層ごとの独立な解法、誤差関数が線形という説明は誤りです。

  4. 問4
    多層のニューラルネットワークで、最終的な出力の誤差に対して「どの層のどの重みがどれだけ責任を負っているか」を決める問題を( )という。括弧に入る語として最も適切なものを選びなさい。
    1. 1フレーム問題
    2. 2信用割当問題
    3. 3次元の呪い
    4. 4コールドスタート問題
    答えと解説

    正解: 2

    信用割当問題は、出力の誤差(または強化学習の報酬)を、それに寄与した各要素にどう配分するかという問題です。ニューラルネットワークでは誤差逆伝播法がこの問題を解く手段になります。フレーム問題は考慮範囲を限定できない問題、次元の呪いは高次元での学習の困難さ、コールドスタート問題は推薦システムで履歴がない問題です。

  5. 問5
    深いネットワークやRNNの学習で、勾配が層をさかのぼるにつれて指数的に大きくなり、重みの更新が発散してしまう問題への対策として最も適切なものを選びなさい。
    1. 1活性化関数をReLUからシグモイド関数に戻して勾配の値を小さく抑える
    2. 2ドロップアウトの割合を高くして、更新されるパラメータを減らす
    3. 3勾配の大きさが閾値を超えたら閾値に収まるように縮める勾配クリッピングを行う
    4. 4学習率を大きくして更新幅を広げ、発散する区間を一気に通過させる
    答えと解説

    正解: 3

    勾配爆発問題への代表的な対策は勾配クリッピングで、勾配のノルムが閾値を超えた場合にスケーリングして更新の暴走を防ぎます。学習率を大きくすると発散はさらに悪化します。シグモイド関数への変更は逆に勾配消失を招きやすく、ドロップアウトの割合を高くしても勾配の大きさそのものは抑えられないため、勾配爆発の対策にはなりません。

  6. 問6
    隠れ層にシグモイド関数を使った20層のネットワークで、入力層に近い層の重みがほとんど更新されない。対策として最も適切なものを選びなさい。
    1. 1勾配クリッピングで勾配の上限を設ける
    2. 2隠れ層の活性化関数をReLU関数に替える
    3. 3同じ構成のまま層をさらに増やす
    4. 4出力層をソフトマックス関数に替える
    答えと解説

    正解: 2

    シグモイド関数は微分の最大値が0.25と小さく、深く重ねると入力側ほど勾配が0に近づく勾配消失が起きます。正の領域で勾配が1のReLU関数に替えるのが代表的な対策です。勾配クリッピングは勾配爆発の対策で、層を増やすと勾配消失は悪化し、出力層の関数を変えても隠れ層の勾配は改善しません。

  7. 問7
    誤差逆伝播法に関する記述として、不適切なものを選びなさい。
    1. 1誤差逆伝播法は、合成関数の微分である連鎖律を根拠にしている
    2. 2誤差逆伝播法は、1986年にラメルハートらによって広まった
    3. 3誤差逆伝播法は、入力層から出力層に向かって順に勾配を計算する
    4. 4信用割当問題は、強化学習では遅れて得られる報酬の帰属として現れる
    答えと解説

    正解: 3

    誤差逆伝播法は、出力層で求めた誤差の勾配を出力層から入力層に向かってさかのぼって計算する方法で、向きが逆です。連鎖律が根拠であること、1986年にラメルハートらによって広まったこと、信用割当問題が強化学習では報酬の帰属として現れることはいずれも正しい記述です。