ニューラルネットワークが「学習する」とは、予測と正解のズレを手がかりに重みを少しずつ直していく作業です。G検定でも頻出の単元です。
こんにちは、zawato(@zawato7)です!
本記事はディープラーニング入門ロードマップの第11回です。
- 順伝播・逆伝播と誤差関数(損失関数)の役割
- 誤差逆伝播法が誤差を伝える向き
- 勾配降下法・学習率・局所最適解の関係
学習は「予測して答え合わせして直す」の繰り返し
ニューラルネットワークの学習とは、予測して答え合わせをし、間違えた分だけ重みを直す作業の繰り返しです。
重みとバイアス(あわせてパラメータと呼びます)は最初はランダムな値なので、最初の予測はでたらめです。そこで正解データと予測値を比べ、ズレを数値にします。このズレを計算する関数が誤差関数(損失関数)です。
入力から予測値を出すまでの流れを順伝播、誤差をもとにパラメータを更新していく流れを逆伝播と呼びます。学習とは、この往復を何度も回すことです。
誤差関数は問題の種類によって使い分けます。
| 分析の種類 | 使う誤差関数 |
|---|---|
| 回帰 | 平均二乗誤差(MSE) |
| 分類(二値・多クラス) | 交差エントロピー誤差 |
どちらも「誤差」ですから、値が小さいほど精度が良い点は共通です。この対応はそのまま問われる定番なので、セットで覚えておきましょう。
誤差逆伝播法は出力層から入力層へ誤差を伝える
誤差逆伝播法(バックプロパゲーション)は、出力層で計算した誤差を入力層へ逆向きに伝え、各パラメータの「責任の大きさ」を求める方法です。
ネットワークの中には大量の重みがあります。「どの重みが、どれくらい誤差に効いているのか」が分からなければ直せません。そこで、順伝播で行った計算をさかのぼり、後ろの層から順に責任を割り振ります。検査で不良品が出たとき、工程を後ろからたどって原因を突き止めるイメージです。
この方法が広まったことで、ディープラーニングの学習は一気に効率化しました。普及に貢献したのが、ジェフリー・ヒントンです。
勾配降下法は「霧の中の山下り」
勾配降下法は、誤差が小さくなる方向へパラメータを少しずつ動かしていく方法です。
霧の立ちこめた山で谷底を目指す場面を想像してください。全体の地形は見えませんが、足元の傾きは分かります。下っている方へ一歩進む。それを繰り返せば、いずれ谷底に近づけます。学習もこれと同じです。
- 谷底=誤差がいちばん小さい状態
- 勾配=今いる地点の傾き(どちらへ動かせば誤差が減るか)
- 学習率=一歩の大きさ
勾配が教えてくれるのは「どちらへ動かすか」までです。「どれだけ動かすか」を決めるのが学習率(ラーニングレート)で、重みはこの一歩分ずつ更新されます。
学習率の大小と、局所最適解というワナ
学習率は、大きすぎても小さすぎても学習がうまくいきません。
| 学習率 | 起きること |
|---|---|
| 大きすぎる | 一歩が大きすぎて谷を飛び越え、誤差が振動して収束しない。発散もする |
| 小さすぎる | 学習がなかなか進まず、途中のくぼみから抜け出せない |
この「途中のくぼみ」が局所最適解です。たどり着きたいのは山全体でいちばん深い谷底、つまり大域最適解ですが、足元の傾きだけを見て進むため、浅いくぼみを谷底と勘違いして止まることがあります。
まとめ
- 学習は、順伝播で予測し、誤差関数でズレを測り、逆伝播でパラメータを更新する繰り返し
- 誤差関数は、回帰なら平均二乗誤差、分類なら交差エントロピー誤差
- 勾配降下法は山下り。学習率は一歩の大きさで、大きすぎると発散、小さすぎると進まない
よくある質問
Q. 順伝播と逆伝播はどう違いますか?
A. 入力から予測値を計算していく向きが順伝播、誤差をもとに出力層から入力層へパラメータを更新していく向きが逆伝播です。
Q. 誤差関数と損失関数は別のものですか?
A. 同じものです。実務では損失関数(ロス関数)と呼ぶことが多く、G検定ではどちらの表記も出ます。
Q. 誤差逆伝播法は誤差をどの向きに伝えますか?
A. 出力層から入力層へ向かう向きです。予測を計算する順伝播と逆向きなので「逆伝播」と呼ばれます。
Q. 学習率はどう決めればよいですか?
A. 万能な値はなく、試しながら調整するのが基本です。誤差が振動するなら下げ、なかなか下がらないなら上げます。



コメント