李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent
引言:
这个系列的笔记是台大李宏毅老师机器学习的课程笔记
视频链接(bilibili):李宏毅机器学习(2017)
另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML-Notes)
很久都没有用高数及线性代数的知识,很多都生疏了,这节课有很多的数学公式及概念,建议先看一下简书上的这篇介绍梯度及梯度下降法的文章深入浅出--梯度下降法及其实现,真的是深入浅出,好评如潮。
这里需要知道的是:
- 什么是梯度?
- 为什么要用梯度下降法?
一、什么是梯度
梯度是微积分中一个很重要的概念,梯度的意义在于:
- 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
- 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向
二、为什么要用梯度下降法?
机器学习的目的是根据现有数据集,预测未知数据的解。首先制定预测函数f*, 其次根据预测函数制定出合理的损失函数,损失函数的意义在于如果它的值取得最小值,那么认为原来的预测函数拟合训练集数据拟合的最好。所以求出损失函数的最小值就很关键。而根据上面梯度的概念,梯度的负方向是函数值下降的方向,沿着梯度下降的方向就可以找到损失函数取最小值的解。
三、学习率的设定

学习率设置分以下几种情况:
- 非常大:导致损失突然变得非常大,无法收敛
- 较大:损失收敛在比较的值上
- 较小:损失虽然一直在减小,但速度很慢
- 正好:损失逐渐减小,最终收敛在一个比较小的值上
调节学习率的一般思想:
- 在一开始学习率取较大值,这样便于更加快速到达最低点
- 慢慢地学习率取值逐渐缩小,这样会避免学习率取值过大从而错过最低点
自适应调节学习率的方法:
- Adagrad
四、Stochastic gradient decent(SGD)随机梯度下降
相比梯度下降法遍历所有数据,SGD可以随机选取某一个样本计算损失后然后更新梯度,提高训练速度,但不一定可以得到全局最优解。
博客园上一篇文章写得比较清楚 [Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD
五、Feature scaling 特征缩放/归一化
为什么要进行特征缩放?
如果样本的取值范围过大,在应用梯度下降算法寻找全局最小值的时候,损失函数需要花费巨大的代价。进行缩放后,多维特征将具有相近的尺度,这将帮助梯度下降算法更快地收敛。
很多文章都拿吴恩达的课程中图来举例:
图2 归一化之前的等高线图
图3 归一化之后的等高线图


李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent的更多相关文章
- 李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-2: Why we need to learn machine learning?
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning
引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...
- 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent
最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...
- Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...
- Andrew Ng机器学习课程笔记(四)之神经网络
Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...
- 【读书笔记与思考】Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...
随机推荐
- 等效燃油消耗ECMS与庞德里亚金最小值原理PMP中协同状态的关系
今儿阅读了一篇文献——<车联网环境下并联混合动力客车控制策略优化研究>,是北理的博士所写的,内容比较翔实.主要是里面的关于ECMS和庞德里亚金最小值原理(PMP)的关系推导很让人印象深刻, ...
- eggjs+vue+nginx配置
安装node https://github.com/nodesource/distributions#installation-instructions-1 注意使用No root privilege ...
- 基于Blazor写一个简单的五子棋游戏
写这个五子棋游戏,其实主要目的是想尝试一下微软新作Blazor.Blazor对于那些搞.NET的程序员,又想做一些前端工作,真的挺友好,不用一句JS就可搞定前端交互,美哉.现在已经有很流行的前端框架, ...
- snmp服务配置
snmp服务配置 1. 检查是否安装 snmp rpm -qa |grep snmp 如未安装 rpm –ivh 加包名 (net-snmp-utils 为各种工具包) 2.服务开启 service ...
- Grafana使用总结
最近工作需求学习了下grafana,根据创建的几个dashboard简要记录下创建过程. 本次使用了grafana做可视化展示,data source使用的rds是postgresql和时序数据库in ...
- JavaScript sort() 对json进行排序(数组)
function up(x,y){//升序 return x[val.prop] - y[val.prop] } function down(x,y){//降序 return y[val.prop] ...
- vuex和localStorage,全局变量的区别
vuex是状态管理,是为了解决跨组件之间数据共享问题的,一个组件的数据变化会映射到使用这个数据的其他组件当中.如果刷新页面,之前存储的vuex数据全部都会被初始化掉. localStorage是H5提 ...
- 简单的编写java的helloWord
那么在上一章章节 http://www.cnblogs.com/langjunnan/p/6814641.html 我们简单的俩了解了一下什么是java和配置编写java的环境,本章呢我们学习如何编写 ...
- 关于使用ajax导出excel问题
最近有个需求是在页面导入文件,后端进行处理后返回处理结果的excel,前端使用的是ajax.我最开始的做法是:在原有代码后加一段导出excel的代码,结果代码能正常运行,但页面始终没有返回我需要的ex ...
- jQuery插件select2跨域设置xhrFields参数
ajax跨越时默认不带cookie,如果需要带cookie调用,需要设置参数 xhrFields: { withCredentials: true },如: $.ajax({url : "h ...