| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 三种激活函数——SigmoidTanh ReLU以及卷积感受野的计算 -> 正文阅读 |
|
[人工智能]三种激活函数——SigmoidTanh ReLU以及卷积感受野的计算 |
1. 三种激活函数——Sigmoid, Tanh, ReLU1.1 Sigmoid1.1.1 公式S ( x ) = 1 1 + e ? x S(x) = \frac{1}{1 + e^{-x}} S(x)=1+e?x1? 1.1.2 导数S ′ ( x ) = e ? x ( 1 + e ? x ) 2 = S ( x ) ( 1 ? S ( x ) ) S'(x) = \frac{e^{-x}}{(1+e^{-x})^2} = S(x)(1-S(x)) S′(x)=(1+e?x)2e?x?=S(x)(1?S(x)) 1.1.3 函数图像
1.1.4 优点
1.1.5 缺点
1.2 TanhTanh的诞生比Sigmoid晚一些,Sigmoid函数我们提到过有一个缺点就是输出不以0为中心,使得收敛变慢的问题。而Tanh则就是解决了这个问题。 1.2.1 公式tanh ? ( x ) = sinh ? ( x ) cosh ? ( x ) = e x ? e ? x e x + e ? x \tanh(x) = \frac{\sinh (x)}{\cosh (x)} = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=cosh(x)sinh(x)?=ex+e?xex?e?x? 1.2.2 导数tanh ? ′ ( x ) = 1 ? tanh ? 2 ( x ) \tanh '(x) = 1 - \tanh ^2(x) tanh′(x)=1?tanh2(x) 1.2.3 函数图像
1.2.4 优点
1.2.5 缺点
1.3 ReLU1.3.1 公式R e L U ( x ) = { x , x ≥ 0 0 , o t h e r w i s e \mathrm{ReLU} (x) = \begin{cases} x, & x\ge 0 \\ 0, & \mathrm{otherwise} \end{cases} ReLU(x)={x,0,?x≥0otherwise? 1.3.2 导数R e L U ( x ) = { 1 , x ≥ 0 0 , o t h e r w i s e \mathrm{ReLU} (x) = \begin{cases} 1, & x\ge 0 \\ 0, & \mathrm{otherwise} \end{cases} ReLU(x)={1,0,?x≥0otherwise? 1.3.3 函数图像
1.3.4 优点
1.3.5 缺点就是训练的时候很”脆弱”,很容易就”die”了。 举个例子:一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了。如果这个情况发生了,那么这个神经元的梯度就永远都会是0。 实际操作中,如果你的learning rate 很大,那么很有可能你网络中的40%的神经元都”dead”了。 当然,如果你设置了一个合适的较小的learning rate,这个问题发生的情况其实也不会太频繁。 1.4 三种激活函数的图像
2. 卷积感受野计算2.1 概念感受野(Receptive Field),指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。 卷积神经网络中,越深层的神经元看到的输入区域越大,如下图所示,kernel size 均为3×3,stride均为1,绿色标记的是Layer2 每个神经元看到的区域,黄色标记的是Layer3 看到的区域,具体地,Layer2每个神经元可看到Layer1 上 3×3 大小的区域,Layer3 每个神经元看到Layer2 上 3×3 大小的区域,该区域可以又看到Layer1 上 5×5 大小的区域。
为了具体计算感受野,这里借鉴视觉系统中的概念, r e c e p t i v e ? f i e l d = c e n t e r + s u r r o u n d \mathrm{ receptive \ field = center + surround } receptive?field=center+surround 准确计算感受野,需要回答两个问题,即视野中心在哪和视野范围多大。
但是,网络架构多种多样,每层的参数配置也不尽相同,感受野具体该怎么计算? 2.2 约定在正式计算之前,先对数学符号做如下约定。
下面假定所有层均为卷积层。 2.3 感受野大小感受野大小的计算是个递推公式。 再看上面的动图,如果feature map
L
a
y
e
r
2
Layer_2
Layer2? 上的一个元素
A
A
A看到feature map
L
a
y
e
r
1
Layer_1
Layer1? 上的范围为
3
×
3
3×3
3×3(图中绿色块),其大小等于kernel size
k
2
k_2
k2?,所以,
A
A
A看到的感受野范围
r
2
r_2
r2?等价于
L
a
y
e
r
1
Layer_1
Layer1?上
3
×
3
3×3
3×3窗口看到的
L
a
y
e
r
0
Layer_0
Layer0? 范围,据此可以建立起相邻
L
a
y
e
r
Layer
Layer感受野的关系,如下所示,其中
r
l
r_l
rl?为
L
a
y
e
r
l
Layer_l
Layerl?的感受野,
r
l
?
1
r_{l?1}
rl?1?为
L
a
y
e
r
l
?
1
Layer_{l?1}
Layerl?1? 的感受野,
可视化如下图所示,
L
a
y
e
r
l
Layer_l
Layerl? 上前进1个元素相当于
L
a
y
e
r
l
?
1
Layer_{l?1}
Layerl?1?上前进
s
l
s_l
sl?个元素,转换成像素单位为 根据递推公式可知, 进一步可得, L a y e r l Layer_l Layerl?的感受野大小为 r l = r l ? 1 + ( k l ? 1 ) ? j l ? 1 = r l ? 1 + ( ( k l ? 1 ) × ∏ i = 1 l ? 1 s i ) r_l = r_{l-1} + (k_l - 1) * j_{l-1} \\ = r_{l-1} + ((k_l - 1) \times \prod^{l-1}_{i=1}s_i) rl?=rl?1?+(kl??1)?jl?1?=rl?1?+((kl??1)×i=1∏l?1?si?) 2.4 感受野中心感受野中心的计算也是个递推公式。 在上一节中计算得 j l = ∏ i = 1 l s i j_l = \prod^l_{i=1}s_i jl?=∏i=1l?si?,表示feature map L a y e r l Layer_l Layerl?上前进1个元素相当于在输入图像上前进的像素数目,如果将feature map上元素与感受野中心对齐,则 j l j_l jl?为感受野中心之间的像素距离。如下图所示,
相邻 L a y e r Layer Layer间,感受野中心的关系为 s t a r t l = s t a r t l ? 1 + ( k l ? 1 2 ? p l ) × j l ? 1 start_l = start_{l-1} + (\frac{k_l-1}{2} - p_l) \times j_{l-1} startl?=startl?1?+(2kl??1??pl?)×jl?1? 所有的 s t a r t start start坐标均相对于输入图像坐标系。其中, s t a r t 0 = ( 0.5 , 0.5 ) start_0=(0.5,0.5) start0?=(0.5,0.5),为输入图像左上角像素的中心坐标, s t a r t l ? 1 start_{l?1} startl?1?表示 L a y e r l ? 1 Layer_{l?1} Layerl?1?左上角元素的感受野中心坐标, ( k l ? 1 2 ? p l ) (\frac{k_l-1}{2} - p_l) (2kl??1??pl?)为 L a y e r l Layer_l Layerl?与 L a y e r l ? 1 Layer_{l?1} Layerl?1?感受野中心相对于 L a y e r l ? 1 Layer_{l?1} Layerl?1?坐标系的偏差,该偏差需折算到输入图像坐标系,其值需要乘上 j l ? 1 j_{l?1} jl?1?,即 L a y e r l ? 1 Layer_{l?1} Layerl?1?相邻元素间的像素距离,相乘的结果为 ( k l ? 1 2 ? p l ) × j l ? 1 (\frac{k_l-1}{2} - p_l) \times j_{l-1} (2kl??1??pl?)×jl?1?,即感受野中心间的像素距离——相对输入图像坐标系。至此,相邻Layer间感受野中心坐标间的关系就不难得出了,这个过程可视化如下。 知道了 L a y e r l Layer_l Layerl?左上角元素的感受野中心坐标 ( s t a r t l , s t a r t l ) (start_l,start_l) (startl?,startl?),通过该层相邻元素间的像素距离 j l j_l jl?可以推算其他元素的感受野中心坐标。 2.5 小结将感受野的相关计算小结一下, 由上面的递推公式,就可以从前向后逐层计算感受野了,代码可参见computeReceptiveField.py,在线可视化计算可参见Receptive Field Calculator。 最后,还有几点需要注意,
2.6 代码计算感受野
2.7 计算题题目:在CNN网络中,一张图经过核为 3 × 3 3\times 3 3×3,步长为2的卷积层,ReLU激活函数层,BN层,以及一个步长为2,核为 2 × 2 2\times 2 2×2的池化层后,再经过一个 3 × 3 3\times 3 3×3的的卷积层,步长为1,此时的感受野是多少? r l = r l ? 1 + ( k l ? 1 ) × j l ? 1 = r l ? 1 + ( ( k l ? 1 ) × ∏ i = 1 l ? 1 s i ) \begin{aligned} r_l & = r_{l-1} + (k_l - 1) \times j_{l-1} \\ & = r_{l-1} + ((k_l -1) \times \prod^{l-1}_{i=1}s_i) \\ \end{aligned} rl??=rl?1?+(kl??1)×jl?1?=rl?1?+((kl??1)×i=1∏l?1?si?)? L 0 = 1 : 输 入 默 认 为 1 L 1 = 1 + ( 3 ? 1 ) × ∏ i = 1 l ? 1 s i = 1 + ( 3 ? 1 ) × 1 = 3 : 1 ( 输 入 ) + ( 本 层 卷 积 核 大 小 ? 1 ) × 之 前 层 步 长 连 乘 ( 输 入 默 认 为 1 ) L 2 = 3 + ( 2 ? 1 ) × ∏ i = 1 l ? 1 s i = 3 + ( 2 ? 1 ) × 2 = 5 : 3 ( 上 一 层 感 受 野 ) + ( 本 层 卷 积 核 大 小 ? 1 ) × 之 前 层 步 长 连 乘 ( 1 × 2 ) L 3 = 5 + ( 3 ? 1 ) × ∏ i = 1 l ? 1 s i = 5 + ( 3 ? 1 ) × ( 2 × 2 ) = 13 : 5 ( 上 一 层 感 受 野 ) + ( 本 层 卷 积 核 大 小 ? 1 ) × 之 前 层 步 长 连 乘 ( 1 × 2 × 2 ) \begin{aligned} & L_0 = 1 &:输入默认为1\\ & L_1 = 1 + (3-1)\times \prod^{l-1}_{i=1}s_i = 1 + (3-1) \times 1 = 3 &:1(输入)+(本层卷积核大小-1)×之前层步长连乘(输入默认为1)\\ & L_2 = 3 + (2-1) \times \prod^{l-1}_{i=1}s_i = 3 + (2-1) \times 2 = 5&:3(上一层感受野)+(本层卷积核大小-1)×之前层步长连乘(1\times 2)\\ & L_3 = 5 + (3-1) \times \prod^{l-1}_{i=1}s_i = 5 + (3-1) \times (2\times 2) = 13&:5(上一层感受野)+(本层卷积核大小-1)×之前层步长连乘(1\times 2\times2)\\ \end{aligned} ?L0?=1L1?=1+(3?1)×i=1∏l?1?si?=1+(3?1)×1=3L2?=3+(2?1)×i=1∏l?1?si?=3+(2?1)×2=5L3?=5+(3?1)×i=1∏l?1?si?=5+(3?1)×(2×2)=13?:输入默认为1:1(输入)+(本层卷积核大小?1)×之前层步长连乘(输入默认为1):3(上一层感受野)+(本层卷积核大小?1)×之前层步长连乘(1×2):5(上一层感受野)+(本层卷积核大小?1)×之前层步长连乘(1×2×2)?
故此时的感受野大小为13。 参考
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:49:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |