| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习(16)——卷积神经网络(一) -> 正文阅读 |
|
[人工智能]机器学习(16)——卷积神经网络(一) |
文章目录1 简介??卷积网络(convolutional network)(LeCun, 1989),也叫做 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。卷积网络在诸多应用领域都表现优异。“卷积神经网络’’ 一词表明该网络使用了 卷积(convolution)这种数学运算。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
针对上述问题,图像的主要特点:
CNN 正是针对图像的特点来解决 FC 的缺点的。卷积神经网络通常由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括 关联权重 和 池化层(Pooling Layer)等。下图就是一个卷积神经网络架构。
2 卷积层??针对FC神经网络处理图片数据的两个缺点,CNN提出的解决方案是 权值共享 和 卷积操作。首先要先理解一个概念:感受野,感受野表示当前特征图的 每个像素 表示 原始图像 的哪部分,看图说话:
2.1 权值共享??由我们上面介绍的感受野的概念,网络层的每个输出节点(输出像素)仅与感受野区域内
k
×
k
\boldsymbol{k × k}
k×k 个输入节点相连接,假如输出节点数为
J
\boldsymbol{J}
J,则当前层的参数量为
k
×
k
×
J
\boldsymbol{k × k×J}
k×k×J,相对于全连接层的
I
×
J
\boldsymbol{I×J}
I×J,
k
\boldsymbol{k}
k 一般取值较小,如 1、 3、5 等,
k
×
k
\boldsymbol{k×k}
k×k 远小于
I
\boldsymbol{I}
I,因此成功地将参数量减少了很多。注: 上述假设以及在后面的示例中只有一层卷积层,这是为了用感受野容易表示卷积图像位置,如果是多层卷积,则不能随便使用感受野这个名词。
2.2 卷积操作??卷积层是卷积神经网络的核心层,而卷积(Convolution)又是卷积层的核心。对卷积直观的理解,就是两个函数的一种运算,这种运算就称为卷积运算。下图就是一个简单的二维空间卷积运算示例,虽然简单,但却包含了卷积的核心内容。
2.3 单通道输入和单卷积核??首先讨论单通道输入 C i n = 1 \boldsymbol{C_{in} = 1} Cin?=1,如灰度图片只有灰度值一个通道,单个卷积核 C o u t = 1 \boldsymbol{C_{out} = 1} Cout?=1 的情况(卷积核的个数决定卷积层的输出通道数)。以输入 X \boldsymbol{X} X 为 5 × 5 \boldsymbol{5×5} 5×5 的矩阵,卷积核为 3 × 3 \boldsymbol{3×3} 3×3 的矩阵为例,如下图:
2.4 多通道输入和单卷积核??多通道输入的卷积层更为常见,比如彩色的图片包含了 R/G/B 三个通道,每个通道上
2.5 多通道输入和多卷积核??多通道输入、多卷积核是卷积神经网络中最为常见的形式,前面已经介绍了单卷积核的运算过程,每个卷积核和输入
X
\boldsymbol{X}
X 做卷积运算,得到一个输出矩阵。当出现多卷积核时,第
i
\boldsymbol{i}
i (
𝑖
∈
𝑛
\boldsymbol{ 𝑖 ∈ 𝑛 }
i∈n,𝑛为卷积核个数)个卷积核与输入
X
\boldsymbol{X}
X 运算得到第𝑖个输出矩阵(也称为输出张量
O
\boldsymbol{O}
O 的通道
i
\boldsymbol{i}
i),最后全部的输出矩阵在通道维度上进行拼接(Stack 操作,创建输出通道数的新维度),产生输出张量
O
\boldsymbol{O}
O ,
O
\boldsymbol{O}
O 包含了
n
\boldsymbol{n}
n 个通道数。
2.5 步长??步长就是卷积核或过滤器在左边窗口中每次移动的格数 (无论是自左向右移动,或自上向下移动),对于 2D 输入来说,分为沿 x \boldsymbol{x} x (向右)方向和 y \boldsymbol{y} y (向下)方向的移动长度。下图中,绿色实线代表的卷积核的位置是当前位置,绿色虚线代表是上一次卷积核所在位置,从上一次位置移动到当前位置的移动长度即是步长的定义。下图中感受野沿 x \boldsymbol{x} x 方向的步长为 2,表达为步长 s = 2 \boldsymbol{s = 2} s=2。
2.6 填充??在前面我们提过,如果不对图片进行拓展的话,经过卷积运算后的输出
O
\boldsymbol{O}
O 的高宽会小于输入
X
\boldsymbol{X}
X 的高宽;且当卷积核的步长过大时,卷积核可能会超过图片边界。在实际的网络模型设计时,我们通常希望输出
O
\boldsymbol{O}
O 的高宽能够与输入
X
\boldsymbol{X}
X 的高宽相同,从而方便网络参数的设计、残差连接等。为了让输出
O
\boldsymbol{O}
O 的高宽能够与输入
X
\boldsymbol{X}
X 的相等,一般通过在原输入
X
\boldsymbol{X}
X 的高和宽维度上面进行填充(padding)若干无效元素操作,得到增大的输入
X
′
\boldsymbol{X'}
X′ 。通过精心设计填充单元的数量,在
X
′
\boldsymbol{X'}
X′ 上面进行卷积运算得到输出
O
\boldsymbol{O}
O 的高宽可以和原输入
X
\boldsymbol{X}
X 相等。这种输入与输出的特征图维度一样的卷积方式,我们称作 Same卷积,不填充称作 Vaild卷积。
2.7 卷积的计算公式??经过上述对输入图像、卷积核、步长、填充、输出图像的分析,使用张量将它们表示如下:
如果已知
n
、
f
、
s
\boldsymbol{n、f、s}
n、f、s,则
p
=
f
?
1
2
\boldsymbol{p = \frac{f - 1}{2}}
p=2f?1?,
o
=
?
n
+
2
p
?
f
s
+
1
?
\boldsymbol{o = \lfloor \frac{n + 2p - f}{s} + 1\rfloor}
o=?sn+2p?f?+1?。最后再来分析以下卷积核在 2.5 多通道输入和多卷积核 的末尾我分析过在实际中卷积核的大小
f
\boldsymbol{f}
f 常常使用奇数是为了找到一个好锚点。实际上选择奇数的卷积核也更容易(padding)。当我们使用 Same卷积 时,这时候我们就需要用到 padding。但是如果
f
\boldsymbol{f}
f 是偶数的话,
p
=
f
?
1
2
\boldsymbol{p = \frac{f - 1}{2}}
p=2f?1?就不是整数了。这意味着我们只需要在输入图像的一边或者两边进行填充。
3 总结??在本篇博客中,我跟大家分享了卷积神经网络中的基础结构——卷积层,并依次介绍了权值共享、卷积操作、卷积核,填充等内容。卷积神经网络的基础知识有很多,本篇博客介绍不完,剩下的我放到下一篇博客。期待您的访问!感恩! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:19:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |