Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization--笔记(第一周)

1、深度学习如何划分数据集

第一点:传统的机器学习划分数据集的方法是把数据集划分为70%训练集,30%测试集。或者是60%训练集,20%交叉验证集,20%的测试集,这在很长一段时间内被验证是最佳的分类方法。这样划分是为了验证算法的泛化能力和算法的效果,但是如果训练集非常非常巨大,在训练集上性能表现很好,虽然降低交叉验证集和测试集的比例,但是也可以很好的有很好的表现。

第二点:训练集和测试集要同分布,这样可以使算法更快的收敛(如不同数据来源的数据)

第三点:交叉验证集和测试集的目的是为了得到模型的无偏估计,如果不需要无偏估计,可以不需要交叉验证集。需要做的是用不同的算法进行训练,寻找对开发集拟合最好的模型。但是有可能会遇到算法在测试集上过拟合的问题

2、方差和偏差困境:

如下图:

Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization--笔记(第一周)

通常我们会假设是理想的方差(贝叶斯方差/真人识别的错误概率)为0

如图四种类型算法的方差和偏差结果:

第一种:高方差算法

第二种:高偏差

第三种:高方差&高偏差

第四种:低方差和低偏差

如果数据来源比较模糊,无论是真人或者是任何系统都不能拿识别,理想方差本身就是比较的,第二种算法就是得到的最完美的结构了。当然还可以对原始数据进行处理,降低方差

高方差和高偏差出现的可能需要调整设置的拟合的算法

3、机器学习的基本准则

训练完最初的神经网络算法之后,看算法存在的问题:

高偏差问题

第一、调整的神经网络算法的参数(更多的隐藏层/更多的隐藏单元/让梯度下降法运行更长时间)

第二、选择更适合解决目前问题的算法

高方差问题

第一、获取更多样本量(图片可以使用图片选择增加技术、随机截取图片进行扭曲)

第二、调整正则化系数

第三、选择更适合解决目前问题的算法

 

获取更多的数据也许是解决高方差(过拟合)问题的有效途径,但是现实中获取更多样本如果不是很方便,调整正则化系数也许也是个可靠的方法

 

对神经网络的正则化

增加正则项:在cost函数中加入正则化项,常用的是L2范数

dropout(随机失活)正则化:随机使部分神经网络节点系数为0,控制过拟合,应用在计算机视觉领域较多,在其他领域用的相对较少。 该方法的缺点是cost函数比较不确定

数据集扩增:旋转图片,随机截取扭曲图片增加伪训练集的样本数量,提供更多的样本的信息

早终止法(early stopping):测试集和训练集误差之和最小时提前终止

 

归一化可以加速神经网络的训练

梯度消失和梯度爆炸的问题,可以通过合理设置初始化值以及设置适合的**函数处理(如relu)

梯度检验方法注意事项:

一、在测试bug时,可以使用梯度检验的方法,可以检验自己写的算法在反向传播中是否出现问题,一般情况下检验的结果应该远远小于10的-3次方

二、注意使用正则化项

三、不要使用dropout随机失效正则化方法