机器学习中的数学笔记:微分学与梯度下降法

1.简介:数学在机器学习中的应用

模型建立与选择:对工程问题进行抽象和量化
• 涉及数学知识:综合运用微积分,线性代数,概率
统计以及组合数学的知识
• 例如:
o 各类深度模型中的网络结构与损失函数
o 支持向量机中的向量空间与度量
模型训练:
• 优化算法:高效稳定的对各类损失函数求极值
• 涉及数学知识:微积分以及优化理论

机器学习基本流程:

统计/清理数据
微积分/线性代数/概率论/组合数学
优化过程,选择参数,使损失函数min
观察数据
选择模型
训练调参
应用

2.微分学基本思想和方法

2.1 微分学的核心思想:函数逼近

1.逼近是人类探讨复杂问题时经常使用的一种手段,比如:
• 人均GDP:使用常数函数来逼近收入分布函数
• 平均速度:使用线性函数来逼近实际运动轨迹
• 年化收益率:使用指数函数来逼近收益函数

2.微分学的核心思想:用熟悉且简单的函数对复杂函数进行局部逼近

3.常用作逼近的简单函数包括:
• 线性函数:函数的一阶导数 y=kx+b
•多项式函数:泰勒级数 y=ax*x+bx+c

2.2 微积分的基础语言:极限论

2.2.1 极限的表述方式

在这里插入图片描述

2.2.2无穷小

在这里插入图片描述

2.2.3两边夹定理

在这里插入图片描述
由两边夹定理推导重要极限:
在一个圆中:存在sinx<x<tanx
同时除以x:
得到sinx/x < 1 < sinx/x*1/cosx
得到cosx< sinx/x <1
同时除以cosx:
得到1<=lim sinx/x <=1
得到重要极限:

2.2.4 重要极限

在这里插入图片描述

2.3 微分学的基本手法:求导数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 从线性逼近到多项式逼近:泰勒级数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 从低维到高维:多元函数的梯度

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.梯度下降法和牛顿法

3.1 随机梯度下降

在这里插入图片描述
在这里插入图片描述
梯度下降法:找到梯度为0的点(极小值点、极大值点鞍点),不论值的大小。

3.2 随机梯度下降的问题与挑战

在这里插入图片描述
引入:随机梯度下降法–解决梯度计算
梯度计算由于随机梯度下降法的引入,我们通常将梯度下降法分为三种类型:

  1. 批梯度下降法(GD)
    原始的梯度下降法
  2. 随机梯度下降法(SGD)
    每次梯度计算只使用一个样本
    • 避免在类似样本上计算梯度造成的冗余计算
    • 增加了跳出当前的局部最小值的潜力
    • 缺点:在逐渐缩小学习率的情况下,有与批梯度下降法类似的收敛速度
  3. 小批量随机梯度下降法(Mini Batch SGD)
    每次梯度计算使用一个小批量样本
    • 梯度计算比单样本更加稳定
    • 可以很好的利用现成的高度优化的矩阵运算工具

注意:神经网络训练的文献中经常把 Mini Batch SGD 称为 SGD

随机梯度下降法的困难:学习率的选取

  1. 局部梯度的反方向不一定是函数整体下降的方向
    • 对图像比较崎岖的函数,尤其是隧道型曲面,梯度下降表现不佳。
  2. 预定学习率衰减法的问题
    • 学习率衰减法很难根据当前数据进行自适应
  3. 对不同参数采取不同的学习率的问题
    • 在数据有一定稀疏性时,希望对不同特征采取不同的学习率
  4. 神经网络训练中梯度下降法容易被困在鞍点附近的问题
    • 比起局部极小值,鞍点更加可怕

3.3 随机梯度下降的优化算法选讲

为什么不用牛顿法?
• 牛顿法要求计算目标函数的二阶导数(Hessian matrix),在高维特征情形下这个矩阵非常巨大,计算和存储都成问题
• 在使用小批量情形下,牛顿法对于二阶导数的估计噪音太大
• 在目标函数非凸时,牛顿法更容易收到鞍点甚至最大值点的吸引动量法(Momentum)(适用于隧道型曲面)

梯度下降法在狭长的隧道型函数上表现不佳,如下图所示:
• 函数主体缓缓向右方下降
• 在主体方向两侧各有一面高墙,导致垂直于主体方向有更大的梯度
• 梯度下降法会在隧道两侧频繁震荡。
在这里插入图片描述
究竟如何选择算法呢?
• 动量法与Nesterov的改进方法着重解决目标函数图像崎岖的问题
• Adagrad与Adadelta主要解决学习率更新的问题
• Adam集中了前述两种做法的主要优点目前为止 Adam 可能是几种算法中综合表现最好的

动量法:
在这里插入图片描述
Nesterov的改进方法:
在这里插入图片描述

==Adagrad ==(自动调整学习率,适用于稀疏数据)
梯度下降法在每一步对每一个参数使用相同的学习率,这种一刀切的做法不能有效的利用每一个数据集自身的特点。
Adagrad 是一种自动调整学习率的方法:
• 随着模型的训练,学习率自动衰减
• 对于更新频繁的参数,采取较小的学习率
• 对于更新不频繁的参数,采取较大的学习率
在这里插入图片描述
在这里插入图片描述
注意:Adadelta 的第一个版本也叫做 RMSprop,是Geoff Hinton独立于 Adadelta提出来的。

Adam:目前最好的算法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laura_Wangzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值