关于激励函数的一些思考
在學習神經網絡的時候,會發現神經網絡中的各個神經元代表的其實就一種運算,這=這種運算就是激勵函數,激勵函數一般都是非線性的,為什么呢?
因為線性函數有一個特點,那就是線性函數的組合還是線性函數,這也就以為這不論你所設計的神經網絡有多深,多么復雜,只要里面用到的激勵函數是線性函數,那么這些層層之間都是線性函數的一個組合,最終整個網絡依然是線性的,可以用一個矩陣來代替,跟只有一層網絡是沒有區別的,所以線性激勵函數的表達能力是有限的,不能描述現實生活中存在的大部分的問題,故我們采用非線性的激勵函數,以下是神經網絡中常用的幾種激勵函數:
1、sigmod函數
? ?
sigmoid導數曲線:
sigmod函數有幾個特點:將輸入映射到區間(0,1),當輸入偏離0附近的時候,輸出的變化非常緩慢,達到飽和,從sigmo函數的導數是一個區間(0,1)上的拋物線,當sigmo函數的取值是1/2的時候,其導數達到最大值1/4.
根據這幾個特性就可以總結出來sigmo作為激勵函數的一些優缺點。
優點:1、將輸入映射到(0,1)上,這在一些分類問題中作為輸出,歸一化后就可以表征被分為該類的概率,會帶來一些計算上的方便。
? ? ? ? ? ?2、在整個定義域都是處處可導的,在梯度反向傳播的時候求導比較方便
缺點:收斂速度比較慢,原因是因為當達到sigmoid的飽和區的時候,輸入的變化不會對輸出帶來什么影響,反過來也就是說sigmo函數在飽和區的導數非常小,在梯度反向傳播過程中會帶來梯度的大量衰減,從其導數的曲線上可以看出,其反向傳播過程中最多只能向前傳遞原梯度的1/4,那么再經過神經網絡的前一層傳遞,梯度傳遞減少至原梯度的1/16,整個呈指數級降低,所以對于神經網絡中前面幾層的參數調整是非常有限的,這也就導致了整個神經網絡的訓練收斂速度非常慢。
2、tanh函數
tanh激勵函數實際上與sigmoid函數沒有本質上的區別,最大的區別是tanh函數將輸入映射在了區間(-1,1)上,所以tanh作為激勵函數的優點與缺點與sigmoid函數相同。
優點:1、將輸入映射到(-1,1)上,在某些應用中是比較想要的輸出
? ? ? ? ? ? 2、在整個定義域都是處處可導的,在梯度反向傳播的時候求導比較方便
缺點:收斂速度慢
但是tanh函數與sigmo函數相比,延遲了飽和區域,所以性能優于sigmoid函數
3、RELU函數
在實際的應用中使用最多的就是RELU函數作為激勵函數,這要是因為RELU函數的較以上兩種激勵函數的一些優勢:
? ? ? ? 1、計算簡單,只是一個閾值計算,不涉及指數運算
? ? ? ? 2、梯度損失比較小,收斂速度快,顯然當輸入大于0時候,RELU的導數恒為1,整個梯度反向傳播過程中不會引起梯度的損失,但是當輸入小于0的時候,輸出全部為0,這樣其實相當于阻斷了一些網絡支路,其實也就相當于引起特征的丟失,但是一般情況下特征量足夠多,所以影響并不大
? ? ? ? 3、因為RELU會使得輸入小于0的所有神經元的輸出為0,這樣就促進了整個網絡的稀疏性,使得網絡更加的簡單,其實也就是與正則化的效果一直,從而延緩了網絡過擬合的速度。
? ? ? ? 4、更加符合生物意義上的神經元結構(雖然我并不懂啥意思。。。)
4、LeakyRELU函數:
leakyRELU函數實際上是對于RELU函數的一種優化,相比于RELU函數直接阻斷了一些小于0的特征,LeakyRELU函數考慮了這部分特征。
總結
以上是生活随笔為你收集整理的关于激励函数的一些思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python黑洞_史上第一张黑洞照片是用
- 下一篇: 梯度反向传播求解示例