深度学习基础(CNN详解以及训练过程1)

深度学习是一个框架,它包括几个重要的算法:

[En]

Deep learning is a framework that includes several important algorithms:

  • Convolutional Neural Networks(CNN)卷积神经网络
  • AutoEncoder自动编码器
  • Sparse Coding稀疏编码
  • Restricted Boltzmann Machine(RBM)限制波尔兹曼机
  • Deep Belief Networks(DBN)深信度网络
  • Recurrent neural Network(RNN)多层反馈循环神经网络神经网络

对于不同问题(图像,语音,文本),需要选用不同网络模型比如CNN RESNET等才能达到更好效果。

今天来讲最基础的CNN网络。

可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。

CNN网络介绍

卷积神经网络是一种多层神经网络,擅长处理与图像,特别是大图像相关的机器学习问题。

[En]

Convolution neural network is a kind of multi-layer neural network, which is good at dealing with machine learning problems related to images, especially large images.

卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。CNN最早由Yann LeCun提出并应用在手写字体识别上(MINST)。LeCun提出的网络称为LeNet,其网络结构如下:

这是最典型的卷积网络,由卷积层、汇聚层和全连接层组成。其中,卷积层和池层协同形成多个卷积组,逐层提取特征,最终通过多个全连通的层完成分类。

[En]

This is the most typical convolution network, which is composed of convolution layer, pooling layer and full connection layer. Among them, the convolution layer and the pool layer cooperate to form several convolution groups, extract the features layer by layer, and finally complete the classification through several fully connected layers.

卷积层完成的操作可以认为是受到局部感受野概念的启发,而池化层主要是为了降低数据维度。

[En]

The operation completed by the convolution layer can be considered to be inspired by the concept of local receptive field, while the pooling layer is mainly to reduce the data dimension.

综合起来说,CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

降低参数量级

为什么要降低参数的数量级?从下面的示例中很容易理解。

[En]

Why lower the parameter order of magnitude? It is easy to understand from the following example.

如果我们使用传统神经网络方式,对一张图片进行分类,那么,我们把图片的每个像素都连接到隐藏层节点上,那么对于一张1000×1000像素的图片,如果我们有1M隐藏层单元,那么一共有10^12个参数,这显然是不能接受的。(如下图所示)

深度学习基础(CNN详解以及训练过程1)

但是我们在CNN里,可以大大减少参数个数,我们基于以下两个假设:

1)最底层特征都是局部性的,也就是说,我们用10×10这样大小的过滤器就能表示边缘等底层特征

2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,我们能用同样的一组分类器来描述各种各样不同的图像

基于以上两点,假设我们可以将第一层网络结构简化如下:

[En]

Based on the above two, hypothetically, we can simplify the first layer network structure as follows:

深度学习基础(CNN详解以及训练过程1)

我们用100个10×10的小过滤器,就能够描述整幅图片上的底层特征。

卷积(Convolution)

卷积运算的定义如下:

[En]

The definition of the convolution operation is as follows:

深度学习基础(CNN详解以及训练过程1)

如图所示,我们有一个5×5的图像,我们用一个3×3的卷积核:

1 0 1

0 1 0

1 0 1

来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3×3的卷积结果。

这个过程可以理解为,我们使用一个过滤器(卷积核)来过滤图像的每个小区域,以获得这些小区域的特征值。

[En]

This process can be understood as that we use a filter (convolution kernel) to filter each small region of the image to get the eigenvalues of these small regions.

在实际训练过程中,卷积核的值是在学习过程中学到的。

在具体应用中,往往存在多个卷积核,可以认为每个卷积核代表一种图像模式。如果具有该卷积核的图像块的卷积值较大,则认为该图像块非常接近卷积核。如果我们设计六个卷积核,这是可以理解的:我们认为这幅图像上有六种潜在的纹理模式,即我们可以用六种基本模式来描绘一幅图像。以下是24个不同卷积核心的示例:

[En]

In specific applications, there are often multiple convolution kernels, and it can be considered that each convolution kernel represents an image mode. If the convolution value of an image block with this convolution kernel is large, it is considered that the image block is very close to the convolution kernel. If we design six convolution cores, it is understandable: we think there are six underlying texture modes on this image, that is, we can depict an image with six basic modes. Here are examples of 24 different convolution cores:

深度学习基础(CNN详解以及训练过程1)

池化(Pooling)

汇集听起来非常复杂,但它只是一种下采样。池化过程如下图所示:

[En]

Pooling sounds very sophisticated, but it is simply downsampling. The pooling process is shown in the following figure:

深度学习基础(CNN详解以及训练过程1)

上图中,我们可以看到,原始图片是20×20的,我们对其进行下采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。

其原因是,即使在卷积之后,图像仍然很大(因为卷积核相对较小),所以进行下采样以降低数据维度。

[En]

The reason for this is that even after convolution, the image is still large (because the convolution core is relatively small), so downsampling is performed to reduce the data dimension.

其原因在于,即使减少了大量的数据,特征的统计属性仍然可以描述图像,并且由于数据维度的降低,有效地避免了过拟合。

[En]

The reason for this is that even if a lot of data is reduced, the statistical attributes of the features can still describe the image, and due to the reduction of the data dimension, overfitting is effectively avoided.

在实际应用中,池化根据下采样的方法,分为最大值下采样(Max-Pooling)与平均值下采样(Mean-Pooling)。

全连接层(fully connected layers,FC)

在整个卷积神经网络中起到”分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的”分布式特征表示”映射到样本标 记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1×1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽。

LeNet介绍

下面再回到LeNet网络结构:

深度学习基础(CNN详解以及训练过程1)

这回我们就比较好理解了,原始图像进来以后,先进入一个卷积层C1,由6个5×5的卷积核组成,卷积出28×28的图像,然后下采样到14×14(S2)。

接下来,再进一个卷积层C3,由16个5×5的卷积核组成,之后再下采样到5×5(S4)。

注意,这里S2与C3的连接方式并不是全连接,而是部分连接,如下图所示:

深度学习基础(CNN详解以及训练过程1)

其中行代表S2层的某个节点,列代表C3层的某个节点。

我们可以看出,C3-0跟S2-0,1,2连接,C3-1跟S2-1,2,3连接,后面依次类推,仔细观察可以发现,其实就是排列组合:

0 0 0 1 1 1

0 0 1 1 1 0

0 1 1 1 0 0

1 1 1 1 1 1

我们可以领悟作者的意图,即用不同特征的底层组合,可以得到进一步的高级特征,例如:/ + \ = ^ (比较抽象O(∩_∩)O~),再比如好多个斜线段连成一个圆等等。

最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。

最后,我想谈一谈个人的观点。我认为第一卷积层选择六个卷积核是有原因的。可能是因为第04条9实际上可以由以下六条边表示:

[En]

Finally, I would like to talk about a personal point of view. I think there is a reason why the first convolution layer chooses six convolution cores. Perhaps it may be because 04th 9 can actually be represented by the following six edges:

深度学习基础(CNN详解以及训练过程1)

这不是说得通吗?

[En]

Doesn’t that make sense? .

然后C3层的数量选择上面也说了,是从选3个开始的排列组合,所以也是可以理解的。

其实这些都是针对特定问题的trick,现在更加通用的网络的结构都会复杂得多,至于这些网络的参数如何选择,那就需要我们好好学习了。

Original: https://www.cnblogs.com/Anita9002/p/9296014.html
Author: Anita-ff
Title: 深度学习基础(CNN详解以及训练过程1)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/7623/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部