逆伝播アルゴリズム
バックプロパゲーションは、多層パーセプトロン (人工ニューラル ネットワーク) をトレーニングするために使用される教師あり学習アルゴリズムです。
OK、なぜバックプロパゲーションが必要なのでしょうか?
ニューラル ネットワークを設計するときは、まず、ランダムな値または任意の変数で重みを初期化します。明らかに、私たちは超人ではないので、選択した重みが正しいか、モデルに最適であるかは保証できません。じゃ、いいよ!最初にいくつかの重み値を選択しましたが、モデルの出力が実際の出力と大きく異なる、つまり誤差値が大きいことがわかりました。
さて、この誤差値を減らすにはどうすればよいでしょうか?
基本的に、私たちがしなければならないことは、誤差が最小限になるようにモデルのパラメーターを変更し続けることだけです。言い換えれば、モデルをトレーニングする必要があります。より具体的に言うと、モデルを逆伝播する必要があります。
以下のグラフを確認してください。
上の図は、バックプロパゲーションのステップを要約したものです。
1. 計算誤差 – モデルの出力と実際の出力の差。
2. エラーを最小限に抑える – エラーが最小限に抑えられていることを確認します。
3. パラメータ (モデルの重み) を更新します。
次に、誤差が最小になるまで誤差を再度計算します。
モデルの誤差が最小限になったら、モデルの準備は完了です。
バックプロパゲーションが必要な理由、またはモデルをトレーニングする理由とそのポイントはわかったので、バックプロパゲーションが実際に何であるかを見てみましょう。
バックプロパゲーションとは何ですか?
バックプロパゲーション アルゴリズムは、インクリメンタル ルールまたは勾配降下法と呼ばれる手法を使用して重み空間内の誤差関数の最小値を見つけ、誤差関数を最小化する重みが機械学習問題の最終的な解決策であるとみなします。
例えば:
ラベル付きのデータセットがあるとします。
現在のモデルの重み値が 3 の場合、出力は次のようになります。
実際の出力と理想的な出力の間の誤差値は次のように計算できます。
では、W を 4 に変更するとどうなるでしょうか?
Wを大きくすると誤差も大きくなることはわかりますので、Wを大きくすることに積極的な意味はありませんが、Wを小さくするとどうなるでしょうか?
さて、私たちがやったことは次のとおりです。
1. まずランダムな値を「W」に初期化し、次に前方に伝播します。
2. その後、いくつかの間違いに気づきました。この誤差を減らすために、逆伝播して「W」の値を増やします。
3. その後、誤差が増加していることにも気づきました。「W」値を増やすことができないことはわかっています。そこで、再度逆伝播して「W」値を減らし、今度は誤差が減少します。
したがって、誤差が最小限になるように重みの値を取得しようとします。基本的に、重み値を増やす必要があるか減らす必要があるかを判断する必要があります。これがわかったら、誤差が最小限になるまでその方向で重み値を更新し続けます。重みがさらに更新されると、誤差が増加する場合があります。この時点で停止する必要があります。これが最終的な重量値になります。
下の写真を見てください。
達成する必要があるのは、バックプロパゲーション アルゴリズムである「グローバル損失最小値」です。その背後にある数学的原理を見てみましょう。
逆伝播アルゴリズムはどのように機能するのでしょうか?
以下のニューラル ネットワークを見てください。
上記のニューラル ネットワークには次の点が含まれています。
2 つの入力ユニット、2 つの隠れユニット、2 つの出力ユニット、および 2 つのバイアス ユニット。
バックプロパゲーションに含まれる手順は次のとおりです。
ステップ 1: 順伝播。
ステップ 2: バックプロパゲーション。
ステップ 3: すべての値をまとめて、更新された重量値を計算します。
ステップ 1 順伝播
まず、フォワードパスを開始しましょう。
隠れ層ニューロンの出力を入力として使用し、出力層ニューロンでこのプロセスを繰り返します。
次に、エラーのケースを見てみましょう。
ステップ 2 バックプロパゲーション
さて、逆伝播をしてみましょう。このように、重みとバイアスの値を変化させて誤差を減らしてみます。
W5 を考慮して、重量 W5 の誤差変化の変化率を計算します。
逆伝播を行っているため、最初に行う必要があるのは、次のように、out o1 と out o2 の合計誤差 Etotal の変化率 (偏導関数) を計算することです。
次に、さらに遡って伝播し、正味 o1 (または正味 o2) に対する出力出力 o1 (または出力 o2) の変化率を計算します。
同様に、W5 の純 o1 の変化率を計算します。
ステップ 3 新しい重量値を計算します。
それでは、すべての値をまとめてみましょう。
次に、以前に学習した勾配降下法アルゴリズムの計算式を使用して W5 を更新しましょう。
同様に、まったく同じ方法を使用して他の重み値を更新できます。その後、再度転送して出力を計算し、誤差を計算します。誤差が最小値に達した場合は停止します。それ以外の場合は逆伝播を継続して更新します。重み。
最後に、バックプロパゲーション アルゴリズムをより明確に記述する疑似コードを作成します。
initialize network weights (often small random values)
do
forEach training example named ex
prediction = neural-net-output(network, ex) // forward pass
actual = teacher-output(ex)
compute error (prediction - actual) at the output units
compute {displaystyle Delta w_{h}} for all weights from hidden layer to output layer // backward pass
compute {displaystyle Delta w_{i}} for all weights from input layer to hidden layer // backward pass continued
update network weights // input layer not modified by error estimate
until all examples classified correctly or another stopping criterion satisfied
return the network