第二課 傳統神經網絡git
《深度學習》總體結構:github
線性迴歸 -> 神經網絡 -> 卷積神經網絡(CNN)-> 循環神經網絡(RNN)- LSTM面試
目標分類(人臉識別,物品識別,場景識別,文字識別),目標檢測(安防,自動駕駛),視頻分類(視頻檢索),語句生成(自動翻譯,智能對話)網絡
提綱:函數
1. 神經網絡起源:線性迴歸性能
2. 從線性到非線性學習
3. 神經網絡的構建優化
4. 神經網絡的「配件」翻譯
期待目標:設計
1. 瞭解從線性到非線性迴歸的轉化
2. 明白如何構建神經網絡,瞭解不一樣激勵函數的區別聯繫
3. 掌握「配件」對神經網絡性能的影響(損失函數 Cost,學習率 Learning Rate,動量,過擬合),會「調參」
4. 明白本節全部的「面試題」
線性迴歸:
1. 概念:線性關係來描述輸入到輸出的映射關係
2. 應用場景:網絡分析,銀行風險分析,基金股價預測,天氣預報
線性迴歸:
一個線性迴歸問題
目標方程:y = ax1 + bx2 + cx3 + d
參數: m = [a, b, c, d]
數據:[(x1,1, x2,1,x3,1), (), (), ()]
預測:yt = ax1,t + bx2,t + cx3,t + d
目標:minimize (yt - yt)
總結:線性函數是一維函數,y = ax1 + bx2 + cx3 + d
如今要計算最佳參數 m = [a, b, c, d]
給定數據,計算出預測值,預測值與真實值計算Cost,當Cost最小的時候計算出 m = [a, b, c, d]
優化方法:梯度降低法
模型參數
當前 m0 = [a0, b0, c0, d0]
每一步 m?
參數 m = [a, b, c, d]
梯度降低:梯度計算
Loss = ax1 + bx2 + cx3 + d -y
梯度降低:參數更新
梯度降低法總結:
1. 隨機初始化參數
開啓循環 t= 0, 1, 2
帶入數據求出結果 yt
與真值比較獲得loss = y - yt
對各個變量求導獲得 m
更新變量 m
線性迴歸的侷限性:線性迴歸可以清楚的描述分割線性分佈的數據,對非線性分佈的數據描述較弱
非線性激勵
考量標準:
1. 正向對輸入的調整
2. 反向梯度損失
神經網絡構建
神經元的「並聯」和「串聯」
從第一層神經網絡到最終輸出,每個神經元的數值由前一層神經元數值,神經元參數W,b以及激勵函數共同決定第n+1層,第k個神經元的方程,可由公式表示爲:
在這裏,m表示第n層神經網絡的寬度,n爲當前神經網絡的深度
並聯:深度,串聯:寬度
MINIST 神經網絡分類:
course_2_tf_nn.py
結構變化影響:
1. 「並聯」寬度影響
2. 「串聯」層數影響
3. Dropout
4. Learning rate
1. 損失函數 - Loss
影響深度學習性能最重要因素之一。是外部世界對神經網絡模型訓練的直接指導。
合適的損失函數可以確保深度學習模型收斂
設計合適的損失函數是研究工做的主要內容之一
總結:
1. 神經網絡起源:線性迴歸
2. 從線性到非線性
3. 神經網絡的構建
4. 神經網絡的「配件」
下節課預告:鏈式規則反向求導,SGD優化原理,卷積神經網絡(CNN)各個layers介紹
第二節課的代碼
https://github.com/wiibrew/DeepLearningCourseCodes/blob/master/course_2_tf_nn.py
https://github.com/wiibrew/DeepLearningCourseCodes/blob/master/course_2_tf_nn.ipynb
具體經過TensorFlow構建神經網絡的過程,經過Pycharm和 Python Notebook來完成實驗,調參還部署很熟練。
TensorFlow 對數據進行簡單的可視化實驗:
http://playground.tensorflow.org/