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