引言:

这个系列的笔记是台大李宏毅老师机器学习的课程笔记

视频链接(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的更多相关文章

  1. 李宏毅老师机器学习课程笔记_ML Lecture 2: Where does the error come from?

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  2. 李宏毅老师机器学习课程笔记_ML Lecture 1: ML Lecture 1: Regression - Demo

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  3. 李宏毅老师机器学习课程笔记_ML Lecture 1: 回归案例研究

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  4. 李宏毅老师机器学习课程笔记_ML Lecture 0-2: Why we need to learn machine learning?

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  5. 李宏毅老师机器学习课程笔记_ML Lecture 0-1: Introduction of Machine Learning

    引言: 最近开始学习"机器学习",早就听说祖国宝岛的李宏毅老师的大名,一直没有时间看他的系列课程.今天听了一课,感觉非常棒,通俗易懂,而又能够抓住重点,中间还能加上一些很有趣的例子 ...

  6. 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent

    最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...

  7. Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  8. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  9. 【读书笔记与思考】Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

随机推荐

  1. LeetCode 225题用队列实现栈(Implement Stack using Queues) Java语言求解

    链接 https://leetcode-cn.com/problems/implement-stack-using-queues/ 思路 首先演示push()操作:将元素依次进入队1,进入时用top元 ...

  2. ASP制作建议留言板

    <html>  <head>  <meta http-equiv="Content-Type" content="text/html;cha ...

  3. python爬虫-提取网页数据的三种武器

    常用的提取网页数据的工具有三种xpath.css选择器.正则表达式 1.xpath 1.1在python中使用xpath必须要下载lxml模块: lxml官方文档 :https://lxml.de/i ...

  4. python基础-流程控制语句

    所谓流程控制,就是在程序里面设定一些条件判断语句,满足哪条,就执行哪条 #if 单分支 if 条件: 满足条件后执行的代码 #例子 > : print()#结果为666 双分支 if 条件: 满 ...

  5. java集合-set

    #java集合-set Map用于存储key-value的映射,其中key的值是不能重复的.并且还需要正确的覆写equals方法和hashCode方法 如果我们只需要存储不重复的key,并不需要存储对 ...

  6. 这么香的Chrome插件,你都安装了吗?

    工欲善其事必先利其器,今天长话短说,介绍13个敏捷.高效的Chrome插件 根据使用方式,本人将其划分为三大类: 开发者工具 日常效率工具类 浏览器管理类 开发者工具 1. Web Developer ...

  7. 学习使用Guava Cache

    官方文档:https://github.com/google/guava/wiki/CachesExplained 目录 一.guava cache介绍 二.快速入门 2.1.引入依赖 2.2.第一个 ...

  8. pycharm专业版激活破解(亲测有效)

    完成破解步骤,亲测有效! 1.打开路径,修改hosts文件:C:\Windows\System32\drivers\etc 找到hosts文件打开 最后一行添加这行代码:   0.0.0.0 acco ...

  9. Spring Cloud Gateway 实现Token校验

    在我看来,在某些场景下,网关就像是一个公共方法,把项目中的都要用到的一些功能提出来,抽象成一个服务.比如,我们可以在业务网关上做日志收集.Token校验等等,当然这么理解很狭隘,因为网关的能力远不止如 ...

  10. yuchuan_Linux_C 编程之七系统IO函数

    一.整体大纲 二. 系统IO函数 1. 一些概念    文件描述符     PCB     C库函的IO缓冲区 1) 文件描述符            int 类型            一个进程最多 ...