zoukankan      html  css  js  c++  java
  • 李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent

    引言:

    这个系列的笔记是台大李宏毅老师机器学习的课程笔记
    视频链接(bilibili):李宏毅机器学习(2017)
    另外已经有有心的同学做了速记并更新在github上:李宏毅机器学习笔记(LeeML-Notes)

    很久都没有用高数及线性代数的知识,很多都生疏了,这节课有很多的数学公式及概念,建议先看一下简书上的这篇介绍梯度及梯度下降法的文章深入浅出--梯度下降法及其实现,真的是深入浅出,好评如潮。

    这里需要知道的是:

    • 什么是梯度?
    • 为什么要用梯度下降法?

    一、什么是梯度

    梯度是微积分中一个很重要的概念,梯度的意义在于:

    • 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
    • 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向

    二、为什么要用梯度下降法?

    机器学习的目的是根据现有数据集,预测未知数据的解。首先制定预测函数f*, 其次根据预测函数制定出合理的损失函数,损失函数的意义在于如果它的值取得最小值,那么认为原来的预测函数拟合训练集数据拟合的最好。所以求出损失函数的最小值就很关键。而根据上面梯度的概念,梯度的负方向是函数值下降的方向,沿着梯度下降的方向就可以找到损失函数取最小值的解。

    三、学习率的设定

    图1
    学习率设置分以下几种情况:

    • 非常大:导致损失突然变得非常大,无法收敛
    • 较大:损失收敛在比较的值上
    • 较小:损失虽然一直在减小,但速度很慢
    • 正好:损失逐渐减小,最终收敛在一个比较小的值上

    调节学习率的一般思想:

    • 在一开始学习率取较大值,这样便于更加快速到达最低点
    • 慢慢地学习率取值逐渐缩小,这样会避免学习率取值过大从而错过最低点

    自适应调节学习率的方法:

    • Adagrad

    四、Stochastic gradient decent(SGD)随机梯度下降

    相比梯度下降法遍历所有数据,SGD可以随机选取某一个样本计算损失后然后更新梯度,提高训练速度,但不一定可以得到全局最优解。
    博客园上一篇文章写得比较清楚 [Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD

    五、Feature scaling 特征缩放/归一化

    为什么要进行特征缩放?
    如果样本的取值范围过大,在应用梯度下降算法寻找全局最小值的时候,损失函数需要花费巨大的代价。进行缩放后,多维特征将具有相近的尺度,这将帮助梯度下降算法更快地收敛。
    很多文章都拿吴恩达的课程中图来举例:
    图2 归一化之前的等高线图
    图3 归一化之后的等高线图
    图2
    图3

  • 相关阅读:
    ASP.Net软件工程师基础(四)
    ASP.Net软件工程师基础(三)
    ASP.Net软件工程师基础(二)
    ASP.Net软件工程师基础(一)
    SVN小小用法(一)svn服务器搭建
    必须声明标量变量
    用户 NT AUTHORITYNETWORK SERVICE 登录失败
    winmail安装完成后,SMTP/POP3/ADMIN/HTTP/IMAP/LDAP服务不能启动?
    CF-798C
    CF-798B
  • 原文地址:https://www.cnblogs.com/leogoforit/p/12611677.html
Copyright © 2011-2022 走看看