随手总结

求平方根(非线性方程)

method1 二分法
method2 简单迭代法

求解 f ( x ) = 0 f(x)=0 f(x)=0
整理出 x n + 1 = x n − f ( x n ) x_{n+1}=x_n-f(x_n) xn+1=xnf(xn)
缺点:收敛慢,不一定收敛,需满足Lipschitz条件

method3 牛顿迭代法(根据泰勒一阶展开推导)

x n + 1 = x n − f ′ ( x n ) f ( x n ) x_{n+1}=x_n-\frac{f'(x_n)}{f(x_n)} xn+1=xnf(xn)f(xn)
其中 f ( x n ) = x 2 − n f(x_n)=x^2-n f(xn)=x2n

在这里插入图片描述

各种范数的比较

L0范数:非零元素个数
L1范数:绝对值,抗干扰能力更强。L1正则项不可微
L2范数:绝对值的平方,L2正则项可微
区别:
L1正则化,假设变量服从Laplace分布,偏向于使一些权重变为零,产生稀疏的特征矩阵,有利于直观上的特征选择
L2正则化,假设变量服从Gaussian分布,偏向与使所有权重尽量小。
L1正则化系数越大,最优点越靠近零点
L2正则化系数越大,W权值衰减越大
在这里插入图片描述

优化方法

梯度下降法:

延梯度方向更新参数,此时目标函数变化最大。
收敛阶 O ( 1 t ) O(\frac{1}{t}) O(t1),收敛速度越来越慢

牛顿法:

用来解方程的根,将原极值问题转化为 l ′ ( θ ) = 0 l'(\theta)=0 l(θ)=0
迭代格式 θ ′ = θ − l ′ ( θ ) l ′ ′ ( θ ) \theta '=\theta-\frac{l'(\theta)}{l''(\theta)} θ=θl(θ)l(θ)
当自变量为向量时,需要求二阶导数矩阵(Hessien矩阵)的逆,收敛速度快,但计算量较大。
拟牛顿法思想主要近似Hessien矩阵,BFGS用迭代点用一阶导差值迭代来近似每次的Hessien矩阵。
牛顿迭代法收敛阶
设真值为 α \alpha α,将函数在 x k x_k xk处泰勒展开 f ( α ) = f ( x k ) + f ′ ( x k ) ( x − α ) + f ′ ′ ( ξ ) 2 ( x k − α ) 2 = 0 f(\alpha)=f(x_k)+f'(x_k)(x-\alpha)+\frac{f''(\xi)}{2}(x_k-\alpha)^2=0 f(α)=f(xk)+f(xk)(xα)+2f(ξ)(xkα)2=0
解出 α \alpha α α = x k − f ( x k ) f ′ ( x k ) − f ′ ′ ( ξ ) 2 f ′ ( ξ ) ( α − x k ) 2 = x k + 1 − f ′ ′ ( ξ ) 2 f ′ ( ξ ) ( α − x k ) 2 \alpha = x_k-\frac{f(x_k)}{f'(x_k)}-\frac{f''(\xi)}{2f'(\xi)}(\alpha-x_k)^2=x_{k+1}-\frac{f''(\xi)}{2f'(\xi)}(\alpha-x_k)^2 α=xkf(xk)f(xk)2f(ξ)f(ξ)(αxk)2=xk+12f(ξ)f(ξ)(αxk)2
lim ⁡ x k + 1 − α ( x k − α ) 2 = C \lim \frac{x_{k+1}-\alpha}{(x_k-\alpha)^2}=C lim(xkα)2xk+1α=C
所以牛顿法至少二阶收敛
多元泰勒展开与牛顿迭代法
f ( X ) = f ( X k ) + ∇ f ( X k ) ( X − X k ) + 1 2 ( X − X k ) T G x k ( X − X K ) + O f(X)=f(X_k)+\nabla f(X_k)(X-X_k)+\frac{1}{2}(X-X_k)^TG_{x_k}(X-X_K)+O f(X)=f(Xk)+f(Xk)(XXk)+21(XXk)TGxk(XXK)+O

共轭梯度法:

共轭方向法与梯度的结合,原问题用来求解对称正定线性方程组的根,可推广到一般优化问题,效率介于梯度下降与牛顿法之间。
求解 A x = b Ax=b Ax=b,等价于最优化 m i n 1 2 x T A x + b x + c min \frac{1}{2}x^{T}Ax+bx+c min21xTAx+bx+c
共轭梯度法中每一次的迭代方向 d 1 , d 2 , . . . , d n d_1,d_2,...,d_n d1,d2,...,dn都是关于A共轭的,即 d i T A d j = 0 d_i^TAd_j=0 diTAdj=0
第一次的迭代方向选为梯度的负方向 d 0 = − g 0 d_0=-g_0 d0=g0,之后每次的方向与前一次共轭,且是新点梯度与之前方向的线性组合, d 1 = − g 1 + r 0 d 0 d_1= -g_1 +r_0d_0 d1=g1+r0d0,再按照共轭的条件解出 r 0 r_0 r0,即得到新的方向。
在每个方向上,line search找出此时函数的极值,在极值点进行下一次的方向搜索。理论上n维二次问题通过n的、次迭代即可求出精确解。
一般问题在迭代n次之后,新的方向不会与之前的方向共轭,此时要修正梯度,即可再产生一组共轭方向,例如此时把方向直接取为梯度负方向

坐标轴下降法:

可微凸函数一直延各个坐标轴方向取极值,最终会收敛到函数的极值。
对于 m i n f ( x ) , x = ( x 1 , x 2 , x 3 , . . . , x n ) min f(x),x=(x_1,x_2,x_3,...,x_n) minf(x),x=(x1,x2,x3,...,xn)
首先固定 x 2 , . . , . x n x_2,..,.x_n x2,..,.xn更新 x 1 ′ = a r g m i n f ( x ) x_1'=argminf(x) x1=argminf(x),
再固定 x 1 ′ , x 3 , . . . , x n x_1',x_3,...,x_n x1,x3,...,xn更新 x 2 ′ x_2' x2

固定 x 1 ′ , x 2 ′ , . . . , x n − 1 ′ x_1',x_2',...,x_{n-1}' x1,x2,...,xn1更新 x n ′ x_n' xn
即完成一次迭代,继续上述过程直到满足误差条件

拓展: f ( x ) = g ( x ) + ∑ h i ( x ) f(x)=g(x)+\sum h_i(x) f(x)=g(x)+hi(x)其中 g ( x ) g(x) g(x)可微, h i ( x ) h_i(x) hi(x)为凸函数,上述情况也成立。所以coordinate decent可用于解决带有L1正则化的优化问题

梯度下降方法总结

1)Momentum
保留上一次的梯度方向,基于这次梯度对总方向进行调整
v t = γ v t − 1 + α ∇ θ J ( θ ) v_t=\gamma v_{t-1}+\alpha \nabla_\theta J(\theta) vt=γvt1+αθJ(θ)
2)Nesterov Momentum
v t = γ v t − 1 + α ∇ θ J ( θ − γ v t − 1 ) v_t=\gamma v_{t-1}+\alpha \nabla_\theta J(\theta-\gamma v_{t-1}) vt=γvt1+αθJ(θγvt1)
改进:对每次求梯度的位置都进行了调整,加入对之后变化的“展望(lookahead)”。加快了收敛速度
3)Adagrad
θ i , t + 1 = θ i , t + α G i , t + ϵ ∇ θ i J ( θ ) G i , t = G i , t − 1 + ∇ θ i , t J ( θ ) \theta _{i,t+1}=\theta_{i,t}+\frac{\alpha}{\sqrt{G_{i,t}+\epsilon}} \nabla_{\theta_i} J(\theta) \\ G_{i,t}=G_{i,t-1}+\nabla_{\theta_{i,t}} J(\theta) θi,t+1=θi,t+Gi,t+ϵ αθiJ(θ)Gi,t=Gi,t1+θi,tJ(θ)
对于梯度小的方向,学习率会比其他方向在下一次学习中更大,适应处理稀疏特征时,但是学习率总体在减小,训练越来越慢
4)Adadelta,RMSprop
改进Adagrad中学习率减小的问题。用均方根(RMS)来代替G
θ t + 1 = θ t + α E [ g 2 ] t + ϵ ∇ θ J ( θ ) E [ g 2 ] t = γ E [ g 2 ] t − 1 + ( 1 − γ ) g t 2 \theta _{t+1}=\theta_{t}+\frac{\alpha}{\sqrt{E[g^2]_{t}+\epsilon}} \nabla_{\theta} J(\theta) \\ E[g^2]_t=\gamma E[g^2]_{t-1}+(1-\gamma)g^2_t θt+1=θt+E[g2]t+ϵ αθJ(θ)E[g2]t=γE[g2]t1+(1γ)gt2
上一次梯度小的放小下一次梯度会被放大,一般 γ \gamma γ 取0.9
5)Adam
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值