1.神經網絡復雜度(空間復雜度+時間復雜度)
- 空間復雜度
空間復雜度用神經網絡層數和神經網絡中待優化參數的個數表示
我們計算神經網絡層數時,只統計具有運算能力的層,輸入層僅把數據傳輸過來,沒有運算,所以在統計神經網絡層數時,不把輸入層算進來
輸入層和輸出層之間都是隱藏層
- 時間復雜度
時間復雜度可以用神經網絡中的乘加運算的次數表示
有幾條權重線,就有幾次乘加運算

2.學習率

指數衰減學習率可以根據當前迭代次數,動態改變學習率的值
當前輪數有兩種表示方法:
- epoch可以用當前迭代了多少次數據集
- global_step表示當前一共迭代了多少次batch
多少輪衰減一次:
迭代多少次數據集,或迭代多少次batch更新一次學習率,決定了學習率的更新頻率

代碼運行輸出:
可以看到隨着迭代輪數增加,學習率在指數衰減

3.激活函數
激活函數是用來加入非線性因素的,因為線性模型的表達能力不夠。引入非線性激活函數,可使深層神經網絡的表達能力更加強大
也正是非線性函數的加入,使得多層神經網絡不再是輸入x的線性組合,神經網絡可以隨層數的增加提升表達力了
舉例說明:
神經元后面,要跟個激活層,從而引入非線性因素,這就像人的神經元一樣,讓細胞處於興奮或抑制的狀態。
數學模擬的形式就是通過激活函數,大於閾值就激活,反之抑制。


如果激活函數的輸出為有限值,權重對特征的影響更顯著,用梯度下降的方法更新參數會更穩定
如果激活函數的輸出為無限值,參數的初始值對模型的影響非常大,要使用更小的學習率

- 輸出映射在(0,1)之間,單調連續,輸出范圍有限,優化穩定,可用作輸出層;
- 求導容易。





解釋Dead Relu問題
送入激活函數的輸入特征是負數時,激活函數的輸出為0,反向傳播得到的梯度是0,導致參數無法更新,造成神經元死亡。
其實造成神經元死亡的根本原因是經過relu函數的負數特征過多導致的,我們可以改進隨機初始化,避免過多的負數特征送入relu函數,可以通過設置更小的學習率,減少參數分布的巨大變化,避免訓練中產生過多的負數特征進入relu函數。


