2016-05-30 3 views
1

ただ、ニューラルネットワークが乗算関数(回帰タスク)に近似できるかどうかをテストしたかっただけです。 私はAzure Machine Learning Studioを使用しています。私は6500サンプル、1隠れたレイヤー (私は隠れたレイヤー当たり5/30/100ニューロンをテストしました)、正規化はありません。デフォルトのパラメータは Learning rate - 0.005, Number of learning iterations - 200, The initial learning weigh - 0.1, The momentum - 0 [description]です。私は0に近い非常に悪い精度を得ました。 同時に増強された意思決定森林回帰は非常に良い近似を示します。隠れ層が1つのニューラルネットワークで簡単な乗算関数を近似できない

私は間違っていますか?この作業はNNにとって非常に簡単です。

答えて

1

大きな乗算関数勾配は、おそらくほぼすべての隠れノードがゼロ勾配を持つ恐ろしい状態になります。 2つのアプローチを使用できます。

1)定数で除算します。私たちは学習の前にすべてを捨て、後に繁殖しています。

2)ログの正規化を行います。これは、さらに乗算を行います:

m = x*y => ln(m) = ln(x) + ln(y). 
2

チェックするためにいくつかの点:

  1. あなたの出力層は線形活性化関数を持つ必要があります。 S字状の場合は、範囲外の値を表すことはできません(例えば-1から1)
  2. 回帰に適切な損失関数を使用する必要があります(二乗誤差など)
  3. 隠れ層がS字状あなたがそれらを飽和させていないことを確認してください。乗法は、任意に小さい/大きい値で動作します。また、入力として大きな数を渡すと、飽和状態になり、情報が失われます。 ReLUsを使用している場合は、すべての例で0になっていないことを確認してください(任意の例では、一般的に活性化は疎です)。
  4. トレーニング手順が意図したとおりに機能していることを確認してください。トレーニング中に時間の経過と共に誤差をプロットします。どのように見えるのですか?あなたの勾配はうまく動いているのですか、それとも爆発していますか? 1つの問題の原因は、学習率が高すぎる(不安定な誤差、爆発の勾配)または低すぎる(非常に遅い進行、誤差は十分に速く低下しない)ことがあります。
関連する問題