日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

神经网络-激活函数

發布時間:2023/12/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络-激活函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇講了一下多層前饋神經網絡的結構,這一篇我們來具體講一講里面的激活函數。

對于一個神經元,先計算輸入向量和權重向量的內積,加上偏置項,再送入一個函數進行變化。這個函數就是激活函數。在神經網絡的結構里,除了輸入層的神經元不需要激活函數,后面的若干層隱藏層和輸出層的神經元都需要激活函數。

為什么需要激活函數

因為如果不使用激活函數函數,整個神經網絡其實還是一個線性模型,并不能解決非線性問題。假如,現在有一個四層的神經網絡,第一層為輸入向量x,第一層至第二層的權重向量為?,偏置項為;第二層至第三層的權重向量為,偏置項為; 第三層至第四層的的權重向量分別為,偏置項為?。

第二層輸出結果 :

第三層輸出結果:

第四層輸出結果:

我們可以看到最后的結果還是一個線性函數:

?

給每一個神經元加上一個非線性的激活函數以后,結果就會變為非線性 。

作為激活函數需要哪些條件:

  • 非線性,因為這樣才能是網絡變為非線性;
  • 幾乎處處可導,因為在反向傳播的過程中需要求導;
  • 單調
  • 連續
  • 接著我們來看一下由激活函數導致的一個問題,梯度消失。神經網絡其實很早就已經出現了,但是在一段時間后就沒落了。主要就是因為梯度消失,會影響模型的訓練。

    梯度消失

    在之前我們說過在訓練神經網絡的時候會用到反向傳播算法結合梯度下降來更新神經網絡每一層的參數。每一層的梯度計算公式為:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????

    我們可以看到每次都要計算激活函數的導數,如果激活函數的導數是一個小于1的數,的值在反向傳播的過程中就會越變越小,這樣就會導致在反向傳播的過程中梯度消失,影響神經網絡的訓練。

    飽和性

    激活函數的飽和性會對梯度消失產生影響。飽和性又分為硬飽和,軟飽和。

    軟飽和可以定義為:

    ? ? ? ? ? ? ? ? ? ? ? ? ?

    與極限的定義類似,飽和也分為左飽和和有飽和。

    軟飽和左飽和:

    ? ? ? ? ? ? ? ?

    軟飽和右飽和:

    ? ? ? ? ? ? ? ? ??

    硬飽和可以定義為:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f'(x)=0,當 |x| > c,其中 c 為常數

    同理,硬飽和也可以分為左飽和和又飽和。

    常用的激活函數

    1、sigmoid函數:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ??

    ? ? ?sigmoid函數導數:

    ? ? ? ? ? ? ? ? ? ? ? ? ??

    sigmoid函數適合需要0~1的場合,比如概率,適合作為輸出層。因為它的值域在0到1之間。sigmoid函數在特征相差比較復復雜或是相差不是特別大時,需要更細微的分類判斷的時候,效果會好一些。因為sigmoid函數具有軟飽和性,它的導數的最大值為0.25,所以在神經網絡的層數很深的情況下,就容易參數梯度消失。

    2、tanh函數

    ? ? ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??, tanh函數和sigmoid函數之間的關系

    ? ? tanh函數導數?

    ? ? ? ? ? ? ? ? ? ? ? ??

    tanh函數適合需要-1~1的場合,因為它的值域在-1到1之間tanh函數也具有軟飽和性,它導數的最大值為1,相比于sigmoid函數能夠緩解一點梯度消失。因為 tanh 的輸出均值比 sigmoid 更接近 0,SGD會更接近 natural gradient(一種二次優化技術),從而降低所需的迭代次數。tanh函數在特征相差明顯時的效果會很好。需要注意的是,使用sigmoid和tanh作為激活函數的話,一定要注意對輸入層進行歸一化,否則激活后的值都會進入平坦區,使隱含層的輸出全部趨同。但是下面的ReLU并不需要輸入歸一化來防止它們達到飽和。

    3、ReLU函數

    ? ? ? ? ? ? ? ? ? ? ? ? ??

    ?

    ? ? ?ReLU函數導數?

    ? ? ? ? ? ? ? ? ? ? ? ? ??

    ReLU函數為左側硬飽和激活函數。但是,相比于之前兩個函數,能夠更好的緩解梯度消失問題。但是會產生一個ReLU壞死的情況。

    4、Leaky ReLU?

    ? ? ? ? ? ? ? ? ? ? ? ? ??, 參數并不固定為0.01

    ? ?

    ?Leaky ReLU導數

    ? ? ? ? ? ? ? ? ? ? ? ??

    Leaky ReLU在ReLU的基礎之上做了一個小小的改動,當x<0時,f(x)的值不為0,而是一個小于1的系數乘以x。這樣可以防止dead神經元。

    除了通過改變激活函數來緩解梯度消失,也有其他緩解梯度消失的方法。例如:DBN中的分層預訓練,Batch Normalization的逐層歸一化,Xavier和MSRA權重初始化等代表性技術。

    參考鏈接:https://docs.deepin.io/?p=753?

    ? ? ? ? ? ? ? ? ??https://zhuanlan.zhihu.com/p/22142013

    ? ? ? ? ? ? ? ? ? Amari, S.-I., Natural gradient works efficiently in learning. Neural computation, 1998. 10(2): p. 251-276.

    總結

    以上是生活随笔為你收集整理的神经网络-激活函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。