バックプロパゲーションで前のレイヤーの重みを更新する

アナヴ

単純なニューラルネットワークを作成しようとしていますが、2つのレイヤーの最初のレイヤーで重みを更新することに固執しています。私がw2に対して行っている最初の更新は、バックプロパゲーションアルゴリズムから学んだこととして正しいと思います。今のところバイアスは含まれていません。しかし、最初のレイヤーの重みをどのように更新するかは、私が行き詰まっているところです。

import numpy as np
np.random.seed(10)

def sigmoid(x):
    return 1.0/(1+ np.exp(-x))

def sigmoid_derivative(x):
    return x * (1.0 - x)

def cost_function(output, y):
    return (output - y) ** 2

x = 2
y = 4

w1 = np.random.rand()
w2 = np.random.rand()

h = sigmoid(w1 * x)
o = sigmoid(h * w2)

cost_function_output = cost_function(o, y)

prev_w2 = w2

w2 -= 0.5 * 2 * cost_function_output * h * sigmoid_derivative(o) # 0.5 being learning rate

w1 -= 0 # What do you update this to?

print(cost_function_output)
ハリライ

私はあなたの質問にコメントすることができないので、ここに書いてください。まず、sigmoid_derivative関数が間違っています。の導関数sigmoid(x*y) w.r.t x is = sigmoid(x*y)*(1-sigmoid(x*y))*y

編集:(不要なテキストを削除)

dW1とdW2が必要です(これらはそれぞれdJ/dW1dJ/dW(偏導関数)です。

J = (o - y)^2 したがって、 dJ/do = 2*(o - y)

さて、dW2

dJ/dW2 = dJ/do * do/dW2 (chain rule)
dJ/dW2 = (2*(o - y)) * (o*(1 - o)*h)
dW2 (equals above equation)
W2 -= learning_rate*dW2

さて、dW1の場合

dJ/dh = dJ/do * do/dh = (2*(o - y)) * (o*(1 - o)*W2  
dJ/dW1 = dJ/dh * dh/dW1 = ((2*(o - y)) * (o*(1 - o)*W2)) * (h*(1- h)*x)  
dW1 (equals above equation)
W1 -= learning_rate*dW2

PS:計算グラフを作成してみてください。導関数を見つけるのが、はるかに簡単になります。(これがわからない場合は、オンラインで読んでください)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ケラスのバックプロパゲーションでレイヤーをスキップする

分類Dev

バックプロパゲーションフェーズ中に最後の数レイヤーをスキップすることは可能ですか?

分類Dev

ニューラルネットワークでは、バイアス項の重みはバックプロパゲーションで更新されますか?

分類Dev

バックプロパゲーションアルゴリズムで重みを更新する

分類Dev

pytorchでのバックプロパゲーション中にカスタムレイヤーパラメーターを自動更新

分類Dev

このバックプロパゲーションの実装が重みを正しくトレーニングできないのはなぜですか?

分類Dev

重みを更新せずにバックプロパゲーション(DCGAN)

分類Dev

ネットワークの重みのコピーを作成すると、バックプロパゲーション後に自動的に更新されるのはなぜPytorchにあるのですか?

分類Dev

Magentoでのみ静的ブロックを使用する場合のレイヤードナビゲーションの削除/非表示

分類Dev

予測に対するニューラルネットワークのバックプロパゲーションの重み変更の影響

分類Dev

MichaelNielsenのバックプロパゲーションコードを理解する

分類Dev

Tensorflowは、バックプロパゲーション中に線形重みを更新しません

分類Dev

バックプロパゲーション以外のニューラルネットワークをトレーニングする方法が必要です

分類Dev

Numpyを使用した畳み込み層でのバックプロパゲーションの実装

分類Dev

カスタムLambdaレイヤーはKerasのバックプロパゲーションに含まれますか

分類Dev

keras:畳み込みレイヤーの重みをブロックする方法

分類Dev

バックプロパゲーションを使用するときにシグモイド関数を使用する必要があるのはなぜですか?

分類Dev

勢いのあるバックプロパゲーション

分類Dev

ニューラルネットワークのバックプロパゲーションでシータを「展開」するのはなぜですか?

分類Dev

ケラスの特定のレイヤーを介してグラデーションバックプロップを停止する

分類Dev

ブーストラップナビゲーションバーの折りたたみブレークポイントを変更する

分類Dev

バックプロパゲーションのバグ

分類Dev

Xubuntu 18.10 の PC ゲームパッドでバイブレーションを有効にする方法

分類Dev

フュージョンテーブルレイヤーのキャッシュをバイパスする

分類Dev

ナビゲーションバーの光沢のあるレイアウトでブーストラップフッタークラスを使用する

分類Dev

バックプロパゲーションの直感

分類Dev

バックプロパゲーションの明確化

分類Dev

返す前に、クエリでリレーションシップのプロパティの値をフィルタリングする

分類Dev

ゲームのプレイ中にChromeYoutubeをバックグラウンドで再生すると、数分後にYoutubeプレーヤーが壊れます

Related 関連記事

  1. 1

    ケラスのバックプロパゲーションでレイヤーをスキップする

  2. 2

    バックプロパゲーションフェーズ中に最後の数レイヤーをスキップすることは可能ですか?

  3. 3

    ニューラルネットワークでは、バイアス項の重みはバックプロパゲーションで更新されますか?

  4. 4

    バックプロパゲーションアルゴリズムで重みを更新する

  5. 5

    pytorchでのバックプロパゲーション中にカスタムレイヤーパラメーターを自動更新

  6. 6

    このバックプロパゲーションの実装が重みを正しくトレーニングできないのはなぜですか?

  7. 7

    重みを更新せずにバックプロパゲーション(DCGAN)

  8. 8

    ネットワークの重みのコピーを作成すると、バックプロパゲーション後に自動的に更新されるのはなぜPytorchにあるのですか?

  9. 9

    Magentoでのみ静的ブロックを使用する場合のレイヤードナビゲーションの削除/非表示

  10. 10

    予測に対するニューラルネットワークのバックプロパゲーションの重み変更の影響

  11. 11

    MichaelNielsenのバックプロパゲーションコードを理解する

  12. 12

    Tensorflowは、バックプロパゲーション中に線形重みを更新しません

  13. 13

    バックプロパゲーション以外のニューラルネットワークをトレーニングする方法が必要です

  14. 14

    Numpyを使用した畳み込み層でのバックプロパゲーションの実装

  15. 15

    カスタムLambdaレイヤーはKerasのバックプロパゲーションに含まれますか

  16. 16

    keras:畳み込みレイヤーの重みをブロックする方法

  17. 17

    バックプロパゲーションを使用するときにシグモイド関数を使用する必要があるのはなぜですか?

  18. 18

    勢いのあるバックプロパゲーション

  19. 19

    ニューラルネットワークのバックプロパゲーションでシータを「展開」するのはなぜですか?

  20. 20

    ケラスの特定のレイヤーを介してグラデーションバックプロップを停止する

  21. 21

    ブーストラップナビゲーションバーの折りたたみブレークポイントを変更する

  22. 22

    バックプロパゲーションのバグ

  23. 23

    Xubuntu 18.10 の PC ゲームパッドでバイブレーションを有効にする方法

  24. 24

    フュージョンテーブルレイヤーのキャッシュをバイパスする

  25. 25

    ナビゲーションバーの光沢のあるレイアウトでブーストラップフッタークラスを使用する

  26. 26

    バックプロパゲーションの直感

  27. 27

    バックプロパゲーションの明確化

  28. 28

    返す前に、クエリでリレーションシップのプロパティの値をフィルタリングする

  29. 29

    ゲームのプレイ中にChromeYoutubeをバックグラウンドで再生すると、数分後にYoutubeプレーヤーが壊れます

ホットタグ

アーカイブ