查看原文
其他

跟清华大学马少平教授学AI:第一篇 神经网络是如何实现的(六)

马少平 图灵人工智能 2024-03-07

点击上方“图灵人工智能”,选择“星标”公众号

您想知道的人工智能干货,第一时间送达

                         

第一篇 神经网络是如何实现的(六)

清华大学计算机系 马少平


第六节:过拟合问题




小明:艾博士,这些神经网络设计的好复杂啊,这些复杂的神经网络也是通过BP算法进行训练的吗?


艾博士回答说:这些年神经网络的发展确实是越来越复杂了,应用领域越来越广,性能也越来越好,但是训练方法还是依靠BP算法。也有一些对BP算法的改进算法,但是大体思路基本是一样的,只是对BP算法个别地方的一些小改进,比如变步长、自适应步长等。还有就是,由于训练数据存在噪声,训练神经网络时也并不是损失函数越小越好。当损失函数特别小时,可能会出现所谓的“过拟合”问题,导致神经网络在实际使用时性能严重下降。


小明不解地问:什么是过拟合呢?


艾博士解释说:如图1.37所示,图中蓝色圆点给出的是6个样本点,假设这些样本点来自于某个曲线的采样,但是我们又不知道原曲线是什么样子,如何根据这6个样本点“恢复”出原曲线呢?这就是拟合问题。图1.37给出了3种拟合方案,其中绿色的是一条直线,显然拟合的有些粗糙,蓝色曲线有点复杂,经过了每一个样本点,该曲线与6个采样点完美地拟合在一起,似乎是个不错的结果,但是为此付出的代价是曲线弯弯曲曲,感觉是为拟合而拟合,没有考虑6个样本点的分布趋势。考虑到采样过程中往往是含有噪声的,这种所谓的完美拟合其实并不完美。红色曲线虽然没有经过每个样本点,但是更能反映6个样本点的分布趋势,很可能更接近于原曲线,所以有理由认为红色曲线更接近原始曲线,是我们想要的拟合结果。如果我们用拟合函数与样本点的误差平方和作为拟合好坏的评价,也就是损失函数,绿色曲线由于距离样本点比较远,损失函数最大,蓝色曲线由于经过了每个样本点,误差为0,损失函数最小,而红色曲线的损失函数介于二者之间。绿色曲线由于拟合的不够,我们称作欠拟合,蓝色曲线由于拟合过渡,我们称为过拟合,而红色曲线是我们希望的拟合结果。在神经网络的训练中,也会出现类似的欠拟合和过拟合的问题。


小明不太明白地问到:欠拟合显然是不好的结果,过拟合会带来什么问题呢?


图1.37 过拟合问题示意图


图1.38 神经网络训练、测试示意图


艾博士解释说:我们把样本集分成训练集和测试集两个集合,训练集用于神经网络的训练,测试集用于测试神经网络的性能。如图1.38所示,纵坐标是错误率,横坐标是训练时的迭代轮次。红色曲线是在训练集上的错误率,蓝色曲线是测试集上的错误率。每经过一定的训练迭代轮次后,就测试一次训练集和测试集上的错误率。从图中可以发现,在训练的开始阶段,由于处于欠拟合状态,无论是训练集上的错误率还是测试集上的错误率,都随着训练的进行逐步下降。但是当训练迭代轮次达到N次后,测试集上的错误率反而逐步上升了,这就是出现了过拟合现象。测试集上的错误率相当于神经网络在实际使用中的表现,因此我们希望得到一个合适的拟合,使得测试集上的错误率最小,所以应该在迭代轮次达到N次时,就结束训练,以防止出现过拟合现象。


小明:我明白了,所以说训练时并不是损失函数越小越好。那么如何知道是否过拟合了呢?


艾博士:这是一个非常好的问题。何时开始出现过拟合并不容易判断。一种简单的方法就是使用测试集,做出像图1.38那样的错误率曲线,找到N点,用在N点得到的参数值作为神经网络的参数值就可以了。


小明:这种办法倒是简单、直观。


艾博士:这种方法要求样本集合比较大才行,因为无论是训练还是测试都需要比较多的样本才行。而实际使用时往往是面临样本不足的问题。


小明:那怎么办呢?还有其他什么办法呢?


艾博士:为解决过拟合问题,研究者提出了一些方法,可以有效缓解过拟合问题。下面我们讲几种常用的方法,当然每种方法都不是万能的,只能说在一定程度上弱化了过拟合问题。

 

(1)正则化项法

艾博士:小明,你还记得我们讲BP算法时,用的什么损失函数吗?


小明:我记得损失函数是这样的:


艾博士:对,小明记得很清楚。我们在这个损失函数上增加一个正则化项  ,变成:



其中  表示权重w的2-范数,  表示2-范数的平方。


小明不解的问题:w的2-范数?2-范数是什么意思呢?


艾博士解释说:w的2-范数就是每个权重  平方后求和再开方,这里用的是2-范数的平方,所以就是权重的平方和了。如果用  表示第i个权重,则:


  


当然这里并不局限于2-范数,也可以用其他的范数。


小明问到:为什么增加了正则化项后就可以避免过拟合呢?


艾博士:添加了正则化项的损失函数,相当于在最小化损失函数的同时,要求权重也尽可能地小,相当于限制了权重的变化范围。还是以图1.39所示的曲线拟合为例说明,作为一般的情况,一个曲线拟合函数f(x)可以认为是如下形式:

如果f(x)中包含的  项越多,n越大,则f(x)越可以表示复杂的曲线,拟合能力就越强,也更容易造成过拟合。


比如在图1.39中所示的3条曲线,绿色曲线是个直线,其形式为:


  


图1.39 拟合函数示意图


只含有x项,只能表示直线,所以就表现为欠拟合。而对于其中的蓝色曲线,其形式为:

含有5个  项,表达能力比较强,从而造成了过拟合。而对于其中的红色曲线,其形式为:


  


含有2个  项,对于这个问题来说,可能刚好合适,所以体现了比较好的拟合效果。但是在实际当中呢,我们很难知道应该有多少个  项是合适的,有可能  项是比较多的,通过在损失函数中加入正则化项,使得权重w尽可能地小,在一定程度上可以限制过拟合情况的发生。比如对于蓝色曲线:

 


虽然它含有5个  项,但是如果我们最终得到的  、  、  都比较小的话,那么也就与红色曲线:


  


比较接近了。


对于一个复杂的神经网络来说,一般具有很强的表达能力,如果不采取专门的方法加以限制的话,很容易造成过拟合。

 

(2)舍弃法

艾博士解释说:所谓的舍弃法,就是在训练神经网络的过程中,随机地临时删除一些神经元,只对剩余的神经元进行训练。哪些神经元被舍弃是随机的,并且是临时的,只在这次权重更新中被舍弃,下一次更新时哪些神经元被舍弃,再重新随机选择,也就是说每进行一次权重更新,都要重新做一次随机舍弃。图1.40给出了一个舍弃示意图,图中虚线所展示的神经元表示被临时舍弃了,可以认为这些神经元被临时从神经网络中删除了。舍弃只发生在训练时,训练完成后在使用神经网络时,所有神经元都被使用。


小明不解地问到:这么做为什么可以减少过拟合呢?


艾博士回答说:一个神经网络含有的神经元越多,表达能力越强,越容易造成过拟合。所以简单地理解就是在训练阶段,通过舍弃减少神经元的数量,得到一个简化的神经网络,降低了神经网络的表达能力。但是由于每次舍弃的神经元又是不一样的,相当于训练了多个简化的神经网络,在使用神经网络时又是使用所有神经元,所以相当于多个简化的神经网络集成在一起使用,既可以减少过拟合,又能保持神经网络的性能。举一个例子说明这样做的合理性。比如有10个同学组成一个小组做实验,如果10个同学每次都一起做,很可能就是两三个学霸在起主要作用,其他同学得不到充分的训练。但是如果引入“舍弃机制”,每次都随机地从10名同学中选取5名同学做实验,这样会有更多的同学得到了充分的训练。当10名同学组合在一起开展研究时,由于每个同学都得到了充分的训练,所以10人组合在一起会具有更强的研究能力。


图1.40 舍弃法示意图


小明:这个比喻好,我明白了。那么每次有多大比例的神经元被舍弃呢?


艾博士回答说:舍弃是在神经网络的每一层进行的,除了输入层和输出层外,每一层都会发生舍弃,舍弃的比例大概在50%左右,也就是说在神经网络的每一层,都大约舍弃掉50%左右的神经元。


小明:原来会有这么大的舍弃比例啊。


(3)数据增强法

艾博士接着讲道:还有一种防止过拟合的方法称作数据增强法。在曲线拟合中,如果数据足够多,过拟合的风险就会变小,因为足够多的数据会限制拟合函数的激烈变化,使得拟合函数更接近原函数。


小明问艾博士:那么如何得到更多的数据呢?


艾博士说:除了尽可能收集更多的数据外,可以利用已有的数据产生一些新数据。比如想识别猫和狗,我们已经有了一些猫和狗的图片,那么可以通过旋转、缩放、局部截取、改变颜色等方法,将一张图片变换成很多张图片,使得训练样本数量数十倍、数百倍地增加。实验表明,通过数据增强可以有效提高神经网络的性能。


小明读书笔记

由于数据存在噪声等原因,在神经网络的训练过程中并不是损失函数越小越好,因为当训练到一定程度后,进一步减少训练集上的误差,反而会加大在测试集上的误差。这一现象称为过拟合。


有三种减少过拟合的方法:


(1)正则项法。也就是在损失函数中增加正则项,让权重尽可能地小,达到防止过拟合的目的。


(2)舍弃法。在训练过程中,随机地临时舍弃一部分神经元,每次舍弃都相当于只训练一个子网络。其结果相当于训练了多个子网络再集成在一起使用,网络的每个部分都得到了充分的训练,从而提高了神经网络的整体性能。


(3)数据增强法。一般来说,训练数据越大,训练的神经网络性能会越好。当没有足够多的训练数据时,可以通过对已有数据进行处理产生新的数据的办法,增大训练数据。这一方法称为数据增强方法。比如对于图像数据,可以通过旋转、缩放、局部截取、改变颜色等方法,将一张图片变换成很多张图片,使得训练样本数量数十倍、数百倍地增加。


未完待续

各位朋友如有任何意见和建议,请点击下面的“写留言”,留下您宝贵的意见和建议。

内容来自《艾博士:深入浅出人工智能》,扫描如下二维码购买:

马少平,清华大学计算机系长聘教授,博世知识表示与推理冠名教授,天工智能计算研究院常务副院长,中国人工智能学会副监事长,中国中文信息学会副理事长。主要研究方向为智能信息处理、信息检索、推荐系统等。

本书入围“一生一课,一生一书”计划项目,是最好的人工智能通俗讲义之一。


 本书设计了博学的艾博士和好学的小明两个人物,以师徒二人对话的方式,一步步由浅入深地讲解人工智能的基本原理和方法,讲解详细,通俗易懂,给读者以在教室听课的真实感。

本书精心挑选了人工智能发展史上一些主要的方法进行详细讲解,通过本书的学习,使得读者对人工智能有一个比较全面的了解,为进一步深入学习和研究人工智能打下良好的基础。

结合例题,本书对相关概念和算法背后的原理做了详细的讲解,对学习过程中容易犯的错误做了重点说明,适合于对人工智能感兴趣的初学者、从事人工智能开发的工程人员以及讲授相关课程的教师阅读,通过本书的学习,可以对相关概念和算法有更加深入的理解。

本书提供全部的讲课PPT,在微信公众号“跟我学AI”和B站(在B站搜“马少平”)还配有详细的讲课视频,可以通过前言中提供的二维码获取这些资源。

扫描如下二维码加入马少平教授读者群

版权声明

  版权属于原作者,仅用于学术分享

文章精选:

  1. 从诺奖风向标,到《Nature》雄文:人工智能再度封神,科学范式终将颠覆?

  2. MIT惊人证明:大语言模型就是「世界模型」?吴恩达观点再被证实,LLM竟能理解空间和时间

  3. 走向最小统一意识模型

  4. 图灵奖得主Yann LeCun舌战参议院:捍卫Llama开源大模型

  5. 从计算到人类知识:ChatGPT与智能演化

  6. 为了获得停车位,这所高校诞生了 110 位诺奖得主

  7. 为什么开源大模型终将胜出?

  8. 人工智能的终极基础是哲学认识论

  9. 图灵奖获得者专辑|图灵奖获得者、信息安全常青树Adi Shamir:从密码学到AI对抗性样本研究

  10. 图灵奖获得者专辑|图灵奖得主 Yann LeCun:AI 仅仅学语言走不远




继续滑动看下一个

跟清华大学马少平教授学AI:第一篇 神经网络是如何实现的(六)

向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存