作者 | francois chollet鑑於我們對深網的工作原理,侷限性以及研究現狀的了解,我們能否**中期的發展方向?這是一些純粹的個人想法。請注意,我沒有水晶球,所以我預期的很多事情都可能無法實現。這是乙個完全投機的職位。我之所以分享這些**,並不是因為我希望它們將來能被證明是完全正確的,而是因為它們在當前很有趣並且可以付諸實踐。編譯 | cda資料分析師
從高層次來看,我看到希望的主要方向是:
此外,請注意,這些注意事項並非到目前為止一直是深度學習的基礎的那種監督學習,而是適用於任何形式的機器學習,包括無監督,自我監督和強化學習。標記的**或訓練迴圈的樣子從根本上來說並不重要;機器學習的這些不同分支只是同一構造的不同方面。
正如我們在前一篇文章中指出的那樣,我們可以期望在機器學習領域進行必要的轉型發展,是從執行純模式識別並且只能實現區域性概括的模型轉向具有抽象和 推理能力的模型,實現極端概括。當前具有基本推理形式的ai程式都由人類程式設計師進行硬編碼:例如,依賴於搜尋演算法,圖操作,形式邏輯的軟體。例如,在deepmind的alphago中,大多數「智慧型」都是由專業程式設計師設計和硬編碼的(例如,蒙特卡洛樹搜尋);從資料中學習僅發生在專門的子模組(價值網路和政策網路)中。但是在將來,這樣的ai系統可能會完全被了解,而無需人工參與。
實現這一目標的途徑可能是什麼?考慮一種著名的網路:rnn。重要的是,與前饋網路相比,rnn的限制略少。這是因為rnn不僅僅是幾何變換:它們是在for 迴圈內重複應用的幾何變換。暫時的for迴圈本身是由開發人員進行硬編碼的:它是網路的內建假設。自然地,rnn的表示能力仍然受到極大限制,主要是因為它們執行的每個步驟仍然只是可微的幾何變換,並且它們從一步到一步傳遞資訊的方式是通過連續幾何空間中的點(狀態向量)進行的。現在,想象一下以類似的方式通過程式設計原語(例如for迴圈)來「增強」神經網路,但不僅僅是for具有硬編碼幾何記憶體的單個硬編碼迴圈,而是模型所包含的大量程式設計原語可以隨意操作以擴充套件其處理功能,例如if分支,while語句,變數建立,用於長期記憶體的磁碟儲存,排序運算子,高階資料結構(如列表,圖形和雜湊表)等等。這樣的網路可以代表的程式空間將比當前深度學習模型所代表的程式要廣闊得多,並且其中一些程式可以實現更高的泛化能力。
一言以蔽之,我們將擺脫一方面擁有「硬編碼演算法智慧型」(手工軟體),另一方面不再具有「學習幾何智慧型」(深度學習)的能力。我們將混合使用提供推理和抽象功能的形式化演算法模組和提供非正式直覺和模式識別功能的幾何模組。整個系統將在幾乎沒有人參與的情況下學習。
我認為ai的乙個相關子領域可能會大有作為,它是程式綜合領域,尤其是神經程式綜合領域。程式合成包括通過使用搜尋演算法(可能是遺傳搜尋,如遺傳程式設計)自動生成簡單程式,以探索大量可能的程式。當找到符合所需規範的程式時,搜尋將停止,該程式通常以一組輸入輸出對的形式提供。正如您所看到的,它是否使人聯想到機器學習:給定輸入和輸出對提供的「訓練資料」,我們找到了乙個將輸入與輸出匹配並可以歸納為新輸入的「程式」。不同之處在於,我們生成的不是在硬編碼程式(神經網路)中學習引數值通過離散搜尋過程獲取源**。
我絕對希望這個子領域在未來幾年內會引起新的興趣。特別是,我希望在深度學習和程式合成之間出現乙個交叉子域,在該領域中,我們不會以通用語言生成程式,而會在其中生成神經網路(幾何資料處理)。流)增加了一組豐富的演算法的圖元,如for迴圈等等。與直接生成源**相比,這應該更容易處理和有用,並且它將大大擴充套件機器學習可以解決的問題的範圍-在給定適當的訓練資料的情況下,我們可以自動生成的程式空間。象徵性ai和幾何ai的融合。當代的rnn可以看作是這種混合演算法-幾何模型的史前祖先。
如果機器學習模型變得更像程式,那麼它們將幾乎不再是可區分的—當然,這些程式仍將利用連續的幾何層作為子例程,這將是可區分的,但整個模型則不會。結果,使用反向傳播來調整固定的硬編碼網路中的權重值,將不再是將來訓練模型的首選方法,至少,它不可能是全部。我們需要找出有效地訓練不可微系統的方法。當前的方法包括遺傳演算法,「進化策略」,某些強化學習方法和admm(乘數的交替方向方法)。自然,梯度下降無處不在-梯度資訊對於優化可微分引數函式總是有用的。
此外,反向傳播是端到端的,這對於學習良好的鏈式轉換是一件好事,但由於它沒有充分利用深度網路的模組化,因此計算效率低下。為了提高效率,有乙個通用的方法:引入模組化和層次結構。因此,我們可以通過引入解耦的訓練模組以及它們之間的某些同步機制(以分層方式組織)來使反向傳播本身更加高效。這種策略在deepmind最近關於「合成梯度」的工作中有所體現。我希望在不久的將來,在這些方面還有更多的工作要做。
可以想象到乙個未來,其中將使用不會利用梯度的有效搜尋過程來訓練(增長)全域性不可微(但具有可區分部分)的模型,而可利用優勢來更快地訓練可區分部分。使用一些更有效的反向傳播版本的梯度。
將來,將學習模型架構,而不是由工匠手工製作。使用更豐富的原語集和類似程式的機器學習模型,學習體系結構會自動並駕齊驅。
在最基本的層次上,這樣的系統將簡單地調整堆疊中的層數,其順序以及每一層中的單元或過濾器數。這通常是使用hyperopt之類的庫完成的。但是,我們也可以野心勃勃,並嘗試從頭開始學習一種盡可能少的約束的適當架構。這可以通過例如強化學習或遺傳演算法來實現。automl的另乙個重要方向是與模型權重一起學習模型體系結構。因為每次我們嘗試稍有不同的體系結構都從頭開始訓練新模型時,效率非常低下,所以真正強大的automl系統將能夠在通過對訓練資料進行反向調整來調整模型的功能的同時,對體系結構進行改進,因此消除所有計算冗餘。在我撰寫這些內容時,這種方法已經開始出現。
當這種情況開始發生時,機器學習工程師的工作不會消失,而是工程師將在價值創造鏈中向更高的方向發展。他們將開始投入更多的精力來構建能夠真正反映業務目標的複雜損失函式,並深刻理解其模型如何影響部署它們的數字生態系統(例如,使用模型**並生成模型訓練資料的使用者) -目前只有最大的公司可以負擔的問題。
如果模型變得更加複雜並且建立在更豐富的演算法原語之上,那麼這種增加的複雜性將要求任務之間具有更高的重用性,而不是每當我們有新任務或新資料集時從頭開始訓練新模型。實際上,很多資料集將包含的資訊不足以從頭開始開發新的複雜模型,因此有必要利用先前遇到的資料集的資訊。就像您每次開啟一本新書都不會從頭開始學習英語一樣,這是不可能的。此外,由於當前任務與先前遇到的任務之間存在大量重疊,因此從頭開始對每個新任務進行訓練的模型效率非常低下。
另外,近年來反覆觀察到的乙個顯著發現是,訓練相同的模型以同時執行多個鬆散連線的任務會得到乙個在每個任務上都更好的模型。例如,訓練相同的神經機器翻譯模型以涵蓋英語到德語的翻譯和法語到義大利語的翻譯,將得到乙個在每種語言對上都更好的模型。共同訓練影象分類模型和影象分割模型,共享相同的卷積基礎,得到的模型在兩個任務上都更好。等等。這很直觀:總有一些這些看似脫節的任務之間的資訊重疊,因此與僅針對特定任務訓練的模型相比,聯合模型可以訪問有關每個單獨任務的更多資訊。
我們目前在跨任務的模型重用過程中所要做的就是利用預訓練的權重來執行執行常見功能(如視覺特徵提取)的模型。您將在第5章中看到了這一點。在將來,我希望它的通用版本是司空見慣的:我們不僅將利用先前學習的功能(子模型權重),還將利用模型架構和訓練過程。隨著模型變得更像程式,我們將開始重用程式子例程,例如人類程式語言中的函式和類。
簡而言之,這是我對機器學習的長期願景:
機器學習的未來 深度特徵融合
摘要 深度特徵融合是一項能夠克服機器學習不足,為機器學習開啟通往未來大門的新技術。新技術要不要了解一下?即使是最敏銳的技術布道師也無法 大資料對數字革命的影響。因為他們最初的關注點都聚焦在了擴大基礎設施以構建現有服務上。在提高對現有資料的處理能力時,許多的新技術被提出。關於機器學習的概念最早誕生於科...
深度學習之機器學習傻瓜教程
什麼是機器學習?傳統的教科書會用一大堆高等數學,線性代數,概率論,統計學等知識把你拒之門外,這裡博主俺決定用乙個很簡單的例子給不用你任何高深的數學知識來理解。在寫機器學習之前,我們來舉個例子。假設你是個古代的國王,那裡沒有現代的科技,你想找個預報天氣比較準的人來幫你預報天氣。你要怎麼辦呢?通常,我們...
機器學習之深度強化學習
機器學習最酷的分支應該算是深度學習 deeplearning 和強化學習 reinforcement learning 深度學習是一種機器學習中建模資料的隱含分布的多層表達的演算法。換句話來說,深度學習演算法自動提取分類中所需要的低層次或者高層次特徵。因此深度學習能夠更好的表示資料的特徵,同時由於模...