深度学习(机器学习)优化算法
编程语言
2020-02-22 13:03:30
阅读次数: 0
一、损失函数:机器学习主要工作是模型评估,而损失函数定义了模型的评估指标!!
常见的损失函数有
- mean_squared_error
- mean_absolute_error
- mean_absolute_percentage_error
- mean_squared_logarithmic_error
- squared_hinge
- hinge
- categorical_hinge
- logcosh
- categorical_crossentropy
- sparse_categorical_crossentropy
- binary_crossentropy(二元交叉熵)
- kullback_leibler_divergence
- poisson
- cosine_proximity
二、机器学习经典优化算法
(1)直接法:直接给出问题的的最优解
(2)间接法:迭代的修正最优解的估计
- 一阶法:对优化函数进行一阶泰勒展开(梯度下降法)
- 二阶法:对优化函数进行二阶泰勒展开(牛顿法)
三、梯度检验:计算目标函数的梯度,写出计算梯度的代码后,需要验证自己的代码是否正确!!
四、随机梯度下降算法
(1)综述
- 经典的梯度下降算法:对参数进行更新时,需要遍历所有的训练数据,计算量大、耗费时间长;
- 随机梯度下降算法:用单个训练数据就可以对模型参数进行一次更新;
(2)常见的梯度下降算法
- 批量梯度下降法BGD(Batch Gradient Descent):
针对的是整个数据集,通过对所有的样本的计算来求解梯度的方向。
优点:全局最优解;易于并行实现;
缺点:当样本数据很多时,计算量开销大,计算速度慢
- 小批量梯度下降法MBGD(mini-batch Gradient Descent)
把数据分为若干个批,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性
优点:减少了计算的开销量,降低了随机性
- 随机梯度下降法SGD(stochastic gradient descent)
每个数据都计算算一下损失函数,然后求梯度更新参数。
优点:计算速度快
缺点:收敛性能不好
五、随机梯度下降算法的加速
(1)背景 有些训练效果差的的原因,并不是模型的问题,而是随机梯度下降算法在优化问题中失效了!!
(2)主要原因
- 大多数优化问题主要是,陷入局部最优解,而随机梯度下降算法主要问题是山谷和鞍点;
- 山谷:在山谷中来回反弹震荡,不能按照正确的方向迅速下降,导致收敛不稳定和收敛速度慢;
- 鞍点:在鞍点处,随机梯度进入一片平坦之地(坡度不明显)导致走错方向,提前停下来;
(3)解决方法
- 引入动量:惯性保持
- AdaGarda:环境感知
- Adam:惯性保持+环境感知
六、L1正则化与稀疏性
所谓的稀疏性,就是模型的很多参数为0,相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力、降低过拟合风险!
- L1的解空间为多边形,L2的解空间为圆形;
- L1对模型参数w引入了拉普拉斯先验,L2正则化引入高斯先验,而拉普拉斯先验使参数为0的可能性更大;
发布了17 篇原创文章 ·
获赞 15 ·
访问量 1万+
转载自blog.csdn.net/z15692341130/article/details/104440696