凸在線學習:理論與實踐


為什么寫在線學習的博客?

有三個原因,一是在線學習在工業界廣受歡迎,應用場景較多,尤其是涉及時序數據流的場景,有研究的價值;二是在線學習理論完備且較繁雜,需要仔細梳理歸納總結,硬看 Google 論文里的偽代碼很難理解其真正含義;三是在線學習網上學習資源較少,我希望能通過自己的學習和理解,寫出一篇綜述型博客為后來者提供些許幫助。本人水平有限,時間有限,所以對在線學習無法深挖,只能點到為止,我在寫這篇博客時所參考的資料在最后會全部給出,想要看更多細節可以去仔細閱讀那些書籍和論文。本人才疏學淺,文章里有錯誤的地方,還望指出。如需轉載,須經得本人同意。

 

這篇博客主體內容已經寫完,還有些細枝末節之后再做補充。

 

 

在線學習通俗的講指的是在線上實時接受數據並對模型進行訓練更新,這里所說的模型可以是線性回歸,邏輯回歸,神經網絡等等,所解決的問題可以是分類也可以是回歸。在現實中在線學習主要應用在搜索排名,廣告點擊等領域,其優勢體現在以下幾點:

  • 訓練數據無需滿足獨立同分布條件,數據分布可以隨時間變化;

  • 無需大量數據預訓練,可以線上實時獲取數據進行訓練;

  • 實時更新,針對數據變化及時響應,調整模型參數以達到更精准預測;

 

理論起源

本文將會聚焦在線學習中極為重要的一類,凸在線學習(Online Convex Learning),從理論上解讀並理解在線學習模型,探究當前工業界應用最廣的 FTRL-Proximal 方法的演變過程,為之后的代碼實現和方法應用鋪平道路。

 

首先我們要知道在線學習究竟要解決一個什么樣的問題,在在線學習框架下,我們在時間 \(t\) 接收到實時數據 \(x_t\),做出預測 \(p_t\),之后收到正確值 \(y_t\),受到損失 \(f(p_t, y_t)\)。我們想要得到一個策略使得我們能夠在未來有盡可能小的損失,一個很自然的想法是通過在每一步最小化累積損失來做決策。然而,在這種想法的情形下,我們只關注了最小化過去,而未來是不確定的,我們無法保證未來也能有最小損失。另一個想法是如果有一個專家能夠指引我們前進,那么我們只需要跟緊他就能保證未來也能得到盡可能小的損失。由此,我們定義經歷 \(T\) 時刻的后悔 \(Regret_T\) 為我們的決策所導致的累積損失和最優決策(專家)所導致的累積損失之差,形式如下:

\[Regret_T = \sum\limits_{t=1}^Tf_t(w_t) - \min_w \sum\limits_{t=1}^Tf(w) \]

因此我們想要找到某個算法,它能夠最小化 Regret。需要闡明的是,Regret 是從理論角度對算法的評估,其具體表現為 Regret Bound,而不是一個數值。所謂最小化 Regret,就是我們希望找到一個算法,它的 Regret Bound 能足夠小。不過事實上低 Regret 算法,即 Regret 隨時間 \(T\) 次線性增長,已經能滿足我們的需求了。次線性增長是指 \(\displaystyle\lim_{T\to \infty} \frac{Regret_T}{T} = 0\)。次線性增長意味着算法的平均表現和最優決策的平均表現是相當的。

 

接下來,我們仔細談談凸在線學習里面的各種低 Regret 算法,在這里我們主要談一階方法,比如鏡面下降(Mirror Descent)以及 FTRL(Follow the Regularized Leader),這兩大類的本質是相同的,只是看待問題角度不同,這一點在之后會談到。

在正式開始討論之前,我們首先要定義幾個符號。\(w_t\)\(t\) 時刻的參數,\(f_t(w_t)\)\(t\) 時刻的損失函數,\(S\) 是參數所在的凸集,\(\alpha\) 是學習率,\(\nabla f_t\) 是梯度,\(\partial f_t\) 是次梯度。

 

Follow the Regularized Leader

如何進行在線學習?最容易想到的方法就是最小化累積損失,也就是 FTL(Follow the Leader),其形式如下:

\[w_t = \arg \min_{w \in S} \sum\limits_{i=1}^{t-1}f_i(w) \]

在 2.1 節我們談到了能最小化累計損失不能說明此算法在在線學習場景是有效,我們需要探究算法的 Regret bound。

對任意的 \(u \in S\),都有

\[Regret_T(u) = \sum\limits_{i=1}^T (f_t(w) - f_t(u)) \leq \sum\limits_{i=1}^T (f_t(w) - f_{t+1}(w)) \]

通過歸納法可以很容易證明以上定理,但是這個上界在 \(w_t\) 不停上下震盪(比如在1和-1循環取值)的時候是會達到 \(O(T)\),不滿足次線性。事實上 FTL 在損失函數強凸的情形下是滿足 Regret 次線性的,但在一般凸函數情形下不滿足。我們可以在 FTL 基礎上加上正則項 \(R(w)\) 使得算法變得“平穩”一些。這就是 FTRL(Follow the Regularized Leader)。注意,FTRL 里的正則項和所謂的稀疏性並沒有聯系,只是為了讓算法更穩定從而滿足次線性。其形式如下:

\[w_t = \arg \min_{w \in S} \sum\limits_{i=1}^{t-1}f_i(w) + R(w) \]

正則項可以有多種不同的選擇。首先我們討論線性損失函數加上 \(L_2\) 正則項的情形。為方便起見,定義 \(z_t = \partial f_t(w_t)\)

損失函數為 \(f_t(w) = \left<w, z_t\right>\),正則項為 \(R(w) = \frac{1}{2\eta}||w||_2^2\),其中 \(\eta\) 是某個常數,代入 FTRL 更新式很容易驗證:

\[w_{t+1} = -\eta\sum\limits_{i=1}^tz_i = w_t - \eta z_t = w_t - \eta \partial f_t(w_t) \]

這就是在線梯度下降(Online Gradient Descent (OGD)),OGD 是 FTRL 當損失函數為線性以及正則項為 \(L_2\) 的特殊形式,它的 Regret bound 可以被證明是 \(O(\sqrt T)\),這里就不展開了,這能夠說明 OGD 在在線學習場景中是有理論來保障其性能的。我們還能延擴到其它凸損失函數領域而不只是局限於線性函數,利用凸函數定義可得,

\[\sum\limits_{i=1}^t f_i(w_i) - f_i(w^*) \leq \sum\limits_{i=1}^t z_i(w-w^*) \]

可以看到線性函數的 Regret 構成了凸函數的上界,所以我們只需要針對線性函數即可,能夠證明凸損失函數函數加上 \(L_2\) 正則項的 Regret bound 在滿足一定條件下是 \(O(\sqrt T)\) 的,同時延拓到其它強凸的正則項 \(R(w)\) 也是可行的。此時我們可以得到 FTRL 的通式:

\[w_{t+1} = \arg \min_{w\in S} \; \eta\sum\limits_{i=1}^tz_iw + R(w) \]

 

Online Mirror Descent

在每回合,FTRL 都需要求解一個優化問題,在線鏡面下降(Online Mirror Descent (OMD))可以簡化 FTRL,同時其 Regret bound 和 FTRL 是一致的。OMD 和線性損失函數加正則項的 FTRL 是等價的,下面我們來推導一下。為了方便起見,定義 \(z_{1:t} = \sum\limits_{i=1}^t z_i\)

\[ \begin{align*} w_{t+1} &= \arg \min_w R(w) + \sum\limits_{i=1}^t \left<w, z_i\right> \\ &= \arg \min_w R(w) + \left<w, z_{1:t}\right> \\ &= \arg \max_w \left<w, -z_{1:t}\right> - R(w) \end{align*} \]

定義連接函數 \(g(\theta) = \arg \max_w \left<w, \theta\right> - R(w)\)(注意連接函數可以是已定義的函數,此時OMD就不需要每回合求解一個優化問題)此時 FTRL 的更新式就變成了以下形式:

\[ \begin{align*} w_{t} &= g(\theta_{t}) \\ \theta_{t+1} &= \theta_t - z_t = \theta_t - \partial f_t(w_t) \end{align*} \]

OMD 的更新形式很像是 OGD,事實上,OGD 正是 OMD 最簡單的形式。當 \(g(\theta) = \eta \theta\)\(\eta > 0\) 以及 \(S \in R^d\),很容易能看出 OMD 就是 OGD。當\(g\)函數是一般的非線性函數時,\(w_{t+1}\) 是通過連接函數 \(g\)\(\theta_{t+1}\) “映射”(mirror)到 \(S\) 集合中得到的。這就是 OMD 名字的由來。

 

OMD 是一個大家族,包含了各種梯度下降式算法,我們首先從 OGD 看起,OGD 形式如下:

\[w_{t+1} = w_{t}-\alpha \nabla f_t(w_t) \]

我們在此討論離線形式的隨機梯度下降(SGD),即每次輸入一個樣本對參數進行更新,其本質和 OGD 是一致的。順便說一句,SGD 有一個別稱叫增量梯度下降 IGD(Incremental Graident Descent),其對應了增量學習(Incremental Learning),具體不展開了,想了解可以自行查閱資料。SGD 有一個很大的缺陷,即要求目標函數必須是光滑的,這一點在現實中較難滿足,因為通常為了達到稀疏性我們要考慮正則項,\(L_1\) 正則在 \(0\) 點是不可微的。因此需要對 SGD 作出一點改進,將梯度改成次梯度,次梯度的定義為 \(\partial f = \{u \mid f(y) \geq f(x)+u^T(y-x)\}\),此時 \(L_1\) 正則在 \(0\) 點的次梯度為 \(\left[-1, 1\right]\) 中元素。

梯度下降轉化為了次梯度下降(Subgradient Descent (SubGD)),形式如下:

\[w_{t+1} = w_{t} - \alpha_t \partial f_t(w_t) \]

次梯度下降從理論上解決了非光滑損失函數這一類問題,但是其收斂速度較慢,只有 \(O(1/\sqrt t)\),梯度下降的收斂速度為 \(O(1/t)\)。究其原因,由於損失函數非光滑,導致次梯度值會出現急劇變化,比如從-1跳到了1,盡管 \(w_t\)\(w_{t+1}\) 是很接近的,這就導致了收斂速度減慢。為了解決這種問題,我們可以采取“作弊”的方式,用 \(t+1\) 時刻的次梯度去更新得到 \(w_{t+1}\),這就是后向次梯度下降。這個問題第一眼看是沒法解的,我們得不到 \(w_{t+1}\) 的更新式,不過我們可以利用 Fermat 引理來求解。

\[0 \in w_{t+1} - w_t + \alpha_t \partial f_t(w_{t+1}) $$ 等價於 $$w_{t+1} = \arg\min_w \frac{1}{2} ||w - w_t||_2^2 + \alpha_t f_t(w)\]

為方便起見,引入鄰近算子(proximal operator)概念:

\[prox_{\alpha f}(y) = \arg\min_w \frac{1}{2} ||w-y||_2^2 + \alpha f(w) \]

這時后向次梯度下降的形式為:

\[w_{t+1} = prox_{\alpha_t f_t}(w_t) \]

在實際的大量凸優化問題中,損失函數本身可能是凸光滑的,所帶的正則項是非光滑的,問題轉化為最小化 \(f(w) + \lambda \Psi(w)\)\(\Psi(w)\) 是非光滑的正則項。這時為了適應特定問題場景,后向次梯度下降轉化為了前向后向分割(FOBOS),FOBOS 的全稱是 Forward-Backward Splitting,之所以不叫 FOBAS 是為了和之前的 FOLOS Forward-Looking Subgradients 保持一致,避免引起讀者的誤解。

FOBOS 分為兩步進行,對於光滑項梯度下降,對於非光滑項后向次梯度下降。具體形式如下:

\[ \begin{align*} w_{t+\frac{1}{2}} &= w_t - \alpha_t\nabla f(w_t) \\ w_{t+1} &= prox_{\lambda \alpha \Psi}(w_{t+\frac{1}{2}}) \end{align*} \]

統一起來,其形式為

\[w_{t+1} = prox_{\lambda \alpha \Psi}(w_t - \alpha_t\nabla f(w_t)) \]

因此 FOBOS 又可以被叫做鄰近梯度下降(Proximal Gradient Descent (PGD))

以上導出 FOBOS 的過程看上去很直觀,但實際上缺乏一些理論依據。接下來我們從理論角度重新推導 FOBOS。

首先,對於損失函數,我們采用二階近似來逼近,用 \(\frac{1}{\eta} I\) 代替 \(\nabla^2 f\)

\[f(y) \approx f(x) + \nabla f(x)^T (y-x) + \frac{1}{2\eta}||y-x||_2^2 \]

實質上,這是一階逼近加上\(x\)的鄰近項。這樣一來,在下一個時間點,我們就是要最小化二階逼近值。通過配完全平方法,我們很容易能得到:

\[w_{t+1} = \arg\min_w \frac{1}{2\eta}||w - (w_t - \alpha_t\nabla f(w_t))||_2^2 + \Psi(w) \]

這就是 FOBOS 的最終形式。

看上去 FOBOS 是比梯度下降復雜多了,實際上不然,在很多場景下鄰近算子是非常容易求得的,比如 LASSO。當正則項為 \(L_1\) 的時候,我們把它的鄰近算子稱為軟闕值算子 \(T_\alpha\)(soft-thresholding operator),其形式為:

\[\left[prox_{\alpha ||.||_1}(y)\right]_i = \left\{ \begin{array}{rcl} y_i + \alpha, & & {y_i \leq -\alpha} \\ 0, & & {\vert y_i\vert \leq \alpha} \\ y_i - \alpha, & & {y_i \geq \alpha} \end{array} \right. \]

 

以上,我們都是在討論線下場景的凸優化,凸在線學習本質上和線下凸優化是一致的,不過也有一些不同。以梯度下降為例,在線學習中梯度下降的形式為在線梯度下降(OGD),OGD 和 SGD 本質上是相同的,即每次使用一個樣本的梯度下降。但是兩者應用的場景不同,OGD 適用於線上情景,損失依次到來,其 Regret bound \(\alpha-\) 能達到 \(O(\sqrt(T))\),Regret 次線性增長能夠證明 OGD 是適用於在線學習場景的。另外雖然 SGD 形式和 OGD 一致,但兩者思路還是有區別,SGD 的梯度是靠樣本去估計的,而 OGD 則是直接進行處理。FOBOS 的在線版本也是同理,Regret bound 在損失函數\(\alpha-\)強凸情況下能達到 \(O(log(T))\)

 

Regularized Dual Averaging

SubGD 還有一個問題,在於新的次梯度的權重比老次梯度要低。具體的推導如下:

考慮二階近似,令 \(Z_t = \sum\limits_{i=1}^t \eta_i\)\(g_t = \partial f(w_t)\)

\[\begin{align*} w_{t+1} &= \arg \min_w f(w_t) + g_t(w-w_t) + \frac{1}{2\eta_t}||w-w_t||_2^2 \\ &= \arg \min_w \eta_t \left[f(w_t) + g_t(w-w_t)\right] - w^Tw_k + \frac{w^Tw}{2} \\ &= \arg \min_w \eta_t \left[f(w_t) + g_t(w-w_t)\right] - w^T(w_{t-1} - \eta_{t-1}g_{t-1}) + \frac{w^Tw}{2} \\ &= \arg \min_w \frac{\sum_{i=1}^t \eta_i}{\sum_{i=1}^t \eta_i} \left[f(w_i) + g_i(w-w_i)\right] + \frac{||w||_2^2}{2\sum_{i=1}^t \eta_i} \\ &= \arg \min_w \sum\limits_{i=1}^t \frac{\eta_i}{Z_t} \left[f(w_i) + g_i(w-w_i)\right] + \frac{||w||_2^2}{2Z_t} \end{align*}\]

可以看出,老的次梯度相比新的次梯度有更高的權重,這顯然不合理。對偶平均(Dual Averaging)通過賦予所有次梯度同等權重,解決了 SubGD 這種缺陷。

定義 \(\hat g_t = \frac{1}{t}\sum\limits_{i=1}^t g_i\)

\[\begin{align*} w_{t+1} &= \arg \min_w \frac{1}{t} \sum\limits_{i=1}^t \left[f(w_i) + g_i(w-w_i)\right] + \frac{\mu_t ||w||_2^2}{2t} \\ &= \arg \min_w \hat g_t w + \frac{\mu_t ||w||_2^2}{2t} \end{align*}\]

其中 \(\mu_t\) 是步長。

SubGD 的在線版本還有一個額外的缺陷,即無法得到稀疏解,於是微軟提出了正則對偶平均(Regularized Dual Averaging (RDA)),能得到比 FOBOS 更稀疏的解。相比於 DA,RDA 增加了一個正則項 \(\Psi\) ,用一個強凸函數 \(h\) 替代了原先的二階范數,其形式如下:

\[w_{t+1} = \arg \min_w \hat g_t w + \frac{\mu_t}{t}h(w) + \Psi(w) \]

由於是在線算法,因此出於運行效率的考量,通常選取簡單形式的 \(h\)\(\Psi\),比如二階范數和 \(L_1\) 正則項,令 \(\mu_t = \gamma\sqrt t\)。接下來,我們就來求解這種簡單形式的 RDA:

\[w_{t+1} = \arg \min_w \hat g_t w + \frac{\gamma}{2\sqrt t}||w||_2^2 + \lambda ||w||_1 \]

將其右式分成 \(n\) 個獨立式分別求解,令 \(\gamma_t = \frac{\gamma}{\sqrt t}\),這就轉化為了:

\[minimize \ \, \hat g_tw + \lambda \vert w \vert + \frac{\gamma_t}{2} w^2 \]

求導之后可得,

\[g_t + \lambda \delta + \gamma_t w^* = 0 \]

其中 \(w^*\) 是最優解,\(\delta \in \partial \vert w \vert\),之后根據 \(\delta\) 的取值分情況討論,最終可以得到 RDA 的閉式解,

\[w_{t+1}^{(i)} = \left\{ \begin{array}{lcr} 0, & & {\vert \hat g_t^{(i)} \vert \leq \lambda} \\ -\frac{\sqrt t}{\gamma}(\hat g_t^{(i)} - \lambda sgn(\hat g_t^{(i)})), & & {otherwise} \end{array} \right. \]

 

FOBOS + RDA = FTRL-Proximal

現在我們有了兩個 SubGD 加強版算法,FOBOS 以及 RDA。FOBOS 相比 RDA 能夠達到更高的精度,而 RDA 能夠得到更稀疏解,Google 融合兩者各取所長提出了如今在工業界中應用甚廣的 FTRL Proximal。

為了看得更清楚一些,我們把 FOBOS 和 RDA 寫成相似的形式(推導過程不嚴格):

\[\begin{align*} FOBOS \qquad w_{t+1} &= \arg\min_w \frac{1}{2\eta}||w - (w_t - \alpha_tg_t)||_2^2 + \lambda ||w||_1 \\ &= \arg\min_w g_tw + \lambda ||w||_1 + \frac{1}{2}||Q_{1:t}^{1/2}(w-w_t)||_2^2 \end{align*}\]

\[\begin{align*} \qquad RDA \qquad \; w_{t+1} &= \arg \min_w \hat g_t w + \lambda ||w||_1 + \frac{\mu_t}{2t}||w||_2^2\\ &= \arg \min_w g_{1:t}w + t\lambda||w||_1 + \frac{1}{2}\sum\limits_{i=1}^t||Q_i^{1/2}(w-0)||_2^2 \end{align*}\]

在這里 \(Q\) 是學習率,\(g_t\) 是損失函數的梯度,\(g_{1:t} = \sum_{i=1}^t g_i\)。從以上可以看出,更新式分為三項,第一項是損失函數的一階近似,第二項是非光滑正則項,此處為 \(L_1\) 正則,第三項為強凸正則項,此處為 \(L_2\) 正則。

從通式上我們能看出 FOBOS 和 RDA 總共有三點不同:

  • FOBOS 的優化只針對了最近的梯度,而 RDA 針對了過去所有的梯度;

  • RDA 的優化針對了累積的 \(L_1\) 正則,而 FOBOS 只針對了當前的;

  • FOBOS 強凸項中心化點為 \(w_t\),而 RDA 的中心化點為 \(0\)

事實上,Google 在論文中證明了一個等價定理,即 OMD 和 FTLR 等價。如此一來 FOBOS 的更新式能夠等價地寫成:

\[FOBOS \qquad w_{t+1} = \arg \min_w g_{1:t}w + \phi_{1:t-1}w + \lambda ||w||_1 + \frac{1}{2}\sum_{i=1}^t||Q_i^{\frac{1}{2}}(w-w_i)||_2^2 \]

此處 \(\phi\)\(L_1\) 正則的次梯度。這個更新式和 RDA 就更像了。FOBOS 的優化是針對基於次梯度估計的累積 \(L_1\) 正則,經實驗驗證正是因為次梯度估計的存在才導致了 FOBOS 的稀疏性不如 RDA 來得好。FOBOS 的強凸項中心化點為當前的點而非原點,這個好處是更新后我們不會在預測我們已經見過的樣本時有太多偏差,這就是所謂的 Proximal 名字的來歷。

FTRL Proximal 在處理稀疏性上和 RDA 一致,處理中心化點上和 FOBOS 一致,如此一來既達到了更好的稀疏性又提升了精確度,其形式如下:

\[w_{t+1} = \arg \min_w g_{1:t}w + t\lambda||w||_1 + \frac{1}{2}\sum\limits_{i=1}^t||Q_i^{1/2}(w-w_i)||_2^2 \]

注意 \(L_1\) 正則前並沒有 \(t\) 【3】和【4】中 FTRL-Proximal 公式在這一點上是不同的,不過都是 \(\alpha_t\) 的特殊形式,一個是 \(\alpha_t=1\),一個是 \(\alpha_t =t\)。我特地發郵件問了作者 Brendan McMahan,他的回復是在實踐中固定的 \(\lambda_1\) 經常 makes the most sense。

看上去這個優化問題有點復雜,但實質上這和 \(RDA\) 的求解是非常相似的。定義 \(z_t = g_{1:t} - \sum\limits_{i=1}^t \sigma_i w_i\),其中 \(\sigma_{1:t} = \frac{1}{\eta_t}\)。如此一來,優化式就轉化為:

\[w_{t+1} = \arg \min_w z_tw + \frac{1}{\eta_t}||w||_2^2 + \lambda ||w||_1 \]

這個形式和上面的 RDA 是一模一樣的,求解完全相同。最終結果是:

\[w_{t+1}^{(i)} = \left\{ \begin{array}{lcr} 0, & & {\vert z_t^{(i)} \vert \leq \lambda} \\ -\eta_t(z_t^{(i)} - \lambda sgn(z_t^{(i)}), & & {otherwise} \end{array} \right. \]

FTRL-Proximal 的偽代碼如下:

圖片名稱

 

總結歸納

最后,我們對上面講過的內容做一下總結歸納。

在線學習是一種強大的線上模型訓練方法,一個低 Regret 算法能夠保證其平均表現和最優決策的平均表現是相當的,我們着重介紹了在線學習中的一大類,一階凸在線學習,其代表算法是 FTRL。FTRL 通過最小化累計損失來更新參數,加上了正則項來使算法平穩。通過選取不同的損失函數和正則項,FTRL 可以轉化為多種形式,比如 OGD。

OMD 也是一種代表算法,它與 FTRL 本質相同,由於其梯度特性被認為是梯度下降類算法的通式。OGD 是 OMD 最簡單的形式,它一種高效簡潔的在線學習方法,在不少問題上能以很小的計算消耗達到不錯的精度,但其有兩大缺陷,一是稀疏性不夠,即使加上了正則項也會因為浮點數相加而很難得到精確零值。這時可以采用截斷法,比較流行的有 Truncated Gradient 以及 FOBOS。二是不能處理非光滑函數,這時就需要用次梯度代替梯度,即 SubGD。SubGD 雖然能處理非光滑,但收斂速度慢,FOBOS 通過向前看一步,有效提升了收斂速度。而且在加上正則項后通過軟闕值截斷,能達到較好的稀疏性。RDA 也是 SubGD 的加強版,相比 FOBOS 能達到更好的稀疏性,不過由於其中心化點是原點,可能會在預測我們已經見過的樣本時有一定偏差。

雖然我們在上面沒有提,不過從 FTRL 通式和 RDA 通式能看出兩者的相似性,RDA 實質上是 FTRL 家庭中的一員。當我們融合 RDA 和 FOBOS,將 FTRL 和 OMD 相聯結,我們就得到了 FTRL-Proximal,既能達到較高的預測精度,又能達到較好的稀疏性。

 

幾點備注

還有幾點零碎的我想說的,一並寫在這里。

  • 有關工程實現,這方面我不詳談了,畢竟 Google 的論文里寫的很詳細,網上其他資源翻譯的也比較到位。我就來談談實踐中還有什么注意點。特征尺度是個需要考慮的問題,由於模型大多是線性模型,尺度的不同會對算法有很大的影響。對於這一點,有幾個解決方案。一是始終存儲着最近的N個樣本點,用來計算均值方差,對新來的數據標准化;二是將數值變量分箱離散化,之后轉化為二元變量;三是多使用百分率而不是數值,把數據壓到0和1之間;四是使用不受特征尺度影響的算法,比如 Normalized Gradient Descent。實踐中所有方法都值得一試。還有一點是線性模型的局限性,通常在線學習都會用線性模型,因為它簡單效率高,但是要注意線性模型是不能處理非線性的,需要人為的干預。如果特征都是類別變量,比較好的做法是將其兩兩組合,如果對數值變量進行了分箱,那就能夠組合數值變量了。如果沒對數值變量分箱,可能需要手動組合特征。特征組合能大大提升線性模型的性能,代價是解釋性降低。

  • Google 在論文中提到,實踐中需要對每個特征用不同的學習率,出現次數多的特征學習率要低,出現次數少的特征學習率要高。論文中的學習率設置是和 Adagrad 一致的。其缺點也和 Adagrad 一樣,由於線上數據源源不斷,學習率可能會出現持續衰減到極小的數值,Adagrad 在深度學習里也是遇到了一樣的困境。解決方法可以是設置一個底線,學習率不能低於這個底線。

  • 強化學習和在線學習的聯系非常密切,是個值得詳談的點,可惜我當前時間不夠多,以后再行補充。

  • 在線學習涵蓋廣闊,我只是側重於談了談一階的凸在線學習方法,其中一些高級概念如對偶出於簡化論述的緣故都沒有涉及。除了一階凸方法,還有二階凸方法比如牛頓法,還有多臂賭博機,還有貝葉斯方法等等。總而言之,我所談到的只是在線學習這個有幾十年歷史的領域的冰山一角而已,希望這篇博客能將讀者領入門,更多地內容希望讀者自己去探索學習。

 

 

參考文獻

【1】 Introduction to Online Convex Optimization. Elad Hazan. Princeton University. 2016.

【2】 Online Learning and Online Convex Optimization. Shai Shalev-Shwartz. 2011.

【3】 Ad Click Prediction: a View from the Trenches. H. Brendan McMahan et.al. Google. 2013.

【4】 Follow-the-Regularized-Leader and Mirror Descent: Equivalence Theorems and L1 Regularization. H. Brendan McMahan. Google. 2011

【5】 Efficient Online and Batch Learning Using Forward Backward Splitting. John Duchi et.al. 2009.

【6】 Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. John Duchi et.al. 2011.

【7】 Dual Averaging Methods for Regularized Stochastic Learning and Online Optimization. Lin Xiao. Microsoft. 2010.

【8】 A Unified View of Regularized Dual Averaging and Mirror Descent with Implicit Updates.H. Brendan McMahan. Google. 2011

【9】 Optimization and Matrix Computation course by Jianfeng Cai. Hong Kong University of Science and Technology. 2017.

【10】 Optimization course by Geoff Gordon. Carnegie Mellon University. 2012.

【11】 Introduction to Online Learning course by Haipeng Luo. University of Southern California. 2017.

【12】 Normalized online learning. Stephane Ross et.al. 2013

【13】A Survey of Algorithms and Analysis for Adaptive Online Learning. H. Brendan McMahan. 2017

【14】Introduction to Online Learning Theory. Wojciech Kot lowski. Institute of Computing Science, Pozna´n University of Technology. 2013

【15】Wikipedia, Quora, StackOverflow, CrossValidated, Zhihu


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM