《机器学习及其Python实践 (8).pdf》由会员分享,可在线阅读,更多相关《机器学习及其Python实践 (8).pdf(100页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 搭建神经
25、网络模型时使用的是Keras高层接口提供的堆叠式神经网络类Sequential,然后向其中添加网络层对象,例如Dense、Conv2D、SimpleRNN、LSTM等类的对象,最后再为模型配置损失函数、优化算法和评价指标 如果堆叠式神经网络类Sequential不能满足特定的应用需求,这时就需要定义自己的神经网络类阚道宏8.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 搭建神经网络模型时使用的是Keras高层接口提供的堆叠式神经网络类Sequential,然后向其中添加网络层对象,例如Dense、Conv2D、SimpleRNN、LSTM等类的对象,最后再为模型配置损失函数、优
26、化算法和评价指标 如果堆叠式神经网络类Sequential不能满足特定的应用需求,这时就需要定义自己的神经网络类阚道宏8.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras高层接口对自编码器进行编程实战,为MNIST手写数字数据集搭建一个编码解码模型8.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras高层接口对自编码器进行编程实战,为MNIST手写数字数据集搭建一个编码解码模型阚道宏8.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras高层接口对自编码器进行编程实战,为MNIST手写数字数据集搭建一个编码解码模型8
27、.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras高层接口对自编码器进行编程实战,为MNIST手写数字数据集搭建一个编码解码模型阚道宏8.3 自编码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras高层接口对自编码器进行编程实战,为MNIST手写数字数据集搭建一个编码解码模型8.3 自编码器 变分法与KL散度 通过变分法建立概率模型,然后基于概率分布重建数据,这就是变分自编码器(Variational AutoEncoder,缩写VAE)自编码器:原始数据 特征 重建数据的映射 原始数据是可以观测的随机变量(记作),而特征则属于不可观测的随机变量(即
28、隐变量,记作)观测变量X P(X)隐变量Z P(Z)联合概率分布P(X,Z)采样采样P(X|Z)P(Z|X)观测样本(x1,x2,.)隐变量样本(z z1,z z2,.)条件采样条件采样8.3 自编码器 变分法与KL散度 KL散度8.3 自编码器 变分法与KL散度 EM算法观测变量X P(X)隐变量Z P(Z)联合概率分布P(X,Z)采样采样P(X|Z)P(Z|X)观测样本(x1,x2,.)隐变量样本(z z1,z z2,.)条件采样条件采样8.3 自编码器 变分法与KL散度 EM算法 变分推断观测变量X P(X)隐变量Z P(Z)联合概率分布P(X,Z)采样采样P(X|Z)P(Z|X)观测样
29、本(x1,x2,.)隐变量样本(z z1,z z2,.)条件采样条件采样8.3 自编码器 变分法与KL散度 EM算法 变分推断 变分自编码器 数据重建的过程可看作是一个依概率分布进行抽样的过程:先根据原始样本估计特征的概率分布,即后验概率|;然后依后验概率|抽样得到特征样本;最后再依观测概率|观测得到重建样本原始样本x后验概率P(Z|x )Q(Z|x;)参数估计特征样本z z抽样P(Z|x )重建样本x观测P(X|z z )8.3 自编码器 变分法与KL散度 EM算法 变分推断 变分自编码器 数据重建的过程可看作是一个依概率分布进行抽样的过程:先根据原始样本估计特征的概率分布,即后验概率|;然
30、后依后验概率|抽样得到特征样本;最后再依观测概率|观测得到重建样本原始样本x后验概率P(Z|x )Q(Z|x;)参数估计特征样本z z抽样P(Z|x )重建样本x观测P(X|z z )8.3 自编码器 变分自编码器 自编码器使用神经网络为数据重建实现了一个“原始数据 特征 重建数据”的映射模型。自编码器在设计时具有很强的盲目性,其映射过程也没有可解释性 变分自编码器则是通过变分法建立概率模型,然后基于概率分布重建数据。可以使用神经网络来实现变分自编码器,为数据重建搭建一个“变分自编码器神经网络”模型阚道宏8.3 自编码器 变分自编码器 自编码器使用神经网络为数据重建实现了一个“原始数据 特征
31、重建数据”的映射模型。自编码器在设计时具有很强的盲目性,其映射过程也没有可解释性 变分自编码器则是通过变分法建立概率模型,然后基于概率分布重建数据。可以使用神经网络来实现变分自编码器,为数据重建搭建一个“变分自编码器神经网络”模型原始样本x后验概率P(Z|x )Q(Z|x;)参数估计特征样本z z抽样P(Z|x )重建样本x观测P(X|z z )先验概率P(Z)概率模型:依概率分布重建数据(编码器)f:x z z(解码器)g:z z x输入x输出x特征样本z z抽样P(Z)神经网络模型先验概率P(Z)抽样P(Z)8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数阚道宏8.3
32、 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 =ln|.(8 16)8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 =ln|.(8 16)8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 =ln|.(8 16)=ln|=1 +=1,.(8 20)8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数8.3 自编码器 进一步理解概率分布的先验与后验阚道宏8.3 自编码器 进一步理解概率分布的先验与后验原始样本x后验概率P(Z|x )Q(Z|x;)参数估计特征样本z z抽样P(
33、Z|x )重建样本x观测P(X|z z )先验概率P(Z)概率模型:依概率分布重建数据(编码器)f:x z z(解码器)g:z z x输入x输出x特征样本z z抽样P(Z)神经网络模型先验概率P(Z)抽样P(Z)阚道宏8.3 自编码器 进一步理解概率分布的先验与后验原始样本x后验概率P(Z|x )Q(Z|x;)参数估计特征样本z z抽样P(Z|x )重建样本x观测P(X|z z )先验概率P(Z)概率模型:依概率分布重建数据(编码器)f:x z z(解码器)g:z z x输入x输出x特征样本z z抽样P(Z)神经网络模型先验概率P(Z)抽样P(Z)8.3 自编码器 使用神经网络搭建变分自编码器
34、模型 损失函数 采样函数 变分自编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训练方法train_step()在计算损失函数时比较复杂8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自
35、编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训练方法train_step()在计算损失函数时比较复杂x1x2xdsampling()ln 2z zy1y2ydd1d2d-meand-log-vard4d6d5N
36、(0,1)d3原始图像784正态分布参数 10,ln102特征样本10重建图像784.8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训
37、练方法train_step()在计算损失函数时比较复杂x1x2xdsampling()ln 2z zy1y2ydd1d2d-meand-log-vard4d6d5N(0,1)d3原始图像784正态分布参数 10,ln102特征样本10重建图像784.阚道宏8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、
38、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训练方法train_step()在计算损失函数时比较复杂x1x2xdsampling()ln 2z zy1y2ydd1d2d-meand-log-vard4d6d5N(0,1)d3原始图像784正态分布参数 10,ln102特征样本10重建图像784.阚道宏8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字
39、数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训练方法train_step()在计算损失函数时比较复杂x1x2xdsampling()ln 2z zy1y2ydd1d2d-meand-log-vard4d6d5N(0,1)d3原始图像784正态分布参数 10,ln102特征样本10重建图像784.阚道宏8.
40、3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训练方法train_step()在计算损失函数时比较复杂x1x2xdsampling()ln
41、 2z zy1y2ydd1d2d-meand-log-vard4d6d5N(0,1)d3原始图像784正态分布参数 10,ln102特征样本10重建图像784.阚道宏8.3 自编码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras高层接口进行变分自编码器神经网络模型编程实战,为MNIST手写数字数据集搭建一个编码解码模型 变分自编码器神经网络模型在程序代码结构上与自编码器基本相同,都是先自定义三个类,即变分编码器类VEncoder、变分解码器类VDecoder、变分自编码器类VAE,然后定义对象搭建模型并对模型进行配置、训练和测试 所不同的是,变分自
42、编码器需增加一个采样函数sampling();另外,变分自编码器类VAE的单步训练方法train_step()在计算损失函数时比较复杂x1x2xdsampling()ln 2z zy1y2ydd1d2d-meand-log-vard4d6d5N(0,1)d3原始图像784正态分布参数 10,ln102特征样本10重建图像784.8.4 生成对抗网络GAN变分自编码器模型中的解码器,任给标准正态分布 0,1 的特征样本,解码器就能生成一个与手写数字非常相似的图像在未输入任何原始样本的情况下却能输出新样本,这时的解码器相当于是一种能自动生成新样本的生成模型,因此它被改称为生成器(generator
43、)模型生成器模型需要先通过学习算法对原始样本进行学习,然后才能自动生成新样本,这相当于是在学习的基础上进行再创作(解码器)g:z z x生成x生成器模型N(0,1)抽样特征z z P(X)=P(X)?8.4 生成对抗网络GAN 生成器的工作原理 生成器生成的新样本与原始样本之间存在什么样的联系?生成器如何通过神经网络来生成新样本(现将其改称为生成样本)?有时也将生成样本称作伪造(fake)样本,将原始样本称作真实(real)样本(解码器)g:z z x生成x生成器模型N(0,1)抽样特征z z P(X)=P(X)?8.4 生成对抗网络GAN 生成器的工作原理 样本之间的相似性 可以将标准正态分
44、布映射成任意分布(解码器)g:z z x生成x生成器模型N(0,1)抽样特征z z P(X)=P(X)?8.4 生成对抗网络GAN 生成器的工作原理 样本之间的相似性 可以将标准正态分布映射成任意分布(解码器)g:z z x生成x生成器模型N(0,1)抽样特征z z P(X)=P(X)?8.4 生成对抗网络GAN 生成器的工作原理 让生成器模型生成指定分布的样本 给定某个真实概率分布 ,希望设计一个映射函数 使得生成样本服从这个真实分布,即:=(解码器)g:z z x生成x生成器模型N(0,1)抽样特征z z P(X)=P(X)?(解码器)g:z z x生成x生成网络N(0,1)抽样特征z z
45、 P(X)=P(X)?鉴定y:0/1?阚道宏8.4 生成对抗网络GAN 生成对抗网络 训练(解码器)g:z z x生成x生成网络N(0,1)抽样特征z z鉴定y:0/1?(分类器)x P(x)x P(x)0真实x1输出y=P(x)y=P(x)P(X)P(X)判别网络阚道宏8.4 生成对抗网络GAN 生成对抗网络 训练 损失函数(即学习策略)判别网络的损失函数 生成网络的损失函数(解码器)g:z z x生成x生成网络N(0,1)抽样特征z z鉴定y:0/1?(分类器)x P(x)x P(x)0真实x1输出y=P(x)y=P(x)P(X)P(X)判别网络8.4 生成对抗网络GAN 生成对抗网络 训
46、练 损失函数(即学习策略)判别网络的损失函数 生成网络的损失函数(解码器)g:z z x生成x生成网络N(0,1)抽样特征z z鉴定y:0/1?(分类器)x P(x)x P(x)0真实x1输出y=P(x)y=P(x)P(X)P(X)判别网络阚道宏8.4 生成对抗网络GAN DCGAN及其编程实战阚道宏8.4 生成对抗网络GAN DCGAN及其编程实战阚道宏8.4 生成对抗网络GAN DCGAN及其编程实战 生成网络阚道宏8.4 生成对抗网络GAN DCGAN及其编程实战 生成网络 判别网络阚道宏8.4 生成对抗网络GAN DCGAN及其编程实战 生成网络 判别网络 定义DCGAN阚道宏8.4
47、生成对抗网络GAN DCGAN及其编程实战 生成网络 判别网络 定义DCGAN 搭建网络 加载数据集 训练阚道宏8.4 生成对抗网络GAN DCGAN及其编程实战 生成网络 判别网络 定义DCGAN 搭建网络 加载数据集 训练 测试阚道宏8.4 生成对抗网络GAN WGAN及其编程实战 对于单个训练样本,,如果通过判别网络后的输出概率为 ,则其二分类交叉熵被定义为=ln +1 ln 1 =ln ,=1ln 1 ,=0.8.4 生成对抗网络GAN WGAN及其编程实战 Wesserstein距离阚道宏8.4 生成对抗网络GAN WGAN及其编程实战 Wesserstein距离8.4 生成对抗网络
48、GAN WGAN及其编程实战 Wesserstein距离 WGAN在网络结构上与普通生成对抗网络没有什么区别,最主要的区别是损失函数 WGAN的学习策略是最小化生成样本输出概率P(X)与真实样本输出概率P(X)之间的Wesserstein距离 判别网络、生成网络的损失函数8.4 生成对抗网络GAN WGAN及其编程实战 Wesserstein距离 WGAN在网络结构上与普通生成对抗网络没有什么区别,最主要的区别是损失函数 WGAN的学习策略是最小化生成样本输出概率P(X)与真实样本输出概率P(X)之间的Wesserstein距离 判别网络、生成网络的损失函数 WGAN编程实战阚道宏8.4 生成对抗网络GAN WGAN及其编程实战 Wesserstein距离 WGAN在网络结构上与普通生成对抗网络没有什么区别,最主要的区别是损失函数 WGAN的学习策略是最小化生成样本输出概率P(X)与真实样本输出概率P(X)之间的Wesserstein距离 判别网络、生成网络的损失函数 WGAN编程实战第8章 深度学习 本章学习要点 滤波与卷积运算、局部连接与权值共享、池化、LeNet-5卷积神经网络 词向量、RNN神经元与RNN网络层、LSTM神经元与LSTM网络层 自编码器与变分自编码器、KL散度、变分法与变分推断 生成对抗网络、DCGAN、WGAN与Wesserstein距离