前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习笔记5-卷积神经网络的基本内容

深度学习笔记5-卷积神经网络的基本内容

作者头像
caoqi95
发布2019-03-27 17:50:14
1.2K0
发布2019-03-27 17:50:14
举报
文章被收录于专栏:caoqi95的记录日志

「学习内容总结自 udacity coursera 的深度学习课程」

一张图片的特征向量表示

一张图片在计算机中是以三个独立的矩阵存储的,对应于下图中的红色,绿色和蓝色通道。三个矩阵与图像大小相同,例如,下图中猫的图像的分辨率是64×64,三个矩阵(RGB)分别是64×64的大小。

其中单元格中的值表示将用于创建 N 维的特征向量的像素强度。在模式识别和深度学习中,特征向量代表一个对象,在著名的猫识别的例子中,表示是猫或者不是猫。要创建一个特征向量,像素强度值将被“展开”或“重塑”成每种颜色。所以图片输入特征向量的维数就可以表示为 Nx = 64×64×3 = 12288,如下图所示。

特征向量

为什么使用卷积神经网络

由上面可知,多层神经网络的每一层的连接都是全连接的方式。而一张仅仅64×64大小的图片就能产生12288维的输入数据,就会造成整个网络参数的数量非常巨大,这样计算成本也会随之增大,会耗费很多的计算资源。另外在使用多层神经网络学习图片特征的时候,因为图片矩阵被转换成一维的向量,会损失图片的二维空间信息。然而这些二维的空间信息是理解图片信息的关键,也是反映像素之间规律的重要信息。这也是多层神经网络在图片识别中的缺点。下面是MLP和CNN的对比:

而卷积神经网络的出现,成功解决了多层神经网络在图片识别方面的问题。卷积神经网络是以稀疏连接的方式连接的且以图片矩阵直接作为输入,这样就避免产生巨大的参数数量和损失图片中重要的二维信息。卷积神经网络中包含卷积层、池化层(也称为下采样层)和全连接层这三种网络层的结构,常见的结构如下图所示。

对于 CNN 能够映射这么少参数的原因有以下两点:

  • 参数共享: 参数共享怎么理解呢?就是一个 CNN 层的 kernel 中是一样的参数,然后用这个 kernel 去扫描同一张图片的不同位置。其中在图片中学到的一部分特征,可以用到图片中相似的地方中去。相对于全连接层,即减少了参数又实现了参数共享。
  • 使用稀疏连接

卷积层

卷积层是卷积神经网络中的隐藏层,也是一种提取特征的网络层。卷积层通过局部连接和权重共享的方法,来模拟具有局部感受野的简单细胞,提取一些初级特征的过程。局部连接体现在卷积层上的神经元与前一层特征图中的固定区域的神经元连接,而不是和所有的神经元连接;权重共享是指同一个特征图中的神经元用一组相同的连接参数与前一层进行连接。因此,基于这两个方面卷积神经网络能够大大地减少参数的数量。

  • 卷积层的输出操作 此部分参考 CSDN 的一篇博客:深度学习笔记(六) cnn 卷积神经网络 卷积层输出值的具体操作是:选择特征提取器或者称为滤波器(filter),也称为卷积核(kernel)或者卷积窗,对输入的图像矩阵进行卷积操作,然后输出提取的特征图。下面用一个简单的例子来讲解卷积层的操作过程。如下图所示,假设有一个5×5的图像,使用一个3×3的滤波器进行卷积操作,来得到一个3×3的特征图(Feature Map)

为了清楚的描述卷积计算过程,首先对图中图片的每个像素进行编号,用 Xi,j 表示图像的第 i 行第 j 列元素;对滤波器内的每个权重进行编号,用 Wm,n 表示第 m 行第 n 列权重,用 b 表示滤波器内的偏置项;对特征图的每个元素进行编号,用 ai,j 表示特征图中的第 i 行第 j 列元素;用 f 表示激活函数。然后,使用下列公式计算卷积:

对于第一个特征值的求解过程如下,此时假设滤波器移动的步长(stride)为 1,偏置项为 0。如下图所示,使用滤波器在输入图像上,以 1 为步长移动,以滤波器的大小框出输入图片的局部视野,然后利用上述公式求解特征值。之后的每一步的特征值计算过程以此类推。

卷积计算过程

  • stride 和 padding 需要注意的是,计算过程中会有步长(stride)和补零填充(padding)两个参数。输出的特征图的大小可能会因这两个参数的取值不同而不同。步长的取值为正整数;填充的选项为填充或者不填充,在代码中对应为“valid”或者“same”这两个选项。假设图片大小为 W×H,滤波器的大小为 F×F,步长记为 S。 当填充的选项为“valid”时,输出的特征图长宽分别如下两个公式所示:

当填充的选项为“same”时,输出的特征图长宽分别如下两个公式所示:

池化层

池化层(Pooling Layer)的主要作用是对特征图进行下采样(subsampling),去掉特征图中一些不重要的样本,进一步减小网络规模和参数数量。该过程是将初级特征筛选为更高级,更抽象的特征的过程。池化的方法有很多种,最常采用的方法是最大池化法。具体过程为:在一个池化滤波器窗口中选取样本的最大值,如下图所示,在一个2×2的窗口中,选取所框选的特征中的最大值,左上角选出最大值为6;右上角选出最大值为8;左下角选出最大值3;右下角选出最大值4。除了最大池化的方法,还有平均池化的方法,即在一个池化窗口中取平均值,最后输出采样后的特征图。

最大池化法

全连接层

全连接层,即该层的每一个神经元与前一层的神经元均进行连接,以提升网络的非线性映射能力。全连接层的计算和之前的全连接神经网络的计算过程一样。常常在卷积神经网络的最后几层采用全连接层结构。 在图像分类或者其他分类问题上,构建卷积神经网络模型后会在全连接层的后面加上一层 softmax 层用于多分类问题。softmax 函数用于多分类过程中,它将多个神经元的输出,映射到[0, 1]区间内,可以看成概率来理解,从而进行多个类别的分类。softmax 函数的公式如下所示:

参考: [1]. 技术向:一文读懂卷积神经网络CNN [2]. 深度学习笔记(六) cnn 卷积神经网络 [3]. 陈耀丹, 王连明. 基于卷积神经网络的人脸识别方法[J]. 东北师大学报(自然科学), 2016, 48(2): 70-76.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一张图片的特征向量表示
  • 为什么使用卷积神经网络
  • 卷积层
  • 池化层
  • 全连接层
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档