2016-06-20 14 views
1

現在、神経回路網を使用して回帰予測を試みています。ニューラルネットワーク回帰:出力をスケーリングするか線形層を使用しますか?

しかし、NNで回帰予測を行う2つの異なる方法があると読んだので、これを処理する最も良い方法は何か分かりません。

1)一部のウェブサイト/記事では、直線的な最終レイヤーを追加することを提案しています。私の最後の層は、私が思う、次のようになり http://deeplearning4j.org/linear-regression.html

layer1 = tanh(layer0*weight1 + bias1) 

layer2 = identity(layer1*weight2+bias2) 

また、私はこのソリューションを使用するとき、私は通常、バッチ予測の平均値である予測を得ることに気づきました。そして、これは、最後から2番目の層としてtanhまたはsigmoidを使用する場合です。

2)他のいくつかのウェブサイト/記事では、出力を[-1,1]または[0,1]にスケールし、tanhまたはsigmoidを最終層として使用することを推奨しています。

これらの2つのソリューションは受け入れられますか?どちらを選ぶべきですか?

おかげで、

ポール

答えて

3

私は、我々は、出力活性化として正規化し、シグモイド関数を使用し、それらの実際の値に正規化された出力値を縮小した第二のケースを好むだろう。これは、最初のケースでは大きな値を出力するため(実際の値が大部分のケースで大きいため)、最後から2番目のレイヤーから出力レイヤーへの重み付けを大きくする必要があります。したがって、より速い収束のためには、学習速度をより大きくする必要がある。しかし、これはまた、より大きな学習率を使用しているため、以前の層の学習を発散させる可能性があります。したがって、重みが小さく、素早く学習できるように、正規化された目標値で作業することをお勧めします。つまり、第1の方法は、より学習率が高い場合にはゆっくり学習し、発散する可能性があり、一方、第2の方法は、比較的安全に使用して迅速に学習することができる。

+0

私の遅い答えに申し訳ありませんが、あなたの答えに感謝します。 出力値をスケーリングしてから、それらをスケーリングしようとしました.Sigmoidの場合は[0,1]、tanhの場合は[-1,1]です。 精度の結果の違いは信じられないほどではありませんが、スケーリングされていない値を使用すると、モデルは変わることは決してありません。 –

関連する問題