UA MATH567 高维统计专题3 含L1-norm的凸优化6 Stochastic Gradient Descent简介
UA MATH567 高維統計專題3 含L1-norm的凸優化6 Stochastic Gradient Descent簡介
- Stochastic Gradient Descent的思想
- Variance Reduction
Stochastic Gradient Descent的思想
Stochastic Gradient Descent的想法是在數據量越來越大以后出現的。在監督學習中,需要做最小化的目標函數通常是loss function+penalty,其中loss function一般是所有數據點的loss的和:
min?xf(x)=1m∑i=1mhi(x)+λψ(x)\min_x \ \ f(x)= \frac{1}{m}\sum_{i=1}^mh_i(x)+\lambda \psi(x)xmin???f(x)=m1?i=1∑m?hi?(x)+λψ(x)
比如regularized least square:
min?x1m∑i=1m(yi?Aix)2+λψ(x)\min_x \ \ \frac{1}{m}\sum_{i=1}^m (y_i-A_ix)^2+\lambda \psi(x)xmin???m1?i=1∑m?(yi??Ai?x)2+λψ(x)
在用梯度下降求解這個最小化問題時,每一步迭代我們都需要計算?f(xk)\nabla f(x_k)?f(xk?),如果數據量非常大,也就是mmm非常大時,這一步會嚴重拖低計算效率(需要計算mmm個?hi(xk)\nabla h_i(x_k)?hi?(xk?))。Stochastic Gradient Descent認為并不需要用所有的樣本來計算loss,因為在統計學的觀念中,樣本本來就是因為難以兼顧總體而用某些采樣方法得到的用來推斷總體性質的,樣本量過大就需要用一些dimensional reduction的手段讓信息更加dense,在計算loss的時候也是如此,數據太大的時候可以只用一個子樣本進行計算,于是在第kkk次迭代時先采樣得到一個子樣本
Bk?{1,2,?,m},∣Bk∣=bB_k \subset \{1,2,\cdots,m\},|B_k|=bBk??{1,2,?,m},∣Bk?∣=b
然后用這個子樣本計算?f(xk)\nabla f(x_k)?f(xk?):
?f(xk)=1b∑i∈Bk?hi(xk)+λ?ψ(xk)\nabla f(x_k) = \frac{1}{b}\sum_{i \in B_k}\nabla h_i(x_k)+\lambda \nabla \psi(x_k)?f(xk?)=b1?i∈Bk?∑??hi?(xk?)+λ?ψ(xk?)
如果b=o(m)b=o(m)b=o(m),那么每次迭代中梯度計算的復雜度就會大大下降,但后果是因為做了sub-sampling,樣本信息沒有完全用上,所以收斂所需要的迭代次數會增加。在實踐中,這種方法在一定程度上可以提升計算效率。
如果sub-sampling能夠保證無偏性,即
E?Bkf(xk)=?f(xk)E \nabla_{B_k}f(x_k)=\nabla f(x_k)E?Bk??f(xk?)=?f(xk?)
那么盡管BkB_kBk?是隨機的,多次采樣計算梯度得到的期望也會約等于?f(xk)\nabla f(x_k)?f(xk?),但是這樣只是提高了計算速度,并沒有兼顧精度,因為在每次迭代中我們只會計算一次梯度(沒有辦法做多次sub-sampling取均值,也就不能保證它就會約等于?f(xk)\nabla f(x_k)?f(xk?)),所以sub-sampling會帶來額外的關于梯度的估計誤差
E∥?Bkf(xk)??f(xk)∥E \left\|\nabla_{B_k}f(x_k)-\nabla f(x_k) \right\|E∥?Bk??f(xk?)??f(xk?)∥
Variance Reduction
經過上述討論,我們可以發現如果能夠縮減E∥?Bkf(xk)??f(xk)∥E \left\|\nabla_{B_k}f(x_k)-\nabla f(x_k) \right\|E∥?Bk??f(xk?)??f(xk?)∥這個方差就可以提高收斂速度,那么Stochastic Gradient Descent應該還是很好用。
Method 1:Anchor Point
固定x~\tilde xx~作為Anchor Point,用所有數據點計算?f(x~)\nabla f(\tilde x)?f(x~),在第kkk次迭代中,計算
?~Bkf(xk)=?Bkf(xk)??Bkf(x~)+?f(x~)\tilde \nabla_{B_k}f(x_k)=\nabla_{B_k}f(x_k)-\nabla_{B_k}f(\tilde x)+\nabla f(\tilde x)?~Bk??f(xk?)=?Bk??f(xk?)??Bk??f(x~)+?f(x~)
作為梯度代入遞推式中,
xk+1=xk?rk?~Bkf(xk)x_{k+1}=x_k-r_k \tilde \nabla_{B_k}f(x_k)xk+1?=xk??rk??~Bk??f(xk?)
這種方法只需要額外多出用所有數據點計算Anchor Point處的梯度這一步的計算量(如果對計算量的限制沒有那么嚴格,也可以多增加幾個Anchor point,比如每十次迭代更新一下Anchor point),就可以實現Variance Reduction:?Bkf(xk)\nabla_{B_k}f(x_k)?Bk??f(xk?)是?f(xk)\nabla f(x_k)?f(xk?)的無偏估計,??Bkf(x~)+?f(x~)-\nabla_{B_k}f(\tilde x)+\nabla f(\tilde x)??Bk??f(x~)+?f(x~)是0無偏估計,所以?~Bkf(xk)\tilde \nabla_{B_k}f(x_k)?~Bk??f(xk?)是?f(xk)\nabla f(x_k)?f(xk?)的無偏估計,只要零無偏估計與?Bkf(xk)\nabla_{B_k}f(x_k)?Bk??f(xk?)負相關就可以達到variance reduction的目的。
Method 2 用累積到第kkk次迭代的所有子樣本計算梯度:
?f(xk)=1b∑i∈∪Bk?hi(xk)+λ?ψ(xk)\nabla f(x_k) = \frac{1}{b}\sum_{i \in \cup B_k}\nabla h_i(x_k)+\lambda \nabla \psi(x_k)?f(xk?)=b1?i∈∪Bk?∑??hi?(xk?)+λ?ψ(xk?)
閱讀材料
關于SGD的一些新進展可以看看ICML 2017 Tutorial: Recent Advances in Stochastic Convex and Non-Convex Optimization by Zeyuan Allen Zhu. 這里有一個網頁http://people.csail.mit.edu/zeyuan/topics/icml-2017可以找到一些資料。關于SGD的variance reduction可以看看Yuxin Chen的課件,鏈接在這里http://www.princeton.edu/~yc5/ele522_optimization/lectures/variance_reduction.pdf
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的UA MATH567 高维统计专题3 含L1-norm的凸优化6 Stochastic Gradient Descent简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物理光学11 衍射的基本概念与惠更斯原理
- 下一篇: 量子力学 一 基础6 厄尔米特算符的相容