1 什么是梯度下降法
经常在机器学习中的优化问题中看到一个算法,即梯度下降法,那到底什么是梯度下降法呢?

维基百科给出的定义是梯度下降法(Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。

额,问题又来了,什么是梯度?为了避免各种复杂的说辞,咱们可以这样简单理解,在单变量的实值函数的情况,梯度就是导数,或者,对于一个线性函数,也就是线的斜率。

1.1 梯度下降法示例

举个形象的例子吧,比如当我们要做一个房屋价值的评估系统,那都有哪些因素决定或影响房屋的价值呢?比如说面积、房子的大小(几室几厅)、地段、朝向等等,这些影响房屋价值的变量被称为特征(feature)。在这里,为了简单,我们假定房屋只由一个变量影响,那就是房屋的面积。

假设有一个房屋销售的数据如下:
面积(m^2)  销售价钱(万元)
123            250
150            320
87              160
102            220
…               …

插句题外话,顺便吐下槽,这套房屋价格数据在五年前可能还能买到帝都5环左右的房子,但现在只能买到二线城市的房屋了。

我们可以做出一个图,x轴是房屋的面积。y轴是房屋的售价,如下:

如果来了一个新的房子/面积,假设在房屋销售价格的记录中没有的,我们怎么办呢?

我们可以用一条曲线去尽量准的拟合这些数据,然后如果有新的输入面积,我们可以在将曲线上这个点对应的值返回。如果用一条直线去拟合房屋价格数据,可能如下图这个样子:

而图中绿色的点就是我们想要预测的点。

而图中绿色的点就是我们想要预测的点。

为了数学建模,首先给出一些概念和常用的符号。

房屋销售记录表 – 训练集(training set)或者训练数据(training data), 是我们流程中的输入数据,一般称为x
房屋销售价钱 – 输出数据,一般称为y
拟合的函数(或者称为假设或者模型),一般写做 y = h(x)
训练数据的条目数(#training set), 一条训练数据是由一对输入数据和输出数据组成的
输入数据的维度(特征的个数,#features),n

然后便是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。

我们用X1,X2..Xn 去描述feature里面的分量,比如x1=房间的面积,x2=房间的朝向等等,我们可以做出一个估计函数:

θ在这儿称为参数,在这儿的意思是调整feature中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。

如果我们令X0 = 1,就可以用向量的方式来表示了:

我们程序也需要一个机制去评估我们θ是否比较好,所以说需要对我们做出的h函数进行评估,一般这个进行评估的函数称为损失函数(loss function),描述h函数不好的程度,这里我们称这个函数为J函数。

换言之,我们把对x(i)的估计值与真实值y(i)差的平方和作为损失函数,前面乘上的系数1/2是为了方便求导(且在求导的时候,这个系数会消掉)。

如何调整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一种完全是数学描述的方法,另外一种就是梯度下降法。

1.2 梯度下降算法流程

梯度下降法的算法流程如下:
1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。

为了描述的更清楚,给出下面的图:

这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值,我们需要的是,能够让J(θ)的值尽量的低,也就是达到深蓝色的部分(让误差/损失最小嘛)。θ0,θ1表示θ向量的两个维度。

在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。

然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如下图所示,算法的结束将是在J(θ)下降到无法继续下降为止。

当然,可能梯度下降的最终点并非是全局最小点,即也可能是一个局部最小点,如下图所示:

上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点。

下面我将用一个例子描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J:

下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。

一个很重要的地方值得注意的是,梯度是有方向的,对于一个向量θ,每一维分量θi都可以求出一个梯度的方向,我们就可以找到一个整体的方向,在变化的时候,我们就朝着下降最多的方向进行变化就可以达到一个最小点,不管它是局部的还是全局的。

用更简单的数学语言进行描述步骤2)是这样的:

12、说说梯度下降法相关推荐

  1. 机器学习入门(09)— 偏导数、梯度概念、梯度下降法理论和实现

    1. 偏导数概念 对于式 4-6 而言 式(4.6)有两个变量,求导数时有必要区分对哪个变量求导数,即对 x0 和 x1 两个变量中的哪一个求导数.另外,我们把这里讨论的有多个变量的函数的导数称为偏导 ...

  2. 线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现

    回归:在这类任务中,计算机程序需要对给定输入预测数值.为了解决这个任务,学习算法需要输出函数f:Rn→R.除了返回结果的形式不一样外,这类问题和分类问题是很像的.这类任务的一个示例是预测投保人的索赔金 ...

  3. 通俗易懂讲解梯度下降法!

    Datawhale干货 作者:知乎King James,伦敦国王大学 知乎 | https://zhuanlan.zhihu.com/p/335191534 前言:入门机器学习必须了解梯度下降法,虽然 ...

  4. 深入浅出--梯度下降法及其实现

    梯度下降的场景假设 梯度 梯度下降算法的数学解释 梯度下降算法的实例 梯度下降算法的实现 Further reading 本文将从一个下山的场景开始,先提出梯度下降算法的基本思想,进而从数学上解释梯度 ...

  5. 机器学习梯度下降法举例

    本文是参考Andrew Ng网上课程和别人总结的机器学习笔记,作为笔者学习的参考,笔者主要实现了一些程序问题. 持续更新中- 更新- 先以最为简单的例子举例,比如有一个函数为y=x2y=x^2y=x2 ...

  6. 线性回归最小二乘法和梯度下降法-详细

    原文: https://blog.csdn.net/y990041769/article/details/69567838 问题描述 首先我们定义问题,线性回归要解决的问题就是根据给出的数据学习出一个 ...

  7. 梯度下降法(一)入门

     梯度下降法(一)入门 2012-12-11 13:14 22981人阅读 评论(12) 收藏 举报 本文章已收录于: 分类: [算法](27) 作者同类文章X 版权声明:本文为博主原创文章,未经 ...

  8. 【数学与算法】步长一维搜索、梯度下降法、最速下降法、牛顿法

    更详细的推导,可以参考这篇博客:一维搜索.最速下降(梯度下降)与牛顿法(拟牛顿法) 1.求解最优步长的方法: f(x)f(x)f(x)可以理解为目标函数,损失函数.我们的目标是最小化这个损失函数,最小 ...

  9. 【深度学习的数学】2-11 用Excel体验梯度下降法(用python实现)

    梯度下降法是神经网络计算的基础,下面我们用python编程来体验它! 代码 # -*- coding: utf-8 -*- """ @File : 梯度下降法求函数最小值 ...

最新文章

  1. mysql 触发器编程_【mysql的编程专题】触发器
  2. python3 命令行参数
  3. 组件化的css-module
  4. python 将字节字符串转换成十六进制字符串
  5. Android升级butterknife,Android组件化开发中使用Butterknife的坑
  6. Oracle 创建表空间,用户,赋值(简装)
  7. 12.swift 元祖
  8. 使用Mysql执行事务实现模拟银行转账功能
  9. 怎样才能通过c语言二级考试,如何一次就通过全国计算机二级C语言考试,高分技巧四部曲...
  10. 南海滩饮食法——不饿的情况下快速减肥的法宝
  11. mysql查询男女平均年龄_mysql查询练习(三)
  12. WTL 自绘控件库 (CQSTreeView)
  13. Claus Hansen加入Entrust Datacard,担任亚太地区和日本销售副总裁
  14. ZipFile 解压多个.zip压缩文件
  15. html倒计时代码+微信可用,微信页面倒计时代码(解决safari不兼容date的问题)
  16. 有哪些靠谱的服务器安全软件?
  17. 简单聊一聊 Android App Bundle 的话题
  18. 用秦九昭公式计算多项式
  19. phpcms mysql设置_PHPCMS mysql优化教程_PHPCms教程
  20. 数码管驱动芯片+语音芯片的应用场景介绍,WT588E02B-24SS

热门文章

  1. 使用PageInfo分页工具类
  2. STC8H开发(十五): GPIO驱动Ci24R1无线模块
  3. 突发!字节跳动AI Lab总监李磊离职!加盟美国高校,曾为百度少帅科学家,交大ACM班成员...
  4. 计算机组成与结构——概述
  5. 离散数学练习,三人各司何职?理论+代码
  6. ubuntu云输入法ibus cloud pinyin
  7. 计算机类核心期刊审稿与发表周期,一般核心期刊的发刊周期有多长
  8. Tensorflow 笔记 Ⅺ——NLP 实现电影评论情感分析
  9. windows窗口分析,父窗口,子窗口,所有者窗口
  10. http中的scheme和小程序中的scheme