Activation Functions、Data Preprocessing、Weight Initialization、Batch Mormalizatio、Babysitting the Learning Process、Hyperparameter Optimization
激活函数 Activation Function

sigmoid:最早的激活函数。将值限定在0-1之间。之前之所以较火是因为其像神经元激活一样的特性。
缺点:
- 饱和的神经元使梯度消失。
- 非中心对称,导致梯度不一定朝着正确的方向前进
- exp计算量较大
tanh:值范围-1到1。中心对称。但仍然会存在梯度消失
relu:不存在饱和现象,计算高效,似乎更加符合生物学原理。
但是其非中心对称、dead relu现象(其负向梯度均为0)
leaky Relu:改进relu,不会dead

PRelu:Parametric Rectifier

ELU:Exponential Linear Units。与Leaky Relu相比更加健壮。

Maxout “Neuron”:
- 非线性,并非常规点积
- Relu和Leaky Relu的推广
-
线性,不会饱和,不会dead
Maxout
问题:两倍的参数
在实践中,通常使用Relu,同时要注意learning rate,同时可以尝试Leaky Relu、Maxout、ELU,可以试一下tanh,但效果不大,不要用sigmoid
Data Preprocessing

实践中,通常只做中心化处理,防止gradient总是正或者负的,而不必做normalized。
同时也可以考虑PCA(去相关)和Whitening(数据白化)。
但在图像处理中,仅仅做中心化处理。
Weight Initializaiton
Q:当所有的W都是0时,会发生什么?
A:训练出来的神经元都是一样的,而不会学习到不同的特征。
First Idea:small random numbers。对于小型的网络没有问题,但是对于大型网络会出现梯度接近于0的情况。
如果较大的初始值,则会使神经元接近于饱和,梯度同样会到0.因此,Relu解决了饱和的问题。
有一种方法叫做:Xavier initialization。
Batch Normalization

采用批量正则化处理,使数据符合高斯分布,从而获得高斯激活。
通常其在FC layer和activation layer中间,从而得到gaussian activation
优点:提高了梯度流动、允许较高的learning rate、去除了较高相关性的初始化、在一定程度上类似于正则化
Babysitting the learning Processing
根据训练过程判断参数正否朝着正确的方向前进。
loss没有降低:学习率太低了
loss爆炸:学习率太大了
Hyperparameter Optimization
交叉验证策略:有少量参数得到粗略的判断,然后精细的调整。
Random Search vs. Grid Search
需要调整的参数:网络结构、学习率、下降时间、更新类型、正则化(L2、Dropout)




网友评论