神经网络训练中的过拟合问题及解决方法

释放双眼,带上耳机,听听看~!
本文讨论了神经网络训练中的过拟合问题,介绍了Hinton提出的dropout方法,以及对神经元进行随机消灭的原理和作用。同时,通过简单的数学比喻,解释了过拟合的意义和影响,并提出了解决过拟合问题的方法。

大家好啊,我是董董灿。

2018年5月11日,《复仇者联盟3:无限战争》登陆大陆院线。无数漫威迷们聚集在大荧幕面前,看着灭霸一人单挑漫威众超级英雄。在6颗无限宝石集齐之后,灭霸毫不犹豫打响了宇宙中最重要的一个响指,刹那间,蜘蛛侠、奇异博士、黑豹、星爵等超级英雄,烟消云散。

“Why,Why Peter”? 电影院里,一个蜘蛛侠的超级粉丝哭着问道。我也不理解,但灭霸给出了答案:“我们这个宇宙资源不够了,需要随机的无差别消灭一半的宇宙生灵,来维持宇宙的资源平衡”。

对于灭霸这个回答,我给了一个大大的赞。人工智能模型训练中,也有一个类似于随机消灭人类的方法,只不过消灭不是人,而是神经网络中的一个个神经元。

随机消灭神经元

时间回到2012年,深度学习大佬 Hinton在其论文——《Improving neural networks by preventing co-adaptation of feature detectors》中,提出了一种随机无差别消灭神经元的方法。

同样是2012年,Hinton大佬使用这种方法来训练 AlexNet,一种图像识别网络,赢得了2012年图像识别大赛冠军,引爆了神经网络应用的热潮。

在神经网络训练算法中,这种随机无差别消灭神经元的方法,叫 dropout。它是一种随机将神经元参数置为零的方法。神经元只有在参数非零的情况下,才能参与运算,对最终的结果产生影响,可想而知,将神经元参数置为零,意味着神经元不参与任何计算。

也就是说,神经元死了。

  • 有的人活着,他已经死了。

  • 有的人死了,他还活着。

但神经元死了,可能比活着的作用还大。

只因为,死了的神经元,可以在神经网路模型的训练阶段,有效的防止训练过拟合。

什么是过拟合

时间回到初中的数学课。

数学老师会给我们下面一张图。问有哪位同学能计算出一个函数出来,用来预测一个房子面积对应的房子价格?

神经网络训练中的过拟合问题及解决方法

数学成绩不错的小明同学举起手来喊道,“老师,这题我会!”

首先我们假设有一个直线 y = ax + b,然后算出每个点到直线的距离之和,当距离之和最短时,得到的a和b的值就是直线的参数,这样就得到了一个函数,也就是一条直线。

没错,这就是拟合,这种简单的拟合方法,叫做线性拟合,也叫线性回归。

在处理离散数据时,数据拟合是一个很常用的方法。说到这你可能明白了,其实,神经网络的训练过程就是一个很复杂的拟合过程,它拟合出来的不再是一个简单的一次函数,而是可能连我们自己都不知道的一种函数,或者说是一个黑盒。

神经网络训练中的过拟合问题及解决方法

人工智能就通过这个黑盒的运算,来推断出,它看到的一张图片上,画的是一只狗,还是一只猫。

那什么是过拟合?

假如老师又给了你下面一张散点图,让你用一种手段把所有的点都连接(拟合)起来。

神经网络训练中的过拟合问题及解决方法

小明同学的做法简单粗暴,画出了下面的图形,

神经网络训练中的过拟合问题及解决方法

看着还不错,拟合地刚刚好,已经把所有的点都连接起来了,而且点与点之间有一定的几何关系。酷爱绘画的小红同学,拿到图之后,一顿操作猛如虎,得到下面的一张图,

神经网络训练中的过拟合问题及解决方法

初中老师看了小红惊为天人的操作,大惊失色,但却随后说出了一句:“你过拟合了。”

过拟合,就是说,这张可爱的小猫咪或许只能在我给你的这张图上用点连起来,我再给你其他的图,你可能就画不出来猫咪了,甚至连动物都有可能都连不起来了。

但是,上面小明同学的做法就很好,很有普适性,或者叫泛化性,给你任何的散点图,都可以画出那种横竖的线段出来。

神经网络的过拟合与人工智障

神经网络训练时处理的是数据。有数据就有模型拟合,有模型拟合就有模型过拟合。也就是说,模型训练的过头了,因为它只在给定的数据上做了十分精确的匹配,却缺少了泛化性!

神经网络训练中的过拟合问题及解决方法

假设我们用自家的一只白猫照片来训练一个什么也不知道的神经网络,无时无刻的不告诉他,这是一只猫。在神经网络看了1000遍照片之后,它懂了,它知道了这是一只猫。可是突然有一天,又来了一只橘猫,甚至还戴着一顶圣诞帽。

神经网络训练中的过拟合问题及解决方法

神经网络懵了,没见过啊,活这么大只见过白猫,这个橘色的头上还带着个东西的生物,是个啥?

这不是人工智能,而是人工智障。怎么解决?灭霸说,放着我来。把神经网络的神经元每次都随机消灭一部分,让神经网络每次看到的自家白猫的图片不是一整张,而是分散的局部。

比如第一次看到的是一只猫耳朵,第二次看到的是一只猫眼睛,第三次看到的是猫嘴巴。

经过若干轮的训练之后,即使这个神经网络看到一只猫咪的小爪子,他大概也会知道,哦,这是一只猫。

那么即使这时候来了一只开着飞机的猫,只要它有着和白猫一样的尖尖的耳朵,神经网络一眼就能认出它。

dropout 技术可以有效增强网络训练时的泛化能力,同时可以很好地减轻训练的计算机负载,因为有不少的节点在一次训练过程中不会参与运算。

本文为作者原创,请勿随意转载

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

人脸考勤系统搭建指南

2023-12-6 14:27:14

AI教程

Byte Pair Encoding(BPE)算法详解及Java代码示例

2023-12-6 14:30:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索