机器学习及其Python实践 (8).pdf
《机器学习及其Python实践 (8).pdf》由会员分享,可在线阅读,更多相关《机器学习及其Python实践 (8).pdf(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、机器学习及其Python实践第8章 深度学习第8章 深度学习深度学习是通过增加隐层数量,让神经网络产生由量变到质变的效果。如果隐层达到一定数量(例如八、九层),则神经网络就可称作是深度学习模型增加隐层数量会引发一些新的问题,例如增加隐层数可能引起梯度爆炸或梯度消失、或因模型学习能力过强而产生过拟合等问题,第7章对此已做过详细讲解并给出了具体解决办法除增加隐层数量之外,深度学习还会针对不同应用需求对网络结构做适当调整,例如采用非全连接层以减少参数个数、引入环或回路等非前馈式结构以处理序列数据等2006年,G.Hinton首先提出了深度学习(deep learning)概念,自此各种深度学习模型如
2、雨后春笋般涌现出来。本章选择其中比较有代表性的几种模型进行讲解卷积神经网络(Convolutional Neural Network,缩写CNN)循环神经网络(Recurrent Neural Network,缩写RNN)自编码器(AutoEncoder,缩写AE)生成对抗网络(Generative Adversarial Network,缩写GAN)8.1 卷积神经网络CNN 卷积神经网络具有前馈式结构,其最主要的特点是模型中包含卷积(convolution)运算 卷积是一种重要的数学运算,并在信号处理(例如语音信号处理、数字图像处理等)领域得到广泛应用 在神经网络中引入卷积运算,其作用是
3、引入已有领域知识,这样就能在相关理论指导下开展网络模型设计工作,减少盲目性 将隐层的全连接改为局部连接,这样能够大幅减少网络参数,降低训练难度,同时也有利于设计层数更多的深度模型8.1 卷积神经网络CNN在信号处理(signal processing)领域,信号变换及特征提取的研究历史已经很长并已积累了非常深厚的理论基础 一维序列信号被称为时域(time domain)信号 二维阵列信号则被称为空域(spatial domain)信号信号分析与处理的常规方法是:通过傅里叶变换将时域或空域信号变换至频域(frequency domain)进行分析,然后设计滤波器(filter)并通过滤波(fil
4、tering)对信号进行频域处理或提取信号的频域特征随着计算机的发展,信号处理进入数字化时代。数字信号处理(Digital Signal Processing,缩写DSP)的方法通常是:通过频域分析设计出滤波器,然后将其转回时域(或空域),最终在时域(或空域)中实现滤波或特征提取等处理功能时域(或空域)中的信号处理指的是直接对原始数字信号进行处理,这么做的好处是可以省去信号变换与逆变换的计算过程8.1 卷积神经网络CNN 频域的滤波运算在时域或空域将被转换成一种等价运算,这就是卷积运算;而滤波器则被转换成一种等价的算子,即卷积核(convolution kernel)使用卷积核与原始数字信号进
5、行卷积运算就相当于是滤波,不同卷积核能产生不同的滤波效果 平滑(smoothing)卷积核可以实现低通(low-pass)滤波,得到低频特征 锐化(sharpening)卷积核则可以实现高通(high-pass)滤波,得到高频特征阚道宏8.1 卷积神经网络CNN 数字图像的频域特征 像素点的频域特征描述的是以该像素点为中心的一个局部小区域的区域特征 低频特征描述的是区域亮度水平(例如亮度均值,可通过加权求和求得)高频特征描述的则是区域亮度差异(例如亮度差值,可通过加权求差求得)低频属于共性特征,高频属于差异性特征下采样下采样低频特征原始图像高频特征112224112-1-1-1-1-18-1-
6、1-1平滑卷积核(低通滤波器)锐化卷积核(高通滤波器)卷积运算(滤波)卷积运算(滤波)感受野(receptive field)8.1 卷积神经网络CNN 将神经网络的隐层改造为卷积层8.1 卷积神经网络CNN 卷积的实现细节 局部连接与权值共享 填充(padding)步长(strides)卷积核(kernel)通道(channels)下采样(downsampling)与池化(pooling)8.1 卷积神经网络CNN 卷积的实现细节 局部连接与权值共享 全连接隐层 输入:=1,2,输出:=1,2,x1x6x5x4x3x2x7x9x8xmh1h5h4h3h2hmh6h7h9h8x1x6x5x4x
7、3x2x7x9x8xm-h5h4h3h2-h6h7h9h8局部连接(45,55,65)(1,2,3)全连接(15,25,.,m5)5=151+252+5m.5=454+555+656.=11+2+3+1,=1,2,=.个权重参数3 个权重参数8.1 卷积神经网络CNN 卷积的实现细节 填充(padding)步长(strides)x1x6x5x4x3x2x7x9x8xmh1h5h4h3h2hmh6h7h9h8x1x6x5x4x3x2x7x9x8xm-h5h4h3h2-h6h7h9h8局部连接(45,55,65)(1,2,3)全连接(15,25,.,m5)x1x6x5x4x3x2x7x9x8xmh
8、1h5h4h3h2hmh6h7h9h8validsame/padding00有效(valid)一致(same)x1x6x5x4x3x2x7x9x8xmh1h5h3h7h900+2 2strides=28.1 卷积神经网络CNN 卷积的实现细节 卷积核(kernel)通道(channels)x1x6x5x4x3x2x7x9x8xmh1h5h4h3h2hmh6h7h9h8x1x6x5x4x3x2x7x9x8xm-h5h4h3h2-h6h7h9h8局部连接(45,55,65)(1,2,3)全连接(15,25,.,m5)x1x6x5x4x3x2x7x9x8xm-h5h4h3-h6h7h9h8-kern
9、el_size=5(1,2,3,4,5)r1g1b1-channels=3(r1,g1,b1),(r2,g2,b2),(r3,g3,b3)r2g2b2r3g3b3r4g4b4r5g5b5r6g6b6r7g7b7r8g8b8r9g9b9rmgmbma2b2c2a3b3c3a4b4c4a5b5c5a6b6c6a7b7c7a8b8c8a9b9c9-h5h4h3h2-h6h7h9h8h5=a5+b5+c5感受野(receptive field)阚道宏8.1 卷积神经网络CNN 卷积的实现细节 下采样(downsampling)与池化(pooling)x1x6x5x4x3x2x7x9x8xmh1h5h4
10、h3h2hmh6h7h9h800h1h5h3h7h9kernel_size=3strides=1pool_size=2strides=28.1 卷积神经网络CNN 卷积的实现细节 局部连接与权值共享 填充(padding)步长(strides)卷积核(kernel)通道(channels)下采样(downsampling)与池化(pooling)二维卷积kernel_size=(3,3),或kernel_size=3hijxij8.1 卷积神经网络CNN 卷积神经网络的基本结构 卷积神经网络属于前馈式神经网络,主要由卷积层和全连接层两种结构组成 卷积层被用作隐层(可继续细化成卷积、池化两部分)
11、;而输出层使用的则是全连接层 1998年,Y.LeCun等人设计了名为LeNet-5的卷积神经网络8.1 卷积神经网络CNN 卷积神经网络的基本结构 卷积神经网络属于前馈式神经网络,主要由卷积层和全连接层两种结构组成 卷积层被用作隐层(可继续细化成卷积、池化两部分);而输出层使用的则是全连接层 1998年,Y.LeCun等人设计了名为LeNet-5的卷积神经网络 2006年,G.Hinton提出了深度学习思想阚道宏8.1 卷积神经网络CNN 深度学习中的问题与创新 问题:梯度消失或梯度爆炸、过拟合、参数增长过快等 创新 各种改进的反向传播算法、ReLU激活函数、批次标准化、Dropout等 各
12、种抑制参数过快增长的方法,例如权值共享、卷积核小型化、快捷连接(shortcut connection)或称跳跃连接(skip connection)等 提高算力的GPU(Graphics Processing Unit)并行计算方法等8.1 卷积神经网络CNN LeNet-5模型编程实战 TensorFlow中的卷积函数tf.nn.conv2d()和卷积层类keras.layers.Conv2D 编程实现LeNet-5卷积神经网络,为MNIST手写数字数据集建立一个分类模型阚道宏8.1 卷积神经网络CNN tf.nn.conv2d()和keras.layers.Conv2D8.1 卷积神经网
13、络CNN Python中的拦截方法8.1 卷积神经网络CNN LeNet-5模型编程实战 加载数据集并进行预处理阚道宏8.1 卷积神经网络CNN LeNet-5模型编程实战 加载数据集并进行预处理 搭建LeNet-5卷积神经网络阚道宏8.1 卷积神经网络CNN LeNet-5模型编程实战 加载数据集并进行预处理 搭建LeNet-5卷积神经网络 配置并训练模型8.1 卷积神经网络CNN LeNet-5模型编程实战 加载数据集并进行预处理 搭建LeNet-5卷积神经网络 配置并训练模型 测试并评估模型8.2 循环神经网络RNN 自然语言处理(Natural Language Processing,
14、缩写NLP)是机器学习的一个重要研究方向,它所处理的主要是序列数据 处理序列型数据的关键是如何提取数据背后的含义,或称作语义(semantic)特征。语义特征真正反映了序列数据的本质 循环神经网络主要用于处理序列型数据,例如语音识别(speechrecognition)、机 器 翻 译(machinetranslation)、文本情感分析(text sentiment analysis)、行情预测(market forecast)等,其核心思想是基于神经网络为序列型数据建立语义特征提取模型8.2 循环神经网络RNN 序列数据的语义特征 序列中每个数据都有自己独立的含义(这里将其称作词义)序列数
15、据中的词义会互相影响、互相依赖,需根据上下文才能确定词义并最终形成序列的整体含义(这里将其称作语义)“我吃苹果”与“我用苹果”8.2 循环神经网络RNN 序列数据的语义特征 语义特征的概率模型X1P(H0)X2P(H2|H1)XtP(Ht|Ht-1)H1 H2HtP(X1|H1)P(X2|H2)P(Xt|Ht)XNP(HN|HN-1)HNP(XN|HN)P(H1|H0)XtP(Ht|Ht-1)HtP(Xt|Ht)1,2,1,2,=0=1 1.(8 5)1,2,|1,2,1,2,1,2,1,2,8.2 循环神经网络RNN 序列数据的语义特征 语义特征的映射模型“苹果”、“香蕉”、“芒果”、“樱桃
16、”one-hot编码和词向量(word feature vector)红色圆形苹果香蕉芒果樱桃两个向量之间夹角的余弦cos被称作这两个向量的余弦相似度(cosine similarity)8.2 循环神经网络RNN 序列数据的语义特征 语义特征的映射模型“苹果”、“香蕉”、“芒果”、“樱桃”one-hot编码和词向量(word feature vector)词汇向量(word to vector)8.2 循环神经网络RNN RNN神经元与RNN网络层8.2 循环神经网络RNN RNN神经元与RNN网络层ht-1,1ht-1,2ht-1,qxt1xt2xtdht1ht2htqht1ht2htq
17、fxh+fhh=f:(xt,ht-1)htWxhWhhht-1htAxtht-1ht fhh xt fxh WhhWxh=+.(8 7a)=1+.(8 7b)=+1+.8 8a=tanh+1+.(8 8b)RNN神经元8.2 循环神经网络RNN RNN神经元与RNN网络层8.2 循环神经网络RNN 将RNN网络层作为神经网络的隐层x1x2xNhNy1y2ynWxhWhhh0AWxhWhhAWxhWhhAR RN NN N 层D De en ns se e 层O Ou ut tp pu ut t 层I In np pu ut t 层x1x2xNhNv1v2vNy1y2ynWxhWhhh0AWxh
18、WhhAWxhWhhAE Emmb be ed dd di in ng g 层R RN NN N 层D De en ns se e 层O Ou ut tp pu ut t 层I In np pu ut t 层x1x2xNhNv1v2vNyNWxhWhhh0AWxhWhhAWxhWhhAE Emmb be ed dd di in ng g 层R RN NN N 层D De en ns se e 层O Ou ut tp pu ut t 层I In np pu ut t 层h2y2h1y18.2 循环神经网络RNN RNN模型编程实战 Keras高层接口 词嵌入层类keras.layers.Embe
19、dding 序列填充函数keras.preprocessing.sequence.pad_sequences()RNN网络层类keras.layers.SimpleRNN 编程实现一个包含词嵌入层、RNN网络层的神经网络,为IMDB影评数据集建立一个情感分类模型阚道宏8.2 循环神经网络RNN RNN模型编程实战 Keras高层接口 词嵌入层类keras.layers.Embedding 序列填充函数keras.preprocessing.sequence.pad_sequences()RNN网络层类keras.layers.SimpleRNN 编程实现一个包含词嵌入层、RNN网络层的神经网络
20、,为IMDB影评数据集建立一个情感分类模型8.2 循环神经网络RNN RNN模型编程实战 编程实现一个包含词嵌入层、RNN网络层的神经网络,为IMDB影评数据集建立一个情感分类模型阚道宏8.2 循环神经网络RNN RNN模型编程实战 编程实现一个包含词嵌入层、RNN网络层的神经网络,为IMDB影评数据集建立一个情感分类模型8.2 循环神经网络RNN LSTM模型 短期记忆(short-term memory)长短期记忆(Long Short-Term Memory,缩写LSTM)=tanh 1+,=1,2,.(8 9)1,2,1,2,阚道宏8.2 循环神经网络RNN LSTM模型阚道宏8.2
21、循环神经网络RNN LSTM模型阚道宏8.2 循环神经网络RNN LSTM模型=1,+.(8 10a)=1,+=1,+.(8 10b)=1+.(8 10c)=1,+=tanh.(8 10d)阚道宏8.2 循环神经网络RNN LSTM模型编程实战 Keras高层接口为LSTM模型专门提供了一个LSTM网络层类 改用LSTM来搭建影评数据情感分类神经网络8.3 自编码器 其功能是对原始数据进行编码(encoding),然后再通过解码(decoding)恢复出原始数据(或称作重建数据)自编码器在结构和原理上与普通神经网络没有什么大的区别,但其设计思想非常具有创新性8.3 自编码器 深入理解神经网络
22、神经网络模型通过输入层接受外部输入的原始数据=1,2,,然后经隐层、输出层做逐层处理,最终通过输出层向外输出结果=1,2,隐层的作用相当于是从原始数据中提取出特征,然后交由输出层进行预测(回归或分类)并输出预测结果 换句话说,神经网络模型实现了一个“原始数据 特征 预测结果”的映射过程(隐层)特征模型f:x z z(输出层)预测模型g:z z y特征z z输入x输出y8.3 自编码器 深入理解神经网络 神经网络是一种数学建模新方法 只要有足够的隐层和神经元数量,神经网络模型就能以任意精度逼近任意复杂的函数 函数实际上是一种映射,例如从原始数据提取特征就是一种映射或称作函数,可记作::;从特征到
23、预测结果也是一种映射或函数,可记作::。神经网络在本质上就是一种“映射”模型,并且能够模拟任意复杂的映射 数学建模是研究客观世界的基本方法,其目的就是建立描述不同事物之间关系的数学模型 利用神经网络搭建一个“万能模型”,然后利用样本数据和学习算法对模型进行训练,这样就能比较容易地建立起神经网络式的数学模型8.3 自编码器 深入理解神经网络 将现有理论融入神经网络 神经网络建模具有一定的盲目性 在神经网络建模过程中引入已有的领域知识,这样就能在相关理论指导下开展模型设计工作,减少盲目性 充分融合现有理论是神经网络创新发展的一个重要方向,它既能让神经网络如虎添翼,也能让现有理论焕发新的生机8.3
24、自编码器 深入理解神经网络 神经网络模型具有良好的适应性和扩展性 原始数据 特征 重建数据的映射 编码解码的过程,或压缩解压缩过程,即自编码器 编码器(encoder),其功能是从原始数据中提取特征;右边的被称作解码器(decoder),其功能是根据编码器输出的特征重建数据(可能与原始数据存在误差)输入层隐层输出层z1z2znx1x2xd隐层输出层x1x2xdh特征z zh原始数据x重建数据x8.3 自编码器 自编码器及其编程实战使用Keras高层接口对自编码器进行编程实战,为MNIST手写数字数据集搭建一个编码解码模型8.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 搭建神经
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器学习及其Python实践 8 机器 学习 及其 Python 实践
限制150内