随机梯度下降算法及最优步长相关公式推导

返回目录
运用批量梯度下降法(BGD),每次迭代需要对所有训练集进行运算。
随机梯度下降法(SGD)则每次只对一次数据集进行运算。
小批量梯度下降法(MBGD)则每次对一组数据集进行运算。
1. 批量梯度下降法(BGD)
代价函数:
J ( θ ⃗ ) = 1 2 m ∑ i = 1 m ( θ ⃗ T x ⃗ ( i ) − y ( i ) ) 2 J(\vec{\theta})=\frac{1}{2m}\sum_{i=1}^{m}( \vec{\theta}^T\vec{x}^{(i)}-y^{(i)})^2 J(θ )=2m1i=1m(θ Tx (i)y(i))2
更新:
θ j : = θ j − α 1 m ∑ i = 1 m ( θ ⃗ T x ⃗ ( i ) − y ( i ) ) x ⃗ j ( i ) \theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}( \vec{\theta}^T\vec{x}^{(i)}-y^{(i)})\vec{x}_j^{(i)} θj:=θjαm1i=1m(θ Tx (i)y(i))x j(i)
2. 随机梯度下降法(SGD)
每次更新使用当次输入的数据进行 θ \theta θ的更新。
代价函数则是所有已经测试过的数据误差平方之和。
代价函数:
J ( θ ⃗ ) = 1 2 k ∑ i = 1 k ( θ ⃗ T x ⃗ ( i ) − y ( i ) ) 2 J(\vec{\theta})=\frac{1}{2k}\sum_{i=1}^{k}( \vec{\theta}^T\vec{x}^{(i)}-y^{(i)})^2 J(θ )=2k1i=1k(θ Tx (i)y(i))2
更新:
θ j : = θ j − α 1 m ( θ ⃗ T x ⃗ k − y ) x ⃗ j k \theta_j := \theta_j-\alpha\frac{1}{m}( \vec{\theta}^T\vec{x}^k-y)\vec{x}^k_j θj:=θjαm1(θ Tx ky)x jk
3. 小批量梯度下降法(MBGD)
每次更新使用当次输入的一组数据进行 θ \theta θ的更新。
代价函数则是所有已经测试过的数据误差平方之和。
代价函数:
J ( θ ⃗ ) = 1 2 t ∑ i = 1 t ( θ ⃗ T p ⃗ ( i ) − q ( i ) ) 2 J(\vec{\theta})=\frac{1}{2t}\sum_{i=1}^{t}( \vec{\theta}^T\vec{p}^{(i)}-q^{(i)})^2 J(θ )=2t1i=1t(θ Tp (i)q(i))2
更新:
θ j : = θ j − α 1 m ∑ i = 1 k ( θ ⃗ T s ⃗ ( i ) − v ( i ) ) s ⃗ j ( i ) \theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{k}( \vec{\theta}^T\vec{s}^{(i)}-v^{(i)})\vec{s}_j^{(i)} θj:=θjαm1i=1k(θ Ts (i)v(i))s j(i)
其中:
S = ( s ⃗ ( 1 ) s ⃗ ( 2 ) . . . s ⃗ ( k ) ) = ( x ⃗ ( i 1 ) x ⃗ ( i 2 ) . . . x ⃗ ( i k ) ) , V = ( v ( 1 ) v ( 2 ) . . . v ( k ) ) = ( y ( i 1 ) y ( i 2 ) . . . y ( i k ) ) P = ( p ⃗ ( 1 ) p ⃗ ( 2 ) . . . p ⃗ ( t ) ) = S 1 ⋃ S 2 . . . ⋃ S r , Q = ( q ( 1 ) q ( 2 ) . . . q ( t ) ) = V 1 ⋃ V 2 . . . ⋃ V r 其 中 i 1 , i 2 , . . . , i k ∈ [ 1 , m ] , r 为 更 新 次 数 \begin{aligned} S=\begin{pmatrix}\vec{s}^{(1)} \\ \vec{s}^{(2)} \\ ... \\ \vec{s}^{(k)}\end{pmatrix}=\begin{pmatrix}\vec{x}^{(i_1)} \\ \vec{x}^{(i_2)} \\ ... \\ \vec{x}^{(i_k)}\end{pmatrix} , &V=\begin{pmatrix}v^{(1)} \\ v^{(2)} \\ ... \\ v^{(k)}\end{pmatrix}=\begin{pmatrix}y^{(i_1)} \\ y^{(i_2)} \\ ... \\ y^{(i_k)}\end{pmatrix} \\ P=\begin{pmatrix}\vec{p}^{(1)} \\ \vec{p}^{(2)} \\ ... \\ \vec{p}^{(t)}\end{pmatrix}=S_1\bigcup S_2...\bigcup S_r , &Q=\begin{pmatrix}q^{(1)} \\ q^{(2)} \\ ... \\ q^{(t)}\end{pmatrix}=V_1\bigcup V_2...\bigcup V_r\\ 其中 i_1,i_2,...,i_k\in[1,m],r为更新次数 \end{aligned} S=s (1)s (2)...s (k)=x (i1)x (i2)...x (ik),P=p (1)p (2)...p (t)=S1S2...Sr,i1,i2,...,ik[1,m],rV=v(1)v(2)...v(k)=y(i1)y(i2)...y(ik)Q=q(1)q(2)...q(t)=V1V2...Vr
即是说, S S S V V V是从测试集 X X X y y y中抽取出来的 k k k行, P P P Q Q Q是所有输入过的测试集的并集。
4. 最优步长推导
下面针对一般形式MBGD做以下推导:
θ j ^ = θ j − α 1 m ∑ i = 1 k ( θ ⃗ T s ⃗ ( i ) − v ( i ) ) s ⃗ j ( i ) = θ j − α m ( s ⃗ ( 1 ) T θ ⃗ − v ( 1 ) s ⃗ ( 2 ) T θ ⃗ − v ( 2 ) . . . s ⃗ ( k ) T θ ⃗ − v ( k ) ) ( s ⃗ j ( 1 ) s ⃗ j ( 2 ) . . . s ⃗ j ( k ) ) = θ j − α m ( s ⃗ ( 1 ) T θ ⃗ − v ( 1 ) s ⃗ ( 2 ) T θ ⃗ − v ( 2 ) . . . s ⃗ ( k ) T θ ⃗ − v ( k ) ) T S j = θ j − α m ( S θ ⃗ − V ) T S j \begin{aligned} \widehat{\theta_j}&= \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{k}( \vec{\theta}^T\vec{s}^{(i)}-v^{(i)})\vec{s}_j^{(i)} \\ &= \theta_j-\frac{\alpha}{m} \begin{pmatrix} {\vec{s}^{(1)}}^T\vec{\theta}-v^{(1)} & {\vec{s}^{(2)}}^T\vec{\theta}-v^{(2)} &...&{\vec{s}^{(k)}}^T\vec{\theta}-v^{(k)} \end{pmatrix} \begin{pmatrix} \vec{s}_j^{(1)} \\ \vec{s}_j^{(2)} \\...\\ \vec{s}_j^{(k)} \end{pmatrix} \\ &= \theta_j-\frac{\alpha}{m} \begin{pmatrix} {\vec{s}^{(1)}}^T\vec{\theta}-v^{(1)} \\ {\vec{s}^{(2)}}^T\vec{\theta}-v^{(2)} \\...\\{\vec{s}^{(k)}}^T\vec{\theta}-v^{(k)} \end{pmatrix}^TS_j\\ &= \theta_j-\frac{\alpha}{m} (S\vec{\theta}-V)^TS_j \end{aligned} θj =θjαm1i=1k(θ Ts (i)v(i))s j(i)=θjmα(s (1)Tθ v(1)s (2)Tθ v(2)...s (k)Tθ v(k))s j(1)s j(2)...s j(k)=θjmαs (1)Tθ v(1)s (2)Tθ v(2)...s (k)Tθ v(k)TSj=θjmα(Sθ V)TSj
有:
( θ 1 ^ θ 2 ^ . . . θ n ^ ) T   = ( θ 1 θ 2 . . . θ n ) T − α m ( S θ ⃗ − V ) T ( S 1 S 2 . . . S n ) \begin{pmatrix} \widehat{\theta_1} \\ \widehat{\theta_2} \\ ...\\ \widehat{\theta_n} \\ \end{pmatrix}^T \ = \begin{pmatrix} \theta_1\\ \theta_2\\ ...\\ \theta_n\\ \end{pmatrix}^T -\frac{\alpha}{m}(S\vec{\theta}-V)^T \begin{pmatrix} S_1&S_2&...&S_n \end{pmatrix} θ1 θ2 ...θn T =θ1θ2...θnTmα(Sθ V)T(S1S2...Sn)
即:
θ ^ ⃗ = θ ⃗ − α m S T ( S θ ⃗ − V ) \vec{\widehat{\theta}}= \vec{\theta}-\frac{\alpha}{m}S^T(S\vec{\theta}-V) θ =θ mαST(Sθ V)
带入 J ( θ ) J(\theta) J(θ)得:
J ( θ ^ ⃗ ) = 1 2 t ∑ i = 1 t ( θ ^ ⃗ T p ⃗ ( i ) − q ( i ) ) 2 J(\vec{\widehat{\theta}})=\frac{1}{2t}\sum_{i=1}^{t}( \vec{\widehat{\theta}}^T\vec{p}^{(i)}-q^{(i)})^2 J(θ )=2t1i=1t(θ Tp (i)q(i))2
要找到 α \alpha α使得 J ( θ ^ ⃗ ) J(\vec{\widehat{\theta}}) J(θ )最小。对 J ( θ ^ ⃗ ) J(\vec{\widehat{\theta}}) J(θ )关于 α \alpha α求导:
d J ( θ ^ ⃗ ) d α = − 1 t 2 ∑ i = 1 t ( p ⃗ ( i ) T θ ^ ⃗ − q ( i ) ) p ⃗ ( i ) T S T ( S θ ⃗ − V ) = − 1 t 2 ( P θ ^ ⃗ − Q ) T P S T ( S θ ⃗ − V ) = − 1 t 2 ( P ( θ ⃗ − α m S T ( S θ ⃗ − V ) ) − Q ) T P S T ( S θ ⃗ − V ) \begin{aligned} \frac{d J(\vec{\widehat{\theta}})}{d{\alpha}}&=-\frac{1}{t^2}\sum_{i=1}^{t}( {\vec{p}^{(i)}}^T\vec{\widehat{\theta}}-q^{(i)}){\vec{p}^{(i)}}^TS^T(S\vec{\theta}-V) \\ &=-\frac{1}{t^2}(P\vec{\widehat{\theta}}-Q)^TPS^T(S\vec{\theta}-V)\\ &=-\frac{1}{t^2}(P(\vec{\theta}-\frac{\alpha}{m}S^T(S\vec{\theta}-V))-Q)^TPS^T(S\vec{\theta}-V) \end{aligned} dαdJ(θ )=t21i=1t(p (i)Tθ q(i))p (i)TST(Sθ V)=t21(Pθ Q)TPST(Sθ V)=t21(P(θ mαST(Sθ V))Q)TPST(Sθ V)
U = S T ( S θ ⃗ − V ) U=S^T(S\vec{\theta}-V) U=ST(Sθ V),则:
d J ( θ ^ ⃗ ) d α = − 1 t 2 ( P ( θ ⃗ − α m U ) − Q ) T P U = − 1 t 2 ( ( P θ ⃗ ) T ( P U ) − α t ( P U ) T ( P U ) − Q T ( P U ) ) \begin{aligned} \frac{d J(\vec{\widehat{\theta}})}{d{\alpha}} &=-\frac{1}{t^2}(P(\vec{\theta}-\frac{\alpha}{m}U)-Q)^TPU\\ &=-\frac{1}{t^2}((P\vec{\theta})^T(PU)-\frac{\alpha}{t}(PU)^T(PU)-Q^T(PU)) \end{aligned} dαdJ(θ )=t21(P(θ mαU)Q)TPU=t21((Pθ )T(PU)tα(PU)T(PU)QT(PU))
再次对 α \alpha α求导,有:
d 2 J ( θ ^ ⃗ ) d α 2 = 1 t 3 ( P U ) T ( P U ) > = 0 \frac{d ^2J(\vec{\widehat{\theta}})}{d{\alpha}^2} =\frac{1}{t^3}(PU)^T(PU)>=0 dα2d2J(θ )=t31(PU)T(PU)>=0
所以当 d J ( θ ^ ⃗ ) d α = 0 \frac{dJ(\vec{\widehat{\theta}})}{d{\alpha}} =0 dαdJ(θ )=0时, J ( θ ^ ⃗ ) J(\vec{\widehat{\theta}}) J(θ )得到最小值,记此时的解为 α ∗ \alpha ^* α
有:
( P θ ⃗ ) T ( P U ) − α ∗ t ( P U ) T ( P U ) − Q T ( P U ) = 0 (P\vec{\theta})^T(PU)-\frac{\alpha ^*}{t}(PU)^T(PU)-Q^T(PU)=0 (Pθ )T(PU)tα(PU)T(PU)QT(PU)=0
解得:
α ∗ = t ( P U ) T ( P θ ⃗ − Q ) ( P U ) T ( P U ) 其 中 : U = S T ( S θ ⃗ − V ) \begin{aligned} \alpha^*=\frac{t(PU)^T(P\vec{\theta}-Q)}{(PU)^T(PU)} \\ 其中:U=S^T(S\vec{\theta}-V) \end{aligned} α=(PU)T(PU)t(PU)T(Pθ Q)U=ST(Sθ V)
代入得到梯度下降更新表达式:
θ ⃗ : = θ ⃗ − ( P U ) T ( P θ ⃗ − Q ) ( P U ) T ( P U ) U 其 中 : U = S T ( S θ ⃗ − V ) \vec{{\theta}}:= \vec{\theta}-\frac{(PU)^T(P\vec{\theta}-Q)}{(PU)^T(PU)} U\\ 其中:U=S^T(S\vec{\theta}-V) θ :=θ (PU)T(PU)(PU)T(Pθ Q)UU=ST(Sθ V)
表达式说明,每次迭代我们都可以找到一个最优步长使得梯度下降最快。
当使用BGD时: P = S = X , Q = V = y P=S=X, Q=V=y P=S=X,Q=V=y
经测试使用 α = 0.001 \alpha = 0.001 α=0.001时,迭代500次没有达到阈值范围内,使用最优步长只需6次就能达到阈值。
从表达式可以看出计算最优步长时计算量大,使用固定步长仍是一个好用的算法。

返回目录

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值