33

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

ありがとう

4

3 に答える 3

31

Much of the work in the field of neuroevolution involves using neural networks with continuous inputs and outputs.

There are several common approaches:

  • One node per value
    • Linear activation functions - as others have noted, you can use non-sigmoid activation functions on output nodes if you are concerned about the limited range of sigmoid functions. However, this can cause your output to become arbitrarily large, which can cause problems during training.
    • Sigmoid activation functions - simply scaling sigmoid output (or shifting and scaling, if you want negative values) is a common approach in neuroevolution. However, it is worth making sure that your sigmoid function isn't too steep: a steep activation function means that the "useful" range of values is small, which forces network weights to be small. (This is mainly an issue with genetic algorithms, which use a fixed weight modification strategy that doesn't work well when small weights are desired.)

regular sigmoid
(source: natekohl.net)
steep sigmoid
(source: natekohl.net)

  • Multiple nodes per value - spreading a single continuous value over multiple nodes is a common strategy for representing continuous inputs. It has the benefit of providing more "features" for a network to play with, at the cost of increasing network size.
    • Binning - spread a single input over multiple nodes (e.g. RBF networks, where each node is a basis function with a different center that will be partially activated by the input). You get some of the benefits of discrete inputs without losing a smooth representation.
    • Binary representation - divide a single continuous value into 2N chunks, then feed that value into the network as a binary pattern to N nodes. This approach is compact, but kind of brittle and results in input that changes in a non-continuous manner.
于 2009-12-01T14:47:10.253 に答える
7

出力 (*) が特定の関数である必要があるというルールはありません。実際、出力を特定の形式にスケーリングまたは強制するために、通常、特定のノードに実装されている関数自体の最後にいくつかの算術演算を追加する必要があります。

全か無かの出力および/または 0.0 から 1.0 の正規化された出力を使用する利点は、処理が容易になり、オーバーフローなどの問題を回避できることです。

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

于 2009-12-01T02:01:16.253 に答える