CS231n学习笔记--2.NN1
1.**函数对于神经网络来说是必要的,因为没有它,无论有多少层最终都可以化简为线性函数;
2.常用**函数:每个**函数都是对一个数做操作。
**函数 | 图像 | 公式 | 优缺点 |
sigmoid |
1.当输出接近0或1时对应的导数接近0,这会导致梯度消散; 2.sigmoid的输出不以0为中心,这将导致反向传播时W的gradient要么是全正,要么是全负,这将导致权值更新的路径是一个zig-zag路径,使收敛变慢。(不过批处理可以缓解这种问题) |
||
tanh | 还是存在梯度消散的问题,但是解决了输出不以0为中心的问题,因此在实际中比sigmoid表现要好。 | ||
ReLU | f(x) = max(0, x) |
优点:缓解梯度消散的问题,计算简单; 缺点:当有一个很大的梯度流回ReLU时,因为max(0,x) = 1,当x>0时,这可能导致权值有很大的更新,权值更新了很大后有可能会导致对所有的后续训练数据Wx+b<0, 这样这个ReLU从此就dead了。并且这种变化时不可逆的,当learning rate设置的很大时就容易发生这种情况,有时会导致40%的ReLU都dead。设置合适的learning rate会避免这种情况。 |
|
Leaky Relu | f(x)=1(x<0)(ax)+1(x>=0)x | 试图解决dying ReLU的问题,但是效果并不稳定 | |
Maxout |
ReLU和Leaky Relu是Maxout的特殊形式,具有ReLU的优点并且没有dying的问题,但是参数量增加了一倍。 |
注:尽管没有限制在一个网络中使用多种**函数,但是实际中很少有这么做的。
3.全连接网络结构:
上图中一个圈就是一个数,一条线就是一个weight。也可以理解为权值矩阵将一个三维的点映射到了四维空间。对于批量输入的情况,输入从上图中的向量变成了矩阵,一个n*3的矩阵,但是权值矩阵的维度不变。
4.全连接网络的表达能力
理论上单层的神经网络能够近似表达任意连续函数,尽管多层和单层在数学意义上表达能力相同,但实际中要用多层。对于全连接来讲,3层好过2层,但是4,5,6层并不比3层好,而CNN正相反。
5. 尽管小的神经网络相对于大的神经网络能够防止过拟合,但是实际中不会因为这点就放弃使用大的神经网络,而回采取其他方法来防止大的神经网络过拟合(如正则化,dropout,输入噪音等)。这么做的原因是虽然小的神经网络有比较少的local minima,但是这些local minima却更容易收敛(跳进去后出不来),并且这些local minima相对于实际的loss来讲很差(loss很高),而大的神经网络虽然local minima多,但是这些local minima却和实际loss很接近。具体可参考:https://arxiv.org/abs/1412.0233