(谷歌開發(fā)者大會 I/O 2017 ,Keras 之父 Francois Chollet 被請出來向全世界的機(jī)器學(xué)習(xí)開發(fā)者進(jìn)行一場對 Keras 的綜合介紹以及實(shí)戰(zhàn)示例)
近期,F(xiàn)rancois Chollet 在博客上發(fā)文探討深度學(xué)習(xí)的未來,從技術(shù)演化的角度,提出未來深度學(xué)習(xí)的4大走向:模型即程序、超越反向傳播和可微分層、自動化的機(jī)器學(xué)習(xí)、終身學(xué)習(xí)和重復(fù)利用模塊化子程序。未來深度學(xué)習(xí)走向無疑是越來越自主化的,但是從技術(shù)角度需要什么累積與突破,文章進(jìn)行了很好的解讀。作者認(rèn)為,機(jī)器學(xué)習(xí)工程師的工作不會消失,相反,工程師將在價(jià)值創(chuàng)造鏈上走高。
Keras作者、《Python深度學(xué)習(xí)》一書的作者 Francois Chollet 在自己的博客上公開了自己書中的內(nèi)容,討論深度學(xué)習(xí)的未來:
鑒于我們對深度神經(jīng)網(wǎng)絡(luò)的了解,包括它們的局限性,以及對當(dāng)下研究圖景的掌握,我們是否能預(yù)測在短期內(nèi),深度學(xué)習(xí)將會走向何方?下面是一些純個(gè)人的思考。需要注明的是,我沒有水晶球,所以可能很多我的預(yù)測不會成為現(xiàn)實(shí)。這是一篇純推測的博客。我之所以在此分享這些預(yù)測,并不是因?yàn)槲移谕谖磥肀蛔C明是完全正確的,而是,在目前看來,它們非常有趣,而且是可行的。
在最上層,我認(rèn)為有潛力的主要方向是:
1.更貼近通用計(jì)算機(jī)程序的模型,建立在比當(dāng)下不同神經(jīng)網(wǎng)絡(luò)層遠(yuǎn)豐富得多的基元之上,這就是我們將如何得到推理和抽象,即當(dāng)前模型的根本弱點(diǎn)。
2.能讓上述情況實(shí)現(xiàn)的新形式的學(xué)習(xí)——允許模型獲得更多的發(fā)展,而不僅僅局限在不同的轉(zhuǎn)移。
3.需要人類工程師更少干涉的模型,無休止地調(diào)整控制旋鈕(knobs)不應(yīng)該是你的工作。
4.對前期學(xué)習(xí)特征和架構(gòu)系統(tǒng)性的再利用;基于可再利用和模塊化程序和子程序的元學(xué)習(xí)系統(tǒng)。
此外,需要說明的是,以上所舉并不特指監(jiān)督式學(xué)習(xí)——這種學(xué)習(xí)方式目前是深度學(xué)習(xí)的基本業(yè)務(wù),它們可以應(yīng)用到任何形式的機(jī)器學(xué)習(xí)上,其中包括非監(jiān)督學(xué)習(xí)、自監(jiān)督學(xué)習(xí)、強(qiáng)化學(xué)習(xí)等等。你的標(biāo)簽來自哪或者你的訓(xùn)練環(huán)看起來是怎么樣的在根本上也不重要。這些機(jī)器學(xué)習(xí)不同的分支只是同一結(jié)構(gòu)的不同方面。
讓我們深入下去。
模型即程序
正如我們在此前的博客里提到的,在機(jī)器學(xué)習(xí)領(lǐng)域,我們可以期待的一個(gè)必要的轉(zhuǎn)變是:從只能做模式識別和獲得局部的泛化,到能夠執(zhí)行抽象和推理的模型,這能獲得極端的泛化。當(dāng)下,具有基本推理形式能力的AI程序都是由人類程序員硬編碼的:例如,依賴于搜索算法,圖形操作和形式邏輯的軟件。
例如,在DeepMind的AlphaGo程序中,其展示的絕大部分“智能”都是由專業(yè)的程序員設(shè)計(jì)和硬編碼完成的(比如,蒙特卡洛樹搜索)。從數(shù)據(jù)中進(jìn)行學(xué)習(xí)僅僅發(fā)生在特定的從屬模塊中(價(jià)值網(wǎng)絡(luò)和策略網(wǎng)絡(luò))。但是,未來,這樣的AI 系統(tǒng)或許可以進(jìn)行完全的學(xué)習(xí),不需要任何的人類參與。
要實(shí)現(xiàn)這一想法,都有哪些渠道?考慮一下一個(gè)廣為人知的神經(jīng)網(wǎng)絡(luò)——RNN。重點(diǎn)是,RNN比前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Networks)的局限性要少得多。這是因?yàn)椋琑NN不僅僅是一個(gè)幾何變換。在一個(gè)循環(huán)內(nèi),RNN被重復(fù)應(yīng)用的幾何變換。
時(shí)間循環(huán)本身由人類開發(fā)人員硬編碼:它是網(wǎng)絡(luò)的內(nèi)置假設(shè)。當(dāng)然,RNN在它們可以代表的方面仍然非常有限,主要是因?yàn)樗鼈儓?zhí)行的每個(gè)步驟仍然只是一個(gè)可微的幾何變換,并且它們從一個(gè)步驟到另一步驟中傳遞信息的方式是通過連續(xù)幾何空間(狀態(tài)向量)中的點(diǎn)?,F(xiàn)在,想象一下神經(jīng)網(wǎng)絡(luò)將以類似于編程基元(例如for循環(huán))的方式“增強(qiáng)”,但不僅僅是一個(gè)有硬編碼幾何存儲器的硬編碼for循環(huán),而是一組大型的編程原語,讓模型可以自由地操縱以擴(kuò)展其處理功能,例如分支,語句,變量創(chuàng)建,長期內(nèi)存的磁盤存儲,排序運(yùn)算符,高級數(shù)據(jù)結(jié)構(gòu)(如列表,圖形和哈希表)等等。這樣一個(gè)網(wǎng)絡(luò)可以代表的程序的空間將遠(yuǎn)大于當(dāng)前深入學(xué)習(xí)模式所能表達(dá)的范圍,其中一些程序可以實(shí)現(xiàn)更高的泛化能力。
總而言之,我們將遠(yuǎn)離一手掌握“硬編碼算法智能”(手工軟件),一只手“學(xué)習(xí)幾何智能”(深度學(xué)習(xí))的方式。取而代之的是,我們將提供混合的正式算法模塊,它們能提供推理和抽象能力,同時(shí),其中的幾何模型能提供非正式的直覺和模式識別能力。整個(gè)系統(tǒng)將能在不需要,或者少量人類參與的情況下進(jìn)行學(xué)習(xí)。