博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修正线性单元(Rectified linear unit,ReLU)
阅读量:4641 次
发布时间:2019-06-09

本文共 2271 字,大约阅读时间需要 7 分钟。

修正线性单元(Rectified linear unit,ReLU)


Rectified linear unit

在神经网络中,常用到的激活函数有sigmoid函数f(x)=11+exp(x)、双曲正切函数f(x)=tanh(x),今天要说的是另外一种activation function,rectified linear function,f(x)=max(0,x)

它的特点是被认为是more biologically plausible than widely used logistic sigmoid or hyperbolic tangent(双曲正切 tanh),就是说更加符合神经元信号激励原理。采用了rectified linear function作为activation function的unit被称为rectified linear unit。它的一个平滑解析函数为f(x)=ln(1+ex),被称之为softplus function,softplus的微分就是logistic function:f(x)=ex/(ex+1)=1/(1+ex)。另外一种函数叫做softmax function或者normalized exponential是logistic function的一个泛化,如下:

σ(z)j=ezjKk=1ezk for j=1,...,K.
the softmax function常被用来various probabilistic multiclass classification methods 比如multinomial logistic regression,multiclass linear discriminant analysis, naive Bayes classifiers and artificial neural networks等。在Andrew Ng的机器学习课程中,softmax regression中就用到了softmax function。这里点一下说明。当然本文的重点还是在rectified linear function上。


有几种变体:

noisy ReLUs

可将其包含Gaussian noise得到noisy ReLUs,f(x)=max(0,x+N(0,σ(x))),常用来在机器视觉任务里的restricted Boltzmann machines中。

leaky ReLUs

允许小的非零的gradient 当unit没有被激活时。

f(x)={
x0.01xif x>0otherwise


Advantages

  1. Biological plausibility:单边,相比于反对称结构(antisymmetry)的tanh
  2. Sparse activation:基本上随机初始化的网络,只有有一半隐含层是处于激活状态,其余都是输出为0
  3. efficient gradient propagation:不像sigmoid那样出现梯度消失的问题
  4. efficient computation:只需比较、乘加运算。
    使用rectifier 作为非线性激活函数使得深度网络学习不需要pre-training,在大、复杂的数据上,相比于sigmoid函数等更加快速和更有效率。
    标准的sigmoid输出不具备稀疏性,需要通过惩罚因子来训练一堆接近于0的冗余数据,从而产生稀疏数据,比如L1,L2或者student-t作为惩罚因子,进行regularization。而ReLU为线性修正,是purelin的折线版,作用是如果计算输出小于0,就让它等于0,否则保持原来的值,这是一种简单粗暴地强制某些数据为0的方法,然而经实践证明,训练后的网络完全具备适度的稀疏性,而且训练后的可视化效果和传统pre-training的效果很相似。这说明了ReLU具备引导适度稀疏的能力。

从函数图形上看,ReLU比sigmoid更接近生物学的激活模型。

实际测量数据:纵坐标轴是神经元的放电速率(Firing Rate);横轴是毫秒(ms)

基于生物学的数学规则化激活模型(LIF)

(Softplus是ReLU的圆滑版,公式为:g(x)=log(1+e^x),从上面的结果看,效果比ReLU稍差)

ReLU在经历预训练和不经历预训练时的效果差不多,而其它激活函数在不用预训练时效果就差多了。ReLU不预训练和sigmoid预训练的效果差不多,甚至还更好。
相比之下,ReLU的速度非常快,而且精确度更高。
因此ReLU在深度网络中已逐渐取代sigmoid而成为主流。
ReLU导数(分段):
x <= 0时,导数为0
x > 0时,导数为1
早期多层神经网络如果用sigmoid函数或者hyperbolic tangent作为激活函数,如果不进行pre-training的话,会因为gradient vanishing problem而无法收敛。
而预训练的用处:规则化,防止过拟合;压缩数据,去除冗余;强化特征,减小误差;加快收敛速度。而采用ReLu则不需要进行pre-training。


实践应用

在应用中,把除了最外层输出用的sigmoid函数的其他所有用到sigmoid函数的地方全都改为ReLu函数,同时梯度也改为ReLu的,然后把学习速率调低。

转载于:https://www.cnblogs.com/huty/p/8519179.html

你可能感兴趣的文章
Unity 飞机的子弹轨迹
查看>>
STL中map,set的基本用法示例
查看>>
Ajax 技术二
查看>>
Linux(centos6.8)下Tomcat的安装与配置
查看>>
高级产品经理十八种能力
查看>>
CSS实现内容超过长度后以省略号显示
查看>>
PHP usort 使用用户自定义的比较函数对数组中的值进行排序
查看>>
【POJ1990】【Luogu 5094】【USACO2004open】MooFest
查看>>
栈的应用(前缀中缀后缀转换)
查看>>
UWP: 妙用自定义 Action 以简化并重用代码
查看>>
Ruby on Rails,数据库迁移命令和迁移任务编写
查看>>
#15. 导弹防御——Yucai OJ第15次测试
查看>>
【bzoj4293】[PA2015]Siano【线段树】
查看>>
Django初识
查看>>
try-catch
查看>>
Python记录_day21 模块
查看>>
ANR程序无响应原因及应对办法
查看>>
设计原则
查看>>
理解开发HD 钱包涉及的 BIP32、BIP44、BIP39
查看>>
ubuntu 14.10 共享文件夹
查看>>