從下往上看--新皮層資料的讀後感 第九部分 RNN--記憶的箭頭
前面我們只是看到了神經網路的計算能力,FNN(正饋網路)在計算能力上的強大是無可置疑的。但就梳理到BP為止,它僅僅面向於傳遞函數式的計算,結合SVM.它僅僅適用於分類和擬合的相關轉化問題。但就現實中的問題而言,這遠遠不夠。回想pitts當時的結論,loop可以獲得類似memory的特性。
RNN(RecurrentNeural Networks)就是這麼一種網路,它在信息的不按照一個固定方向在神經元節點流動,可以在節點之間 構成環裝鏈路。所以它本身不是開環網路,使用更複雜的拓撲結構。下面我們來看看長啥樣。這個簡單的連接就是一個典型的RNN,信息在其間是可以反饋的。繼續看。圖丑勿怪
節點之間的連接也可以在子網路之間形成反饋。好了,至此基本的RNN結構就有了,按照正向網路的邏輯,是不是該了解它的傳遞函數了,所以試試看。一動手立即就掉坑,為毛掉坑?因為你寫不出來一個公式使得y=f(x)樣式的傳遞函數,引入這個環裝結構直接導致這個f(x)本身由之前傳入數據變化->這個傳遞函數本身是變化的。呃。。。。pitts不是說能行么。。。。
對,我們看看pitts怎麼說的。在他的論文裡面用了一個叫模數的玩意來解決這個問題,模數是什麼鬼?反正我不會,也不想學。那怎麼弄,還是耐心看一下pitts的解答過程,剛看了兩步,這不就是離散控制裡面用的法子么(想起萬惡的ZT)。聽起來高大上其實很簡單了-按照步驟來分解,什麼步驟?分割整個連續過程用事情一步步發展的眼光來考察網路,一個信號進來,如果前面的信號的都是已知的,把這個狀態鎖定起來,不就可以一步步做這個閉環結構的等效開環結構么?走一步,分一步,算一步就能搞定。所以一個RNN在一個特定的上下文時是有其等效的開環網路。但隨著每個步驟往下走它的等效開環結構和參數就會隨之改變。傳遞函數的問題我們先鎖定到這裡。下面看看環給帶來的那個memory。來看看信息在RNN中如何傳遞的。先假設節點的傳遞為複製上一節點傳入的信息這種最簡單的邏輯。

如果我們往網路中輸入序列【1,2,3】,就會看到這個序列的信息在環路中「跑圈」。這貨記住了1,2,3的序列,記憶呈現了!就一個箭頭就帶來質的變化。進一步還能發現它不僅在內容上具體的分別記住了1,2,3。還記錄了1-2-3這個具體的信息順序。(玩過Minecraft的同學,想想紅石脈衝發生器).而進一步我們可以選擇任意一個節點作為輸出,提取這個1-2-3的序列信息。改變信息的傳遞方式,就是這麼簡單又不簡單。事實上這種新的拓撲結構與生物上的神經網路的連接是一致的。皮質上的神經連接其實不是像40年代的認識,完全是「隨機」的,在皮質內是層狀構建的,而層次內的細胞又是柱狀構建的。這些特性都是來自於腦部在早期發育形成的結構特性。按照解剖的統計neocortex反饋迴路上的神經數量是正饋數量的10倍,要讓神經網路像人腦工作RNN是絕對繞不開的重要結構!在neocortex的層內局部上存在大量的環裝區域構建連接,所以不管RNN是來自於邏輯上的啟發還是解剖上通過染色法找出來的生物機制,起碼在事實結構上他們具備相似的連接拓撲。再或許「以大腦為藍圖」這條路有些許的合理。

關於這種信息"存儲"的機制是不是就是我們的記憶本身。按現在還比較普遍的說法,這兩者是有關聯的。現在的普遍認同是temporal memory就是按基於神經元「狀態」的稀疏表達得到實現。這也是為什麼對neocortex產生好奇的原因。上圖是臨時記憶在多種要素retrieval時的激活情況(Amber M. Schedlbauer2014),是按區塊來標的,不是功能區域內的稀疏表達,擺上來只是說明記憶表達結構是狀態表達。
茸然的猜測:
對於long term memory,似乎沒有普遍性的解答,Jorge Medina發現Hippocampus內的長期記憶依賴於DNA表達組合。基於這幾個前提一種「合理的推論」是這樣的,信息通過神經輸入neocortex,這些信息在neocortex層次中以「神經元狀態」的方式進行表達,信息通過這7個層次後被處理。當該信息被某種特定的方法篩選為長期記憶。這些特定的信息(長期記憶的內容)在reconsideration的過程中轉儲到Hippocampus。Hippocampus「存儲」的方式和DNA序列有關-注意:只是有關。但是不是直接信息被編碼到DNA就無法得知了。這聽起來很恐怖,如果信息本身可以修改DNA---DNA內容就不單單是來自達爾文式的篩選,它也就成了我們的硬碟,事實上DNA和皮質相比,這玩意確實有硬碟的特質。解碼速度慢,信息傳遞需要中間轉化機制,要是信息都從它來等RNA到蛋白再到電過程黃花菜都涼了,但架不住這玩意容量大---純天然的分子級信息容器。這個角度看也能看到和現代計算機結構的相似性,高速信息進內存,低速信息進硬碟。再如果這些DNA的某些編碼可以進入sperm。拉馬克式的神話就是真的了。細思恐極,不敢往下想。為毛你會猜sperm而不是egg?不是搞性別歧視,egg是在母體的母體內形成,還沒生出來就固定了,在母體的全生命周期內沒機會再編碼(猶太教按母親沿襲關係的設計還挺好,如果承認這個推論,母系才是真的血統純正,呃。。。。)。這個腦洞開的還真存在系統設計上的優越性。egg的DNA來自精確複製,維持相對穩定不產生複製偏差,sperm按照外部環境影響來引入新的因素修改部分表達,同時兼顧相對穩定和相對環境適應,有效的降低了信息干擾序列穩定性的可能。強調一下上面這段推測只是讀後感,推理內容完全毫無根據純屬臆想,只能YY。萬萬別信以為真,看官切記。
下面是我的疑問,與邏輯主線無關可不看:
----------------------------可不看------------------------
記憶的特性啟進一步的思考的問題---在信息進入環裝網路後,環裝網路會對其表示的「信息「以狀態的方式進行存儲,而這種存儲本身是信息的另外一種表達。這種重新表達的被稱為」representation「.對一我們來說,輸入的[1,2,3]和RNN網路內的1-2-3具備」相同「的信息。關聯起來SVM的kernel,kernel在這個意義上是不是也是一種representation?這些不同的表達,而對處理這種表達又有什麼樣作用和不同?EE熟悉的encoder如果不面向通訊,Encode的結果是否也是representation?如果decoder不成對的出現,這種編碼機制是否仍有其內在含義?在不丟失信息量的前提下「representation」是否有其他含義?為何基於光學表達的信息在CNN內也能呈現內容特徵?這和時域到頻域的過程是否是同一表述?無損壓縮過程也是「representation」?這是此次閱讀我需要保留在整個讀書過程中的疑問。直覺上這個問題太底層了,似乎與「信息」這個定義本身相關,估計到最後也無法找到解答,但起碼提醒自己這將是一個重要的關注點。
----------------------------*******------------------------
到此為止,形成了一個對RNN在結構和特性上的基本認知。理論是不能直接兌現的,作為工程師還得想這有什麼用.
首先,先看環路傳遞特性,環路結構天然的使得信息進入網路後信息被「序列化」存儲起來。這對語言一類的信息處理尤為有用。例如:當看到「20101」時。我們不僅關心每個獨立的數字表達,還關心數字之間的順序,順序本身也是信息的一部分,而不是2-0-1,這種形式上的組織本身描述了 2*10000+1*100+1*1這個內涵事實。語言本身也具備順序結構,單詞和單詞通過「有內涵的」排列,形成一個特定的事實描述。在開環的正向網路中,是不可能獲得這種特性的。觀察計算特性,開環網路一個輸入和輸出之間是1-1的對應關係。而環裝網路還必須考察其輸入的上文--之前有過什麼信息。
第二個特點是,我們可以從網路中「提取」一部分之前傳入的信息。在開環網路中所有的輸入在計算完成後直接被丟棄,而在RNN中,這些信息被一定程度(具體得看參數特性)存留下來。試想在一個複雜的RNN網路上,我們可以實現讓其"記住"我們說過的話。也能讓它"複述"內容。
第三個額外的驚喜是,按window查找的內容上下文表達。如果在一個系統中存入了「2010230101」這串數字,如果需要找到符合「101」這個組合的話我們可以觀察其中一個節點就獲得按「window-101」匹配的pattern的能力-局部搜索,而這種搜索構建了上下文的關聯。
第四,環裝鏈路保留順序丟掉了時間,在上面的例子中。不需要增加額外的方法,就可以還原1-2-3序列的順序。這個例子中順序的本身也丟失了誰是第一個的信息,最重要的是,它序列相關,也就是說相對時間被保留,絕對時間被抹掉了(在計算傳遞函數時抵消),所以我們真實世界的時間無法對應起來。看到過一個心理學的例子能很好作比方。例如:把你關到一個房間裡面做禁閉,這個房間裡面不能安裝任何可以計時的設備,當然你也不能數自己心跳一類的。隔一段時間放出來。此時,靠此人是無法估計外面是白天還是晚上。因此從數學上表達的「時間被丟棄」和大腦裡面是沒有「絕對時間」的概念就變得有感知上的類同了。
在這些特點的支撐下,想想就能知道RNN多麼適合處理自然語言(現代的語言基本都是序列表徵,單詞的表徵內容也是上下文的)。看到這裡coder們立即跳了出來,你丫瘋了!就這些破特性,我用個buffer就幹了,你整這些幹啥?還記得第三章von怎麼弄出來我們今天用的buffer么?如你所見,這兩個東西本質是同源的,有機會說NTM的時候再來說NTM怎麼把神經網路結合現在的內存結構上,畢竟計算機存儲器也很牛。有空誰擼擼RNN的發展史吧。下面來看幾個具體的RNN演算法,大概了解一下具體是怎麼弄的。
先說一下最簡單的RNN,我做一個單神經元的例子。首先繼續用平均方差來做objectivefunction(或者叫 cost function),MPN傳遞函數還是tan-sigmod.
普通的RNN是一個基於MPN的神經網路,但在其內部構建反饋路徑。按照前面我們設定的邏輯我們考察輸入1次,2次,3次,的例子。

發現規律了吧,每次的輸入為前一個輸出和現有的輸入進入MPN傳遞函數的計算結果。是不是第二張圖中的T1-out可以展開為第一張圖,第三張圖可以展開為第二張圖。所以我們就得到這麼一個FNN.

看基本規律是不是就出來了-每增加一個輸入,RNN開環網路就增加一個層次。如果使用歸併b(threshold)的方法將Tx-IN納入節點。就得到了一個等效的FNN.既然是FNN那就用BP+梯度來解吧。呵呵複習下鏈式求導,這個圖比前面的直觀。

方法是很不錯,但套入以後發現,問題又來了!
第一個問題是,按照這個計算出的導數來引導參數u(對應第八部分的W)在進行搜索空間的梯度移動,在不同的等效層次中(新形成的層次中的MP神經元和原來的是同一個),同一個MPN對應了多個BP產生的修正方向-如何有效的使用這些新的標定。
第二這個網路的層次結構會按照輸入的次數無限的往外伸展,(回想一下正向網路裡面的搜索空間)形成無限維度的參數搜索空間,VC維會迅速攀升。下輩子也算不完!
實際上這兩個問題問題是有解決辦法的,這就是RNN-BP或者BPTT,詳細可以看Razvan Pascanu的文章(邏輯清晰,工整,例子簡單,沒有學術味,如此好文實在沒有必要簡化他的內容)的文章。事實上對每個演算法而言,中間的工程思想是主體,數學計算只是一部分其實不理解也沒關係,沒必要覺得恐怖。好了,這裡目的是通過分析引出問題,有BP墊底具體的RNN-BP就不攤開了。
在最後我需要重新說一下FNN和RNN在相同的objectivefunction下的不同物理內涵:
1.FNN求解一個H(x),使得產生樣本的F(x)和H(x)最大化一致。它表達的是系統傳遞特性的相似性,與時間和序列無關。
2.RNN求解也是一個H(x),但表達的是在F(x)和H(x)在序列輸入輸出特性上的保持一致。在F(x)本身具備時變特性時適用。學通訊的回去瞄一眼time-varying system保證頓悟.
最後上個圖,直觀的看看這具體有什麼用--建立上下文聯繫的能力。進一步推廣到分類場景下,在這種場景下FNN/SVM就會顯得比較無從適應,「他」這個具體的輸入在不同的背景下就有了不同的輸出,如果用純粹的去上下文分類方法,整體上就無法獲得屬於「小明」還是「老王」這個具體的劃分。另一個角度看待這個問題,上圖中的RNN事實上是「讀取」了具體「老王、小明」這些既有的信息,所以這個角度上來我們使用的是隨上下文變化的時變傳輸特性,也是讀取局部記憶的問題。
RNN可以實用化使得神經網路在計算之外引入了時間序列的信息影響,把單一的傳遞過程的處理能力擴展到記憶網路的範疇內。下一節我們來看看LSTM,一種針對RNN的改進模型。基本框架已經確定,按照前幾章的內容可以總結對一個網路拓撲的應用而言核心問題就是降低參數搜索空間的複雜度(VC維度),在RNN的網路拓撲基礎上LSTM給出了一套基於邏輯的設計以有效的解決這個問題。它在邏輯單元上不刻板遵循生物原理,也給出另一條思路---在生物的框架指引下尋求符合實現能力的實現方式。
PS:Razvan的文章鏈接:http://www.jmlr.org/proceedings/papers/v28/pascanu13.pdf推薦閱讀:
※《捷德奧特曼》的背景故事是什麼?
※《螞蟻和西瓜》適合哪個年齡階段的人看?
※阿部洋一,是一個腦洞特別大的漫畫家
※仙尊Pixiv圖片下載器
※《芭比娃娃》好看嗎?
TAG:動漫 |



