天天看點

點選率預測算法:FTRL1、邏輯回歸2、FOBOS與RDA3、FTRL4、FTRL的工程應用

文章目錄

  • 1、邏輯回歸
    • 1.1 sigmoid函數
    • 1.2 極大似然估計MLE與損失函數
    • 1.3 梯度下降
    • 1.4 另一種形式的損失函數及其梯度
  • 2、FOBOS與RDA
    • 2.1 FOBOS基本原理
    • 2.2 L1-FOBOS
    • 2.3 RDA基本原理
    • 2.4 L1-RDA
  • 3、FTRL
    • 3.1 從L1-FOBOS和L1-RDA推導FTRL
    • 3.2 FTRL權重更新的最終形式
    • 3.3 學習率
    • 3.4 工程實作計算過程
      • 3.4.1 一些定義
      • 3.4.2 FTRL算法
  • 4、FTRL的工程應用

1、邏輯回歸

FTRL本質上是一種優化方法,最早由google提出并用于CTR預估。常被用于邏輯回歸的優化,是以先簡單介紹一下邏輯回歸的内容。

1.1 sigmoid函數

由于二分類結果是1或者0,這與數學的階躍函數很類似,但是階躍函數在x=0的位置會發生突變,這個突變在數學上很難處理。是以一般使用sigmoid函數來拟合:

g ( z ) = 1 1 + e − z ( 1 ) g(z)={\frac 1{1+e^{-z}}} \qquad(1) g(z)=1+e−z1​(1)

具體應用到邏輯回歸算法中:

z = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . . . . + ω n x n = ∑ i = 0 n ω i x i = ω T X ( 2 ) z={\omega}_0+{\omega}_1x_1+{\omega}_2x_2+......+{\omega}_nx_n=\sum_{i=0}^n{\omega}_ix_i=\mathbf{\omega^TX} \qquad(2) z=ω0​+ω1​x1​+ω2​x2​+......+ωn​xn​=i=0∑n​ωi​xi​=ωTX(2)

其中 x i x_i xi​表示樣本屬性(對于我們而言,就是标簽IP)的值, ω i \omega_i ωi​表示這個屬性對應的系數(也就是算法需要計算的内容)。注意這裡将 x 0 x_0 x0​與 ω 0 \omega_0 ω0​也代入了上述公式,其中前者恒為1。于是問題就變成了在訓練樣本中,已知屬性x與最終分類結果y(1或者0)時,如何求得這些系數 ω i \omega_i ωi​,使得損失最小。

1.2 極大似然估計MLE與損失函數

在機器學習理論中,損失函數(loss function)是用來衡量模型的預測值 f ( x ) f(x) f(x)與真實值 Y Y Y的不一緻程度,它是一個非負實值函數,損失函數越小,模型越優(還需考慮過拟合等問題)。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。模型的結構風險函數包括了經驗風險項和正則項,通常可以表示成如下式子

ω ∗ = arg ⁡ min ⁡ ω 1 m ∑ i = 1 m L ( y i , f ( x i ; ω ) ) + λ   Φ ( ω ) ( 3 ) \omega^* = \arg \min_\omega \frac{1}{m}{}\sum_{i=1}^{m} L(y_i, f(x_i; \omega)) + \lambda\ \Phi(\omega) \qquad(3) ω∗=argωmin​m1​i=1∑m​L(yi​,f(xi​;ω))+λ Φ(ω)(3)

其中m表示樣本的數量。對于邏輯回歸,其loss function是log損失,這可以通過極大似然估計進行推導得到。

首先,給定一個樣本 x x x,可以使用一個線性函數對自變量進行線性組合,即上述的(2)式子:

z = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . . . . + ω n x n = ∑ i = 0 n ω i x i = ω T X ( 4 ) z={\omega}_0+{\omega}_1x_1+{\omega}_2x_2+......+{\omega}_nx_n=\sum_{i=0}^n{\omega}_ix_i=\mathbf{\omega^TX} \qquad(4) z=ω0​+ω1​x1​+ω2​x2​+......+ωn​xn​=i=0∑n​ωi​xi​=ωTX(4)

根據sigmoid函數,我們可以得出預測函數的表達式為:

h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x ( 5 ) h_{\omega}(x) = g(\omega^Tx) = \frac{1}{1 + e^{-\omega^Tx}} \qquad(5) hω​(x)=g(ωTx)=1+e−ωTx1​(5)

上式表示 y = 1 y=1 y=1的預測函數為 h ω ( x ) h_{\omega}(x) hω​(x)。在這裡,假設因變量 y y y服從伯努利分布,那麼可以得到下列兩個式子:

p ( y = 1 ∣ x ) = h ω ( x ) ( 6 ) p ( y = 0 ∣ x ) = 1 − h ω ( x ) ( 7 ) \begin{aligned} p(y=1 | x) &= h_{\omega} (x) \quad\qquad(6)\\ p(y=0 | x) &= 1 - h_{\omega} (x) \qquad(7) \end{aligned} p(y=1∣x)p(y=0∣x)​=hω​(x)(6)=1−hω​(x)(7)​

而對于上面的兩個表達式,通過觀察,我們發現,可以将其合并為以下表達式:

p ( y ∣ x ) = h ω ( x ) y ( 1 − h ω ( x ) ) 1 − y ( 8 ) p(y | x) = h_{\omega} (x)^y (1-h_{\omega} (x))^{1-y} \qquad(8) p(y∣x)=hω​(x)y(1−hω​(x))1−y(8)

根據上面的式子,給定一定的樣本之後,我們可以構造出似然函數,然後可以使用極大似然估計MLE的思想來求解參數。但是,為了滿足最小化風險理論,我們可以将MLE的思想轉化為最小化風險化理論,最大化似然函數其實就等價于最小化負的似然函數。對于MLE,就是利用已知的樣本分布,找到最有可能(即最大機率)導緻這種分布的參數值;或者說是什麼樣的參數才能使我們觀測到目前這組資料的機率最大。使用MLE推導LR的loss function的過程如下。

首先,根據上面的假設,寫出相應的極大似然函數(假定有 m m m個樣本):

L ( ω ) = ∏ i = 1 m p ( y i ∣ x i ; ω ) = ∏ i = 1 m h ω ( x i ) y i ( 1 − h ω ( x i ) 1 − y i ( 9 ) \begin{aligned} L(\omega)&= \prod_{i=1}^{m} p(y_i | x_i; \omega) \\ &= \prod_{i=1}^{m} h_{\omega} (x_i)^{y_i} (1-h_{\omega} (x_i)^{1-y_i} \\ \end{aligned} \qquad(9) L(ω)​=i=1∏m​p(yi​∣xi​;ω)=i=1∏m​hω​(xi​)yi​(1−hω​(xi​)1−yi​​(9)

上述式子中的 ω \omega ω及 x i x_i xi​均為向量,并未顯示其轉置。

直接對上面的式子求導會不友善,是以,為了便于計算,我們可以對似然函數取對數,經過化簡可以得到下式的推導結果:

log ⁡ L ( ω ) = ∑ i = 1 m log ⁡ [ ( h ω ( x i ) y i ( 1 − h ω ( x i ) ) 1 − y i ) ] = ∑ i = 1 m [ y i log ⁡ h ω ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h ω ( x i ) ) ] ( 10 ) \begin{aligned} \log L(\omega)&= \sum_{i=1}^{m} \log \left [ (h_{\omega} (x_i)^{y_i} (1-h_{\omega} (x_i))^{1-y_i}) \right ] \\ &= \sum_{i=1}^{m} \left [ y_i \log h_{\omega} (x_i) + (1-y_i) \log(1-h_{\omega} (x_i)) \right ] \\ \end{aligned} \qquad(10) logL(ω)​=i=1∑m​log[(hω​(xi​)yi​(1−hω​(xi​))1−yi​)]=i=1∑m​[yi​loghω​(xi​)+(1−yi​)log(1−hω​(xi​))]​(10)

是以,損失函數可以通過最小化負的似然函數得到,即下式:

J ( ω ) = − 1 m ∑ i = 1 m [ y i log ⁡ h ω ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h ω ( x i ) ] ( 11 ) J(\omega) = - \frac{1}{m} \sum_{i=1}^m \left [ y_i \log h_{\omega}(x_i) + (1-y_i) \log(1-h_{\omega}(x_i) \right ] \qquad(11) J(ω)=−m1​i=1∑m​[yi​loghω​(xi​)+(1−yi​)log(1−hω​(xi​)](11)

在周志華版的機器學習中,将sigmiod函數代入 h ω ( x i ) h_{\omega}(x_i) hω​(xi​),并使用ln代替log,上述公式表示為:

J ( ω ) = − 1 m ∑ i = 1 m [ y i ln ⁡ h ω ( x i ) + ( 1 − y i ) ln ⁡ ( 1 − h ω ( x i ) ] = − 1 m ∑ i = 1 m [ y i ln ⁡ 1 1 + e − ω x i + ( 1 − y i ) ln ⁡ e − ω x i 1 + e − ω x i ] = − 1 m ∑ i = 1 m [ ln ⁡ 1 1 + e ω x i + y i ln ⁡ 1 e − ω x i ] = 1 m ∑ i = 1 m [ − y i w x i + ln ⁡ ( 1 + e ω x i ) ] ( 12 ) \begin{aligned} J(\omega) &= - \frac{1}{m} \sum_{i=1}^m \left [ y_i \ln h_{\omega}(x_i) + (1-y_i) \ln(1-h_{\omega}(x_i) \right ]\\ &=- \frac{1}{m} \sum_{i=1}^m \left [ y_i\ln \frac{1}{1+e^{-\omega x_i}}+(1-y_i)\ln \frac{e^{-\omega x_i}}{1+e^{-\omega x_i}}\right ]\\ &=- \frac{1}{m} \sum_{i=1}^m \left [ \ln \frac{1}{1+e^{\omega x_i}} + y_i \ln \frac{1}{e^{-\omega x_i}}\right ]\\ &= \frac{1}{m} \sum_{i=1}^m \left [ -y_iwx_i + \ln(1+e^{\omega x_i})\right ] \end{aligned} \qquad(12) J(ω)​=−m1​i=1∑m​[yi​lnhω​(xi​)+(1−yi​)ln(1−hω​(xi​)]=−m1​i=1∑m​[yi​ln1+e−ωxi​1​+(1−yi​)ln1+e−ωxi​e−ωxi​​]=−m1​i=1∑m​[ln1+eωxi​1​+yi​lne−ωxi​1​]=m1​i=1∑m​[−yi​wxi​+ln(1+eωxi​)]​(12)

在某些資料上,還有另一種損失函數的表達形式,但本質是一樣的,如下【推導見下面1.4】:

J ( ω ) = 1 m ∑ i = 1 m l o g ( 1 + e − y i ω x ) ( 13 ) J(\omega) = \frac{1}{m} \sum_{i=1}^m log(1 + e^{-y_i \omega x}) \qquad(13) J(ω)=m1​i=1∑m​log(1+e−yi​ωx)(13)

1.3 梯度下降

這裡就以梯度下降為例對邏輯回歸進行求解,其疊代公式的推導過程如下:

∂ J ( ω ) ∂ ω j = − 1 m ∑ i m [ y i ( 1 − h ω ( x i ) ) ⋅ ( − x i , j ) + ( 1 − y i ) h ω ( x i ) ⋅ ( x i , j ) ] = − 1 m ∑ i m ( − y i ⋅ x i , j + h ω ( x i ) ⋅ x i , j ) = − 1 m ∑ i m ( h ω ( x i ) − y i ) x i , j ( 14 ) \begin{aligned} \frac{ \partial J(\omega)} {\partial \omega_j}&= -\frac{1}{m} \sum_{i}^{m} \left [ y_i(1 - h_{\omega}(x_i)) \cdot (-x_{i,j}) + (1 - y_i) h_{\omega} (x_i) \cdot (x_{i,j}) \right ]\\ & = - \frac{1}{m} \sum_{i}^{m} (-y_i \cdot x_{i,j} + h_{\omega}(x_i) \cdot x_{i,j}) \\ & = -\frac{1}{m} \sum_{i}^{m} (h_{\omega}(x_i) - y_i) x_{i,j} \end{aligned} \qquad(14) ∂ωj​∂J(ω)​​=−m1​i∑m​[yi​(1−hω​(xi​))⋅(−xi,j​)+(1−yi​)hω​(xi​)⋅(xi,j​)]=−m1​i∑m​(−yi​⋅xi,j​+hω​(xi​)⋅xi,j​)=−m1​i∑m​(hω​(xi​)−yi​)xi,j​​(14)

上述中 x i , j x_{i,j} xi,j​表示第 i i i個樣本的第 j j j個屬性的取值。

于是, ω \omega ω的更新方式為:

ω j + 1 = ω j − α ∑ i = 1 m ( h ω ( x i ) − y i ) x x , j \omega_{j+1} = \omega_j - \alpha \sum_{i=1}^{m} (h_{\omega}(x_i) - y_i) x_{x,j} ωj+1​=ωj​−αi=1∑m​(hω​(xi​)−yi​)xx,j​

對于随機梯度下降,每次隻取一個樣本,則 ω \omega ω的更新方式為:

ω j + 1 = ω j − α ( h ω ( x ) − y ) x j \omega_{j+1} = \omega_j - \alpha (h_{\omega}(x)- y) x_{j} ωj+1​=ωj​−α(hω​(x)−y)xj​

其中 x x x為這個樣本的特征值, y y y為這個樣本的真實值, x j x_j xj​為這個樣本第 j j j個屬性的值。

這使用周志華版的損失函數更容易得出這個結論。

1.4 另一種形式的損失函數及其梯度

與上面相同,根據sigmoid函數,我們可以得出預測函數的表達式為:

h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x h_{\omega}(x) = g(\omega^Tx) = \frac{1}{1 + e^{-\omega^Tx}} hω​(x)=g(ωTx)=1+e−ωTx1​

上式表示 y = 1 y=1 y=1的預測函數為 h ω ( x ) h_{\omega}(x) hω​(x)。

但與上面不同,我們假設樣本的分布為{-1,1},則

p ( y = 1 ∣ x ) = h ω ( x ) p(y=1 | x) = h_{\omega} (x) p(y=1∣x)=hω​(x)

p ( y = − 1 ∣ x ) = 1 − h ω ( x ) p(y=-1 | x) = 1 - h_{\omega} (x) p(y=−1∣x)=1−hω​(x)

對于sigmoid函數,有以下特性(簡單推導一下就可以得到):

h ( − x ) = 1 − h ( x ) h(-x) = 1 - h(x) h(−x)=1−h(x)

于是(14)(15)式可以表示為:

p ( y ∣ x ) = h ω ( y x ) p(y|x) = h_\omega(yx) p(y∣x)=hω​(yx)

同樣,我們使用MLE作估計,

L ( ω ) = ∏ i = 1 m p ( y i ∣ x i ; ω ) = ∏ i = 1 m h ω ( y i x i ) = ∏ i = 1 m 1 1 + e − y i w x i \begin{aligned} L(\omega)&= \prod_{i=1}^{m} p(y_i | x_i; \omega) \\ &= \prod_{i=1}^{m} h_\omega(y_i x_i)\\ &= \prod_{i=1}^{m} \frac{1}{1+e^{-y_iwx_i}} \end{aligned} L(ω)​=i=1∏m​p(yi​∣xi​;ω)=i=1∏m​hω​(yi​xi​)=i=1∏m​1+e−yi​wxi​1​​

對上式取對數及負值,得到損失為:

− log ⁡ L ( ω ) = − log ⁡ ∏ i = 1 m p ( y i ∣ x i ; ω ) = − ∑ i = 1 m log ⁡ p ( y i ∣ x i ; ω ) = − ∑ i = 1 m log ⁡ 1 1 + e − y i w x i = ∑ i = 1 m log ⁡ ( 1 + e − y i w x i ) \begin{aligned} -\log L(\omega)&= -\log \prod_{i=1}^{m} p(y_i | x_i; \omega) \\ &= -\sum_{i=1}^{m} \log p(y_i | x_i; \omega) \\ &= -\sum_{i=1}^{m} \log \frac{1}{1+e^{-y_iwx_i}}\\ &= \sum_{i=1}^{m} \log(1+e^{-y_iwx_i})\\ \end{aligned} −logL(ω)​=−logi=1∏m​p(yi​∣xi​;ω)=−i=1∑m​logp(yi​∣xi​;ω)=−i=1∑m​log1+e−yi​wxi​1​=i=1∑m​log(1+e−yi​wxi​)​

即對于每一個樣本,損失函數為:

L ( ω ) = log ⁡ ( 1 + e − y i w x i ) L(\omega)=\log(1+e^{-y_iwx_i}) L(ω)=log(1+e−yi​wxi​)

對上式求梯度,容易得到:

∂ J ( ω ) ∂ ω j = − y i x i 1 + e y i ω x i \begin{aligned} \frac{ \partial J(\omega)} {\partial \omega_j}&= \frac{-y_i x_i}{1+e^{y_i \omega x_i}} \end{aligned} ∂ωj​∂J(ω)​​=1+eyi​ωxi​−yi​xi​​​

2、FOBOS與RDA

2.1 FOBOS基本原理

FOBOS算法由John Duchi和Yoram Singer提出,是梯度下降的一個變種。

與梯度下降不同,它将權重的更新分為2個步驟:

W t + 1 2 = W t − η t G t n W t + 1 = arg ⁡ min ⁡ { 1 2 ∥ W − W t + 1 2 ∥ 2 + η ( t + 1 2 ) ψ ( W ) } \begin{aligned} W_{t+\frac{1}{2}}&=W_t-\eta_tG_t \\n W_{t+1}&=\arg\min\{\frac{1}{2}\|W-W_{t+\frac{1}{2}}\|^2+\eta_{(t+\frac{1}{2})}\psi(W)\} \end{aligned} Wt+21​​nWt+1​​=Wt​−ηt​Gt​=argmin{21​∥W−Wt+21​​∥2+η(t+21​)​ψ(W)}​

從上面的2個步驟可以看出:

第一個步驟是一個标準的梯度下降。

第二個步驟是對梯度下降的結果進行微調。這裡可以分為2部分:(1)前半部分保證了微調發生在第一個步驟結果(取梯度下降結果)的附近。(2)後半部分用于處理正則化,産生稀疏性。

** 根據次梯度理論的推斷,可以得出 W ( t + 1 ) W_{(t+1)} W(t+1)​不僅僅與疊代前的狀态 W t W_t Wt​有關,而且與疊代後的$$相關**

2.2 L1-FOBOS

FOBOS在L1正則化條件下,特征權重的更新方式為:(推導過程暫略)

ω t + 1 , i = s g n ( ω t , i − η t g t , i ) m a x { 0 , ∣ ω t , i − η t g t , i ∣ − η t + 1 2 λ } \omega_{t+1,i}=sgn(\omega_{t,i}-\eta_tg_{t,i})max\{0,|\omega_{t,i}-\eta_tg_{t,i}|-\eta_{t+\frac{1}{2}}\lambda\} ωt+1,i​=sgn(ωt,i​−ηt​gt,i​)max{0,∣ωt,i​−ηt​gt,i​∣−ηt+21​​λ}

其中 g t , i g_{t,i} gt,i​為梯度在次元i上的取值

2.3 RDA基本原理

簡單截斷、TG、FOBOS都是建立在SGD基礎上的一個變種,屬于梯度下降類型的方法,這類方法的精度比較高,同時也能得到一定的稀疏性。而RDA是從另一個方面來求解,它的精度比FOBOS等略差,但它更有效的提升了稀疏性。

在RDA中,特征權重的更新政策為:

W t + 1 = arg ⁡ min ⁡ { 1 t ∑ r = 1 t &lt; G r , W &gt; + ψ ( W ) + β t t h ( W ) } W_{t+1}=\arg\min\{\frac{1}{t}\sum_{r=1}^{t}&lt;G^{r},W&gt;+\psi(W)+\frac{\beta_t}{t}h(W)\} Wt+1​=argmin{t1​r=1∑t​<Gr,W>+ψ(W)+tβt​​h(W)}

其中 &lt; G r , W &gt; &lt;G^{r},W&gt; <Gr,W>表示梯度 G r G^r Gr對W的積分平均值(積分中值); ψ ( W ) \psi(W) ψ(W)為正則項; h ( W ) h(W) h(W)為一個輔助的嚴格的凸函數; β t ∣ t ≥ 1 {\beta_t|t\ge1} βt​∣t≥1是一個非負且非自減序列。

2.4 L1-RDA

在L1正則化條件下,RDA的各個次元的權重更新方式為:

ω t + 1 , i = { 0 , if  ∣ g ‾ t , i ∣ &lt; λ − ( t r ( g ‾ t , i − λ s g n ( g ‾ t , i ) ) , otherwise \omega_{t+1,i} = \begin{cases} 0, &amp; \text{if $|\overline g_{t,i}|&lt;\lambda$} \\ -(\frac{\sqrt{t}}{r}(\overline g_{t,i}-\lambda sgn(\overline g_{t,i})), &amp; \text{otherwise} \\ \end{cases} ωt+1,i​={0,−(rt

​​(g​t,i​−λsgn(g​t,i​)),​if ∣g​t,i​∣<λotherwise​

亦即當某個次元上的累積梯度平均值的絕對值 ∣ g ‾ t , i ∣ |\overline g_{t,i}| ∣g​t,i​∣小于門檻值 λ \lambda λ時,該次元權重被置為0。

3、FTRL

理論及實驗均證明,L1-FOBOS這類基于梯度下降的算法有比較高的精度,但L1-RDA卻能在損失一定精度的情況下産生更好的稀疏性。

把這二者的優點結合成一個算法,這就是FTRL算法的來源。

3.1 從L1-FOBOS和L1-RDA推導FTRL

我們令 η t + 1 2 = η t = Θ ( 1 t ) \eta_{t+\frac{1}{2}}=\eta_t=\Theta(\frac{1}{\sqrt{t}}) ηt+21​​=ηt​=Θ(t

​1​)是一個非增正序列,同時代入L1正則項,得到L1-FOBOS的形式如下:

W t + 1 2 = W t − η t G t W t + 1 = arg ⁡ min ⁡ { 1 2 ∥ W − W t + 1 2 ∥ 2 + η t λ ∥ W ∥ 1 } \begin{aligned} W_{t+\frac{1}{2}}&amp;=W_t-\eta_tG_t \\ W_{t+1}&amp;=\arg\min\{\frac{1}{2}\|W-W_{t+\frac{1}{2}}\|^2+\eta_{t}\lambda\|W\|_1\} \end{aligned} Wt+21​​Wt+1​​=Wt​−ηt​Gt​=argmin{21​∥W−Wt+21​​∥2+ηt​λ∥W∥1​}​

将這2個公式合并到一起,得到L1-FOBOS的形式如下:

W t + 1 = arg ⁡ min ⁡ { 1 2 ∥ W − W t + η t G t ∥ 2 + η t λ ∥ W ∥ 1 } W_{t+1}=\arg\min\{\frac{1}{2}\|W-W_t+\eta_tG_t\|^2+\eta_{t}\lambda\|W\|_1\} Wt+1​=argmin{21​∥W−Wt​+ηt​Gt​∥2+ηt​λ∥W∥1​}

将上式分解為N個獨立的次元進行最優化求解:

w i = arg ⁡ min ⁡ { 1 2 ∥ w i − w t , i + η t g t , i ∥ 2 + η t λ ∣ w t , i ∣ 1 } = arg ⁡ min ⁡ { 1 2 ( w i − w t , i ) 2 + 1 2 ( η t g t , i ) 2 + w i η t g t , i − w t , i η t g t , i + η t λ ∣ w i ∣ } = arg ⁡ min ⁡ { w i g t , i + λ ∣ w i ∣ + 1 2 η t ( w i − w t , i ) 2 + ∣ η t 2 g t , i 2 − w t , i g t , i ∣ } \begin{aligned} w_i&amp;=\arg\min\{\frac{1}{2}\|w_i-w_{t,i}+\eta_tg_{t,i}\|^2+\eta_{t}\lambda|w_{t,i}|_1\} \\ &amp;=\arg\min\{\frac{1}{2}(w_i-w_{t,i})^2+\frac{1}{2}(\eta_t g_{t,i})^2+w_i\eta_tg_{t,i}-w_{t,i}\eta_tg_{t,i}+\eta_t\lambda|w_i|\}\\ &amp;=\arg\min\{w_ig_{t,i}+\lambda|w_i|+\frac{1}{2\eta_t}(w_i-w_{t,i})^2+|\frac{\eta_t}{2}g_{t,i}^2-w_{t,i}g_{t,i}|\} \end{aligned} wi​​=argmin{21​∥wi​−wt,i​+ηt​gt,i​∥2+ηt​λ∣wt,i​∣1​}=argmin{21​(wi​−wt,i​)2+21​(ηt​gt,i​)2+wi​ηt​gt,i​−wt,i​ηt​gt,i​+ηt​λ∣wi​∣}=argmin{wi​gt,i​+λ∣wi​∣+2ηt​1​(wi​−wt,i​)2+∣2ηt​​gt,i2​−wt,i​gt,i​∣}​

  • 上述推導的最後一步是通過除以 η t \eta_t ηt​得到的。

    由于上式中的最後一項 ∣ η t 2 g t , i 2 − w t , i g t , i ∣ |\frac{\eta_t}{2}g_{t,i}^2-w_{t,i}g_{t,i}| ∣2ηt​​gt,i2​−wt,i​gt,i​∣是一個與 w i w_i wi​無關的量,是以上式可簡化為:

    w i = arg ⁡ min ⁡ { w i g t , i + λ ∣ w i ∣ + 1 2 η t ( w i − w t , i ) 2 } w_i=\arg\min\{w_ig_{t,i}+\lambda|w_i|+\frac{1}{2\eta_t}(w_i-w_{t,i})^2\} wi​=argmin{wi​gt,i​+λ∣wi​∣+2ηt​1​(wi​−wt,i​)2}

    把N個獨立優化的次元重新合并,L1-FOBOS可寫成以下形式:

    W t + 1 = arg ⁡ min ⁡ { G t W + λ ∥ W ∥ 1 + 1 2 η t ∥ W − W t ∥ 2 2 } W_{t+1}=\arg\min\{G_tW+\lambda\|W\|_1+\frac{1}{2\eta_t}\|W-W_t\|_2^2\} Wt+1​=argmin{Gt​W+λ∥W∥1​+2ηt​1​∥W−Wt​∥22​}

另一方面,L1-RDA可以表達為:

W t + 1 = arg ⁡ min ⁡ { G ( 1 : t ) W + t λ ∥ W ∥ 1 + 1 2 η t ∥ W − 0 ∥ 2 2 } W_{t+1}=\arg\min\{G_{(1:t)}W+t\lambda\|W\|_1+\frac{1}{2\eta_t}\|W-0\|_2^2\} Wt+1​=argmin{G(1:t)​W+tλ∥W∥1​+2ηt​1​∥W−0∥22​}

其中 G ( 1 : t ) = ∑ s = 1 t G s G_{(1:t)}=\sum_{s=1}{t}G_s G(1:t)​=∑s=1​tGs​。

我們令 σ s = 1 η s − 1 η s − 1 \sigma_s=\frac{1}{\eta_s}-\frac{1}{\eta_{s-1}} σs​=ηs​1​−ηs−1​1​,可以得到 σ ( 1 : t ) = 1 η t \sigma_{(1:t)}=\frac{1}{\eta_t} σ(1:t)​=ηt​1​。那麼L1-FOBOS與L1-RDA可以寫為以下格式:

W t + 1 = arg ⁡ min ⁡ { G t W + λ ∥ W ∥ 1 + 1 2 σ ( 1 : t ) ∥ W − W t ∥ 2 2 } W t + 1 = arg ⁡ min ⁡ { G ( 1 : t ) W + t λ ∥ W ∥ 1 + 1 2 σ ( 1 : t ) ∥ W − 0 ∥ 2 2 } \begin{aligned} W_{t+1}&amp;=\arg\min\{G_tW+\lambda\|W\|_1+\frac{1}{2}\sigma_{(1:t)}\|W-W_t\|_2^2\}\\ W_{t+1}&amp;=\arg\min\{G_{(1:t)}W+t\lambda\|W\|_1+\frac{1}{2}\sigma_{(1:t)}\|W-0\|_2^2\} \end{aligned} Wt+1​Wt+1​​=argmin{Gt​W+λ∥W∥1​+21​σ(1:t)​∥W−Wt​∥22​}=argmin{G(1:t)​W+tλ∥W∥1​+21​σ(1:t)​∥W−0∥22​}​

比較以上2式的差別:

  • (1)L1-FOBOS考慮的是目前梯度的影響,L1-RDA則考慮了累積影響。
  • (2)L1-FOBOS限制 W t + 1 W_{t+1} Wt+1​不能離 W t W_t Wt​太遠,而L1-RDA的W則不能離0太遠,是以後者更容易産生稀疏性。

3.2 FTRL權重更新的最終形式

在google2010公布的理論文章中并沒有使用L2正則項,但在2013年公布工程實施方案時引入了L2。

是以,綜合上述的L1-FOBOS及L1-RDA,FTRL算法的權重更新方式為:

W t + 1 = arg ⁡ min ⁡ { G ( 1 : t ) W + λ 1 ∥ W ∥ 1 + λ 2 ∥ W ∥ 2 2 + 1 2 ∑ s = 1 t ( σ s ∥ W − W s ∥ 2 2 ) } W_{t+1}=\arg\min\{G_{(1:t)}W+\lambda_1\|W\|_1+\lambda_2\|W\|_2^2+\frac{1}{2}\sum_{s=1}^t(\sigma_s\|W-W_s\|_2^2)\} Wt+1​=argmin{G(1:t)​W+λ1​∥W∥1​+λ2​∥W∥22​+21​s=1∑t​(σs​∥W−Ws​∥22​)}

将上式展開,得到

W t + 1 = arg ⁡ min ⁡ { ( G ( 1 : t ) − ∑ s = 1 t σ s W s ) W + λ 1 ∥ W ∥ 1 + 1 2 ( λ 2 + ∑ s = 1 t σ s ) ∥ W ∥ 2 + 1 2 ∑ s = 1 t σ s ∥ W s ∥ 2 2 } W_{t+1}=\arg\min\{(G_{(1:t)}-\sum_{s=1}^t\sigma_sW_s)W+\lambda_1\|W\|_1+\frac{1}{2}(\lambda_2+\sum_{s=1}^t\sigma_s)\|W\|^2+\frac{1}{2}\sum_{s=1}^{t}\sigma_s\|W_s\|_2^2\} Wt+1​=argmin{(G(1:t)​−s=1∑t​σs​Ws​)W+λ1​∥W∥1​+21​(λ2​+s=1∑t​σs​)∥W∥2+21​s=1∑t​σs​∥Ws​∥22​}

由于上式的最後一項相對于W來說是一個常數,同時令 Z t = G ( 1 : t ) − ∑ ( s = 1 ) t σ s W s Z_t=G_{(1:t)}-\sum_{(s=1)}^t\sigma_sW_s Zt​=G(1:t)​−∑(s=1)t​σs​Ws​,上式可表示為:

W t + 1 = arg ⁡ min ⁡ { Z t W + λ 1 ∥ W ∥ 1 + 1 2 ( λ 2 + ∑ s = 1 t σ s ) ∥ W ∥ 2 } W_{t+1}=\arg\min\{Z_tW+\lambda_1\|W\|_1+\frac{1}{2}(\lambda_2+\sum_{s=1}^t\sigma_s)\|W\|^2\} Wt+1​=argmin{Zt​W+λ1​∥W∥1​+21​(λ2​+s=1∑t​σs​)∥W∥2}

各個次元可以獨立表示為:

w i + 1 = arg ⁡ min ⁡ { z t , i w i + λ 1 ∣ w i ∣ + 1 2 ( λ 2 + ∑ s = 1 t σ s ) w i 2 } w_{i+1}=\arg\min\{z_{t,i}w_i+\lambda_1|w_i|+\frac{1}{2}(\lambda_2+\sum_{s=1}^{t}\sigma_s)w_i^2\} wi+1​=argmin{zt,i​wi​+λ1​∣wi​∣+21​(λ2​+s=1∑t​σs​)wi2​}

使用與L1-FOBOS相同的分析方法可以得到:

ω t + 1 , i = { 0 , if  ∣ z i ∣ &lt; λ 1 − ( λ 2 + ∑ s = 1 t σ s ) − 1 ( z t , i − s g n ( z t , i ) λ 1 ) , otherwise \omega_{t+1,i} = \begin{cases} 0, &amp; \text{if $|z_i|&lt;\lambda_1$} \\ -(\lambda_2+\sum_{s=1}^t\sigma_s)^{-1}(z_{t,i}-sgn(z_{t,i})\lambda_1), &amp; \text{otherwise} \\ \end{cases} ωt+1,i​={0,−(λ2​+∑s=1t​σs​)−1(zt,i​−sgn(zt,i​)λ1​),​if ∣zi​∣<λ1​otherwise​

根據上面的定義:

σ ( 1 : t ) = ∑ s = 1 t σ s = 1 η t \sigma_{(1:t)}=\sum_{s=1}^t\sigma_s=\frac{1}{\eta_t} σ(1:t)​=s=1∑t​σs​=ηt​1​

我們使用下面介紹的學習率,以及令 n i = ∑ g i 2 n_i=\sum g_i^2 ni​=∑gi2​,則可以得到FTRL的最終形式:

ω i = { 0 , if  ∣ z i ∣ &lt; λ 1 − ( β + n I α + λ 2 ) − 1 ( z i − s g n ( z i ) λ 1 ) , otherwise \omega_i = \begin{cases} 0, &amp; \text{if $|z_i|&lt;\lambda_1$} \\ -(\frac{\beta+\sqrt{n_I}}{\alpha}+\lambda_2)^{-1}(z_i-sgn(z_i)\lambda_1), &amp; \text{otherwise} \\ \end{cases} ωi​={0,−(αβ+nI​

​​+λ2​)−1(zi​−sgn(zi​)λ1​),​if ∣zi​∣<λ1​otherwise​

3.3 學習率

1、per-coordinate learning rate

在FTRL中,學習率的定義如下:

η t , i = α β + ∑ s = 1 t g s , i 2 \eta_{t,i}=\frac{\alpha}{\beta+\sqrt{\sum_{s=1}^tg_{s,i}^2}} ηt,i​=β+∑s=1t​gs,i2​

​α​

其中 α β \alpha\beta αβ是自定義的參數。

在一般梯度下降算法中,使用的是一個全局的學習率政策: η t = 1 t \eta_t=\frac{1}{\sqrt{t}} ηt​=t

​1​。這個政策保證了學習率是一個正的非增序列,這個值對于每一個特征都是一樣的。

考慮一個極端的情況,我們有多個稀疏特征,其中一個特征 x 1 x_1 x1​出現非常頻繁,而另一個特征 x 2 x_2 x2​很少出現。比如第一個樣本, x 1 x_1 x1​和 x 2 x_2 x2​同時出現了,但接下來的99個樣本都隻出現了 x 1 x_1 x1​,然後第100個樣本 x 2 x_2 x2​又出來了,由于此時的學習率為 1 100 \frac{1}{\sqrt{100}} 100

​1​,遠小于第一個樣的影響了。也就是說假如第一個樣本是正樣本,第10個樣本是負樣本,此時由于學習率的不同,模型會認為 x 2 x_2 x2​會是一個有用的正相關的特征,即 ω &gt; 0 \omega&gt;0 ω>0。但事實上,這個特征隻出現了2次,而且一正一負,是以這應該是一個無用的特征,即 ω = 0 \omega=0 ω=0。

在FTRL中,我們會使用一個特征的累積梯度,由于中間的99個資料沒有這個特征,是以其對應的梯度為0,是以第二次的負樣本對應的學習率隻是略小于第一個正樣本。

3.4 工程實作計算過程

3.4.1 一些定義

對于每一個樣本,我們計算以下數值。

(1) p t p_t pt​

使用目前的 ω \omega ω代入sigmoid函數得出的預測值,即:

p = 1 1 + e − ( ∑ i = 1 n ω i x i ) p=\frac{1}{1+e^{-(\sum_{i=1}^n\omega_ix_i)}} p=1+e−(∑i=1n​ωi​xi​)1​

(2) g i g_i gi​

損失函數在某一個次元上的梯度,對于邏輯回歸而言:

g i = ( p − y ) x i g_i=(p-y)x_i gi​=(p−y)xi​

其中y為目前樣本的實際值,即0或者1。

(3) n i n_i ni​

這是該次元梯度 g i 2 g_i^2 gi2​的累積值,即:

n i = n i + g i 2 n_i=n_i+g_i^2 ni​=ni​+gi2​

(4) η i \eta_i ηi​

這是該次元的學習率,它與累積梯度有關。定義為:

η i = α β + ∑ s = 1 t ( g i s ) 2 = α β + n i \eta_i=\frac{\alpha}{\beta+\sqrt{\sum_{s=1}^t(g_i^s)^2}}=\frac{\alpha}{\beta+\sqrt{n_i}} ηi​=β+∑s=1t​(gis​)2

​α​=β+ni​

​α​

其中 α β \alpha\beta αβ為使用者定義的2個參數。

(5) σ i \sigma_i σi​

σ i \sigma_i σi​是一個中間計算值,沒有實際含義,其定義為:

σ i = 1 η t , i − 1 η t − 1 , i = 1 α ( n i + g i 2 − n i ) \sigma_i=\frac{1}{\eta_{t,i}}-\frac{1}{\eta_{t-1,i}}=\frac{1}{\alpha}(\sqrt{n_i+g_i^2}-\sqrt{n_i}) σi​=ηt,i​1​−ηt−1,i​1​=α1​(ni​+gi2​

​−ni​

​)

(6) z i z_i zi​

z i z_i zi​也是一個輔助計算的中間值,它的定義為:

z t , i = g ( 1 : t ) − ∑ s = 1 t σ s , i ω s , i z_{t,i}=g^{(1:t)}-\sum_{s=1}^t{\sigma_{s,i}\omega_{s,i}} zt,i​=g(1:t)−s=1∑t​σs,i​ωs,i​

于是 z i z_i zi​的更新為:

z t − z t − 1 = g t − σ t ω t z_t-z_{t-1}=g_t-\sigma_{t}\omega_{t} zt​−zt−1​=gt​−σt​ωt​

即:

z i = z i + g t − σ i ω i z_i=z_i+g_t-\sigma_i\omega_i zi​=zi​+gt​−σi​ωi​

3.4.2 FTRL算法

(1)設定以下4個輸入參數,這些參數根據經驗而定,可以參考以下資料:

α = 0.1 , β = 1 , λ 1 = 1 , λ 2 = 1 \alpha=0.1,\beta=1,\lambda_1=1,\lambda_2=1 α=0.1,β=1,λ1​=1,λ2​=1

(2)初始化以下數值:

z i = 0 , n i = 0 z_i=0,n_i=0 zi​=0,ni​=0

(3)對于每一個樣本的所帶的每一個次元,更新 ω \omega ω

ω i = { 0 , if  ∣ z i ∣ &lt; λ 1 − ( β + n I α + λ 2 ) − 1 ( z i − s g n ( z i ) λ 1 ) , otherwise \omega_i = \begin{cases} 0, &amp; \text{if $|z_i|&lt;\lambda_1$} \\ -(\frac{\beta+\sqrt{n_I}}{\alpha}+\lambda_2)^{-1}(z_i-sgn(z_i)\lambda_1), &amp; \text{otherwise} \\ \end{cases} ωi​={0,−(αβ+nI​

​​+λ2​)−1(zi​−sgn(zi​)λ1​),​if ∣zi​∣<λ1​otherwise​

(4)使用上面更新後的 ω \omega ω,預測這個樣本的值,即代入sigmoid函數計算 p t p_t pt​

p = 1 1 + e − ( ∑ i = 1 n ω i x i ) p=\frac{1}{1+e^{-(\sum_{i=1}^n\omega_ix_i)}} p=1+e−(∑i=1n​ωi​xi​)1​

(5)對于每一個樣本的每一個次元,更新 g i , σ i , z i , n i g_i,\sigma_i,z_i,n_i gi​,σi​,zi​,ni​,即上面所說的:

g i = ( p − y ) x i σ i = 1 α ( n i + g i 2 − n i ) z i = z i + g t − σ i ω i n i = n i + g i 2 \begin{aligned} g_i&amp;=(p-y)x_i \\ \sigma_i&amp;=\frac{1}{\alpha}(\sqrt{n_i+g_i^2}-\sqrt{n_i})\\ z_i&amp;=z_i+g_t-\sigma_i\omega_i\\ n_i&amp;=n_i+g_i^2 \end{aligned} gi​σi​zi​ni​​=(p−y)xi​=α1​(ni​+gi2​

​−ni​

​)=zi​+gt​−σi​ωi​=ni​+gi2​​

4、FTRL的工程應用

這裡隻列出了google提供的一些建議,我們自身的工程應用并不包含在内。

(1)減少樣本的數量

  • Poisson Inclusion:以p的機率接受樣本
  • Bloom Filter Inclusion:隻有當特征出現次數達到一定數量後,特征才會被加入模型

(2)使用更少的位來進行浮點數編碼

一般而言,特征對應的 ω \omega ω在(-2,2)之間,是以我們可以将32,或者64位的浮點數編碼規則改為q2.13編碼方式,即2位整數,1位小數點,13位小數。

(3)多個類似的模型

把多個同類型/相似的模型放在一起儲存,可以不需要記錄多個key,隻需要記錄一次Key,以及各個模型中的 ω \omega ω。這可以節省記憶體、帶寬、CPU、存儲。

(4)隻儲存一個模型

在上面的基礎上更進一步,所有模型共用一份 ω \omega ω,以及以一個bit來記錄本模型有哪些特征。當模型更新某個 ω \omega ω後,取它與之前那個值的平均值。

與共用一個模型對比,好處是記錄了這個模型有哪些有效特征,共用模型就無法區分了。

(5)近似計算學習率

隻使用正樣本P與負樣本資料N來近似估計梯度的平方和,前提是假設特征有類似的分布。

∑ g i 2 = P N P + N \sum{g_i^2}=\frac{PN}{P+N} ∑gi2​=P+NPN​

(6)減少負樣本數量

減少負樣本數量,然後在訓練時彌補其損失。

繼續閱讀