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)等方法。以后有机会会再写写正则的东西的。

欢迎持续关注。

相关文章
|
8月前
|
机器学习/深度学习 数据采集 算法
|
机器学习/深度学习 算法
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.
1454 0
|
算法
06 回归算法 - 损失函数、过拟合欠拟合
== 损失函数 == 损失函数是衡量一个模型好坏的指标,一般来说损失函数的值越小越好。 0~1损失函数: J(θ)=$begin{cases}1,Y≠f(X)\0,Y=f(X)\end{cases}$ 如果预测值不等于真实值,J(θ)值加1。
3084 0
|
9天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
143 80
|
3天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
2天前
|
算法
基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
本项目基于梯度流的扩散映射卡尔曼滤波算法(GFDMKF),用于信号预处理的MATLAB仿真。通过设置不同噪声大小,测试滤波效果。核心代码实现数据加载、含噪信号生成、扩散映射构建及DMK滤波器应用,并展示含噪与无噪信号及滤波结果的对比图。GFDMKF结合非线性流形学习与经典卡尔曼滤波,提高对非线性高维信号的滤波和跟踪性能。 **主要步骤:** 1. 加载数据并生成含噪测量值。 2. 使用扩散映射捕捉低维流形结构。 3. 应用DMK滤波器进行状态估计。 4. 绘制不同SNR下的轨迹示例。
|
6天前
|
机器学习/深度学习 算法 索引
单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA
本项目使用FW烟花优化算法求解单目标问题,并在MATLAB2022A中实现仿真,对比PSO和GA的性能。核心代码展示了适应度计算、火花生成及位置约束等关键步骤。最终通过收敛曲线对比三种算法的优化效果。烟花优化算法模拟烟花爆炸过程,探索搜索空间,寻找全局最优解,适用于复杂非线性问题。PSO和GA则分别适合快速收敛和大解空间的问题。参数调整和算法特性分析显示了各自的优势与局限。
|
28天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。

热门文章

最新文章