給模型熱身——深度學習中的warm up

Warm up是BERT
中一項重要的trick,它是什麼,它究竟能帶給我們什麼,以及如何實現。

它是什麼

Warm up是一種學習率的設置方法,其學習率的變化如下圖所示。

  • 假設我們使用隨訓練衰減的學習率設置方法,學習率的最大值是pp
  • 在模型訓練的前nn步進行warm up,第ii步的學習率爲inp\frac {i}{n} \cdot p
    在這裏插入圖片描述

它能帶給我們什麼

有時候,在我們的數據集中,樣本間的差異很大。比如情感分析任務,有些正負樣本很簡單,也很容易被模型學習到兩者之間的差異。

這個電影真好看。
這個電影真垃圾。

然而,我們希望模型不止於此,模型應該能分辨更復雜、更隱晦的評論樣本。

  1. 如果我們沒做warming up,然後恰好在訓練模型初期,餵給模型的樣本都是簡單的樣本,那麼模型很容易early over-fitting.

  2. 更糟糕的情況時,如果我們的學習率是隨訓練衰減的,那模型在一開始由於學習率很大,將“用力過猛”,可能會用很大的學習率學習到一些無關特徵。

當然我們不用mini-batch的訓練方式,而是讓模型遍歷整個數據集之後再進行訓練會減弱第1種問題,但綜合考慮模型最終收斂效果和資源消耗,mini-batch還是主流選擇。

如何實現

tensorflow實現方式可以看這個人的代碼:TensorFlow中的學習率“熱身”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章