目录
1.误差
误差的主要来源包括两部分:偏差(Bias)和方差(Variance)。Bias是真实值与函数预测期望值的偏差,反映模型的拟合能力;而Variance是预测值的方差,反映模型的鲁棒性。
如下图所示,偏差越小则平均预测值越靠近真实值(图中红色的靶心),方差越小则预测值越集中,也就说明函数越平滑、稳定。
图中右上角的情况被称为过拟合 (Overfit),表示模型在训练时的表现非常好,但在新的数据集上测试时表现非常差。与之对应的,左下角的情况被称为欠拟合 (Underfit),表示模型无法很好地刻画样本数据。一般来讲,在数据量不够大时,选用多个特征值的高次模型容易出现过拟合问题,而欠拟合问题的出现则是由于模型过于简单。
1.1偏差
对于上文中提到的线性模型偏差较大的直观的解释是,简单的模型function set空间较小(图中用蓝色圈出,有箭头标注model),可能空间中根本就不包含真实值(即靶心),所以即使经过了筛选最优的步骤仍然不能得到较好的function。
减小偏差的方法有以下几种:
(1)增加特征数量
(2)设计更高次幂、更复杂的模型
(3)去掉正则化
1.2方差
对于上文中提到的复杂模型方差较大的直观的解释是,模型越复杂,受样本数据的影响就越大。考虑极端情况当function = c时,不受任何样本数据的影响。
减小方差的方法有以下几种:
(1)减少特征数量
(2)设计更为简单的模型
(3)增大数据量
(4)加入正则化
其中最有效的方法就是增大数据量,但有时数据不好采集,需要我们自己来做增广。例如做手写数字识别,可以将图片向左或向右旋转一个角度后加入到原本的数据集中。
总之,我们所期望的模型是偏差和方差都较小的模型,但往往二者不能同时达到最优,需要在简单和复杂的函数之间寻找到平衡。
2.梯度下降
在机器学习的第三步筛选最优模型时,我们定义loss function来对不同的函数进行评估,找到loss function的最小值也就找到了最优模型。这里用梯度下降算法来到一组参数,使得loss function取到最小值。
梯度下降算法的计算过程如下图所示。总是先求出一点的偏微分,再向相反方向,以学习率乘偏微分的值作为步长移动。
对于梯度下降算法的改进有以下几种。
2.1调整学习率
根据梯度下降算法的计算过程我们知道,如果学习率太小损失函数下降的太慢,学习率太大则有可能在移动时错过最优解。
可以通过自适应学习率来解决这一问题,随着次数增加减少学习率。一开始距离最优解较远时移动步长可以大一点,经过几轮更新之后将学习率减小。不同的参数选择不同的学习率。
Adagrad算法解决不同参数学习率不同的问题,将每个参数的学习速率除以其先前导数的均方根。
2.2随机梯度下降
随机梯度下降比梯度下降更快。如下图所示,损失函数不需要处理训练集所有的数据,只需要计算某一个例子的损失函数Ln,就可以赶紧更新梯度。
2.3特征缩放
特征缩放使不同的特征值有相同的比例,经过特征缩放后,便于进行梯度下降。特征缩放的实现方法类似于概率统计学中正态分布的标准化。