小白都能理解的FTRL

1.前言

FTRL(Follow The(Proximally) Regularized Leader)算法是Online Learning的一種常用方法。
傳統的機器學習算法,基本的步驟是離線先做數據清洗,ETL,特徵工程,然後訓練模型上線。模型上線後,一般就是靜態的,不會在線上有任何變化。即使是效果不太好,預測誤差很大,也只能等下一次更新模型再加以修正。但是一般離線的數據pipeline比較長,而且數據量也比較大,更新模型是個比較費時費力的活。所以傳統的訓練方式更新模型不是很方便。
Online Learning是一種另外模型訓練的方法,與傳統的方法不一樣,online learning能根據線上實時反饋的數據,快速訓練調整模型參數,使模型即使反映線上的數據變化,從而提高模型的效果。與傳統訓練方法不同,online 的流程一般爲:將預測結果展現給用戶,然後收集用戶的反饋數據,再來訓練新模型,跟控制理論中的閉環系統很類似。

2.FTRL

FTRL的主要目的是提高模型的稀疏度,並且提高模型的精度。具體的算法過程直接參考下面的圖
在這裏插入圖片描述
上面這張圖被很多地方引用,下面我們結合這張圖說一下流程。

上面符號比較多,首先解釋一下各符號的含義:
α,β,λ1,λ2\alpha, \beta, \lambda_1, \lambda_2均爲模型的超參數(hyperparameters),最終訓練可以得出超參數的值。
TT表示樣本的總量,xtx_t表示一條樣本。
ii表示特徵的維度,dd表示該樣本一共有dd維。

1.初始化參數zi=0,ni=0z_i=0, n_i = 0
2.對每條樣本遍歷
2.1 看xtx_t中哪些維度的值不爲0,得到集合II
2.2 遍歷集合II,得到wt,iw_{t,i}
2.3 得到預測概率ptp_t
3 遍歷集合II,分別計算gi,σi,zi,nig_i, \sigma_i, z_i, n_i

3.分析

算法中提到per-coordinate,核心思想是對特徵的每一維分開訓練更新,而每一維上有不同的學習率。具體就是包含λ\lambda的那一項。
爲什麼會是那種形式?簡單分析一下,如果有一維特徵每個樣本都有,學習到的概率大,學習率可以小一些。而如果有一維特徵只有很少的樣本有,每個包含該特徵的樣本都很寶貴,這個時候學習率要大一些,讓該維特徵的學習更充分。

(β+niα+λ2)1-(\frac{\beta + \sqrt {n_i}}{\alpha} + \lambda_2) ^ {-1}
nin_i是個正數,如果樣本中包含該維特徵的樣本數越多,迭代過程中nin_i越大,那麼取倒數越小。這樣就達到了特徵數越多,學習率越小,特徵數越少,學習率越大的目的。

4.計算過程分析

算法計算流程中的一些值,我們簡單說明一下意義。
1.ptp_t
ptp_t是用sigmoid函數計算出來的預測值
2.gig_i
gig_i是指損失函數在某一個特徵維度上的梯度,對於Logisti Regression來說
gi=(py)xig_i = (p-y)x_i

3.σi\sigma_i
是一箇中間計算值,沒有其他的特殊含義

4.ziz_i
也是一箇中間計算值,沒有其他的特殊含義

5.nin_i
從前面的分析我們可知,nin_i控制了該維度特徵的學習率,與累積的梯度有關係。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章