深度学习(偏差/方差

github博客传送门
csdn博客传送门

方差/偏差

我们称左边的为图一,中间的为图二,右边的为图三

从图上我们可以看到有两个数据分布 , 我们需要将他们进行分类开.

图一:

处于欠拟合(训练时间不够或者网络结构较小的时候产生的) 我们也称之为高偏差 .
检测方法: 计算出训练集的误差和理想误差的差距 , 并估计是否存在高偏差 .
解决办法: 增加训练时间 , 使用较大的网络结构 , 尝试更先进的优化算法(如Adam) , 或者修改网络结构(可能有效可能无效)

图二:

处于适度拟合的状态(就是我们想要的状态)
检测方法: 训练集误差 和 交叉验证集误差都比较低的时候
解决办法: 这就是我们想要的样子 , 所以就不需要优化了 .

图三:

处于过拟合(训练时间过长或者网络结构较大的时候产生的)我们也称之为高方差 .
检测方法: 计算出训练集的误差和交叉验证集的误差 , 当训练集误差很接近理想误差时 , 交叉验证集误差却很高时 , 网络存在高偏差的情况 .|| 当训练集误差很大时 , 交叉验证集误差也很大时 , 我们的网络同时存在 高偏差和高方差的情况 .
解决办法: 首先解决偏差高的问题(解决办法 同上) , 其次解决高方差的问题 . 最好的解决办法就是采用更多的数据 , 其次使用正则化(Dropout, Batch Normzation , L1 , L2等等...) , 尝试新的网络结构(可能有效可能无效 , 也可能同时减少方差和偏差)

总结:

构建一个大的网络 , 正则适度 , 便可以在不影响方差时 , 减少偏差 .
采用更多数据通常可以在不过多影响偏差的同时 , 减少方差 .

print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!")
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!
");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!")
Response.Write("点个赞吧");
alert(’点个赞吧’)
原文地址:https://www.cnblogs.com/Mrzhang3389/p/10160536.html