线性回归
https://www.jianshu.com/p/6c9af5a1386b
【小萌五分钟】机器学习 | 线性回归 (三): 优化问题解法② 梯度下降 Gradient Descent_哔哩哔哩_bilibili
假设特征和结果满足线性关系;它的损失函数是,假设误差独立同分布,服从均值为0,方差为定值的高斯分布,经过最⼤似然估计推导出来的,损失函数与平⽅损失函数是等价的。
1.最小二乘推导-极大似然估计
推导出来线性回归的目标函数是最小二乘的形式
2.岭回归和LASSO回归
为什么要加正则?
因为w不能太大,w太大容易过拟合,比如-1000x1+20000x2,参数的一点偏差会造成结果的很大差距。
l1是绝对值形式,l2是平方形式,绝对值形式的可进行特征筛选。
为什么l1可进行特征选择?从梯度的角度出发进行说明,l1的导数,是1或者-1,在接近0的时候参数很容易下降到0,而l2的导数是2*x,在0点导数是0,参数只能接近0,不能下降到0。
l1是绝对值形式,l2是平方形式,绝对值形式的可进行特征筛选。
为什么l1可进行特征选择?从梯度的角度出发进行说明,l1的导数,更容易下降到0。
正则化为什么能防止过拟合(重点地方标红了)
正则化为什么能防止过拟合(重点地方标红了) - alexanderkun - 博客园
梯度下降
为什么梯度反方向是函数下降最快的方向
逻辑回归
1.交叉熵推导-最大似然估计
假设分类问题的样本服从伯努利分布
损失函数是似然函数,求的是似然函数的最大值,应该是梯度上升,而不是梯度下降,一般情况下,在概率似然函数前面加一个负号,就是求最小值了,用梯度下降。
2.直观理解交叉熵
3.理解sigmoid函数
揭开YouTube深度推荐系统模型Serving之谜 - 知乎
损失函数总结
学习分享一年,对神经网络的理解全都在这40分钟里了_哔哩哔哩_bilibili
优化器
“随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam”,打包理解对梯度下降法的优化_哔哩哔哩_bilibili
Adam那么棒,为什么还对SGD念念不忘 | 吴良超的学习笔记
优化器是做什么的
是用来最小化损失函数的,损失函数是用来度量模型预测值和真实值间的偏差,偏差越小,模型越好,所以我们需要最小化损失函数,求极值点,寻找最优下降路径。
比较基本的是梯度下降法,有3种分别是批量梯度下降,随机梯度下降,小批量梯度下降。
梯度下降的优化方法,SGD(小批量梯度下降)最为常用。
优点: 收敛速度快。
缺点:1. 训练不稳定。2. 选择适当的学习率可能很困难。 太小的学习率会导致收敛性缓慢,而学习速度太大可能会妨碍收敛,并导致损失函数在最小点波动。3. 无法逃脱鞍点。
所以后面发展了不少其他的优化方法改进了SGD。
优化器有两个参数很重要。一个是优化方向,决定“前进的方向是否正确”,在优化器中反映为梯度或动量。另一个是步长,决定“每一步迈多远”,在优化器中反映为学习率。
一阶动量为与梯度相关函数,二阶动量为与梯度平方相关的函数
3种梯度下降法
-
批量梯度下降法。
梯度下降法是原始的优化方法,梯度下降的核心思想:负梯度方向是使函数值下降最快的方向,因此我们的目标就是求取目标函数的负梯度。
在梯度下降法中,因为每次都遍历了完整的训练集(每次一个batch),其能保证结果为全局最优(优点),但是也因为我们需要对于每个参数求偏导,且在对每个参数求偏导的过程中还需要对训练集遍历一次,当训练集很大时,计算费时(缺点)。
-
随机梯度下降法。
再极端一点,就是随机梯度下降法,即每次从训练集中随机抽取一个数据来计算梯度。因此,其速度较快(优点),但是其每次的优化方向不一定是全局最优的(缺点)。因为误差,所以每一次迭代的梯度受抽样的影响比较大,也就是说梯度含有比较大的噪声,不能很好的反映真实梯度,并且SGD有较高的方差,其波动较大。而且SGD无法逃离鞍点。
-
小批量梯度下降法:是最广泛使用的一种算法,该算法每次使用m个训练样本(称之为一批)进行训练,能够更快得出准确的答案。小批量梯度下降法不是使用完整数据集,在每次迭代中仅使用m个训练样本去计算代价函数的梯度。一般小批量梯度下降法所选取的样本数量在50到256个之间,视具体应用而定。减少了参数更新时的变化,能够更加稳定地收敛。同时,也能利用高度优化的矩阵,进行高效的梯度计算。
momentum
介绍一下Momentum:
本质上是用历史数据去修正下一步要下降的方向,可以减少震荡。
Momentum借用了物理中的动量概念,即历史梯度也会参与当前参数下降方向的运算,根据指数加权平均,历史梯度对当前的影响随着时间会衰减。
Momentum的好处是,momentum在梯度方向相同时,能够加速收敛,在梯度方向相反时,可以抑制震荡。并且动量有机会逃脱局部极小值(鞍点)。
为什么有机会逃脱鞍点优化算法 - Momentum 动量 - 梯度下降 - 缓解山谷与鞍点的影响_GoWeiXH的博客-CSDN博客
如果在鞍点处,因为当前所在位置的周围非常平缓,Error 值非常接近,导致梯度近乎为 0,致使无法更新,训练停滞。
那么如果加入Momentum 动量项,相当于在梯度下降中加入了惯性,这种情况下梯度的计算不单单依据当前所在位置,而是仍然具有之前的梯度量。那么一旦遇到了山谷地形,那么按照之前的梯度速度,在最小值方向上仍然具有一定的梯度,所以会更加快速的迭代到最小值。再看鞍点的情况,此时所在的是平坦地带,梯度为 0,但因为存在动量项,相当于在此时具有一定的初始速度,所以可以依靠“惯性”冲过平坦地带,进而向最小值更新。
指数加权平均
Nesterov momentum
NAG在步骤 1,不计算当前位置的梯度方向,而是计算如果按照累积动量走了一步,那个时候的下降方向:然后用下一个点的梯度方向,与历史累积动量相结合,计算步骤2中当前时刻的累积动量。
介绍一下Nesterov momentum:
本质是前进方向不是当前梯度方向,而是上一步计算出来的下降方向。根据历史梯度向前走一步,然后对当前方向进行修正。
梯度下降更新方法SGD,Mini-batch,Momentum, Nesterov, RMSprop - 知乎
Adagrad
介绍一下Adagrad:
自适应梯度的一种梯度下降法,根据梯度变化的缓急来对学习率进行调整,梯度变化快的时候学习率变换,梯度变化慢的地方学习率加快。
为什么adagrad适合于稀疏数据
因为稀疏数据0较多,频率高,梯度平方和大,学习率会调整变小。