Warm up是BERT
中一項重要的trick,它是什麼,它究竟能帶給我們什麼,以及如何實現。
它是什麼
Warm up是一種學習率的設置方法,其學習率的變化如下圖所示。
- 假設我們使用隨訓練衰減的學習率設置方法,學習率的最大值是。
- 在模型訓練的前步進行warm up,第步的學習率爲
它能帶給我們什麼
有時候,在我們的數據集中,樣本間的差異很大。比如情感分析任務,有些正負樣本很簡單,也很容易被模型學習到兩者之間的差異。
這個電影真好看。
這個電影真垃圾。
然而,我們希望模型不止於此,模型應該能分辨更復雜、更隱晦的評論樣本。
-
如果我們沒做warming up,然後恰好在訓練模型初期,餵給模型的樣本都是簡單的樣本,那麼模型很容易early over-fitting.
-
更糟糕的情況時,如果我們的學習率是隨訓練衰減的,那模型在一開始由於學習率很大,將“用力過猛”,可能會用很大的學習率學習到一些無關特徵。
當然我們不用mini-batch的訓練方式,而是讓模型遍歷整個數據集之後再進行訓練會減弱第1種問題,但綜合考慮模型最終收斂效果和資源消耗,mini-batch還是主流選擇。
如何實現
tensorflow實現方式可以看這個人的代碼:TensorFlow中的學習率“熱身”