- 產品經理的AI實戰:人工智能產品和商業落地
- 車馬
- 5792字
- 2020-06-08 18:04:57
2.4 從卷積神經網絡理解深度學習
在機器學習中,神經網絡與深度學習在當前具有很大的影響力,因此值得我們系統地進行理解。
2.4.1 神經網絡與深度學習的概念關系
我們需要厘清神經網絡與深度學習概念之間的關系。神經網絡與深度學習的概念關系如下圖所示。

神經網絡與深度學習的概念關系
機器學習包含兩個非常重要的概念——深度學習和神經網絡(上圖的兩個橢圓),兩者的交集(上圖的灰色部分)是深度神經網絡,其中包含了深度卷積神經網絡(上圖中間的圓形)。我選擇了非常重要的深度卷積神經網絡進行詳細的講解,產品經理理解了它也就基本理解了當前的人工智能。
2.4.2 從生物神經元到人工神經元
生物神經元是一種細胞,是神經系統的基本結構和功能單位之一。神經系統由大量的神經元細胞構成,神經元細胞由細胞體、樹突和軸突等部分組成。神經元細胞的一端是樹突,另一端是突觸。某個神經元細胞通過一端的樹突獲取其他神經元細胞的突觸傳遞過來的刺激,這種刺激單向地傳遞到另一端的突觸,突觸以化學或電作用的方式傳給其他神經元細胞的樹突。這樣眾多的神經元被連接起來,構成了生物(當然包括人類)的神經系統,孕育出了智能。下圖為生物神經元的示意圖,圖中有兩個神經元細胞,其通過突觸、樹突發生聯系。

生物神經元示意圖
生物神經元可以被視為基本的信息編碼單元。生物神經元和生物神經系統為人工神經元和人工神經系統提供了借鑒。人工神經元模型如下圖所示。

人工神經元模型
一個人工神經元接收來自其他多個神經元傳遞過來的多個輸入值,上圖用X1,X2,…,Xn來表示。這些輸入值乘對應的權重然后求和,上圖中的W1,W2,…,Wn等代表權重。最后,將所得到的和與閾值對比,如果所得到的和超過了閾值,就通過一個激勵函數輸出一個數。
激勵函數,也叫激活函數。常見的激勵函數有很多種,如Sigmoid函數(又稱S形生長曲線)、ReLU函數(線性整流函數)。產品經理在入門階段不需要深究不同激勵函數的數學細節,只要知道有多種類型的激勵函數即可。
為了表達簡潔,后文提及的神經元均指人工神經元。
從上面的介紹可以看出,神經元的功能非常簡單,看上去和“智能”一點關系都沒有。為了便于理解,我們不妨將神經元和晶體管做個比較。單個晶體管功能簡單、能力有限,但如果將數以億計的晶體管有機集成到一塊芯片上,它就能成為功能強大的CPU或GPU,成為當今信息社會的基石。同理,單個神經元雖然簡單,但如果能把大量的神經元有機組合成一個神經網絡,它就能實現人工智能。
2.4.3 神經網絡
將大量的神經元按一定的結構連接起來,就構成了神經網絡。具體的結構方式有很多種,下圖是一種常見的神經網絡結構。這是一個3層的神經網絡,輸入層不計入層數。

一種神經網絡結構的示意圖
這是一個很簡單的神經網絡示意圖。從左往右看,輸入層(input layer)輸入數據,經過兩層隱藏層(hidden layer)的處理,最終由輸出層(output layer)輸出結果,其中箭頭表示數據的流向。上圖中的隱藏層有兩層,更簡單的只有一層,更復雜的可能有數十層甚至數百層。
神經網絡根據組織和訓練方式的不同,分為多種類型。上面這個3層的神經網絡只能實現簡單的功能,如果要實現更復雜的功能,就需要一個更復雜的神經網絡。當神經網絡層數比較多的時候,就稱其為深度學習神經網絡。當前,人工智能的大多數應用成果,都是基于深度學習神經網絡得出的。
2.4.4 卷積運算
卷積神經網絡是一種重要的神經網絡。2012年,卷積神經網絡AlexNet在ImageNet圖像識別大賽中獲得冠軍,此后卷積神經網絡蓬勃發展,并獲得廣泛應用。
卷積神經網絡是以卷積運算為核心算法的神經網絡。卷積是兩個函數之間進行的一種數學運算,我們結合圖片識別的例子來講解。圖片識別的例子如下圖所示。

圖片識別的例子
為了便于理解,我特意選用了一個很簡單的原圖——只有5像素×8像素,圖中每一個方格代表一個像素,每個像素的值只有兩種可能——0或1。卷積核以3像素×3像素為例,為了與原圖區別加了灰色。
卷積運算的過程如下圖所示。

卷積運算的過程
卷積核先從左上角開始。灰色代表疊加上去的卷積核,每次都進行一次求內積。按順序“滑動”卷積核,直到“滑”過整個圖像,就完成了整個卷積過程,得出了卷積結果。
我們來形象地理解一下“卷積”一詞——“卷”就是用一個卷積核從第一個像素開始,席卷所有的像素。“積”是內積,就是將兩個矩陣對應位置的值相乘再相加。
卷積運算并不復雜,只是計算量比較大。那么,我們做卷積的目的是什么呢?簡單地說,是為了從復雜的原圖中提取特征。經過卷積處理之后的圖像如下圖所示。左圖是原始圖像,右圖是經過卷積運算之后的結果。

經過卷積處理之后的圖像
在上圖中,卷積計算將原圖中的很多細節“丟”掉了,但是將物體的輪廓凸顯出來了。而要判斷圖片中是什么內容,輪廓是重要的依據。
不同的卷積核可以從圖像中提取出不同的特征。提取的特征越多,機器識別圖像的準確率就越高。例如,機器識別出一個物體的嘴像鴨子嘴、脖子像鴨子脖子、翅膀像鴨子翅膀、腿像鴨子腿,那就可以判斷出這個物體就是鴨子。
2.4.5 卷積神經網絡的結構和處理過程
理解了卷積運算及其作用,我們來看卷積神經網絡的整體結構。
人在識別圖像時,首先是獲取顏色和亮度特征,其次是獲取邊、角等局部特征,再次是紋理等更復雜的信息,最后形成整個物體的概念。卷積神經網絡模擬了人類的識別方式。
卷積神經網絡是以卷積運算為核心的,因此卷積層是它的核心層。但除此以外,卷積神經網絡還包括其他類型的層,它們緊密配合卷積層來提取、歸納圖片特征,最終在輸出層輸出結果。
我們舉一個卷積神經網絡模型的實例。這個卷積神經網絡的層數較少,只能識別0~9這10個阿拉伯數字。卷積神經網絡模型的實例如下圖所示。

卷積神經網絡模型的實例
在這個卷積神經網絡模型中,輸入層和輸出層之間有6個隱藏層:2個卷積層、2個池化層和2個全連接層。
1. 卷積層
卷積運算的目的是提取特征,為最終的綜合判斷奠定基礎。上圖的卷積神經網絡有2個卷積層,可以提取更多、更細的有用特征。
2. 池化層
池化層,也有人根據其實際作用將其翻譯成“下采樣層”。池化是對經過卷積處理后的圖像進行又一次有效特征提取和模糊處理。可以簡單地將其理解為對圖像數據的一次“有損壓縮”,能減小數據的處理量。
池化的具體算法就是將圖像的某一個區域用一個值代替,如最大值或平均值。如果取最大值,就叫作最大池化;如果取平均值,就叫作均值池化。池化進一步減小了圖像尺寸,大幅減少了計算量。最大池化示意圖如下所示。

最大池化示意圖
上圖左側是池化之前的情況,包含4個2×2的區域。采用最大池化法,在每個2×2區域中取最大值來代表這個區域。上圖右側是池化完的數據,可以看出數據量大幅減少。
卷積層與池化層交替出現,從而可以一步步提取特征、降低數據量。
3. 全連接層
全連接層的每一個節點都與上一層的所有節點相連,這是全連接層名稱的由來。卷積層提取的是局部特征,而全連接層將諸多的局部特征組合起來,從而在輸出層做出最后的判斷。
卷積神經網絡相當于代表大會的整個運作過程,每個卷積核相當于一個領域的代表,眾多的卷積核構成了全體代表。代表大會要對一個復雜議案進行討論,最后決定是否通過。議案中不同的內容會被相應領域的代表理解,這相當于卷積;然后進行分組討論、分組投票、分組計票,這相當于池化;最后要合并投票,這相當于全連接。
最后由輸出層輸出結果。
卷積神經網絡不僅涉及卷積這一種算法,還涉及最大池化等其他算法。因為卷積是核心算法,所以才將這種神經網絡命名為卷積神經網絡。
2.4.6 神經網絡“智能”的形成過程
并不是有了結構就有了“智能”,神經網絡需要一個過程才能產生“智能”。
1. 設計、創建模型
根據要解決的問題,設計模型并用代碼來創建模型。
剛剛創建的神經網絡模型就相當于一個剛剛誕生的人類嬰兒的大腦,并不具有“智能”。“智能”的形成還要依靠后面的環節。
2. 導入訓練數據集,訓練模型并檢驗
經過訓練的模型才會具有“智能”。“智能”相當于人類嬰兒通過學習逐漸學到的眾多知識點。
訓練模型需要預先導入訓練數據集。數據集包含了大量的手寫數字圖片,有各種各樣的具體樣式。但僅僅將眾多數字圖片輸入模型是不行的,因為模型并不認識這些圖對應著什么數字。我們需要對數據做標注,告訴模型每張圖片對應的數字。在人類的指引下,模型就會逐漸摸索出不同數字的規律。
模型訓練成功與否,需要經過實踐檢驗,這需要通過不同于訓練數據的測試數據來檢測模型的輸出效果。訓練數據、人工標注和測試數據的對應關系如下圖所示。當然,真實的數據量遠大于下圖所示的數據量,但下圖已經可以將其原理揭示清楚了。

訓練數據、人工標注和測試數據的對應
測試數據和訓練數據是不同的。例如,我們用很多張手寫的數字“3”來訓練模型,讓模型能正確地認出眾多不同的數字“3”。目標是讓它以后“看”到一個剛剛寫出的(模型在訓練時沒有見過)數字“3”,也能準確地認出這是數字“3”。
如果能夠做到,那就表明模型訓練成功了。如果測試效果不好,那就要從模型本身、訓練數據集等方面找出原因,并進行調整,直到獲得好的測試結果。這個過程有一定的理論依據,但也有很大的經驗成分。
3. 使用模型,解決問題
這是我們的最終目的,讓具備“智能”的模型為我們解決問題。
2.4.7 深度神經網絡
隨著待解決的問題越來越復雜,神經網絡的層數也會逐漸增加,當其達到一定數量時就被稱為深度神經網絡。
斯坦福大學的李飛飛教授發起的ImageNet圖像識別大賽號稱“計算機視覺世界杯”,其部分參賽神經網絡模型的層數如下表所示。

從表中可以看出,神經網絡層數的增長速度驚人,與神經網絡層數增加同步的是運算量的增長。這里存在一個邊際效益遞減的現象,而且遞減非常嚴重。神經網絡的層數算術級增加,導致了計算量的指數級增加,最終獲得改進的可能非常小。
截至2019年年底,最深的模型大概有107個人工神經元,但即便如此還是比青蛙的神經系統規模要小,和人類相比更是差了幾個數量級。人工神經網絡的規模大約每2.4年翻一倍,按照這個發展速度大概到2045年會達到人類大腦的規模。2045年這個時間點被認為是奇點,其根據就在于此。
深度神經網絡、卷積神經網絡是從不同角度對神經網絡進行分類,兩個概念有一定交集。深度是指神經網絡的層數多、層級深;卷積是一種運算方式。在當前的工程實戰中,大多數卷積神經網絡都是深度神經網絡。
上面舉例講解的卷積神經網絡比較簡單,只能識別10個阿拉伯數字。那么對于更復雜的圖像識別,如識別一張彩色圖片中的物體是車還是馬,就需要用到深度卷積神經網絡了。
我們來看一個深度卷積神經網絡的例子——VGG模型,它有22層。當模型訓練完成后,給這個模型一張彩色圖片,它能識別其中的物體具體是什么。
深度卷積神經網絡VGG的結構如下圖所示。每層底部的數字是該層的序號,頂部的數字是該層的神經元數量。由圖可知,VGG模型包含了4種類型的層。這一次我們從數據的角度來理解深度卷積神經網絡是如何運作的。從左往右看,頂部的數字是該層的神經元數量。輸入層是224×224×3,前兩個數字對應著圖片的像素,3代表3個色彩通道(RGB色彩模式),每個色彩通道的值對應1個神經元。隱藏層的第1層是卷積層,頂部的224×224×64代表這一層有224×224×64個神經元。第22層是輸出層,變成了一維的1000個神經元,這表示它可以識別出1000種物體。

深度卷積神經網絡VGG的結構
從數據變化的角度看,輸入的原圖相當于一個長寬都很大的扁平紙箱子,經過深度神經網絡眾多層的處理,這個扁平紙箱子最終在輸出層被“拉”成了一個很窄、很薄的長紙條,這個長紙條有1000個格子,每個格子對應一種物體。模型根據提取的特征,把“識別”出來的結果寫在某個格子里。準確地說,它在每個格子里都“寫”了一個概率值。
最終輸出的概率值是通過Softmax函數處理獲得的。Softmax函數就是歸一化指數函數,產品經理不必細究其具體定義和算法,只需要知道它的作用是將分類的結果以概率值的形式展示即可。VGG結構圖中的最后一層(第22層)既被稱為輸出層又被稱為softmax層。輸出層是指該層的位置和作用(輸出結果),softmax層是指請該層執行的算法,是對同一個事物不同角度的命名。例如,輸出層在“車”這個“格子”里寫了一個值0.9025,在“馬”這個格子里寫了一個值0.0872,那么我們就可以判斷圖片中的物體是車而不是馬。
我花了好長時間才真正理解深度卷積神經網絡的原理,并深深感嘆深度卷積神經網絡發明人的智慧和數學的重要性。由此更確定了當前人工智能中的“智能”的源泉還是人類。人類將智能問題巧妙地轉化為計算問題,而計算機還是只會做計算的機器,只是在人類的指導下表現出了“智能”的樣子。
2.4.8 深度卷積神經網絡的應用
以深度卷積神經網絡為代表的深度神經網絡,為人工“智能”帶來了革命性的變化。以ImageNet圖像識別大賽中的部分數據為例進行說明,具體如下圖所示。

ImageNet圖像識別大賽中的部分數據
人類的錯誤率約為5%,且長期穩定。截至2011年,人工智能的表現一直很糟糕,錯誤率高達25%,這樣的識別率完全無法投入使用。但在2012年,深度學習算法“進場”,將錯誤率大幅降低到15%左右。由此賽場的風向整體轉變,整個競賽在深度學習模型之間展開。此后,人工智能的錯誤率逐年下降,最終低于人類的錯誤率,也因此開啟了人工智能的應用熱潮。
深度學習的應用非常廣泛,其中包括人臉識別。在2016年至2018年的應用狂想期,人臉識別是熱門領域之一。
人臉識別就是根據人臉圖像判斷人的身份,其在身份識別和身份驗證中廣泛應用。現在的手機普遍采用了人臉識別技術,手機通過該技術能夠“認出”正在操作手機的是不是主人。這樣既安全又方便,而以前這兩者很難同時做到。
人臉識別的過程分兩步:人臉檢測和人臉體征提取。其他的工作要么為這兩步配套,要么是這兩步的延伸。人臉檢測就是從畫面中找出人臉,這是第一步。然后針對檢測出的人臉提取特征,找到每張人臉的特征值。人臉檢測、人臉體征提取如下圖所示。把特征信息和人臉的名稱保存下來,就形成了人臉庫。有了人臉庫就可以進行各種應用——人臉核實身份、人臉比對及人臉搜索等。

人臉檢測、人臉體征提取,來自商湯公司官網
人臉比對只是給出一個適配數值,如下圖所示。

人臉比對只是給出適配數值,來自虹軟科技官網
在有些場景中,86.14%的適配值就足夠了,但門禁、金融等領域則要求更高的適配值。所以,如何使用人工智能模型給出的結果還是由人類根據不同的場景來決定的。
深度學習大幅度提高了人臉識別的準確度,這也是當前人臉識別領域的主流算法。深度學習對AI的實際應用做出了重大貢獻,也造就了曠視科技、商湯等多個獨角獸公司。這也是我利用大量篇幅來介紹它的原因。