2017-09-05 56 views
1

我有一個神經網絡,其輸入層有10個節點,一些隱藏層和一個只有1個節點的輸出層。然後我在輸入層中放置一個模式,經過一些處理後,它輸出輸出神經元中的數值,從110。在訓練之後,該模型能夠獲得輸出,並提供輸入模式。如何正向訓練神經網絡並以反向方式使用它

現在,我的問題是,如果有可能計算逆模型:這意味着,我從輸出端提供一個數字(即使用輸出端作爲輸入),然後從這些10輸入中獲得隨機模式神經元(即使用輸入作爲輸出端)。

我想這樣做是因爲我會先根據模式難度訓練網絡(輸入是模式和輸出難理解模式)。然後我想用一個數字給網絡餵食,以便根據難度創建隨機模式。

+0

我不確定你的問題,但似乎你正在尋找編碼器和解碼器。 –

+1

有沒有你正在使用的特定框架? – McLawrence

+0

不是真的,這只是一個想法,我在想是否可以有任何數學方式做這個 –

回答

2

我希望我能正確理解你的問題,所以我會用我自己的話總結一下:你有一個給定的模型,並且想要確定產生給定輸出的輸入。

假設,這是正確的,至少有一種方法我知道,你怎麼可以做到這一點。這種方式很容易實現,但可能需要一段時間來計算一個值 - 可能有更好的方法來做到這一點,但我不確定。 (幾周前我在強化學習的主題中需要這種技術,並且與此相比沒有找到更好的東西):假設您的Model 將輸入映射到輸出。我們現在必須創建一個新模型,我們將其稱爲:此模型稍後將計算模型的倒數,以便它爲您提供輸出以獲得特定輸出的輸入。要構建,我們將創建一個新模型,該模型由一個與輸入具有相同維數m的純色Dense圖層組成。現在,該層將連接到型號爲的輸入。接下來,你讓所有權重爲不可訓練(這非常重要!)。

現在我們已經設置爲找到一個反轉值:假設您想要在輸出y中找到相應的輸入(相應的意思是:它創建輸出,但不是唯一的)。您必須創建一個新的輸入向量v,這是的統一。然後創建一個由(v, y)組成的輸入輸出數據對。現在你使用任何你希望讓輸入輸出訓練數據通過你的網絡傳播的優化器,直到誤差收斂到零。一旦發生這種情況,您可以計算實際輸入,通過這樣做可以得到輸出y:假設新輸入層的權重爲w,偏差爲b,所需輸入uu = w*1 + b(其中1) 你可能會問爲什麼這個方程式成立的原因,所以讓我試着回答一下:你的模型會試着學習你新輸入層的權重,所以作爲輸入的統一將產生給定的輸出。由於只有新增的輸入圖層可以訓練,所以只有這個權重會被改變。因此,這個向量中的每個權重將表示所需輸入向量的相應分量。通過使用優化器並最小化所需輸出與我們的逆模型的輸出之間的距離,我們將最終確定一組權重,這將給您一個很好的輸入向量近似值。

+0

好的,謝謝我想起它 –