机器学习算法=模型表征+模型评估+优化算法。其中优化算法所做的事情就是在模型表征中找到模型评估指标最好的模型。
目前大部分机器学习的工具已经内置了常用的优化算法,实际应用时只需要一行代码即可完成调用。但是鉴于优化算法在机器学习中的重要作用,了解优化算法的原理也很有必要。
1 有监督学习的损失函数
Q1:有监督学习涉及的损失函数有哪些?请列举并简述它们的特点。
A1:0-1损失函数(sign)
折页损失函数(ReLU)
logistic 损失函数
交叉熵损失函数
对于回归问题,常用的损失函数是平方损失函数;然而,当预测值距离真实值越远时,平方损失函数的惩罚力度越大,因此它对异常点比较敏感。为解决此问题,可以采用绝对损失函数。
综合考虑可导性和对异常点的鲁棒性,可以采用Huber损失函数。
2 机器学习中的优化问题
Q1:机器学习中的优化问题,哪些时凸优化问题,哪些时非凸优化问题,请各举一个例子。
A1:关于凸函数的定义参考博客https://cloud.tencent.com/developer/news/335461
对凸优化问题,所有的局部极小值都是全局极小值,因此这类问题一般认为是比较容易求解的问题。另一方面,主成分分析对应的优化问题是非凸优化问题。其他凸优化问题的例子包括支持向量机、线性回归等线性模型,非凸优化问题的例子包括低秩模型(如矩阵分解)、深度神经网络模型等。
3 经典优化算法
Q1:无约束优化问题的优化方法有哪些?
A1:经典的优化算法可以分为直接法何迭代法两大类。
直接法要求目标函数需要满足两个条件。第一个条件是,L(.)是凸函数,第二个条件是,上式有闭式解。同时满足这两个条件的经典例子式岭回归。 直接法满足这两个条件限制了它的应用范围。因此,在很多实际问题中,会采用迭代法。
迭代法就是迭代地修正对最优解的估计。 (二阶法也称未牛顿法)
4 梯度验证
Q1:如何验证求目标函数梯度功能的正确性?
A1:一堆数学证明 ,根据倒数的定义。详见P152-154
5 随机梯度下降法
Q1:当训练数据量特别大时,经典的梯度下降法存在什么问题,需要做如何改进?
A1:经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当M很大时,这需要很大的计算量,耗费很长的计算时间,在实际应用中基本不可行。
为了降低随机梯度的方差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据,该方法被称为小批量梯度下降法。(Mini-Batch Gradient Descent)
Q2:如何选取参数m?
A2:一般m取2的幂次时能充分利用矩阵运算操作
Q3:如何挑选m个训练数据?
A3:为了避免数据的特定顺序给算法收敛带来的影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代时按顺序挑选m个训练数据直至遍历完所有的数据。
Q4:如何选取学习率α?
A4:为了加快收敛速率,同时提高求解精度,通常会采用衰减学习速率的方案:一开始算法采用较大的学习速率,当误差曲线进入平台期后,减小学习速率做更精细的调整。
通常采用小批量梯度下降法解决训练数据量过大的问题。
6 随机梯度下降法的加速
Q1:随机梯度下降法失效的原因----------------摸着石头下山
A1:这个问题书本的比喻非常形象,参考P158-159
Q2:解决之道----惯性保持何环境感知
A2:动量方法----听到名字就知道跟中学物理相挂钩,联想到惯性。具体见P160的作者举的例子 非常nice。与随机梯度下降相比,动量方法的收敛速度更快,收敛曲线页更稳定。
AdaGrad方法-------采用“历史梯度平法和”来衡量不同参数的梯度的稀疏性,取值越小表明越稀疏
Adam方法-----------将惯性保持和环境感知这两个优点集于一身。另外,Adam方法还考虑了在零初始值情况下的偏置矫正。
AdaDelta 和 RMSProp。这两个方法非常类似,是对AdaGrad方法的改进
7 正则化与稀疏性
Q1:L1正则化使得模型参数具有稀疏性的原理是什么?
A1:这块非常重要,可以从三个角度来解答:解空间形状、函数叠加、贝叶斯先验。
这块本书讲的非常到位,回头再仔细研究P164-168