改善深层神经网络(吴恩达)_深度学习的应用层面

这是本系列的第三篇了,主要会谈到:参数与超参数、数据的划分、偏差与方差、正则化


  • 参数与超参数:

在前面的学习中,了解到神经网络中的参数其实有很多,例如权重w、偏置b,学习率α,隐藏层数、隐藏层神经元个数、激活函数等。观察后我们会发现,前面的参数w、b是神经网络能够通过训练,自己不断优化的,这样就叫参数。而后面这些参数,例如学习率α、激活函数的是选择都是要人们通过所谓的经验来设定的,并且这些参数的设定能够影响参数w、b的值,这样的参数我们就叫超参数。也可以简单的这样理解:能够通过训练,自动学习出的变量就叫参数,而通过经验人为设定,并且能影响参数的变量就叫超参数。在今天的深度学习应用领域,超参数的选择还是偏经验性的,并且要不断的试,才能达到一个理想的状态。


例如开始我们选择α=0.01,在迭代优化的过程中,发现成本函数J不但没有下降,反而在上升,这就表明该α的值明显不合适,于是令α=0.05,这时发现成本函数J是下降的,最后多次试验α的取值,使得成本函数J收敛的最快且最小。(以上只是无脑假设,只为表明超参数的设定过程是需要不断修改的


  • 数据的划分:

神经网络的一个重要部分就是利用海量数据完成对模型的训练,那么就是将收集到的可用的数据全部投入训练吗?显然不是,在现在的应用型神经网络中,数据一般会分成3类数据集:训练集、验证集和测试集。训练集很好理解,用以模型的训练,优化参数w、b。而验证集的目的则是验证不同的算法,检验哪种算法更有效,也可以理解为是优化模型的超参数的。通过前面两个数据集的训练,模型的参数和超参数都已经确定,那么这时就需要测试集来做最后的测试,评估该模型的泛化性能。关于验证集和测试集也可以看看这篇博客:深度学习:验证集 & 测试集 区别,里面的这张表格我觉的总结的很好:

    


  • 偏差与方差:

在理解这个之前,首先要了解什么是欠拟合,什么是过拟合。这两个概念实际上表明的是神经网络模型对数据的拟合程度,当模型对训练数据的预测误差很小,而对训练数据以外的在新数据的预测误差较大,这就是过拟合,反之,若模型对训练数据的预测误差较大,则是欠拟合。


这张图可以很直观的表现了过拟合和欠拟合:图①中的线性划分,明显不能很好的拟合数据,而在图③中,又太过于拟合训练数据,图②是一个刚刚好的拟合状态。关于偏差和方差,这几篇博客写的很不错,通俗易懂:理解机器学习中的偏差与方差机器学习中的偏差和方差高偏差即意味着欠拟合,高方差则意味着过拟合,在实际的神经网络训练中,我们既不要欠拟合,也不要过拟合,而是试图寻找一个恰当的拟合状态。而要解决过拟合,即高方差问题,一般来说有两种方法:一是下面要说到的正则化,二是加大数据量。


  • 正则化:

说实话初看这个名词,瞬间联想到了正则表达式,然而,了解其含义后,发现和正则表达式没有任何关系!不得不吐槽一下这个中文翻译。正则化其实是由regularization翻译而来。看到英文瞬间明白了一半有没有,直接叫规则化嘛。

首先要明确:正则化是为了防止过拟合,使模型对数据适度拟合的规则。那么既然正则化是代表着规则,那么规则就不会只有一种,故有很多种正则化方法,也可以理解为有很多种规则可以防止过拟合。这里只说说视频课程中谈到的2种正则化:L2正则化和Dropout正则化。在这之前,我觉得应该先了解下为什么会过拟合,或者说过拟合是怎样形成的?在最简单的Logistic回归和浅层神经网络模型中,由于神经元和隐藏层较少,故一般都只会出现欠拟合现象(上图②)。为了解决欠拟合问题,我们增加神经元和隐藏层数量,使之成为深层神经网络,随着训练迭代次数的增加,权重参数w的值也越来越大,对训练数据的拟合程度“越来越好”,但似乎好的有点“过分”了(上图③),于是出现了过拟合现象。ok,到这儿已经大致了解过拟合的形成过程,于是就可以从过程中找到解决过拟合的方法,例如权重参数w不是越来越大吗?那么我这里就设定一种规则,限制一下权重参数w,使之减小,这就是L2正则化的思路;神经元的数量不是越来越多吗?那么我就尝试在每次训练迭代中随机减少神经元的数量,这就是Dropout正则化的思路。有了大体的思路,下面的分析就会容易很多:

L2正则化,也叫权重衰减,即在代价函数(或损失函数)后加上一个正则化项:


为了看着简单,这里用C0表示损失函数J,后面的则是L2正则化项,这里稍微了解下L2正则化项是怎样计算的,它是权重向量w各个元素的平方和再开方(即向量的模),对应到矩阵,则应该是矩阵行列式的值。λ则是正则项系数。至于具体的L2正则化是如何在反向传播中减小权重w值的,我这里先不仔细探究,现在基础阶段的学习,重要的要知道L2正则化的效果是减小w的值,使得神经网络的复杂度降低,从而减小拟合程度。

Dropout正则化,看到dropout有没有点感觉?有没有点丢掉的意思?(突然觉得英文挺好的,更好理解)。上面的L2正则化是通过修改损失函数,从而减小权重参数w,最后解决过拟合问题。这里的Dropout正则化则是改变神经网络的结构来解决过拟合问题。可以这样理解,dropout会遍历神经网络的每一层,并通过事先设定的概率来消除某些节点(神经元),假设神经网络的每一层,每个节点都以抛硬币的方式设定概率,每个节点保留或消除的概率都是0.5,那么设置完概率后,会随机消除一些节点(并不是真正的删除该节点,只是在当前迭代中不使用该节点),并删掉与该节点有关的连线,最后得到一个节点数量更少的神经网络。


注:以上部分内容来自他人博客,关于正则化还可以具体看看:深度学习:正则化(L2、dropout)知乎回答



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值