首页 > 编程知识 正文

matlab产生rect函数,matlab中eval函数

时间:2023-05-03 21:01:26 阅读:175080 作者:1988

起源:传统激活函数,脑神经元激活频率研究,疏激活性

传统Sigmoid类激活函数

传统神经网络中最常用的两个激活函数,Sigmoid系统(Logistic-Sigmoid,Tanh-Sigmoid )被认为是神经网络的核心。

从数学上看,非线性的Sigmoid函数相对于中央区的信号的增益较大,相对于两侧区的信号的增益较小,有效地进行信号的特征空间映射。

从神经科学角度看,中央区酷似神经元兴奋状态,双侧区酷似神经元抑制状态,使得神经网络学习可以将重点特征推出中央区,将非重点特征推出双侧区。

所有解释看起来都比初始线性激活函数(y=x )、步长激活函数(-1/1,0/1 )好得多。

生物神经激活函数的逼近: SoftplusReLu

2001年,神经科学家Dayan,Abott从生物学的角度,模拟了脑神经元接收信号更准确的激活模型。 这个模型如左图所示。

比较Sigmoid系统的主要变化,该模型有三点:单侧抑制相对较宽的兴奋边界疏活化性(p

同年,Charles Dugas等人在进行正数回归预测的论文中偶然使用了Softplus函数。 Softplus函数是Logistic-Sigmoid函数的原始函数。

$softplus(x )=log ) 1e^{x}$

据论文介绍,最初尝试使用指数函数(天然正数)作为激活函数进行回归,但到了后期梯度过大,训练变得困难,为了缓和上升趋势追加了log。

加1是为了保证非阴性。 同年,Charles Dugas等人在NIPS会议论文中谈到,Softplus可以看作是强制非负修正函数$max(0,x ) $平滑的版本。

偶然在2001年,ML领域的Softplus/Rectifier激活函数与神经科学领域脑神经元激活频率函数的提出存在相似之处,导致了新的激活函数的研究。

生物神经的疏松激活

在神经科学中,除了新的激活频率函数外,神经科学家还发现了神经元的疏激活性。

还是在2001年,Attwell等人推测在基于大脑能量消耗的观察学习中,神经元代码的工作方式具有稀疏性和分布性。

2003年Lennie等人估计大脑同时被激活的神经元只有1~4%,进一步表明了神经元作用的疏松。

从信号的角度看,即神经元同时仅对输入信号较少的部分选择性响应,有意阻断大量信号,从而提高学习精度,更快提取稀疏特征。

从这个角度来看,在经验规律初始化w之后,传统的Sigmoid系统函数同时激活了几乎一半的神经元,这不符合神经科学的研究,也给深度网络训练带来很大的问题。

Softplus考虑了新模型的前两点,但没有疏活化性。 因此,修正函数$max(0,x ) $成为了与该模型基本一致的最大赢家。

Part I :关于疏松性的看法

机器学习中的卓越性研究是稀疏特征,基于数据的稀疏特征研究衍生了一个称为Deep Learning的分支。

稀疏性概念最早由Olshausen,Field于1997年在信号数据稀疏编码研究中引入,在卷积神经网络中发挥了最大作用。

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

归纳起来,稀疏性有以下三个贡献

1.1信息解离

现在,深度学习的明确目标之一是从数据变量中解离出重要的因子。 原始数据(以自然数据为中心)通常与高度密集的特征有关。 原因

这些特征向量相互关联,小的重要因子可能连接了很多特征,就像蝴蝶的效果一样,可以牵一发而动全身。

基于数学原理的传统机器学习手段在解离这些相关特征方面具有致命的弱点。

但是,如果能够解开特征之间错综复杂的关系,转化为稀疏的特征,就会产生对特征执着的小蘑菇(消除无关的噪声)。

1.2线性分离性

稀疏特征线性分离可能性高,或者对非线性映射机制依赖度低。 稀疏特征是因为它位于高维特征空间上。 (会自动映射。

从流形学习的角度来看(参见消噪自动编码器),稀疏特征被移动到了相对纯粹的低维流形体面上。

线性分离性也可以参考天然稀疏的文本类型数据,在没有隐层结构的情况下也可以分离。

1.3紧密分布但稀疏

紧密缠绕分布的特征是信息最丰富的特征,从潜在性的观点来看,往往比局部少数点所具有的特征加倍有效。

松散特征为从密卷区解离而来,潜在价值较大。

1.4稀疏性激活函数贡献的作用:

不同的输入可能包含大小不同的重要特征,使用大小可变的数据结构作为容器会更灵活。

神经元激活有稀疏性时,不同激活途径:

不同数量(选择性不激活)、不同功能(分布式激活),

两种可优化的结构生成的激活路径,可以更好地从有效的数据的维度上,学习到相对稀疏的特征,起到自动化解离效果。

Part II:基于稀疏性的校正激活函数

2.1 非饱和线性端

撇开稀疏激活不谈,校正激活函数$max(0,x)$,与Softplus函数在兴奋端的差异较大(线性和非线性)。

几十年的机器学习发展中,我们形成了这样一个概念:非线性激活函数要比线性激活函数更加先进。

尤其是在布满Sigmoid函数的BP神经网络,布满径向基函数的SVM神经网络中,往往有这样的幻觉,非线性函数对非线性网络贡献巨大。

该幻觉在SVM中更加严重。核函数的形式并非完全是SVM能够处理非线性数据的主力功臣(支持向量充当着隐层角色)。

那么在深度网络中,对非线性的依赖程度就可以缩一缩。另外,在上一部分提到,稀疏特征并不需要网络具有很强的处理线性不可分机制。

综合以上两点,在深度学习模型中,使用简单、速度快的线性激活函数可能更为合适。

如图,一旦神经元与神经元之间改为线性激活,网络的非线性部分仅仅来自于神经元部分选择性激活。

2.2 Vanishing Gradient Problem

更倾向于使用线性神经激活函数的另外一个原因是,减轻梯度法训练深度网络时的Vanishing Gradient Problem。

看过BP推导的人都知道,误差从输出层反向传播算梯度时,在各层都要乘当前层的输入神经元值,激活函数的一阶导数。

即$Grad=Errorcdot Sigmoid'(x)cdot x$。使用双端饱和(即值域被限制)Sigmoid系函数会有两个问题:

①Sigmoid'(x)∈(0,1)  导数缩放

②x∈(0,1)或x∈(-1,1)  饱和值缩放

这样,经过每一层时,Error都是成倍的衰减,一旦进行递推式的多层的反向传播,梯度就会不停的衰减,消失,使得网络学习变慢。

而校正激活函数的梯度是1,且只有一端饱和,梯度很好的在反向传播中流动,训练速度得到了很大的提高。

Softplus函数则稍微慢点,Softplus'(x)=Sigmoid(x)∈(0,1) ,但是也是单端饱和,因而速度仍然会比Sigmoid系函数快。

Part III 潜在问题

强制引入稀疏零的合理性?

诚然,稀疏性有很多优势。但是,过分的强制稀疏处理,会减少模型的有效容量。即特征屏蔽太多,导致模型无法学习到有效特征。

论文中对稀疏性的引入度做了实验,理想稀疏性(强制置0)比率是70%~85%。超过85%,网络就容量就成了问题,导致错误率极高。

对比大脑工作的95%稀疏性来看,现有的计算神经网络和生物神经网络还是有很大差距的。

庆幸的是,ReLu只有负值才会被稀疏掉,即引入的稀疏性是可以训练调节的,是动态变化的。

只要进行梯度训练,网络可以向误差减少的方向,自动调控稀疏比率,保证激活链上存在着合理数量的非零值。

Part IV ReLu的贡献

4.1 缩小做和不做非监督预训练的代沟

ReLu的使用,使得网络可以自行引入稀疏性。这一做法,等效于无监督学习的预训练。

当然,效果肯定没预训练好。论文中给出的数据显示,没做预训练情况下,ReLu激活网络遥遥领先其它激活函数。

甚至出现了比普通激活函数预训练后更好的奇葩情况。当然,在预训练后,ReLu仍然有提升空间。

从这一层面来说,ReLu缩小了非监督学习和监督学习之间的代沟。当然,还有更快的训练速度。

4.2 更快的特征学习

在MNIST+LeNet4中,ReLu+Tanh的组合在epoch 50左右就能把验证集错误率降到1.05%

但是,全Tanh在epoch 150时,还是1.37%,这个结果ReLu+Tanh在epoch 17时就能达到了。

该图来自AlexNet的论文对ReLu和普通Sigmoid系函数做的对比测试,可以看到,ReLu的使用,使得学习周期

大大缩短。综合速率和效率,DL中大部分激活函数应该选择ReLu。

Part V  Theano中ReLu的实现

ReLu可以直接用T.maximum(0,x)实现,用T.max(0,x)不能求导.

Part VI  ReLu训练技巧

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