【paddle学习】识别数字

Softmax回归(Softmax Regression)

最简单的Softmax回归模型是先将输入层经过一个全连接层得到的特征,然后直接通过softmax 函数进行多分类

输入层的数据$X$传到输出层,在激活操作之前,会乘以相应的权重$W$,并加上偏置变量 $b$,具体如下:

$ y_i = {softmax}(sum_j W_{i,j}x_j + b_i)$

其中 $ {softmax}(x_i) = frac{e^{x_i}}{sum_j e^{x_j}}$

 对于有 N 个类别的多分类问题,指定 N 个输出节点,N 维结果向量经过softmax将归一化为 N 个[0,1]范围内的实数值,分别表示该样本属于这 N 个类别的概率。此处的 $y_i$ 即对应该图片为数字 i 的预测概率。

在分类问题中,我们一般采用交叉熵代价损失函数(cross entropy),公式如下:

$ ext{crossentropy}(label, y) = -sum_i label_ilog(y_i)$

多层感知器(Multilayer Perceptron, MLP)

Softmax回归模型采用了最简单的两层神经网络,即只有输入层和输出层,因此其拟合能力有限。为了达到更好的识别效果,我们考虑在输入层和输出层中间加上若干个隐藏层

  1. 经过第一个隐藏层,可以得到 $H_1 = phi(W_1X + b_1) $,其中$phi$代表激活函数,常见的有sigmoid、tanh或ReLU等函数。
  2. 经过第二个隐藏层,可以得到 $H_2 = phi(W_2H_1 + b_2) $
  3. 最后,再经过输出层,得到的$Y= ext{softmax}(W_3H_2 + b_3)$,即为最后的分类结果向量。

卷积神经网络(Convolutional Neural Network, CNN)

在多层感知器模型中,将图像展开成一维向量输入到网络中,忽略了图像的位置和结构信息,而卷积神经网络能够更好的利用图像的结构信息。LeNet-5是一个较简单的卷积神经网络。图4显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层。下面我们主要介绍卷积层和池化层。

卷积层

卷积层是卷积神经网络的核心基石。在图像识别里我们提到的卷积是二维卷积,即离散二维滤波器(也称作卷积核)与二维图像做卷积操作,简单的讲是二维滤波器滑动到二维图像上所有位置,并在每个位置上与该像素点及其领域像素点做内积。卷积操作被广泛应用与图像处理领域,不同卷积核可以提取不同的特征,例如边沿、线性、角等特征。在深层卷积神经网络中,通过卷积操作可以提取出图像低级到复杂的特征。

 输入图像大小为H=5,W=5,D=3,即$5 imes 5$大小的3通道(RGB,也称作深度)彩色图像。这个示例图中包含两(用K表示)组卷积核,即图中滤波器$W_0$和$W_1$。在卷积计算中,通常对不同的输入通道采用不同的卷积核,如图示例中每组卷积核包含(D=3)个$3 imes 3$(用$F imes F$表示)大小的卷积核。另外,这个示例中卷积核在图像的水平方向(W方向)和垂直方向(H方向)的滑动步长为2(用S表示);对输入图像周围各填充1(用P表示)个0,即图中输入层原始数据为蓝色部分,灰色部分是进行了大小为1的扩展,用0来进行扩展。经过卷积操作得到输出为$3 imes 3 imes 2$(用$H_{o} imes W_{o} imes K$表示)大小的特征图,即$3 imes 3$大小的2通道特征图,其中$H_o$计算公式为:$H_o = (H - F + 2 imes P)/S + 1,W_o$同理。 而输出特征图中的每个像素,是每组滤波器与输入图像每个特征图的内积再求和,再加上偏置$b_o$,偏置通常对于每个输出特征图是共享的。

在卷积操作中卷积核是可学习的参数,经过上面示例介绍,每层卷积的参数大小为$D imes F imes F imes K$。在多层感知器模型中,神经元通常是全部连接,参数较多。而卷积层的参数较少,这也是由卷积层的主要特性即局部连接和共享权重所决定。

  • 局部连接:每个神经元仅与输入神经元的一块区域连接,这块局部区域称作感受野(receptive field)。在图像卷积操作中,即神经元在空间维度(spatial dimension,即上图示例H和W所在的平面)是局部连接,但在深度上是全部连接。对于二维图像本身而言,也是局部像素关联较强。这种局部连接保证了学习后的过滤器能够对于局部的输入特征有最强的响应。局部连接的思想,也是受启发于生物学里面的视觉系统结构,视觉皮层的神经元就是局部接受信息的。

  • 权重共享:计算同一个深度切片的神经元时采用的滤波器是共享的。例如图4中计算o[:,:,0]的每个每个神经元的滤波器均相同,都为W_0,这样可以很大程度上减少参数。共享权重在一定程度上讲是有意义的,例如图片的底层边缘特征与特征在图中的具体位置无关。但是在一些场景中是无意的,比如输入的图片是人脸,眼睛和头发位于不同的位置,希望在不同的位置学到不同的特征 (参考斯坦福大学公开课)。请注意权重只是对于同一深度切片的神经元是共享的,在卷积层,通常采用多组卷积核提取不同特征,即对应不同深度切片的特征,不同深度切片的神经元权重是不共享。另外,偏重对同一深度切片的所有神经元都是共享的。

通过介绍卷积计算过程及其特性,可以看出卷积是线性操作,并具有平移不变性(shift-invariant),平移不变性即在图像每个位置执行相同的操作。卷积层的局部连接和权重共享使得需要学习的参数大大减小,这样也有利于训练较大卷积神经网络。

池化层

池化是非线性下采样的一种形式,主要作用是通过减少网络的参数来减小计算量,并且能够在一定程度上控制过拟合。通常在卷积层的后面会加上一个池化层。池化包括最大池化、平均池化等。其中最大池化是用不重叠的矩形框将输入层分成不同的区域,对于每个矩形框的数取最大值作为输出层,如图6所示。

更详细的关于卷积神经网络的具体知识可以参考斯坦福大学公开课图像分类教程。

常见激活函数介绍

  • sigmoid激活函数: $f(x) = sigmoid(x) = frac{1}{1+e^{-x}}$

  • tanh激活函数:$ f(x) = tanh(x) = frac{e^x-e^{-x}}{e^x+e^{-x}}$

    实际上,tanh函数只是规模变化的sigmoid函数,将sigmoid函数值放大2倍之后再向下平移1个单位:$tanh(x) = 2sigmoid(2x) - 1$

  • ReLU激活函数: $f(x) = max(0, x)$

 更详细的介绍请参考维基百科激活函数

原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/7232621.html