1. 程式人生 > >一名工程師對於深度學習的理解-神經網路基礎ANN

一名工程師對於深度學習的理解-神經網路基礎ANN

原文連結

讀書期間對於深度學習也有涉及,不過只是皮毛,在這個資料和演算法的時代,也需要更加貼近演算法。於是從一名工程師角度出發,希望通過幾篇文章,將深度學習基礎記錄下來,同時也是對於自己學習的總結和積累。總體思路是ANN-CNN-DNN,中間想起來有什麼忘記的,也會加番。

神經網路概述

image.png
這是一張典型的人工神經網路的圖,圖中的節點稱為神經元,圖共分為三層,第一層為輸入層,第二層為隱藏層,第三層為輸出層。輸入層接受外部世界的輸入,具像化為影象的畫素值,實體的特徵值等,輸出層概率預測結果,具像化為該影象是人像,該實體為潛在商家。

神經元

image.png
一個神經元將多個輸入及其權值統一為下層節點的一個輸入。例如:
螢幕快照 2017-06-30 下午5.24.12.png


而神經元一般都使用sigmoid函式,至於為什麼使用sigmoid函式,也是個很有探討意義的問題,具體可以看這篇文章瞭解sigmoid的特性,http://www.tuicool.com/articles/uMraAb。
螢幕快照 2017-06-30 下午5.37.56.png
螢幕快照 2017-06-30 下午5.39.36.png
其中,w表示權重向量,x表示輸入向量,b為該節點的閾值。
那麼下面問題就是如何選擇合適的權重和閾值,構建出來合適的網路。

構建合適的網路

網路結構往往決定了演算法複雜度和模型可排程,輸出層主要由向量決定,輸出層主要由預測型別決定,主要問題就在中間層數和節點數的選擇上,節點數和層數越多意味著模型可調節性越強,預測結果的粒度越細,但同時也意味著計算複雜度越高。經驗中間層一般選1-2層,節點數作為可調引數。

選擇合適權重和閾值

首先,定義損失函式,損失函式的意義在於對於訓練集評價預測結果和真實結果之間的差異
螢幕快照 2017-06-30 下午5.56.17.png
該損失函式其實是預測結果與真實結果之間的方差
我們希望通過調整權重w和閾值b的值來使預測結果和真實結果之間的差更小。相當於在一個解空間中尋找最優解。解法有很多,如梯度下降法,擬牛頓法等。

梯度下降法

螢幕快照 2017-06-30 下午6.01.49.png
通過上述公式可以看出,對於損失函式的變化可以描述為損失在每個維度v上的變化值之和,用向量表示為
螢幕快照 2017-06-30 下午6.05.24.png
為了是損失更小而不是更大,損失的變化應該小於0,於是取
螢幕快照 2017-06-30 下午6.04.58.png
則,損失的下降可以表示為
螢幕快照 2017-06-30 下午6.06.26.png

反向傳播

反向傳播其實是對於當一次預測結束後,評估每個引數對於預測結果誤差的貢獻,並對其進行調整,調整方法可以通過損失函式對於權值的求導得到:
螢幕快照 2017-06-30 下午6.21.14.png


通過多次迭代,獲得損失函式的極小值。步長決定了函式的收斂速度。
小結下:
人工神經網路就好像一個在陌生的城市迷路的孩子,每走一步都對該步進行評估,計算其到達目的地的可能性,並逐漸走到目的地。人工神經網路比較重要的有三部分:
-1. 結構:層級網路
-2. 求解方法:梯度下降
-3. 求解思想:反向傳播

下集:一名工程師對於深度學習的理解-卷積神經網路CNN


原文連結