賈浩楠 發自 凹非寺
量子位 報導 | 公眾號 QbitAI
哪個程式設計師不想高效「煉丹」?
尤其是深度學習算法開發人員,追求模型結構優化和提高編程效率是永遠的目標。
但是,如果只做代碼「搬運工」,不了解神經網絡背後的數學原理,很難對項目有深刻全面的理解,debug反而會更難、耗時更長。
就以深度學習中常用的神經網絡來說,典型模型包括多層感知機(DLP)、卷積神經網絡(CNN)、循環神經網絡(RNN)等等,不同的項目,對神經網絡的調參需求也不相同。
下面的深度學習數學基礎詳解,以DLP為例,你讀完後會對它的數學基礎有全面的了解,並且熟悉用數學解釋算法的基本思路。
除了DLP,文末還一併為你準備了RNN、CNN數學原理,以及吳恩達老師的AI數學基礎課程。
一文實現AI數學基礎入門,還在等什麼?
多層感知機的數學表達
多層感知機的數學表達分為4個部分:學習算法、參數初始化、激活函數、優化函數。
學習算法
神經網絡的學習過程可以看做是參數的權重在網絡中經歷的不同回歸,也就是說我們的算法是要找出一個使參數得到最佳輸出的回歸方法,由此我們定義一個目標函數:損失函數L(loss function);還有一個參數J,它是訓練集真實與估計值的量化表示。
我們通過正向和反向傳播兩種方法來使J最小化,學習算法可以表示為:
正向傳播:
其中m是訓練集的大小,i是參數在網絡中的迭代次數,y是模型的輸出,θ是模型參數。
反向傳播:
參數初始化
零初始化:使所有參數的權重和偏差都為零。
隨機初始化:不斷將隨機噪音賦值給參數。如果噪音過大,可能會造成某些激活函數溢出,並影響到後續的梯度計算。
Xavier方法:取值於正態分布的中心變量:
Glorot方法:同樣取值於正態分布,方法不同。
激活函數
激勵函數的功能是選擇在網絡中被傳遞的具體參數,更深一層的理解是,允許網絡中被有效激活的神經元傳遞訓練數據。
一下是一些常用的激活函數:
優化函數
風險,是神經網絡中全部數據集的損失,是我們需要優化的對象,定義為:
其中,X是一個可觀測的連續空間中,與Y有關的元素,p(X,Y)是在這一空間中觀察到點(X,Y)的邊緣概率。
經驗風險
在沒有全部數據集,或全部數據集過大的情況下,我們不考慮參數分布情況,僅將風險估計的範圍限定在一個有代表性的數據集上,這種情況下,損失函數可以表示為:
m是代表數據集的大小。
於是可以得出:
梯度下降法
我們需要構造一個可微凸函數J,其任何一個局部的最小值都是整個函數的最小值,那麼求這個函數的最小值就相當於解一個方程∇J(θ)=0,設它的解為θ⋆,於是我們得到:
學習率遞減
實踐證明,隨著數據迭代次數增加,模型會逐漸降低學習率。現在已經有許多成熟地描述學習率遞減的公式。
優化函數還包含輸入優化、網絡數據丟失正則化、反向傳播正則化等,限於篇幅將連結放在文末。
其他有關深度學習的數學基礎的參考連結
DLP中的其他優化函數,以及參數正向、反向傳播時損失函數詳細推推導過程
https://www.ismailmebsout.com/deep-learning/
除了DLP,其他神經網絡RNN、CNN等也有詳細的數學表達推導過程
CNNhttps://www.ismailmebsout.com/Convolutional%20Neural%20Network%20-%20Part%201/
RNNhttps://www.ismailmebsout.com/recurrent-neural-networks/
deep learning數學基礎入門
http://deeploria.gforge.inria.fr/cours/cours1.html#/definitions
Deep Learning Specialization. Master Deep Learning, and Break into AI,吳恩達
https://fr.coursera.org/specializations/deep-learning
Antoine Henrot的優化算法課程
http://www.iecl.univ-lorraine.fr/~Antoine.Henrot/english.html
— 完 —
本文系網易新聞•網易號特色內容激勵計劃籤約帳號【量子位】原創內容,未經帳號授權,禁止隨意轉載。
原標題:《高效「煉丹」必備技能:一文實現深度學習數學原理入門,還有吳恩達老師親授課程》
閱讀原文