深度学习之CNN简介

2018 年 1 月 10 日 Python技术博文 小猪观察员

本来想把CNN的一个kaggle比赛和这个放在一起,结果软件一直出问题。就先把这部分贴上。后面再奉上CNN实战的代码。

深度学习概述

传统的机器学习和深度学习一个很重要的差别就是特征的自动提取。深度学习现在更适合处理一些原始信息的特征,比如图片识别,音频,视频等。比如图片可以通过像素作为原始的特征,通过卷积神经网络不断的提取特征,最后再在这些特征上进行学习。对于音频就是通过声音的声波作为特征。 
深度学习可以参考书籍:https://item.jd.com/12128543.html 
深度学习的课程可以参考:https://www.coursera.org/learn/neural-networks/home

本节主要是讲解图像识别案例,这里就稍微提一下。

CNN(卷积神经网络)

图像识别中采用卷积神经网络,这里大致的介绍下CNN的运行原理。在很久以前呢其实图像识别采用的是传统的方法,比如SVM。在12年的ImageNet大会中,来自多伦多大学的 Geoffrey Hinton、Ilya Sutskever 和 Alex Krizhevsky 提交了名为“AlexNet”的深度卷积神经网络算法,这种算法的图形识别错误率低至 16%,比第二名低超过 40%。可以这么说,人工智能在“看特定的图”这件事上第一次接近了人类。 
这里提一下上面提到的深度学习课程就是由Geoffrey Hinton 讲授的。 
而图像识别中的神经网络一般会采用卷积神经网络,即CNN。

层级结构

一般的神经网络采用了全连接的方式,这样的话会导致参数量太大。Cnn以及rnn都修改了网络结构以使其能达到特定的功能。 
全连接的神经网络如下: 

隐层的话其实可以是0~N多层,如果没有隐层,而激活函数又采用了逻辑函数,那么就成了逻辑回归模型了。这里只画了两层。 
而卷积神经网络主要有以下几种层次 
1)数据输入层 
2)卷积计算层 
3)Relu激活层 
4)池化层 
5)全连接层 
6)输出层

数据输入层

数据输入层和全连接层一样的,就是第0层。一般来说图形图像处理前需要进行数据的预处理,比如图片的大小放缩到一致,主要有如下的处理方法: 
1)去均值,比如一个图片的像素,RGB形式的吧,范围都在0~256之间。将其都减去均值,得到每个特征的维度均值为0. 
2)归一化,就是降维度的数值缩放到一个幅度内。 
3)降维

卷积计算层

这个应该是CNN的一个比较关键的地方了,首先看卷积运算,卷积是对两个实变函数的一种数学运算。这里不想讲的太复杂,比如 

这里x是输入,w是核函数就是需要将x转换到其他的特征中。下面将二维平面的情况展示: 
 
这是进行了一次的卷积运算,这里我们很明显的知道参数共享的。在一次卷积运算的过程中,这些kernel是保持不变的。变得是每次滑动窗口的数据。 
这里介绍三个相关的概念: 
1)步长,如上图是1。 
2)滑动窗口,上面的是一个2*2的大小。 
3)填充值,因为在步长大于1的情况下,可能导致滑动窗口在向右移动的过程中,右边没有值了,这个时候需要值进行填充,一般采用0值填充。还有一个原因就是当步长为1的时候,如果不进行填充会导致输出的维度低于输入的维度,这样经过几次迭代,就没有输入了…… 
形象化的如下图,周围补了一圈的0填充。 

注意这里只是一个下一层的一个神经元的情况如果是n个,就会有n次卷积运算了。

Relu激活层

当通过卷积运算之后需要经过激活函数进行非线性变换。常的激活函数如下: 
1)Sigmoid 
2)Relu 
3)Tanh 
4)Elu 
5)Maxout 
6)Leaky relu 
可以参考:https://en.wikipedia.org/wiki/Activation_function 

在cnn中有如下一些经验: 
1)CNN尽量不要用sigmoid ,因为sigmoid会导致梯度消失问题。 
2)首先使用relu 
3)然后使用leaky relu 
4)如果不行,采用maxout

池化层

由于图片的像素点很多,如果不进行压缩处理,那么会导致参数过多,就过拟合啦。所以需要将图片大小进行压缩。那咋个压缩呢?只能采用下采样啦。如下图所示: 
 
这个有点像卷积计算,但是呢,没有kernel。一般采用的是 
1)Max 
2)Average 
两种下采样方式,不过用的多的还是max。因为average会带来新的特征值,不太好。

全连接层

经过了若干的卷积层,池化层,在输出层的前一层,加一个全连接层,用于最后的输出。 
输出层 
最后就是再次通过一个激活函数输出数据了。 
总的层级结构如下: 
 
一般来说,CNN的结构中,会有若干的卷积层,然后通过激活层,然后池化,然后继续卷积等等,最后全连接输出数据。不过有的也不用全连接做最后一层,用一维的卷积层代替。 

正则化

在深度学习中,优化算法基本都是采用的SGD。正则化不是像传统的方式L1或者L2。而是通过一定的概率丢弃神经网络节点,这就被称为dropout 
如下图所示,每次运算的时候随机的使一些节点失效。或者可以理解,选择神经节点服从一个概率分布。 
 
通过dropout的方式可以防止过拟合 
1)神经元的个数少了,参数减小,那么根据机器学习的VC维可以得到过拟合风险减小。 
2)通过随机的丢弃一些神经元,可以组成不同的神经网络,最后做到一个aggregation的神经网络,就像随机森林一样的的想法。

典型结构

CNN常见的结构有: 
1)LeNet ,最早用于数字识别 
2)AlexNet ,2012年的视觉大赛冠军 
3)ZF Net,2013年的视觉大赛冠军 
4)Google Net,2014年 
5)VGG Net,2014年 
6)ResNet,2015年,152层。 
具体可以参考:http://blog.csdn.net/u012905422/article/details/53312302 
计算机视觉竞赛可以参考:http://image-net.org/ 里面每年的winner可以看看其使用的结构。


登录查看更多
20

相关内容

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

知识荟萃

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

更多

查看相关VIP内容、论文、资讯等
最新《深度学习自动驾驶》技术综述论文,28页pdf
专知会员服务
153+阅读 · 2020年6月14日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
卷积神经网络的概述论文:分析、应用和展望,21页pdf
专知会员服务
90+阅读 · 2020年4月7日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
354+阅读 · 2020年2月15日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
最新!Yann Lecun 纽约大学Spring2020深度学习课程,附PPT下载
金融时序预测中的深度学习方法:2005到2019
专知会员服务
166+阅读 · 2019年12月4日
【电子书】让 PM 全面理解深度学习 65页PDF免费下载
专知会员服务
17+阅读 · 2019年10月30日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
在深度学习的革命中,谈谈卷积神经网络(CNN)
开源中国
8+阅读 · 2018年3月23日
一文让你入门CNN,附3份深度学习视频资源
机器学习算法与Python学习
12+阅读 · 2018年3月10日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
干货 | 深度学习之卷积神经网络(CNN)的模型结构
机器学习算法与Python学习
12+阅读 · 2017年11月1日
给初学者的深度学习简介
36大数据
3+阅读 · 2017年10月19日
【深度学习】给初学者的深度学习简介
产业智能官
8+阅读 · 2017年10月17日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
卷积神经网络(CNN)学习笔记1:基础入门
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月16日
Arxiv
26+阅读 · 2018年9月21日
Arxiv
6+阅读 · 2018年2月6日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关VIP内容
最新《深度学习自动驾驶》技术综述论文,28页pdf
专知会员服务
153+阅读 · 2020年6月14日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
212+阅读 · 2020年4月26日
卷积神经网络的概述论文:分析、应用和展望,21页pdf
专知会员服务
90+阅读 · 2020年4月7日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
354+阅读 · 2020年2月15日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
最新!Yann Lecun 纽约大学Spring2020深度学习课程,附PPT下载
金融时序预测中的深度学习方法:2005到2019
专知会员服务
166+阅读 · 2019年12月4日
【电子书】让 PM 全面理解深度学习 65页PDF免费下载
专知会员服务
17+阅读 · 2019年10月30日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
相关资讯
在深度学习的革命中,谈谈卷积神经网络(CNN)
开源中国
8+阅读 · 2018年3月23日
一文让你入门CNN,附3份深度学习视频资源
机器学习算法与Python学习
12+阅读 · 2018年3月10日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
干货 | 深度学习之卷积神经网络(CNN)的模型结构
机器学习算法与Python学习
12+阅读 · 2017年11月1日
给初学者的深度学习简介
36大数据
3+阅读 · 2017年10月19日
【深度学习】给初学者的深度学习简介
产业智能官
8+阅读 · 2017年10月17日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
卷积神经网络(CNN)学习笔记1:基础入门
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月16日
Top
微信扫码咨询专知VIP会员