转载请注明:http://blog.csdn.net/c602273091/article/details/54235146
训练过程
整个训练网络的过程可以用下图表示:
这个课程会把以上四个部分逐个击破,而且还加入不少调参的trick。
接下来就将组个叙述各个部分。
激活函数
Sigmoid
这种激活函数有三个缺点:
1、饱和的神经元不再更新权值。可以看到横轴很大之后梯度接近于0;
2、这个函数不是以0为中心,在进行求导的时候单方向传递出错概率较大。
3、exp计算复杂度高。
tanh
这种方法计算复杂度比较低,然后是以0为中心。但是有个缺点,在横轴较大以后,梯度接近于0,不再更新。
ReLU
感觉就是multi-class SVM。这个函数客服了以上的缺点。
但是x < 0之后,梯度为0. 所以权值初始化一般为正。
leaky ReLU
这种方法下,神经元不会die。
ELU
Maxout
这种方法很好,就是权重的数目是原来的两倍。存储和计算都有比较大的问题。
所以总结一下实际上大家使用的时候都是:
使用ReLU。偶尔尝试Leaky ReLU / Maxout / ELU,tanh就比较少了。sigmoid就基本没用。
数据预处理
数据预处理之后,可以使得整个数据计算的时候计算量减少或者是集中在0附近。
一般有PCA、白化、归一化等等。在图片处理的时候,是把每个通道的值减去该通道所有像素的平均值或者是所有通道所有像素的平均值。
权值初始化
1、可以随机初始化。
2、看下面的文献,各种技巧:
批归一化
这个在语音识别的MFCC里面也见到过。就是去噪。
归一化之后还要恢复:
以上截图来自于cs231n课程的ppt。
该课程的课程主页是: http://cs231n.stanford.edu/syllabus.html
课程的视频在: https://www.youtube.com/watch?v=g-PvXUjD6qg&list=PLlJy-eBtNFt6EuMxFYRiNRS07MCWN5UIA