怎樣讓機器學會推理?伯克利AI研究所一文詳解神經模塊網路
最近,加州大學伯克利分校人工智慧研究所(BAIR)的博士生Jacob Andreas在博客上發文,介紹了如何用神經模塊網路(NMN)模型來完成推理任務。
http://bair.berkeley.edu/blog/
這個博客是BAIR剛剛建立的,他們打算分享、討論計算機視覺、深度學習、機器人、NLP等領域的研究成果。這篇關於神經模塊網路研究的梳理,是BAIR技術博客的第二篇文章(第一篇是博客的介紹),量子位翻譯出來,和大家分享:
假設我們想要開發出一種家用機器人,能夠回答關於周圍環境的一些問題。
我們可能會向機器人提出這樣的問題:
△ 這是什麼?和藍色圓柱一樣大小的物體是什麼顏色的?我們該怎樣訓練機器人來正確回答這些問題?
在深度學習領域,一種經典方法是通過收集大量問題、圖像和對應的答案,構成數據集,來訓練一個能直接從問題和圖像映射到答案的神經網路。
對於「這是什麼」一類的問題,其實我們需要解決的是一個經典的圖像識別任務,這類整體方法非常有效:
△ 問:這是什麼?答:貓。但對於圖1右側的問題,這種方法效果不佳。
△ 問:和藍色圓柱一樣大小的物體是什麼顏色的?答:藍色。這回,我們訓練的神經網路似乎沒理解這個問題,直接用這張圖中出現最多的顏色猜了個答案。
這個問題難在哪?
即使是一張更簡潔的圖片,回答這樣的問題仍需要多步推理。模型不能簡單地識別圖像中的主要物體,而是先要找到藍色圓柱體,然後找到具有相同大小的另一個物體,再確定其顏色。
這是一個複雜的分析過程,需要對具體問題進行具體計算,不同的問題還可能有不同的解決步驟。
深度學習中大多使用了「一刀切」的方法:對於要解決的任何問題,通過設計一個固定的模型結構,希望能夠從已標記的訓練數據中學習到相關模型參數,捕獲關於輸入和輸出間的一切關係。
但在現實世界中,並不能以這種方法來實現推理。我們遇到的每個新問題都涉及多種可能性,以不同的方式結合在一起。
解決這類問題所需要的模型,要能根據面對的問題來決定推理方式,建立一個能靈活地自行選擇內部結構的神經網路。
在這篇文章中,我們要討論一種名叫神經模塊網路(neural module networks,NMNs)的模型。這種方法保留了深度學習有效的表現力,也為解決問題提供了更靈活的方法。
回到上文說的那個問題:
和藍色圓柱一樣大小的物體是什麼顏色的?
要回答這個問題,分三步:1. 找到一個藍色圓柱,2. 找到和它尺寸相同的另一個物體,3. 確定其顏色。
流程如下圖所示:
換個問題,步驟也會不一樣。當問題為「有多少與球尺寸相同的物體?」,流程圖會變成這樣:像「比較尺寸」這種基本運算,在很多問題上都能共用,不過是用在不一樣的地方。NMN的核心思想是讓這種「共用」更加明確:回答上面兩個問題,我們用了不同結構的網路,但是在設計相同的基本運算時,兩個網路相關部分共用了同樣的權重。
△ 「比較尺寸」部分是共用的該如何學習得到這樣的模型?
我們不是訓練一個神經網路,讓它能完成多對輸入輸出,而是同時訓練大量不同的網路,然後在合適的地方將它們的參數匹配起來。
△
網路部分節點共享示意圖一些新的深度學習框架,例如DyNet和TensorFlow Fold等,在設計的時候就考慮到了這種動態計算。
訓練完成後,我們得到的也不是一個單獨的深度網路,而是一組神經模塊,每個模塊包含推理之中的一個環節。當我們想用訓練好的模型來處理一類新問題時,可以動態組合這些模塊,以生成針對該問題的新網路結構。
這種方法有一個顯著的優點,就是單個模塊不需要低級別的監督學習:
我們不會用「藍色對象」或者「在左邊」這種關係來逐個訓練神經模塊,而是讓它們在組合結構中,通過問題-答案這種成對數據來進行有監督學習。但是,這個神經網路能夠在訓練中自動推斷出各個模塊負責的運算,以及模塊間的關係。如下圖所示:
△ 神經網路在處理「藍色圓柱和紅色金屬物體右側的大積木材料一樣嗎?」這個問題時,自動推斷出各個模塊負責的運算。在根據更真實的圖片、甚至資料庫等信息來源回答問題時,這個模型也同樣可行:
這整個過程的關鍵在與一組像上面那樣的高級別「推理藍圖」,根據這些藍圖,我們可以確定每個問題的分析網路應如何布局,以及如何將不同的問題聯繫起來。我們應該怎麼構建這些藍圖?
在對這類模型的早期研究中(相關文獻1、2),我們發現,設計特定問題的神經網路與分析語法結構這兩者之間,具有極大的相似性。長期以來,語言學家認為,問題的語法與回答時需要的計算過程順序密切相關。根據自然語言處理方面的最新進展,我們可以使用現成的語法分析工具來自動提取出這些藍圖的近似版本。
但是,構建從語言結構到網路結構的準確映射,仍是一個具有挑戰性的問題,轉換過程中容易出錯。
在後來的工作中,我們不再依靠這種語言分析方法,改用由人類專家直接標註了理想化推理藍圖的一系列問題(相關文獻3)。模型通過學習模仿這些專家,大大提高了預測質量。最令人驚訝的是,當允許這些模仿訓練好的模型來修改專家的預測數據時,這些模型能找到比專家更好的解決方案。
儘管近年來深度學習方法取得了顯著成果,但是許多問題,如小樣本學習和複雜推理等方面,仍然存在一定的挑戰。不過,語義解析和程序歸納等結構化的傳統方法正適合解決這類問題。
利用好神經模塊網路的離散組合靈活性和數據效率,再結合深層網路的理解能力,這種方法為解決上述問題提供了一個很好的思路。NMN在很多視覺和文本推理任務中已經取得很好的效果,我們還會繼續研究用NMN來解決其他人工智慧問題。
相關文獻
1. Neural Module Networks.
Jacob Andreas, Marcus Rohrbach, Trevor Darrell and Dan Klein. CVPR 2016. [1511.02799] Neural Module Networks2. Learning to Compose Neural Networks for Question Answering.
Jacob Andreas, Marcus Rohrbach, Trevor Darrell and Dan Klein. NAACL 2016. [1601.01705] Learning to Compose Neural Networks for Question Answering3. Modeling Relationships in Referential Expressions with Compositional Modular Networks. Ronghang Hu, Marcus Rohrbach, Jacob Andreas, Trevor Darrell and Kate Saenko. CVPR 2017.
https://arxiv.org/abs/1611.09978【完】
一則通知
量子位正在組建自動駕駛技術群,面向研究自動駕駛相關領域的在校學生或一線工程師。李開復、王詠剛、王乃岩、王弢等大牛都在群里。歡迎大家加量子位微信(qbitbot),備註「自動駕駛」申請加入哈~
推薦閱讀:
※在利用支持向量機進行分類的時候怎麼選擇合適的核函數?
※什麼是強化學習?
※【乾貨】最新有關 DL & ML 的 R 語言書籍
※機器學習演算法實踐-嶺回歸和LASSO
※為什麼要做特徵離散化?