李宏毅深度学习Task03打卡
目录
一、误差来自于哪
误差来自于偏差和方差
以右下角图为例,对于不同的f点求期望,如果期望值和靶心不相同,期望点距靶心的位置是偏差,也就是说一开始瞄准的位置就有偏,而f与其期望之间的距离称为方差。
为什么会有不同的f*?
这是因为使用不同的数据估计模型,会拟合出不同的模型
方差与偏差
方差
为什么越复杂的模型方差越大?
因为越简单的模型越少可能被样本数据影响
偏差
为什么越简单的模型偏差越大?
因为一开始设定一个简单的模型,模型的范围较小,可能就没包括真正的模型f,即使最优化,也还是存在偏差,而一开始设定一个复杂的模型包含的范围较大,优化之后能更加接近f,偏差会更小
方差与偏差比较
一般来说,越简单的模型偏差越大方差越小,越复杂的模型偏差越小方差越大,由于一个模型的误差由方差和偏差共同决定,当模型过于简单时,由于偏差过大导致的误差较大称为欠拟合,而当模型太过复杂的时候,由于方差过大而导致的误差较大称为过拟合。
如何判断欠拟合和过拟合
当你的模型不能很好的拟合训练数据时,称为欠拟合;当你的模型能很好拟合训练数据,但是在测试数据上误差较大,称为过拟合
解决欠拟合:增加模型复杂度
解决过拟合:更多的数据、添加正则化项
模型选择
尽量平衡偏差和方差
不要以降低public testing set为目的,来选择模型
如何将训练集的数据划分训练集和测试集?
- N折交叉验证
1、将全部训练集 S分成 k个不相交的子集,假设 S中的训练样例个数为 m,那么每一个子 集有 m/k 个训练样例,,相应的子集称作 {s1,s2,…,sk}。
2、每次从分好的子集中里面,拿出一个作为测试集,其它k-1个作为训练集
二、梯度下降
回顾之前学的内容
Tip1:调节学习率
不同学习率的表现
- 如果学习率过小,学习过程非常慢(左图蓝色)
- 如果学习率过大,很难走到很低的地方,在山谷震荡,(左图绿色)如果太大,一下走太远,可能会错过最小值(左图黄色)
学习率设置方法
一般来说,在一开始的时候距离loss函数最小值点较远,所以学习率可以大,在几轮epoch后,接近最小值了。所以减小学习率。并且可以对不同的参数设置不同的学习率
Adagrad
举例:
Adagrad:
- Adagrad会越来越慢,因为学习率越来越小
- 与原来的梯度下降有一个矛盾的过程,gt当碰到大的梯度时,会走一大步,而分母同时也会增大,使得学习率变小,会走更小的一步
解释:一般来说,梯度越大,离最低点越远,梯度越小离最低点越近。但是面对多个参数结论不一定成立。
最好的步长是一次微分/二次微分,在Adagrad中用一次微分平方开根号估计二次微分
Tip2 : 随机梯度下降
- 随机挑选一个例子来计算loss函数,从而更新参数
Tip3:特征缩放
两个参数的情况:如果x1和x2的范围很不一样,对这两个特征进行缩放,使其范围一致
为什么要这么做?
如果是左图,w2稍微变动会引起loss函数的较大变动,不同参数需要不同的学习率;如果是右图,不管初始点在哪都会向着圆心走(最低点)
如何进行特征缩放
梯度下降的工作原理
泰勒定理
当时考虑多元参数的情况:
梯度下降的限制
- 可能会卡在局部最小值或者鞍部的地方