0
雷鋒網(wǎng) AI 科技評論按:本文來自 Keras 作者 Fran?ois Chollet,同時也是根據(jù)他撰寫的《Deeping Learning with Python》一書第 9 章第 2 節(jié)改編的。關(guān)于當(dāng)前深度學(xué)習(xí)的局限性及其未來的思考,F(xiàn)ran?ois Chollet 共撰寫了兩篇文章,這篇是其中第一篇。雷鋒網(wǎng) AI 科技評論編譯如下
作者注:這篇文章的受眾是已經(jīng)有深度學(xué)習(xí)經(jīng)驗的人(例如讀過本書第 1 章至第 8 章的人)。 我們假設(shè)讀者已經(jīng)具有一定知識儲備。
深度學(xué)習(xí)最令人驚訝之處就在于它十分簡單。十年前,沒有人指望由梯度下降方法訓(xùn)練的簡單參數(shù)模型就可以在機器感知問題上獲得驚人的結(jié)果?,F(xiàn)在,事實證明,你只需要一個有足夠多參數(shù)的模型,并且在足夠大的數(shù)據(jù)集上使用梯度下降進行訓(xùn)練。正如 Feynman 曾經(jīng)描述宇宙那樣,「它并不復(fù)雜,只是很多而已」。
在深度學(xué)習(xí)中,一切都是一個向量,即一切都是幾何空間中的一個點。模型輸入(可以是文本,圖像等)和目標(biāo)首先被「矢量化」,即變成一些初始輸入矢量空間和目標(biāo)矢量空間。深度學(xué)習(xí)模型中的每一層對通過它的數(shù)據(jù)進行簡單的幾何變換。同時,模型的層次鏈形成一個非常復(fù)雜的幾何變換,分解成一系列簡單的幾何變換。這種復(fù)雜的轉(zhuǎn)換嘗試將輸入空間一次一個點得映射到目標(biāo)空間。這種轉(zhuǎn)換是通過層的權(quán)重進行參數(shù)化的,權(quán)重根據(jù)模型當(dāng)前執(zhí)行的情況進行迭代更新。這種幾何變換的一個關(guān)鍵特征是它必須是可微分的,這是為了使我們能夠通過梯度下降學(xué)習(xí)它的參數(shù)。直觀地說,這意味著從輸入到輸出的幾何變形必須平滑且連續(xù)——這是一個重要的約束條件。
這種復(fù)雜的幾何變換應(yīng)用到輸入數(shù)據(jù)的整個過程可以用三維的形式進行可視化,將其想象成一個人試圖將揉成團的紙球恢復(fù)平整:皺巴巴的紙球是模型開始時的輸入數(shù)據(jù)的復(fù)本。人對紙球的每個操作相當(dāng)于一層簡單幾何轉(zhuǎn)換的操作。完整的撫平(紙球)動作順序是整個模型的復(fù)雜轉(zhuǎn)換。深度學(xué)習(xí)模型是用于解開高維數(shù)據(jù)復(fù)雜流形的數(shù)學(xué)機器。
深度學(xué)習(xí)的神奇之處在于:將語義轉(zhuǎn)化為矢量,轉(zhuǎn)化為幾何空間,然后逐漸學(xué)習(xí)將一個空間映射到另一個空間的復(fù)雜幾何轉(zhuǎn)換。你需要的只是足夠高維數(shù)的空間,以便捕捉原始數(shù)據(jù)中全部的關(guān)系范圍。
用這個簡單策略實現(xiàn)的應(yīng)用程序空間幾乎是無限的。然而,現(xiàn)有的深度學(xué)習(xí)技術(shù)對于更多的應(yīng)用程序完全無能為力——即使提供了大量的人工注釋數(shù)據(jù)。例如,你可以嘗試收集成千上萬甚至百萬的關(guān)于軟件產(chǎn)品特征的英文描述的數(shù)據(jù)集,由產(chǎn)品經(jīng)理編寫,以及由工程師團隊開發(fā)的相應(yīng)的源代碼來滿足這些要求。即使有了這些數(shù)據(jù),你也無法訓(xùn)練深入的學(xué)習(xí)模式去簡單地閱讀產(chǎn)品說明并生成適當(dāng)?shù)拇a庫。這只是其中的一個例子。一般來說,無論你投入多少數(shù)據(jù),深度學(xué)習(xí)模型都無法實現(xiàn)任何需要推理的東西,如編程或科學(xué)方法的應(yīng)用——長期規(guī)劃和類似算法的數(shù)據(jù)操作。即使使用深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)排序算法也是非常困難的。
這是因為深度學(xué)習(xí)模型僅僅是將一個向量空間映射到另一個向量空間的簡單連續(xù)幾何變換鏈。它可以做的全部就是將一個數(shù)據(jù)流形 X 映射到另一個流形 Y,假設(shè)存在從 X到 Y 的可學(xué)習(xí)連續(xù)變換的話,并且可以使用密集的 X:Y 采樣作為訓(xùn)練數(shù)據(jù)。因此,盡管深度學(xué)習(xí)模型可以被解釋為一種程序,反過來說的話,大多數(shù)程序不能被表達為深度學(xué)習(xí)模型——對于大多數(shù)任務(wù)來說,要么沒有相應(yīng)的實際大小的深度神經(jīng)網(wǎng)絡(luò)來解決任務(wù),或者存在這樣的神經(jīng)網(wǎng)絡(luò),但它可能無法學(xué)習(xí),即相應(yīng)的幾何變換可能太復(fù)雜,或者可能沒有合適的數(shù)據(jù)可用來學(xué)習(xí)它。
通過堆疊更多層并使用更多訓(xùn)練數(shù)據(jù)來擴展當(dāng)前的深度學(xué)習(xí)技術(shù),只能在表面上緩解一些問題。它不能解決深度學(xué)習(xí)模型在他們可以表示的內(nèi)容種類非常有限的基本問題,并且大多數(shù)被期望可學(xué)習(xí)的程序不能被表示為數(shù)據(jù)流形的連續(xù)幾何變形。
當(dāng)代人工智能的一個非?,F(xiàn)實的風(fēng)險是人們誤解了深度學(xué)習(xí)模型的作用,并高估了他們的能力。人類思維的一個基本特征是我們的「心智理論」,我們傾向于將意向,信仰和知識投射到我們身邊的事物上。在我們的意識中,在巖石上畫一個笑臉石頭就突然變「快樂」了。應(yīng)用于深度學(xué)習(xí),這意味著當(dāng)我們能夠「基本成功」的訓(xùn)練模型以生成用于描述圖片的標(biāo)題時,我們就會相信該模型能夠「理解」圖片的內(nèi)容以及「理解」它所生成的字幕。然后,當(dāng)訓(xùn)練數(shù)據(jù)中出現(xiàn)的圖像類別輕微偏離時,我們會非常驚訝地發(fā)現(xiàn)模型開始生成完全荒謬的標(biāo)題。
尤其是「對抗性樣本」值得強調(diào),這些例子是一個深度學(xué)習(xí)網(wǎng)絡(luò)的輸入樣本,旨在誘騙模型對它們進行錯誤分類。你已經(jīng)意識到,可以在輸入空間中進行梯度上升以生成最大化某個閉環(huán)過濾器激活的輸入,這是我們在第 5 章中介紹的過濾器可視化技術(shù)的基礎(chǔ),以及第 8 章的 Deep Dream 算法。同樣,通過梯度上升,人們可以稍微修改圖像以最大化給定類的類別預(yù)測。通過拍攝一張熊貓的圖片并添加一個「長臂猿」梯度,我們可以得到一個神經(jīng)網(wǎng)絡(luò),將這只熊貓歸類為長臂猿。這證明了這些模型的脆弱性,以及它們的輸入——輸出映射與我們?nèi)祟愖陨碚J(rèn)知之間的深刻差異。
總之,深度學(xué)習(xí)模型并不理解他們的輸入,至少沒有人類意識上的理解。我們?nèi)祟悓D像,聲音和語言的理解是基于我們作為人類的感覺運動體驗——正如地球上的生物所表現(xiàn)的一樣。機器學(xué)習(xí)模型無法獲得這些經(jīng)驗,因此無法以與人類一致的視角來「理解」他們的輸入。 通過注釋大量的訓(xùn)練樣例來訓(xùn)練我們的模型,我們讓他們學(xué)習(xí)在特定數(shù)據(jù)集上,將數(shù)據(jù)映射到人類概念的幾何變換,但這個映射只是我們頭腦中原始模型的簡單概要,這是我們作為人類實體的體驗得來的——它就像鏡子里的一個模糊的形象。
作為一名機器學(xué)習(xí)實踐者,請始終注意這一點,永遠不要陷入這樣一個陷阱,即相信神經(jīng)網(wǎng)絡(luò)理解他們所執(zhí)行的任務(wù)——他們不會的,至少不會以對我們有意義的方式理解。不同于我們想教他們的任務(wù),他們被訓(xùn)練來執(zhí)行更為狹窄的任務(wù):僅僅將訓(xùn)練集輸入逐點映射到訓(xùn)練目標(biāo)中。向他們展示任何偏離訓(xùn)練數(shù)據(jù)的東西,他們將給出最荒謬的結(jié)果。
深度學(xué)習(xí)模型中從輸入到輸出的直接幾何變形,與人類思考和學(xué)習(xí)的方式之間幾乎是完全不同的。這不僅僅是人類從自身的經(jīng)驗中學(xué)習(xí)而不是通過明確的訓(xùn)練實例來學(xué)習(xí)的問題。除了學(xué)習(xí)過程不同之外,基本表征的性質(zhì)也存在根本差異。
人類能做的遠遠不只是像深度神經(jīng)網(wǎng)絡(luò)或昆蟲那樣把即時刺激映射成即時反應(yīng)。人們維持著關(guān)于目前處境、關(guān)于他們自己和其他人的復(fù)雜抽象模型,并且可以使用這些模型來預(yù)測不同的可能發(fā)生的未來并執(zhí)行長期規(guī)劃。他們能夠?qū)⒁阎母拍詈喜⒃谝黄?,來表示他們以前從未?jīng)歷過的事物,例如描繪穿著牛仔褲的馬,或想象如果他們中了彩票就會做什么。這種處理假設(shè)的能力,擴展了我們的心智模型空間,使其遠遠超出我們可以直接體驗到的事物空間,總而言之,進行抽象和推理,可以說是人類認(rèn)知的決定性特征。我稱之為「極限泛化」:這是一種在面對未經(jīng)歷的情況時,使用很少的數(shù)據(jù)甚至根本沒有新的數(shù)據(jù)就能適應(yīng)新情況的能力。
這與深度網(wǎng)絡(luò)所做的形成鮮明對比,我稱之為「局部泛化」:如果新輸入與訓(xùn)練時看到的略有不同,則由深度網(wǎng)絡(luò)執(zhí)行的從輸入到輸出的映射立馬失去意義。例如,來思考這樣一問題,想要學(xué)習(xí)使火箭在月球上著陸的合適的發(fā)射參數(shù)。如果你要使用深層網(wǎng)絡(luò)來完成這項任務(wù),無論是使用監(jiān)督學(xué)習(xí)還是增強學(xué)習(xí)進行訓(xùn)練,你都需要用數(shù)千乃至數(shù)百萬次的發(fā)射試驗進行訓(xùn)練,也就是說,你需要將模型置于密集的輸入采樣點空間,以便學(xué)習(xí)從輸入空間到輸出空間的可靠映射。相比之下,人類可以利用他們的抽象能力來提出物理模型——火箭科學(xué)——并得出一個確切的解決方案,只需一次或幾次試驗即可獲得月球上的火箭的發(fā)射參數(shù)。同樣,如果你開發(fā)了一個控制人體的深度網(wǎng)絡(luò),要它能夠在城市中安全地駕駛汽車并不被其他汽車撞,那么這個網(wǎng)絡(luò)將不得不「死亡」數(shù)千次在各種場景中,直到它可以推斷出汽車和危險并制定適當(dāng)?shù)幕乇艽胧?。放到一個新的城市,網(wǎng)絡(luò)將不得不重新學(xué)習(xí)已知的大部分知識。另一方面,人類就不必通過死亡來學(xué)習(xí)安全的行為,這要歸功于他們對假設(shè)情境的抽象建模的能力。
總之,盡管我們在機器感知方面取得了進展,但我們離人類級別的 AI 還很遠:我們的模型只能執(zhí)行局部泛化,要適應(yīng)一種新場景必須與原始數(shù)據(jù)聯(lián)系的很緊密,而人類認(rèn)知能夠極限泛化,快速適應(yīng)全新的情況,或為長期的未來情況做出規(guī)劃。
以下是您應(yīng)該記住的內(nèi)容:到目前為止,深度學(xué)習(xí)的唯一真正成功之處就是在給定大量人工注釋數(shù)據(jù)的情況下,使用連續(xù)幾何變換將空間 X 映射到空間 Y 的能力。做好這件事對于每個行業(yè)來說都是一件改變行業(yè)游戲規(guī)則的事兒,但它離人類級別的 AI 還有很長的路要走。
為了解除這些局限性并開始與人類大腦進行競爭,我們需要從簡單的輸入到輸出映射轉(zhuǎn)向推理和抽象。計算機程序可能是對各種情況和概念進行抽象建模的一個合適的基礎(chǔ)。我們之前書中已經(jīng)說過,機器學(xué)習(xí)模型可以被定義為「可學(xué)習(xí)程序」;目前我們能學(xué)習(xí)的程序?qū)儆谒锌赡艹绦蛑蟹浅*M窄和特定子集。但是如果我們能夠以模塊化和可重用的方式學(xué)習(xí)任何程序呢?讓我們在下一部分中討論深度學(xué)習(xí)的未來發(fā)展之路。
via keras.io,雷鋒網(wǎng) AI 科技評論編譯
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。