ニューラルネットワークをトレーニングして質問を追加する

ニューラルネットワークをトレーニングして質問を追加する

2 つの入力を乗算または加算するようにネットワークをトレーニングする必要がありますが、20000 回の反復後にすべてのポイントで近似がうまくいかないようです。具体的には、データセット全体でトレーニングし、最後のポイントではうまく近似しますが、最初のエンドポイントでは改善されていないようです。データを正規化して、-0.8 から 0.8 の間になるようにします。ネットワーク自体は、2 つの入力、3 つの隠しニューロン、および 1 つの出力ニューロンで構成されています。また、ネットワークの学習率を 0.25 に設定し、学習関数として tanh(x) を使用します。

データセットの最後にトレーニングされたポイントについては、非常にうまく近似しますが、最初のポイントについてはうまく近似できないようです。うまく調整できないのは、使用しているトポロジーなのか、それとも他の何かなのか、疑問に思います。

また、このネットワークの隠れ層にはいくつのニューロンが適切でしょうか?

ベストアンサー1

重み={1,1}、バイアス=0、線形活性化関数を持つ単一のニューロンで構成されるネットワークが、2つの入力数値の加算を実行します。

乗算は難しくなる場合があります。ネットが使用できる 2 つのアプローチを次に示します。

  1. 数字の 1 つを数字 (たとえば、2 進数) に変換し、小学校でやったように掛け算を実行します。a*b = a*(b0*2^0 + b1*2^1 + ... + bk*2^k) = a*b0*2^0 + a*b1*2^1 + ... + a*bk*2^kこのアプローチは単純ですが、入力の長さ (対数) に比例した可変数のニューロンが必要ですb
  2. 入力の対数を取り、それらを加算して結果を累乗します。a*b = exp(ln(a) + ln(b))このネットワークは、対数と指数を十分に近似できる限り、任意の長さの数値で動作できます。

おすすめ記事