作者:宇信教育 祝森
眼下最熱門(mén)的ICT技術(shù),人工智能絕對(duì)可以排在前列。
2016年谷歌Alpha Go與圍棋世界冠軍李世石上演"世紀(jì)人機(jī)大戰(zhàn)",將人工智能(AI)的關(guān)注度推到了前所未有的高度,到如今隨處可見(jiàn)的刷臉支付、AI音箱、掃地機(jī)器人,以及各大頂級(jí)公司都在投入的無(wú)人駕駛研究,背后都有人工智能技術(shù)在做支撐。預(yù)計(jì)2025年,全球企業(yè)對(duì)AI的采用率將達(dá)86%。AI的崛起將深刻改變企業(yè)的業(yè)務(wù)模式和價(jià)值創(chuàng)造模式。
人工智能的底層模型是"神經(jīng)網(wǎng)絡(luò)"(neural network)。許多復(fù)雜的應(yīng)用(比如模式識(shí)別、自動(dòng)控制)和高級(jí)模型(比如深度學(xué)習(xí))都基于它。學(xué)習(xí)人工智能,一定是從它開(kāi)始。
人為什么能夠思考?原因在于人體的神經(jīng)網(wǎng)絡(luò),其中思考的基礎(chǔ)是神經(jīng)元,如果能夠"人造神經(jīng)元"(artificial neuron),就能組成人工神經(jīng)網(wǎng)絡(luò),模擬思考。一直以來(lái),科學(xué)家都希望模擬人的大腦,造出可以思考的機(jī)器。上個(gè)世紀(jì)六十年代,科學(xué)家提出了最早的"人造神經(jīng)元"模型,叫做"感知器"(perceptron),直到今天還在用。
人工神經(jīng)網(wǎng)絡(luò),簡(jiǎn)稱神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN):是由人工神經(jīng)元互連組成的網(wǎng)絡(luò),它是從微觀結(jié)構(gòu)和功能上對(duì)人腦的抽象、簡(jiǎn)化,是模擬人類(lèi)智能的一條重要途徑,反映了人腦功能的若干基本特征,如并行信息處理、學(xué)習(xí)、聯(lián)想、模式分類(lèi)、記憶等。

如圖,我們可以初步理解神經(jīng)網(wǎng)絡(luò)模型是一個(gè)包含輸入,輸出與計(jì)算功能的模型。輸入可以類(lèi)比為神經(jīng)元的樹(shù)突,輸出可以類(lèi)比為神經(jīng)元的軸突,計(jì)算則可以類(lèi)比為細(xì)胞核。
作為AI技術(shù)的底層技術(shù),為什么神經(jīng)網(wǎng)絡(luò)的提出已久,但近幾年才大放光芒?這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)等算法需要巨大算力來(lái)支撐。在2016年的那場(chǎng)人機(jī)大戰(zhàn)中,谷歌DeepMind公司共消耗了1202顆CPU和176顆GPU的計(jì)算資源,Alpha Go的浮點(diǎn)運(yùn)算能力是1998年IBM深藍(lán)戰(zhàn)勝象棋冠軍時(shí)的3萬(wàn)倍之多,所以當(dāng)前超高的運(yùn)算能力是支撐AI技術(shù)發(fā)展的重要推手。
人工智能目前最成熟的應(yīng)用方向之一是圖像識(shí)別,它是實(shí)現(xiàn)如何讓機(jī)器理解圖像中的內(nèi)容的AI技術(shù),而其中神經(jīng)網(wǎng)絡(luò)對(duì)圖像識(shí)別技術(shù)發(fā)展起到了突出的作用。
接下來(lái)我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)更好的理解神經(jīng)網(wǎng)絡(luò)。
當(dāng)一張圖片輸入到電腦中,它通常是一種三維數(shù)組的形式,第一維度我們通常稱為Height,第二維度我們稱為Width,這兩個(gè)維度構(gòu)即圖像被計(jì)算機(jī)分割采樣的尺寸,也就是通常所說(shuō)的分辨率(如一張分辨率為1920*1080的圖像,表示這幅圖像是由1920*1080個(gè)點(diǎn)組成),第三維度稱為Channel也就是通道,通常以RGB作為通道,表示圖像每個(gè)劃分的點(diǎn)的色彩,也就是他們分別在紅,綠、藍(lán)三原色域上的取值,如下圖:

我們的任務(wù)是,搜集大量相關(guān)的照片(即有些圖片是貓,有些不是貓,比如是小狗),并對(duì)已知照片的結(jié)果做標(biāo)記(這個(gè)動(dòng)作也叫打標(biāo)簽):是貓的圖片記做1,不是貓的記做0,如下圖。

讓計(jì)算機(jī)識(shí)別已有標(biāo)簽圖片的信息,建立一套識(shí)別模式,再用這套識(shí)別模式判斷新輸入的圖片是不是貓,這就是一個(gè)簡(jiǎn)單的圖像識(shí)別問(wèn)題。
到此我們可以將上述任務(wù)轉(zhuǎn)化為:對(duì)一批三維數(shù)組進(jìn)行層層計(jì)算、轉(zhuǎn)換、壓縮,最終輸出每個(gè)三維數(shù)組是0或1的過(guò)程,而神經(jīng)網(wǎng)絡(luò)就是完成這個(gè)過(guò)程的計(jì)算模型之一,也是目前比較出色的。
一個(gè)典型的神經(jīng)網(wǎng)絡(luò)模型包含有輸入、輸出,以及中間代表計(jì)算功能的隱藏層,如下圖,圖中各個(gè)層級(jí)之間的關(guān)系用箭頭線表示,稱為"連接",每一個(gè)連接都代表計(jì)算過(guò)程中的一個(gè)權(quán)重與偏差,也就是模型的參數(shù)。

結(jié)合上圖我們繼續(xù)概括下神經(jīng)網(wǎng)絡(luò)算法進(jìn)行圖像識(shí)別的過(guò)程:每個(gè)圖像對(duì)應(yīng)的三維數(shù)組在計(jì)算機(jī)中被處理成數(shù)字矩陣,也就是特征矩陣,也可以看成是一系列的向量(矩陣的每一行或每列可以看成一個(gè)向量),這里簡(jiǎn)化為只有三個(gè)向量X1,X2,X3作為輸入特征,它們們被當(dāng)作神經(jīng)網(wǎng)絡(luò)的輸入層。輸入層后面是隱藏層,由一個(gè)個(gè)神經(jīng)元構(gòu)成,它們代表著獲取的信息。最后一層是輸出層,一般是用來(lái)產(chǎn)生預(yù)測(cè)值的,此任務(wù)中輸出的是一個(gè)0或者1。其中每個(gè)"連接"是通過(guò)樣本特征矩陣和權(quán)重矩陣進(jìn)行矩陣相乘,然后加上偏差形成的,并且也是下一層的輸入。
此時(shí)我們可以進(jìn)一步總結(jié)上述任務(wù):一個(gè)圖片是否是貓的識(shí)別問(wèn)題,其實(shí)就是訓(xùn)練一個(gè)好的神經(jīng)網(wǎng)絡(luò),訓(xùn)練的意思就是讓權(quán)重和偏差的值不斷調(diào)整到最佳,以使得整個(gè)網(wǎng)絡(luò)的預(yù)測(cè)效果最好。
接下來(lái)我們來(lái)說(shuō)明神經(jīng)網(wǎng)絡(luò)算法是如何讓計(jì)算機(jī)訓(xùn)練出"一套"好的權(quán)重和偏差的。首先我們來(lái)了解下神經(jīng)網(wǎng)絡(luò)中神經(jīng)元是如何形成的。
我們用X代表輸入層,也就是x1、x2、x3構(gòu)成的特征矩陣,用W代表權(quán)重矩陣,用b代表偏差,前面講過(guò)我們通過(guò)樣本特征矩陣和權(quán)重矩陣進(jìn)行矩陣相乘WX,然后加上偏差b(參數(shù)值)形成每一個(gè)"連接", 用z代表矩陣相乘加上偏差的結(jié)果,即z=WX+b,這樣的線性組合結(jié)果只能劃分線性關(guān)系,而現(xiàn)實(shí)世界轉(zhuǎn)化來(lái)的分類(lèi)問(wèn)題大多是非線性的。因此神經(jīng)網(wǎng)絡(luò)中引入激活函數(shù)的概念,實(shí)現(xiàn)對(duì)非線性問(wèn)題的劃分,這樣極大的擴(kuò)充了神經(jīng)網(wǎng)絡(luò)的分類(lèi)能力。
我們展示一個(gè)常用的激活函數(shù):sigmoid函數(shù),如下圖表示的是sigmoid函數(shù)對(duì)輸入變量X在[-6,6]區(qū)間上的映射。

激活函數(shù)基本上都是非線性的,如果沒(méi)有激活函數(shù)會(huì)發(fā)生什么呢?
線性組合z=WX+b其實(shí)就是在多維空間(X有多少個(gè)特征,多維空間就是多少維)里切一刀,如下圖,我們無(wú)法通過(guò)線性切割把二維空間不同的兩類(lèi)標(biāo)識(shí)分開(kāi),引入激活函數(shù)就相當(dāng)于將z=WX+b再進(jìn)行一次非線性轉(zhuǎn)化,形成一個(gè)曲線,把這個(gè)多維空間里的樣本點(diǎn)進(jìn)行分割。

實(shí)際中的神經(jīng)網(wǎng)絡(luò)的每一個(gè)神經(jīng)元都是由線性函數(shù)和激活函數(shù)構(gòu)成。如下圖。

我們?cè)儆?sigma;代表激活函數(shù),α帶表了經(jīng)過(guò)激活函數(shù)處理的矩陣,則每一個(gè)神經(jīng)元的形成過(guò)程可以表示為下圖:

神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程就是一個(gè)個(gè)神經(jīng)元形成的過(guò)程。
我們把隱藏層比較多(大于2)的神經(jīng)網(wǎng)絡(luò)叫做深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN),深度學(xué)習(xí),就是使用深度神經(jīng)網(wǎng)絡(luò)架構(gòu)的機(jī)器學(xué)習(xí)方法。通常來(lái)說(shuō)隱藏層越多,我們分類(lèi)的效果就越好(但計(jì)算量也更大)。如下圖表示隱藏層越多,形成的非線性劃分效果越精準(zhǔn)。

最后我們來(lái)揭示計(jì)算機(jī)是如何訓(xùn)練一個(gè)個(gè)神經(jīng)元的,也就是確定神經(jīng)元的權(quán)重W和偏差b值的過(guò)程。初始化時(shí)隨機(jī)指定一些w和b的值,不斷讀取打過(guò)標(biāo)簽的圖像輸入模型,就可以對(duì)w和b進(jìn)行校正。
隨機(jī)初始化一般不會(huì)有多好的表現(xiàn),我們需要選擇一個(gè)損失函數(shù)L,它表示當(dāng)前每一次迭代計(jì)算中目標(biāo)輸出與實(shí)際輸出之間的誤差,是關(guān)于W和b作為的函數(shù),也是評(píng)價(jià)模型訓(xùn)練好壞的標(biāo)準(zhǔn)。

自然地,損失函數(shù)的值越小表面該模型的效果越好,所以神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程,就轉(zhuǎn)化為的求解該損失函數(shù)L的一組解(W和b),使其達(dá)一個(gè)比較小的值的過(guò)程,而這一組得出的解就是最終的神經(jīng)網(wǎng)絡(luò)的參數(shù)值W和偏差b。找到了神經(jīng)網(wǎng)絡(luò)中的全部參數(shù)w和b,也就形成了一個(gè)明確的神經(jīng)網(wǎng)絡(luò)模型。
那么怎樣求得損失函數(shù)的最小值以及其對(duì)應(yīng)的w和b呢?這其實(shí)是一個(gè)解方程組的過(guò)程,計(jì)算機(jī)通常是如何求解方程的呢?核心思想是迭代,當(dāng)前主流的迭代方法是梯度下降。
梯度下降方法的主要思想:想象你在一個(gè)山峰上,在不考慮其他因素的情況下,你要如何行走才能最快的下到山腳?當(dāng)然是選擇最陡峭的地方,這也是梯度下降法的核心思想:它通過(guò)每次在當(dāng)前最陡峭的方向向下"邁"一步,來(lái)逐漸到達(dá)山腳。
數(shù)學(xué)上,梯度指向函數(shù)增長(zhǎng)最快的方向,可以通過(guò)對(duì)損失函數(shù)求導(dǎo)獲得。這個(gè)最陡峭的方向,就是梯度向量的負(fù)方向。

損失函數(shù)對(duì)應(yīng)的所有取值結(jié)果可以看成一個(gè)多維空間中的"山體表面"(也就是有權(quán)重W和b作為自變量與輸出結(jié)果一起構(gòu)成的多維空間曲面),讓損失函數(shù)沿著負(fù)梯度的方向進(jìn)行搜索,不斷迭代更新參數(shù),最終使得損失函數(shù)最小化。
如上圖所示,那么現(xiàn)在模型的訓(xùn)練問(wèn)題就變?yōu)椋好鞔_自己現(xiàn)在的位置(可能是任意位置),然后求梯度,然后沿著與梯度相反的方向去走,一步一步下降直到接近最小值,最終找到這個(gè)曲面上的最小值,同時(shí)就找到了對(duì)應(yīng)曲面最小值的位置坐標(biāo)(也就是w和b的值),也就獲得了整個(gè)神經(jīng)網(wǎng)絡(luò)的全部參數(shù),這樣一個(gè)神經(jīng)網(wǎng)絡(luò)就訓(xùn)練完成,接下來(lái)我們可以輸入新的圖片,通過(guò)這個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)輸出結(jié)果0或1,即圖片是否是貓這樣一個(gè)識(shí)別問(wèn)題了。
如上就是給大家介紹的神經(jīng)網(wǎng)絡(luò)的基本知識(shí),包括神經(jīng)網(wǎng)絡(luò)的定義,關(guān)鍵概念和形成過(guò)程,希望大家能夠共同進(jìn)步,體會(huì)人工智能的奧妙。
作者簡(jiǎn)介
祝森,華為授權(quán)培訓(xùn)合作伙伴宇信教育講師,具有豐富的教學(xué)和項(xiàng)目經(jīng)驗(yàn),曾開(kāi)發(fā)人臉識(shí)別、物體檢測(cè)、大數(shù)據(jù)電商平臺(tái)等項(xiàng)目,對(duì)人工智能,智能計(jì)算,鯤鵬,大數(shù)據(jù)技術(shù)有較深的理解。