版權聲明:本文爲博主-姜興琪原創文章,未經博主允許不得轉載。 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有兩方面的理解:
-
- 能產出極小值點;
- 調整後的梯度不能與零點太遠;