梯度降级算法简介

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

梯度降级算法的在维基的定义:

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

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

那么如何通过梯度降级算法解决这个问题呢?首先对θ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图转换为轮廓图,得到最后的最小的代价函数如下:

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

批梯度下降算法

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

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

Andrew Ng机器学习算法入门(四):阶梯下降算法的更多相关文章

  1. Andrew Ng机器学习算法入门(一):简介

    简介 最近在参加一个利用机器学习来解决安全问题的算法比赛,但是对机器学习的算法一直不了解,所以先了解一下机器学习相关的算法. Andrew Ng就是前段时间从百度离职的吴恩达.关于吴恩达是谁,相信程序 ...

  2. Andrew Ng机器学习算法入门(二):机器学习分类

    机器学习的定义 Arthur Samuel给出的定义,Field of Study that gives computers the ability to learn without being ex ...

  3. Andrew Ng机器学习算法入门(九):逻辑回归

    逻辑回归 先前所讲的线性回归主要是一个预测问题,根据已知的数据去预测接下来的情况.线性回归中的房价的例子就很好地说明了这个问题. 然后在现实世界中,很多问题不是预测问题而是一个分类问题. 如邮件是否为 ...

  4. Andrew Ng机器学习算法入门(八):正规方程

    正规方程 在先学习正规方程之前,先来复习一下之前学过的常规的回归方程的解法. 假设存在如果的代价函数, ,解法也十分的简答. 但是有时候遇到的情况或许会变得相当的复杂. 的数,如果是按照常规的方式进行 ...

  5. Andrew Ng机器学习算法入门((六):多变量线性回归方程求解

    多变量线性回归 之前讨论的都是单变量的情况.例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关.那么此时就变成了一个多变量线性回归的问题.在实际问题中,多变量的 ...

  6. Andrew Ng机器学习算法入门(三):线性回归算法

    线性回归 线性回归,就是能够用一个直线较为精确地描述数据之间的关系.这样当出现新的数据的时候,就能够预测出一个简单的值. 线性回归中最常见的就是房价的问题.一直存在很多房屋面积和房价的数据,如下图所示 ...

  7. Andrew Ng机器学习算法入门(十):过拟合问题解决方法

    在使用机器学习对训练数据进行学习和分类的时候,会出现欠拟合和过拟合的问题.那么什么是欠拟合和过拟合问题呢?

  8. Andrew Ng机器学习算法入门((七):特征选择和多项式回归

    特征选择 还是回归到房价的问题.在最开始的问题中,我们假设房价与房屋面积有关,那么最开始对房价预测的时候,回归方程可能如下所示: 其中frontage表示的房子的长,depth表示的是房子的宽. 但长 ...

  9. Andrew Ng机器学习算法入门((五):矩阵和向量

    矩阵定义 数学上,一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列 使用Aij来获取矩阵中第i行j列的数据 向量的定义 向量就是n行1列的特殊矩阵 由于向量仅仅只有1行,那么通过一个变量i来指定获 ...

随机推荐

  1. android分析之消息处理

    前序:每个APP对应一个进程,该进程内有一个ActivityThread的线程,称为主线程(即UI主线程),此外,还有其他线程,这个再论. android的消息系统分析. 每个Thread只对应一个L ...

  2. IntelliJ IDEA安装lombok

    1. 搜索Plugins 点击下方的Browse repositories.. 2.点击安装,重新启动

  3. CentOS离线安装Nginx

    在医院搭建项目环境时,因为医院通常都是内网的,访问不了外网,所以很多服务都得通过离线的方式安装,下面讲讲CentOs系统中如何离线安装Nginx. 安装准备 Nginx离线安装依赖gcc.g++环境, ...

  4. CUDA Cudnn pytorch 安装及错误 RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED解决

    看我结论,大家试试看最后装pytorch看行不行,不行就去冲了PyTorch   /Doge ubuntu 20.04 下安装CUDA,参考这个博主写的,先看显卡支持的最高CUDA版本,之后找一个较新 ...

  5. JPEG解码——(6)IDCT逆离散余弦变换

    本篇是该系列的第六篇,承接上篇IZigZag变换,介绍接下来的一个步骤--逆离散余弦变换,即逆零偏置前的一个步骤. 该步骤比较偏理论,其业务是对IZigZag变换后的数据,再进一步的处理,使其恢复DC ...

  6. SCIP:构造数据抽象--数据结构中队列与树的解释

    现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示的对象.不应该在这里停滞不前,有许多操作可以应用于这些符号,而根本不必考虑它们到底代表着什么东西. --Hermann Weyi <思维的 ...

  7. python工业互联网应用实战11—客户端UI

    这个章节我们将演示用户端界面的开发,当前演示界面还是采用先实现基本功能再逐步完善的"敏捷"模式.首先聚焦在功能逻辑方面实现普通用户与系统的交互,普通用户通过url能查看到当前任务的 ...

  8. 一文简述JAVA内部类和异常

    内部类和异常 内部类 在一个类的内部定义的一个类,例如,A类中定义了一个B类,则B类相对于A类就是内部类,而A类相对于B类就是外部类 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类 pub ...

  9. docker安装mysql5.6镜像并进行主从配置

    docker安装mysql镜像并进行主从配置 1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像 docker pull daocloud.io/li ...

  10. Go-16-map

    map的value可以是任何数据类型.map和切片一样,也是一种引用类型. map声明: (1)使用var关键字定义map var 变量名 map[key类型] value 类型 (2)使用make( ...