優化與訓練
AdaGrad(自適應梯度)
/ AD-uh-grad /
AdaGrad 是最早一批自動給每個權重配專屬學習率的優化器之一。它的指導念頭是:那些已經被大幅更新過很多次的權重,多半不再需要大步子了,而那些極少挪動的權重,則值得更大的步子。於是它逐漸放慢那些頻繁更新的方向,讓那些被冷落的方向趕上來——當有些特徵頻繁出現、另一些卻罕見時,這很管用。
從機制上說,AdaGrad 為每個權重保留一份「它有史以來見過的所有梯度平方」的累加和,再把那個權重的步子除以這個和的平方根。因為這個和只增不減,每個權重的有效步長會隨時間不斷縮小。這讓 AdaGrad 特別擅長稀疏問題——比如文本,大多數詞都很罕見——因為罕見的特徵累加得少,仍能得到有意義的更新。
可正是這個只增不減的和,是 AdaGrad 的致命弱點。分母永不停止增長,於是步長最終縮向零,在模型還沒練完之前學習就磨到停頓——對於訓練時間很長的深層網路,這是個真問題。這個缺陷,恰恰就是 RMSprop 和 Adam 所要修補的:用一份衰減平均,去替換那個累加和。如今 AdaGrad 很少是最終的選擇,但它是人人都在用的那些自適應優化器的歷史根脈,所以值得一懂。
訓練一個文本分類器時,「the」幾乎出現在每個樣本裡,而「perihelion(近日點)」只出現一次。AdaGrad 讓那個罕見詞的權重在它唯一一次露面時邁出一大步、富有意義,而「the」——已被調整過數千次——只得到一個極小的步子。壞處是:過了足夠多遍之後,每一步都縮得太小,學習幾乎停了下來。
早期對罕見特徵很棒;後期因步長縮到幾近於無而停滯。
AdaGrad 那個單調縮小的步長,對稀疏、短期的訓練是優點,對漫長的深度學習訓練卻是缺陷。正是這一個侷限,才有了 RMSprop 和 Adam。
又稱
另見