日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【深度学习】算法工程师面试必考点:Dropout和R-Dropout的使用技巧

發(fā)布時間:2025/3/12 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】算法工程师面试必考点:Dropout和R-Dropout的使用技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者?|?BetterBench

出品 | 對白的算法屋

編者寄語:

搞懂Dropout和R-Drop看這篇就夠了。

上一篇R-Drop:提升有監(jiān)督任務(wù)性能最簡單的方法,很多小伙伴們都私信我說,讓我介紹一下Dropout和R-Drop之間的區(qū)別。相信大家看完這篇后,當(dāng)面試官再問時,就可以輕松應(yīng)對啦!

1、引言

在ML中存在兩類嚴(yán)重的問題:過擬合和學(xué)習(xí)時間開銷大

當(dāng)過擬合時,得到的模型會在訓(xùn)練集上有非常好的表現(xiàn),但是對新數(shù)據(jù)的預(yù)測結(jié)果會非常的不理想。為了解決過擬合問題,通常會采用訓(xùn)練多個模型來解決單模過擬合的問題。但又會帶來時間開銷大的問題。Dropout就很好的解決了這個問題,在單模內(nèi)防止過擬合。對于時間開銷大的地方是梯度下降,學(xué)習(xí)率衰減可以解決梯度下降中時間開銷的問題。

Dropout是在訓(xùn)練過程中,隨機地忽略部分神經(jīng)元,即是在正向傳播的過程中,這些被忽略的神經(jīng)元對下游神經(jīng)元的貢獻(xiàn)暫時消失,在反向傳播時,這些神經(jīng)元也不會有任何權(quán)重的更新。

2、Dropout使用技巧

(1)經(jīng)過驗證,隱含節(jié)點Dropout率等于0.5的時候最佳,此時Dropout隨機生成的網(wǎng)絡(luò)結(jié)構(gòu)最多。Dropout也可以用在輸入層,作為一種添加噪聲的方法。輸入層設(shè)為更接近1時,使得輸入變化不會太大,比如0.8。

(2)通常在網(wǎng)絡(luò)中Dropout率為0.2~0.5。0.2是一個很好的起點,太低的概率產(chǎn)生的作用有限,太高的概率可能導(dǎo)致網(wǎng)絡(luò)的訓(xùn)練不充分。

(3)當(dāng)在較大的網(wǎng)絡(luò)上使用Dropout時,可能會獲得更好的表現(xiàn),因為Dropout降低了模型訓(xùn)練過程中的干擾

(4)在輸入層和隱藏層上使用Dropout?;蛘咴诰W(wǎng)絡(luò)的每一層都使用Dropout能有更佳的效果。

(5)使用較高的學(xué)習(xí)率,使用學(xué)習(xí)率衰減和設(shè)置較大的動量值,將學(xué)習(xí)率提高10~100倍,且使用0.9或0.99的動量值。

Keras中,momentum就是動量值
sgd = SGD(lr=0.1,momentum=0.8,decay=0.0,nesterov=False)

(6)限制網(wǎng)絡(luò)權(quán)重的大小,打的學(xué)習(xí)率可能導(dǎo)致非常大的網(wǎng)絡(luò)權(quán)重,對網(wǎng)絡(luò)權(quán)重大小進(jìn)行約束,例如大小為4或5的最大范數(shù)正則化(Max-norm Regularizationi)。

Keras中,通過指定Dense中的kernel_constrain=maxnorm(x)來限制網(wǎng)絡(luò)權(quán)重

參考資料:Dropout: A Simple Way to Prevent Neural Networks from Overfitting

3、Dropout的拓展R-Dropout

3.1 簡介

簡單來說就是模型中加入dropout,在訓(xùn)練階段的預(yù)測階段,用同樣的數(shù)據(jù)預(yù)測兩次,去追求兩次的結(jié)果盡可能接近,這種接近體現(xiàn)在損失函數(shù)上。雖然是同樣的數(shù)據(jù),但是因為模型中Dropout是隨機丟棄神經(jīng)元,會導(dǎo)致兩次丟棄的神經(jīng)元不一樣,從而預(yù)測的結(jié)果也會不一樣。R-Dropout思想就是去實現(xiàn)控制兩次預(yù)測盡量保持一致,從而去優(yōu)化模型。除了在NLP領(lǐng)域,其他的NLU、NLG、CV的分類等多種任務(wù)上都對R-Drop做了對比實驗,大部分實驗效果都稱得上“明顯提升”。

3.2 使用方法

和普通的Dropout方法不同,有封裝的API可以一行代碼使用。R-Dropout的使用需要自定義模型的輸入和損失函數(shù)。舉例如下,參考NLP 中Pytorch 實現(xiàn)R-Dropout

# define your task model, which outputs the classifier logits model = TaskModel()def compute_kl_loss(self, p, q pad_mask=None):p_loss = F.kl_div(F.log_softmax(p, dim=-1), F.softmax(q, dim=-1), reduction='none')q_loss = F.kl_div(F.log_softmax(q, dim=-1), F.softmax(p, dim=-1), reduction='none')# pad_mask is for seq-level tasksif pad_mask is not None:p_loss.masked_fill_(pad_mask, 0.)q_loss.masked_fill_(pad_mask, 0.)# You can choose whether to use function "sum" and "mean" depending on your taskp_loss = p_loss.sum()q_loss = q_loss.sum()loss = (p_loss + q_loss) / 2return loss# keep dropout and forward twice logits = model(x)logits2 = model(x)# cross entropy loss for classifier ce_loss = 0.5 * (cross_entropy_loss(logits, label) + cross_entropy_loss(logits2, label))kl_loss = compute_kl_loss(logits, logits2)# carefully choose hyper-parameters loss = ce_loss + α * kl_loss

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機器學(xué)習(xí)課程》視頻課黃海廣老師《機器學(xué)習(xí)課程》711頁完整版課件

本站qq群851320808,加入微信群請掃碼:

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的【深度学习】算法工程师面试必考点:Dropout和R-Dropout的使用技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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