假設(shè)我們正在建造一個(gè)家用機(jī)器人,并希望它能夠回答與它周圍的一些問題。我們可能會(huì)它問這樣的問題:
我們?nèi)绾未_保機(jī)器人可以正確回答這些問題?深度學(xué)習(xí)的標(biāo)準(zhǔn)方法是收集問題,圖像和答案的大型數(shù)據(jù)集,并訓(xùn)練一個(gè)單一的神經(jīng)網(wǎng)絡(luò),從問題和圖像直接映射到答案。如果大多數(shù)問題看起來像左邊那個(gè),我們就有一個(gè)熟悉的圖像識(shí)別問題,而這類單一的方法是非常有效的:
但是對于像右邊那樣的問題,就沒有那么容易辨認(rèn)出來了:
在這里,我們訓(xùn)練的網(wǎng)絡(luò)已經(jīng)不起作用了,它只是猜測圖像中最常見的顏色。是什么讓這個(gè)問題變得更加困難?即使圖像更清晰,這個(gè)問題也需要很多步驟來推理:不是簡單地識(shí)別圖像中的主要對象,模型必須首先找到藍(lán)色圓柱體,定位相同大小的其他對象,然后確定其顏色。這是一個(gè)復(fù)雜的計(jì)算,而這個(gè)計(jì)算也只能用于這個(gè)特定的問題。不同的問題需要不同的步驟順序來解決。
深度學(xué)習(xí)的主要范式是一種“一刀切”的方法:無論我們要解決什么問題,我們都要寫下一個(gè)固定的模型框架,在這個(gè)模型中我們希望能夠捕捉到輸入和輸出之間的關(guān)系,并從標(biāo)記的訓(xùn)練數(shù)據(jù)中學(xué)習(xí)該固定模型的參數(shù)。
但現(xiàn)實(shí)世界的推理并不是這樣工作的:它涉及到各種不同的能力,我們在其他情況下遇到新的問題,它就會(huì)以新的方式結(jié)合起來。我們需要的是這樣一個(gè)模型,它可以根據(jù)面前的問題動(dòng)態(tài)地確定如何去推理——一個(gè)可以即時(shí)選擇自身結(jié)構(gòu)的網(wǎng)絡(luò)。在這篇文章中,我們將討論一類稱之為神經(jīng)模塊網(wǎng)絡(luò) (NMNs)的新模型,它將這種更加靈活的方法融入到解決問題的過程中,同時(shí)保留了深度學(xué)習(xí)有效的表現(xiàn)能力。
之前,我們注意到回答上述問題要涉及到三個(gè)不同的步驟:找到一個(gè)藍(lán)色的圓柱體,找到其他大小相同的東西,并確定它的顏色。我們可以畫出這樣的示意圖:
不同的問題可能涉及不同的一系列步驟。如果我們問“有多少東西和球一樣大小?”,我們可能會(huì)有這樣的東西:
各種問題間,類似于“比較大小”之類的基本操作是共享的,但是它們以不同方式被使用。NMNs背后的關(guān)鍵思想是讓這個(gè)共享變得更加明確:我們使用兩個(gè)不同的網(wǎng)絡(luò)結(jié)構(gòu)來回答上述兩個(gè)問題,但我們在涉及相同基本操作的網(wǎng)絡(luò)之間共享權(quán)重:
我們?nèi)绾螌W(xué)習(xí)這樣的模型?我們不是在大量成對的輸入/輸出上訓(xùn)練單一的大型網(wǎng)絡(luò),實(shí)際上,我們在訓(xùn)練大量不同的網(wǎng)絡(luò)的同時(shí),也在適當(dāng)?shù)那闆r下將它們的參數(shù)綁定在一起:
(包括DyNet和TensorFlow Fold在內(nèi)的幾個(gè)最新的深度學(xué)習(xí)框架都是在這種動(dòng)態(tài)計(jì)算的基礎(chǔ)上明確設(shè)計(jì)的。)
我們在訓(xùn)練過程結(jié)束時(shí)得到的不是一個(gè)深度網(wǎng)絡(luò),而是一個(gè)神經(jīng)“模塊”的集合,每個(gè)神經(jīng)“模塊”實(shí)現(xiàn)一個(gè)推理的單一步驟。當(dāng)我們想在一個(gè)新的問題實(shí)例上使用我們的訓(xùn)練模型時(shí),我們可以動(dòng)態(tài)地組合這些模塊來產(chǎn)生適合于這個(gè)問題的新的網(wǎng)絡(luò)結(jié)構(gòu)。
關(guān)于這個(gè)過程的一個(gè)出色的地方是,我們不需要為個(gè)別模塊提供任何低級別的監(jiān)督:該模型從來沒有看到藍(lán)色對象的孤立例子或“剩余”關(guān)系。模塊只能在較大的組合結(jié)構(gòu)中學(xué)習(xí),只有(問題,答案)成對作為監(jiān)督。但是訓(xùn)練過程能夠自動(dòng)地推斷出結(jié)構(gòu)片段之間的正確關(guān)系以及它們所負(fù)責(zé)的計(jì)算:
這個(gè)過程同樣適用于回答關(guān)于更逼真的照片的問題,甚至是其他的知識(shí)資源,比如數(shù)據(jù)庫:
整個(gè)過程的關(guān)鍵要素就是像上面那樣的高層次的“推理藍(lán)圖”。這些藍(lán)圖告訴我們應(yīng)該如何布置每個(gè)問題的網(wǎng)絡(luò),以及不同的問題如何相互關(guān)聯(lián)。但藍(lán)圖從哪里來?
在我們對這些模型的初步研究中(1,2),我們在設(shè)計(jì)特定于問題的神經(jīng)網(wǎng)絡(luò)的問題和分析語法結(jié)構(gòu)的問題上得出了驚人的聯(lián)系。語言學(xué)家早已觀察到,一個(gè)問題的語法與回答它所需的計(jì)算步驟的順序密切相關(guān)。這得益于自然語言處理方面的最新進(jìn)展,我們可以使用現(xiàn)成的語法分析工具自動(dòng)地為這些藍(lán)圖提供近似的版本。
但從語言結(jié)構(gòu)到網(wǎng)絡(luò)結(jié)構(gòu)的準(zhǔn)確映射仍然是一個(gè)具有挑戰(zhàn)性的問題,轉(zhuǎn)換過程容易出錯(cuò)。在之后的工作中,我們不是依靠這種語言學(xué)分析,而是轉(zhuǎn)向由人類專家生成的數(shù)據(jù),他們用理想化的推理藍(lán)圖直接標(biāo)記了一系列問題(3)。通過學(xué)著去模仿這些人,我們的模型能夠大大提高預(yù)測的質(zhì)量。最令人驚訝的是,當(dāng)我們采用了模仿專家的模式,但是允許它探索自己對這些專家預(yù)測的修改之后,就可以找到比各種問題的專家更好的解決方案。
盡管近年來深度學(xué)習(xí)方法取得了令人矚目的成就,但其中包括少量學(xué)習(xí)和復(fù)雜推理等許多問題仍然是一個(gè)挑戰(zhàn)。但是,這些問題恰恰是諸如語義解析和程序歸納等更結(jié)構(gòu)化的經(jīng)典技術(shù)真正發(fā)揮作用的問題。神經(jīng)模塊網(wǎng)絡(luò)為我們提供了兩全其美的方法:離散組合的靈活性和數(shù)據(jù)效率,以及深度網(wǎng)絡(luò)的代表性能力。NMNs已經(jīng)在視覺和文本推理任務(wù)上取得了一些成功,我們也很興奮地開始將它們應(yīng)用到其他人工智能問題上。
這篇文章是參考以下文獻(xiàn):
Neural Module Networks.Jacob Andreas,Marcus Rohrbach,Trevor Darrell和Dan Klein。CVPR 2016.(https://arxiv.org/abs/1511.02799)
Learning to Compose Neural Networks for Question Answering.Jacob Andreas,Marcus Rohrbach,Trevor Darrell和Dan Klein。NAACL 2016.(https://arxiv.org/abs/1601.01705)
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)