編者按:Microsoft Semantic Machines資深研究科學(xué)家、UC Berkeley計(jì)算機(jī)科學(xué)博士Jacob Andreas對(duì)比了機(jī)器學(xué)習(xí)和程序語(yǔ)言的發(fā)展史,提出可組合性、模塊化是神經(jīng)網(wǎng)絡(luò)的重要發(fā)展方向。
應(yīng)用機(jī)器學(xué)習(xí)簡(jiǎn)史:
每當(dāng)我們用能力更強(qiáng)、特征更簡(jiǎn)單、結(jié)構(gòu)性限制更少的模型替換能力更弱、附帶手工編寫的結(jié)構(gòu)性限制的模型時(shí),模型質(zhì)量提升了(模型更小,開發(fā)用時(shí)更短,在未見數(shù)據(jù)上的概括性更好)。
從NLP領(lǐng)域我們就能舉出很多例子:線性模型取代了決策列表;Jelinek說(shuō):“我每開掉一個(gè)語(yǔ)言學(xué)家,語(yǔ)音識(shí)別系統(tǒng)的表現(xiàn)就會(huì)提高一點(diǎn)”;基于統(tǒng)計(jì)的機(jī)器翻譯;最近一大波論文的實(shí)質(zhì)是“將log-linear模型(雙層神經(jīng)網(wǎng)絡(luò))替換為一個(gè)三層神經(jīng)網(wǎng)絡(luò)”。
程序語(yǔ)言簡(jiǎn)史:
每當(dāng)我們用帶有少量高層構(gòu)件的語(yǔ)言替換帶有大量簡(jiǎn)單構(gòu)件的語(yǔ)言時(shí),程序質(zhì)量提升了(同等復(fù)雜度的程序更短了,開發(fā)用時(shí)更短,包含bug的可能性降低)。
所有人都不寫匯編了,接著,所有人都不寫C了。(顯然這是粗暴的過(guò)度概括,因?yàn)檫€有很多人在寫匯編和C。爭(zhēng)議更少的說(shuō)法是使用底層語(yǔ)言寫程序的人越來(lái)越少,使用底層語(yǔ)言更難寫對(duì)程序。)
不知道你注意到了沒(méi)有,在以上兩個(gè)情形中,我們移動(dòng)的都是同一個(gè)滑塊——只不過(guò)方向不同。機(jī)器學(xué)習(xí)和程序語(yǔ)言設(shè)計(jì)最終目標(biāo)是一致的:讓特定的問(wèn)題求解機(jī)器(不管是人類還是優(yōu)化算法)產(chǎn)生正確的代碼。在現(xiàn)實(shí)世界中,我們并不是因?yàn)闄C(jī)器學(xué)習(xí)內(nèi)在地比手寫代碼更純粹或者更美才偏愛機(jī)器學(xué)習(xí)——我們使用機(jī)器學(xué)習(xí)是因?yàn)樗咝?。如果今天有人發(fā)布了一個(gè)包含一些可組合的視覺原語(yǔ)的庫(kù),接著突然之間Facebook發(fā)現(xiàn)實(shí)習(xí)生可以比神經(jīng)網(wǎng)絡(luò)更高效地解決所有的圖像標(biāo)記問(wèn)題,那么明天神經(jīng)網(wǎng)絡(luò)就會(huì)被棄之門外。
實(shí)際上,我們現(xiàn)在能夠?qū)懗鲞@樣的庫(kù)嗎?
澄清一下,我指的不是類似OpenCV的東西,讓你選擇為特定任務(wù)預(yù)先實(shí)現(xiàn)的模型,然后在后處理部分加上你想要的操作。相反,我想要的是一些視覺原語(yǔ),基于這些原語(yǔ)我們可以這樣編寫一個(gè)分類器:
load(image) andThen
detectObjects andThen
orderBy(salience) andThen
head andThen
name
或者這樣給圖像自動(dòng)加上說(shuō)明:
load(image) andThen
detectObjects andThen
describeAll
或者這樣識(shí)別人臉:
load(image) andThen
detectObjects andThen
filter(name(_) == Face) andThen
drawBoundaries
detectObjects、describeAll等函數(shù)看起來(lái)是什么樣?目前的經(jīng)驗(yàn)提示它們應(yīng)該是神經(jīng)網(wǎng)絡(luò),但不是特定種類的神經(jīng)網(wǎng)絡(luò):它們并不是為完成某個(gè)具體任務(wù)(比如給圖像加上說(shuō)明)而訓(xùn)練的,而是以可自由組合的方式進(jìn)行訓(xùn)練:describeAll承諾可以接受任何“檢測(cè)結(jié)果列表之類”的輸入(可以直接來(lái)自detectObjects,也可以是經(jīng)過(guò)后續(xù)過(guò)濾的),并生成一個(gè)字符串。這些函數(shù)的輸入和輸出都是實(shí)向量。無(wú)法結(jié)構(gòu)化地強(qiáng)制“檢測(cè)結(jié)果列表之類”的東西實(shí)際具有所需的語(yǔ)義,相反,我們完全依賴訓(xùn)練過(guò)程。
在當(dāng)前的真實(shí)世界實(shí)現(xiàn)中,將網(wǎng)絡(luò)層視為模塊化、預(yù)先規(guī)定的單元,而將網(wǎng)絡(luò)視為為特定任務(wù)定制的單一模型(需要端到端訓(xùn)練)。不過(guò),一旦我們轉(zhuǎn)移到模塊化網(wǎng)絡(luò)上,我們可以開始進(jìn)行不存在訓(xùn)練數(shù)據(jù)的任務(wù)。例如,使用上面指定的原語(yǔ)“為圖像中的人添加說(shuō)明”:
load(image) andThen
detectObjects andThen
filter(name(_) == Face)
andThen describeAll
其實(shí)我們已經(jīng)向這個(gè)方向邁步了:人們使用圖像分類網(wǎng)絡(luò)的前若干層初始化幾乎所有視覺任務(wù);盡管“注意力”是一系列組合多個(gè)網(wǎng)絡(luò)層的復(fù)雜操作,人們?cè)诿枋瞿P蜁r(shí)突然開始將其用作原語(yǔ)。Roger Grosse關(guān)于矩陣分解模型的語(yǔ)法的出色論文(arXiv:1210.4856)也多少是這個(gè)風(fēng)格,還有Christopher Olah對(duì)視作可復(fù)用模塊組合的神經(jīng)網(wǎng)絡(luò)的類型理論細(xì)節(jié)的討論(git.io/fAn4J)。
回到我們之前的程序語(yǔ)言討論,我們觀察到:
手工編寫人類檢測(cè)器對(duì)人類來(lái)說(shuō)很難,但對(duì)神經(jīng)網(wǎng)絡(luò)而言很容易。
給定功能恰當(dāng)?shù)囊曈X原語(yǔ),編寫人類描述器很容易。但從頭訓(xùn)練完成這一任務(wù)的神經(jīng)網(wǎng)絡(luò)需要大量人類描述的樣本。(我們也許可以說(shuō),對(duì)人類來(lái)說(shuō)“容易”,對(duì)神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)“困難”。)
更進(jìn)一步,有很多更類似人類而不是神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)技術(shù),使用很小的數(shù)據(jù)集以及良好的預(yù)先指定的原語(yǔ),比如,程序推導(dǎo)和語(yǔ)義解析。如果我們真的只在乎最少的人類干預(yù),我們可以將指定的視覺原語(yǔ)交給機(jī)器學(xué)習(xí)子系統(tǒng)自動(dòng)推導(dǎo)。
所以讓我們編寫這個(gè)庫(kù)!這里有一些問(wèn)題需要研究:首先,提供給人們的功能原語(yǔ)(或用于程序推導(dǎo)的模塊)的正確組合是什么?接著,這些共享的表示真的可以被學(xué)習(xí)嗎?我們?nèi)绾位诂F(xiàn)有的標(biāo)記數(shù)據(jù)為這些模塊搜尋參數(shù)配置?
作為概念證明,我和一些研究人員合作,寫了三篇關(guān)于可組合模塊化神經(jīng)網(wǎng)絡(luò)的論文:
Neural Module Networks(arXiv:1511.02799)
Learning to Compose Neural Networks for Question Answering(arXiv:1601.01705)
Modeling Relationships in Referential Expressions with Compositional Modular Networks(arXiv:1611.09978)
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103707 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8505瀏覽量
134669
原文標(biāo)題:程序語(yǔ)言與神經(jīng)網(wǎng)絡(luò)
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
恒壓變壓器的發(fā)展史
中國(guó)電機(jī)工業(yè)發(fā)展史首發(fā)書籍下載
如何正確掌握程序語(yǔ)言
Robot的發(fā)展史
5G的發(fā)展史
萌新求助,求關(guān)于ARM發(fā)展史及各時(shí)期內(nèi)核的知識(shí)點(diǎn)
unix系統(tǒng)發(fā)展史
C語(yǔ)言的發(fā)展史

直流電機(jī)的發(fā)展史

評(píng)論