2013-02-28 101 views
4

我有一個神經網絡,有N個輸入節點和N個輸出節點,並且可能有多個隱藏層和復現,但是我們先忘了它們。神經網絡的目標是在給定N維值X的情況下學習N維變量Y *。假設神經網絡的輸出是Y,在學習後應該接近Y *。我的問題是:是否有可能得到輸出Y *的神經網絡的逆?也就是說,如何得到放入神經網絡時產生Y *的值X *? (或接近它的東西)神經網絡的局部反轉

問題的一個主要部分是N非常大,一般爲10000或100000的數量級,但如果有人知道如何解決這個問題,對於沒有重複或隱藏層的小型網絡這可能已經有所幫助。謝謝。

回答

1

這是一個可以用autoencoders解決的任務。您也可能對生成模型感興趣,如限制玻爾茲曼機器(RBMs),可以堆疊形成深信仰網絡(DBNs)。 RBM建立數據v的內部模型h,可以用來重建v。在DBN中,第一層的h將是第二層的v,依此類推。

2

如果您可以選擇神經網絡,使得每層中的節點數量相同,並且權重矩陣是非奇異的,並且傳遞函數是可逆的(例如泄漏relu),那麼函數將是可逆的。

這種神經網絡只是一個矩陣乘法,加偏置和傳遞函數的組合。要倒置,你只需要按相反的順序應用每個操作的倒數。即取出輸出,應用逆傳遞函數,將其乘以最後一個權重矩陣的倒數,減去偏差,應用逆傳遞函數,將其乘以倒數第二個權重矩陣,等等等等。

0

zenna是對的。 如果您使用的是雙射(可逆)激活函數,您可以逐層反轉,減去偏差並進行僞逆(如果每層有相同數量的神經元,在一些溫和的規律性條件下,這也是精確的倒數) 。 要重複的條件:暗(X)==暗淡(Y)==暗淡(layer_i),DET(無線)不等於0

一個例子: Y =的tanh(W2 *的tanh(W1 * X + (W2p *(tanh^-1(Y)-b2))-b1),其中W2p和W1p分別表示W2和W1的僞逆矩陣。

+0

你有關於這種方法的數值穩定性的細節嗎?在我看來,它可能會出現可怕的錯誤。 – 2017-01-31 04:11:25

+0

是的,它可以,例如如果| W2p *(tanh^-1(Y) - b2)|> 1,函數參數將超出tanh^-1(\ cdot)域。 – 2017-01-31 12:30:55

0

以下paper是一個案例研究,反演從神經網絡學到的功能。這是一個來自行業的案例研究,對於理解如何解決問題來說是一個好的開始。