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

修正线性单元(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)

The rectifier is, as of 2015, the most popular activation function for deep neural networks

它的特点是被认为是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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言综合期末作业,内蒙古农业大学2010年期末c语言综合作业.doc

内蒙古农业大学2010年期末c语言综合作业综合练习作业#includeint main(void){int choice,i;void shuai();void ge();void wang();void bing();for(i1;i<5;i){printf("[1]统计字符个数\n");printf("[2]判断素数\n");printf("[3]求斐波那契数列\n&qu…

链表创建、逆置、删除详解

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 对链表的理解&#xff1a;http://www.nowamagic.net/librarys/veda/detail/2220 #inc…

python与shell的3种交互方式介绍

【目录】 1.os.system(cmd) 2.os.popen(cmd) 3.利用subprocess模块 4.subprocessor模块进阶 【概述】 考虑这样一个问题&#xff0c;有hello.py脚本&#xff0c;输出”hello, world!”&#xff1b;有testinput.py脚本&#xff0c;等待用户输入&#xff0c;然后打印用户输入的数…

C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句

原标题&#xff1a;C语言教学(九-上)if else判断语句今天讲if else判断语句&#xff0c;简单理解就是进行条件判断&#xff0c;如果条件达到则执行if 里或else里的语句。先来看if。if的写法和for差不多,就是不用括号里的两个分号&#xff0c;if (条件) { }&#xff0c;if加括号…

const修饰指针和引用的用法【转贴】

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** const修饰的指针会额外的占内存吗&#xff1f; 仍然是4&#xff0c;不会占额外的…

调整linux系统时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 好吧&#xff0c;使用tzselect又靠谱些&#xff0c;使用前把/etc/localtime删除了。 执行上前那个告诉我文件重新了&#xff0c;所以就没有搞了转载于:https://www.cnblogs.com/hark0623/p/4807426.html

stm32c语言设计以及注释,13个基于STM32的经典项目设计实例,全套资料~-嵌入式系统-与非网...

STM32单片机现已火遍大江南北&#xff0c;各种教程资料也是遍布各大网站论坛&#xff0c;可谓一抓一大把&#xff0c;但大部分都差不多。今天总结了几篇电路城上关于STM32 的制作&#xff0c;不能说每篇都是经典&#xff0c;但都是在其他地方找不到的&#xff0c;很有学习参考意…

memcpy,strcpy,strncpy

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** memcpy c和c使用的内存拷贝函数.从源src所指的内存地址的起始位置开始拷贝n个字节…

二维数组联通子数组和最大

题目要求&#xff1a; 返回一个二维整数数组中最大联通子数组的和。输入一个二维整形数组&#xff0c;数组里有正数也有负数。文件输出。思路:和之前的动态规划相识&#xff0c;把二维数组转换为一维数组&#xff0c;先求每一个列的子数组和最大&#xff0c;最后在用正数就加&a…

c语言如何给变量加锁,C语言互斥锁-条件变量实现公共缓存区数据读写

#include char buffer[128];int has_data0;pthread_mutex_t mutex;pthread_cond_t cond;pthread_cond_t cond2;void read_buf(void){do{pthread_mutex_lock(&mutex);//锁定互斥锁if(has_data0){/*阻塞线程,等待另外一个线程发送信号&#xff0c;同时为公共数据区解锁*/pthr…

view-activity跟控件在onkey事件上的传递关系

android 中Activity跟View对于键盘的监听&#xff0c;主要有以下几个方法 //按键按下 public boolean onKeyDown(int keyCode, KeyEvent event) {} //按键弹起 public boolean onKeyUp(int keyCode, KeyEvent event) {} //常按 public boolean onKeyLongPress(int keyCode, Ke…

PMP考试的过与不过

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 我在一年多时间里参加了三次PMP考试&#xff0c;前两次都失败&#xff0c;直到第三次才…

JPA一对多循环引用的解决

说是解决&#xff0c;其实不是很完美的解决的&#xff0c;写出来只是想记录一下这个问题或者看一下有没有哪位仁兄会的&#xff0c;能否知道一二。 下面说说出现问题&#xff1a; 问题是这样的&#xff0c;当我查询一个一对多的实体的时候&#xff0c;工具直接就爆了&#xff0…

太原理工大学c语言课程设计报告,[太原理工大学C语言实验报告.doc

[太原理工大学C语言实验报告本科实验报告课程名称&#xff1a; 程序设计技术B实验项目&#xff1a;实验地点&#xff1a; 明向校区软件学院机房专业班级&#xff1a; 学号&#xff1a;学生姓名&#xff1a;指导教师&#xff1a; 呼克佑2014年 12月 日实验名称 实验一 C语言的运…

网页常用动态效果--悬浮广告

关键在于动态获取滚动坐标值 测试滚动事件 $(window).scroll(function(){ console.log($(window).scrolltop()); }) 获取三个高度&#xff1a;窗口高度&#xff0c;盒子高度以及滚动坐标值&#xff0c;将广告盒子设置为绝对定位&#xff0c;当鼠标滚动时&#xff0c;其top值为滚…

打印英文年历C语言函数,C语言打印年历

voidshow_year(int year){inti,j,k,t,n;                           // 用来辅助计数int table[24][21] {0};                     // 年历数组int month_day[12] {31,28,31,30,31,30,31,31,30,31,30,31}; // 每月上限天数i…

ubuntu14.04配置caffe

ubuntu 14.04 64bit 安装 请自行Google安装&#xff0c;并修改源。 cuda 7.5 安装 cuda7.5下载&#xff0c;选择ubuntu 14.04的deb包下载安装一些可能的依赖 sudo apt-get install linux-headers-$(uname -r) build-essential 安装cuda sudo dpkg –i cuda-repo-<distro>…

iOS开发API常用英语名词

iOS开发API常用英语名词 0. indicating 决定 1.in order to 以便 2.rectangle bounds 矩形尺寸 3.applied 应用 4.entirety 全部 5.technique 方法 6.truncating 截短 7.wrapping 换行 8.string 字符串 9.familiar style 简体 10.The styled text 主题样式 11.Constants 常量 …

Win10 IIS本地部署网站运行时图片和样式不正常?

后期会在博客首发更新&#xff1a;http://dnt.dkill.net 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 启用关闭win功能&#xff0c;开启一下静态内容 收工~

设置IIS会话过期时间

打开默认网站----双击ASP--展开会话属性---更改超时时间-转载于:https://www.cnblogs.com/genesis/p/4816128.html