侵權(quán)投訴
訂閱
糾錯
加入自媒體

神經(jīng)網(wǎng)絡(luò)1:多層感知器-MLP

神經(jīng)網(wǎng)絡(luò)是當前機器學(xué)習(xí)領(lǐng)域普遍所應(yīng)用的,例如可利用神經(jīng)網(wǎng)絡(luò)進行圖像識別、語音識別等,從而將其拓展應(yīng)用于自動駕駛汽車。它是一種高度并行的信息處理系統(tǒng),具有很強的自適應(yīng)學(xué)習(xí)能力,不依賴于研究對象的數(shù)學(xué)模型,對被控對象的的系統(tǒng)參數(shù)變化及外界干擾有很好的魯棒性,能處理復(fù)雜的多輸入、多輸出非線性系統(tǒng),神經(jīng)網(wǎng)絡(luò)要解決的基本問題是分類問題。

目前在機器學(xué)習(xí)領(lǐng)域火爆的開源軟件庫中,TensorFlow算其中一個,里面有大量的機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究,畢竟由Google 大腦小組開發(fā)出來,其系統(tǒng)的通用性和易用性是無可比擬的,TensorFlow是一個采用數(shù)據(jù)流圖(Data flow graphs),用于數(shù)值計算的開源軟件庫。節(jié)點(Nodes)在圖中表示數(shù)學(xué)操作,圖中的線(edges)則表示在節(jié)點間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。(數(shù)據(jù)流圖用“結(jié)點”(nodes)和“線”(edges)的有向圖來描述數(shù)學(xué)計算。“節(jié)點”一般用來表示施加的數(shù)學(xué)操作,但也可以表示數(shù)據(jù)輸入(feedin)的起點/輸出(push out)的終點,或者是讀。瘜懭氤志米兞浚╬ersistent variable)的終點!熬”表示“節(jié)點”之間的輸入/輸出關(guān)系。這些數(shù)據(jù)“線”可以輸運“size可動態(tài)調(diào)整”的多維數(shù)據(jù)數(shù)組,即“張量”(tensor)。張量從圖中流過的直觀圖像是這個工具取名為“Tensorflow”的原因,一旦輸入端的所有張量準備好,節(jié)點將被分配到各種計算設(shè)備完成異步并行地執(zhí)行運算)。因此對想快速上手神經(jīng)網(wǎng)絡(luò)做一些有趣的圖像識別和語音識別的小伙伴可利用TensorFlow進行學(xué)習(xí)。

神經(jīng)網(wǎng)絡(luò)的變種目前有很多,如誤差反向傳播(Back Propagation,BP)神經(jīng)網(wǎng)路、概率神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network ,CNN-適用于圖像識別)、時間遞歸神經(jīng)網(wǎng)絡(luò)(Long short-term Memory Network ,LSTM-適用于語音識別)等。但最簡單且原汁原味的神經(jīng)網(wǎng)絡(luò)則是多層感知器(Muti-Layer Perception ,MLP),只有理解經(jīng)典的原版,才能更好的去理解功能更加強大的現(xiàn)代變種。

MLP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和原理

理解神經(jīng)網(wǎng)絡(luò)主要包括兩大內(nèi)容,一是神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),其次則是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和學(xué)習(xí),其就好比我們的大腦結(jié)構(gòu)是怎么構(gòu)成的,而基于該組成我們又是怎樣去學(xué)習(xí)和識別不同事物的,這次樓主主要講解第一部分,而訓(xùn)練和學(xué)習(xí)則放到后續(xù)更新中。

神經(jīng)網(wǎng)絡(luò)其實是對生物神經(jīng)元的模擬和簡化,生物神經(jīng)元由樹突、細胞體、軸突等部分組成。樹突是細胞體的輸入端,其接受四周的神經(jīng)沖動;軸突是細胞體的輸出端,其發(fā)揮傳遞神經(jīng)沖動給其他神經(jīng)元的作用,生物神經(jīng)元具有興奮和抑制兩種狀態(tài),當接受的刺激高于一定閾值時,則會進入興奮狀態(tài)并將神經(jīng)沖動由軸突傳出,反之則沒有神經(jīng)沖動。

我們基于生物神經(jīng)元模型可得到多層感知器MLP的基本結(jié)構(gòu),最典型的MLP包括包括三層:輸入層、隱層和輸出層,MLP神經(jīng)網(wǎng)絡(luò)不同層之間是全連接的(全連接的意思就是:上一層的任何一個神經(jīng)元與下一層的所有神經(jīng)元都有連接)。

由此可知,神經(jīng)網(wǎng)絡(luò)主要有三個基本要素:權(quán)重、偏置和激活函數(shù)。

權(quán)重:神經(jīng)元之間的連接強度由權(quán)重表示,權(quán)重的大小表示可能性的大小

偏置:偏置的設(shè)置是為了正確分類樣本,是模型中一個重要的參數(shù),即保證通過輸入算出的輸出值不能隨便激活。

激活函數(shù):起非線性映射的作用,其可將神經(jīng)元的輸出幅度限制在一定范圍內(nèi),一般限制在(-1~1)或(0~1)之間。最常用的激活函數(shù)是Sigmoid函數(shù),其可將(-∞,+∞)的數(shù)映射到(0~1)的范圍內(nèi)。

激活函數(shù)還有tanh和ReLU等函數(shù),tanh是Sigmoid函數(shù)的變形,tanh的均值是0,在實際應(yīng)用中有比Sigmoid更好的效果;ReLU是近來比較流行的激活函數(shù),當輸入信號小于0時,輸出為0;當輸入信號大于0時,輸出等于輸入;具體采用哪種激活函數(shù)需視具體情況定。

從上面可知下層單個神經(jīng)元的值與上層所有輸入之間的關(guān)系可通過如下方式表示,其它以此類推。

MLP的最經(jīng)典例子就是數(shù)字識別,即我們隨便給出一張上面寫有數(shù)字的圖片并作為輸入,由它最終給出圖片上的數(shù)字到底是幾。

對于一張寫有數(shù)字的圖片,我們可將其分解為由28*28=784個像素點構(gòu)成,每個像素點的值在(0~1)之間,其表示灰度值,值越大該像素點則越亮,越低則越暗,以此表達圖片上的數(shù)字并將這786個像素點作為神經(jīng)網(wǎng)絡(luò)的輸入。

而輸出則由十個神經(jīng)元構(gòu)成,分別表示(0~9)這十個數(shù)字,這十個神經(jīng)元的值也是在(0~1)之間,也表示灰度值,但神經(jīng)元值越大表示從輸入經(jīng)判斷后是該數(shù)字的可能性越大。

隱層的層數(shù)和神經(jīng)元的選擇需根據(jù)具體情況選擇,此例選擇兩層隱層,每層16個神經(jīng)元。那么根據(jù)上面的敘述,根據(jù)權(quán)重、偏置的個數(shù)此神經(jīng)網(wǎng)絡(luò)將會有13002個參數(shù)需要去調(diào)節(jié),而如何調(diào)整這些參數(shù),從而使神經(jīng)網(wǎng)絡(luò)有較好的學(xué)習(xí)效果則正是下篇更新的神經(jīng)網(wǎng)絡(luò)訓(xùn)練和學(xué)習(xí)的內(nèi)容。

通過樓主上面的敘述,該圖像識別問題最終可通過線性方程的方式表示出來,從而來描述本篇通過MLP神經(jīng)網(wǎng)絡(luò)進行數(shù)字識別的案例,并通過建立的問題描述模型來編程實現(xiàn)。

總結(jié)

MLP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)還是挺簡單的,基本的結(jié)構(gòu)和原理是入門學(xué)習(xí)所必須了解的。神經(jīng)網(wǎng)絡(luò)訓(xùn)練和學(xué)習(xí)這塊等樓主有機會再更新,發(fā)現(xiàn)前期給自己挖太多坑都還沒填,主要在于樓主忙于工作,最近正好是2019上海車展,樓主也去轉(zhuǎn)了一波,基本都待在二層的零部件供應(yīng)商那里,了解下各大供應(yīng)商在智能出行、電驅(qū)、智能網(wǎng)聯(lián)等方面的系統(tǒng)集成和解決方案,收獲還是很多的,也希望能在下篇跟大家做個分享。

END -

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號