7

N 個の入力ノードと N 個の出力ノードを備えたニューラル ネットワークがあり、その中に複数の隠れ層と反復がある可能性がありますが、最初にそれらを忘れましょう。ニューラル ネットワークの目標は、N 次元の値 X が与えられた場合に、N 次元の変数 Y* を学習することです。ニューラル ネットワークの出力が Y であるとしましょう。これは、学習後に Y* に近づくはずです。私の質問は: 出力 Y* のニューラル ネットワークの逆を取得することは可能ですか? つまり、ニューラル ネットワークに入れられたときに Y* を生成する値 X* を取得するにはどうすればよいでしょうか? (またはそれに近いもの)

問題の大部分は、N が非常に大きく、通常は 10000 または 100000 のオーダーであることですが、再発や隠れ層のない小さなネットワークでこれを解決する方法を誰かが知っていれば、すでに役立つかもしれません。ありがとうございました。

4

5 に答える 5

3

各層のノード数が同じで、重み行列が特異でなく、伝達関数が可逆 (leaky relu など) になるようにニューラル ネットワークを選択できる場合、関数は可逆になります。

この種のニューラル ネットワークは、単純に行列の乗算、バイアスの追加、および伝達関数の合成です。反転するには、各操作の逆を逆の順序で適用するだけです。つまり、出力を取得し、逆伝達関数を適用し、最後の重み行列の逆行列を乗算してバイアスを差し引き、逆伝達関数を適用し、最後から 2 番目の重み行列の逆行列を乗算し、というように続きます。前方へ。

于 2016-04-15T20:19:33.270 に答える
2

これは、オートエンコーダーで解決できる可能性があるタスクです。また、スタックしてディープ ビリーフ ネットワーク ( DBN )を形成できる制限付きボルツマン マシン ( RBM )のような生成モデルにも興味があるかもしれません。RBM は、v の再構築に使用できるデータ v の内部モデル h を構築します。DBN では、最初の層の h は 2 番目の層の v などになります。

于 2013-02-28T10:03:31.820 に答える
1

ゼンナ そうです。全単射 (可逆) 活性化関数を使用している場合は、レイヤーごとに反転し、バイアスを差し引いて疑似逆数を取ることができます (すべてのレイヤーに同じ数のニューロンがある場合、これはいくつかの穏やかな規則性条件下では正確な逆数でもあります)。条件を繰り返すには: dim(X)==dim(Y)==dim(layer_i), det(Wi) not = 0

例: Y = tanh( W2*tanh( W1*X + b1 ) + b2 ) X = W1p*( tanh^-1( W2p*(tanh^-1(Y) - b2) ) -b1 )、ここで W2pおよび W1p は、それぞれ W2 および W1 の疑似逆行列を表します。

于 2016-11-24T10:12:40.883 に答える