FTRL

版權聲明:本文爲博主-姜興琪原創文章,未經博主允許不得轉載。 https://blog.csdn.net/jxq0816/article/details/83721843

一、算法原理

二、算法邏輯

三、個人理解

  • 從loss function的形式來看:FTRL就是將RDA-L1的“梯度累加”思想應用在FOBOS-L1上,並施加一個L2正則項。【PS:paper上是沒有加L2正則項的】
  • 這樣達到的效果是:
    • 累積加和限定了新的迭代結果W**不要離“已迭代過的解”太遠**;
    • 因爲調整後的解不會離迭代過的解太遠,所以保證了每次找到讓之前所有損失函數之和最小的參數;
    • 保留的RDA-L1中關於累積梯度的項,可以看作是當前特徵對損失函數的貢獻的一個估計【累積梯度越大,貢獻越大。】
    • 由於使用了累積梯度,即使某一次迭代使某個重要特徵約束爲0,但如果後面這個特徵慢慢變得稠密,它的參數又會變爲非0;
    • 保留的RDA-L1中關於累積梯度的項,與v相加,總會比原來的v大,加起來的絕對值更容易大於L1的閾值,保護了重要的特徵;
  • FTRL的巧妙之處在於:
    • 在MSE的前面乘以了一個和learning_rate有着神奇關係的參數σ_s。
    • 因爲這個參數,保證了FTRL在不使用L1時和SGD保持了一致性。
  • FTRL使用的自適應learning_rate,其思想和 Adagrad Optimizer 類似的自適應思想:
    • 如果特徵稀疏,learning_rate就大一點;
    • 如果特徵稠密,learning_rate就小一點;
  • FTRL中爲什麼要同時兼顧FOBOS-L1和RDA-L1??
    • 因爲不是爲了產出稀疏而進行變化,真正的目的是產出有效的稀疏解。即稀疏又保留有效特徵!!!
    • 稀疏靠RDA-L1,保留有效特徵靠FOBOS-L1和RDA-L1的累積梯度思想。
  • 本質上,FTRL只是一種適用於online-learning的optimizer;
  • FTRL-Proximal中的Proximal的含義:
    • t+1次迭代的解,不能離t次迭代的解太遠;
    • t+1次迭代的解,不能離0太遠;
    • 是對具體約束的表達。

小結:

  • FOBOS-L1:使用MSE+L1對w_{t+1/2}進行建模,目標是使調整後的梯度在離SGD結果附近的基礎上,產出稀疏解;
  • RDA-L1:使用累積平均梯度 + L1 + L2進行建模,這裏使用L2有兩方面的理解:
    • 能產出極小值點;
    • 調整後的梯度不能與零點太遠;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章