深度學習有哪些trick?
點擊上方“程序員大白”,選擇“星標”公眾號
重磅干貨,第一時間送達

問答來源:https://www.zhihu.com/question/30712664
# 回答一
作者:DOTA
京東算法工程師
來源鏈接:https://zhuanlan.zhihu.com/p/352971645
還是蠻多的,之前總結過一次,在這里搬運一下,DOTA:大道至簡:算法工程師煉丹Trick手冊
https://zhuanlan.zhihu.com/p/352971645
Focal Loss

針對類別不平衡問題,用預測概率對不同類別的loss進行加權。Focal loss對CE loss增加了一個調(diào)制系數(shù)來降低容易樣本的權重值,使得訓練過程更加關注困難樣本。
loss = -np.log(p)loss = (1-p)^G * loss
Dropout

隨機丟棄,抑制過擬合,提高模型魯棒性。
Normalization
Batch Normalization 于2015年由 Google 提出,開 Normalization 之先河。其規(guī)范化針對單個神經(jīng)元進行,利用網(wǎng)絡訓練時一個 mini-batch 的數(shù)據(jù)來計算該神經(jīng)元的均值和方差,因而稱為 Batch Normalization。
x = (x - x.mean()) / x.std()relu

用極簡的方式實現(xiàn)非線性激活,緩解梯度消失。
x = max(x, 0)Cyclic LR

每隔一段時間重啟學習率,這樣在單位時間內(nèi)能收斂到多個局部最小值,可以得到很多個模型做集成。
scheduler = lambda x: ((LR_INIT-LR_MIN)/2)*(np.cos(PI*(np.mod(x-1,CYCLE)/(CYCLE)))+1)+LR_MINWith Flooding

當training loss大于一個閾值時,進行正常的梯度下降;當training loss低于閾值時,會反過來進行梯度上升,讓training loss保持在一個閾值附近,讓模型持續(xù)進行"random walk",并期望模型能被優(yōu)化到一個平坦的損失區(qū)域,這樣發(fā)現(xiàn)test loss進行了double decent。
flood = (loss - b).abs() + bGroup Normalization

def GroupNorm(x, gamma, beta, G, eps=1e-5):# x: input features with shape [N,C,H,W]# gamma, beta: scale and offset, with shape [1,C,1,1]# G: number of groups for GNN, C, H, W = x.shapex = tf.reshape(x, [N, G, C // G, H, W])mean, var = tf.nn.moments(x, [2, 3, 4], keep dims=True)x = (x - mean) / tf.sqrt(var + eps)x = tf.reshape(x, [N, C, H, W])return x * gamma + beta
Label Smoothing


abel smoothing將hard label轉變成soft label,使網(wǎng)絡優(yōu)化更加平滑。標簽平滑是用于深度神經(jīng)網(wǎng)絡(DNN)的有效正則化工具,該工具通過在均勻分布和hard標簽之間應用加權平均值來生成soft標簽。它通常用于減少訓練DNN的過擬合問題并進一步提高分類性能。
targets = (1 - label_smooth) * targets + label_smooth / num_classes
Wasserstein GAN

徹底解決GAN訓練不穩(wěn)定的問題,不再需要小心平衡生成器和判別器的訓練程度 基本解決了Collapse mode的問題,確保了生成樣本的多樣性訓練過程中終于有一個像交叉熵、準確率這樣的數(shù)值來指示 訓練的進程,數(shù)值越小代表GAN訓練得越好,代表生成器產(chǎn)生的圖像質(zhì)量越高 不需要精心設計的網(wǎng)絡架構,最簡單的多層全連接網(wǎng)絡就可以做到以上3點。
Skip Connection
一種網(wǎng)絡結構,提供恒等映射的能力,保證模型不會因網(wǎng)絡變深而退化。
F(x) = F(x) + x參考文獻
https://www.zhihu.com/question/427088601 https://arxiv.org/pdf/1701.07875.pdf https://zhuanlan.zhihu.com/p/25071913 https://www.zhihu.com/people/yuconan/posts
# 回答二
作者:永無止境
來源鏈接:
https://www.zhihu.com/question/30712664/answer/1341368789在噪聲較強的時候,可以考慮采用軟閾值化作為激活函數(shù):

軟閾值化幾乎是降噪的必備步驟,但是閾值τ該怎么設置呢?
閾值τ不能太大,否則所有的輸出都是零,就沒有意義了。而且,閾值不能為負。
針對這個問題,深度殘差收縮網(wǎng)絡[1][2]提供了一個思路,設計了一個特殊的子網(wǎng)絡來自動設置:

Zhao M, Zhong S, Fu X, Tang B, Pecht M. Deep residual shrinkage networks for fault diagnosis. IEEE Transactions on Industrial Informatics. 2019 Sep 26;16(7):4681-90.
參考:
# 回答三
作者:馮遷
來源鏈接:https://www.zhihu.com/question/30712664/answer/1816283937
贊比較多的給了些,損失函數(shù)(focal),模型結構(identity skip),訓練方面(strategy on learning rate),穩(wěn)定性方面(normalization),復雜泛化性(drop out),宜優(yōu)化性(relu,smooth label)等,這些都可以擴展。
focal 可以擴展到centernet loss,結構有尺度fpn,重復模塊,堆疊concatenate,splite,cross fusion等,訓練方面有teaching,step learning,對抗(本身是個思想),多階段優(yōu)化,progress learning,穩(wěn)定性方面,batch normal,instance normal,group normal之外,還有譜范數(shù)等,復雜性還有正則l1/2等,宜優(yōu)化性,可以擴展到檢測的anchor等。
dl你得說優(yōu)化器吧,把動量,一二階考慮進來,梯度方向和一階動量的折中方向,把隨機考慮進來sgd
以上可能帶來最多10的收益,你得搞數(shù)據(jù)啊
數(shù)據(jù)方面的處理clean,various ,distribution,aug data等更重要(逃…
推薦閱讀
國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))
年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了
關于程序員大白
程序員大白是一群哈工大,東北大學,西湖大學和上海交通大學的碩士博士運營維護的號,大家樂于分享高質(zhì)量文章,喜歡總結知識,歡迎關注[程序員大白],大家一起學習進步!

