當在訓練模型時,損失(Loss)不再下降的時候,可以確認梯度(gradient)的大小。如果梯度是很小的,那可以判斷該點是在奇點(critical point)上。但也有可能發現在該點的梯度還很大,那就表示該點的損失下不去不是因為在奇點,而是因為其他原因。大多數模型訓練的損失下不去是還沒有走到奇點就卡住了。這根學習速率(learning rate)有關,也就是說,只靠「固定的學習速率」是不夠的。
調整學習速率的大原則是:當較為平坦(梯度較小),學習速率要調的大一點。而當較為陡峭的時候,學習速率要調的小一點。
這邊介紹三種學習速率調整的方法。分別是 Adagrad, RMSPro, 以及 Adam。
參數最佳化的策略為
其中
這個方法,可以針對不同參數做不同的調整。
這個方法可以針對不同參數,在不同的地方,使用不同的學習速率。
參數最佳化的策略是
其中
這裡改進了「不是看過去所有的梯度大小」,而是看最近的兩次,然後可以自定義重要性來訂超參數的大小。
這是 RMSPro 與 Momentum 的合體方法。然後可以改變 隨著訓練次數的增加而減少。另外也可以讓 先增加再減少,這樣稱之為 warm up。目前還不知道為什麼這樣訓練會比較好。但實際在訓練 BERT 模型時會有比較好的表現。