前言:目录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 都失活了(稀疏化)。
链接: 博客1.
链接: 博客2.