3

ウィキペディアによると、デルタルールを使用して重みを次のように調整します。

dw = alpha *(ti-yi)* g'(hj)xi

alpha =学習定数、ti-真の答え、yi-パーセプトロンの推測、g'=パーセプトロンの入力の加重和に関する活性化関数gの導関数、xi-入力の場合。

この式で私が理解できない部分は、導関数g'による乗算です。g = sign(x)(加重和の符号)とします。したがって、g'は常に0であり、dw = 0です。ただし、インターネットで見たコード例では、ライターはg'を省略し、次の式を使用しました。

dw = alpha *(ti-yi)*(hj)xi

適切な説明を読んでよかったです!

前もって感謝します。

4

1 に答える 1

4

アクティベーション関数にステップ関数を使用する場合g、勾配は常にゼロ (0 を除く) であるため、デルタ ルール (別名勾配降下法) は何もしません ( dw = 0)。これが、階段関数パーセプトロンが勾配降下でうまく機能しない理由です。:)

線形パーセプトロンの場合g'(x) = 1、 、 forがありdw = alpha * (t_i - y_i) * x_iます。

を使用するコードを見てきましたdw = alpha * (t_i - y_i) * h_j * x_i。ここで何が起こっているかをリバース エンジニアリングすることができg'(h_j) = h_jますg(x) = e^x + constant。明らかに、あなたが見つけたコードサンプルは指数活性化関数を使用しています。

これは、ニューロンの出力がオンになるように制約されていることを意味する必要があります(または、任意の有限の 、 for について(0, infinity)推測します)。これまでにこれに遭遇したことはありませんが、オンラインでいくつかの参考文献を見ています。ロジスティック活性化またはtanh活性化は、有界出力 (既知の境界を持つ分類または回帰) に対してより一般的です。(a, infinity)ag(x) = e^x + a

于 2013-01-20T20:43:30.730 に答える