| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【深度学习笔记】5.卷积神经网络 -> 正文阅读 |
|
[人工智能]【深度学习笔记】5.卷积神经网络 |
CNNCNN(Convolutional Neural Networks,CNN)中文名叫卷积神经网络。 通常情况下,我们使用全连接神经网络的时候,权重矩阵的参数非常多。其使得整个网络收敛非常缓慢。但在自然图像处理中都具有局部不变性的特征,即尺度缩放、平移、旋转等操作不影响其语义信息,但是全连接前馈网络很难提取这些局部不变特征。所以就引入的CNN。 CNN也是前馈神经网络,其最大的区别是受生物学上感受野的启发,引入了卷积核的概念。 卷积卷积是一种计算方式,其连续卷积和离散卷积可以表达为如下形式:
例如,假设一个信号发生器每个时刻t产生一个信号x,其信息的衰减率为w。即在k-1个时间步长后,信息为原来的w倍。假设w_1=1,w_2=1/2,w_3=1/4,则时刻t收到的信号y_t为当前hi为当前时刻产生的信息和以前时刻延迟信息的叠加,即: \end{aligned} 其中w就是滤波器,也就是常说的卷积核(Convolution Kernel) 给定一个输入信号x和滤波器w,卷积输出为: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YPAww0VG-1638018363661)(https://datawhalechina.github.io/unusual-deep-learning/PIC/5/3.png)] 步长与零填充 下面引入滤波器的滑动步长S和零填充P: 卷积的结果按输出长度不同可分三类:
在早期的文献中,卷积一般默认为窄卷积。而目前的文献中,卷积一般默认为等宽卷积。 卷积与图像上面提到,卷积在图像处理中发挥着重要的左右。而图像一般是二维矩阵的形式输入神经网络中,因此我们需要使用二维卷积。 下面给出定义:一个输入信息X和滤波器W的二维卷积为Y=W*X,既 下图直接表示卷积层的映射关系 多个卷积核的情况:下图是表示步长2、filter 3*3 、filter个数6、零填充 1的情形。 几乎很多实际应用都可以对应到这个问题上,都是在做这样一件事 1)输入对应着rgb图片 2)一旦输入的特征图个数是多个,这个时候每一组filter就应该是多个,而这里有两组filter 3)输入是三个特征图,输出为两个特征图,那么我们同样看看每个特征图怎么计算的。 典型的卷积层为3维结构 其他卷积转置卷积/微步卷积低维特征映射到高维特征 空洞卷积为了增加输出单元的感受野,通过给卷积核插入“空洞”来变相地增加其大小。 卷积神经网络基本原理一般的卷积神经网络基本结构包括:输入层、卷积层、激活函数、池化层、全连接层、输出层。当然,在某些特殊业务场景下,可能会基于简单的卷积网络结果添加其他的类似预训练模型、机器学习模型等操作。 下面将从卷积层开始介绍每一层的细节。 卷积层二维卷积运算:给定二维的图片作为输入,卷积核为K,那么卷积的公式可以表示为: 累加完毕之后,卷积核会根据我们设定的步长等因素平移,然后继续相乘累加。就犹如下图一样: 卷积的步长(stride):卷积核移动的步长,决定着卷积核计算完一个单位以后,移动的“距离“ 卷积的模式:Full、Same、Valid
数据填充:如果我们有一个 𝑛×𝑛 的图像,使用𝑓×𝑓 的卷积核进行卷积操作,在进行卷积操作之前我们在图像周围填充 𝑝 层数据,输出的维度: 感受野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域。 要计算感受野大小,可以采用从后往前逐层计算法:
卷积层的深度(卷积核个数):一个卷积层通常包含多个尺寸一致的卷积核 激活函数激活函数是用来加入非线性因素,提高网络表达能力,卷积神经网络中最常用的是ReLU,Sigmoid使用较少。这点在前馈神经网络章节中也有相关提及。 ReLU函数优点
缺点
Parametric ReLU$$ \end{aligned}
优点
缺点
ELU函数$$ \end{aligned} 优点
缺点
总结激活函数汇总
特征图
池化层所谓的池化就是使用某个位置相邻输出的总体统计特征作为该位置 的输出。通俗的讲就是将矩阵中某几个格的数据压缩成1个格。 通常池化会使用最大池化与均值池化。而池化层是不需要训练学习参数读,它只需要指定池化类型、核大小、步幅即可。 假设现有一个3x3的矩阵,核大小为2x2,步幅为1。 池化的作用
全连接层
输出层输出层其实就是全连接成后的一个函数处理。 对于分类问题,输出层有: 卷积神经网络的训练卷积神经网络大致的训练步骤如下:
需要注意的是,卷积核个数,核尺寸等参数就如同网络架构一样,在第一步构造完成以后就不会再发生改变。训练中改变的只有卷积核矩阵与神经元的权重。 和多层神经网络一样,卷积神经网络中的参数训练也是使用误差反向传播算法,关于池化层的训练,需要再提一下,是将池化层改为多层神经网络的形式。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XQMDdetf-1638018363673)(https://datawhalechina.github.io/unusual-deep-learning/PIC/5/5.16.png)] 将卷积层也改为多层神经网络的形式 经典卷积神经网络LeNet-5LeNet-5由LeCun等人提出于1998年提出,主要进行手写数字识别和英文字母识别。经典的卷积神经网络,LeNet虽小,各模块齐全,是学习 CNN的基础。 参考:http://yann.lecun.com/exdb/lenet/ 网络结构 图中输入层是32*32的图片,也就相当于1024哥神经元 C1层(卷积层):选择6个 5?5 的卷积核,得到6个大小为32-5+1=28的特征图,也就是神经元的个数为6?28?28=4704 S2层(下采样层):每个下抽样节点的4个输入节点求和后取平均(平均池化),均值 乘上一个权重参数加上一个偏置参数作为激活函数的输入,激活函数的输出即是下一层节点的值。池化核大小选择 2?2,得到6个4?14 大小特征图 C3层(卷积层):用 5?5的卷积核对S2层输出的特征图进行卷积后,得到6张10?10 新图片,然后将这6张图片相加在一起,然后加一个偏置项b,然后用 激活函数进行映射,就可以得到1张10?10 的特征图。我们希望得到 16 张 10*1010?10 的 特 征 图 , 因 此 我 们 就 需 要 参 数 个 数 为16?(6?(5?5))=16?6?(5?5) 个参数 S4层(下采样层):对C3的16张 10?10 特征图进行最大池化,池化核大小为2?2,得到16张大小为 5?5 的特征图。神经元个数已经减少为:16?5?5=400 C5层(卷积层):用 5?5 的卷积核进行卷积,然后我们希望得到120个特征图,特征图 大小为5-5+1=1。神经元个数为120(这里实际上是全连接,但是原文还是称之为了卷积层) F6层(全连接层):有84个节点,该层的训练参数和连接数都(120+1)?84=10164 Output层:共有10个节点,分别代表数字0到9,如果节点i的输出值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式: AlexNetAlexNet由Hinton的学生Alex Krizhevsky于2012年提出,获得ImageNet LSVRC-2012(物体识别挑战赛)的冠军,1000个类别120万幅高清图像(Error: 26.2%(2011) →15.3%(2012)),通过AlexNet确定了CNN在计算机视觉领域的王者地位。 AlexNet的特点如下:
网络结构 AlexNet可分为8层(池化层未单独算作一层),包括5个卷 积层以及3个全连接层 输入层:AlexNet首先使用大小为224×224×3图像作为输入(后改为227×227×3) 第一层(卷积层):包含96个大小为11×11的卷积核,卷积步长为4,因此第一层输出大小为55×55×96;然后构建一个核大小为3×3、步长为2的最大池化层进行数据降采样,进而输出大小为27×27×96 第二层(卷积层):包含256个大小为5×5卷积核,卷积步长为1,同时利用padding保证 输出尺寸不变,因此该层输出大小为27×27×256;然后再次通过 核大小为3×3、步长为2的最大池化层进行数据降采样,进而输出大小为13×13×256 第三层与第四层(卷积层):均为卷积核大小为3×3、步长为1的same卷积,共包含384个卷积核,因此两层的输出大小为13×13×384 第五层(卷积层):同样为卷积核大小为3×3、步长为1的same卷积,但包含256个卷积 核,进而输出大小为13×13×256;在数据进入全连接层之前再次 通过一个核大小为3×3、步长为2的最大池化层进行数据降采样, 数据大小降为6×6×256,并将数据扁平化处理展开为9216个单元 第六层、第七层和第八层(全连接层):全连接加上Softmax分类器输出1000类的分类结果,有将近6千万个参数 VGGNetGGNet由牛津大学和DeepMind公司提出
它的特点是:
网络结构
Inception NetInception Net 是Google公司2014年提出,获得ImageNet LSVRC-2014冠军。文章提出获得高质量模型最保险的做法就是增加模型的深度(层数)或者是其宽度(层核或者神经元数),采用了22层网络。 Inception Module
ResNetResNet(Residual Neural Network),又叫做残差神经网 络,是由微软研究院的何凯明等人2015年提出,获得ImageNet ILSVRC 2015比赛冠军,获得CVPR2016最佳论文奖。 随着卷积网络层数的增加,误差的逆传播过程中存在的梯 度消失和梯度爆炸问题同样也会导致模型的训练难以进行,甚至会出现随着网络深度的加深,模型在训练集上的训练误差会出现先降低再升高的现象。残差网络的引入则有助于解决梯度消失和梯度爆炸问题。 残差块 ResNet的核心是叫做残差块(Residual block)的小单元, 残差块可以视作在标准神经网络基础上加入了跳跃连接(Skip connection)
a l + 1 = σ ( W l + 1 a + b l + 1 ) a l + 2 = σ ( W l + 2 a l + 1 + b l + 2 ) a_{l+1}=\sigma(W_{l+1}a + b_l+1) \\ a_{l+2}=\sigma(W_{l+2}a_{l+1}+b_{l+2}) al+1?=σ(Wl+1?a+bl?+1)al+2?=σ(Wl+2?al+1?+bl+2?)
a l + 1 = σ ( W l + 1 a l + b l + 1 ) a l + 2 = σ ( W l + 2 a l + 1 + b l + 2 + a l ) a_{l+1}=\sigma(W_{l+1}a_l+b_{l+1})\\ a_{l+2}=\sigma(W_{l+2}a_{l+1}+b_{l+2}+a_l) al+1?=σ(Wl+1?al?+bl+1?)al+2?=σ(Wl+2?al+1?+bl+2?+al?) Skip connection的作用 记 DensenetDenseNet中,两个层之间都有直接的连接,因此该网络的直接连接个数为L(L+1)/2。 对于每一层,使用前面所有层的特征映射作为输入,并且使用其自身的特征映射作为所有后续层的输入 5层的稠密块示意图 DenseNets可以自然地扩展到数百个层,而没有表现出优化困难。在实验中,DenseNets随着参数数量的增加,在精度上产生一致的提高,而没有任何性能下降或过拟合的迹象。 优点
主要应用图像处理领域主要应用
语音识别领域主要应用 自然语言处理领域主要应用 情感分析:分析文本体现的情感(正负向、正负中或多态度类型) 参考:(Yoon Kim)Convolutional Neural Networks for Sentence https://arxiv.org/abs/1408.5882 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7fCi3OX1-1638018363678)(https://datawhalechina.github.io/unusual-deep-learning/PIC/5/5.21.png)] 参考资料:datawhale |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 3:39:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |