另一個重要的AutoML方向是與模型權(quán)重一起學(xué)習(xí)模型架構(gòu)。因為每次嘗試一個稍微不同的架構(gòu)時,都會從頭開始訓(xùn)練一個新的模型,所以一個真正強(qiáng)大的AutoML系統(tǒng)將通過對訓(xùn)練數(shù)據(jù)的反饋來調(diào)整模型的特征,同時管理體系結(jié)構(gòu),以消除所有計算冗余。這些方法已經(jīng)開始出現(xiàn),因為我正在寫類似的代碼。
當(dāng)這種情況開始發(fā)生時,機(jī)器學(xué)習(xí)工程師的工作不會消失,相反,工程師將在價值創(chuàng)造鏈上走高。他們將開始更多地努力制定真正反映業(yè)務(wù)目標(biāo)的復(fù)雜損失函數(shù),并深入了解他們的模型如何影響其部署的數(shù)字生態(tài)系統(tǒng)——目前,只有最大的公司才會考慮這些問題。
終身學(xué)習(xí)(AGI)和反復(fù)利用模塊化子程序
如果模型變得更加復(fù)雜,并且建立在更加豐富的算法原語之上,那么這種增加的復(fù)雜性將需要在任務(wù)之間有更高的重用,而不是每當(dāng)有一個新任務(wù)或一個新的數(shù)據(jù)集時都需要從頭開始訓(xùn)練一個新的模型。實際上,很多數(shù)據(jù)集是沒有包含足夠的信息來從頭開發(fā)新的復(fù)雜模型的,需要利用先前的數(shù)據(jù)集的信息。就像你每次打開一本新的書都不會從頭開始學(xué)習(xí)英語——這是不可能的。此外,由于當(dāng)前的任務(wù)與先前的任務(wù)之間有很大的重疊,每個新任務(wù)都要從頭開始訓(xùn)練模型是非常低效的。
此外,近年來出現(xiàn)的一個值得注意的觀察是,訓(xùn)練同一個模型去同時做多個有松散關(guān)聯(lián)的任務(wù),能產(chǎn)生一個在每項任務(wù)上都表現(xiàn)更好的模型。例如,訓(xùn)練同一個神經(jīng)機(jī)器翻譯模型去同時做英語-德語翻譯和法語-意大利語翻譯,將得到一個在每個語言對上都表現(xiàn)更好的模型。訓(xùn)練一個圖像分類和圖像分割的模型,兩個任務(wù)共享同一個卷積base,得到一個在兩個任務(wù)上都表現(xiàn)更好的模型。等等。這是非常直觀的:在這些似乎沒有關(guān)聯(lián)的任務(wù)之間總是存在一些重疊的信息,因此,聯(lián)合模型相比僅針對一個特定任務(wù)訓(xùn)練的模型能訪問更多有關(guān)各個任務(wù)的信息。
我們目前跨任務(wù)做類似模型重用的方式是利用執(zhí)行常見功能的模型的預(yù)訓(xùn)練權(quán)重,例如視覺特征提取。將來,我希望這一方法的通用性版本能夠變得常用:我們不僅利用先前學(xué)習(xí)的特征(子模型權(quán)重),還利用模型架構(gòu)和訓(xùn)練程序。隨著模型變得越來越像程序,我們將開始重用程序子例程(program subroutines),例如人類編程語言中的函數(shù)(function)和類(class)。
想想今天的軟件開發(fā)過程:一旦工程師解決了一個特定的問題(例如Python中的HTTP查詢),他們就將它封裝成一個抽象且可重用的庫。后來面臨類似問題的工程師可以簡單地搜索現(xiàn)有的庫,下載并在自己的項目中使用它們。以類似的方式,將來,元學(xué)習(xí)系統(tǒng)將能夠通過篩選高級可重用block的全局庫來組裝一個新的程序。當(dāng)系統(tǒng)發(fā)現(xiàn)自己為幾個不同的任務(wù)開發(fā)類似的程序子例程時,如果出現(xiàn)一個“抽象的”可重用子例程版本,系統(tǒng)會將它存儲在全局庫中。這樣的過程將實現(xiàn)抽象的能力,這是實現(xiàn)“極端泛化”( extreme generalization)的必要組件:一個被發(fā)現(xiàn)在不同任務(wù)和域中有用的子例程可以說是“抽象化”問題解決的一些方面。“抽象”( abstraction)的定義與軟件工程中抽象的概念相似。這些子例程可以是幾何的(具有預(yù)訓(xùn)練的表征的深度學(xué)習(xí)模塊)或算法的(更接近當(dāng)代軟件工程師操作的庫)。
(一個能夠使用可重用原語(包括算法的和幾何的)快速開發(fā)任務(wù)特定模型的元學(xué)習(xí)器(meta-learner),從而實現(xiàn)“極端泛化”(extreme generalization))
總結(jié):長期的展望
作為總結(jié):以下是我對機(jī)器學(xué)習(xí)的長期展望
1.模型將更像程序,并且具有遠(yuǎn)遠(yuǎn)超出我們目前使用的輸入數(shù)據(jù)的連續(xù)幾何變換的能力。這些程序可以說是更接近于人類對周圍環(huán)境和自身的抽象思維模式,而且由于其豐富的算法性質(zhì),它們將具有更強(qiáng)的泛化能力。
2.尤其,模型將被混合起來提供正式推理,搜索和抽象功能的算法模塊,并提供具有非正式直覺和模式識別功能的幾何模塊。AlphaGo(一個需要大量人工軟件工程和人類決策的系統(tǒng))提供了一個早期的例子,展示象征和幾何AI之間的混合的可能樣子。
3.它們將自動成長,而不是由人類工程師人工制作,使用存儲在可重復(fù)使用子程序的全局庫中的模塊化組件——這是通過在數(shù)千個先前任務(wù)和數(shù)據(jù)集上學(xué)習(xí)高性能模型演變而來的庫。由于常見的問題解決模式是通過元學(xué)習(xí)系統(tǒng)識別的,它們將變成可重用的子例程——非常像當(dāng)代軟件工程中的函數(shù)和類——并被添加到全局庫中。這就實現(xiàn)了抽象的能力。