CS231n Convolutional Neural Networks (CNNs / ConvNets) 神经网络1

神经网络算法计算公式是 s = W 2 m a x ( 0 , W 1 x ) 其中W_1的含义是这样的:举个例子来说,它可以是一个[100x3072]的矩阵,其作用是将图像转化为一个100维的过渡向量。函数max(0,-)是非线性的,它会作用到每个元素。这个非线性函数有多种选择,后续将会学到。但这个形式是一个最常用的选择,它就是简单地设置阈值,将所有小于0的值变成0。最终,矩阵W_2的尺寸是[10x100],因此将得到10个数字,这10个数字可以解释为是分类的评分。注意非线性函数在计算上是至关重要的,如果略去这一步,那么两个矩阵将会合二为一,对于分类的评分计算将重新变成关于输入的线性函数。这个非线性函数就是改变的关键点。参数W_1,W_2将通过随机梯度下降来学习到,他们的梯度在反向传播过程中,通过链式法则来求导计算得出。
一个三层的神经网络可以类比地看做 s = W 3 m a x ( 0 , W 2 m a x ( 0 , W 1 x ) )

每个神经元都对它的输入和权重进行点积,然后加上偏差,最后使用非线性函数(或称为激活函数)。本例中使用的是sigmoid函数 σ ( x ) = 1 / ( 1 + e x )

作为线性分类器的单个神经元

二分类Softmax分类器。举例来说,可以把 σ ( Σ i w i x i + b ) 看做其中一个分类的概率 P ( y i = 1 | x i ; w ) ,其他分类的概率为 P ( y i = 0 | x i ; w ) = 1 P ( y i = 1 | x i ; w ) ,因为它们加起来必须为1。根据这种理解,可以得到交叉熵损失,这个在线性分一节中已经介绍。然后将它最优化为二分类的Softmax分类器(也就是逻辑回归)。因为sigmoid函数输出限定在0-1之间,所以分类器做出预测的基准是神经元的输出是否大于0.5。

二分类SVM分类器。或者可以在神经元的输出外增加一个最大边界折叶损失(max-margin hinge loss)函数,将其训练成一个二分类的支持向量机。

理解正则化。在SVM/Softmax的例子中,正则化损失从生物学角度可以看做逐渐遗忘,因为它的效果是让所有突触权重w在参数更新过程中逐渐向着0变化。

一个单独的神经元可以用来实现一个二分类分类器,比如二分类的Softmax或者SVM分类器。

title
左边是Sigmoid非线性函数,将实数压缩到[0,1]之间。右边是tanh函数,将实数压缩到[-1,1]。

激活函数(activation function)(非线性函数):
1.Sigmoid
现在sigmoid函数很少使用的原因,有两个缺点:

  • Sigmoid函数饱和使梯度消失。
  • Sigmoid函数的输出不是零中心的。

2.Tanh
t a n h ( x ) = 2 σ ( 2 x ) 1
3. ReLU(常用)
f ( x ) = m a x ( 0 , x )
4. Leaky ReLU
ReLU中当x<0时,函数值为0。而Leaky ReLU则是给出一个很小的负数梯度值,比如0.01。所以其函数公式为 f ( x ) = 1 ( x < 0 ) ( α x ) + 1 ( x >= 0 ) ( x ) 其中 α 是一个小的常量
5.Maxout
m a x ( w 1 T x + b 1 , w 2 T x + b 2 )

神经网络结构
最普通的层的类型是全连接层(fully-connected layer)全连接层中的神经元与其前后两层的神经元是完全成对连接的,但是在同一个全连接层内的神经元之间没有连接。

N层神经网络,没有把输入层算入。因此,单层的神经网络就是没有隐层的(输入直接映射到输出)。因此,有的研究者会说逻辑回归或者SVM只是单层神经网络的一个特例。

title
左边是一个2层神经网络,隐层由4个神经元(也可称为单元(unit))组成,输出层由2个神经元组成,输入层是3个神经元。右边是一个3层神经网络,两个含4个神经元的隐层。注意:层与层之间的神经元是全连接的,但是层内的神经元不连接。
确定网络尺寸。用来度量神经网络的尺寸的标准主要有两个:一个是神经元的个数,另一个是参数的个数,用上面图示的两个网络举例:

  • 第一个网络有4+2=6个神经元(输入层不算),[3x4]+[4x2]=20个权重,还有4+2=6个偏置,共26个可学习的参数。
  • 第二个网络有4+4+1=9个神经元,[3x4]+[4x4]+[4x1]=32个权重,4+4+1=9个偏置,共41个可学习的参数。

完整的3层神经网络的前向传播就是简单的3次矩阵乘法,其中交织着激活函数的应用。


过拟合(Overfitting)是网络对数据中的噪声有很强的拟合能力,而没有重视数据间(假设)的潜在基本关系。举例来说,有20个神经元隐层的网络拟合了所有的训练数据,但是其代价是把决策边界变成了许多不相连的红绿区域。
title
防止神经网络的过拟合有很多方法(L2正则化,dropout和输入噪音等),后面会详细讨论。在实践中,使用这些方法来控制过拟合比减少网络神经元数目要好得多。
正则化强度是控制神经网络过拟合的好方法。
title

小结

  • 介绍了生物神经元的粗略模型;
  • 讨论了几种不同类型的激活函数,其中ReLU是最佳推荐
  • 介绍了神经网络,神经元通过全连接层连接,层间神经元两两相连,但是层内神经元不连接;
  • 理解了分层的结构能够让神经网络高效地进行矩阵乘法和激活函数运算;
  • 理解了神经网络是一个通用函数近似器,但是该性质与其广泛使用无太大关系。之所以使用神经网络,是因为它们对于实际问题中的函数的公式能够某种程度上做出“正确”假设
  • 讨论了更大网络总是更好的这一事实。然而更大容量的模型一定要和更强的正则化(比如更高的权重衰减)配合,否则它们就会过拟合。在后续章节中我们讲学习更多正则化的方法,尤其是dropout。

猜你喜欢

转载自blog.csdn.net/eqiang8848/article/details/82291976