超详细斯坦福CS231n课程笔记(第五课)——卷积神经网络

卷积神经网络

1. 历史

1.1 神经网络发展历史

  • 1957, Frank Rosenblatt:神经元,其实就是简单的线性分类器,用于字母识别。

  • 1960,Widow & Hoff,发明了Adaline/Madaline,首次尝试把线性层叠加,整合为多层感知器网络,不过此时反向传播和其他训练算法并未出现。

img

  • 1986,Rumelhart,反向传播算法。

img

  • 2006,Hinton & Salakhutdinov,深层神经网络可被高效训练:通过受限玻尔兹曼机来初始化网络参数,然后利用反向传播算法进行参数微调。

  • 2012,Hinton实验室,语音识别与图像识别。

1.2 卷积神经网络

  • 1959,Hubel & Wiesel,猫对图像的反应的实验,神经元存在层级关系,复杂度不同的神经元负责不同的信息处理。

  • 1980,Fukushima,神经元感知机,简单神经元与复杂神经元交替出现,复杂神经元对简单神经元的输出做微小的修改。

  • 1998,Yann Lecun,反向传播和梯度下降算法,实现邮编识别。

  • 2012,Alex,AlexNet,与Yann Lecun的网络结构大体相同,只不过更深。

2. 卷积和池化

对于全连接层而言,一张三维图像,将所有像素展开得到一个3072维的向量,把向量和权值矩阵相乘,如下图的例子:

img

这里用10行数据与这个3072维的数据进行点积运算,然后得到一个数字,就是该神经元的值,这个例子中应该有10个这样的值。

对于卷积层而言,它和全连接层的主要差别就是它可以保全空间结构,例如下图中就可以保持图片的结构,这个三维输入的结构:

img

然后将553的卷积核在整个图像上滑动,计算出每一个空间定位时的点积结果。首先,采用卷积核总是会将输入量扩展至整个卷积层,所以它们都是一个很小的空间区域,它们通常会遍历所有通道。就像下图中将卷积核的每个位置元素和与之对应图像区域的像素值相乘,经过运算后得到的点积,结果是img

img

接下来继续讨论如何滑动卷积核并遍历所有空间位置,我们将这个卷积核从左上方边角处开始,让卷积核遍历输入的所有像素点,在每一个位置都进行点积运算,以最简单的方式一个像素一个像素的滑动,持续相应的操作并相应的填满输出激活映射。

我们可以按照同样的方法使用多个卷积核进行计算,将会得到多层的激活映射:

img

简单描述一下在卷积神经网络中是如何使用这些卷积层的,ConvNet基本上是由多个卷积层组成的一个序列,它们依次堆叠,然后用激活函数对其进行逐一处理,比如说一个ReLU激活函数;然后将得到一些比如Conv和ReLU的东西以及一些池化层;

img

完成了对一个堆叠的卷积层的学习之后,前面几层的卷积核一般代表了一些低阶的图像特征,比如说一些边缘特征;而对于中间层的卷积核,可以看到一些更复杂的图像特征,比如边角和斑点等;而后面的几层,会看到更加丰富的内容。

img

卷积神经网络整体上来看就是输入一个图片,让它通过很多层,比如卷积层、非线性层、池化层,经过这些处理后,最终得到卷积层输出,然后就可以用全连接层连接所有的卷积层输出,用其获得一个最终的分值函数。

img

接下来用一个例子来理解这个过程,还是用刚才前面提到的这个32X32X3的图像,用5X5X3的卷积核在图像上滑过:

img

那么如何来准确地产生这个28*28的激活映射的呢?

假设实际上用的7X7的输入(此处假设只是为了方便),有一个3X3的卷积核,接下来将卷积核从左向右滑动(每一滑动1个步长),最后将得到一个5*5的输出,因为在水平和垂直方向都是5个空间位置。

img

现在如果让每次滑动的步长为2,那么最终得到一个3*3的输出;如果采用步长为3,就不能和图像完美的拟合,这样是行不通的,不会这样去做卷积。因为它会导致不对称的输出。输出的计算公式和结果如下图:

 

其中:

N:输入的维度

F:卷积核输入大小

stride:步幅

但是如果使用0来填补(可以帮助获得全部尺寸的输出),得到:

img

此时滑动的步长为1时,可以得到7X7的输出矩阵,因此此时N=9;同样的,滑动的步长为2时,得到4X4的输出矩阵;滑动步长为3时,则得到3*3的输出矩阵。

如果处理的图像是多层叠在一起的,会发现如果不做零填充或者其他形式的填充,输出图像的尺寸会迅速减小,这并不好,因为这会损失很多的信息,意味着只能使用很少的值来表示原始图像。

 

如上图所示,输入一个7*7的图像,经过卷积运算后,我们依然想得到一个7X7的输出,但是实际上经过卷积运算后,我们得到的输出会变小,此时我们就会用到补0操作,那么具体怎么算要补多少层0呢,上图也给出了公式:(F-1)/2,上图的卷积核维度为3,为了保持输入和输出有相同的维度,利用公式(3-1)/2 = 1,所以我们就得到了需要在图像的最外层补一层0

例题:如果输入32X32X3的图像,使用10个5X5X3的卷积核,步长为1,填充宽度为2,输出图像的尺寸是多大?在这层中参数有多少个?

答:尺寸是32X32X10,F是32,每个边上加入了宽度为2的填充,所以通过计算(32+2*2-5)/1+1=32,所以对于每个卷积核,输出都是32X32,总共10个卷积核,得到10个激活映射,总的输出大小为32X32X10。

每个卷积核有5X5X3+1(偏差项)=76个参数,10个卷积核总共760个参数。

3. 视觉之外的卷积神经网络

现在换一个角度,从大脑神经元的角度分析一个卷积层。

我们将看到,在每个位置,会取一个卷积核与图像的特定部分之间的一个点积,从而得到一个数值结果;基于同样的想法,取输入值和权值矩阵W之间的点积,然后得到一个输出值;但是它们的主要区别在于神经元具有局部的连接性,所以不关注所输入图片的全部而是关注图像空间的一个局部区域。

假设有一个5*5的卷积核,也可以称为5*5的接收区域,也就是输入区域,对一个5*5的滤波器,都将让他们划过整个图像空间,但是这些卷积核都具有相同的权重和参数。

img

卷积核的数量就是所谓的深度,假设有5层的卷积核,那么从这个网格中就得到了一个5*28*28尺寸的输出,这些不同的卷积核作用于图像的相同区域当中。另一个需要提到的方面是每隔几个卷积层就有一个池化层夹在中间:

img

对于这些列的理解:

一开始有一个图像,经过卷积层,得到的是每一个滑过输入图像的卷积核的激活映射。把激活映射送进ReLU得到一些这样的值,在池化层得到的数据就是前面ReLU层输出,这就做了降采样,取出所有卷积核对应位置上的最大值,每一层的输出都是一个积累的结果。这样得到的全连接层把所有的信息聚合到一起,得到一组分类的分值,每个值代表复合的复杂概念的受激程度。 这些池化层所要做的是要让所生成的表示更小且更容易控制,且降低采样率处理,比如进行一个空间的降采样,然而并不在深度方向上的池化处理,只在平面上做:

img

最常见的方法是最大池化法,例如下面的例子中,池化层也有一个卷积核的大小,如果使用一个步长为2的2*2的滤波器,让这个卷积核滑过整个输入部分,取滑过区域中的最大值。

img

总结:

(1)卷积网络的工作原理,怎么把卷积核池化层堆叠起来,最后怎么与全连接层结合;

(2)小尺寸卷积核和更深的网络结构是一个趋势;

(3)完全弃用池化和全连接层,而只保留卷积层形成深层卷积网络也是一个趋势;

(4)典型的结构:卷积ReLU重复N次,每次做一个池化,如此反复,最后来到全连接ReLU层,最后用softmax得到你的类别分数。

参考链接:https://blog.csdn.net/qq_34611579/article/details/81055813

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络在命名实体识别(NER)中的应用已经被广泛研究和应用。NER是一种自然语言处理任务,旨在识别文本中的命名实体,如人名、地名、组织机构等。卷积神经网络通过其对局部特征的捕捉能力,在NER任务中表现出色。 在《Natural Language Processing with PyTorch: Build Intelligent Language Applications Using Deep Learning》一书中,作者介绍了卷积神经网络的基本原理和应用卷积神经网络通过使用卷积层和池化层来提取文本中的局部特征,并通过全连接层进行分类。这种结构使得卷积神经网络能够有效地捕捉文本中的上下文信息,从而在NER任务中取得良好的性能。\[1\] 此外,研究人员还提出了一些改进的卷积神经网络模型,以进一步提高NER的准确性。例如,Yoon (2014)提出了一种简单的卷积神经网络模型用于句子分类,Conneau et al. (2017)提出了一种深度卷积神经网络模型用于文本分类。这些模型在NER任务中取得了较好的效果。\[2\] 另外,卷积神经网络还可以与循环神经网络(RNN)结合使用,以提高NER的性能。Kalchbrenner和Blunsom (2013)提出了一种使用CNN进行编码和RNN进行解码的神经机器翻译模型,该模型在NER任务中取得了成功。\[3\] 综上所述,卷积神经网络在NER中具有广泛的应用,通过其对局部特征的捕捉能力和与其他模型的结合,可以有效地识别文本中的命名实体。 #### 引用[.reference_title] - *1* *2* *3* [斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络](https://blog.csdn.net/www_xuhss_com/article/details/124766876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值