改善深层神经网络(一)——NG

训练、测试、验证集

今天主要讨论神经网络机器学习中的问题,然后是随机神经网络,还会学习确保神经网络正确运行的技巧。
在训练神经网络时,我们需要做出很多决策,例如:
神经网络分多少层;每层含有多少个隐藏单元;学习速率是多少;各层采用哪些激活函数等。
创建新应用的过程中,我们不可能从一开始就准确预测出这些信息和其他超参数。实际上,应用型深度学习是一个高度迭代的过程,通常在项目启动时,我们会先有一个初步想法,比如构建一个含有特定层数,隐藏单元数量或者数据集个数等等的神经网络,然后编码,并尝试运行这些代码,通过运行和测试得到该神经网络或这些配置信息的运行结果,你可能会根据输出结果重新完善自己的想法,改变策略,或者为了找到更好的神经网络不断迭代更新自己的方案。


所以说,应用深度学习是一个典型的迭代过程,需要多次循环往复,才能为应用程序找到一个称心的神经网络,因此循环该过程的效率是决定项目进展速度的一个关键因素,而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率。

通常将数据划分几部分,一部分作为训练集,一部分作为简单交叉验证集,有时也称为验证集,最后一部分则作为测试集。接下来,我们开始对训练集执行算法,通过验证集选择最好的模型,经过充分验证,我们选定了最终模型,然后就可以在测试集上进行评估,为了无偏评估算法的运行状况。

在机器学习发展的小数据量时代,常见做法是将所有数据三七分,就是人们常说的 70% 验证集,30%测试集,如果没有明确设置验证集,也可以按照 60%训练,20%验证和 20%测 试集来划分。这是前几年机器学习领域普遍认可的最好的实践方法。

但是在大数据时代,我们现在的数据量可能是百万级别,那么验证集和测试集占数据总量的比例会趋向于变得更小。因为验证集的目的就是验证不同的算法,检验哪种算法更有效,测试集的主要目的是正确评估分类器的性能,对最终所选定的神经网络系统做出无偏估计。假设我们有 100 万条数据,其中 1 万条作为验证集,1 万条作为测试集, 100 万里取 1 万,比例是 1%,即:训练集占 98%,验证集和测试集各占 1%。对于数据量过 百万的应用,训练集可以占到 99.5%,验证和测试集各占 0.25%,或者验证集占0.4%,测试集占 0.1%。

总结一下,在机器学习中,我们通常将样本分成训练集,验证集和测试集三部分,数据集规模相对较小,适用传统的划分比例,数据集规模较大的,验证集和测试集要小于数据总量的 20%或10%。

另外,确保验证集和测试集的数据与训练集都来自同一分布。
最后一点,就算没有测试集也不要紧,测试集的目的是对最终所选定的神经网络系统做 出无偏估计,如果不需要无偏估计,也可以不设置测试集。所以如果只有验证集,没有测试 集,我们要做的就是,在训练集上训练,尝试不同的模型框架,在验证集上评估这些模型, 然后迭代并选出适用的模型。因为验证集中已经涵盖测试集数据,其不再提供无偏性能评估。

偏差、方差

假设这就是数据集,如果给这个数据集拟合一条直线,可能得到一个逻辑回归拟合,但 它并不能很好地拟合该数据,这是高偏差(highbias)的情况,我们称为“欠拟合(” underfitting)。

相反的如果我们拟合一个非常复杂的分类器,比如深度神经网络或含有隐藏单元的神经 网络,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式分类器方差较高(high variance),数据过度拟合(overfitting)。

在两者之间,可能还有一些像图中这样的,复杂程度适中,数据拟合适度的分类器,这 个数据拟合看起来更加合理,我们称之为“适度拟合”(just right)是介于过度拟合和欠拟合中间的一类。

理解偏差和方差的两个关键数据是训练集误差(train set error)和验证集误差(dev set error)。

假定训练集误差是1%,为了方便论证,假定验证集误差是11%,可以看出训练集设置得非常好,而验证集相对较差,我们可能过度拟合了训练集,在某种程度上,验证集并没有充分利用交叉验证集的作用,像这种情况,我们称之为“高方差”。

通过查看训练集误差和验证集误差,我们便可以诊断算法是否具有高方差。也就是说衡 量训练集和验证集误差就可以得出不同结论。

假设训练集误差是 15%,我们把训练集误差写在首行,验证集误差是 16%,而真实数据情况错误率几乎为0%(就是人为标注数据没有错误)。可以看出训练数据的拟合度不高,就是数据欠拟合,就是说这种算法的偏差比较高。相反,它对于验证集产生的结果却是合理的,验证集中的错误率只比训练集多了1%,所以这种算法偏差高。

再假定训练集误差是 15%,偏差相当高了,但是,验证集的评估结果更糟糕,错误率达到 30%,在这种情况下,我会认为这种算法偏差高,因为它在训练集上结果不理想, 而且方差也很高,这是方差偏差都很糟糕的情况

再看最后一个例子,训练集误差率是0.5%,验证集误差是1%,用户看到这样的结果会很开心,因为只有1%错误率,偏差和方差都很低。

但是这里需要明确一点,这些假设预测都是基于真实数据的人为标注错误率接近0%,也就是所说的最优误差,也称为贝叶斯误差。如果最优误差15%,而再看我们分类器的训练误差15%,验证误差16%,那么15%的错误率对训练集来说也是非常合理的,偏差不高,方差也非常低。

先不考虑最优误差会高的情况(也就是真实数据的标注都不准,错误率高),我们假设最优误差接近0%,查看训练集误差,我们可以判断数据拟合情况,至少对于训练数据是这样,可以判断是否有偏差问题,然后查看错误率有多高。当完成训练集训练,开始使用验证集验证时,我们可以判断方差是否过高,从训练集到验证集的这个过程中,我们可以判断方差是否过高。

以上分析的前提都是假设基本误差很小,训练集和验证集数据来自相同分布,如果没有 这些假设作为前提,分析过程更加复杂。

机器学习基础

在初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或者训练数据的性能(说明一下训练集误差在一定程度上反应偏差,但偏差有自己的计算公式,可以百度搜索下如何计算)。如果偏差的确很高,甚至无法拟合训练集,那么要做的就是选择一个新的网络,比如含有更多隐藏层或者隐藏单元的网络,或者花费更多的时间来训练网络,或者尝试更先进的优化算法。训练学 习算法时,会不断尝试这些方法,直到解决掉偏差问题,这是最低标准,反复尝试,直到 可以拟合数据为止,至少能够拟合训练集。

如果网络足够大,通常可以很好的拟合训练集,只要你能扩大网络规模。如果最优误差不是很高,那么训练一个更大的网络,你至少可以能很好的拟合训练集,至少可以拟合或者过拟合训练集。一旦偏差降低到可以接受的数值,检查一下方差有没有问题,为了评估方差,我们要看验证集性能。如果方差高,最好的解决方法就是采用更多的数据,如果我们无法获得更多的数据,我们也可以尝试正则化来减少过拟合。有时候我们不得不反复尝试,但是,如果能找到更合适的神经网络框架,有时它可能会一箭双雕,同时减少方差和偏差。

大家注意两点:

第一点,高偏差和高方差是两种不同的情况,我们后续要尝试的方法也可能完全不同, 通常会用训练验证集来诊断算法是否存在偏差或方差问题,然后根据结果选择尝试部分方法。举个例子,如果算法存在高偏差问题,准备更多训练数据其实也没什么用处,至少这不是更有效的方法,所以大家要清楚存在的问题是偏差还是方差,还是两者都有问题,明确这 一点有助于我们选择出最有效的方法。

第二点,在机器学习的初期阶段,关于所谓的偏差方差权衡的讨论屡见不鲜,原因是我们能尝试的方法有很多。可以增加偏差,减少方差,也可以减少偏差,增加方差,但是在深度学习的早期阶段,我们没有太多工具可以做到只减少偏差或方差却不影响到另一方。但在当前的深度学习和大数据时代,只要持续训练一个更大的网络,只要准备了更多数据,那么也并非只有这两种情况,我们假定是这样,那么,只要正则适度,通常构建一个更大的网络便可以,在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。这两步实际要做的工作是:训练网络,选择网络或者准备更多数据,现在我们有工具可以做到在减少偏差或方差的同时,不对另一方产生过多不良影响。我觉得这就是深度学习对监督式学习大有裨益的一个重要原因,也是我们不用太过关注如何平衡偏差和方差的一个重要原因,但有时我们有很多选择,减少偏差或方差而不增加另一方。最终,我们会得到一个非常规范化的网络。从下节课开始,我们将讲解正则化,训练一个更大的网络几乎没有任何负面影响,而训练一个大型神经网络的主要代价也只是计算时间,前提是网络是比较 规范化的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350