IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> CNN中的卷积操作与参数共享 -> 正文阅读

[人工智能]CNN中的卷积操作与参数共享


卷积神经网络(Convolutional Neural Networl, CNN)的两大核心思想:

  • 局部连接(Local Connectivity)
  • 参数共享(Parameter Sharing)

????????两者共同的一个关键作用就是减少模型的参数量,使运算更加’简洁、高效’,能够运行在超大规模数据集上。

(一)局部连接与卷积

1.1图像的局部相关

????????对于一张输入图片,大小为 W × H W \times H W×H, 如果使用全连接网络,生成一张 X × Y X \times Y X×Y的特征图,需要 W 、 t i m e s H × X × Y W、times H \times X \times Y WtimesH×X×Y个参数,如果原图长宽分别是$10^2$102 级别的,而且XY大小和WH差不多的话,那么这样一层网络需要的参数个数是 1 0 8 10^8 108~ 1 0 1 2 10^12 1012级别。
下图展示了全连接网络中一个神经元的参数量。不进行局部连接,每个神经元和每一个输入像素连接,参数量动辄千万级别,网络很难训练:
在这里插入图片描述
????????这么多参数肯定是不行的,我们就想办法减少参数的个数。一般而言,图像信息都是局部相关的,如果输入层的每一个像素只和输入层图片的一个局部相连,那么需要的参数个数就可以大大减少。假设输出层每个像素只与输入图片上 F × F F \times F F×F的一个方块区域有连接,也就是说输入层的这个像素值,只是通过原图的这个 W × H W \times H W×H减少到了 F × F F \times F F×F。如果对于原图片的每一个如果对于原图片的每一个 F × F F \times F F×F的方块都需要计算这样一个输出值,那么需要的参数只是KaTeX parse error: Undefined control sequence: \tmes at position 3: X \?t?m?e?s? ?Y \times F \tim…,如果原图长宽是 1 0 2 10^2 102级别,且 F F F 10 10 10以内的话,那么需要的参数个数只有 1 0 5 10^5 105$10^6$级别,相比于原来的$10^8$ 1 0 1 2 10^12 1012小了很多很多。
????????由此,CNN中的局部连接通过卷积操作来实现,避免了全连接中参数过多而造成无法计算的情况。那么,卷积具体是如何运算的呢?

什么是卷积?

????????卷积运算的本质是卷积核(也可称为滤波器,filter)和输入数据(图像)的局部区域间的点积运算,可以用相应的矩阵乘法来实现。
下图很好地演示了CNN中一个卷积核在单张图像数据上的卷积操作,可以简要地概括为:一个 3 × 6 3 \times 6 3×6大小的卷积核在一张 6 × 6 6 \times 6 6×6大小的输入图像上从左到右、从上到下依次扫描,进行矩阵的点积运算,得到相应位置的运算结果并输出(图中的 x x x为输入像素值, a a a为卷积核参数, F F F为输出的运算结果)。在这里插入图片描述
????????以上是输入为单通道(即二维矩阵)时的情况,当输入是多通道(即三维张量)时,卷积核也相应地“升级”为三维。下图的输入为三通道R(red)G(green)B(blue)图像,分别用不同的三维卷积核(Filter w0,w1)来进行卷积操作:
在这里插入图片描述

1.3 不同的卷积核(filter)

????????为什么要设置不同的filter呢?因为不同的filter会得到不同的输出数据,对应图像的不同特征信息,比如颜色深浅、轮廓等等。如下图,中间是图像输入,四角分别对应四个filter(带着一组固定权重的神经元)的输出:
在这里插入图片描述
下图的卷积层有两个filter,输出两个特征图:
在这里插入图片描述
????????其中输入图像为 32 × 32 × 3 32 \times 32 \times 3 32×32×3, 32 32 32表示图像尺寸, 3 3 3表示它的深度(即RGB三个channel)。卷积层的两个filter均为 5 × 5 × 3 5 \times 5 \times 3 5×5×3(filter的深度必须和输入图像的深度相同),输出的两个特征图均为KaTeX parse error: Undefined control sequence: \ttimes at position 14: 28 \times 28 \?t?t?i?m?e?s? ?1.

(二)CNN中的参数共享

????????权值共享 : 卷积核的参数实际上也可以叫做权重,它描述了局部连接中该位置的输入对于相应输出的影响力(重要性)。

2.1 图像底层特征的位置无关性

????????通过卷积操作,我们实现了输入图像的局部连接,从而大大减少了网络模型中的参数量。但这还不够,利用图像的另一特性,参数量可以进一步降低。

卷积中不做参数共享,则每一个输出对应一组参数值,参数量仍然庞大:在这里插入图片描述
????????我们知道,图像的底层特征是跟具体位置无关的,比如边缘。无论是在图像中间的边缘特征,还是图像四角的边缘特征,都可以用类似于微分的特征提取器提取(个人体会:边缘定位->通过计算图像梯度来实现->近似一节微分运算->通过高通滤波(卷积)来实现。)。

  • 低层次特征往往是泛化的、易于表达的,如纹理、颜色、边缘、棱角等等。
  • 高层次特征往往是复杂的、难以说明的,比如金色的头发、瓢虫的翅膀、缤纷的花儿等等。
  • 观察CNN各层输出可看出, 浅层(靠近输入)能提取到上述低层次特征,深层(靠近输出)往往能提取到上述高层次特征。最后使用全连接层分析最深处的高层次特征并给出预测结果。

那么,对于主要用于提取底层特征的前几层网络,把上述局部全连接层中每一个 F × F F \times F F×F方形区域对应的参数(权值)共享,就可以进一步减少网络中的参数个数了。也就是说,输出层的每一个像素,是由输入层对应位置的 F × F F \times F F×F局部图片,与相同的一组 F × F F \times F F×F的参数(权值)做内积(点积),再经过非线性单元计算而来的。这样的话,无论图片原大小如何,只用 F × F F \times F F×F个参数就够了,也就是几个几十个的样子。当然,一组 F × F F \times F F×F的参数只能得到一张输出特征图,一般会有多组参数,分别经过卷积后可以有好几层特征图。

????????需要注意的是,高层特征一般是与位置有关的(全局特征),比如 一张人脸图片,眼睛和嘴的位置不同,那么处理到高层,不同位置就需要不同的神经网络权重(参数),这时候卷积层就不能胜任了,就需要用局部全连接层和全连接层。

2.2 示例(一维向量)

在这里插入图片描述
共享,即使用同一组参数(权重)来做卷积,如上图。

输入层: x = [ x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ] x = [x_1, x_2, x_3, x_4, x_5, x_6, x_7] x=[x1?,x2?,x3?,x4?,x5?,x6?,x7?]
隐藏层: h = [ h 1 , h 2 , h 3 ] h = [h_1, h_2, h_3] h=[h1?,h2?,h3?]
权重向量: w = [ w 1 , w 2 , w 3 ] = [ 1 , 0 , ? 1 ] w = [w_1, w_2, w_3] = [1, 0, -1] w=[w1?,w2?,w3?]=[1,0,?1]
权重值 w w w h 1 , h 2 , h 3 h_1, h_2, h_3 h1?,h2?,h3?:
{ h 1 = w ? x [ 1 : 3 ] h 2 = w ? x [ 3 : 5 ] h 3 = w ? x [ 5 : 7 ] \begin{cases} h_1 = w \cdot x[1:3]\\ h_2 = w \cdot x[3:5]\\ h_3 = w \cdot x[5:7]\\ \end{cases} ??????h1?=w?x[1:3]h2?=w?x[3:5]h3?=w?x[5:7]?
关于卷积神经网络的发展史等更全面介绍推荐这篇:CNN(卷积神经网络)入门简洁清晰。

(三)参考博客

CNN卷积神经网络
CNN中的卷积操作与参数共享
图像底层特征:轮廓与边缘

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:55:34  更:2021-12-28 22:55:44 
 
开发: 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年5日历 -2024/5/19 3:40:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码