讓我們首先考慮具有不常出現的特征的學習問題。
12.7.1。稀疏特征和學習率
想象一下,我們正在訓練一個語言模型。為了獲得良好的準確性,我們通常希望在繼續訓練時降低學習率,通常為O(t?12)或更慢。現在考慮在稀疏特征(即不常出現的特征)上進行模型訓練。這在自然語言中很常見,例如,我們看到preconditioning一詞的可能性要小于learning 。然而,它在計算廣告和個性化協同過濾等其他領域也很常見。畢竟,有很多東西只是少數人感興趣的。
與不常見特征關聯的參數只有在這些特征出現時才會收到有意義的更新。如果學習率下降,我們可能會遇到這樣一種情況,即常見特征的參數會很快收斂到它們的最優值,而對于不常見的特征,在確定它們的最優值之前,我們仍然沒有足夠頻繁地觀察它們。換句話說,學習率要么對于頻繁出現的特征下降得太慢,要么對于不頻繁出現的特征下降得太快。
解決此問題的一種可能的破解方法是計算我們看到特定功能的次數,并將其用作調整學習率的時鐘。也就是說,而不是選擇形式的學習率η=η0t+c我們可以使用 ηi=η0s(i,t)+c. 這里s(i,t) 計算特征的非零數i我們觀察到時間t. 這實際上很容易實現,而且沒有任何有意義的開銷。然而,每當我們不太具有稀疏性而只是梯度通常非常小且很少大的數據時,它就會失敗。畢竟,尚不清楚人們會在哪里劃清是否符合觀察到的特征的界限。
Duchi等人的 Adagrad 。( 2011 )通過更換相當粗糙的計數器來解決這個問題s(i,t)通過先前觀察到的梯度的平方的集合。特別是,它使用 s(i,t+1)=s(i,t)+(?if(x))2作為調整學習率的手段。這有兩個好處:首先,我們不再需要決定梯度何時足夠大。其次,它會隨著梯度的大小自動縮放。通常對應于大梯度的坐標會顯著縮小,而其他具有小梯度的坐標會得到更溫和的處理。在實踐中,這導致了計算廣告和相關問題的非常有效的優化過程。但這隱藏了 Adagrad 固有的一些額外好處,這些好處最好在預處理的背景下理解。
12.7.2。預處理
凸優化問題有利于分析算法的特性。畢竟,對于大多數非凸問題來說,很難得出有意義的理論保證,但直覺和洞察力 往往會起作用。讓我們看看最小化問題 f(x)=12x?Qx+c?x+b.
正如我們在12.6 節中看到的,可以根據其特征分解來重寫這個問題 Q=U?ΛU得出一個大大簡化的問題,其中每個坐標都可以單獨求解:
這里我們使用了xˉ=Ux因此cˉ=Uc. 修改后的問題具有最小值 xˉ=?Λ?1cˉ 和最小值 ?12cˉ?Λ?1cˉ+b. 這更容易計算,因為Λ是包含特征值的對角矩陣Q.
如果我們擾亂cslightly 我們希望在最小化器中找到微小的變化f. 不幸的是,這種情況并非如此。雖然略有變化c導致同樣輕微的變化cˉ
評論
查看更多