首页 > 编程知识 正文

论文forthcoming,study19研究

时间:2023-05-04 13:45:43 阅读:175088 作者:2449

前言:目录1,背景1.1,为什么需要激活函数? 1.2、大脑工作原理:稀疏性原理1.3、稀疏性优点2、ReLU定义3、ReLU函数优缺点3.1、优点3.2、缺点4、PyTorch实现Reference前言

论文地址: https://proceedings.MLR.press/v 15/GLO rot 11 a/GLO rot 11 a.pdf。

贡献:基于生物神经元工作原理描述激活函数稀疏性的益处,基于稀疏性原理描述新的线性激活函数(relu ) (rectifiedlinearuint,也称为线性校正单元) (包括稀疏性)。

与以前的Sigmoid/tanh相比,ReLU具有以下优势:

不会发生梯度消失问题。 Sigmoid函数在x0上会出现梯度消失问题,导致信息丢失,无法进行深度网络训练。 另一方面,当x0为线性结构时,ReLU函数具有一定的梯度,不会消失。 ReLU激活函数在x0输出为0 (不激活),可能会导致网络稀疏。 从而可以很好地模拟人脑神经元的工作原理,减少参数之间的相互依赖,缓解了过拟合问题的发生。 Sigmoid函数复杂,求解计算量大(前向传播)、反向传播)制导),速度慢; 另一方面,ReLU函数简单,计算量小,速度快。 一.背景1.1、为什么需要激活函数? 已知卷积神经网络的每一层都是线性操作,层与层之间不加入激活函数,无论网络有多少层,输出值都是输入值的线性组合,这种模型的表达能力不够。 请看以下两种情况。

如果数据是线性的、可时分的:

此时,可以找到对数据进行分类的直线。 我们的模型不需要添加任何激活函数就可以完全完成。

但是,这是一种简单的情况,现实中的数据大多是不能线性分离的。 下图:

我们的模型如果不加入任何激活函数,就找不到划分数据的直线。 因为我们的模型缺乏表达能力,没有非线性表达能力,所以不能执行复杂的任务。 因此,为了完成更复杂的任务,必须在层与层之间添加激活函数以提高模型的非线性表示能力。

1.2、大脑的工作原理:在稀疏原理论文中,为了说明人脑的工作原理,花费了大量的篇幅。 通过研究人脑的能耗,我们发现神经元以稀疏而分散的方式编码信息。 人脑中只有约1% - 4%的神经元在同一时间工作。 从信号的角度看,即神经元同时仅对输入信号较少的部分选择性响应,有意阻断大量信号,从而提高学习精度,更快提取稀疏特征。

该原理的进一步表示可以用该公式表示:

可视化后:

可知该函数在输入信号x0时直接失活,无法动作。

1.3、疏水性的优点我不太清楚。 大家最好自己回去读原论文。

机器学习中的卓越研究是稀疏的特征。 近年来,稀疏性研究不仅应用于计算神经科学、机器学习领域,也为信号处理、统计学提供借鉴。

总结来说,稀疏性有以下四个优点。

信息分离(Information disentangling )。 现在,深度学习的明确目标之一是从数据变量中解离出重要的因子。 原始数据(以自然数据为中心)通常与高度密集的特征有关。 因为,这些特征向量是相互关联的,小的重要因子可能连接了很多特征,就像蝴蝶的效果一样,可以一拍即合地活动全身。 基于数学原理的传统机器学习手段在解离这些相关特征方面具有致命的弱点。 然而,如果能够求解特征之间的复杂关系并变换为稀疏的特征,则特征为ddhk (去除无关噪声)。 有效的可变大小表示(efficient variable-sizerepresentation ) :输入不同,包含的信息也不同。 如果想用一个数据结构表示信息,该数据结构的大小必须是可变的。 否则,无法对部分输入进行表达。 如果神经网络稀疏,可以用激活的神经元数量表示不同大小的信息,稀疏特征具有较好的线性分离可能性,或者对非线性映射机制的依赖度较低。 由于稀疏特征存在于高维特征空间中,因此从流形学习(自动映射) (参见噪声消除自动编码器),稀疏特征被移动到更纯粹的低维流形体面上。 线性分离性也可以参考天然稀疏的文本类型数据,在没有隐层结构的情况下也可以分离。 密集分布但稀疏。 密集分布的特征是信息最丰富的特征,从潜在性的角度来看,往往比局部少数点具有的特征加倍有效。 松散特征为从密卷区解离而来,潜在价值较大。 对于神经网络,无论是稀疏还是密集,模型都具有一定程度的复杂度,可以拟合复杂的数据,但过于稀疏会降低模型的复杂度,大大降低模型的拟合能力。 二、ReLU的定义如下图左图所示,我们基于人脑神经元的工作方式(激活机制)绘制的图,输入信息0,即可发现神经元直接失活不工作。 右图是人工神经网络中目前使用最多的两种非线性激活函数。 左图和右图的区别还很大,最明显的区别之一是右图的两个激活函数没有使用上述稀疏性特征。

上一节也系统地分析了疏水性的特征,但现在想设计函数使其也具有疏水性的特征。 所以我们的ReLU

激活函数就被设计了出来:
R e L U = m a x ( 0 , x ) = { 0 , if x<0 x , if x ≥ 0 ReLU = max(0, x) = begin{cases} 0, & text {if x<0} \ x, & text{if x$geq$0} end{cases} ReLU=max(0,x)={0,x,​if x<0if x≥0​

函数图像和导函数图像如下:

可以看到ReLU函数的图像和上面的神经元激活函数的图像非常的相似,x<0 都失活了(稀疏化)。

三、ReLU函数优缺点 3.1、优点 不会发生梯度消失问题。Sigmoid函数在 x>0 会发生梯度消失问题,造成信息损失,从而无法完成深度网络的训练。而 ReLU 函数当 x>0 为线性结构,有固定的梯度,不会消失。ReLU激活函数在 x<0 时会输出为0(失活),这可以造成网络的稀疏性。这样可以很好的模拟人脑神经元工作的原理,且可以减少参数间的相互依赖,缓解了过拟合问题的发生。Sigmoid函数复杂,计算量大(前向传播+反向传播求导),速度慢;而ReLU函数简单,计算量小,速度快。 3.2、缺点 由于激活函数是没有上界的,有可能出现神经网络输出为NaN的情况(重要)ReLU在训练的时候很”脆弱”,很可能产生 Dead ReLU Problem(神经元坏死现象):某些神经元可能永远不会被激活,导致相应参数永远不会被更新(在负数部分,梯度为0)。举个例子:由于ReLU在x<0时梯度为0,这样就导致负的梯度在这个ReLU被置零,而且这个神经元有可能再也不会被任何数据激活。如果这个情况发生了,那么这个神经元之后的梯度就永远是0了,也就是ReLU神经元坏死了,不再对任何数据有所响应。ReLU不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张。ReLU的输出不是zero-centered; 四、PyTorch 实现 import matplotlib.pyplot as pltimport numpy as npclass ActivateFunc(): def __init__(self, x, b=None, lamb=None, alpha=None, a=None): super(ActivateFunc, self).__init__() self.x = x self.b = b self.lamb = lamb self.alpha = alpha self.a = a def ReLU(self): y = np.where(self.x < 0, 0, self.x) y_grad = np.where(self.x < 0, 0, 1) return [y, y_grad] Reference

链接: 博客1.
链接: 博客2.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。