在机器学习中提到,说机器学习问题实际上就是最优化问题,但事实上二者有一定的区别:
- 最优化问题只关注给与的样本,让函数在给予的样本上达到最优点,也就是只关注训练集
- 机器学习要关注的不知有训练集,还要评估模型在验证集上的表现
在建立机器学习模型时,会产生两种异常情况:欠拟合、过拟合
- 欠拟合:设置的机器学习学习模型能力不足,也就是说函数模型无法满足实际需要,例如上图中用线性函数来表示二次函数的图像
- 过拟合:选择的机器学习模型过于复杂或训练集数据过少,导致机器学习模型在训练集样本上的错误率为0
从上面的两种异常情况中也能看出,机器学习更多的是关注模型在验证集上的效果而不是训练集。
泛化
由于经验风险和期望风险之间存在一定的误差,为了表示这个误差,将它称为泛化误差,公式为:
G
D
(
f
)
=
R
(
f
)
−
R
D
e
m
p
(
f
)
\mathcal{G}_D(f)=\mathcal{R}(f)-\mathcal{R}_D^{emp}(f)
GD(f)=R(f)−RDemp(f)
即期望风险-经验风险。从泛化误差的角度来看:
- 期望风险较高、经验风险较低导致泛化误差较大,此时发生过拟合问题
一个好的机器学习模型应该同时具有较低的泛化误差和经验风险
正则化(Regularization)
在最优化问题中,若要使经验风险最小化,一般需要一个很复杂的模型,但通常这样都会发生过拟合问题,导致泛化误差较高。为了降低泛化误差,提出了正则化的方法,一般来说,所有损害优化的方法都是正则化
常用的正则化方法有:
- 增加优化约束
- L1/L2约束:约束模型上某个点对应的函数值在某个范围内,从而达到限制模型能力的效果
- 数据增强:通过对原来的样本进行变幻构造出新的样本达到增加训练数据量的结果
- 干扰优化过程
- 权重衰减
- 随机梯度下降
- 提前停止:使用验证集来测试每次迭代的参数在验证集上是否最有,如果在验证集上的错误率不再下降,就停止迭代。