设为首页
收藏本站
切换到宽版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
VIP用户组
官网群
无名商城论坛
»
论坛
›
资源分享区
›
学习资源专区
›
【LSP】深度学习激活函数 深入浅出 通俗易懂 教你如何选 ...
返回列表
发帖
查看:
213
|
回复:
0
[其他技术]
【LSP】深度学习激活函数 深入浅出 通俗易懂 教你如何选择合适
[复制链接]
无名
无名
当前离线
积分
32464
1万
主题
1万
帖子
3万
积分
管理员
积分
32464
发消息
发表于 2022-5-8 17:01:55
|
显示全部楼层
|
阅读模式
1 概述
本文会介绍六种激活函数,并且比较他们的区别。
1.1 梯度消失问题
w(L)=w(L)?learningrate×?C?w(L)
w(L)=w(L)?learningrate×?C?w(L)
当?C?w(L)?C?w(L)很小的时候,就会出现梯度消失的问题,其中许多权重和偏置只能收到非常小的更新。
而且不同层的学习速率不同,隐藏层n的学习速率会高于隐藏层n-1。这意味着后面的层几乎肯定会被网络中更前面的层受到更多的优待。
同样的会出现梯度爆炸的案例。
2 Sigmoid
sigmoid(x)=11+e?x
sigmoid(x)=11+e?x
sigmoid这样的函数会遇到严重的梯度消失问题,这个问题使得sigmoid函数在神经网络中并不实用,我们应该用后面介绍的其他激活函数。
3 ReLU整流线性单元
ReLU(X)=max(0,x)
ReLU(X)=max(0,x)
这个是为了解决梯度消失的问题
会出现死亡ReLU问题,计算梯度的时候大多数值都小于0,我们会得到相当多不会更新的权重和偏置。
但是死亡ReLU可以带来稀疏性,因为神经网络激活矩阵会有很多0,所以计算成本和效率优化。
但是ReLU不能避免梯度爆炸问题
4 ELU指数线性单元
ELU(x)={xifx>0α(ex?1)ifx<0
ELU(x)={xifx>0α(ex?1)ifx<0
α∈[0.1,0.3]α∈[0.1,0.3]这是经验结论
因为引入了指数,所以ELU的计算成本高于ReLU
能避免死亡ReLU问题
神经网络不学习αα值
不能解决梯度爆炸问题
5 Leaky ReLU渗漏型整流线性单元
LReLU(x)={xx>0αxx<0
LReLU(x)={xx>0αxx<0
α∈[0.1,0.3]α∈[0.1,0.3]
避免死亡ReLU问题
运算速度快于ELU
无法避免梯度爆炸问题
神经网络不学习αα值
微分后,两部分都是线性的,ELU一部分是线性一部分是非线性的。
6 SELU扩展型指数线性单元激活函数
SELU(x)=λ{xx>0α(ex?1)x<0
SELU(x)=λ{xx>0α(ex?1)x<0
α=1.673263....α=1.673263....
λ=1.0507009...λ=1.0507009...
SELU可以对神经网络进行子归一化,其输出值为均值为0,标准差为1.。内部归一化比外部归一化快,这意味着网络可以更快的收敛
不可能出现梯度爆炸或者消失的问题
相对较新,需要更多论文比较性的探索其在CNN和RNN等架构中的应用
使用SELU在CNN中应用的论文
7 GELU高斯误差线性单元激活函数
GELU在最近的Transformer模型(谷歌的BERT和OpenAI的GPT-2)中得到了应用
GELU(x)=0.5x(1+tanh(2/π???√×(x+0.044715x3)))
GELU(x)=0.5x(1+tanh?(2/π×(x+0.044715x3)))
这个函数的图形非常有意思:
微分函数非常复杂,在此不做赘述。
在NLP领域最佳,在Transformer模型中表现最好。
避免梯度消失问题
相当新颖的一个激活函数
梯度
,
函数
,
问题
,
线性
,
神经网络
相关帖子
•
【教程】iapp如何在软件里添加视频
•
【夜未央】C++ day02教程- 变量和函数的初步体验
•
【】Python进阶——15/19
•
【GD】fn模块和函数代码教程
•
【Max】启动图
•
【LUR】SEO终极教程(完结篇)
•
【LUR】米酷最新版本—6.0源码详细搭建教程
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表