iT邦幫忙

2021 iThome 鐵人賽

DAY 18
2

激活函數

  • 每個神經元都有一個激活函數,由這層神經元輸出給下層神經元的輸入,中間就會有個函數關係,將之做非線性轉換。

  • 使用激活函數,可使上一層節點做非線性轉換,從而獲取充分的特徵組合,野使神經網路可以充分學習到更多;若只做最原始的線性轉換,那麼神經網路學習的就非常有限。

  • 在神經網路加上激活函數後,可學習到非線性的曲線,來對非線性的數據加以處理。
    圖片來源:https://codingnote.cc/zh-tw/p/176736/

  • 早期研究,主要採用激活函數如sigmoid、tanh。近年大多用ReLU來做研究,以及由ReLU所改進的Leaky-ReLU、P-ReLU等等。


Sigmoid

  • 又稱Logistic函數,是最早也使用範圍最廣的一類激活函數,可用來做二分類,其值的範圍[0,1]。
    圖片來源:https://codingnote.cc/zh-tw/p/176736/
    • 優點:其輸出範圍限於0~1之間,且為連續變數,便於求導,可用於輸出層。

    • 缺點:可觀察上圖,其上下兩側趨近於平坦,對輸入有微小改變時,變得較不敏感,梯度趨近於0,權重不會更新,容易出現梯度消失的狀況。


Tanh

  • 又稱雙曲正切曲線,其取值為[-1,1],為sigmoid的變形。
    圖片來源:https://codingnote.cc/zh-tw/p/176736/

  • 相較Sigmoid,其中間值為0,會比Sigmoid更能提供給下一層神經元做學習。

    • 優點:較Sigmoid收斂速度快。
    • 缺點:依舊存在良兩側趨於平坦,會有梯度消失的狀況。

ReLU

  • 線性整流函數,針對Sigmoid及Tanh的缺點做改善,是現代神經網路中最常用的激活函數。

    圖片來源:https://codingnote.cc/zh-tw/p/176736/

  • 計算簡單,在X>0的區段上,不會出現梯度消失的狀況,但若在X<0的區段上,直接無法更新,造成梯度為0的情況。

    • 優點:計算速度快,加速收斂的速度,在X>0區間解決了梯度消失的問題。
    • 缺點:X<0的區間,發生dead ReLU的現象,梯度恆為0,導致神經元無法激活死亡。
      • 產生原因:參數初始化、learning rate太大。
      • 解決方法:採用Xavier初始化方法、避免將learning rate設置太大。

Leaky-ReLU

  • 為了解決dead ReLU的問題,將X<0的區段更趨向於激活而不會讓其死亡。f(x)=max(ax, x),其中a通常為0.01。

    圖片來源:https://codingnote.cc/zh-tw/p/176736/
  • 其優缺點跟ReLU相似,但解決了X<0的區段梯度消失的問題。

PReLU

  • 與Leaky-ReLU相似,差別在於f(x)=max(ax, x)的a為透過反向傳播求得,為非固定的。同樣為了解決dead ReLU問題而改善的。

ELU

  • 具有ReLU優勢,解決Dead ReLU問題,輸出的均值接近於0。

    圖片來源:https://codingnote.cc/zh-tw/p/176736/

Maxout

  • 有這ReLU的優點,卻不會有dead ReLU問題,擬合能力強,但計算較為複雜,是原本參數的一倍。

  • 詳細可參考


今日小結


上一篇
DAY17:Pytorch transforms(下)
下一篇
DAY19:學習率(上)
系列文
資料分析及AI深度學習-簡單基礎實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言