在上一节(线性回归)中介绍,在线性回归中参数值θ\thetaθ是不一定可以求出的,但是可以通过梯度下降的方式可求。

在微积分里面,对多元函数的参数求偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y)f(x,y)f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f∂x,∂f∂y)T(\frac {\partial f}{\partial x},\frac {\partial f}{\partial y})^T(∂x∂f​,∂y∂f​)T,简称grad f(x,y)或者∇f(x,y)\nabla f(x,y)∇f(x,y)。对于在点(x0,y0)(x_0,y_0)(x0​,y0​)的具体梯度向量就是(∂f∂x0,∂f∂y0)T(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(∂x0​∂f​,∂y0​∂f​)T.或者∇f(x0,y0)\nabla f(x_0,y_0)∇f(x0​,y0​),如果是3个参数的向量梯度,就是(∂f∂x,∂f∂y,∂f∂z)T(\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y},\frac{\partial f}{\partial z})^T(∂x∂f​,∂y∂f​,∂z∂f​)T,以此类推。

那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y)f(x,y)f(x,y),在点(x0,y0)(x_0,y_0)(x0​,y0​),沿着梯度向量的方向就是(∂f∂x0,∂f∂y0)T(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(∂x0​∂f​,∂y0​∂f​)T的方向是f(x,y)f(x,y)f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 −(∂f∂x0,∂f∂y0)T-(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T−(∂x0​∂f​,∂y0​∂f​)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

假设目标函数J(θ0,θ1)=12m∑i=1m(hθ(x(i)−y(i))2)J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)} - y^{(i)})^2)J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(x(i)−y(i))2)。

为什么要除以样本个数mmm?
假如有1万个样本,那么会得到一个目标函数J(θ)1J(\theta)_1J(θ)1​,10万个样本,得到一个目标函数J(θ)2J(\theta)_2J(θ)2​,那么10万个样本的损失值一定比1万个样本的损失值大,但不能说10万个样本的模型不好,因此需要算一个平均值1m\frac{1}{m}m1​。

我们的目标就是要寻找最低点,什么样的参数能使得目标函数达到最低点?


当开始的时候,是一个随机点:

  1. 找到当前最合适的方向
  2. 走一小步,如果走快了就“跌倒”了
  3. 按照方向与步伐去更新参数

批量梯度下降GD

在上面的说法中,要综合考虑所有的样本,每个样本都需要参与计算,这个计算量是非常大的,很难进行迭代,虽然很容易得到最优解。
∂f∂θi=−1m∑i=1m(yi−hθ(xi))xji\frac {\partial f}{\partial \theta_i}=-\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i))x_j^i ∂θi​∂f​=−m1​i=1∑m​(yi−hθ​(xi))xji​

θj′=θj+1m∑i=1m(yi−hθ(xi)xji)\theta_j^\prime=\theta_j+\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i)x^i_j) θj′​=θj​+m1​i=1∑m​(yi−hθ​(xi)xji​)

随机梯度下降SGD

每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向,无法判断好坏。
θj′=θj+(yi−hθ(xi))xji\theta_j^\prime=\theta_j+(y^i-h_\theta(x^i))x_j^i θj′​=θj​+(yi−hθ​(xi))xji​

小批量梯度下降

每次更新选择一小部分数据来算,比较实用。首先打乱顺序,然后每次拿10个数据
θj:=θj−α110∑k=ii+9(hθ(x(k)−y(k)))xj(k)\theta_j :=\theta_j-\alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_\theta(x^{(k)}-y^{(k)}))x_j^{(k)} θj​:=θj​−α101​k=i∑i+9​(hθ​(x(k)−y(k)))xj(k)​

机器学习(二)梯度下降相关推荐

  1. 《机器学习》 梯度下降

     <机器学习> 梯度下降 2012-09-21 17:46 2712人阅读 评论(0) 收藏 举报 matrixc 参照<机器学习>这本书的第4.4.3节. 一.解决目标及 ...

  2. 机器学习中梯度下降法和牛顿法的比较

    在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似 ...

  3. 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降

    一.多维特征 前面所述的房价预测的线性模型,只用到了一维特征,即size,房屋尺寸,要用这个特征量来预测房屋价格: 当数据集的信息不止一种时,便有了多维特征,比如: 上图有四个X,即四个特征,来预测房 ...

  4. Gradient Descen-univariate(吴恩达机器学习:梯度下降在线性模型的应用)

    梯度下降算法在Linear Regression中的应用 文章目录 梯度下降算法在Linear Regression中的应用 单变量(univariate) 题目:预测利润 处理Training se ...

  5. 吴恩达机器学习笔记-梯度下降

    通过前面的文章我们现在已经有了假设函数$h_\theta(x)$并知道如何度量这个函数与数据的符合程度,即代价函数$J(\theta_0,\theta_1)$取得最小值.那么现在要做的,就是如何去预估 ...

  6. 【机器学习】梯度下降的Python实现

    作者 | Vagif Aliyev 编译 | VK 来源 | Towards Data Science 梯度下降是数据科学的基础,无论是深度学习还是机器学习.对梯度下降原理的深入了解一定会对你今后的工 ...

  7. 机器学习基础--梯度下降(Gradient Descent)

    Gradient Descent Review 前面预测宝可梦cp值的例子里,已经初步介绍了Gradient Descent的用法: In step 3,​ we have to solve the ...

  8. 唐宇迪​​机器学习实战——梯度下降求解逻辑回归(理论基础+源代码实现)

    问题的提出 符号问题,这里的lg就是指log2,你的理解是正确的!在计算机科学中有些符号的使用跟我们在数学中使用的有区别.比如有时候log用来表示自然对数(以e为底数).希望对你有帮助! 首先计算机科 ...

  9. 机器学习-批量梯度下降(BGD)

    前言 本文主要介绍批量梯度下降与相关代码. 主要流程: 计算梯度,批量累计求和,更新参数,计算前后迭代损失差,看是否小于阈值,True则break,False更新当前error并进入下一轮循环. 提示 ...

最新文章

  1. parsing:NLP之chart parser句法分析器
  2. python pip whl 安装
  3. 并行博弈树搜索算法-第6篇 百花齐放:各种并行Alpha-Beta算法
  4. boost::intrusive::smart_ptr用法的测试程序
  5. React-Native学习笔记
  6. SAP ABAP Platform 1909最新版的 docker 镜像
  7. idea 一直在build_CEO季度表彰团队| 我们一直在做最酷的事
  8. 大数据集群搭建之hadoop、tomcat、jdk等工具的安装(三)
  9. MySQL快速生成连续整数
  10. 【Project3】【web.xml分析】
  11. DVWA全级别详细通关教程
  12. 多旋翼无人机飞控系统设计之详细设计方案
  13. 专用计算机有,什么计算机是内嵌在其他设备中的专用计算机
  14. 难解次级债内乱 美国众议院反咬中国金融开放
  15. 德州大学达拉斯分校计算机科学,德克萨斯大学达拉斯分校排名
  16. 光环效应引发的认知误区
  17. iPhone铃声制作软件:iRingg for Mac
  18. 浅谈傅里叶——5. 短时傅里叶的缺点与卷积的基本概念
  19. 用PDFPrint进行PDF文件的批量打印
  20. Jetsonnano的环境配置--ros环境

热门文章

  1. Hibernate中常见的异常
  2. Mybatis if test 中int integer判断非空的坑
  3. php安装pcntl扩展
  4. 网页静态化和网页伪静态化之间的区别与选择
  5. PHP获取表单值--同时获取下拉框的Value和Text值
  6. android camera viewport rect,Unity 实现屏幕抖动效果(通过Camera Viewport Rect)
  7. oracle数据库sid已存在,Oracle SID在本机下已经存在,请指定一个不同的SID”的解决方法...
  8. oracle书写高质量sql,干货!SQL性能优化,书写高质量SQL语句
  9. java 最大子数组_求一个数组中子数组的最大和算法(Java实现)
  10. visual studio学习python_一步一步学Python3(小学生也适用) 第三篇: Visual Studio Code