机器学习——梯度下降算法
文章目录
- 梯度下降算法
- 概念
- 前提条件
- 目标函数
- 训练集
- 训练步骤
- 代码表示
- 梯度下降的算法调优
- 总结
梯度下降算法
最优化算法在机器学习中是一种求解最合适的权重参数的算法,梯度下降算法就是其中的一种。
概念
梯度下降算法是一个最优化的算法,它是沿梯度下降的方向求解极小值。
前提条件
目标函数
使用梯度下降算法的第一个前提条件就是目标函数,即告诉梯度下降要求哪个函数的解,例如在线性回归方程中求解最小二乘法的公式:
这个公式在线性回归中的最终目的,就是求偏导取驻点最后得到θ的一个极小值。而在这里则是利用梯度下降算法去求得最小值。
训练集
这个目标函数和线性回归方程相比在分母处多了一个m。这个m是一个总的数据量,意味着是求多个数据之后的平均值。
第二个前提条件就是数据集,有了目标函数,还必须有数据支撑。只有有了大量的数据,机器才能够真正的掌握规律。
最终的目的就是求得使这个目标函数最小(或局部最小)的参数θ。
训练步骤
上图是一个梯度下降的模型。想要理解这个模型,可以假想一个人站在山的任意一点,想要以最快的速度下山。求解的步骤如下所示:
- 随机生成一个初始点:图中红色区域的点为初始点,对于不同的初始点,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
- 确定学习率:学习率即下降的幅度,可以理解为下山时每一步迈的大小。学习率的选取还是有一定要求的,步子迈的太大有可能不收敛,步子迈的太小速度太慢。
学习率的选择可以通过下图来说明:
假设从左边最高点开始,如果学习率刚刚合适,例如图中红线,就能顺利找到最低点;如学习率调整的太小,比如蓝色的线就会走的太慢,虽然也可以顺利找出最低点,但实际情况中可能等不及出结果;如果学习率稍大,可能会在上面震荡永远到达不了最低点;若是选取的非常大,比如黄色的线可能直接无法收敛,update参数时可能会发现损失函数越更新越大。
还有一点值得注意,学习率并不是一成不变的,可能刚开始时候大一些,后边不断调小。
- 输入数据集,确定一个向下的方向,并更新θ。
数据集的输入一般有三种:批量梯度下降(每调整一小步,带入所有的数据,这样的训练应该是最精确的,但是往往速度奇慢无比)、随机梯度下降(每次随机获取数据集中的一个值,速度很快但是不够精确)、小批量随机梯度下降(前两者的中间产物,速度相对较快结果也相对精确)。
- 训练终止:当损失函数达到预设值的一个值,或者收敛不明显时,可以终止训练。得到的值就是梯度下降算法的最小值。
代码表示
梯度下降的算法用伪码表示为:
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.常用的梯度下降法 4.梯度下降算法调优 5.其他优化算法对比 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降算法(Gradient D ...
- 机器学习/梯度下降算法
当在现实生活中的遇到问题时,我们总是希望找到最佳的解决方案.制造软件产品也是一样的道理,最优化的程序才是最理想的产品. 最优化意味着获得最佳输出.它既是一个数学的重要分支,也在现实生活中有着重要的作用 ...
- 用Python学习吴恩达机器学习——梯度下降算法理论篇
开篇词:(CSDN专供) 欢迎阅读我的文章,本文起先是在B站上进行投稿,一开始是采用吴恩达机器学习2012年版的,目前已经出了十二期了.现在我决定将我摸索出来的学习笔记在各个平台上进行连载,保证同时更 ...
- 机器学习梯度下降法应用波士顿房价预测
目录 1 线性回归api介绍 小结 2 波士顿房价预测 2.1 案例背景介绍 2.2 案例分析 2.3 回归性能评估 2.4 代码实现 2.4.1 正规方程 2.4.2 梯度下降法 2.5 小结 1 ...
- 机器学习中,梯度下降算法的问题引入
来源 | 动画讲编程 今天讲解的内容是梯度下降算法. 梯度下降算法在机器学习中的应用十分广泛,该算法的最主要目的是通过迭代的方法找到目标函数的最小值,经常用来解决线性回归和逻辑回归等相关问题.本节课主 ...
- 一文清晰讲解机器学习中梯度下降算法(包括其变式算法)
本篇文章向大家介绍梯度下降(Gradient Descent)这一特殊的优化技术,我们在机器学习中会频繁用到. 前言 无论是要解决现实生活中的难题,还是要创建一款新的软件产品,我们最终的目标都是使其达 ...
- python梯度下降法实现线性回归_【机器学习】线性回归——多变量向量化梯度下降算法实现(Python版)...
[向量化] 单一变量的线性回归函数,我们将其假设为:hθ(χ)=θ0+θ1χh_\theta(\chi)=\theta_0+\theta_1\chihθ(χ)=θ0+θ1χ但是如果我们的变量个数 ...
- ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ
ng机器学习视频笔记(二) --梯度下降算法解释以及求解θ (转载请附上本文链接--linhxx) 一.解释梯度算法 梯度算法公式以及简化的代价函数图,如上图所示. 1)偏导数 由上图可知,在a点 ...
- 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)...
本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...
最新文章
- 欢迎来到OpenGL的世界
- Gartner发布2021年数字商务技术成熟度曲线,重点关注四项技术
- 7-34 红色警报 (10 分)(结构体并查集)
- 如何在Shell脚本中漂亮地打印JSON?
- python django开发api_基于Django框架开发Restful api
- iOS开发中,应用内直接跳转到Appstore
- 安卓java游戏模拟器_java游戏模拟器安卓版下载
- 施乐7855维修手册中文版_GE苏伊士MK-2EPHARM EDI模块维修、清洗、注意事项
- linux shell脚本教程
- 什么是Smartdrv程序
- Hello World · GitHub 指南
- 【省下5w】uniapp使用“天地图”地图API开发 - 免费地图组件
- 计算机专业的英语六级很难过,英语六级多少分算过 通过率高吗
- VTK/OpenGL中球坐标转直角坐标
- Linux源码安装pgadmin4,如何在 Ubuntu 18.04 上安装 pgAdmin4
- 网络安全——常见的几种WEB攻击:
- 一维数组——折半查找法
- LessLyrics 苹果Mac歌词软件 iTunes歌词助手
- python输出为什么会有b_【已解决】为什么Python打印数据显示为b‘XXX’格式
- 70-webApp打包:将网站利用hbuilder打包为安卓app
热门文章
- 【PC工具】N个直播录屏相关软件,手机投屏电脑,电脑显示手机摄像头图像,必须好用无广告!...
- Python的输入指令、格式化输出、基本运算符
- HDR 拍照模式的原理,实现及应用
- category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
- javascript(arguments)
- 养成一个习惯需要多久?
- fragments lifecycle
- SVN中update to revision与revert to revision的区别
- linux tr 字符串,linux tr命令-转换或删除输入的字符的
- php clownfish,Python实现的金山快盘的签到程序