2017-09-05 17 views
1

私は入力層が10のノードといくつかの隠れ層と1つのノードのみを持つ出力層を持つニューラルネットワークを持っています。次に、入力レイヤーにパターンを入れ、何らかの処理をした後、出力ニューロンの値を1から10までの数値で出力します。このモデルの訓練の後、出力を得ることができる、入力パターンを提供します。ニューラルネットワークを順方向に訓練し、逆方向に使用する方法

逆モデルを計算することができれば、私は出力側から(出力側を入力として)数値を入力してから、それらからランダムパターンを取得することを意味します。10ニューロン(すなわち、出力側として入力を使用する)。

私はまずパターンの難しさに基づいてネットワークを訓練するからです(入力はパターンであり、出力はパターンを理解するのが難しい)。それから、ネットワークに数字を与えて、難易度に基づいてランダムなパターンを作成したいのです。

+0

質問についてはわかりませんが、エンコーダとデコーダを探しているようです。 –

+1

使用しているフレームワークはありますか? – McLawrence

+0

実際には、単なるアイデアだったので、これを行うための数学的な方法があれば、私は考えていた。 –

答えて

2

私はあなたの問題を正しく理解することを望んでいますので、私は自分の言葉で要約します:あなたは与えられたモデルを持っており、与えられた出力をもたらす入力を決定したい。

これは間違いないと私が知っている少なくとも1つの方法があります。この方法は実装が非常に簡単ですが、値を計算するまでに時間がかかることがあります。これを行う方法はおそらくありますが、わかりません。 (私は数週間前に強化学習のテーマでこのテクニックが必要でしたが、これに比べて何も見付かりませんでした):あなたのモデルは入力を出力にマッピングすると仮定します。 と呼ぶ新しいモデルを作成する必要があります。このモデルは、モデルの逆数を計算し、特定の出力を生成する入力を与えます。構造を作成するには、Denseというレイヤーと入力と同じ次元のmを持つ新しいモデルを作成します。このレイヤーはモデルの入力に接続されます。次に、のすべての重みを訓練不可能にします(これは非常に重要です)。

これで逆の値を見つけました。出力yに対応する入力が見つかったとします(対応する意味は、出力を作成しますが、一意ではありません)。入力ベクトルvは、という単位で作成する必要があります。次に、(v, y)で構成される入出力データ・ペアを作成します。今度は、エラーがゼロに収束するまで、入力 - 出力 - トレーニングデータをネットワークに伝播させたいオプティマイザを使用します。入力がw、バイアスがb、入力がu、入力がu = w*1 + b1)の場合、実際の入力を計算すると、出力はyになります。 ) あなたは、この方程式が成り立つ理由を尋ねているかもしれませんので、私はそれに答えようとします:あなたのモデルは、入力としての統一が与えられた出力を作り出すように新しい入力層の重みを学ぼうとします。新しく追加された入力レイヤーのみが訓練可能なので、この重みだけが変更されます。したがって、このベクトルの各重みは、所望の入力ベクトルの対応する成分を表すことになる。オプティマイザを使用して、所望の出力と逆モデルの出力との間の距離を最小にすることで、最終的に重みベクトルのセットが決定され、入力ベクトルの近似値が得られます。

+0

OK、ありがとう –

関連する問題