侵權投訴
訂閱
糾錯
加入自媒體

神經網絡1:多層感知器-MLP

2019-05-27 09:11
Vehicle攻城獅
關注

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

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

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

MLP神經網絡的結構和原理

理解神經網絡主要包括兩大內容,一是神經網絡的結構,其次則是神經網絡的訓練和學習,其就好比我們的大腦結構是怎么構成的,而基于該組成我們又是怎樣去學習和識別不同事物的,這次樓主主要講解第一部分,而訓練和學習則放到后續更新中。

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

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

由此可知,神經網絡主要有三個基本要素:權重、偏置和激活函數。

權重:神經元之間的連接強度由權重表示,權重的大小表示可能性的大小

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

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

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

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

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

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

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

隱層的層數和神經元的選擇需根據具體情況選擇,此例選擇兩層隱層,每層16個神經元。那么根據上面的敘述,根據權重、偏置的個數此神經網絡將會有13002個參數需要去調節,而如何調整這些參數,從而使神經網絡有較好的學習效果則正是下篇更新的神經網絡訓練和學習的內容。

通過樓主上面的敘述,該圖像識別問題最終可通過線性方程的方式表示出來,從而來描述本篇通過MLP神經網絡進行數字識別的案例,并通過建立的問題描述模型來編程實現。

總結

MLP神經網絡的結構還是挺簡單的,基本的結構和原理是入門學習所必須了解的。神經網絡訓練和學習這塊等樓主有機會再更新,發現前期給自己挖太多坑都還沒填,主要在于樓主忙于工作,最近正好是2019上海車展,樓主也去轉了一波,基本都待在二層的零部件供應商那里,了解下各大供應商在智能出行、電驅、智能網聯等方面的系統集成和解決方案,收獲還是很多的,也希望能在下篇跟大家做個分享。

END -

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

發表評論

0條評論,0人參與

請輸入評論內容...

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

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

暫無評論

暫無評論

    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號