文章目录

  • 梯度下降算法
    • 概念
    • 前提条件
      • 目标函数
      • 训练集
    • 训练步骤
    • 代码表示
    • 梯度下降的算法调优
    • 总结

梯度下降算法

最优化算法在机器学习中是一种求解最合适的权重参数的算法,梯度下降算法就是其中的一种。

概念

梯度下降算法是一个最优化的算法,它是沿梯度下降的方向求解极小值。

前提条件

目标函数

使用梯度下降算法的第一个前提条件就是目标函数,即告诉梯度下降要求哪个函数的解,例如在线性回归方程中求解最小二乘法的公式:

这个公式在线性回归中的最终目的,就是求偏导取驻点最后得到θ的一个极小值。而在这里则是利用梯度下降算法去求得最小值。

训练集

这个目标函数和线性回归方程相比在分母处多了一个m。这个m是一个总的数据量,意味着是求多个数据之后的平均值。

第二个前提条件就是数据集,有了目标函数,还必须有数据支撑。只有有了大量的数据,机器才能够真正的掌握规律。

最终的目的就是求得使这个目标函数最小(或局部最小)的参数θ。

训练步骤

上图是一个梯度下降的模型。想要理解这个模型,可以假想一个人站在山的任意一点,想要以最快的速度下山。求解的步骤如下所示:

  1. 随机生成一个初始点:图中红色区域的点为初始点,对于不同的初始点,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
  2. 确定学习率:学习率即下降的幅度,可以理解为下山时每一步迈的大小。学习率的选取还是有一定要求的,步子迈的太大有可能不收敛,步子迈的太小速度太慢。

学习率的选择可以通过下图来说明:


假设从左边最高点开始,如果学习率刚刚合适,例如图中红线,就能顺利找到最低点;如学习率调整的太小,比如蓝色的线就会走的太慢,虽然也可以顺利找出最低点,但实际情况中可能等不及出结果;如果学习率稍大,可能会在上面震荡永远到达不了最低点;若是选取的非常大,比如黄色的线可能直接无法收敛,update参数时可能会发现损失函数越更新越大。

还有一点值得注意,学习率并不是一成不变的,可能刚开始时候大一些,后边不断调小。

  1. 输入数据集,确定一个向下的方向,并更新θ。

数据集的输入一般有三种:批量梯度下降(每调整一小步,带入所有的数据,这样的训练应该是最精确的,但是往往速度奇慢无比)、随机梯度下降(每次随机获取数据集中的一个值,速度很快但是不够精确)、小批量随机梯度下降(前两者的中间产物,速度相对较快结果也相对精确)。

  1. 训练终止:当损失函数达到预设值的一个值,或者收敛不明显时,可以终止训练。得到的值就是梯度下降算法的最小值。

代码表示

梯度下降的算法用伪码表示为:

repeat until convergence{θj := θj - α * δ/δθj * J(θ0, θ1)
}(simultaneously update j =0 and j = 1)temp0 = θ0 - α * δ/δθ0 * J(θ0)
temp1 = θ1 - α * δ/δθ1 * J(θ1)θ0 := temp0
θ1 := temp1

α代表了学习率,θj表示为有多个特征,这里是对每一个特征求偏导求出分别对应的参数。多个特征需要分别各自训练。

以上就是整个梯度下降算法的基本知识。

梯度下降的算法调优

  1. 算法的步长选择
  2. 算法参数的初始值选择
  3. 归一化

在前文描述的算法中,步长的实际取值取决于数据样本,可以多取一些分别运行比较迭代效果。

初始值不同,获得的最小值也有可能不同,当然如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次不同初始值运行算法,使关键损失函数取最小值、选择损失函数去最小值的初值。

由于样本不同特征的取值范围不一样,可能导致迭代速度很慢,为了减少特征取值的影响,可以对特征数据归一化求出期望和标准差,然后转化成期望和标准差的比值,可以加快迭代速度。

总结

梯度下降法的含义是通过当前的梯度方向寻找新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解。在其算法过程中,只需要求解损失函数的一阶导数,计算成本很小。相比于最小二乘法,梯度下降需要选择步长,而最小二乘法不需要。同时,最小二乘法是计算解析解,如果样本量不算很大,且存在解析解,最小二乘法才会占有优势。

机器学习——梯度下降算法相关推荐

  1. 机器学习-梯度下降算法原理及公式推导

    目录 1.梯度下降直观理解解释 2.算法上的解释 3.常用的梯度下降法 4.梯度下降算法调优 5.其他优化算法对比 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降算法(Gradient D ...

  2. 机器学习/梯度下降算法

    当在现实生活中的遇到问题时,我们总是希望找到最佳的解决方案.制造软件产品也是一样的道理,最优化的程序才是最理想的产品. 最优化意味着获得最佳输出.它既是一个数学的重要分支,也在现实生活中有着重要的作用 ...

  3. 用Python学习吴恩达机器学习——梯度下降算法理论篇

    开篇词:(CSDN专供) 欢迎阅读我的文章,本文起先是在B站上进行投稿,一开始是采用吴恩达机器学习2012年版的,目前已经出了十二期了.现在我决定将我摸索出来的学习笔记在各个平台上进行连载,保证同时更 ...

  4. 机器学习梯度下降法应用波士顿房价预测

    目录 1 线性回归api介绍 小结 2 波士顿房价预测 2.1 案例背景介绍 2.2 案例分析 2.3 回归性能评估 2.4 代码实现 2.4.1 正规方程 2.4.2 梯度下降法 2.5 小结 1 ...

  5. 机器学习中,梯度下降算法的问题引入

    来源 | 动画讲编程 今天讲解的内容是梯度下降算法. 梯度下降算法在机器学习中的应用十分广泛,该算法的最主要目的是通过迭代的方法找到目标函数的最小值,经常用来解决线性回归和逻辑回归等相关问题.本节课主 ...

  6. 一文清晰讲解机器学习中梯度下降算法(包括其变式算法)

    本篇文章向大家介绍梯度下降(Gradient Descent)这一特殊的优化技术,我们在机器学习中会频繁用到. 前言 无论是要解决现实生活中的难题,还是要创建一款新的软件产品,我们最终的目标都是使其达 ...

  7. python梯度下降法实现线性回归_【机器学习】线性回归——多变量向量化梯度下降算法实现(Python版)...

    [向量化] 单一变量的线性回归函数,我们将其假设为:hθ(χ)=θ0+θ1χh_\theta(\chi)=\theta_0+\theta_1\chihθ​(χ)=θ0​+θ1​χ但是如果我们的变量个数 ...

  8. ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ

    ng机器学习视频笔记(二) --梯度下降算法解释以及求解θ (转载请附上本文链接--linhxx)   一.解释梯度算法 梯度算法公式以及简化的代价函数图,如上图所示. 1)偏导数 由上图可知,在a点 ...

  9. 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)...

    本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...

最新文章

  1. 欢迎来到OpenGL的世界
  2. Gartner发布2021年数字商务技术成熟度曲线,重点关注四项技术
  3. 7-34 红色警报 (10 分)(结构体并查集)
  4. 如何在Shell脚本中漂亮地打印JSON?
  5. python django开发api_基于Django框架开发Restful api
  6. iOS开发中,应用内直接跳转到Appstore
  7. 安卓java游戏模拟器_java游戏模拟器安卓版下载
  8. 施乐7855维修手册中文版_GE苏伊士MK-2EPHARM EDI模块维修、清洗、注意事项
  9. linux shell脚本教程
  10. 什么是Smartdrv程序
  11. Hello World · GitHub 指南
  12. 【省下5w】uniapp使用“天地图”地图API开发 - 免费地图组件
  13. 计算机专业的英语六级很难过,英语六级多少分算过 通过率高吗
  14. VTK/OpenGL中球坐标转直角坐标
  15. Linux源码安装pgadmin4,如何在 Ubuntu 18.04 上安装 pgAdmin4
  16. 网络安全——常见的几种WEB攻击:
  17. 一维数组——折半查找法
  18. LessLyrics 苹果Mac歌词软件 iTunes歌词助手
  19. python输出为什么会有b_【已解决】为什么Python打印数据显示为b‘XXX’格式
  20. 70-webApp打包:将网站利用hbuilder打包为安卓app

热门文章

  1. 【PC工具】N个直播录屏相关软件,手机投屏电脑,电脑显示手机摄像头图像,必须好用无广告!...
  2. Python的输入指令、格式化输出、基本运算符
  3. HDR 拍照模式的原理,实现及应用
  4. category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
  5. javascript(arguments)
  6. 养成一个习惯需要多久?
  7. fragments lifecycle
  8. SVN中update to revision与revert to revision的区别
  9. linux tr 字符串,linux tr命令-转换或删除输入的字符的
  10. php clownfish,Python实现的金山快盘的签到程序