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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BP+SGD+激活函数+代价函数+基本问题处理思路

發(fā)布時間:2024/1/23 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BP+SGD+激活函数+代价函数+基本问题处理思路 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天讀到這篇文章,對之前發(fā)的幾篇博客來說是非常好的總結(jié),所以轉(zhuǎn)載 過來學(xué)習(xí)啦!

0. 學(xué)習(xí)模型評價標(biāo)準(zhǔn)

? ? 1)學(xué)習(xí)速度 ? ? 2)推廣能力/泛化能力/Generalize

1. 反向傳播算法計算全過程

? ? ? 目標(biāo):計算出權(quán)重和偏差的梯度(通過反向傳播誤差的方式)。 ? ? ? 下例中,其激活函數(shù)為Sigmoid函數(shù): ? ? ?

2. 隨機(jī)梯度下降法計算全過程

? ? ? 目標(biāo):更新權(quán)重和偏差。 ? ? ? 下例中,其激活函數(shù)為Sigmoid函數(shù): ? ? ? ?

3. 激活函數(shù)

3.1 為什么需要激活函數(shù)?

? ? 如果不用激活函數(shù),每一層的輸出都是上一層的線性組合,從而導(dǎo)致整個神經(jīng)網(wǎng)絡(luò)的輸出為神經(jīng)網(wǎng)絡(luò)輸入的線性組合,無法逼近任意函數(shù) ? ? 激活函數(shù)有以下特性: ? ? 1)非線性 ? ? 2)可微性:當(dāng)優(yōu)化方法是基于梯度時,此性質(zhì)是必須的 ? ? 3)單調(diào)性:當(dāng)激活函數(shù)是單調(diào)時,可保證單層網(wǎng)絡(luò)是凸函數(shù)? ? ? 4)輸出值的范圍:當(dāng)激活函數(shù)輸出值是 有限 的時候,基于梯度的優(yōu)化方法會更加穩(wěn)定,因?yàn)樘卣鞯谋硎臼苡邢迿?quán)值的影響更顯著;當(dāng)激活函數(shù)的輸出是無限時,模型的訓(xùn)練會更加高效,不過在這種情況小,一般需要更小的Learning Rate.

3.2 常見激活函數(shù)匯總



3.3 Sigmoid激活函數(shù)? ? ??

3.3.1 Sigmoid激活函數(shù)

? ??

? ? 1)優(yōu)點(diǎn):

? ? ? ? ?- 它可把輸入的連續(xù)實(shí)值壓縮到[0,1]之間

? ? ? ? ?- 可解釋為神經(jīng)元飽和的“firing rate”

? ? 2)缺點(diǎn):

? ? ? ? ?- 飽和的神經(jīng)元導(dǎo)致梯度消失

? ? ? ? ? ? 輸入非常大或非常小時,其梯度接近于0

? ? ? ? ?- 指數(shù)運(yùn)算計算量大

? ? ? ? ?- Sigmoid的輸出不是以0為均值

? ? ? ? ? ? 產(chǎn)生的一個結(jié)果就是:如果數(shù)據(jù)進(jìn)入神經(jīng)元的時候是正的(e.g. x>0 elementwise in f=wTx+b),那么 w 計算出的梯度也會始終都是正的。 當(dāng)然了,如果你是按batch去訓(xùn)練,那么那個batch可能得到不同的信號,所以這個問題還是可以緩解一下的。因此,非0均值這個問題雖然會產(chǎn)生一些不好的影響,不過跟上面提到的 kill gradients 問題相比還是要好很多的。


3.3.2 Sigmoid函數(shù)圖形

? ??

3.3.3 Sigmoid函數(shù)導(dǎo)數(shù)圖形

? ? ? ? ? ?

3.4 Softmax激活函數(shù)

? ? ??

? ? ??

? ? ?

? ? ?Softmax的每個神經(jīng)元的輸出都為正,且它們的和為1。所以Softmax層的輸出可以看作一個概率分布 ? ? ?與Softmax相比,Sigmoid層的輸出不能形成一個概率分布,且沒有一個直觀、簡單的解釋。

3.5 tanh激活函數(shù)

? ? ? ? ?

? ? ?1)優(yōu)點(diǎn):

? ? ? ? ? ?- 與Sigmoid相比,tanh是0均值的。

? ? ? ? ? ? ? ? ??-?理論和實(shí)驗(yàn)證據(jù)表明tanh有時比Sigmoid性能更好。

? ? ? ? ? ?- tanh(-z)=-tanh(z)

? ? ?2)缺點(diǎn):

? ? ? ? ?- 飽和的神經(jīng)元導(dǎo)致梯度消失

? ? ? ? ? ? 輸入非常大或非常小時,其梯度接近于0


3.6 校正線性單元(Rectified Linear Unit:ReLU)

? ??

? ? ?f(x) = max(0, wx+b)

? ? ?1)優(yōu)點(diǎn):
? ? ? ? ? 相比于 sigmoid/tanh,有如下優(yōu)點(diǎn):

? ? ? ? ? - 計算高效:采用sigmoid等函數(shù),算激活函數(shù)時(指數(shù)運(yùn)算),計算量大,反向傳播求誤差梯度時,求導(dǎo)涉及除法,計 ?算量相對大,而采用ReLU激活函數(shù),整個過程的計算量節(jié)省很多。

? ? ? ? ? - 沒有飽和及梯度消失問題:對于深層網(wǎng)絡(luò),sigmoid函數(shù)反向傳播時,很容易就會出現(xiàn)梯度消失的情況(在sigmoid接近飽和區(qū)時,變換太緩慢,導(dǎo)數(shù)趨于0,這種情況會造成信息丟失,從而無法完成深層網(wǎng)絡(luò)的訓(xùn)練。

? ? ? ? ? -?ReLU會使一部分神經(jīng)元的輸出為0,這樣就造成了網(wǎng)絡(luò)的稀疏性,并且減少了參數(shù)的相互依存關(guān)系,緩解了過擬合問題的發(fā)生。

? ? ? ? ? - 收斂速度比sigmoid/tanh快6倍?

? ? ?2)缺點(diǎn):?

? ? ? ? ? - 當(dāng)然 ReLU 也有缺點(diǎn),就是訓(xùn)練的時候很”脆弱”,很容易就”die”了. 什么意思呢?

? ? ? ? ? ? 舉個例子:一個非常大的梯度流過一個 ReLU 神經(jīng)元,更新過參數(shù)之后,這個神經(jīng)元再也不會對任何數(shù)據(jù)有激活現(xiàn)象了。如果這個情況發(fā)生了,那么這個神經(jīng)元的梯度就永遠(yuǎn)都會是0.實(shí)際操作中,如果你的Learning Rate 很大,那么很有可能你網(wǎng)絡(luò)中的40%的神經(jīng)元都”dead”了。?
? ? ? ? ? ?當(dāng)然,如果你設(shè)置了一個合適的較小的Learning Rate,這個問題發(fā)生的情況其實(shí)也不會太頻繁。

? ? ? ? ? ?- ?當(dāng)z<0時,梯度也消失了

? ? ? ? ? ?- 非零居中輸出

3.7 Leaky-ReLU、P-ReLU、R-ReLU

? ? ? 1)Leaky ReLU:

? ? ? ? ? ?就是用來解決“Die ReLU”的,其定義如下:

? ? ? ??

? ? ? α?是一個很小的常數(shù)(如0.01)。這樣,即修正了數(shù)據(jù)分布,又保留了一些負(fù)軸的值,使得負(fù)軸信息不會全部丟失。關(guān)于Leaky ReLU 的效果,眾說紛紜,沒有清晰的定論。有些人做了實(shí)驗(yàn)發(fā)現(xiàn) Leaky ReLU 表現(xiàn)的很好;有些實(shí)驗(yàn)則證明并不是這樣。? ??

? ? ? ?

? ? ? ? 優(yōu)點(diǎn):

? ? ? ? ??- 不會飽和
? ? ? ? ? - 計算高效
? ? ? ? ??- 收斂速度快
? ? ? ? ??- 不會死

? ? ? ? 2)Parametric ReLU:?

? ? ? ?對于 Leaky ReLU 中的α,通常都是通過先驗(yàn)知識人工賦值的。 而P-ReLU中,α?是一個變量,需要被學(xué)習(xí)。
? ? ? ?然而可以觀察到,損失函數(shù)對α的導(dǎo)數(shù)我們是可以求得的,可不可以將它作為一個參數(shù)進(jìn)行訓(xùn)練呢??
Kaiming He的論文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》指出,不僅可以訓(xùn)練,而且效果更好。

? ? ? ?公式非常簡單,反向傳播至未激活前的神經(jīng)元的公式就不寫了,很容易就能得到。對α的導(dǎo)數(shù)如下:

δyiδα=0(ifyi>0)else=yi

? ? ? 原文說使用了Parametric ReLU后,最終效果比不用提高了1.03%.

? ? ? 3)Randomized ReLU:?
? ? ? ? ? ?Randomized Leaky ReLU 是 leaky ReLU 的random 版本 (α?是random的).?
? ? ? ? ? 它首次試在 kaggle 的NDSB 比賽中被提出的。?核心思想就是,在訓(xùn)練過程中,α?是從一個高斯分布?

U(l,u)?中 隨機(jī)出來的,然后再測試過程中進(jìn)行修正(有點(diǎn)像dropout的用法)。

? ? ? ? ?數(shù)學(xué)表示如下:

? ? ? ?在測試階段,把訓(xùn)練過程中所有的?αij?取個平均值。NDSB 冠軍的?α?是從?U(3,8)?中隨機(jī)出來的。那么,在測試階段,激活函數(shù)就是就是:?

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

? ? ? ?4)?Exponential Linear Units (ELU)

? ? ? ?

? ? ? ?1)優(yōu)點(diǎn):

? ? ? ? ? ? ?- ?所有ReLU的優(yōu)點(diǎn)
? ? ? ? ? ? ?- 不會死
? ? ? ? ? ? ?- 輸出接近0均值
? ? ? ?2)缺點(diǎn):
? ? ? ? ? ? - 計算量大,需要指數(shù)運(yùn)算

3.8 Maxout

? ? ?Maxout定義如下:

? ? ? ? ? ? ?

? ? ?Maxout其實(shí)是改變了神經(jīng)元的形式,它將每個神經(jīng)元由原來一次訓(xùn)練一組參數(shù)擴(kuò)展為同時訓(xùn)練多組參數(shù),然后選擇激活值最大的作為下一層的激活值,比如同時訓(xùn)練3組參數(shù):

? ? ? ? ? ? ? ? ? ?

? ? ??可以看出ReLu為Maxout同時訓(xùn)練兩組參數(shù)且w2,b2取0時的情形,因此maxout擁有ReLu的所有優(yōu)點(diǎn)同時避免了神經(jīng)元“死亡”的現(xiàn)象;但是,由于需要多訓(xùn)練了幾組參數(shù),網(wǎng)絡(luò)的效率也大大降低了

? ? ? Maxout的擬合能力是非常強(qiáng)的,它可以擬合任意的的凸函數(shù)。最直觀的解釋就是任意的凸函數(shù)都可以由分段線性函數(shù)以任意精度擬合,而Maxout又是取k個“隱隱含層”節(jié)點(diǎn)的最大值,這些”隱隱含層"節(jié)點(diǎn)也是線性的,所以在不同的取值范圍下,最大值也可以看做是分段線性的(分段的個數(shù)與k值有關(guān))。論文中的圖1如下(它表達(dá)的意思就是可以擬合任意凸函數(shù),當(dāng)然也包括了ReLU了):

? ? ??

? ? ??

3.9 激活函數(shù)表

??

3.10 Conv&Maxout&NIN

? ? NIN: Network in Network

? ? Maxout和NIN都是對傳統(tǒng)conv+relu的改進(jìn);Maxout想表明它能夠擬合任何凸函數(shù),也就能夠擬合任何的激活函數(shù)(默認(rèn)了激活函數(shù)都是凸的);NIN想表明它不僅能夠擬合任何凸函數(shù),而且能夠擬合任何函數(shù),因?yàn)樗举|(zhì)上可以說是一個小型的全連接神經(jīng)網(wǎng)絡(luò)。

3.10.1 工作流程

? ? 1)常規(guī)卷積層:conv→relu
? ? ? ? ? - conv: conv_out=∑(x·w)
? ? ? ? ? - ReLU: y=max(0, conv_out)

? ? 2)Maxout:several conv(full)→max
? ? ? ? ? - several conv (full): conv_out1 = x·w_1, conv_out2 = x·w_2, …
? ? ? ? ? - max: y = max(conv_out1, conv_out2, …)
? ? 3)NIN: conv→relu→conv(1x1)→relu
? ? ? ? ? - several conv (full): conv_out1 = x·w_1, conv_out2 = x·w_2, …
? ? ? ? ? - relu: relu_out1 = max(0, conv_out1), relu_out2 = max(0, conv_out2), …
? ? ? ? ? - conv(1x1): conv_1x1_out = [relu_out1, relu_out2, …]·w_1x1
? ? ? ? ? - relu: y = max(0, conv_1x1_out)

3.10.2 實(shí)例說明

? ? ?假設(shè)現(xiàn)在有一個3x3的輸入,用一個9維的向量x代表,卷積核大小也是3x3,也9維的向量w代表。
? ? ?1)常規(guī)卷積層:直接x和w求卷積,然后relu一下就好了。
? ? ?2)Maxout:有k個的3x3的w(這里的k是自由設(shè)定的),分別卷積得到k個1x1的輸出,然后對這k個輸入求最大值
? ? ?3)NIN:有k個3x3的w(這里的k也是自由設(shè)定的),分別卷積得到k個1x1的輸出,然后對它們都進(jìn)行ReLU,然后再次對它們進(jìn)行卷積,結(jié)果再ReLU。(這個過程,等效于一個小型的全連接網(wǎng)絡(luò))
? ??


3.11 如何選擇激活函數(shù)

? ?1)不要使用sigmoid;
? ?2)可以考慮使用tanh,但期望不要太高;
? ?3)使用ReLU激活函數(shù)的話,注意不要把學(xué)習(xí)率設(shè)得太高,避免產(chǎn)生結(jié)點(diǎn)”死亡”現(xiàn)象;
? ?4)最好使用Maxout / Leaky ReLU / ELU, 他們的效果比tanh好。

4. 代價函數(shù)

4.1 交叉熵代價函數(shù)

?? ?

? ?如果激活函數(shù)為sigmoid函數(shù),則有:

? ?

4.2 二次代價函數(shù)

? ? 如果激活函數(shù)為sigmoid函數(shù),則有:

? ??

4.3 對數(shù)似然代價函數(shù)

? ??

? ? ?從以上梯度公式中可知,對于解決學(xué)習(xí)速度慢的問題:【Softmax輸出層+對數(shù)似然成本函數(shù)】與【Sigmoid輸出層+交叉熵成本函數(shù)】效果相當(dāng)。

? ? ?在二者間如何做出選擇呢? ? ???當(dāng)你需要把輸出當(dāng)做概率解釋時,則需要使用【Softmax輸出層+對數(shù)似然成本函數(shù)】? ??

5.?基本問題處理思路

5.1 減少參數(shù)數(shù)量

? ? ? 1)主要是減少權(quán)重參數(shù)數(shù)量,如CNN與全連接神經(jīng)網(wǎng)絡(luò)相比,通過共享權(quán)重和偏差,大大減少了權(quán)重參數(shù)的數(shù)量;從而使學(xué)習(xí)變得更加容易。

5.2 減少過擬合

5.2.1 使用強(qiáng)有力的規(guī)范化技術(shù)

? ? ? ? ? ? - L1規(guī)范化

? ? ? ? ? ? ??

? ? ? ? ? ? - L2規(guī)范化(或權(quán)重衰減:weight decay)

? ? ? ? ? ? ? 獲取小的權(quán)重,且使代價函數(shù)的值最小。

? ? ? ? ? ? ??

? ? ? ? ? ? - dropout(棄權(quán))

? ? ? ? ? ? ? dropout不修改代價函數(shù),而是修改網(wǎng)絡(luò)本身。基本思路是:保持輸入和輸出神經(jīng)元不變,對于一個mini-batch訓(xùn)練樣本,隨機(jī)刪除一半的隱層神經(jīng)元,然后根據(jù)BP+SGD更新權(quán)重和偏差;然后基于另一個mini-batch做同樣的操作;一直重復(fù)下去。

? ? ? ? ? ? ? ?可以理解為訓(xùn)練多個神經(jīng)網(wǎng)絡(luò),然后多個神經(jīng)網(wǎng)絡(luò)再對結(jié)果進(jìn)行投票,從而排除overfitting。其目標(biāo)是:在丟失部分證據(jù)的條件下,此方法同樣健壯。

? ? ? ? ? ? ? ?Dropout用于訓(xùn)練大的深度網(wǎng)絡(luò)很有用,因?yàn)樵诖祟惥W(wǎng)絡(luò)中,overfitting問題非常嚴(yán)重。

? ? ? ? ? ? ? ?

? ? ? ? ? ? - 卷積層

? ? ? ? ? ? ? ?共享權(quán)重:意味著卷積濾波器被強(qiáng)制從整個圖像中學(xué)習(xí),于是對過擬合就有了很強(qiáng)的抵抗性。

? ? ? ? ? ? - 人工擴(kuò)展訓(xùn)練數(shù)據(jù)


5.2.2 增加訓(xùn)練數(shù)據(jù)的數(shù)量


5.3 加速訓(xùn)練

? ? ? 1)使用ReLU而不是Sigmoid,可以加速訓(xùn)練。

5.4 訓(xùn)練時間長

? ? ? 1)可通過GPU來進(jìn)行長期訓(xùn)練。

5.5 學(xué)習(xí)速度下降

? ? ? 1)使用正確的代價函數(shù)(如交叉熵代價函數(shù)):避免梯度消失或爆炸,即梯度不穩(wěn)定問題。

? ? ? 2)使用好的權(quán)重初始化:避免神經(jīng)元飽和。




參考:http://www.cnblogs.com/tornadomeet/tag/Deep%20Learning/



總結(jié)

以上是生活随笔為你收集整理的BP+SGD+激活函数+代价函数+基本问题处理思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。