dropout 算法是如何防止过拟合的

简介: dropout在训练的过程中,可以很好的防止过拟合,是因为它可以随机性的让一些神经元不处于激活状态。

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

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

从此,图像识别正式从科学界的研究中,走进了普罗大众的视野。

为何科学家钟爱这种无差别随机消灭的算法?

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

也就是说,神经元死了。

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

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

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

什么是拟合

时间回到我们初中的数学课。

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

image.png

数学成绩稳定在59分以上的同学,这时候可能都会举起手来喊道,“老师,这题我会!”

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

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

在处理离散数据时,数据拟合是一个很常用的方法。

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

image.png

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

那什么是过拟合

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

image.png

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

image.png

看着还不错,拟合地刚刚好,已经把所有的点都连接起来了,而且点与点之间有一定的几何关系。

酷爱绘画的小红同学,拿到图之后,一顿操作猛如虎,得到下面的一张图,

image.png

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

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

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

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

神经网络训练时处理的也是数据,有数据就有模型拟合,有模型拟合就有模型过拟合。

也就是说,模型训练的过头了,因为它只在给定的数据上做了十分精确的匹配,却缺少了泛化性!

image.png

比如我们只用自己家的一只白猫照片来训练一个什么也不知道的神经网络,无时无刻的不告诉他,这是一只猫。在神经网络看了1000遍照片之后,他懂了,他知道了这是一只猫。

可是突然有一天,又来了一只橘猫,甚至还戴着一顶圣诞帽。

image.png

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

这哪里算的上人工智能,典型的人工智障。

怎么解决

把神经网络的神经元每次都随机消灭一部分,让神经网络每次看到的自家白猫的图片不是一整张,而是分散的局部。

比如第一次看到的是一只猫耳朵,第二次看到的是一只猫眼睛,第三次看到的是猫嘴巴,经过若干轮的训练之后,即使这个神经网络看到一只猫咪的小爪子,他大概也会知道,哦,这是一只猫。

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

小样,你以为你穿个马甲我就不认你了。

...

人类大脑的模糊处理

而实际上,人类的脑神经在理处数据的候时,也不是每个数据都格严处理,大脑在处理信息时,也是一种类似的模糊处理方式,会随机的丢弃掉某些信息。

说到这你或许都没有发现,前面一句话,有3个中文词语是反着写的。

模糊处理有很多好处,最明显的就是,降低大脑的运行密度,我们不需要逐字逐句的解读,就能明白一句话的意思,丝毫不影响我们的阅读体验。

避免过拟合的其他方法

当然,在实际的神经网络训练过程中还有很多其他的方法可以防止过拟合的出现。比如数据增强、正则化(L1/L2)等方法。以后有机会会再写写正则的东西的。

欢迎持续关注。

相关文章
|
1天前
|
机器学习/深度学习 数据采集 算法
|
机器学习/深度学习 算法
Interview:算法岗位面试—10.24下午—上海某软件公司(机器学习,上市)电话面试—考察SVM、逻辑回归、降低过拟合、卷积网络基础等
Interview:算法岗位面试—10.24下午—上海某软件公司(机器学习,上市)电话面试—考察SVM、逻辑回归、降低过拟合、卷积网络基础等
|
人工智能 算法 Python
07 回归算法 - 过拟合欠拟合 - 案例
1、引入头文件 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import pandas as pd import warnings import sklearn from sklearn.
1413 0
|
算法
06 回归算法 - 损失函数、过拟合欠拟合
== 损失函数 == 损失函数是衡量一个模型好坏的指标,一般来说损失函数的值越小越好。 0~1损失函数: J(θ)=$begin{cases}1,Y≠f(X)\0,Y=f(X)\end{cases}$ 如果预测值不等于真实值,J(θ)值加1。
2978 0
|
1天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
1天前
|
算法 计算机视觉
基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真
该内容是关于使用MATLAB2013B实现基于高斯混合模型(GMM)的视频背景提取和人员跟踪算法。算法通过GMM建立背景模型,新帧与模型比较,提取前景并进行人员跟踪。文章附有程序代码示例,展示从读取视频到结果显示的流程。最后,结果保存在Result.mat文件中。
|
1天前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
9 1
|
1天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
1天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
15 1
|
1天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】