[激活函數(shù)]什么是 ReLU

參考資料:算法基礎(chǔ)---ReLU激活函數(shù)及其變種


1、什么是 ReLU

ReLU 是修正線性單元(rectified linear unit),在 0 和 x 之間取最大值。


2、為什么要引入 ReLU

因?yàn)?sigmoid 和 tanh 容易導(dǎo)致梯度消失,而 ReLU 是非飽和激活函數(shù),不容易發(fā)生梯度消失


3、ReLU 的函數(shù)表達(dá)式和導(dǎo)數(shù)表達(dá)式

ReLU 的函數(shù)表達(dá)式:

當(dāng) x <= 0 時(shí),ReLU = 0

當(dāng) x > 0 時(shí),ReLU = x


ReLU 的導(dǎo)數(shù)表達(dá)式:

當(dāng) x<= 0 時(shí),導(dǎo)數(shù)為 0

當(dāng) x > 0 時(shí),導(dǎo)數(shù)為 1


4、ReLU 的函數(shù)圖像和導(dǎo)數(shù)圖像

ReLU 的函數(shù)圖像:


ReLU 的導(dǎo)數(shù)圖像:



5、ReLU 的優(yōu)點(diǎn)

① 有效緩解過擬合的問題,因?yàn)?ReLU 有可能使部分神經(jīng)節(jié)點(diǎn)的輸出變?yōu)?0,從而導(dǎo)致神經(jīng)節(jié)點(diǎn)死亡,降低了神經(jīng)網(wǎng)絡(luò)的復(fù)雜度

②? 不會(huì)發(fā)生梯度消失或梯度爆炸,當(dāng) x 大于 0 時(shí),ReLU 的梯度恒為 1,不會(huì)隨著網(wǎng)路深度的加深而使得梯度在累乘的時(shí)候變得越來越小或者越來越大,從而不會(huì)發(fā)生梯度消失或梯度爆炸

③ 計(jì)算簡(jiǎn)單,ReLU 本質(zhì)上就是計(jì)算一次在兩個(gè)值中取最大值


6、ReLU 的缺點(diǎn)

① 會(huì)導(dǎo)致神經(jīng)元死亡,當(dāng)一個(gè)神經(jīng)元在某次的激活值為 0 之后,此后得到的激活值都是 0.

證明:

因?yàn)榧僭O(shè)某個(gè)神經(jīng)元在第 N 次時(shí)的激活值為 0,則第 N+1 次的激活值為:O_{n+1} = max(0, O_{n} - \alpha g(x)),其中?\alpha ?取值大于 0,?g(x) ?是 ReLU 在 x 點(diǎn)的梯度。當(dāng) x <= 0 時(shí),g(x)?的值為 0,則?O_{n+1}也為 0;當(dāng) x > 0 時(shí),g(x)?的梯度為 1,則?O_{n+1}?為 0 和?-\alpha?中的最大值 0.即無論 x 取什么值,O_{n+1}?的值都等于 0.

解決方法:

① 對(duì)于ReLU 會(huì)導(dǎo)致神經(jīng)節(jié)點(diǎn)死亡的原因有:

a.參數(shù)初始化時(shí)初始化到的參數(shù)值恰好能使神經(jīng)節(jié)點(diǎn)死亡,不過這種情況非常罕見

b.學(xué)習(xí)率太高,導(dǎo)致在參數(shù)更新時(shí),導(dǎo)致參數(shù)小于等于 0

改進(jìn)方法有:

針對(duì)原因 a,采用 Xavier 初始化方法(深度學(xué)習(xí)——Xavier初始化方法)


針對(duì)原因 b,可以設(shè)置小一點(diǎn)的學(xué)習(xí)率或者是使用會(huì)自動(dòng)調(diào)整學(xué)習(xí)率的優(yōu)化方法,例如 Adagrad


② 輸出不是零均值化(zero-centered),會(huì)導(dǎo)致模型收斂較慢(解釋:談?wù)劶せ詈瘮?shù)以零為中心的問題)


7、ReLU 的變種:

① Leaky ReLU

Leaky ReLU 的目的是為了解決 ReLU 的死亡神經(jīng)節(jié)點(diǎn)的問題。Leaky ReLU 的表達(dá)式是:

ReLU = max(\alpha x, x),其中 \alpha ?通常取值為 0.01,即

當(dāng) x <= 0 時(shí),ReLU =?\alpha x

當(dāng) x > 0 時(shí),ReLU =?x


② PReLU,Parameter ReLU 是對(duì) Leaky ReLU 的改進(jìn),對(duì)于?\alpha ?不再取定值,而是從樣本中學(xué)習(xí)得到,具有收斂速度快,錯(cuò)誤率低的優(yōu)點(diǎn)。

③ RReLU,Randomized ReLU 是對(duì) Leaky ReLU 的改進(jìn),對(duì)于?\alpha ?不再取定值,而是在指定范圍內(nèi)隨機(jī)取一個(gè)值,而在預(yù)測(cè)階段則是使用固定值。PReLU 在一定程度上具有正則效果


8、pytorch 的 ReLU 函數(shù)的作用和參數(shù)詳解

torch.nn.ReLU(inplace=False)?

函數(shù)作用:對(duì)輸入進(jìn)行修正線性函數(shù) ReLU(x) = max(0, x)

參數(shù)詳解

inplace:默認(rèn)為 False,即不進(jìn)行覆蓋運(yùn)算,默認(rèn)為 True 的話,則會(huì)對(duì)輸入進(jìn)行覆蓋運(yùn)算,此時(shí)減少了申請(qǐng)和注銷內(nèi)存的操作,會(huì)提高運(yùn)行效率

例子:

from?torch?import?autograd

>>>?m?=?nn.ReLU()

>>>?input?=?autograd.Variable(torch.randn(2))

>>>?print(input)

>>>?print(m(input))

結(jié)果:

tensor([-0.3543, -0.7416])

tensor([0., 0.])


注:連續(xù)使用多次 ReLU 跟使用一次的 ReLU 的效果是一樣的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容