閱讀98 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

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

神經網絡概述

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

神經元

image.png
一個神經元將多個輸入及其權值統一為下層節點的一個輸入。例如:
屏幕快照 2017-06-30 下午5.24.12.png
而神經元一般都使用sigmoid函數,至於為什麼使用sigmoid函數,也是個很有探討意義的問題,具體可以看這篇文章了解sigmoid的特性,https://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

最後更新:2017-07-04 20:02:54

  上一篇:go  源碼編譯更新nginx到最新版本,並開始nginx支持http2協議模塊.
  下一篇:go  7月4日雲棲精選夜讀:從《網安法》出發,給企業安全管理者的五條建議