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

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

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

一、概述

现在来到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 条评论
登录 后参与评论

相关文章

来自专栏量化投资与机器学习

用于算法交易的神经网络基于多变量时间序列

数据准备 为了更好地了解多维时间序列,让我们来看看如何看图像,其实也不只有两个尺寸(高度和宽度),还有表示颜色的“深度”: 在时间序列的情况下,我们的图像只是一...

312100
来自专栏人工智能LeadAI

机器学习必须熟悉的算法之word2vector(二)

在上一篇文章中,我们简述了skip gram版word2vector的基本原理,留下一个问题待解决,那就是网络非常大,这将导致如下几个困难:1、在上面训练梯度下...

44370
来自专栏机器之心

学界 | NTIRE2017夺冠论文:用于单一图像超分辨率的增强型深度残差网络

选自SNU 作者:Bee Lim等 机器之心编译 参与:Smith 图像超分辨率(SR)问题,尤其是单一图像超分辨率(SISR)问题,在近几十年中已经受到了广泛...

48850
来自专栏人工智能LeadAI

R-CNN 物体检测第二弹(Fast R-CNN)

今天,重看了 R-CNN 的后续改进 Fast R-CNN(Arxiv版)-本文中提到的paper,若未特别指明,说的就是此版本。 这里提一把辛酸泪。15年8月...

48260
来自专栏LhWorld哥陪你聊算法

【深度学习篇】--神经网络中的调优一,超参数调优和Early_Stopping

1、适当调整隐藏层数 对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比如对于复杂的问题我们可以在隐藏层上使用足够多的神经元就行了, 很长一段时间...

1.1K30
来自专栏集智的专栏

使用腾讯云 GPU 学习深度学习系列之六:物体的识别与定位

本文以如何识别马路上的行人、车辆为主题,介绍了基于 Tensorflow 的 SSD 模型如何应用在物体识别定位项目中。

2K120
来自专栏机器之心

入门 | 机器学习中常用的损失函数你知多少?

机器通过损失函数进行学习。这是一种评估特定算法对给定数据建模程度的方法。如果预测值与实际结果偏离较远,损失函数会得到一个非常大的值。在一些优化函数的辅助下,损失...

11220
来自专栏人工智能

通过协同绘制用GAN合成高分辨率无尽道路

来源:arXiv 编译:Bing 生成对抗网络一直是深度学习的重要工具,经过近几年的发展,GANs也衍生出了许多不同的模式,例如DCGANs、Wasserste...

23770
来自专栏AI科技大本营的专栏

OCR大突破:Facebook推出大规模图像文字检测识别系统——Rosetta

作者 | Fedor Borisyuk,Albert Gordo,Viswanath Sivakumar

64670
来自专栏PPV课数据科学社区

机器学习如何训练出最终模型

Jason Brownlee 2017年3月17日 我们用于对新数据进行预测的机器学习模型称为最终模型。 在应用机器学习时,如何训练出一个最终模型这可能是...

35170

扫码关注云+社区

领取腾讯云代金券