目录
前言
本文内容涉及误差、梯度下降,来源于李宏毅老师深度学习视频。
一、误差
误差反映整个模型的准确度,误差的来源由两部分:偏差(bias)和方差(variance)。可以用下面式子表示:
1.偏差
描述的是真实值与预测值期望之间的差距,反映的是模型的精准度,即模型的拟合能力。
图片来源:李宏毅深度学习课件
2.方差
随机变量和其数学期望(即均值)之间的偏离程度,描述的是预测值的变化范围,预测值的方差,也就是离期望值的距离。方差越大,数据的分布越分散,方差反映模型的稳定性,即模型的鲁棒性。
图片来源:李宏毅深度学习课件
3.减少错误
偏差越小则平均预测值越靠近真实值(图中红色的靶心),方差越小则预测值越集中,也就说明函数越平滑、稳定。
如果模型越复杂,偏差越低,方差越高,容易造成过拟合;反之,如果模型越简单,偏差越高,方差越低,容易造成欠拟合。在模型的选择过程中,需要平衡偏差和方差,寻找一个临界点。
对于偏差大,出现欠拟合情况的解决方法:选取更多的特征加入训练、选取更加复杂的模型(可考虑更高次幂)。
对于方差大,出现过拟合情况的解决方法:降低模型的复杂度、扩大训练集的数据量、减少选取特征的数量、添加正则项、采用交叉验证等方式选取模型。
4.模型选择(比较验证)
(1)交叉验证
交叉验证的步骤:
step1:将训练集再分为两部分,一部分作为训练集,一部分作为验证集。
step2:用训练集训练模型,然后在验证集上进行比较,确定出最好的模型后,用全部的训练集训练选出的最好模型
step3::用public测试集进行测试获得最好模型,用全部的训练集训练该模型,再用public的测试集进行测试。
(2)N折交叉验证
二、梯度下降
1.调整学习率
(1)一般调整学习率
如下图所见,左边为损失函数曲线,当学习率过小时,就会走得过慢(蓝色箭头);但是当学习率过大时,就会像绿色箭头一样来回震荡,无法找到最低点;当学习率非常大时,如黄色箭头所示损失函数值越来越大;当学习率刚好时,如红色箭头的方向一致,找到最低点。
(2)自适应学习率
在训练模型时,通常期望刚训练时学习率更大,训练速度快,随着模型训练的次数增加,越来越接近最低点时,就期望学习率小一些,避免来回震荡找不到最低点,因此,通过一些因子来减少学习率。
(3)Adagrad算法
为了解决不同参数学习率不同的问题,Adagrad算法将每个参数的学习速率除以其先前导数的均方根。Adagrad在不做多余运算的情况下考虑了二次微分,但是在多参场景下,步长同时受到一阶导和二阶导的影响,计算复杂。
2.随机梯度下降
常规梯度下降走一步要处理到所有二十个例子,而随机梯度下降每处理一个例子就更新,比常规梯度下降速度更快。
3.特征缩放
在梯度下降的运用中,当选取的不同特征取值在一个相近的范围内,可以提高梯度下降的速度,其实就是归一化的过程。一般有四种特征缩放的方法:min-max标准化、mean归一化、z-score标准化、max标准化。
总结
本小节主要讲解了误差产生的原因,主要是由偏差和方差导致,偏差过大时容易产生欠拟合,方差过大时容易产生过拟合,由此延伸出如何解决过拟合和欠拟合问题。梯度下降中开始涉及到公式的推导,在本文总结中只是放了图片,推导计算过程还需要再自行巩固。