• Andrew Ng机器学习算法入门(四):阶梯下降算法


    梯度降级算法简介

    之前如果需要求出最佳的线性回归模型,就需要求出代价函数的最小值。在上一篇文章中,求解的问题比较简单,只有一个简单的参数。梯度降级算法就可以用来求出代价函数最小值。
    梯度降级算法的在维基的定义:

    梯度下降法是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索

    首先,复习一下之前前面的讲过求解最佳的代价函数的过程

    那么如何通过梯度降级算法解决这个问题呢?首先对θ0和θ1进行初始化,初始化的值是什么并不重要,但通常的选择是将它们都初始化为0。 我们在梯度下降算法中要做的,就是不停地一点点地改变θ0和θ1,试图通过这种改变使得J(θ0, θ1)变小,直到我们找到J的最小值,这个最小值就是一个局部最优解。
    求解的过程可能如下:

    最上面的点是起始点,就加上如同一个人站在起始点的位置,最后需要回到最低点的位置,就需要一步步地向下走

    梯度降级算法定义

    梯度降级算法的定义如下:

    • :=表示的就是赋值语句
    • a,学习速率,表示的是在每一步的步长。在上面的例子中,稼穑你是一个人需要从山顶下山,那么a表示的就是你每一步的长度
    • 后面的数学公式就是一个数学公式,是一个偏导数。

    需要注意一点的是,需要同时更新所有的theta参数,包括theta-0,theta-1。这个其实在偏导数里面也是一个最基本的常识了,这里不作过多的讲解。如果你不了解,那只要记住就可以了。
    下面的这个例子就是错误的,不是同时更新的。

    为了能够形象地说明梯度讲解算法的用法,那么我们简化梯度讲解算法,假设仅仅只存在一个参数theta-1
    通过在第三节中讲述的,J(θ1)的图形就是一个曲线。利用阶梯降级函数的定义

    那么最后的求解过程为:

    这样就找到了最优解,和第三节中得到的最优解也是一样的。
    需要注意的问题是,学习速率a的设置既不能太大也不能太小,否则就会出现下面的问题。

    如果a太小,那么寻找最优解的时间过长;如果a太大,那么有可能无法找到最优解。

    梯度降级算法在线性回归中的应用

    下面还是简单的给出梯度降级算法和线性回归的算法定义

    为了方便对算法的求解进行描述,我们还是假设仅仅只是存在θ1和θ2
    将右边定义的J(θ)导入到左边的梯度降级算法中,得到如下的结果:

    但是需要注意的是,在仅仅只是存在θ1和θ2的情况下,代价函数的图形为:

    是一个凹图像,这个之前说的是不一致的。之前的那个图像仅仅是为了表述方面而作的图。
    最后将3D图转换为轮廓图,得到最后的最小的代价函数如下:

    以上就是梯度降级算法在线性回归中的应用

    批梯度下降算法

    批梯度下降算法的定义就是,在每一步的梯度下降过程中,使用所有的训练样本。 当然还有一些算法仅仅只是使用部分的训练样本。目前讨论的都是使用所有的训练样本。

    为了能到远方,脚下的每一步都不能少

  • 相关阅读:
    JEECG弹出框提交表单
    JEECG开发第一个菜单显示设备列表
    优化jeecg底层高级查询,支持bool值和下拉框查询
    Jeecg中的<t:datagrid treegrid="true">实现
    JEECG 简单实例讲解权限控制
    jeecg 定时任务配置用法
    帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数
    JEECG与帆软报表集成
    helm部署Redis哨兵集群
    helm安装kafka集群并测试其高可用性
  • 原文地址:https://www.cnblogs.com/babers/p/6736414.html
Copyright © 2020-2023  润新知