【机器学习-深度学习】

【百面机器学习】优化算法

2019-08-14  本文已影响0人  阿牛02

机器学习算法 = 模型表征 + 模型评估 + 优化算法。不同的优化算法对应的模型表征和评估指标分别为线性分类模型和最大间隔,逻辑回归对应的模型表征和评估指标则分别为线性分类模型和交叉熵。

1、有监督学习的损失函数

       机器学习算法的关键一环是模型评估,而损失函数定义了模型的评估指标。可以说,没有损失函数就无法求解模型参数。不同的损失函数优化难度不同,最终得到的模型爷不同,针对具体的问题需要选取合适的损失函数。

2、机器学习中的优化问题,哪些是凸优化问题,哪些是非凸优化问题?请各举例子。

      凸函数的一个直观解释,凸函数曲面上任何两点连接而成的线段,其上的任意一点都不会处于该函数曲线的下方。

      凸优化:支持向量机、逻辑回归、线性回归等线性模型

     非凸优化:矩阵分解、深度神经网络模型、PCA对应的优化问题等。

3、当训练数据量特别大时,经典的梯度下降法存在什么问题,需要如何改进?

       经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当M很大时,这需要很大的计算量,耗费很长的计算时间,在实际应用中基本不可行。

     1)随机梯度下降法,用单个训练数据即可对模型参数进行一次更新,大大加快了收敛速率。该方法也非常适合数据源源不断到来的在线场景。

     2)小批量梯度下降法。

   (1)参数m?m需要通过调参选取。一般m取2的幂次方能充分利用矩阵运算操作。

   (2)m个训练数据?为了避免数据的特定排序给算法收敛带来的影响,对所有数据进行随机排序,然后再每次迭代适按顺序挑选m个训练数据直至遍历完所有的数据。

   (3)学习速率a?为了加快收敛速率,同时提高求解精度,通常会采用衰减学习速率的方法:一开始算法采用较大学习率,当误差曲线进入平台期后,减小学习速率做更精细的调整。最优化的学习速率方案也通常需要调参才能得到。能够加快训练过程。

4、随机梯度下降法的加速

       随机梯度下降法容易达到局部最优点,最怕达到山谷和鞍点。山谷顾名思义就是狭长的山间小道,左右两边都是峭壁;鞍点得形状像是一个马鞍,一个方向上两头翘,另一个方向两头垂,而中心区域是一片近乎水平的平地。在山谷中,准确得梯度方向是沿山道向下,稍有偏离就会撞向山壁,而粗糙得梯度估计使得它在山壁间来回反弹震荡,不能沿山道方向训练下降,导致收敛不稳定和收敛速度慢。在鞍点出,随机梯度会走入一片平坦之地。

      解决之道-----惯性保持和环境感知

    (1)动量(Momentum)方法。

       随机梯度下降法中添加动量项。

     (2)AdaGrad方法

      惯性基于历史信息。

    (3)Adam方法。

       Adam方法将惯性保持和环境感知这两个优点集于一身。一方面Adam记录一阶矩,即过往梯度与当前梯度的平均,这体现了惯性保持;另一方面,Adam还记录梯度的二阶矩,即过往梯度平方与当前梯度平方的平均,这类似AdaGrad方法,体现了环境感知能力,为不同参数产生自适应的学习速率。

其它优化方法

5、L1、L2正则化与稀疏性

       稀疏性,说白了就是模型的很多参数是0.这相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力,降低过拟合可能。

     L2正则化项,在功能上可称作权重衰减项,目的是减小权重的幅度,防止过拟合,其中有个系数x为权重衰减参数,用于控制损失函数中两项的相对权重。

      L2正则化相当于为参数定义了一个圆形的解空间(因为必须保证L2范数不能大于m),而L1正则化相当于为参数定义了一个菱形的解空间。如果原问题目标函数的最优解不是恰好落在解空间内,那么约束条件下的最优解一定在解空间的边界上,而L1“菱角分明”的解空间显然更容易与目标函数等高线在角点碰撞,从而产生稀疏解。

上一篇下一篇

猜你喜欢

热点阅读