AlphaGo之父DeepMind再出神作,PrediNet原理詳解
作者 | beyondma
轉載自CSDN博客
近期,DeepMind發表論文,稱受Marta Garnelo和 Murray Shanahan的論文「Reconciling deep learning with symbolic artificial intelligence: representing objects and relations」啟發,他們提出了一種新的架構,可將目前人工智慧的兩大流派符號派和神經網路派相結合,並取得良好效果。但是對於如此重要的論文,在國內的主流技術論壇上竟然沒有什麼的解讀與評論,經過了兩天的研究,筆者先將我對PrediNet的一些成果發布出來,供各位參考。
人工智慧的兩大流派的優劣比較
人工智慧主要分為符號流、神經網路、遺傳等幾個流派,目前是神經網路和符號流比較占上峰,但是由於幾個流派間基本前提不盡相同,如何將幾個流派的思想整合,一直是個比較難以解決的問題,這裡簡要介紹一下符號和神經網路兩大流派。
符號流派認為,一組對象之間存在關係可以用符號表示,符號的組合(and, or, not,等等),可以參與推理過程,但是在DeepMind之前,符號與邏輯推理的關係都是通過專家人工指定的,而不是通過對計算機進行訓練獲取相應的模型。
神經網路學派則是受到神經元之間相互連接的作用為啟發,尤其是以神經網路為代表的演算法,其實是先隨機給予每個神經元一個權重(weights),然後通過與最終結果的比較,不斷訓練得到最終的模型。
神經網路學派的優勢是在海量數據處理及預測方面表現非常好,/root但是其模型復用性不強,比如識別人臉的模型只能用於訓練人臉,而不能用來識別人手或者貓臉等其它特徵;而符號學派的命題型結論可以推廣,但是由於過於依賴人力,所以發展緩慢。
PrediNet結合兩大流派思想的方式
在PrediNet引用的論文「Reconciling deep learning with symbolic artificial intelligence: representing objects and relations」提出了這樣一種架構,先由Relation Network處理,其中Relation(關係)是由one-hot向量表示的,也就是每個relation都是彼此獨立的,彼此不相關,比如性別中的男、女就是彼此獨立的,用one-hot向量表示就是(0,1)和(1,0),而如果這時把他們放入同一維度表示為1和2,就會出現一些問題,因為1和2在數學就有倍數關係存在相關性了。如果讀者不好理解,可以把relation簡單理解為符號(symbol),輸入序列經過關係網路(Relation Network)的處理,輸出給MLP(多層感知機),得到最終輸出。
這次DeepMind提出的PrediNet方案,與之前的架構不盡相同,輸入先經過CNN(卷積神經網路)處理,再由PrediNet處理,最後由MLP(多層感知機)進行輸出如下圖所示,讀者可以把PrediNet看做是一個管道,連接在CNN和MLP之間。而實驗的結果也說明,PrediNet訓練完成後是可以被複用到的。
所以劃重點,這次 DeepMind 提出的 PrediNet 是一種可以被神經網路派演算法所使用的管道層,而且 PrediNet 這個管道層還具備一定的通用性。
PrediNet的工作原理簡述
PrediNet其實是一種降維的手段,將高維數據(如圖像)轉換為低維的命題表示形式。這裡先把論文的原文翻譯一下:
PrediNet的工作分為三個階段:注意、綁定和評估。注意階段,其實就是使用注意力演算法選取對象,綁定階段用計算一組三個位置關係的前兩個,評估階段計算每個謂詞剩餘參數的值,使結果命題為真。
具體地講,PrediNet模塊由k個頭組成,每個頭計算對象對之間的j個關係。對於給定的輸入L,每個頭h使用共享權重的WS,計算相同的關係集合,但是每個頭h都基於匹配鍵查詢(key-query matching)的點積(dot-product)注意力演算法,去選取對象序列的。
每個頭h計算一對單獨的查詢Qh 1和Qh 2(通過Wh Q1和Wh Q2),但是key space K(由WK定義)在heads之間共享。將得到的注意力掩碼(attention mask)對直接應用於L,得到E1和E2,再將E1和E2由一個線性映射(Ws)到一維空間,將繼續送入一個元素比較器(element-wise comparation),得到一個差分向量D, 最後,將所有k個頭的輸出連接起來,得到最終的向量R。向量R是表示k個頭和j個關係的PrediNet模塊的最終輸出。
cmake --build .
這裡我做一下解釋,首先PrediNet將工作分配N個HEAD去完成,其中每個HEAD使用了兩個獨立的WQ和WQ2以及一個共享的KEY,基於匹配鍵查詢(key-query matching)的點積(dot-product)注意力演算法得到一個掩碼(mask),這也就是注意階段,然後將掩碼()mask)應用到輸入L上,得到E1和E2,這也就是綁定階段。接下來使用WS對於E1和E2將降維,送入比較器得到D,並結合所有HEAD得到最終結果。
如果要深入理解PrediNet,其實關鍵是要理解基於WQ(實際上是查詢),WK(實際是鍵值)的匹配鍵查詢的點積注意力演算法(key-query matching dot-product),不過鑒於博主這種技術前沿的解讀與分享閱讀量一直很低,所以也就不再展開了。不過如果本篇閱讀能超過520的表白秘笈(https://blog.csdn.net/BEYONDMA/article/details/90300624),那麼下周我就來繼續分享注意力演算法的相關內容。
DeepMind原論文鏈接:https://arxiv.org/pdf/1905.10307.pdf


※剛剛,Python內幕被爆出!老碼農:沒控制住,心態已崩!
※谷歌用1.2萬個模型「推翻」現有無監督研究成果!斬獲ICML 2019最佳論文
TAG:AI科技大本營 |