一文读懂卷积神经网络CNN
深度学习中的卷积神经网络与循环神经网络

深度学习中的卷积神经网络与循环神经网络深度学习是目前人工智能领域最为炙手可热的技术之一,它在图像识别、语音识别、自然语言处理等领域都取得了显著的成就。
而在深度学习领域中,卷积神经网络和循环神经网络是两个重要的模型,它们在不同的任务中展现出了卓越的性能。
本文将重点介绍卷积神经网络和循环神经网络的原理、结构和应用,旨在帮助读者更好地理解这两种神经网络模型。
一、卷积神经网络(Convolutional Neural Network,CNN)1.1原理卷积神经网络是受到生物视觉系统的启发而提出的一种深度学习模型,它模拟了人类视觉皮层的工作原理。
在卷积神经网络中,包含了卷积层、池化层和全连接层等组件。
卷积层是卷积神经网络的核心组件,它通过卷积操作从输入数据中提取特征。
卷积操作可以有效地减少参数数量,并且能够捕捉数据中的局部特征。
此外,卷积操作还具有平移不变性,能够识别特征在不同位置的模式。
池化层通常紧跟在卷积层后面,它的作用是降低特征图的尺寸,并减少模型对位置的敏感度。
常见的池化操作有最大池化和平均池化,它们分别选择特征图中的最大值和平均值作为输出。
全连接层是卷积神经网络中的最后一层,它将特征图展平成一维向量,并通过全连接操作将提取的特征进行分类或回归。
1.2结构卷积神经网络通常由多个卷积层、池化层和全连接层构成,其中卷积层和池化层交替出现,而全连接层通常出现在网络的最后一部分。
卷积神经网络的结构可以根据具体的任务进行调整,以达到更好的性能。
1.3应用卷积神经网络在图像识别、物体检测、人脸识别等领域取得了巨大的成功。
以ImageNet图像识别比赛为例,卷积神经网络模型始终是各种比赛的最佳选择,它在复杂的图像数据上展现了出色的识别性能。
此外,卷积神经网络还被广泛应用于医学影像识别、自动驾驶、智能安防等领域。
二、循环神经网络(Recurrent Neural Network,RNN)2.1原理循环神经网络是一种能够处理时序数据的神经网络模型,它具有记忆能力,能够对序列数据进行建模。
简述卷积神经网络(CNN)和循环神经网络(RNN)的原理及应用场景

简述卷积神经网络(CNN)和循环神经网络(RNN)的原理及应用场景卷积神经网络(CNN)和循环神经网络(RNN)是当前深度学习领域最为重要和广泛应用的两种神经网络模型。
它们分别在计算机视觉和自然语言处理等领域取得了巨大的成功。
本文将从原理和应用场景两个方面进行详细介绍。
一、卷积神经网络(CNN)的原理及应用场景卷积神经网络(CNN)是一种专门用于处理具有网格结构数据的深度学习模型。
它最初是为了解决计算机视觉中的图像分类问题而提出的,但现在已经广泛应用于图像识别、目标检测、语义分割等多个领域。
1.1 原理卷积神经网络(CNN)主要由卷积层、池化层和全连接层组成。
其中,卷积层是CNN最重要的组成部分,它通过一系列滤波器对输入数据进行特征提取。
滤波器通过与输入数据进行点乘操作,得到特征图(feature map),从而捕捉到输入数据中的局部特征。
池化层用于减小特征图的尺寸,并保留重要特征。
常见的池化操作有最大池化和平均池化。
最大池化选择每个区域中的最大值作为输出,平均池化则选择每个区域的平均值作为输出。
这样可以减小特征图的尺寸,减少参数数量,从而降低计算复杂度。
全连接层将特征图转换为一维向量,并通过一系列全连接层进行分类或回归等任务。
全连接层中的每个神经元都与上一层中所有神经元相连,这样可以充分利用上一层提取到的特征进行分类。
1.2 应用场景卷积神经网络(CNN)在计算机视觉领域有着广泛应用。
其中最典型的应用场景是图像分类和目标检测。
在图像分类任务中,CNN可以通过学习到的特征提取器将输入图像分为不同类别。
例如,在ImageNet数据集上进行分类任务时,CNN可以实现对1000个不同类别进行准确分类。
在目标检测任务中,CNN可以识别并定位输入图像中存在的多个目标。
通过在卷积网络之后加入额外的回归和分类层,可以实现对目标位置和类别进行同时预测。
此外,在语义分割、人脸识别、图像生成等领域,CNN也有着广泛的应用。
卷积神经网络与循环神经网络

卷积神经网络与循环神经网络卷积神经网络(Convolutional Neural Network,CNN)和循环神经网络(Recurrent Neural Network,RNN)是目前深度学习领域最为流行的两种神经网络架构。
它们分别适用于不同的数据类型和任务,能够有效地处理图像、语音、文本等各种形式的数据。
一、卷积神经网络卷积神经网络是一种专门用于处理格状数据(如图像)的神经网络模型。
它的核心思想是利用卷积操作对输入数据进行特征提取,然后通过池化操作减小特征图的尺寸,最后将提取到的特征输入全连接层进行分类或回归。
卷积神经网络的结构主要包括卷积层、池化层和全连接层。
1.1卷积层卷积层是卷积神经网络的核心组件,它通过卷积操作对输入数据进行特征提取。
卷积操作是指使用一个滤波器(也称为卷积核)在输入数据上进行滑动计算,得到对应位置的输出。
滤波器的参数是在训练过程中通过反向传播算法学习得到的。
在图像处理中,卷积操作可以帮助提取图像中的边缘、纹理、角点等特征。
卷积层一般会使用多个不同的滤波器,从而提取多个不同的特征。
1.2池化层池化层是利用池化操作对卷积层的输出进行降采样,从而减小特征图的尺寸。
常见的池化操作有最大池化和平均池化。
最大池化是保留每个区域内的最大值作为输出,平均池化是计算每个区域内的平均值作为输出。
池化操作的目的是减少计算复杂度和减小过拟合。
1.3全连接层全连接层是卷积神经网络的最后一层,它将池化层的输出作为输入进行分类或回归。
全连接层的每个神经元都与上一层的所有神经元相连,输出一个标量值。
全连接层通常使用一种称为softmax的函数将输出转化为概率分布,再根据不同任务进行相应的损失函数计算和优化。
卷积神经网络通过共享权重和局部感知野的设计,大大减少了模型参数的数量,同时也能够保留输入数据的局部结构特征。
这使得卷积神经网络在图像识别、目标检测、语义分割等计算机视觉任务中取得了很大的成功。
二、循环神经网络循环神经网络是一种专门用于处理序列数据(如语音、文本)的神经网络模型。
卷积神经网络原理

卷积神经网络原理卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习的机器学习模型,广泛应用于图像识别、语音识别、自然语言处理等领域。
CNN以其良好的特征提取能力而著名。
CNN的核心思想是局部感知和权重共享。
它通过使用卷积层来对输入数据进行滤波和特征提取,然后使用池化层来降低特征图的空间维度。
这一过程不仅能够减少参数数量,还能提取图像的空间局部性特征。
在CNN中,卷积层通过滑动窗口的方式对输入图像进行扫描,并使用一组可学习的过滤器(也称为卷积核)对输入图像进行卷积操作。
每个过滤器与输入图像的一个局部区域进行卷积计算,并生成一个特征图。
这些特征图反映了输入图像在不同位置上的不同特征。
卷积操作的关键之处在于权重共享。
在卷积操作中,每个过滤器的参数在整个输入图像上是共享的,这意味着无论输入图像的哪个位置,同一个过滤器都会使用相同的参数进行卷积计算。
这种权重共享的方式大大减少了需要学习的参数数量,提高了模型的训练效率。
池化层通常紧跟在卷积层之后,用于减小特征图的维度,同时保留重要的特征信息。
最常用的池化操作是最大池化,它通过在每个局部区域中选择最大的特征值来降低特征图的空间维度。
这种方式能够有效地减少参数数量,并减轻模型过拟合的风险。
CNN通常还包括全连接层和激活函数层。
全连接层将特征图展平为一个向量,并通过全连接操作学习出输入和输出之间的非线性映射关系。
激活函数层则引入非线性变换,增加模型的表达能力。
通过反向传播算法,CNN能够自动学习特征提取过程中的参数,并根据给定的标签进行训练。
训练完毕后,CNN可以对未知的输入数据进行预测和分类。
总之,卷积神经网络是一种在计算机视觉和其他领域中广泛应用的深度学习模型。
它通过卷积层和池化层实现特征提取,通过全连接层和激活函数层实现分类和预测。
通过权重共享和非线性变换等机制,CNN能够有效地处理图像识别和其他复杂任务。
一文看懂卷积神经网络-CNN(基本原理独特价值实际应用)

⼀⽂看懂卷积神经⽹络-CNN(基本原理独特价值实际应⽤)卷积神经⽹络 – CNN 最擅长的就是图⽚的处理。
它受到⼈类视觉神经系统的启发。
CNN 有2⼤特点:能够有效的将⼤数据量的图⽚降维成⼩数据量能够有效的保留图⽚特征,符合图⽚处理的原则⽬前 CNN 已经得到了⼴泛的应⽤,⽐如:⼈脸识别、⾃动驾驶、美图秀秀、安防等很多领域。
CNN 解决了什么问题?在 CNN 出现之前,图像对于⼈⼯智能来说是⼀个难题,有2个原因:图像需要处理的数据量太⼤,导致成本很⾼,效率很低图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不⾼下⾯就详细说明⼀下这2个问题:需要处理的数据量太⼤图像是由像素构成的,每个像素⼜是由颜⾊构成的。
现在随随便便⼀张图⽚都是 1000×1000 像素以上的,每个像素都有RGB 3个参数来表⽰颜⾊信息。
假如我们处理⼀张 1000×1000 像素的图⽚,我们就需要处理3百万个参数!1000×1000×3=3,000,000这么⼤量的数据处理起来是⾮常消耗资源的,⽽且这只是⼀张不算太⼤的图⽚!卷积神经⽹络 – CNN 解决的第⼀个问题就是「将复杂问题简化」,把⼤量参数降维成少量参数,再做处理。
更重要的是:我们在⼤部分场景下,降维并不会影响结果。
⽐如1000像素的图⽚缩⼩成200像素,并不影响⾁眼认出来图⽚中是⼀只猫还是⼀只狗,机器也是如此。
保留图像特征图⽚数字化的传统⽅式我们简化⼀下,就类似下图的过程:图像简单数字化⽆法保留图像特征图像的内容假如有圆形是1,没有圆形是0,那么圆形的位置不同就会产⽣完全不同的数据表达。
但是从视觉的⾓度来看,图像的内容(本质)并没有发⽣变化,只是位置发⽣了变化。
(本质)并没有发⽣变化,只是位置发⽣了变化所以当我们移动图像中的物体,⽤传统的⽅式的得出来的参数会差异很⼤!这是不符合图像处理的要求的。
⽽ CNN 解决了这个问题,他⽤类似视觉的⽅式保留了图像的特征,当图像做翻转,旋转或者变换位置时,它也能有效的识别出来是类似的图像。
深度学习技术中的卷积神经网络结构和特点解析

深度学习技术中的卷积神经网络结构和特点解析卷积神经网络(Convolutional Neural Network,CNN)是当今深度学习技术中最重要的模型之一。
它被广泛应用于计算机视觉、自然语言处理、语音识别等领域。
本文将解析卷积神经网络的结构和特点,帮助读者更好地理解和运用这一强大的深度学习工具。
一、卷积神经网络的结构卷积神经网络由多层神经网络组成,每一层由多个神经元组成。
其中,最重要的几层是卷积层(Convolutional Layer)、池化层(Pooling Layer)和全连接层(Fully Connected Layer)。
1. 卷积层:卷积层是卷积神经网络的核心层之一。
它通过使用一组可学习的滤波器(或称为卷积核)对输入数据进行卷积操作,并生成特征图(Feature Map)。
卷积操作通过在输入数据中滑动卷积核,并在每个位置上执行点乘运算,得到对应位置的特征。
卷积层的特点在于共享权重。
这意味着在同一层的不同位置使用的卷积核是相同的,因此卷积层的参数量大大减少,使得网络更加简化。
2. 池化层:池化层用于对卷积层的特征进行降维和抽象。
它通过固定大小的滑动窗口在特征图上进行采样,并将采样结果汇聚为一个值。
常见的池化方法有最大池化和平均池化。
池化层能够减少参数数量,降低过拟合的风险,同时也增强特征的不变性和鲁棒性,使得网络对于输入数据的微小变化具有更好的鲁棒性。
3. 全连接层:全连接层是卷积神经网络的最后一层,也是输出层。
它将前面的隐藏层与最终的分类器相连,将特征转化为概率或标签。
全连接层的每个神经元与前一层中的所有神经元都有连接关系。
全连接层的作用是将抽取到的特征与实际标签进行匹配,从而进行最终的分类判断。
二、卷积神经网络的特点1. 局部感知性:卷积神经网络通过卷积操作对输入数据进行特征提取,并利用池化操作定位和提取最显著的特征。
这种局部感知性使得网络对于局部信息具有更好的提取和理解能力。
卷积神经网络(CNN)介绍

卷积神经网络(CNN)介绍一、基本概念CNN是卷积神经网络(Convolutional Neural Network)的缩写,是目前深度学习中应用广泛的一种神经网络型号,它是一种能够处理序列数据的深度学习模型,如语音识别、自然语言处理等在许多应用中被广泛使用。
CNN是一种前馈神经网络,每个神经元只与与其之前一段距离之内的神经元相连。
它具有强大的特征提取能力和权值共享机制,可以帮助识别出图像、音频和文本中的重要特征。
CNN将输入图像分成若干个子区域,每个子区域被称为卷积核,每个卷积核由若干个神经元组成。
每个卷积核得出一个特征图,这些特征图被拼接起来形成下一层的输入。
CNN在应用中通常包含卷积层、池化层、全连接层和Softmax 层等。
卷积层用于提取图像特征,池化层用于减少特征数量,全连接层用于分类,Softmax层用于输出最终分类结果。
然而,就像其他的技术一样,CNN在实践中也会遇到各种问题。
人工智能工程师在设计和调试CNN时,经常遇到的问题包括过拟合、欠拟合、梯度消失、训练速度慢等。
此外,当CNN 不起作用时,如何快速而准确地诊断相关问题也是一个极其重要的挑战。
二、故障分析与解决方案面对CNN故障,我们可以通过以下几个方面来进行诊断,并尝试找到解决方案。
1. 数据集问题CNN模型需要大量的数据才能训练出准确的模型。
如果训练集不够大,其结果可能会出现不准确的情况。
同时,过拟合也可能出现在训练集数据少,但是特征比较多时。
解决方案:增加训练集,尽可能丰富数据覆盖的范围。
此外,有效的数据预处理方法,如旋转、翻转、缩放等,也能有效地增加训练集的样本。
2. 设计问题CNN模型的设计非常重要,关系到CNN在应用中的准确性。
解决方案:对于CNN的设计,可以采用预训练模型,或选择较好的网络结构和优化算法。
3. 训练问题CNN模型需要进行“拟合”和“调整”,使其能够正确的分类图像。
解决方案:可以尝试增加训练次数或者采用其他的优化方法,如随机梯度下降(SGD)。
一文带你了解CNN(卷积神经网络)

⼀⽂带你了解CNN(卷积神经⽹络)⽬录前⾔⼀、CNN解决了什么问题?⼆、CNN⽹络的结构2.1 卷积层 - 提取特征卷积运算权重共享稀疏连接总结:标准的卷积操作卷积的意义1x1卷积的重⼤意义2.2 激活函数2.3 池化层(下采样) - 数据降维,避免过拟合2.4 全连接层 - 分类,输出结果三、Pytorch实现LeNet⽹络3.1 模型定义3.2 模型训练(使⽤GPU训练)3.3 训练和评估模型前⾔ 在学计算机视觉的这段时间⾥整理了不少的笔记,想着就把这些笔记再重新整理出来,然后写成Blog和⼤家⼀起分享。
⽬前的计划如下(以下⽹络全部使⽤Pytorch搭建):专题⼀:计算机视觉基础介绍CNN⽹络(计算机视觉的基础)浅谈VGG⽹络,介绍ResNet⽹络(⽹络特点是越来越深)介绍GoogLeNet⽹络(⽹络特点是越来越宽)介绍DenseNet⽹络(⼀个看似⼗分NB但是却实际上⽤得不多的⽹络)整理期间还会分享⼀些⾃⼰正在参加的⽐赛的Baseline专题⼆:GAN⽹络搭建普通的GAN⽹络卷积GAN条件GAN模式崩溃的问题及⽹络优化 以上会有相关代码实践,代码是基于Pytorch框架。
话不多说,我们先进⾏专题⼀的第⼀部分介绍,卷积神经⽹络。
⼀、CNN解决了什么问题? 在CNN出现之前,对于图像的处理⼀直都是⼀个很⼤的问题,⼀⽅⾯因为图像处理的数据量太⼤,⽐如⼀张512 x 512的灰度图,它的输⼊参数就已经达到了252144个,更别说1024x1024x3之类的彩⾊图,这也导致了它的处理成本⼗分昂贵且效率极低。
另⼀⽅⾯,图像在数字化的过程中很难保证原有的特征,这也导致了图像处理的准确率不⾼。
⽽CNN⽹络能够很好的解决以上两个问题。
对于第⼀个问题,CNN⽹络它能够很好的将复杂的问题简单化,将⼤量的参数降维成少量的参数再做处理。
也就是说,在⼤部分的场景下,我们使⽤降维不会影响结果。
⽐如在⽇常⽣活中,我们⽤⼀张1024x1024x3表⽰鸟的彩⾊图和⼀张100x100x3表⽰鸟的彩⾊图,我们基本上都能够⽤⾁眼辨别出这是⼀只鸟⽽不是⼀只狗。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一文读懂卷积神经网络CNN★据说阿尔法狗战胜李世乭靠的是卷积神经网络算法,所以小编找到了一篇介绍该算法的文章,大家可以看一看。
★自去年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。
为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。
正文之前,先说几点自己对于CNN的感触。
先明确一点就是,Deep Learning是全部深度学习算法的总称,CNN是深度学习算法在图像处理领域的一个应用。
第一点,在学习Deep learning 和CNN之前,总以为它们是很了不得的知识,总以为它们能解决很多问题,学习了之后,才知道它们不过与其他机器学习算法如svm等相似,仍然可以把它当做一个分类器,仍然可以像使用一个黑盒子那样使用它。
第二点,Deep Learning强大的地方就是可以利用网络中间某一层的输出当做是数据的另一种表达,从而可以将其认为是经过网络学习到的特征。
基于该特征,可以进行进一步的相似度比较等。
第三点,Deep Learning算法能够有效的关键其实是大规模的数据,这一点原因在于每个DL都有众多的参数,少量数据无法将参数训练充分。
接下来话不多说,直接奔入主题开始CNN之旅。
卷积神经网络简介(Convolutional Neural Networks,简称CNN)卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。
20世纪60年代,Hubel 和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。
现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。
K.Fukushima在1980年提出的新识别机是卷积神经网络的第一个实现网络。
随后,更多的科研工作者对该网络进行了改进。
其中,具有代表性的研究成果是Alexander和Taylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。
一般地,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。
一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。
特征映射结构采用影响函数核小的sigmoid 函数作为卷积网络的激活函数,使得特征映射具有位移不变性。
此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。
卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。
CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。
由于CNN 的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。
卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
1. 神经网络首先介绍神经网络,这一步的详细可以参考资源1。
简要介绍下。
神经网络的每个单元如下:其对应的公式如下:其中,该单元也可以被称作是Logistic回归模型。
当将多个单元组合起来并具有分层结构时,就形成了神经网络模型。
下图展示了一个具有一个隐含层的神经网络。
其对应的公式如下:比较类似的,可以拓展到有2,3,4,5,…个隐含层。
神经网络的训练方法也同Logistic类似,不过由于其多层性,还需要利用链式求导法则对隐含层的节点进行求导,即梯度下降+链式求导法则,专业名称为反向传播。
关于训练算法,本文暂不涉及。
2 卷积神经网络在图像处理中,往往把图像表示为像素的向量,比如一个1000×1000的图像,可以表示为一个1000000的向量。
在上一节中提到的神经网络中,如果隐含层数目与输入层一样,即也是1000000时,那么输入层到隐含层的参数数据为1000000×1000000=10^12,这样就太多了,基本没法训练。
所以图像处理要想练成神经网络大法,必先减少参数加快速度。
就跟辟邪剑谱似的,普通人练得很挫,一旦自宫后内力变强剑法变快,就变的很牛了。
2.1 局部感知卷积神经网络有两种神器可以降低参数数目,第一种神器叫做局部感知野。
一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。
因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。
网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。
视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。
如下图所示:左图为全连接,右图为局部连接。
在上右图中,假如每个神经元只和10×10个像素值相连,那么权值数据为1000000×100个参数,减少为原来的千分之一。
而那10×10个像素值对应的10×10个参数,其实就相当于卷积操作。
2.2 参数共享但其实这样的话参数仍然过多,那么就启动第二级神器,即权值共享。
在上面的局部连接中,每个神经元都对应100个参数,一共1000000个神经元,如果这1000000个神经元的100个参数都是相等的,那么参数数目就变为100了。
怎么理解权值共享呢?我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。
这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。
这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
更直观一些,当从一个大尺寸图像中随机选取一小块,比如说8×8作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个8×8样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。
特别是,我们可以用从8×8 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。
如下图所示,展示了一个33的卷积核在55的图像上做卷积的过程。
每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来。
2.3 多卷积核上面所述只有100个参数时,表明只有1个100*100的卷积核,显然,特征提取是不充分的,我们可以添加多个卷积核,比如32个卷积核,可以学习32种特征。
在有多个卷积核时,如下图所示:上图右,不同颜色表明不同的卷积核。
每个卷积核都会将图像生成为另一幅图像。
比如两个卷积核就可以将生成两幅图像,这两幅图像可以看做是一张图像的不同的通道。
如下图所示,下图有个小错误,即将w1改为w0,w2改为w1即可。
下文中仍以w1和w2称呼它们。
下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。
其中需要注意的是,四个通道上每个通道对应一个卷积核,先将w2忽略,只看w1,那么在w1的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加然后再取激活函数值得到的。
所以,在上图由4个通道卷积得到2个通道的过程中,参数的数目为4×2×2×2个,其中4表示4个通道,第一个2表示生成2个通道,最后的2×2表示卷积核大小。
2.4 Down-pooling在通过卷积获得了特征(features)之后,下一步我们希望利用这些特征去做分类。
理论上讲,人们可以用所有提取得到的特征去训练分类器,例如softmax分类器,但这样做面临计算量的挑战。
例如:对于一个96X96像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个(96 ? 8 + 1) ×(96 ? 8 + 1) = 7921维的卷积特征,由于有400 个特征,所以每个样例(example) 都会得到一个892 ×400 = 3,168,400 维的卷积特征向量。
学习一个拥有超过3 百万特征输入的分类器十分不便,并且容易出现过拟合(over-fitting)。
为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。
因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值(或最大值)。
这些概要统计特征不仅具有低得多的维度(相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。
这种聚合的操作就叫做池化(pooling),有时也称为平均池化或者最大池化(取决于计算池化的方法)。
至此,卷积神经网络的基本结构和原理已经阐述完毕。
2.5 多层卷积在实际应用中,往往使用多层卷积,然后再使用全连接层进行训练,多层卷积的目的是一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。
3 ImageNet-2010网络结构ImageNet LSVRC是一个图片分类的比赛,其训练集包括127W+张图片,验证集有5W张图片,测试集有15W张图片。
本文截取2010年Alex Krizhevsky的CNN结构进行说明,该结构在2010年取得冠军,top-5错误率为15.3%。
值得一提的是,在今年的ImageNet LSVRC比赛中,取得冠军的GoogNet已经达到了top-5错误率6.67%。
可见,深度学习的提升空间还很巨大。
下图即为Alex的CNN 结构图。
需要注意的是,该模型采用了2-GPU并行结构,即第1、2、4、5卷积层都是将模型参数分为2部分进行训练的。
在这里,更进一步,并行结构分为数据并行与模型并行。
数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合。
而模型并行则是,将若干层的模型参数进行切分,不同的GPU上使用相同的数据进行训练,得到的结果直接连接作为下一层的输入。