卷积神经网络(CNN)学习笔记1:基础入门

2016 年 6 月 16 日 黑龙江大学自然语言处理实验室

概述

卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功的模型都是基于CNN的。CNN相较于传统的图像处理算法的优点之一在于,避免了对图像复杂的前期预处理过程(提取人工特征等),可以直接输入原始图像。

图像处理中,往往会将图像看成是一个或多个的二维向量,如之前博文中提到的MNIST手写体图片就可以看做是一个28 × 28的二维向量(黑白图片,只有一个颜色通道;如果是RGB表示的彩色图片则有三个颜色通道,可表示为三张二维向量)。传统的神经网络都是采用全连接的方式,即输入层到隐藏层的神经元都是全部连接的,这样做将导致参数量巨大,使得网络训练耗时甚至难以训练,而CNN则通过局部连接权值共享等方法避免这一困难,有趣的是,这些方法都是受到现代生物神经网络相关研究的启发(感兴趣可阅读以下部分)。

下面重点介绍下CNN中的局部连接(Sparse Connectivity)权值共享(Shared Weights)方法,理解它们很重要。

局部连接与权值共享

下图是一个很经典的图示,左边是全连接,右边是局部连接。

对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此数目巨大的参数几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级。

尽管减少了几个数量级,但参数数量依然较多。能不能再进一步减少呢?能!方法就是权值共享。具体做法是,在局部连接中隐藏层的每一个神经元连接的是一个10 × 10的局部图像,因此有10 × 10个权值参数,将这10 × 10个权值参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经元的数目是多少,需要训练的参数就是这 10 × 10个权值参数(也就是卷积核(也称滤波器)的大小),如下图。

这大概就是CNN的一个神奇之处,尽管只有这么少的参数,依旧有出色的性能。但是,这样仅提取了图像的一种特征,如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够得到图像的不同映射下的特征,称之为Feature Map。如果有100个卷积核,最终的权值参数也仅为100 × 100 = 10^4个而已。另外,偏置参数也是共享的,同一种滤波器共享一个。

卷积神经网络的核心思想是:局部感受野(local field),权值共享以及时间或空间亚采样这三种思想结合起来,获得了某种程度的位移、尺度、形变不变性(?不够理解透彻?)。

网络结构

下图是一个经典的CNN结构,称为LeNet-5网络

可以看出,CNN中主要有两种类型的网络层,分别是卷积层池化/采样层(Pooling)。卷积层的作用是提取图像的各种特征;池化层的作用是对原始特征信号进行抽象,从而大幅度减少训练参数,另外还可以减轻模型过拟合的程度。

卷积层

卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要再加上一个偏置参数),得到卷积层上的结果。如下图所示。

下面的动图能够更好地解释卷积过程:

池化/采样层

通过卷积层获得了图像的特征之后,理论上我们可以直接使用这些特征训练分类器(如softmax),但是这样做将面临巨大的计算量的挑战,而且容易产生过拟合的现象。为了进一步降低网络训练参数及模型的过拟合程度,我们对卷积层进行池化/采样(Pooling)处理。池化/采样的方式通常有以下两种:

  • Max-Pooling: 选择Pooling窗口中的最大值作为采样值;

  • Mean-Pooling: 将Pooling窗口中的所有值相加取平均,以平均值作为采样值;

如下图所示。

LeNet-5网络详解

以上较详细地介绍了CNN的网络结构和基本原理,下面介绍一个经典的CNN模型:LeNet-5网络

LeNet-5网络在MNIST数据集上的结果

本文转自:http://www.jeyzhang.com/cnn-learning-notes-1.html


登录查看更多
14

相关内容

在深度学习中,卷积神经网络(CNN或ConvNet)是一类深度神经网络,最常用于分析视觉图像。基于它们的共享权重架构和平移不变性特征,它们也被称为位移不变或空间不变的人工神经网络(SIANN)。它们在图像和视频识别,推荐系统,图像分类,医学图像分析,自然语言处理,和财务时间序列中都有应用。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
223+阅读 · 2020年4月11日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
37+阅读 · 2020年2月21日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
159+阅读 · 2019年10月28日
卷积神经网络简明教程
论智
8+阅读 · 2018年8月24日
卷积神经网络的最佳解释!
专知
12+阅读 · 2018年5月1日
全连接网络到卷积神经网络逐步推导
炼数成金订阅号
7+阅读 · 2018年4月25日
入门 | 一文看懂卷积神经网络
机器之心
5+阅读 · 2018年2月20日
干货 | 卷积神经网络入门这一篇就够了
数盟
6+阅读 · 2018年1月18日
深度学习之CNN简介
Python技术博文
20+阅读 · 2018年1月10日
CNN 反向传播算法推导
统计学习与视觉计算组
27+阅读 · 2017年12月29日
【干货】卷积神经网络CNN学习笔记
机器学习研究会
15+阅读 · 2017年12月17日
入门 | 一文概览深度学习中的激活函数
深度学习世界
4+阅读 · 2017年11月3日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
Interpretable CNNs for Object Classification
Arxiv
20+阅读 · 2020年3月12日
On Feature Normalization and Data Augmentation
Arxiv
13+阅读 · 2020年2月25日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
6+阅读 · 2018年1月11日
Arxiv
7+阅读 · 2018年1月10日
VIP会员
相关资讯
卷积神经网络简明教程
论智
8+阅读 · 2018年8月24日
卷积神经网络的最佳解释!
专知
12+阅读 · 2018年5月1日
全连接网络到卷积神经网络逐步推导
炼数成金订阅号
7+阅读 · 2018年4月25日
入门 | 一文看懂卷积神经网络
机器之心
5+阅读 · 2018年2月20日
干货 | 卷积神经网络入门这一篇就够了
数盟
6+阅读 · 2018年1月18日
深度学习之CNN简介
Python技术博文
20+阅读 · 2018年1月10日
CNN 反向传播算法推导
统计学习与视觉计算组
27+阅读 · 2017年12月29日
【干货】卷积神经网络CNN学习笔记
机器学习研究会
15+阅读 · 2017年12月17日
入门 | 一文概览深度学习中的激活函数
深度学习世界
4+阅读 · 2017年11月3日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
相关论文
Top
微信扫码咨询专知VIP会员