深度学习工作机制通俗介绍
在本文之前,寫過一些關于人工智能的科普性文章,比如人工智能為什么能起作用、模型是什么以及如何去創建模型、還原論和整體論以及降維過程(需外網)。這些基礎性的文章使得我們能夠更好地理解機器學習,感興趣的讀者可以閱讀一下。本文主要是討論深度學習的工作原理,這也是人工智能科普性文章系列的最后一篇。
深度學習執行降維過程
考慮到之前的章節,這不是一個令人吃驚的斷言。在之前的章節中,我們從幾個角度和層次討論了人工智能是如何地高效工作。此外,也使用TensorFlow及相關API實現的例子演示了二者的性能??梢园l現,TensorFlow及API的結合能夠在這個系統中實現很多的解決方案,且泛化足夠簡單。
下圖是使用Keras圖像理解示意圖
首先,將最左邊的輸入層稱作“底部”,將上圖旋轉九十度后可以發現,可以將其看作是一個從低到高的抽象層次堆棧,隨著層數的增多,可以看到數據量和每層的復雜度明顯降低,我們能否確定這個系統是否也在執行認知降維過程?它是否減少了一些不重要的東西?如果是這樣的話,深度學習是如何做到這一點以及怎樣確定哪些是重要的東西?
一般而言,可以通過一些壓縮或隨機刪除等方法來實現原始數據的降維,但這是不可取的。降維的目標是丟掉一些不重要的部分,保留重要的部分。一些人可能不理解基于顯著性簡化和可逆無損壓縮算法作為智能度量的重要性,這些對于機器學習而言都是非常重要的內容。
所以我們可以想象一個關于深度學習的神話,假設我們已經建立了一個從圖像中找到人臉的系統,并意圖將它作為照相機中的一個功能特性。目前,許多照相機已經具備了這一特性,因此,這也是個常見的例子。我們實現了一個圖像理解神經網絡模型,并花一些時間給該模型展示許多不同類型的圖像,這就是使用監督學習來學習模型,之后就能利用該模型來展示從圖像中識別人臉的這一童話。
如上圖所示,模型首先將輸入圖像從RGB彩色值轉換為輸入數組,然后數組經過許多層的操作處理后,輸出的數據比輸入的數據更少,這也意味著有些數據被處理掉了。每層接收的輸入信號都來自上一層的輸入,每層的輸出傳送給下一層。
在一些底層時,一些操作可能只是得到一些相鄰的像素并確定方向,提取到一些邊角信息。隨著層數的加深,可以提取到更加抽象具體的信息,最終得到能夠確定為一張人臉的特征信息。
丟棄所有非人臉特征信息后,剩下的就是臉。
人為的丟棄某些信息是不可取的,因為無法判斷這些丟棄掉的信息是否有用,直到可以確定抽象級別的信息時,才可以進行操作。同理,以一個公園游玩照片為例,模型的一些底層操作不能丟棄草坪的信息,因為它們沒有關于草坪或地面的顯著線索,而更高層能夠得到更加抽象具體的信息,因此能夠丟棄一些無用的信息。每一層從前一層接收“低級描述”,并丟棄它認為不相干的信息,并向下一層傳送更抽象的信息,直到最終找到人臉。這也是為什么深度學習模型一般層次會比較深的原因。
深度學習這一想法本身并不新穎,早在1959年就被討論過。當時受限于算法、硬件水平及數據量的限制,沒有得到很好的發展。近60年,隨著硬件水平的不斷提升,數據量的爆炸式增長,深度學習再一次煥發出勃勃生機,并展現出優異的性能。
下面講解池化層操作,如下圖所示。在TensorFlow中,有50多種池化操作,下圖顯示的2x2最大值池化操作,左圖到右圖需要執行四次池化操作。
2x2最大值池化操作就是從2x2矩形框中挑選出其中的最大值,并將其作為輸出。輸入層四個相鄰的像素值可能表示RGB通道中的亮度,因此數值更大的值能夠更能代表其亮度信息。在2x2最大值池化操作中,舍去了75%的輸入數據,只保存并傳播其中的最大值。
就像素值而言,它可能意味著最亮的顏色值,但就草葉而言,這可能意味著“這里至少有一片草葉”。每層提取特征,并丟棄一些特征,這也意味著進行著降維操作。
可以清楚地看到,深層神經網絡中最重要的思想之一就是:必須在多個抽象層上進行降維。只有在適當的層才能決定哪些信息可能是相關的,哪些信息可能是需要丟棄的。這也是一種簡化過程,只有在學習中取得好的結果時,才會以這種方式作出決定。
下面講解卷積過程,根據TensorFlow手冊:
“請注意,雖然這些操作被稱為卷積,嚴格上來講,應該被稱作‘互相關’”。
卷積層發現各種類型的交叉相關與共生性,圖像內部存在空間關系,就像Geoff Hinton最近舉的例子一樣,通常在鼻子下面發現嘴巴。更明顯的是,在有監督學習情況中,模式與可用元信息(標簽)之間存在關聯。
網絡模型中的更高層次的信息描述了這些相關性,不相關信息被視為非顯著信息而被丟棄。從之前的模型圖中可以看到,卷積層與ReLU激活函數層后接著最大值池化層。其中ReLU是一種新型激活函數,能夠舍去負值,該非線性函數對深度學習而言是非常重要的,相較于傳統的Sigmoid等激活函數而言,ReLU激活函數表現更加優異。
由卷積層-ReLU層-池化層這三層組成的這種模式是相當流行且實用的,這是由于這種組合方式執行了一個可靠的降維過程,絕大多數的卷積神經網絡模型都參考這種結構模式來建模。隨著模型的加深,特征逐漸被減少,直到最終得到能夠完成相關任務的正確特征。
這也是為什么深度學習模型是深層的原因,因為如果你明白在不同抽象層中哪些是相關和不相干信息,那么你只能通過丟棄無關的信息來降維。
深度學習是科學的嗎?
盡管深度學習過程可以用數學符號描述(大多數是采用線性代數的形式),但這個過程本身是不科學的。深度學習就像一個黑匣子,我們無法理解這個系統是如何理解處理特征并完成相關任務的。
就拿卷積操作舉例,正如TensorFlow手冊中所說,卷積層發現相關性。許多草葉通常代表一個草坪,在TensorFlow中,系統會花費大量時間來發現這些相關性。一旦發現了某些相關性,這種關聯會導致模型中某些權重的調整,從而使得特征提取正確。但從本質上來說,所有的相關性開始時對于模型來說都被遺忘了,必須在每次前向傳播和梯度下降的過程中來重新發現。這種系統實際上是從錯誤中吸取教訓,即模型輸出與理想輸出之間的誤差。
前向和反向傳播過程對圖像理解有一定的意義,有些人在文本上使用了相同的算法。幸運的是,針對于文本任務而言,有更加高效的算法。首先,我們可以使用大腦突觸或編程語言中的常規指針或對象引用顯式地表示所發現的相關性,神經元與神經元之間有關聯。
無論是深度學習算法,還是有機學習,都不是科學的。它們在缺乏證據并信任相關性的前提下得出結論,而不堅持可證明的因果關系。大多數深層神經網絡編程很難得到理想結果并存在一定的誤差,只能通過從實驗結果中發現線索來改進模型。增加網絡層數不總是有效的,對于大多數深度神經網絡從業者而言,根據實驗結果來調整改進網絡就是他們的日常工作。沒有先驗模型,就沒有先驗估計。任何深層神經網絡可靠性和正確性的最佳估計,都是經過大量的實驗得到。
為什么我們會使用不能保證得到正確答案的工程系統呢?因為我們別無選擇,使用整體方法當作可靠的降維方法是不可用的。與此類似,當任務需要有能力自主地執行上下文切片簡化時,模型需要具有理解能力。
我們沒有別的辦法來處理這些不靠譜的機器嗎?當然可以,因為地球上有幾十億的人類已經掌握了處理這項復雜任務的技能,所以你可以取代表現良好但理論上未經證實的玩意兒——一個通過深層神經網絡建立的機器。比比你和機器誰每小時能掙更多的錢?這看起來不太像是科技的進步,這類機器不能被證明是正確的,因為它不能像普通計算機那樣運行。
我最喜歡的一句話是由McCarthy和Hayes所斷言的,“你看到了它,你將再次看到它”,深度學習是人工智能認識論其中一部分內容,盡管目前大多數智能是不科學的,但在幾年后,我們將對智能定義達成一致意見,最終實現智能化的世界。
數十款阿里云產品限時折扣中,趕緊點擊領劵開始云上實踐吧!
作者信息
Monica Anderson,Syntience公司研究總監。
個人主頁:https://www.linkedin.com/in/syntience/
本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區組織翻譯。
文章原標題《Why Deep Learning Works》,作者:Monica Anderson,譯者:海棠,審閱:袁虎。
文章為簡譯,更為詳細的內容,請查看原文
?
總結
以上是生活随笔為你收集整理的深度学习工作机制通俗介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 139.00.007 Git学习-Che
- 下一篇: RT-Thread OS的启动流程