第22話 バックプロパゲーションの理解に必要な知識 -勾配降下法- 概要編
今回はニューラルネットワークの学習アルゴリズム"バックプロパゲーション"に必要な5つの知識のうち、3つ目の勾配降下法を学習します。
<バックプロパゲーションの理解に必要な5要素>
1 訓練データとテストデータ
2 損失関数
3 勾配降下法 ←イマココ
4 最適化アルゴリズム
5 バッチサイズ
具体的な内容は次のとおりです。ニューラルネットワークが学習するときどういう処理がされているかの概要がわかってくるかと思います。
・勾配降下法の概要
・バックプロパゲーションにおける勾配降下法
・勾配の求め方の概要
それでは学習をはじめましょう。
(教科書「はじめてのディープラーニング」我妻幸長著)
勾配降下法の概要
y(x_1, x_2, …, x_k, …)というような多変数関数に対して、あるパラメータx_kについての勾配を求めて、この勾配に基づいてyを最適化するようパラメータを調整するアルゴリズムを勾配法といいます。
勾配降下法は勾配法のひとつで、yを最小値に向かって降下するようにx_kを変化させるものです。
イメージはこんな感じです。
バックプロパゲーションにおける勾配降下法
おさらいですが、バックプロパゲーションは次のような手順で行われました。
Step1 損失関数により誤差を算出、誤差をNNの下流から上流へ逆伝播。
Step2 逆伝播する際、各層の重みとバイアスの修正量を決定。
Step3 すべてのニューロンの重みとバイアスを更新。
Step4 Step1〜Step3を繰返す。
勾配降下法はStep2のときに、誤差が小さくなるような重み/バイアスを決めるために使用されます。
このようなイメージです。
全ニューロンのバイアスと重みについて、この曲線を降下するようにバイアス/重みを変化させていけば、だんだんとネットワークの誤差を小さくすることができます。
そのバイアス/重みの変化量は、曲線の勾配によって決まります。
このために、すべての重みとバイアスに対する誤差の勾配を求める必要があります。
また、上の図では誤差Eの曲線を描いてありますが、実際は誤差の曲線の形状はわかりません。
次の図のように局所的な最小値(局所最適解)に囚われて、全体の最小値(大域最適解)に到達できない場合もあります。
(局所最適解を避ける方法は別途学ぶようです。)
勾配降下法による重みとバイアスの更新は、偏微分を用いて次のように表すことができます。
新たに「学習係数」という定数が登場することにより、右辺第2項は重み/バイアスの変化量を表すことができました。
学習係数とは、学習速度を決める定数で0.1や0.01などの小さい値にすることが多いようですが次のようなクセがあります。
学習係数が小さすぎると…
・学習に時間がかかる。
・局所最適解に囚われやすい。
学習係数が大きすぎるとも…
・誤差が収束しにくくなる。
この性質のため、効率よく大域最適解に到達するには学習係数を適切に設定する必要があるようです。厄介ですね。
なお、これらの式は最適化アルゴリズムの種類によって多少変形する場合があります。
勾配の求め方の概要
先ほどの重みとバイアスを更新する式には、右辺第2項に曲線の勾配を含んでいました。
したがって曲線の勾配の求め方がわかれば、重みとバイアスの更新が可能になります。
それでは曲線の勾配は一体どうやって求めるのか、その概要を説明します。
入力層、中間層、出力層の3層ネットワークで考えます。
いったん順伝播の流れについておさらいします。
【順伝播】
入力層は中間層に値をそのまま渡す。
→中間層は前の層からの信号で演算して、その出力を次の層(次の中間層か出力層)に送る。
→中間層からの信号で演算して結果を出力する。
このようなイメージです。
これに対して逆伝播は次のようになります。
【逆伝播】
出力と正解値から損失関数を用いて誤差を算出する。
→誤差から出力層の重みとバイアスの勾配を求める。
→誤差から出力層の入力の勾配を求める。
→出力層の入力の勾配を中間層に伝播させる。
→これをもとに中間層の重み、バイアス、入力の勾配を求める。
同じようにイメージを示すとこのようになります。
この図では中間層が1つですが、中間層が複数ある場合は、今の中間層の入力勾配をその一つ上流の中間層に伝播させます。あとは同じように重み、バイアス、入力のそれぞれの勾配を算出します。
このような感じで重みとバイアスの勾配は、誤差と各層の入力勾配から求めていきます。
勾配の具体的な求め方は長くなるので次回にすることとします。
まとめに入ります。
今回は、勾配降下法、バックプロパゲーションにおける勾配降下法とその勾配の求め方の概要について学習しました。
ニューラルネットワークの学習を進めるためには、勾配降下法というアルゴリズムに基づいて各ニューロンの重みとバイアスの勾配を求める必要があることがわかりました。
次回は勾配降下法で使用する勾配の求め方について学習します。
それではまた(^_^)ノシ
よろしければサポートお願いします!いただいたサポートは書籍代等に活用いたします!