1.前言
FTRL(Follow The(Proximally) Regularized Leader)算法是Online Learning的一種常用方法。
傳統的機器學習算法,基本的步驟是離線先做數據清洗,ETL,特徵工程,然後訓練模型上線。模型上線後,一般就是靜態的,不會在線上有任何變化。即使是效果不太好,預測誤差很大,也只能等下一次更新模型再加以修正。但是一般離線的數據pipeline比較長,而且數據量也比較大,更新模型是個比較費時費力的活。所以傳統的訓練方式更新模型不是很方便。
Online Learning是一種另外模型訓練的方法,與傳統的方法不一樣,online learning能根據線上實時反饋的數據,快速訓練調整模型參數,使模型即使反映線上的數據變化,從而提高模型的效果。與傳統訓練方法不同,online 的流程一般爲:將預測結果展現給用戶,然後收集用戶的反饋數據,再來訓練新模型,跟控制理論中的閉環系統很類似。
2.FTRL
FTRL的主要目的是提高模型的稀疏度,並且提高模型的精度。具體的算法過程直接參考下面的圖
上面這張圖被很多地方引用,下面我們結合這張圖說一下流程。
上面符號比較多,首先解釋一下各符號的含義:
均爲模型的超參數(hyperparameters),最終訓練可以得出超參數的值。
表示樣本的總量,表示一條樣本。
表示特徵的維度,表示該樣本一共有維。
1.初始化參數
2.對每條樣本遍歷
2.1 看中哪些維度的值不爲0,得到集合
2.2 遍歷集合,得到
2.3 得到預測概率
3 遍歷集合,分別計算
3.分析
算法中提到per-coordinate,核心思想是對特徵的每一維分開訓練更新,而每一維上有不同的學習率。具體就是包含的那一項。
爲什麼會是那種形式?簡單分析一下,如果有一維特徵每個樣本都有,學習到的概率大,學習率可以小一些。而如果有一維特徵只有很少的樣本有,每個包含該特徵的樣本都很寶貴,這個時候學習率要大一些,讓該維特徵的學習更充分。
是個正數,如果樣本中包含該維特徵的樣本數越多,迭代過程中越大,那麼取倒數越小。這樣就達到了特徵數越多,學習率越小,特徵數越少,學習率越大的目的。
4.計算過程分析
算法計算流程中的一些值,我們簡單說明一下意義。
1.
是用sigmoid函數計算出來的預測值
2.
是指損失函數在某一個特徵維度上的梯度,對於Logisti Regression來說
3.
是一箇中間計算值,沒有其他的特殊含義
4.
也是一箇中間計算值,沒有其他的特殊含義
5.
從前面的分析我們可知,控制了該維度特徵的學習率,與累積的梯度有關係。