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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【机器学习】激活函数(ReLU, Swish, Maxout)

發布時間:2024/8/5 综合教程 44 生活家
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】激活函数(ReLU, Swish, Maxout) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/ChenVast/article/details/81382939

神經網絡中使用激活函數來加入非線性因素,提高模型的表達能力。

ReLU(Rectified Linear Unit,修正線性單元)

形式如下:

ReLU公式近似推導::

下面解釋上述公式中的softplus,Noisy ReLU.

softplus函數與ReLU函數接近,但比較平滑, 同ReLU一樣是單邊抑制,有寬廣的接受域(0,+inf), 但是由于指數運算,對數運算計算量大的原因,而不太被人使用.并且從一些人的使用經驗來看(Glorot et al.(2011a)),效果也并不比ReLU好. softplus的導數恰好是sigmoid函數.softplus 函數圖像:

Noisy ReLU1 ReLU可以被擴展以包括高斯噪聲(Gaussian noise): f(x)=max(0,x+Y),Y∼N(0,σ(x))f(x)=max(0,x+Y),Y∼N(0,σ(x)) Noisy ReLU 在受限玻爾茲曼機解決計算機視覺任務中得到應用.

ReLU上界設置: ReLU相比sigmoid和tanh的一個缺點是沒有對上界設限.在實際使用中,可以設置一個上限,如ReLU6經驗函數:f(x)=min(6,max(0,x))f(x)=min(6,max(0,x)). 參考這個上限的來源論文:Convolutional Deep Belief Networks on CIFAR-10. A. Krizhevsky

ReLU的稀疏性(摘自這里):

當前,深度學習一個明確的目標是從數據變量中解離出關鍵因子。原始數據(以自然數據為主)中通常纏繞著高度密集的特征。然而,如果能夠解開特征間纏繞的復雜關系,轉換為稀疏特征,那么特征就有了魯棒性(去掉了無關的噪聲)。稀疏特征并不需要網絡具有很強的處理線性不可分機制。那么在深度網絡中,對非線性的依賴程度就可以縮一縮。一旦神經元與神經元之間改為線性激活,網絡的非線性部分僅僅來自于神經元部分選擇性激活。 對比大腦工作的95%稀疏性來看,現有的計算神經網絡和生物神經網絡還是有很大差距的。慶幸的是,ReLu只有負值才會被稀疏掉,即引入的稀疏性是可以訓練調節的,是動態變化的。只要進行梯度訓練,網絡可以向誤差減少的方向,自動調控稀疏比率,保證激活鏈上存在著合理數量的非零值。

ReLU 缺點

壞死: ReLU 強制的稀疏處理會減少模型的有效容量(即特征屏蔽太多,導致模型無法學習到有效特征)。由于ReLU在x < 0時梯度為0,這樣就導致負的梯度在這個ReLU被置零,而且這個神經元有可能再也不會被任何數據激活,稱為神經元“壞死”。
無負值: ReLU和sigmoid的一個相同點是結果是正值,沒有負值.

ReLU變種

Leaky ReLU

當x<0x<0時,f(x)=αxf(x)=αx,其中αα非常小,這樣可以避免在x<0x<0時,不能夠學習的情況:

稱為Parametric Rectifier(PReLU),將αα作為可學習的參數.

當αα從高斯分布中隨機產生時稱為Random Rectifier(RReLU)。

當固定為α=0.01α=0.01時,是Leaky ReLU

優點:

不會過擬合(saturate)
計算簡單有效
比sigmoid/tanh收斂快

指數線性單元ELU

exponential linear unit, 該激活函數由Djork等人提出,被證實有較高的噪聲魯棒性,同時能夠使得使得神經元 的平均激活均值趨近為 0,同時對噪聲更具有魯棒性。由于需要計算指數,計算量較大。 ReLU family:

Leaky ReLUαα是固定的;PReLU的αα不是固定的,通過訓練得到;RReLU的αα是從一個高斯分布中隨機產生,并且在測試時為固定值,與Noisy ReLU類似(但是區間正好相反)。

ReLU系列對比:

SELU

論文: 自歸一化神經網絡(Self-Normalizing Neural Networks)中提出只需要把激活函數換成SELU就能使得輸入在經過一定層數之后變成固定的分布. 參考對這篇論文的討論.

SELU是給ELU乘上系數λλ, 即SELU(x)=λ⋅ELU(x)

Swish

paperSearching for Activation functions(Prajit Ramachandran,Google Brain 2017)

β是個常數或可訓練的參數.Swish 具備無上界有下界、平滑、非單調的特性。 Swish 在深層模型上的效果優于 ReLU。例如,僅僅使用 Swish 單元替換 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分類準確率提高 0.9%,Inception-ResNet-v 的分類準確率提高 0.6%。

導數:

當β = 0時,Swish變為線性函數f(x)=x2f(x)=x2. β → ∞,σ(x)=(1+exp(−x))−1σ(x)=(1+exp?(−x))−1為0或1. Swish變為ReLU: f(x)=2max(0,x) 所以Swish函數可以看做是介于線性函數與ReLU函數之間的平滑函數.

工程實現: 在TensorFlow框架中只需一行代碼:x * tf.sigmoid(beta * x)tf.nn.swish(x). 在Caffe中使用Scale+Sigmoid+EltWise(PROD)來實現或者合并成一個層.代碼參考.

Maxout

論文Maxout Networks(Goodfellow,ICML2013)

Maxout可以看做是在深度學習網絡中加入一層激活函數層,包含一個參數k.這一層相比ReLU,sigmoid等,其特殊之處在于增加了k個神經元,然后輸出激活值最大的值.

我們常見的隱含層節點輸出:

而在Maxout網絡中,其隱含層節點的輸出表達式為:

其中

以如下最簡單的多層感知器(MLP)為例:

圖片來源:slides

maxout-networks-4-1024

假設網絡第i層有2個神經元x1、x2,第i+1層的神經元個數為1個.原本只有一層參數,將ReLU或sigmoid等激活函數替換掉,引入Maxout,將變成兩層參數,參數個數增為k倍.

優點:

Maxout的擬合能力非常強,可以擬合任意的凸函數。
Maxout具有ReLU的所有優點,線性、不飽和性。
同時沒有ReLU的一些缺點。如:神經元的死亡。

缺點: 從上面的激活函數公式中可以看出,每個神經元中有兩組(w,b)參數,那么參數量就增加了一倍,這就導致了整體參數的數量激增。

Maxout激活函數

與常規激活函數不同的是,它是一個可學習的分段線性函數.

然而任何一個凸函數,都可以由線性分段函數進行逼近近似。其實我們可以把以前所學到的激活函數:ReLU、abs激活函數,看成是分成兩段的線性函數,如下示意圖所示:

maxout-convex-func-approximate!

實驗結果表明Maxout與Dropout組合使用可以發揮比較好的效果。

那么,前邊的兩種ReLU便是兩種Maxout,函數圖像為兩條直線的拼接,

sigmoid & tanh

sigmoid/logistic 激活函數:

tanh 函數是sigmoid函數的一種變體,以0點為中心。取值范圍為 [-1,1] ,而不是sigmoid函數的 [0,1] 。

tanh 是對 sigmoid 的平移和收縮:tanh(x)=2⋅σ(2x)−1tanh?(x)=2⋅σ(2x)−1. 你可能會想平移使得曲線以0點為中心,那么為什么還要收縮呢? 如果不拉伸或收縮得到f(x)=ex−1ex+1f(x)=ex−1ex+1不行嗎? 我猜想是因為 tanh 更加著名吧。

那么 tanh 這個雙曲正切函數與三角函數 tan 之間是什么關系呢?

hard tanh 限界: g(z) = max(-1, min(1,z))

sigmoid & tanh 函數圖像如下:

sigmoid作激活函數的優缺點

歷史上很流行(Historically popular since they have nice interpretation as a saturating “firing rate” of a neuron),梯度計算較為方便:

優勢是能夠控制數值的幅度,在深層網絡中可以保持數據幅度不會出現大的變化;而ReLU不會對數據的幅度做約束.

存在三個問題:

飽和的神經元會"殺死"梯度,指離中心點較遠的x處的導數接近于0,停止反向傳播的學習過程.
sigmoid的輸出不是以0為中心,而是0.5,這樣在求權重w的梯度時,梯度總是正或負的.
指數計算耗時

為什么tanh相比sigmoid收斂更快:

梯度消失問題程度 可以看出tanh(x)的梯度消失問題比sigmoid要輕.梯度如果過早消失,收斂速度較慢.
以零為中心的影響 如果當前參數(w0,w1)的最佳優化方向是(+d0, -d1),則根據反向傳播計算公式,我們希望 x0 和 x1 符號相反。但是如果上一級神經元采用 Sigmoid 函數作為激活函數,sigmoid不以0為中心,輸出值恒為正,那么我們無法進行最快的參數更新,而是走 Z 字形逼近最優解。4

激活函數的作用

加入非線性因素
充分組合特征

下面說明一下為什么有組合特征的作用.

一般函數都可以通過泰勒展開式來近似計算, 如sigmoid激活函數中的指數項可以通過如下的泰勒展開來近似計算:

其中有平方項,立方項及更更高項, 而z=wx+bz=wx+b, 因此可以看作是輸入特征 x 的組合. 以前需要由領域專家知識進行特征組合,現在激活函數能起到一種類似特征組合的作用. (思想來源: 微博@算法組)

為什么ReLU,Maxout等能夠提供網絡的非線性建模能力?它們看起來是分段線性函數,然而并不滿足完整的線性要求:加法f(x+y)=f(x)+f(y)和乘法f(ax)=a×f(x)或者寫作。非線性意味著得到的輸出不可能由輸入的線性組合重新得到(重現)。假如網絡中不使用非線性激活函數,那么這個網絡可以被一個單層感知器代替得到相同的輸出,因為線性層加起來后還是線性的,可以被另一個線性函數替代。

梯度消失與梯度爆炸

梯度消失/爆炸原因及解決辦法

原因,淺層的梯度計算需要后面各層的權重及激活函數導數的乘積,因此可能出現前層比后層的學習率小(vanishing gradient)或大(exploding)的問題,所以具有不穩定性.那么如何解決呢?

需要考慮幾個方面:

權重初始化 使用合適的方式初始化權重, 如ReLU使用MSRA的初始化方式, tanh使用xavier初始化方式.
激活函數選擇 激活函數要選擇ReLU等梯度累乘穩定的.
學習率 一種訓練優化方式是對輸入做白化操作(包括正規化和去相關), 目的是可以選擇更大的學習率. 現代深度學習網絡中常使用Batch Normalization(包括正規化步驟,但不含去相關). (All you need is a good init. If you can't find the good init, use Batch Normalization.)

由于梯度的公式包含每層激勵的導數以及權重的乘積,因此讓中間層的乘積約等于1即可.但是sigmoid這種函數的導數值又與權重有關系(最大值1/4,兩邊對稱下降),所以含有sigmoid的神經網絡不容易解決,輸出層的activation大部分飽和,因此不建議使用sigmoid. ReLU在自變量大于0時導數為1,小于0時導數為0,因此可以解決上述問題.

梯度爆炸 由于sigmoid,ReLU等函數的梯度都在[0,1]以內,所以不會引發梯度爆炸問題。 而梯度爆炸需要采用梯度裁剪、BN、設置較小學習率等方式解決。

激活函數選擇

首先嘗試ReLU,速度快,但要注意訓練的狀態.
如果ReLU效果欠佳,嘗試Leaky ReLU或Maxout等變種。
嘗試tanh正切函數(以零點為中心,零點處梯度為1)
sigmoid/tanh在RNN(LSTM、注意力機制等)結構中有所應用,作為門控或者概率值.
在淺層神經網絡中,如不超過4層的,可選擇使用多種激勵函數,沒有太大的影響。

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 原文:https://www.cnblogs.com/makefile/p/activation-function.html©康行天下

總結

以上是生活随笔為你收集整理的【机器学习】激活函数(ReLU, Swish, Maxout)的全部內容,希望文章能夠幫你解決所遇到的問題。

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