神经网络:激活函数
文章目錄
- 為什么用激活函數?
- 選擇激活函數需要考慮什么因素?
- 梯度消失和梯度爆炸
- 部分激活函數介紹
- sigmoid函數
- tanh函數
- relu函數
- 個人總結實踐
- 關于批量歸一化
參考:https://blog.csdn.net/tyhj_sf/article/details/79932893
參考:https://zhuanlan.zhihu.com/p/25631496
參考:https://zhuanlan.zhihu.com/p/73214810
為什么用激活函數?
神經網絡的每一層由一個線性函數和非線性函數構成,這樣可以提升每一層的擬合能力,激活函數就是充當非線性層。
選擇激活函數需要考慮什么因素?
激活函數輸入輸出的映射是如何的 將什么區間映射到什么區間,比如sigmoid函數將正負無窮空間映射到0-1空間,而tanh函數將其映射到-1和1之內,relu函數映射到0到正無窮。
激活函數的導數有什么特性 因為激活函數的導數會引出一個梯度消失和梯度爆炸的問題。
梯度消失和梯度爆炸
神經網絡參數更新規則中,要通過鏈式法則計算導數:
可以看出導數的計算包含了每一層的線性函數的W和非線性函數(激活函數)導數,當激活函數的導數一直處于一個小于1接近與0的值的時候,這個導數計算出來就非常接近與0,就導致參數更新緩慢甚至不更新。反之,如果每一層計算導數過大,就會導致神經網絡參數更新幅度多大,網絡訓練不穩定。
部分激活函數介紹
sigmoid函數
tanh函數
relu函數
個人總結實踐
對于使用激活函數,首先考慮自己的場景,要考慮自己的輸入輸出映射區間,同時考慮構建起來的網絡參數的梯度情況。
一下是對于同一個問題三種激活函數訓練出來的損失函數曲線:
sigmoid函數:
tanh函數
relu函數:
leaky_relu函數:
關于批量歸一化
從前面的激活函數可以看出,sigmoid函數和tanh函數對輸入的響應區間都比較狹窄,批量歸一化的操作就是將數據映射到均值為0的附近的區域,利用了正太分布的一點知識。批量歸一化的好處就是將數據映射到響應區間了,但是壞處就是可能改變了數據原始樣貌。
可以看出激活函數對神經網絡擬合能力的影響還是巨大的,但是穩定的激活函數不一定預測效果就好,比如relu不如tanh穩定,但是預測效果更好
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 深度学习:卷积神经网络
- 下一篇: 神经网络 tensorflow :损失函