想挑戰馮·諾依曼,就必須從三個要素入手:基本操作,例如加減乘除;邏輯流程控制,例如if-else-then,for,while;設存儲器,內存和硬盤的尋址。DeepMind團隊認為,馮·諾依曼體系中的邏輯流程控制和外設存儲器使用,都必須在程序中寫死,而不能通過觀察范例,自動生成程序。
2016年10月27日 “Nature” 期刊第538卷,發表了Google旗下的DeepMind團隊寫的人工智能的論文,題目是 “Hybrid computing using a neural network with dynamic external memory” [1],用配置了動態外部存儲的神經網絡,實現雜交計算。這篇論文介紹了Differentiable Neural Computer的實現細節。
DeepMind團隊在倫敦工作,2014年被Google收購。DeepMind開發的AlphaGo,2016年年初戰勝了圍棋高手李世乭。
早在2014年12月,DeepMind團隊發表了一篇論文,“Neural Turing Machines” [2]。后來,他們對Neural Turing Machines (NTM)的存儲管理方式做了改進,命名為Differentiable Neural Computer(DNC)。Differentiable是可訓練的意思,尤其是可以用gradient descent的算法來訓練。
馮·諾依曼體系
當今世界,所有計算機的體系,都源自于馮·諾依曼于1945年設計的體系,馮·諾依曼體系有三大要素:
基本操作,例如加減乘除。
邏輯流程控制,例如if-else-then,for,while。
外設存儲器,內存和硬盤的尋址。
想挑戰馮·諾依曼,就必須從這三個要素入手。DeepMind團隊認為,馮·諾依曼體系中的邏輯流程控制和外設存儲器使用,都必須在程序中寫死,而不能通過觀察范例,自動生成程序。
如果把程序理解為把輸入x轉換為輸出y的函數f(),y = f(x),那么neural network就是模擬任何函數的通用模型f^()。
但是早期的neural network有兩個軟肋:
不能實現variable binding,也就是說,f() 的內部參數,不能隨著輸入x的不同而改變。
不能實現variable-length structure,也就是說,輸入x和輸出y的維度都是定長的,不能改變。
早期neural network的這兩個軟肋,都不難修補。譬如循環神經網絡Recurrent Neural Network(RNN),就解決了這兩個問題。換而言之,RNN是Turing-complete的,可以用來模擬任何函數,當然也可以模擬任何程序的功能。
既然馮·諾依曼體系的三大要素中的兩個,基本操作和邏輯流程控制,都能夠被RNN模擬,假如RNN也能夠解決存儲管理的問題,那么整個馮·諾依曼體系,就都能夠被RNN來實現了。所以 Differentiable Neural Computer (DNC)的工作重點,在于存儲管理。
[3] 深入淺出地解釋了用RNN來管理存儲的原理。建議先讀 [3],再讀 [2],最后讀 [1]。需要特別注意的,個人體會有幾個方面,1. 存儲的設置,2. 尋址機制,3. 需要訓練哪些參數,4. 如何把DNC應用到Graph操作中。
存儲的設置
[3] 把NTM/DNC的存儲設置解釋為the memory is an array of vectors,也就是一個矩陣,每一行就是一個vector,每行的vector的長度一致,所有行集結起來就是array。在文中的例子中,[3] 把memory簡化為an array of scalar, 也就是N行單列的矩陣,每一行只存儲一個數值。
什么時候需要存儲向量呢?如果存儲里存放的是圖像,那么每個存儲單元上存儲的是一個像素(r,g,b),像素就是一個向量,三個bytes組成的向量。
但是如果需要存儲的是一篇文章,每個存儲單元上需要存儲一個詞,而每個詞的長度不同,怎么辦?三篇文章都沒有說,但是簡單的辦法有二。
每個存儲單元上,預留足夠長的vector,遇到很短的詞,空著的byte就全部填0。
把每個詞,無論長短,都轉換為詞向量,詞向量的長度定長。第二個辦法就是其它論文中說的encoding的辦法。
另外要注意的是,存儲矩陣的行數可能很多。想象一下,把一部長篇小說存放到存儲矩陣里,每個詞都占用一行,需要占用存儲矩陣的多少行。
尋址機制
DNC改進了NTM的尋址機制。NTM的尋址機制是content-based和location-based的混搭。為什么需要改進呢?原因有三。
NTM不能保障多個存儲單元之間,不相互重疊,不相互干擾。dynamic memory allocation: allocate a free space
NTM不能釋放存儲單元,如果處理很長的序列時,譬如處理一部超長的長篇小說,搞不好所有存儲都會被占滿,導致系統崩潰。dynamic memory allocation: free gates
如果連續做幾個讀寫操作,它們所使用的存儲單元的位置,最好是相鄰的。但是在NTM中,一旦某個讀寫操作,遠遠跳到其它存儲區域,那么后續操作也跟著去其它區域,而且失憶,想不起來原先的存儲區域在哪里。temporal link matrix
DNC的尋址機制,把讀操作和寫操作分開。DNC用content-based和dynamic memory allocation的混搭方式,處理寫操作。用content-based和temporal memory linkage的混搭方式,處理讀操作。
1. content-based尋址:
比較需要處理的目標vector,與存儲矩陣中每一行的vector,用余弦距離來計算兩者相似性。取存儲矩陣中,與目標vector距離最短的行。
計算余弦距離時,需要一個系數向量,beta,這個系數向量是被訓練出來的。
2. dynamic memory allocation存儲單元分配:
每一個存儲單元,都是等長的vector。當每一個存儲單元被free的時候,整個vector中的每一個element,都可以用來寫入新數據。但是當一個vector中有若干elements已經被占用時,剩下的elements還可以被寫入新數據。
想象一下,如果每個vector的長度是100,又如果某個vector里,已經寫入了一個不長的詞,但是還有剩余的elements,這些剩余的elements可以用于給這個詞做詞性標注等等。但是如果剩余的elements不多,那么詞性標注只好被寫到其它行的vector里。
DNC設計了一個存儲單元占用向量u。u(i) = 0時第i行的vector中,所有element都可以被寫入新數據,而當u(i) = 1時第i行的vector中所有elements都已經被占用了。
但是如果存儲矩陣中有兩行,i和j,分別有完全相同的elements可以被寫。誰先被寫,取決于權重向量wt。wt體現了存儲使用的策略,策略既可以是盡可能寫入最新釋放的存儲單元,也可以盡可能寫入內容相似,而且沒有被完全占用的存儲單元。這個權重向量wt,是可以根據被訓練出來的。
3. Temporal memory linkage讀寫時序的關聯:
Dynamic memory allocation沒有記錄歷次寫操作時,loc(t) 發生在哪個存儲單元,以及loc(t+1) 發生在哪個存儲單元。而記錄歷次寫操作的存儲單元的位置順序,是有用的。
DNC用N^2的方陣,來記錄temporal link,其中L(i, j) 記錄著t時寫操作發生在存儲單元j,而t+1時寫操作發生在存儲單元i的概率。L(i, j) 可以是簡單的統計結果,也可以是加權的統計結果,權重體現了控制策略。權重是可以被訓練出來的。
當N很大的時,理論上來說L方陣會占用很多空間。但是鑒于L方陣很稀疏,很多L(i, j) 等于0。根據DeepMind團隊的估算,L實際占用空間只有O( N ),計算成本只有O( N * Log N )。
需要訓練哪些參數?
除了讀寫操作、以及尋址操作中的幾個權重向量以外,還有作為controller的RNN的參數。RNN可以選擇結構比較簡單的neuralnet work,也可以選擇結構更復雜的LSTM。選用LSTM意味著有更多參數,需要被訓練。
訓練數據通常不包含讀寫操作發生在哪個存儲空間上的信息。譬如NTM中,Priority Sort實驗的訓練數據,是一連串(輸入,理想輸出)pairs。每個pair中的輸入,是20個向量,每個向量伴隨著priority打分。每個pair中的理想輸出,是從輸入的20個向量中,挑選出來的16個,并且按priority得分排序。
注意,訓練數據中不包含讀寫操作在哪些存儲單元上進行的信息。
把DNC應用到Graph操作中
文中把DNC用于在倫敦地鐵中,尋找兩站之間最佳路線。坐地鐵本身不重要,重要的是如果RNN學會使用Graph以后,能做什么?假如Graph不是地鐵,而是social graph呢?又假如是knowledge graph呢?
參考文獻:
[1] Graves, Alex, et al. "Hybrid computing using a neural network with dynamic external memory." Nature 538.7626 (2016): 471-476.
[2] Graves, Alex, Greg Wayne, and Ivo Danihelka. "Neural turing machines." arXiv preprint arXiv:1410.5401 (2014).
[3] Chris Olah & Shan Carter, “Attention and Augmented Recurrent Neural Networks”, Distill, 2016.
評論
查看更多