<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          算法工程師煉丹Tricks手冊(附1090頁P(yáng)DF下載)

          共 3462字,需瀏覽 7分鐘

           ·

          2021-08-29 16:03

          ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺

          本文作為總結(jié)機(jī)器學(xué)習(xí)、深度學(xué)習(xí)領(lǐng)域?qū)嵺`過程中各種“大道至簡”的煉丹筆記小技巧,并在文末附《全球機(jī)器學(xué)習(xí)技術(shù)大會》來自各互聯(lián)網(wǎng)大廠嘉賓分享的1090頁實(shí)戰(zhàn)經(jīng)驗(yàn)干貨PDF

          01


          Cyclic LR


              

          每隔一段時(shí)間重啟學(xué)習(xí)率,這樣在單位時(shí)間內(nèi)能收斂到多個局部最小值,可以得到很多個模型做集成。

          scheduler = lambda x: ((LR_INIT-LR_MIN)/2)*(np.cos(PI*(np.mod(x-1,CYCLE)/(CYCLE)))+1)+LR_MIN


          02


          With Flooding


              

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

          flood = (loss - b).abs() + b    


          03


          Warmup

              

          Warmup有助于減緩模型在初始階段對mini-batch的提前過擬合現(xiàn)象,保持分布的平穩(wěn),同時(shí)有助于保持模型深層的穩(wěn)定性。

          warmup_steps = int(batches_per_epoch * 5)warmup_lr = (initial_learning_rate * tf.cast(global_step, tf.float32) / tf.cast(warmup_steps, tf.float32))return tf.cond(global_step < warmup_steps, lambda: warmup_lr, lambda: lr)

          04


          RAdam

              

          RAdam 的核心在于用指數(shù)滑動平均去估計(jì)梯度每個分量的一階矩(動量)和二階矩(自適應(yīng)學(xué)習(xí)率),并用二階矩去 normalize 一階矩,得到每一步的更新量。

          from radam import *


          05


          Adversarial Training



              

          對抗訓(xùn)練(Adversarial Training),顧名思義,就是在訓(xùn)練過程中產(chǎn)生一些攻擊樣本,早期是FGSM和I-FGSM攻擊,目前當(dāng)前最優(yōu)的攻擊手段是PGD。對抗訓(xùn)練,相當(dāng)于是加了一層正則化,給神經(jīng)網(wǎng)絡(luò)的隨機(jī)梯度優(yōu)化限制了一個李普希茨的約束。


          傳統(tǒng)上認(rèn)為,這個訓(xùn)練方式會犧牲掉一定的測試精度,因?yàn)榫矸e模型關(guān)注局部特性,會學(xué)到一些敏感于擾動的特征,對抗訓(xùn)練是一種去偽存真的過程,這是目前像素識別的視覺算法的局限性。這里蘇建林在kexue.fm里實(shí)現(xiàn)是很簡單的,詳情參看引用鏈接。

          # 寫好函數(shù)后,啟用對抗訓(xùn)練只需要一行代碼
          adversarial_training(model, 'Embedding-Token', 0.5)


          06


          Focal Loss


              


          針對類別不平衡問題,用預(yù)測概率對不同類別的loss進(jìn)行加權(quán)Focal loss對CE loss增加了一個調(diào)制系數(shù)來降低容易樣本的權(quán)重值,使得訓(xùn)練過程更加關(guān)注困難樣本。

          loss = -np.log(p) 
          loss = (1-p)^G * loss


          07


          Dropout


              隨機(jī)丟棄,抑制過擬合,提高模型魯棒性。

              

          08


          Normalization

             

          Batch Normalization 于2015年由 Google 提出,開 Normalization 之先河。其規(guī)范化針對單個神經(jīng)元進(jìn)行,利用網(wǎng)絡(luò)訓(xùn)練時(shí)一個 mini-batch 的數(shù)據(jù)來計(jì)算該神經(jīng)元  的均值和方差,因而稱為 Batch Normalization。

          x = (x - x.mean()) / x.std()


          09


                  relu         


          用極簡的方式實(shí)現(xiàn)非線性激活,緩解梯度消失。

          x = max(x, 0)


          10


          Group Normalization



              

          Face book AI research(FAIR)吳育昕-愷明聯(lián)合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度學(xué)習(xí)里程碑式的工作Batch normalization。一句話概括,Group Normbalization(GN)是一種新的深度學(xué)習(xí)歸一化方式,可以替代BN。

          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 GN
          N, C, H, W = x.shape
          x = 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


          11


          Label Smoothing



             

          label smoothing將hard label轉(zhuǎn)變成soft label,使網(wǎng)絡(luò)優(yōu)化更加平滑。標(biāo)簽平滑是用于深度神經(jīng)網(wǎng)絡(luò)(DNN)的有效正則化工具,該工具通過在均勻分布和hard標(biāo)簽之間應(yīng)用加權(quán)平均值來生成soft標(biāo)簽。它通常用于減少訓(xùn)練DNN的過擬合問題并進(jìn)一步提高分類性能。

          targets = (1 - label_smooth) * targets + label_smooth / num_classes


          0112


          Wasserstein GAN

          • 徹底解決GAN訓(xùn)練不穩(wěn)定的問題,不再需要小心平衡生成器和判別器的訓(xùn)練程度

          • 基本解決了Collapse mode的問題,確保了生成樣本的多樣性

          • 訓(xùn)練過程中終于有一個像交叉熵、準(zhǔn)確率這樣的數(shù)值來指示訓(xùn)練的進(jìn)程,數(shù)值越小代表GAN訓(xùn)練得越好,代表生成器產(chǎn)生的圖像質(zhì)量越高

          • 不需要精心設(shè)計(jì)的網(wǎng)絡(luò)架構(gòu),最簡單的多層全連接網(wǎng)絡(luò)就可以做到以上3點(diǎn)。


          13


          Skip Connection

              

          一種網(wǎng)絡(luò)結(jié)構(gòu),供恒等映射的能力,保證模型不會因網(wǎng)絡(luò)變深而退化。

          F(x) = F(x) + x


          14


          Weight Initialization

              

          權(quán)重初始化對模型收斂速度和模型質(zhì)量有著重要的影響。參數(shù)在剛開始不能全都初始化為0,因?yàn)槿绻械膮?shù)都是0,那么所有神經(jīng)元的輸出都將是相同的,在反向傳播時(shí)同一層內(nèi)所有的神經(jīng)元的行為也都一致。

          Embedding(embeddings_initializer=word2vec_emb,input_dim=2009,output_dim=DOTA)

          點(diǎn)擊下方??跳轉(zhuǎn) 煉丹筆記 公眾號

          發(fā)送“ML2021”即可領(lǐng)取1090頁干貨PDF。

          目錄內(nèi)容


          點(diǎn)擊下方??跳轉(zhuǎn) 煉丹筆記 公眾號

          發(fā)送“ML2021”即可領(lǐng)取1090頁干貨PDF。

          瀏覽 60
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天天操操操 | 黄色三级片免费看的 | 大香蕉九九| 欧美操逼A片 | 国产成人视频九色91 |