2009-12-01 11 views
19

ニューラルネットワークは、離散的なものではなく連続した値の範囲を受け入れて出力するように、どうすれば設定できますか? 数年前にニューラルネットワーククラスをやっていたことを思い出してみましょう。活性化関数は0と1の間の値をとるシグモイドになります。私のニューラルネットワークで実数スカラーを得るには、行う?私は0と10の間の値を望むならば、その値に10を掛けることができると思ったでしょうか?負の値がある場合はどうなりますか?これは人が通常やっていることなのですか他の方法ですか?入力はどうですか?ニューラルネットワークでの連続出力

おかげ

答えて

26

neuroevolutionの分野の多くの研究では、入力と出力が連続したニューラルネットワークを使用しています。

は、いくつかの一般的なアプローチがあります。

  • 1つのノード値ごと
    • リニア活性化関数 - 他の人が指摘しているとして、あなたは出力ノードの場合には非シグモイド活性化関数を使用することができますシグモイド関数の範囲が限定されていることに心配しています。ただし、これにより出力が任意に大きくなり、トレーニング中に問題が発生する可能性があります。
    • シグモイドアクティベーション関数 - 単純にシグモイド出力をスケーリングする(または負の値が必要な場合はシフトおよびスケーリング)ことは、神経進化における一般的なアプローチです。ただし、シグモイド関数が急峻でないことを確認する価値があります。急峻な活性化関数は、値の「有用な」範囲が小さく、ネットワークの重みを小さくすることを意味します。 (これは主に、遺伝的アルゴリズムの問​​題であり、小さな重みが必要な場合にはうまく機能しない固定重量変更戦略を使用しています。値当たり)

regular sigmoid http://natekohl.net/media/sigmoid-reg.gifsteep sigmoid http://natekohl.net/media/sigmoid-steep.gif

  • 複数のノード - 複数のノード上に単一の連続した値を拡散連続入力を表現するための一般的な戦略です。ネットワークサイズを増やすことを犠牲にして、ネットワークが再生するためのより多くの「機能」を提供するという利点があります。
    • ビニングは、 - 複数のノード(例えばRBF networks、各ノードは、部分的に入力することによって活性化される異なる中心と基底関数である)上に単一の入力を広げます。円滑な表現を失うことなく、離散入力の利点をいくつか得ることができます。
    • バイナリ表現 - 単一の連続値を2つのNチャンクに分割し、その値をNノードのバイナリパターンとしてネットワークに送ります。このアプローチはコンパクトですが、脆く、入力が不連続に変化します。
6

任意の特定の機能する出力(*)が必要ですルールはありません。実際には、を追加する必要があります。特定のノードに実装された関数の最後にいくつかの算術演算を追加して、出力を特定の形式に拡大縮小したり強要したりする必要があります。

オール・オア・ナッシングの出力や0.0〜1.0の正規化された出力を扱うことの利点は、処理が簡単になり、オーバーフローなどの問題も回避できることです。

(*)「出力」は、ネットワーク内の特定のノード(ニューロン)またはネットワーク全体の出力として理解できます。
Mark Besseyに示されているように、[ネットワーク全体への]入力と[ネットワークの]出力は、通常、フィルタリング/変換を受けます。この応答とMarkのコメントで示唆されているように、ネットワークの「隠れた」層に正規化/標準ノードを持ち、入力および/または出力のために必要な正規化/変換/離散化を適用することが望ましい場合がありますネットワーク;しかし、このような練習は、一般にニューラルネットワークの不可欠な要件ではなく、実用性の問題でしかない。

3

通常、入力と出力の両方にフィルタリング(レベル変換など)を行う必要があります。明らかに、入力をフィルタリングすると内部状態が変化するため、訓練しようとしている信号を失わないように考慮する必要があります。

+0

そして、私は、誰かがそれを言及します確信しているから - あなたは* *もちろんの入力または出力上の任意の変換を、行う必要がないようにネットワークを定義することができます。しかし、一般的なノードを持ち、明示的にフィルタリングするほうが簡単です。 –

関連する問題