pytorch 卷积神经网络CNN
 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 卷积神经网络CNN  
 
 
 1 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 卷积神经网络是近年发展起来,并广泛应用于图像处理,NLP等领域的一  
 
 
 种多层神经网络。  
 
 
 传统BP处理图像时的问题:  
 
 
 1.权值太多,计算量太大  
 
 
 2.权值太多,需要大量样本  
 
 
 进行训练。  
 
 
 CNN 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 1962年哈佛医学院神经生理学家Hubel和Wiesel通过对猫视觉皮层细  
 
 
 胞的研究,提出了感受野(receptive field)的概念,1984年日本学者  
 
 
 Fukushima基于感受野概念提出的神经认知机(neocognitron)可以看  
 
 
 作是卷积神经网络的第一个实现网络,也是感受野概念在人工神经网  
 
 
 络领域的首次应用。  
 
 
 局部感受野 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 CNN通过 
 局部感受野 
 和 
 权值共享 
 减少了神经网络需要训练的参数个数  
 
 
 局部感受野和权值共享 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1 = 4  
 
 
 特征图:feature map  
 
 
 卷积核/滤波器  
 
 
 卷积计算 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 步长为1  
 
 
 步长为2  
 
 
 不同步长的卷积 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 滤波器 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 Pooling常用的三种方式:  
 
 
 1.max-pooling  
 
 
 2.mean-pooling  
 
 
 3.stochastic pooling  
 
 
 池化Pooling 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 SAME PADDING:  
 
 
 给平面外部补0  
 
 
 卷积窗口采样后得到一个跟原来大小相同的平面  
 
 
 VALID PADDING:  
 
 
 不会超出平面外部  
 
 
 卷积窗口采样后得到一个比原来平面小的平面  
 
 
 VALID PADDING  
 
 
 SAME PADDING  
 
 
 Padding 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 SAME PADDING  
 
 
 VALID PADDING  
 
 
 Padding 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 SAME PADDING:可能会给平面外部补0  
 
 
 VALID PADDING:不会超出平面外部  
 
 
 假如有一个28*28的平面,用2*2步长为2的窗口对其进行卷积/池化操作  
 
 
 使用SAME PADDING的方式,得到14*14的平面  
 
 
 使用VALID PADDING的方式,得到14*14的平面  
 
 
 假如有一个2*3的平面,用2*2步长为2的窗口对其进行卷积/池化操作  
 
 
 使用SAME PADDING的方式,得到1*2的平面  
 
 
 使用VALID PADDING的方式,得到1*1的平面  
 
 
 Padding 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 LeNET-5 
 是最早的卷积神经网络之一,曾广泛用于美国银行。手写  
 
 
 数字识别正确率在99%以上。  
 
 
 卷积窗口:5*5  
 
 
 步长:1  
 
 
 池化窗口:2*2  
 
 
 步长:2  
 
 
 卷积窗口:5*5  
 
 
 步长:1  
 
 
 池化窗口:2*2  
 
 
 步长:2  
 
 
 卷积层  
 
 
 池化层 卷积层  
 
 
 池化层  
 
 
 输入层  
 
 
 全链接层  
 全链接层  
 
 
 输出层  
 
 
 LeNET-5 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 可视化:  
 
 
 http://scs.ryerson.ca/~aharley/vis/conv/  
 
 
 http://scs.ryerson.ca/~aharley/vis/conv/flat.html  
 
 
 LeNET-5 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 ImageNet介绍  
 
 
 2 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 ImageNet是一个计算机视觉系统识别项目,是目前世界上图像识别最大  
 
 
 的数据库。一共有1500万张左右的图片,被分为22000个左右的类。是  
 
 
 由斯坦福教授李飞飞领导建立的。  
 
 
 TED演讲:我们怎么教计算机理解图片?  
 
 
 ImageNet 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 1976年出生于北京,长在四川,16岁随父母移居美国新泽西州。  
 
 
 1999年毕业于普林斯顿大学,2005年获得加州理工学院电子工程博士。  
 
 
 2009年加入斯坦福大学担任助理教授,并于2012年担任副教授(终生教授),和  
 
 
 斯坦福人工智能实验室与视觉实验室主任。  
 
 
 2017年1月入职Google,担任谷歌云首席科学家 
 。  
 
 
 2018年9月卸任谷歌云首席科学家,回归斯坦福大学当教授。  
 
 
 李飞飞 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 ILSVRC:ImageNet Large Scale Visual Recognition Challenge  
 
 
 ILSVRC 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 ILSVRC:ImageNet Large Scale Visual Recognition Challenge  
 
 
 ILSVRC 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 序列模型  
 
 
 3 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 RNN(Recurrent Neural Network)  
 
 
 1986年 Rumelhart 等人提出循环神经网络(recurrent neural network),简称RNN。RNN  
 
 
 跟我们之前学习过的神经网络都不太一样,它是一种序列模型。比如卷积网络是专门用来处  
 
 
 理网格化数据(例如图像数据)的神经网络,RNN是专门用来处理序列数据的神经网络。所  
 
 
 谓的序列数据指的是跟序列相关的数据,比如一段语音,一首歌曲,一段文字,一段录像等。 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 序列模型应用:语音识别  
 
 
 把语音转换成为文字 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 序列模型应用:文本分类  
 
 
 把文章,邮件或用户评论等文本数据做分类 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 序列模型应用:机器翻译  
 
 
 例如把中文翻译成英文 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 序列模型应用:分词标注  
 
 
 给一段文字做分词标注,标注每个字对应的标号。假如使用4-tag(BMES)标注标签,  
 
 
 B表示词的起始位置,M表示词的中间位置,E表示词的结束位置,S表示单字词。  
 
 
 可以得到类似如下结果:  
 
 
 “人/B 们/E 常/S 说/S 生/B 活/E 是/S 一/S 部/S 教/B 科/M 书/E ” 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 RNN(Recurrent Neural Network) 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 RNN(Recurrent Neural Network)  
 
 
 隐层 h 
 t 
 接收的是上时刻的隐层(hidden layer)  
 
 
 h 
 t−1  
 
 
 还是上时刻的输出(output layer)y 
 t−1 
 ,  
 
 
 可以分成了两种 RNN:  
 
 
 Elman network 接收上时刻的隐层 h 
 t−1  
 
 
 Jordan network 接收上时刻的输出 y 
 t−1 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 RNN一个重要的用法就是通过之前的信息来决策当前的问题。  
 
 
 比如就像我们看电影,我们要根据电影之前的情节,才能理解现在的情节。  
 
 
 例子1:有一朵云飘在()  
 
 
 例子2:我从小生长在美国。。。我可以说一口流利的()  
 
 
 RNN(Recurrent Neural Network) 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 RNN(Recurrent Neural Network) 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 长短时记忆网络LSTM  
 
 
 4 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 i 
 t  
 输入门信号  
 
 
 f 
 t  
 忘记门信号  
 
 
 ǁ  
 
 
 𝑐 
 
 
 𝑡  
 Cell输入信号  
 
 
 c 
 t  
 Cell输出信号  
 
 
 o 
 t  
 输出门信号  
 
 
 h 
 t  
 block输出信号  
 
 
 x 
 t  
 第t个序列输入  
 
 
 h 
 t-1  
 第t-1个序列输出  
 
 
 σ 
 g  
 sigmoid函数  
 
 
 σ 
 c  
 tanh函数  
 
 
 σ 
 h  
 tanh函数或线性函数  
 
 
 LSTM(Long Short Term Memory) 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 Peephole LSTM  
 
 
 和之前的公式做比较,发现只是把 h 
 t−1  
 都换成  
 
 
 了 c 
 t−1 
 ,即三个门的输入都改成了 [x 
 t  
 ,c 
 t−1 
 ] 。因  
 
 
 为是从 cell state 里取得信息,所以叫窥视孔(  
 
 
 peephole)。 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 FC-LSTM(Fully-connected LSTM )  
 
 
 三个输入分别是 [x 
 t  
 ,h 
 t−1 
 ,c 
 t−1 
 ]  
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 LSTM(Long Short Term Memory) 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 LSTM(Long Short Term Memory) 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 门控循环单元GRU  
 
 
 5 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 GRU(Gated Recurrent Unit)  
 
 
 GRU 这个结构是 2014 年才出现的,效果跟  
 
 
 LSTM差不多,但是用到的参数更少。将忘记  
 
 
 门和输入门合成了一个单一的更新门。  
 
 
 z 
 t 
 是更新门(update gate),决定h 
 t 
 的更新情况  
 
 
 r 
 t 
 是重置门(reset gate),决定是否要放弃h 
 t-1  
 
 
 ෨ 
 
 
 ℎ 
 
 
 𝑡  
 是候选输出,接收 [x 
 t  
 ,h 
 t−1 
 ]  
 
 
 h 
 t  
 是当前输出,接收 [h 
 t−1 
 ,  
 
 
 ෨ 
 
 
 ℎ 
 
 
 𝑡  
 ] 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 其他RNN模型  
 
 
 6 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 双向RNN(Bidirectional RNNs)  
 
 
 双向的 RNN 是同时考虑“过去”和“未来”的信息,输入(黑色点)沿着黑色的实线箭  
 
 
 头传输到隐层(黄色点),再沿着红色实线传到输出(红色点)。黑色实线做完前向传播  
 
 
 后,在 Bidirectional RNNs 却先不急着后向传播,而是从末尾的时刻沿着虚线的方向再回  
 
 
 传回来。 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 Stacked Bidirectional RNNs  
 
 
 图中是双向的三层 RNNs,堆叠多层的RNN网络,可以增加模型的参数,提高模型的拟合  
 
 
 能力。每层的 hidden state 不仅要输给下一时刻,还是当做是此时刻下一层的输入。 
 www.ai-xlab.com  
 
 
 AI MOOC  
 
 
 THANKS