深度學(xué)習(xí)是一種處理和解讀數(shù)據(jù)的方式,我們需要更深入的理解機(jī)器的運(yùn)作才能更更好的控制和應(yīng)用它為我們服務(wù),接下來(lái)將要詳細(xì)討論深度學(xué)習(xí)得以實(shí)現(xiàn)如此優(yōu)異表現(xiàn)的原因。為了簡(jiǎn)化討論的過(guò)程,本文將利用Tensorlow及其API為例來(lái)進(jìn)行討論,從認(rèn)知論的程度來(lái)理解深度學(xué)習(xí)背后的魅力。
神經(jīng)網(wǎng)絡(luò)表現(xiàn)出的縮減效應(yīng)
對(duì)于深度學(xué)習(xí)的理解有各種不同的觀點(diǎn)和層次順序。我們首先用下面的網(wǎng)絡(luò)結(jié)構(gòu)作為例子:
上圖描述了一張圖像經(jīng)過(guò)一個(gè)深度學(xué)習(xí)網(wǎng)絡(luò)的傳播過(guò)程,我們?cè)谶@里先進(jìn)行一個(gè)小小的變換,將最左端看做是底部,而最右端看做是整個(gè)網(wǎng)絡(luò)的頂部。這樣我們就可以利用自底向上的方法來(lái)對(duì)網(wǎng)絡(luò)進(jìn)行分析。
上圖中我們會(huì)看到隨著信息向網(wǎng)絡(luò)頂層傳播,數(shù)據(jù)和復(fù)雜度在明顯的下降。我們能不能假設(shè)這一過(guò)程是一種認(rèn)知的濃縮呢?它是不是將不重要的部分剔除了,如何做到的呢?深度學(xué)習(xí)模型通過(guò)什么方式來(lái)判斷哪些是顯著的特征而哪些不是呢?
對(duì)于純粹的數(shù)據(jù)縮減來(lái)說(shuō)主要是通過(guò)壓縮或者隨機(jī)刪除的機(jī)制來(lái)實(shí)現(xiàn)的,但這對(duì)于深度學(xué)習(xí)來(lái)說(shuō)卻不是一個(gè)好辦法。我們需要的是提出那些不顯著的部分并在最后留下那些顯著的數(shù)據(jù)和特征。但很多人對(duì)于基于重要性的縮減方法沒有正確的認(rèn)識(shí)并利用了無(wú)損壓縮算法來(lái)進(jìn)行評(píng)估。
下面讓我們用一個(gè)實(shí)際的例子來(lái)自底向上的理解深度學(xué)習(xí)網(wǎng)絡(luò)到底進(jìn)行了什么樣的工作。假設(shè)我們要建立一個(gè)人臉檢測(cè)系統(tǒng),我們先構(gòu)建一個(gè)可以理解圖像的神經(jīng)網(wǎng)絡(luò)并利用很多帶標(biāo)簽的照片對(duì)它進(jìn)行監(jiān)督訓(xùn)練并將網(wǎng)絡(luò)植入到系統(tǒng)中去,當(dāng)我們?cè)佥斎胍粡埌四樀恼掌瑫r(shí)系統(tǒng)就能迅速的找出圖像中人臉的位置。就這一過(guò)程而言,輸入數(shù)據(jù)是RGB彩色照片上的像素值,并在網(wǎng)絡(luò)中進(jìn)行了各種計(jì)算隨后輸出結(jié)果。我們可以看到網(wǎng)絡(luò)的輸出要比輸入少很多,這意味著在處理過(guò)程中很多信息被丟棄了。從輸入或者低級(jí)的抽象進(jìn)行一定程度的縮減并傳遞到下一層進(jìn)行操作。
圖片在神經(jīng)網(wǎng)絡(luò)中傳輸?shù)墓适吕铮懊骐A段神經(jīng)網(wǎng)絡(luò)只能操作一些臨近的像素并檢測(cè)出簡(jiǎn)單的直線和曲線信息、以及不同的顏色。所以他們描述的主要是基于線條和顏色的基本信息。
而上面的層則會(huì)進(jìn)行更為復(fù)雜的處理,他們可能會(huì)“看到”某些邊緣與先前看到過(guò)的邊緣很類似屬于某一類物體。它們也許會(huì)說(shuō)“這和之前看到的草很類似呀”。甚至沒有標(biāo)簽信號(hào)的時(shí)候,這種高層次的信號(hào)也能形成某一種表達(dá)向前傳播。
在更上一層,神經(jīng)網(wǎng)絡(luò)可能會(huì)看到更多的草“哇,這么多草葉子,這里一定是草地了”,那么草地的信號(hào)會(huì)被繼續(xù)向前傳播;
最后頂部的操作會(huì)綜合這些結(jié)果“我們是人臉檢測(cè)器,并不關(guān)心草地,忘了它們吧”。最后將不顯著的草地的信息丟棄。
將不是人臉的數(shù)據(jù)剔除后剩下的是什么呢?
在你知道網(wǎng)絡(luò)的表達(dá)是什么之前是不能丟棄其中的信息的。具體來(lái)說(shuō)就像上面的例子中低層級(jí)的草葉檢測(cè)器不能丟棄草一樣,因?yàn)樗鼈冞€不知道更高級(jí)的顯著性特征草地-不是草地/人臉-不是人臉的線索。
我們能做的僅僅是在理解和抽象的層面上進(jìn)行操作。每一個(gè)層級(jí)接收低下傳上來(lái)的描述、丟棄它認(rèn)為不相關(guān)的部分并將它們自己對(duì)于信息的表示向上傳遞,直到到達(dá)真正知道網(wǎng)絡(luò)所要搜尋的目標(biāo)的層。
而這也是深度學(xué)習(xí)之所以深的原因。
這并不是一個(gè)新穎的觀點(diǎn),早在1959年Oliver Selfridge就提出了類似的觀點(diǎn)稱為喧囂,但長(zhǎng)期被人工智能界忽略了,但它卻提前60年預(yù)言了信息自下向上傳遞的層狀架構(gòu),這就是今天廣泛使用的深度神經(jīng)網(wǎng)絡(luò)。
那么在具體的程序中是否有支持縮減的操作呢?讓我們來(lái)看看tensorflow中的算子。
我們先來(lái)看看池化操作,tensorflow中有超過(guò)50個(gè)池化操作算子,下圖是2*2的最大池化操作:
它將鄰近的四個(gè)像素中最大值傳遞給下一個(gè)層級(jí)??拷斎攵说乃膫€(gè)值可能是相互鄰近的像素值,但更多通過(guò)池化則只選出了其中最重要的一個(gè),可以看做是拋棄了75%不重要的部分,僅僅留下最高的一個(gè)值。
在像素層面可能是最亮的值,在上面草葉的例子中就會(huì)表示“這里至少有一片葉子”。對(duì)于丟棄信息的解讀是需要根據(jù)網(wǎng)絡(luò)層的實(shí)際情況來(lái)進(jìn)行的,事實(shí)上神經(jīng)網(wǎng)絡(luò)層代表了不同的縮減或者稱之為抽象。
現(xiàn)在我們應(yīng)該對(duì)深度神經(jīng)網(wǎng)絡(luò)中最為重要的觀點(diǎn)有了一定的感受了:縮減需要在不同層次的抽象上進(jìn)行。在決定哪些需要保留哪些需要丟棄只能在對(duì)應(yīng)的抽象層次上進(jìn)行。我們不能在僅僅看到深淺不一的綠色就決定丟棄草地的抽象,因?yàn)檫@個(gè)層次還沒有草地的信號(hào)被表達(dá)出來(lái)。這也對(duì)應(yīng)著一個(gè)簡(jiǎn)單的道理,對(duì)于行為的決策只有在對(duì)學(xué)習(xí)產(chǎn)生積極貢獻(xiàn)的時(shí)候才能做出,不可靠或無(wú)用的決策將會(huì)通過(guò)一些機(jī)制被忽略。
接下來(lái)我們來(lái)觀察tensorflow中的卷積操作,手冊(cè)中是這樣介紹卷積操作的:
雖然她被稱為卷積操作,但實(shí)際上應(yīng)該嚴(yán)格的成為互相關(guān)操作。(編者注:卷積和互相關(guān)不同在核是否翻轉(zhuǎn),如果核對(duì)稱則相同)
不同的核用于發(fā)現(xiàn)不同的互相關(guān)和共現(xiàn)關(guān)系。共現(xiàn)關(guān)系能對(duì)圖像中不同位置的模式進(jìn)行學(xué)習(xí)。就像Hinton舉的一個(gè)例子嘴總是在鼻子的下面,這種空間關(guān)系是深度網(wǎng)絡(luò)能夠從學(xué)習(xí)過(guò)程中發(fā)現(xiàn)模式并與標(biāo)簽對(duì)應(yīng)起來(lái)。這使得圖像理解器可以為圖像中鼻子的位置打上鼻子的標(biāo)簽。此外系統(tǒng)還能夠?qū)W習(xí)到物體間相對(duì)后面和下面的概念。
傳播到深度網(wǎng)絡(luò)高層次的信息描述的正是這些關(guān)系,而不相關(guān)的信息則被視為不顯著的并被丟棄。在上面的示意圖中, 丟棄操作是由卷積+ReLU后面的最大池化層完成的。需要說(shuō)明的ReLU是一種用于丟棄負(fù)值的函數(shù),同時(shí)它還為深度學(xué)習(xí)引入了重要的非線性但這不是此次分析的重點(diǎn)。
由卷積ReLU和池化層組成的模塊在深度學(xué)習(xí)中十分普遍,因?yàn)檫@三者的結(jié)合形成了十分可靠的減約過(guò)程。他們常常被打包在一起作為深度學(xué)習(xí)的單元被整合到計(jì)算圖中去,并用各自不同的方式抽取出數(shù)據(jù)中顯著的特征。
最后再?gòu)?qiáng)調(diào)一遍,這就是深度學(xué)習(xí)為何深的原因,因?yàn)槟阒荒茉谀隳芾斫獬橄蟊磉_(dá)相關(guān)性的不同層處進(jìn)行縮減,拋棄不相關(guān)的信息,而淺層的網(wǎng)絡(luò)并沒有理解這些表達(dá)的能力。
深度學(xué)習(xí)科學(xué)嗎?
深度學(xué)習(xí)一般使用線性代數(shù)來(lái)進(jìn)行數(shù)學(xué)描述,但我們還不能通過(guò)這些數(shù)學(xué)公式解釋出深度網(wǎng)絡(luò)可以形成各種復(fù)雜的理解能力。
讓我們先來(lái)考慮一下卷積操作,卷積層能夠發(fā)現(xiàn)相關(guān)性。例如很多片草葉出現(xiàn)的時(shí)候意味著一片草地。模型在訓(xùn)練過(guò)程中不斷去發(fā)現(xiàn)內(nèi)在的相關(guān)性,一旦發(fā)現(xiàn)后就會(huì)對(duì)網(wǎng)絡(luò)權(quán)重進(jìn)行調(diào)整進(jìn)行正確的縮減,以增加模式被再次發(fā)現(xiàn)的概率。但在本質(zhì)上所有的相關(guān)性都會(huì)被遺忘隨后在下一次訓(xùn)練中重新發(fā)現(xiàn),深度學(xué)習(xí)向上傳輸?shù)男盘?hào)和向下傳輸?shù)奶荻仁歉鶕?jù)誤差的信號(hào)來(lái)調(diào)整權(quán)重的,也可以說(shuō)系統(tǒng)是從錯(cuò)誤中學(xué)習(xí)的。在這一層次上,這種自下而上自頂向下的方式將會(huì)在每張圖像上重復(fù)很多次。
這種上上下下的方式造就了對(duì)于圖像的理解能力,也有人在文本上應(yīng)用同樣的方法獲得成功。其中的過(guò)程就和自然學(xué)習(xí)一樣,將生物的神經(jīng)元和軟件中的“神經(jīng)元”聯(lián)系了起來(lái)。
無(wú)論是深度學(xué)習(xí)算法家族還是自然學(xué)習(xí),都在科學(xué)上有重要的意義,他們跳過(guò)了因果聯(lián)系的推導(dǎo)過(guò)程,而從相關(guān)性中去發(fā)掘聯(lián)系。這在經(jīng)典科學(xué)理論中是不成立的,要么是優(yōu)美的公式要么就什么也不是。很多深度學(xué)習(xí)程序僅僅包含少量的線索來(lái)實(shí)現(xiàn)一般的結(jié)果,有時(shí)候增加層數(shù)并不管用,這樣的問(wèn)題在深度學(xué)習(xí)的日常中并不罕見。沒有先驗(yàn)?zāi)P蜎]有信息,對(duì)于模型的可靠性、正確性或者系統(tǒng)的整體性能我們只有通過(guò)不斷地的驗(yàn)證才能完成。
但你可能會(huì)問(wèn)為什么我們還要使用這種不能保證給出正確答案的系統(tǒng)呢?因?yàn)槲覀儎e無(wú)選擇了。我們?cè)诳煽康目s減方法失效的時(shí)候僅僅只能使用系統(tǒng)全局的方法,在任務(wù)需要理解能力需要自動(dòng)縮減內(nèi)容和復(fù)雜度的時(shí)候只有這樣的方法。
難道真沒有其他的選擇了嗎?有啊!我們周圍幾十億人類就已經(jīng)掌握了這種復(fù)雜的技能。因?yàn)槿藗兩钤谪S富多彩的世界里。所以你可以使用理論上未被證明但效果十分顯著的方法,一種建立在深度學(xué)習(xí)之上的全局理解機(jī)器來(lái)理解世界。這樣的機(jī)器不能被證明是正確的因?yàn)樗谕ǔ5挠?jì)算機(jī)不同,它主要的工作是縮減信息,這是一種從前只在動(dòng)物里擁有的能力——一種全局性(Holistic skill)的能力。
在AI認(rèn)識(shí)論中有一個(gè)十分有力的結(jié)果:我們將會(huì)再次遇到曾經(jīng)遇見的事物。這種縮減和抽象的能力將會(huì)成為人工智能領(lǐng)域必不可少的功能。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100973 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5511瀏覽量
121354
原文標(biāo)題:自底向上看深度學(xué)習(xí)網(wǎng)絡(luò)的工作原理
文章出處:【微信號(hào):thejiangmen,微信公眾號(hào):將門創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論