【原創 深度學習與TensorFlow 動手實踐系列 - 2】第二課:傳統神經網絡

 

第二課 傳統神經網絡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/

 

相關文章
相關標籤/搜索