簡體   English   中英

使用學習的人工神經網絡來解決輸入

[英]Using a learned Artificial Neural Network to solve inputs

我最近再次深入研究人工神經網絡,包括進化和訓練。 我有一個問題,關於用什么方法(如果有的話)來解決會導致目標輸出集的輸入。 有這個名字嗎? 我試圖尋找的所有東西都會引導我進行反向傳播,這不一定是我需要的。 在我的搜索中,我最接近表達我的問題的是

是否可以反向運行神經網絡?

這告訴我,對於具有不同層節點數的網絡,確實會有很多解決方案,並且解決這些問題並不容易。 我的想法是使用在學習過程中建立的權重朝着一組理想的輸入邁進。 有沒有其他人有做這樣的事情的經驗?

為了詳細說明:假設您有一個包含 401 個輸入節點的網絡,它表示一個 20x20 灰度圖像和一個偏差,兩個隱藏層由 100+25 個節點組成,以及 6 個表示分類(符號、羅馬數字等)的輸出節點)。 在訓練神經網絡使其能夠以可接受的誤差進行分類之后,我想向后運行網絡。 這意味着我會在輸出中輸入一個我希望看到的分類,並且網絡會想象一組會導致預期輸出的輸入。 所以對於羅馬數字的例子,這可能意味着我會要求它為符號“X”反向運行網絡,它會生成一個圖像,類似於網絡認為的“X”的樣子。 通過這種方式,我可以很好地了解它學到的用於分離分類的功能。 我覺得這對於理解 ANN 的運作方式和在事物的宏偉計划中學習非常有益。

對於簡單的前饋全連接 NN,可以通過取激活函數的倒數(例如 sigmoid 單元的 Logit)將隱藏單元激活投影到像素空間,將其除以傳入權重的總和,然后將該值乘以權重每個像素的。 這將給出由這個隱藏單元識別的平均模式的可視化。 為每個隱藏單元總結這些模式將導致平均模式,對應於這組特定的隱藏單元活動。原則上可以將相同的過程應用於將輸出激活投影到隱藏單元活動模式中。

這對於分析 NN 在圖像識別中學到的特征確實很有用。 對於更復雜的方法,您可以查看這篇論文(除了它包含 NN 可以學習的模式示例之外的所有內容)。

您不能完全反向運行 NN,因為它不會記住來自源圖像的所有信息 - 只有它學會檢測的模式。 所以網絡不能“想象一組輸入”。 但是,可以對概率分布進行采樣(將權重作為每個像素的激活概率)並產生一組可以被特定神經元識別的模式。

我知道你可以,我現在正在研究解決方案。 我有一些代碼在我github上這里的想象神經網絡的輸入進行分類的MNIST數據集的手寫數字,但我不認為這是完全正確的。 現在,我只需要一個經過訓練的網絡和我想要的輸出,然后向后乘以每一層的學習權重,直到我有一個輸入值。 這是跳過激活函數,可能還有其他一些錯誤,但我從中得到了相當合理的圖像。 例如,這是經過訓練的網絡想象 3 的結果:數字 3

是的,您可以反向運行概率神經網絡,以使其“想象”與經過訓練分類的輸出相匹配的輸入。

我強烈推薦 Geoffrey Hinton 在 NN 上的 Coursera 課程: https ://www.coursera.org/course/neuralnets

他在他的介紹視頻中演示了一個 NN 想象各種“2”,它會識別經過訓練來識別數字 0 到 9。這非常令人印象深刻!

我認為它基本上就是在做你想做的事情。

粗暴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM