LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
ML学习笔记-CS231n(5)

Neural Networks P.1: Setting up theArchitecture

 

Modeling one neuron

总的来说,就是一个线性组合再加上一个Activation Function激活函数。激活函数模拟了生物神经元中电位的相关机能。(注:虽然是模仿生物神经元的结构,但实际上完全不同,生物神经中传递的是脉冲序列,而非一个不包含时间的模拟值,参考https://neurophysics.ucsd.edu/courses/physics_171/annurev.neuro.28.061604.135703.pdf)

Single neuron as a linear classifier

Binary Softmax classifier:对于一个二分类问题,可以只用一个神经元,输出直接定义为某一分类的概率。

Regularization interpretation:正则化可以理解为神经元的“遗忘”,因为它驱使W接近0。

 

Commonly used activation functions

参考Wiki可以看到很多的激活函数(https://en.wikipedia.org/wiki/Activation_function)。

SigmoidLogistic:上下限分别是1和0。由于在接近上下限时,导数趋于0,所以在计算梯度时,梯度会很小,在多层网络中,反向传播还会叠加这一影响。另外,它不是zero-centered而是恒正的,那么在计算参数梯度时,会导致梯度的所有元素全正或全负,不过当把batch中的梯度加在一起,还是能够出现不同的正负号。

Tanh:形状类似Sigmoid,但是是zero-centered。

ReLU:非常常用。收敛快,计算简单。但容易不可逆的死掉:当一个大的梯度反向传播通过ReLU并更新了W,可能导致ReLU的输入始终为负值,由于此处导数为0,W就无法再被更新,于是就不可恢复的死掉了。

Leaky ReLU:负值的部分有一定斜率,所以有可能恢复。同时,负值部分的斜率可以作为一个可更新的参数,参考PReLU(https://arxiv.org/abs/1502.01852),但此方法的泛用性不明。

Maxout:与其他激活函数不同,不是单值输入,而是max(w1 x + b1, w2 x + b2 , …)。

原文的建议:先试ReLU,小心learning rate和神经元死掉;如果不行试试ReLU的变种或Maxout;最后可以试Tanh但别用Sigmoid。

【?】最近好像出了一个叫Swish的激活函数,很神秘(https://arxiv.org/abs/1710.05941)。

Neural Network architectures

神经网络由输入层,若干隐藏层和输出层构成。典型的层类型是全连接层。在说层数的时候不计输入层。输出层一般不用激活函数。网络的大小由神经元数或参数数衡量,现代的卷积网络大致有1亿的参数和10-20层。

Representational power

任何连续函数可以用神经网络来近似。

It turnsout that Neural Networks with at least one hidden layer are universalapproximators.(see https://www.dartmouth.edu/~gvc/Cybenko_MCSS.pdf)

Deep : 3层网络往往比2层网络表现好,但3层以上就变化不大了。但在卷积网络中,深度变得很重要,往往需要至少10层可学习的层,原因可能在于图像包含的层级结构。

 

Setting number of layers and their sizes

网络规模越大,表达能力越强。

表达能力强的网络容易把噪声也学习了,即overfitting,如图5的20神经元网络。

但是,不应为防止overfitting而选择减小规模。防止overfitting有许多其他方法:加入输入噪声、正则化、dropout等。且,小规模网络拥有的minima少而loss高,大规模网络minima多但loss小,即大规模网络的收敛更稳定。下图为正则化对过拟合的抑制作用。

   

推荐文章
评论(0)
分享到
转载我的主页