博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
激活函数之ReLU函数
阅读量:4216 次
发布时间:2019-05-26

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

0 前言

激活函数的引入是为了增加神经网络模型的非线性,没有激活函数每层就相当于矩阵相乘。每一层输出都是上层的输入的线性函数,无论神经网络多少层,输出都是输入的线性组合,就是最原始的感知机

加入激活函数,给神经元引入非线性因素,神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

1 激活函数之ReLU函数

ReLU函数是目前比较火的一个激活函数,函数公式:f(x)=max(0,x),函数图像如下

相比sigmod函数与tanh函数有以下几个优点

1)克服梯度消失的问题

2)加快训练速度

注:正因为克服了梯度消失问题,训练才会快

缺点:

1)输入负数,则完全不激活,ReLU函数死掉。

2)ReLU函数输出要么是0,要么是正数,也就是ReLU函数不是以0为中心的函数

深度学习中最大的问题是梯度消失问题,使用tanh、sigmod等饱和激活函数情况下特别严重(神经网络在进行方向误差传播时,各个层都要乘以激活函数的一阶导数,梯度每传递一层就会衰减一层,网络层数较多时,梯度G就会不停衰减直到消失),使得训练网络收敛越来越慢,而ReLU函数凭借其线性、非饱和的形式,训练速度则快很多。

2 ReLU函数的变型

1)ELU函数

ELU函数公式和曲线如下图

elu函数公式 

elu函数图

ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除ReLU死掉的问题,不过还是有梯度饱和和指数运算的问题。

2)PReLU函数

PReLU函数公式和曲线如下图

prelu公式 

prelu函数图

PReLU也是针对ReLU的一个改进型,在负数区域内,PReLU有一个很小的斜率,这样也可以避免ReLU死掉的问题。相比于ELU,PReLU在负数区域内是线性运算,斜率虽然小,但是不会趋于0。

 

你可能感兴趣的文章
基于Linux的Socket网络编程的性能优化
查看>>
Linux Network Tuning Linux网络环境性能优化调整
查看>>
Boost socket performance on Linux
查看>>
各种字符串Hash函数
查看>>
perl Sorting Techniques
查看>>
功能自动化测试工具列表大全
查看>>
Perl trim function to strip whitespace from a string
查看>>
一个数是2的幂次方
查看>>
/proc/pid下的相应信息说明
查看>>
Perl正则表达式初步
查看>>
Linux下core文件调试方法
查看>>
进程实际内存占用: 私有驻留内存数(Private RSS)介绍
查看>>
linux syslog
查看>>
Linux tty, pty, pts
查看>>
Linux的系统信号(signal)类型与机制
查看>>
Linux下Patch的应用和制作方法介绍
查看>>
守护进程
查看>>
20 Linux System Monitoring Tools Every SysAdmin Should Know
查看>>
Linux进程管理命令详解(ps和top)
查看>>
Linux 技巧:让进程在后台可靠运行的几种方法
查看>>