时间回到2012年,深度学习大佬 Hinton在其论文《Improving neural networks by preventing co-adaptation of feature detectors》中,提出了一种随机无差别消灭神经元的方法,
同样是2012年,Hinton大佬使用这种方法来训练 AlexNet,一种图像识别网络,赢得了2012年图像识别大赛冠军,引爆了神经网络应用的热潮。
从此,图像识别正式从科学界的研究中,走进了普罗大众的视野。
为何科学家钟爱这种无差别随机消灭的算法?
在AI算法中,这种随机无差别消灭神经元的方法,叫做 dropout。它是一种随机将神经元参数置为零的方法,神经元只有在参数非零的情况下,才能参与运算,对最终的结果产生影响,可想而知,将神经元参数置为零,意味着神经元不参与任何计算。
也就是说,神经元死了。
有的人活着,他已经死了。有的人死了,他还活着。
但神经元死了,可能比活着的作用还大。
只因为,死了的神经元,可以在神经网路模型的训练阶段,有效的防止训练过拟合。
什么是拟合
时间回到我们初中的数学课。
数学老师会给我们下面一张图。问有哪位同学能计算出一个函数出来,用来预测一个房子面积对应的房子价格?
数学成绩稳定在59分以上的同学,这时候可能都会举起手来喊道,“老师,这题我会!”
首先我们假设有一个直线 y = ax + b,然后算出每个点到直线的距离之和,当距离之和最短时,得到的a和b的值就是直线的参数,这样就得到了一个函数,也就是一条直线。
没错,这就是拟合,这种简单的拟合方法,叫做线性拟合,也叫线性回归!
在处理离散数据时,数据拟合是一个很常用的方法。
说到这你可能明白了,其实,神经网络的训练过程就是一个很复杂的拟合过程,它拟合出来的不再是一个简单的一次函数,而是可能连我们自己都不知道的一种函数,或者说是一个黑盒。
人工智能就通过这个黑盒的运算,来推断出,它看到的一张图片上,画的是一只狗,还是一只猫。
那什么是过拟合
假如老师又给了你下面一张散点图,让你用一种手段把所有的点都连接(拟合)起来。
小明同学的做法简单粗暴,画出了下面的图形,
看着还不错,拟合地刚刚好,已经把所有的点都连接起来了,而且点与点之间有一定的几何关系。
酷爱绘画的小红同学,拿到图之后,一顿操作猛如虎,得到下面的一张图,
初中老师看了小红惊为天人的操作,大惊失色,但却随后说出了一句:“你过拟合了。”
过拟合,就是说,这张可爱的小猫咪或许只能在我给你的这张图上用点连起来,我再给你其他的图,你可能就画不出来猫咪了,甚至连动物都有可能都连不起来了。
但是,上面小明同学的做法就很好,很有普适性,或者叫泛化性,给你任何的散点图,都可以画出那种横竖的线段出来。
神经网络的过拟合与人工智障
神经网络训练时处理的也是数据,有数据就有模型拟合,有模型拟合就有模型过拟合。
也就是说,模型训练的过头了,因为它只在给定的数据上做了十分精确的匹配,却缺少了泛化性!
比如我们只用自己家的一只白猫照片来训练一个什么也不知道的神经网络,无时无刻的不告诉他,这是一只猫。在神经网络看了1000遍照片之后,他懂了,他知道了这是一只猫。
可是突然有一天,又来了一只橘猫,甚至还戴着一顶圣诞帽。
神经网络懵了,没见过啊,活这么大只见过自家的白猫,这个橘色的头上还带着个东西的生物,是个啥?
这哪里算的上人工智能,典型的人工智障。
怎么解决
把神经网络的神经元每次都随机消灭一部分,让神经网络每次看到的自家白猫的图片不是一整张,而是分散的局部。
比如第一次看到的是一只猫耳朵,第二次看到的是一只猫眼睛,第三次看到的是猫嘴巴,经过若干轮的训练之后,即使这个神经网络看到一只猫咪的小爪子,他大概也会知道,哦,这是一只猫。
那么即使这时候来了一只开着飞机的猫,只要它有着和白猫一样的尖尖的耳朵,神经网络一眼就能认出它。
小样,你以为你穿个马甲我就不认你了。
...
人类大脑的模糊处理
而实际上,人类的脑神经在理处数据的候时,也不是每个数据都格严处理,大脑在处理信息时,也是一种类似的模糊处理方式,会随机的丢弃掉某些信息。
说到这你或许都没有发现,前面一句话,有3个中文词语是反着写的。
模糊处理有很多好处,最明显的就是,降低大脑的运行密度,我们不需要逐字逐句的解读,就能明白一句话的意思,丝毫不影响我们的阅读体验。
避免过拟合的其他方法
当然,在实际的神经网络训练过程中还有很多其他的方法可以防止过拟合的出现。比如数据增强、正则化(L1/L2)等方法。以后有机会会再写写正则的东西的。
欢迎持续关注。