Caffe学习(4)——caffe中的激活层及对应参数

Caffe的运行,首先要基于一个模型(model),比较常用的模型有Lenet、AlexNet、VGG等;一个模型有多个层构成,层有许多种类型,比如数据层(Data Layers)、视觉层(Vision Layers)、激活层(Activation Layers)等,每层对应着许多参数,这些参数都定义在caffe.proto这个配置文件中。

数据层、视觉层在之前的文章中已经介绍,这篇讨论了激活层的相关知识。


在激活层中,对输入数据进行激活操作,实际上就是一种函数变换,是逐元素进行运算的。从bottom得到一个blob数据输入,运算后,从top输出一个blob数据;在运算过程中,没有改变数据的大小,即输入输出的数据大小是相等的。

输入: n * c * h * w

输出: n * c * h * w

常用的激活函数有sigmoid、tanh、relu等,下面对这些激活函数分别进行介绍。

(1)Sigmoid非线性激活函数的形式


其图形如下图所示:


Sigmoid容易饱和,并且当输入非常大或者非常小的时候,神经元的梯度就非常接近于0了,从图中可以看出梯度的趋势。这就使得我们在反向传播算法中反向传播接近于0的梯度,导致最终权重基本没什么更新,我们无法递归地学习到新数据了。另外需要注意的是,参数值不能设置太大,否则大部分神经元可能都会处在saturation的状态而把gradient kill掉,这会导致网络变得很难学习。

另外,Sigmoid函数的输出不是零均值的,这会使得后层神经元的输入是非0均值的信号,这会对梯度产生影响。

(2)tanh双曲线正切函数

函数形式及图形如下图所示:

tanh函数和sigmoid函数有异曲同工之妙,但和sigmoid不同的是,他把实值输入压缩到-1~1的范围,因此它基本是0均值的,所以在实际应用当中,tanh比sigmoid更常用。但是它也存在饱和的问题。


(3)ReLU函数

ReLU激活函数的数学表达式是:f(x)=max(0,x)。下图即为它的图形形式:

ReLU的优缺点如下:

优点:1)Krizhevskyetal.发现使用ReLU得到的SGD的收敛速度会比sigmoid/tanh快很多;而且它的梯度不会饱和。

2)相比于sigmoid/tanh需要计算指数等,计算复杂度高,ReLU只需要一个阈值就可以得到激活值。

缺点:ReLU在训练的时候很“脆弱”,很容易就会导致神经元“坏死”。由于ReLU在x<0的时候梯度为0,这样就导致负的梯度在这个ReLu被置零,而且这个神经元有可能再也不会被任何数据激活。

(Leaky ReLUs就是用来解决ReLu坏死的问题的,而关于Leaky ReLU的效果,众说纷纭,没有清晰的定论,所以在这里不作过多说明)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值