深层神经网络参数调优(一) ——方差、偏差与正则化

深层神经网络参数调优(一)——方差、偏差与正则化

(原创内容,转载请注明来源,谢谢)

一、概述

现在来到ng【深层神经网络参数调优】专题的学习,这部分主要是对深度学习过程中,需要涉及到的参数、超参数的调优的方法与技巧。

二、样本集的使用

1、三个集

在深度学习中,为了检验算法的效果,通常会设置训练集、验证集和测试集。

训练集用来训练分类器,得到最低代价函数情况下,各层网络对应的w、b。

验证集用来调试的,目的是为了获得最优的超参数,如学习速率α、正则化因子λ等。

测试集用来验证训练集得到的结果,确认错误率、召回率、查准率都在正常水平。

2、样本集使用

通常,如果数据量不大(如万级别),一般来说,分成三个集的比例训练:验证:测试 = 6:2:2。

当数据量非常大的时候(如百万以上),则并不需要那么多的数据进行验证和测试,反而会大量的进行训练,有可能会到99.5:0.25:0.25。

3、数据源

有时候,测试需要在app之类的地方,而这类地方不容易拿到大量数据,会造成训练和测试的数据源不同。这种情况下,至少需要保证测试和验证集是同一个数据源。

三、方差与偏差

1、直观判断

以下图为例,蓝线是拟合出来的分类线,左边高偏差/欠拟合,中间正常,右边高方差/过拟合。

高偏差表示拟合程度不够,会导致训练误差很大;高方差表示训练集过拟合,但是这样会导致验证集无法正常拟合。

2、判别方差和偏差

当测试集的测试结果,不满足情况,就需要判断是过拟合还是欠拟合引起的。首先,假设给定的最终结果的错误率是0%,即所有样本给出的分类结果都是正确的。这个样本分类结果的错误率,称为贝叶斯错误率。下面考虑几种情况:

1)高方差过拟合

当训练集错误率很低,如1%,而验证集错误率比训练集的错误率高得多,如11%,则此时样本很好的被训练,但是过度训练,导致无法很好的对验证集进行判别,此时就成为过拟合。

2)高偏差欠拟合

当训练集错误率较高(这里的较高是相对于贝叶斯错误率),如15%,而验证集错误率和训练集差不多,如16%,则可以看出此时欠拟合,训练集都没有被拟合好。

3)高方差+高偏差

当计算出的错误率,训练集的比贝叶斯错误率高得多(高偏差),验证集的比训练集的还要高得多(高方差),则此时既高方差,又高偏差,如下图所示:

4)正常情况

训练集、验证集错误率相近,且都和贝叶斯错误率相近。

3、调试过程

1)当完成一个模型后,首先会计算训练集的错误率,以判断是否存在高偏差。如果是,则通常会加大神经网络的深度、神经元数量等,再次验证,直到没有了高偏差。

2)没有高偏差后,会计算验证集的错误率,以判断是否存在高方差。如果是,则会拿更多的数据参与训练,或者调整正则化参数,并且重新回到第一步,验证偏差。

3)通常方差和偏差存在一个均衡,很可能一个调整降低了另一个就升高了。但是通常深层的神经网络,可以同时降低两者。

四、正则化

1、概述

正则化,即在代价函数的公式,后面加上一个式子,是对w的计算,目的是为了解决过拟合。正则化通常分为两种——L1正则化和L2正则化,区别在于||w||是否平方。L2用的更频繁。

另外,由于b只是一组数,而w是一个矩阵,印象更大,因此通常正则化项不用考虑b。

2、梯度下降

正则化项加入代价函数后,也要参与梯度下降的计算,经过计算dJ/dw,可以看出加入正则化项后,这个值变大了。即后面调参的时候w=w-αdw的值更小了,因此正则化项的加入,也被称为权重衰减。

3、正则化解决过拟合的原因

1)直观了解

当正则化项的值比较大,而我们对代价函数的优化是让其尽量小,因此也就导致w的值会普遍减小,影响力会逐渐降低,让式子趋于线性。且每层神经元的影响,会被调整成1个神经元的影响,相当于深层单神经元的网络。当λ太大,还有可能出现欠拟合的情况。

2)数学推导

从前面的说明中,已知λ增大会导致正则化的值增大,进而导致w减小。而根据z的计算公式,z=wx+b,w减少会造成z减少。假设激活函数是tanh,则其图像在z很小时,是一个近似线性的图像,即结果趋于线性。

五、总结

本文主要是讨论样本的使用与正则化项,这些是在实际进行深度学习较为实用的内容。

另:已经开通博客园,方便我自己随时复习,朋友们如果想更方便的看历史文章,也欢迎到博客园 http://www.cnblogs.com/linhxx ,不过我比较懒。。两边一起编辑真的好麻烦,我主要还是会在这边发文章,然后阶段性的把文章同步过去。

——written by linhxx 2018.02.04

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-02-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏磐创AI技术团队的专栏

一个完整的机器学习项目在Python中演练(四)

1125
来自专栏机器之心

被Geoffrey Hinton抛弃,反向传播为何饱受质疑?(附BP推导)

机器之心整理 机器之心编辑部 现在的深度学习发展似乎已经陷入了大型化、深度化的怪圈,我们设计的模型容易被对抗样本欺骗,同时又需要大量的训练数据——在无监督学习...

36112
来自专栏悦思悦读

「机器学习」学到多深够用?

机器学习现在热得一塌糊涂,码农要是不会点机器学习,都不好意在IT界混了。 机器学习难吗?一大堆公式,好像很难的样子。不过,看人家用起来,也不过就是下载几个软件...

2736
来自专栏数据派THU

独家 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)

本文将通过两个简单的例子,讲解确定所需隐藏层和神经元数量的方法,帮助初学者构建神经网络。

380
来自专栏华章科技

浅说深度学习

在机器学习中,我们(1)读取数据,(2)训练模型,(3)使用模型对新数据做预测。训练可以看作是当模型拿到新数据的时候、逐步学习一个的过程。在每一步,模型做出预测...

972
来自专栏技术小站

吴恩达深度学习笔记 course3 week2 机器学习 策略(2)

例:当我们在训练一个模型的时候,我们的准确率是90%,bayes optimized bias是0%,这个时候错误率达到了10%,那么我们如何分析是哪错了,并且...

802
来自专栏机器之心

学界 |「分段映射」帮助利用少量样本习得新类别细粒度分类器

1372
来自专栏智能算法

机器学习算法比较

来自:D.W's Notes - Machine Learning 作者:刘帝伟 链接:http://www.csuldw.com/2016/02/26/201...

35112
来自专栏华章科技

机器学习算法比较

机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始...

573
来自专栏IT派

机器学习各类算法比较

导语:机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常...

40512

扫描关注云+社区