[软件工程]——卷积神经网络学习

绪论

应用

主要应用在图像、视觉领域,例如分类,检索,检测,分割(人脸识别、图像生成、自动驾驶等)等任务。

传统神经网络VS卷积神经网络

传统神经网络:搭建神经网络结构,合适的损失函数,更新参数。

image

关于损失函数:损失函数用于衡量吻合度。
分类损失中,常用交叉熵损失或hinge loss(铰链损失);回归损失中,常用均方误差和平均绝对值误差。

image

为何需要卷积神经网络?

因为传统神经网络,对于图像处理任务,需要学习的参数量过多(每张图片都有上万个像素)。容易导致过拟合,也就是在训练集上表现好,但在测试集上表现不好,泛化性能差。

那么卷积神经网络会怎么做呢?卷积神经网络使用 局部关联(filter来提取特征),参数共享(滑动窗口)等操作。降低了相当多的参数量。

image

卷积神经网络的组成结构:卷积层,激活层,池化层,全连接层。实际上和传统神经网络还是蛮像的。

基本组成结构

卷积

卷积是对两个实变函数(实数为自变量)的数学操作。在图像处理方面,我们主要关注二维卷积。以下是一些术语

image

特征图,就是经过卷积之后输出的结果。
卷积的计算过程类似于滑动窗口,可以看动图演示。

image

步长(stride)大小导致卷积不匹配:零补充(padding)
特征图大小计算

\[(N + padding * 2 - F)/stride + 1 \]

N=7 的input经过一个 F=3,stride=1 的filter卷积运算后,特征图的尺寸是5。

深度:特征图的厚度,与filter的个数保持一致。

不同的卷积核关注的东西是不同的。

卷积核应该不是输入矩阵的一个子集,而是有自己的参数。参数最初应该会随机初始化,在训练过程中进行反向传播,更新参数。

池化

保留主要特征的同时,减少参数的计算量,防止过拟合,提高模型泛化能力。

用于卷积层与卷积层之间,或全连接层与全连接层之间。

分为最大值池化(分类任务中常用),平均值池化。

image
池化的计算过程与卷积类似,可见示意图的池化运算过程。

全连接

两层之间所有神经元都有权重连接。一般来说是参数量最大的层。全连接层中的每一层是由许多神经元组成的的平铺结构(1 * N)

小结

如何确定filter的参数和bias,随机初始化,然后反向传播

卷积神经网络的典型结构

emm,这些典型的结构还是以介绍为主吧。

AlexNet

image

ReLU函数:正区间内解决了梯度消失问题,计算速度快,收敛速度快。
DropOut随机失活,训练时随机关闭部分神经元,减小了参数量。在测试时整合所有神经元,防止过拟合。
数据增强:平移、反转、对称,改变RGB通道强度。

下图是AlexNet的结构解析。
image

ZFNet

网络结构与AlexNet相同,主要是修改了卷积层的感受野,步长和卷积核个数。

VGG

VGG主要有VGG16,VGG19两种,主要体现在层数的不同。VGG是一种更深的网络。

image

GoogleNet

网络结构上进行了改进:inception模块,通过多个卷积核增加特征多样性。并通过插入1 * 1的卷积核以及使用小尺寸卷积核来降低参数量。

image

整个网络包括Stem部分、多个Inception结构堆叠、全连接层(仅在最后的类别输出中存在)、辅助分类器。

ResNet

image

image

残差:去掉相同的主题部分,突出微小的变化,可以被用来训练非常深的神经网络。

问题

  1. 对三维卷积过程的一些运算有些不太明白。还有如何确定卷积的相关参数使效果更明显,以及卷积运算中设置偏置项bias的作用。

  2. 对于一些卷积神经网络结构的理解还是有些模糊,例如不太清楚深度串联和ResNet中残差块的原理。

posted @ 2021-10-16 22:10  Brisling  阅读(177)  评论(0编辑  收藏  举报