4.4 为什么使用深层表示-深度学习-Stanford吴恩达教授
| 4.3 核對矩陣的維數 | 回到目錄 | 4.5 搭建深層神經網絡快 |
為什么使用深層表示 (Why Deep Representation?)
我們都知道深度神經網絡能解決好多問題,其實并不需要很大的神經網絡,但是得有深度,得有比較多的隱藏層,這是為什么呢?我們一起來看幾個例子來幫助理解,為什么深度神經網絡會很好用。
首先,深度網絡在計算什么?
首先,深度網絡究竟在計算什么?如果你在建一個人臉識別或是人臉檢測系統,深度神經網絡所做的事就是,當你輸入一張臉部的照片,然后你可以把深度神經網絡的第一層,當成一個特征探測器或者邊緣探測器。在這個例子里,我會建一個大概有20個隱藏單元的深度神經網絡,是怎么針對這張圖計算的。隱藏單元就是這些圖里這些小方塊(第一張大圖),舉個例子,這個小方塊(第一行第一列)就是一個隱藏單元,它會去找這張照片里“|”邊緣的方向。那么這個隱藏單元(第四行第四列),可能是在找(“—”)水平向的邊緣在哪里。之后的課程里,我們會講專門做這種識別的卷積神經網絡,到時候會細講,為什么小單元是這么表示的。你可以先把神經網絡的第一層當作看圖,然后去找這張照片的各個邊緣。我們可以把照片里組成邊緣的像素們放在一起看,然后它可以把被探測到的邊緣組合成面部的不同部分(第二張大圖)。比如說,可能有一個神經元會去找眼睛的部分,另外還有別的在找鼻子的部分,然后把這許多的邊緣結合在一起,就可以開始檢測人臉的不同部分。最后再把這些部分放在一起,比如鼻子眼睛下巴,就可以識別或是探測不同的人臉(第三張大圖)。
你可以直覺上把這種神經網絡的前幾層當作探測簡單的函數,比如邊緣,之后把它們跟后幾層結合在一起,那么總體上就能學習更多復雜的函數。這些圖的意義,我們在學習卷積神經網絡的時候再深入了解。還有一個技術性的細節需要理解的是,邊緣探測器其實相對來說都是針對照片中非常小塊的面積。就像這塊(第一行第一列),都是很小的區域。面部探測器就會針對于大一些的區域,但是主要的概念是,一般你會從比較小的細節入手,比如邊緣,然后再一步步到更大更復雜的區域,比如一只眼睛或是一個鼻子,再把眼睛鼻子裝一塊組成更復雜的部分。
這種從簡單到復雜的金字塔狀表示方法或者組成方法,也可以應用在圖像或者人臉識別以外的其他數據上。比如當你想要建一個語音識別系統的時候,需要解決的就是如何可視化語音,比如你輸入一個音頻片段,那么神經網絡的第一層可能就會去先開始試著探測比較低層次的音頻波形的一些特征,比如音調是變高了還是低了,分辨白噪音,咝咝咝的聲音,或者音調,可以選擇這些相對程度比較低的波形特征,然后把這些波形組合在一起就能去探測聲音的基本單元。在語言學中有個概念叫做音位,比如說單詞ca,c的發音,“嗑”就是一個音位,a的發音“啊”是個音位,t的發音“特”也是個音位,有了基本的聲音單元以后,組合起來,你就能識別音頻當中的單詞,單詞再組合起來就能識別詞組,再到完整的句子。
所以深度神經網絡的這許多隱藏層中,較早的前幾層能學習一些低層次的簡單特征,等到后幾層,就能把簡單的特征結合起來,去探測更加復雜的東西。比如你錄在音頻里的單詞、詞組或是句子,然后就能運行語音識別了。同時我們所計算的之前的幾層,也就是相對簡單的輸入函數,比如圖像單元的邊緣什么的。到網絡中的深層時,你實際上就能做很多復雜的事,比如探測面部或是探測單詞、短語或是句子。
有些人喜歡把深度神經網絡和人類大腦做類比,這些神經科學家覺得人的大腦也是先探測簡單的東西,比如你眼睛看得到的邊緣,然后組合起來才能探測復雜的物體,比如臉。這種深度學習和人類大腦的比較,有時候比較危險。但是不可否認的是,我們對大腦運作機制的認識很有價值,有可能大腦就是先從簡單的東西,比如邊緣著手,再組合成一個完整的復雜物體,這類簡單到復雜的過程,同樣也是其他一些深度學習的靈感來源,之后的視頻我們也會繼續聊聊人類或是生物學理解的大腦。
Small:隱藏單元的數量相對較少
Deep:隱藏層數目比較多
深層的網絡隱藏單元數量相對較少,隱藏層數目較多,如果淺層的網絡想要達到同樣的計算結果則需要指數級增長的單元數量才能達到。
另外一個,關于神經網絡為何有效的理論,來源于電路理論,它和你能夠用電路元件計算哪些函數有著分不開的聯系。根據不同的基本邏輯門,譬如與門、或門、非門。在非正式的情況下,這些函數都可以用相對較小,但很深的神經網絡來計算,小在這里的意思是隱藏單元的數量相對比較小,但是如果你用淺一些的神經網絡計算同樣的函數,也就是說在我們不能用很多隱藏層時,你會需要成指數增長的單元數量才能達到同樣的計算結果。
我再來舉個例子,用沒那么正式的語言介紹這個概念。假設你想要對輸入特征計算異或或是奇偶性,你可以算 x1XORx2XORx3XOR?xnx_1XORx_2XORx_3XOR\cdots x_nx1?XORx2?XORx3?XOR?xn? ,假設你有 nnn 或者 nxn_xnx? 個特征,如果你畫一個異或的樹圖,先要計算 x1x_1x1? , x2x_2x2? 的異或,然后是 x3x_3x3? 和 x4x_4x4? 。技術上來說如果你只用或門,還有非門的話,你可能會需要幾層才能計算異或函數,但是用相對小的電路,你應該就可以計算異或了。然后你可以繼續建這樣的一個異或樹圖(上圖左),那么你最后會得到這樣的電路來輸出結果 yyy , y^=y\hat{y}=yy^?=y ,也就是輸入特征的異或,或是奇偶性,要計算異或關系。這種樹圖對應網絡的深度應該是 O(log?(n))O(\log(n))O(log(n)) ,那么節點的數量和電路部件,或是門的數量并不會很大,你也不需要太多門去計算異或。
是如果你不能使用多隱層的神經網絡的話,在這個例子中隱層數為 O(log?(n))O(\log(n))O(log(n)) ,比如你被迫只能用單隱藏層來計算的話,這里全部都指向從這些隱藏單元到后面這里,再輸出 yyy ,那么要計算奇偶性,或者異或關系函數就需要這一隱層(上圖右方框部分)的單元數呈指數增長才行,因為本質上來說你需要列舉耗盡 2n2^n2n 種可能的配置,或是 2n2^n2n 種輸入比特的配置。異或運算的最終結果是1或0,那么你最終就會需要一個隱藏層,其中單元數目隨輸入比特指數上升。精確的說應該是 2n?12^{n-1}2n?1 個隱藏單元數,也就是 O(2n)O(2^n)O(2n) 。
我希望這能讓你有點概念,意識到有很多數學函數用深度網絡計算比淺網絡要容易得多,我個人倒是認為這種電路理論,對訓練直覺思維沒那么有用,但這個結果人們還是經常提到的,用來解釋為什么需要更深層的網絡。
除了這些原因,說實話,我認為“深度學習”這個名字挺唬人的,這些概念以前都統稱為有很多隱藏層的神經網絡,但是深度學習聽起來多高大上,太深奧了,對么?這個詞流傳出去以后,這是神經網絡的重新包裝或是多隱藏層神經網絡的重新包裝,激發了大眾的想象力。拋開這些公關概念重新包裝不談,深度網絡確實效果不錯,有時候人們還是會按照字面意思鉆牛角尖,非要用很多隱層。但是當我開始解決一個新問題時,我通常會從logistic回歸開始,再試試一到兩個隱層,把隱藏層數量當作參數、超參數一樣去調試,這樣去找比較合適的深度。但是近幾年以來,有一些人會趨向于使用非常非常深邃的神經網絡,比如好幾打的層數,某些問題中只有這種網絡才是最佳模型。
這就是我想講的,為什么深度學習效果拔群的直覺解釋,現在我們來看看除了正向傳播以外,反向傳播該怎么具體實現。
課程PPT
| 4.3 核對矩陣的維數 | 回到目錄 | 4.5 搭建深層神經網絡快 |
總結
以上是生活随笔為你收集整理的4.4 为什么使用深层表示-深度学习-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.3 核对矩阵的维数-深度学习-Sta
- 下一篇: 4.5 搭建深层神经网络块-深度学习-S