改善深层神经网络:超参数调试、正则化以及优化
【1.1 训练/开发/测试集】
超参数调优,如何构建数据,
通过验证集/交叉验证集 选择最好的模型
经过充分验证,选定了最终模型,然后就可以在测试集上进行评估了
测试集和验证集占数据总量的比例会趋向于变得更小
记住:验证集的目的 是验证不同的算法,检验那种算法更有效。
因此,验证集要足够大才能评估。比如2-10个不同算法
测试集主要目的:正确评估分类器的性能
1000条数据 足以评估单个分类器
在训练和测试集分布不匹配的情况下进行训练
要确保验证集和测试集的数据来自统一分布
经验法则
最后一点,就算没有测试集也不要紧
测试集的目的是对最总选择的模型做出 无偏评估
如果不需要无偏评估,也可以不设置测试集
把验证集的数据 过度拟合到了 测试集中
[2.2 偏差/方差]
分别讨论二者
方差较高:过拟合
训练集误差、验证集误差
训练集 和 验证集的误差
训练集:误差低,训练集的拟合度不高15%,15%, 0.5%, 验证集:误差高,合理 16%, 更差(30%), 1% 称之为:高方差,高偏差(因为它甚至不能拟合训练集),偏差高、方差也高,偏差、方差都很低
一般来说,最优误差 也被称为 贝叶斯误差 所以,最优误差接近0%
重点是 通过查看训练集误差,可以判断数据拟合情况,至少对于训练数据是这样,可以判断是否有偏差问题 通过查看验证集误差,可以判断方差是否过高
前提假设: 最优误差很低, 训练集、验证集来自同一分布
1.3 首先知道算法的偏差高不高。 如果偏差较高,试着评估训练集或训练数据的性能, 如果偏差确实很高,甚至无法拟合训练集, 那么要做的就是选择一个新网络,比如含有更多隐藏层或者隐藏单元的网络,或者花费更多时间来训练算法
一旦偏差降低到可接受的范围,检查一下方差。 为了评估方差,要查看验证集性能。 如果验证集方差高,最好的解决办法就是采用更多数据。 如果没有足够数据,可以通过 正则化来减少过拟合。
总之:需要不断尝试, 知道找到一个 低偏差、低方差的框架
使用更多数据,更复杂的网络, 通常可以在不影响偏差的同时,减少方差
1.4 正则化 正则化时 会出现偏差、方差权衡问题
如果觉得神经网络存在过拟合问题,即存在高方差问题, 那么首先想到的问题可能是正则化。 另一个解决高方差的方法是 准备更多数据,这也是非常可靠的方法。但这个有时候很难准备
正则化 通常有助于避免过拟合or减少网络误差
如果用L1正则化范数,那么w是稀疏的,即W向量中有很多0, 有人说这样有利于压缩模型, 因为集合中参数均为0,存储该模型所占用的内存会更少, 实际上并没有降低太多存储内存。
人们在训练模型时,越来越倾向于使用L2正则化,
lambd正则化参数:通常通过验证或交叉验证,来确定这个参数 将其设置为较小的值,可以避免过拟合
神经网络中,也有一个成本函数,
L2范数正则化也被称为“权重衰减”