梯度下降,概念概念,纯概念,转来

梯度下降(Gradient Descent)小结

**梯度:**在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。沿着梯度向量的方向,函数增长最快,反向减少最快。
**梯度下降与梯度上升:**在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
梯度下降法算:损失函数与梯度下降
起点(山顶)找最陡峭的位置向下走一步(梯度的负方向),继续求解当前位置梯度,走最陡峭的下山,走一步看一步。梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
概念:
步长(Learning rate):延梯度每一步长度
特征(feature):指的是样本中输入部分
假设函数(hypothesis function):在监督学习中,为了拟合输入样本,而使用的假设函数,记为 h θ ( x ) h_{\theta}(x) hθ(x)
损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。 J ( θ 0 , θ 1 ) = ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J(\theta_0, \theta_1) = \sum\limits_{i=1}^{m}(h_\theta(x_i) - y_i)^2 J(θ0,θ1)=i=1m(hθ(xi)yi)2 计算结果和实际结果的方差。其中 x i x_i xi表示第i个样本特征, y i y_i yi表示第i个样本对应的输出, h θ ( x i ) h_\theta(x_i) hθ(xi)为假设函数。
梯度下降的详细算法
先决条件: 确认优化模型的假设函数和损失函数。
比如对于线性回归,假设函数表示为 h θ ( x 1 , x 2 , . . . x n ) = θ 0 + θ 1 x 1 + . . . + θ n x n h_\theta(x_1, x_2, ...x_n) = \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n} hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn, 其中$ \theta_{j}$ (j = 0,1,2… n)为模型参数, x j x_j xj (j = 0,1,2… n)为每个样本的n个特征值。这个表示可以简化,我们增加一个特征 x 0 = 1 x_0=1 x0=1 ,这样 h θ ( x 0 , x 1 , . . . x n ) = ∑ j = 0 n θ j x j h_\theta(x_0, x_1, ...x_n) =\sum\limits_{j=0}^{n}\theta_{j}x_{j} hθ(x0,x1,...xn)=j=0nθjxj。同样是线性回归,对应于上面的假设函数,损失函数为: J ( θ 0 , θ 1 . . . , θ n ) = ∑ i = 0 m ( h θ ( x 0 ( i ) , x 1 ( i ) , . . . x n ( i ) ) − y i ) 2 J(\theta_0, \theta_1..., \theta_n) = \sum\limits_{i=0}^{m}(h_\theta(x_0^{(i)}, x_1^{(i)}, ...x_n^{(i)}) - y_i)^2 J(θ0,θ1...,θn)=i=0m(hθ(x0(i),x1(i),...xn(i))yi)2, 如果前面有系数参考线性回归损失函数为什么要用平方形式
算法相关参数初始化:主要是初始化 θ 0 , θ 1 . . . , θ n \theta_0, \theta_1..., \theta_n θ0,θ1...,θn,算法终止距离 ε \varepsilon ε以及步长 α \alpha α。在没有任何先验知识的时候,我喜欢将所有的 θ \theta θ初始化为0, 将步长初始化为1。在调优的时候再优化。
算法过程:
1.确定损失函数,对 θ i \theta_i θi: ∂ ∂ θ i J ( θ 0 , θ 1 . . . , θ n ) \frac{\partial}{\partial\theta_i}J(\theta_0, \theta_1..., \theta_n) θiJ(θ0,θ1...,θn).
2.确定步长: α ∂ ∂ θ i J ( θ 0 , θ 1 . . . , θ n ) \alpha\frac{\partial}{\partial\theta_i}J(\theta_0, \theta_1..., \theta_n) αθiJ(θ0,θ1...,θn).
3.确定是否所有的 t h e t a i theta_i thetai,梯度下降的距离都小于 ε \varepsilon ε,如果小于 ε \varepsilon ε则算法终止,当前所有的 t h e t a i theta_i thetai(i=0,1,…n)即为最终结果。否则进入步骤4.
4.更新所有的 t h e t a theta theta,对于 t h e t a i theta_i thetai,其更新表达式如下。更新完毕后继续转入步骤1. θ i = θ i − α ∂ ∂ θ i J ( θ 0 , θ 1 . . . , θ n ) \theta_i = \theta_i - \alpha\frac{\partial}{\partial\theta_i}J(\theta_0, \theta_1..., \theta_n) θi=θiαθiJ(θ0,θ1...,θn).
梯度下降的算法调优:

  1. 算法的步长选择。在前面的算法描述中,我提到取步长为1,但是实际上取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。前面说了。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。
  2. 算法参数的初始值选择。 初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
    3.归一化。由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化,也就是对于每个特征x,求出它的期望 x ‾ \overline{x} x和标准差std(x),然后转化为:

x − x ‾ s t d ( x ) \frac{x - \overline{x}}{std(x)} std(x)xx
    这样特征的新期望为0,新方差为1,迭代次数可以大大加快。
转载梯度下降(Gradient Descent)小结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值