神经网络--基本概念$CNN的卷积

从百度人工智能课程里,看到对神经网络的基本概念的介绍,觉得通俗易懂,写的挺好。就摘出来了。
备注:如有侵权,请告知删除。

1. 神经网络的基本概念

人工神经网络包括多个神经网络层,如卷积层、全连接层、LSTM等,每一层又包括很多神经元,超过三层的非线性神经网络都可以被称为深度神经网络。通俗的讲,深度学习的模型可以视为是输入到输出的映射函数,如图像到高级语义(美女)的映射,足够深的神经网络理论上可以拟合任何复杂的函数。因此神经网络非常适合学习样本数据的内在规律和表示层次,对文字、图像和语音任务有很好的适用性。因为这几个领域的任务是人工智能的基础模块,所以深度学习被称为实现人工智能的基础也就不足为奇了。

神经网络结构如 下图8 所示。
在这里插入图片描述

  • 神经元: 神经网络中每个节点称为神经元,由两部分组成:
  • 加权和: 将所有输入加权求和。
  • 非线性变换(激活函数): 加权和的结果经过一个非线性函数变换,让神经元计算具备非线性的能力。
  • 多层连接: 大量这样的节点按照不同的层次排布,形成多层的结构连接起来,即称为神经网络。
  • 前向计算: 从输入计算输出的过程,顺序从网络前至后。
  • 计算图: 以图形化的方式展现神经网络的计算逻辑又称为计算图。我们也可以将神经网络的计算图以公式的方式表达,如下:
    在这里插入图片描述

由此可见,神经网络并没有那么神秘,它的本质是一个含有很多参数的“大公式”。

2. CNN卷积神经网路

卷积神经网络是目前计算机视觉中使用最普遍的模型结构。介绍卷积神经网络的一些基础模块,包括:

  • 卷积(Convolution)
  • 池化(Pooling)
  • ReLU激活函数
  • 批归一化(Batch Normalization)
  • 丢弃法(Dropout)

通常全连接网络进行特征提取,即将一张图片上的所有像素点展开成一个1维向量输入网络,它存在如下两个问题:

1) 输入数据的空间信息被丢失。 空间上相邻的像素点往往具有相似的RGB值,RGB的各个通道之间的数据通常密切相关,但是转化成1维向量时,这些信息被丢失。同时,图像数据的形状信息中,可能隐藏着某种本质的模式,但是转变成1维向量输入全连接神经网络时,这些模式也会被忽略。

2) 模型参数过多,容易发生过拟合。 在手写数字识别案例中,每个像素点都要跟所有输出的神经元相连接。当图片尺寸变大时,输入神经元的个数会按图片尺寸的平方增大,导致模型参数过多,容易发生过拟合。

为了解决上述问题,我们引入卷积神经网络进行特征提取,既能提取到相邻像素点之间的特征模式,又能保证参数的个数不随图片尺寸变化。图6 是一个典型的卷积神经网络结构,多层卷积和池化层组合作用在输入图片上,在网络的最后通常会加入一系列全连接层,ReLU激活函数一般加在卷积或者全连接层的输出上,网络中通常还会加入Dropout来防止过拟合。
zzzzz

图6:卷积神经网络经典结构

2.1 卷积

主要涵盖如下内容:

  • 卷积计算
  • 填充(padding)
  • 步幅(stride)
  • 感受野(Receptive Field)
  • 多输入通道、多输出通道和批量操作

2.1.1 卷积计算

卷积是数学分析中的一种积分变换的方法,在图像处理中采用的是卷积的离散形式。这里需要说明的是,在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学分析中的卷积定义有所不同,这里跟其他框架和卷积神经网络的教程保持一致,都使用互相关运算作为卷积的定义,具体的计算过程如 图7 所示。
在这里插入图片描述

图7:卷积计算过程

2.1.2 填充(padding)

在上面的例子中,输入图片尺寸为3×3,输出图片尺寸为2×2,经过一次卷积之后,图片尺寸变小。卷积输出特征图的尺寸计算方法如下(卷积核的高和宽分别为 k h k_{h} kh k w k_{w} kw
H o u t = H − k h + 1 H_{out} = H-k_h +1 Hout=Hkh+1$
W o u t = W − k w + 1 W_{out} = W-k_w +1 Wout=Wkw+1

如果输入尺寸为4,卷积核大小为3时,输出尺寸为4−3+1=24-3+1=24−3+1=2。读者可以自行检查当输入图片和卷积核为其他尺寸时,上述计算式是否成立。当卷积核尺寸大于1时,输出特征图的尺寸会小于输入图片尺寸。如果经过多次卷积,输出图片尺寸会不断减小。为了避免卷积之后图片尺寸变小,通常会在图片的外围进行填充(padding),如 图8 所示。
在这里插入图片描述

图8:图形填充

卷积核大小通常使用1,3,5,7这样的奇数。

2.1.3 步幅(stride)

图8 中卷积核每次滑动一个像素点,这是步幅为1的特殊情况。图9 是步幅为2的卷积过程,卷积核在图片上移动时,每次移动大小为2个像素点。
在这里插入图片描述

图9:步幅为2的卷积过程

2.1.4 感受野(Receptive Field)

输出特征图上每个点的数值,是由输入图片上大小为​ k h ∗ k w k_{h} * k_{w} khkw 的区域的元素与卷积核每个元素相乘再相加得到的,所以输入图像上 k h ∗ k w k_{h} * k_{w} khkw 区域内每个元素数值的改变,都会影响输出点的像素值。我们将这个区域叫做输出特征图上对应点的感受野。感受野内每个元素数值的变动,都会影响输出点的数值变化。比如3×3卷积对应的感受野大小就是3×3,如 图10 所示。
在这里插入图片描述

图10:感受野为3×3的卷积

而当通过两层3×3的卷积之后,感受野的大小将会增加到5×5,如 图11 所示。
在这里插入图片描述

图11:感受野为5×5的卷积

因此,当增加卷积网络深度的同时,感受野将会增大,输出特征图中的一个像素点将会包含更多的图像语义信息。

2.1.5 多输入通道、多输出通道和批量操作

实际应用时,卷积处理的问题要复杂的多。例如:对于彩色图片有RGB三个通道,需要处理多输入通道的场景。输出特征图往往也会具有多个通道,而且在神经网络的计算中常常是把一个批次的样本放在一起计算,所以卷积算子需要具有批量处理多输入和多输出通道数据的功能,下面将分别介绍这几种场景的操作方式。

  • 多输入通道场景
    上面的例子中,卷积层的数据是一个2维数组,但实际上一张图片往往含有RGB三个通道,要计算卷积的输出结果,卷积核的形式也会发生变化。假设输入图片的通道数为 C i n C_{in} Cin,输入数据的形状是 C i n ∗ H i n ∗ W i n C_{in}*H_{in}*W_{in} CinHinWin。计算过程如 图12 所示。

1)对每个通道分别设计一个2维数组作为卷积核,卷积核数组的形状是 C i n ∗ k h ∗ k w C_{in}*k_{h}*k_{w} Cinkhkw
2)对任一通道 C i n ∈ [ 0 , C i n ) C_{in} \in [0, C_{in}) Cin[0,Cin),分别用大小为 k h × k w k_{h}\times{k_w} kh×kw的卷积核在大小为 H i n × W i n H_{in}\times{W_{in}} Hin×Win 的二维数组上做卷积。
3)将这 C i n C_{in} Cin 个通道的计算结果相加,得到的是一个形状为 H o u t × W o u t H_{out}\times{W_{out}} Hout×Wout的二维数组。
在这里插入图片描述

图12:多输入通道计算过程
  • 多输出通道场景
    一般来说,卷积操作的输出特征图也会具有多个通道 C o u t C_{out} Cout ,这时我们需要设计 C o u t C_{out} Cout 个维度为 C i n × k h × k w C_{in}\times{k_h}\times{k_w} Cin×kh×kw 的卷积核,卷积核数组的维度是 C o u t × C i n × k h × k w C_{out}\times C_{in}\times{k_h}\times{k_w} Cout×Cin×kh×kw ,如 图13 所示。
    1)对任一输出通道 c o u t ∈ [ 0 , C o u t ) c_{out} \in [0, C_{out}) cout[0,Cout),分别使用上面描述的形状为 C i n × k h × k w C_{in}\times{k_h}\times{k_w} Cin×kh×kw的卷积核对输入图片做卷积。
    2)将这 C o u t C_{out} Cout个形状为 H o u t × W o u t H_{out}\times{W_{out}} Hout×Wout的二维数组拼接在一起,形成维度为 C o u t × H o u t × W o u t C_{out}\times{H_{out}}\times{W_{out}} Cout×Hout×Wout的三维数组。
    通常将卷积核的输出通道数叫做卷积核的个数。
    在这里插入图片描述
图13:多输出通道计算过程
  • 批量操作
    在卷积神经网络的计算中,通常将多个样本放在一起形成一个mini-batch进行批量操作,即输入数据的维度是 N × C i n × H i n × W i n N\times{C_{in}}\times{H_{in}}\times{W_{in}} N×Cin×Hin×Win。由于会对每张图片使用同样的卷积核进行卷积操作,卷积核的维度与上面多输出通道的情况一样,仍然是
    C o u t × C i n × k h × k w C_{out}\times C_{in}\times{k_h}\times{k_w} Cout×Cin×kh×kw,输出特征图的维度是 N × C o u t × H o u t × W o u t N\times{C_{out}}\times{H_{out}}\times{W_{out}} N×Cout×Hout×Wout,如 图14 所示。
    在这里插入图片描述
图14:批量操作

猜你喜欢

转载自blog.csdn.net/duanyuwangyuyan/article/details/114298561
今日推荐