ftrl 我的筆記

ftrl(理解馮陽的翻譯)

爲何要作ftrl?

sgd 是 online learning 最基本的模式。由於 sgd 的訓練出來的特徵參數不具備稀疏性,從工程的角度佔用內存過大。不少特徵的權重其實很小,但由於是非0的也會佔用內存空間。因此,須要更好的正則項來找到這些非0項。函數

L1 爲何不 work?

正則化的出現開始是爲了防止過擬合的: 防止特徵係數過大太小,泛華的效果變差。咱們容易google 到爲何l1 產生稀疏解。那爲何在 online learning 中 l1 不 work?優化

(這塊我並無理解)由於在 online 中,梯度的方向不是全局的方向。而是沿着樣本的方向.... 那就會形成每次沒有被充分訓練的樣本被錯誤的將係數歸0了。google

TG 截斷梯度法

能夠看到online 的一個主要的問題是去得到稀疏解。得到稀疏解最直接的方法是進行截斷: 小於必定閾值就幹掉。這麼作的優勢是容易得到稀疏解,弊端是會將一些原本系數比較小(由於訓練不足)的特徵給幹掉。spa

l1 正則的表示

$$W^{(t+1)}=W^{t} - \eta^{(t)}G^{(t)} - \eta^{(t)}\lambda sgn(W^{(t)})$$.net

簡單截斷

描述起來也很簡單,t/k不爲整數的時候採用sgd,爲整數的時候進行以下更新(說白了就是每隔 t 個進行一次歸0):
$$W^{(t+1)} = T_{0} (W^{t} - \eta^{t}G^{t},\theta)$$翻譯

$$T_0(v_i,theta) = begin{cases}
0, & mbox{if } v_i leqslant theta \
v_i, & mbox{otherwise }
end{cases}$$圖片

截斷梯度ip

在 簡單截斷上作了更新。
$$
W^{(t+1)} = T_{1} (W^{t} - eta^{t}G^{t},eta^{t}lambda,theta)
$$內存

$$
T_1(v_i,alpha,theta) = begin{cases}
max(0,v_i- alpha), & mbox{if } v_i in [0,theta] \
max(0,v_i+ alpha), & mbox{if } v_i in [-theta,0] \
v_i, & mbox{otherwise }
end{cases}
$$
B60F8C94-439A-4DC5-A0BB-2AF02C61DAFC.png
clipboard.pngit

這樣看起來更得勁。

這三的關係

l1就是k =1 的簡單截斷, 簡單截斷就是$keta^tlambda=theta$ 的狀況下的截斷梯度。

FOBOS

這塊說看懂了吧,也夠嗆....

留個迭代公式吧。大概的思路是先進行sgd,而後將這個問題轉化爲一個最優化的問題(好蛋疼…). 這樣後半部分的主要功能是1. 保證微調發生在梯度降低的附近。 2.得到稀疏性。

B60F8C94-439A-4DC5-A0BB-2AF02C61DAFC.png
![圖片上傳中...]

l1 - fobos

這裏的l1 正則化就是令$psi(W) = lambda|W| $ ,用 $v_i$ 表示 $W^{(t+1/2)} $, 用標量$lambda = eta ^{(t+1/2)}lambda$ ,獲得。

B60F8C94-439A-4DC5-A0BB-2AF02C61DAFC.png
clipboard.png

這個後續的分析不是特別有幫助。就不列這了。大意是由於求和的部分是全正的。因此求單項的最小值。證實獲得$w*v>=0$ 。獲得結果

![圖片上傳中...]

這個結果看起來有點亂,其實挺好解讀的,實際上 l1-fobos 在每次更新 w的時候對 w 的每一個維度都會斷定(就是每一個 i 走一遍。) 能夠看到至關於$|w_i^{(t)} - eta^{(t)}g_i^{(t)}| - eta^{(t+1/2)}lambda <= 0$的時候進行截斷,令 $w_i^{(t+1)} = 0$ 。說白了就是$|w_i^{(t)} - eta^{(t)}g_i^{(t)}| <= eta^{(t+1/2)}lambda$ 的時候進行截斷。這個與 TG中有類似的地方。 翻譯過來就是當每次樣本產生的梯度變化足夠大的時候才進行更新,這個區別於每隔 k次進行更新。能夠理解爲令 TG 中,$theta = 0 , k =1 , lambda^{(t)}_{TG}=eta^{(t+1/2)}lambda$ 時候,l1-fobos 與 TG 徹底一致。

RDA

區別fobos 和 tg 的sgd 的思路,rda 的思路是使用正則對偶平均。迭代公式爲

ECC96106-8C9A-4AFD-B0EF-1E0F44BD3BBF

拆解下這個公式,1. 線性函數$frac{1}{t}sum_{r=1}^{t} <G^{(r)},W>$ 是指以前全部梯度的平均值。2. 正則項$psi(W) $ 3. 額外的正則項 $frac{beta^{(t)}}{t}h(W)$ 這是一個嚴格的凸函數。

仍是看一個例子吧...

L1-RDA

這令$psi(W) = lambda||W||$ , $h(W) = 1/2||W||^2$ $beta^{(t)} = gamma sqrt{t} $ 有:

18A9E327-847A-4B8F-A2EA-CE5999A1A70C

最後的更新方式

AFEE0D65-E444-4240-A398-976605AA3585

能夠看到當梯度積累的平均值小於閾值$lambda$的時候就歸0了。

對比 fobos 與 rda

… 看原文吧,說的太清楚。

ftrl

爲啥搞這個呢? 由於實驗說fobos 的精度高,而 rda 的稀疏性好。 因此要再搞一把。

5F93F290-F545-4002-9F0F-E3C583493342

寫不動了... 貼一下原文。(1) 前者對計算的是累加梯度以及 L1 正則項只考慮當前模的貢獻,然後者採用了累加的處理方式;

(2) 前者的第三項限制?的變化不能離已迭代過的解太遠,然後者則限制?不能離 0 點太遠。

接着就是 ftrl 了:

5E5EFC0E-532C-4614-9B7E-A33E8AC992FB

這裏跟以前相似的推導過程,獲得。

4D530F7E-B45D-4609-AE80-CEE8941FCF31

咱們也來理解下$z_i^{(t)}< lambda_1$ ,考慮了 $g_i$的中值,也考慮每次梯度的變化。最後爲啥ftrl 能夠比以前兩個更好呢,能夠看到ftrl 在累加梯度、稀疏項使用的是rda, 也就是考慮了累加的處理方式;2️而l2項使用的是 fobos , 也就是說不能離迭代過的太遠,而不是0,因此提升了準確率和稀疏性。

相關文章
相關標籤/搜索