zoukankan      html  css  js  c++  java
  • 数据分析第九篇:梯度下降详解

    什么是梯度下降法

    是一种基于搜索的最优法方法

    下面这个图是在一维方向的求导,但是在多维的我们需要对各个维度求导,然后进行一个合并。多维中叫做梯度。

    在直线上,导数代表斜率

    在曲线方程中,导数代表切线斜率。也代表theta单位变化时,J相应的变化

     

    在这一点上,导数为负值,当theta增加,J是减小的。导数可以代表方向,对应J增大的方向,我们需要J减小的话,就需要向导数的反方向

     

    我们就需要theta-上面的公式,也就是theta在向右移动

     

    注意:并不是一定有极值点,有时候会收敛到局部最优解

    解决方案:

    1. 多次运行,随机化初始点
    2. 梯度下降法的初始点也是一个超参数
    线性回归中的梯度下降法(批量梯度下降法)

    梯度代表方向,对应J增大最快的方向。只不过

     

    J需要对theta每个方向的求一个偏导数,只是因为现在J中包含多个未知数

     

    越内层的损失函数取值越小

     

    同上上面最后一步我们发现最后的梯度的大小和m是有关系的,m越大,梯度越大,为了让梯度和m无关,我们需要除以一个m。

     

    梯度下降向量化数据标准化

     

    简化后为:

     

    4随机梯度下降法

    由上面的图我们可以知道,每次求梯度的时候,都是讲m条数据全部进行了梯度的运算,当数据量比较大的时候是非常耗费性能的。

    那我们能不能每次取出一条数据?

    这样就不用除以m

    - 随机梯度下降法,学习率的取值非常重要,我们希望我们的学习率是逐渐递减的

     

     

    图中a,b都是随机梯度下降法中的超参数,一个比较好的取值就是a=5,b=50。上图的思想就是模拟退火的思想。

    5梯度的调试

    在一维的坐标中:

    在红色点部分的导数约等于它左右附件的两点的连线的斜率

     

    在多维的坐标中:

    对每一个维度使用下面的方式,这样做的时间复杂度非常高

     

    下面是调试代码的截图:

     

     

     

    6梯度下降总结

    批量梯度下降法:

    每一次都要对所有的样本算一遍才能求出梯度

    缺点:比较慢

    优点:稳定,一定能够向着我们损失函数下降最快的方向前进

    随机梯度下降法:

    每一次只看一个样本就能求出梯度

    优点:速度快

    缺点:不稳定,每一次的方向是不确定的,甚至会向反方向前进

    小批量梯度下降法:

    每次取出部分样本,兼顾了前面两者的优点

  • 相关阅读:
    F4搜索帮助 带回多个值
    ALV Tree demo(WBS元素分层显示)[引用别人的]
    WDA导出文件XLS,WORD
    采购信息记录修改[BDC]
    增强:MB1A物料价格检查
    机器学习中常见优化方法汇总
    统计模型机器学习模型领域相关知识,指标概念及问题点积累
    机器学习数学知识中令人费解的notation符号注解
    线性代数的视角理解LSR(least square regression)的参数评估算法本质
    statsmodels中的summary解读(以linear regression模型为例)
  • 原文地址:https://www.cnblogs.com/leijing0607/p/7999541.html
Copyright © 2011-2022 走看看