1、机器 学习及 其Python 实践第8 章 深度学习第8 章 深度 学习 深度学习是通过增加 隐层数量,让神经网络产生由量变到质变的效果。如果隐层达到一定数量(例如八、九层),则神经网络就可称作是深度学习模型 增加隐层数量会引发一些新的问题,例如增加隐层数可能引起 梯度爆炸或梯度消失、或因模型学习能力过强而产生 过拟合 等问题,第7章对此已做过详细讲解并给出了具体解决办法 除增加隐层数量之外,深度学习还会针对不同应用需求对 网络结构 做适当调整,例如采用非全连接层以减少参数个数、引入环或回路等非前馈式结构以处理序列数据等 2006 年,G.Hinton 首先提出了深度学习(deep learn
2、ing)概念,自此各种深度学习模型如雨后春笋般涌现出来。本章选择其中比较有代表性的几种模型进行讲解 卷积神经网络(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)信号 信号分析与处理的常规方法是:通过 傅里叶 变换将 时域或 空域信号
4、变换至 频域(frequency domain)进行分析,然后设计滤波器(filter)并通过滤波(filtering)对信号进行频域处理或提取信号的频域特征 随着计算机的发展,信号处理进入数 字化时 代。数字信号处理(Digital Signal Processing,缩写DSP)的方法通常是:通过频域分析设计出滤波器,然后将其转回时 域(或 空域),最终 在时域(或空域)中实现滤波或特征提取 等处理 功能 时域(或空域)中的信号处理指的是 直接对 原始数 字信号 进行处理,这么做的好处是可以省去信号 变换与 逆变换 的计算 过程8.1 卷积 神经网络CNN 频域的滤波运算在时域或空域将被转
5、换成一种等价运算,这就是 卷积运算;而滤波器则被转换成一种等价的算子,即 卷积核(convolution kernel)使用卷积核与原始数字信号进行卷积运算就相当于是滤波,不同卷积核能产生不同的滤波效果 平滑(smoothing)卷积核可以实现 低通(low-pass)滤波,得到低频特征 锐化(sharpening)卷积核则可以实现 高通(high-pass)滤波,得到高频特征阚道宏8.1 卷积 神经网络CNN 数字图像的频域特征 像素点的频域特征描述的是以该像素点为中心的一个局部小区域的区域特征 低频特征描述的是区域亮度水平(例如亮度均值,可通过加权求和求得)高频特征描述的则是区域亮度差异(
6、例如亮度 差 值,可通过加权求差求得)低频属于共性特征,高频属于差异性特征下采样下采样低频特征 原始图像 高频特征1 1 22 2 41 1 2-1-1-1-1-1 8-1-1-1平滑 卷积核(低通 滤波器)锐化 卷积核(高通 滤波器)卷积运 算(滤波)卷积运 算(滤 波)感受野(receptive field)8.1 卷积 神经网络CNN 将神经网络的隐层改造为 卷积层8.1 卷积 神经网络CNN 卷积的实现细节 局部连接与权值共享 填充(padding)步长(strides)卷积核(kernel)通道(channels)下采样(downsampling)与池化(pooling)8.1 卷积
7、 神经网络CNN 卷积的实现细节 局部连接与权值共享 全连接隐层 输入:输出:x1x6x5x4x3x2x7x9x8xm h1h5h4h3h2hm h6h7h9h8x1x6x5x4x3x2x7x9x8xm-h5h4h3h2-h6h7h9h8局 部 连 接(45,55,65)(1,2,3)全 连 接(15,25,.,m5),个权重参数 个权重参数8.1 卷积 神经网络CNN 卷积的实现细节 填充(padding)步长(strides)x1x6x5x4x3x2x7x9x8xm h1h5h4h3h2hm h6h7h9h8x1x6x5x4x3x2x7x9x8xm-h5h4h3h2-h6h7h9h8局 部
8、 连 接(45,55,65)(1,2,3)全 连 接(15,25,.,m5)x1x6x5x4x3x2x7x9x8xm h1h5h4h3h2hm h6h7h9h8validsame/padding0 0有效(valid)一致(same)x1x6x5x4x3x2x7x9x8xm h1h5h3 h7h90 0+2strides=28.1 卷积 神经网络CNN 卷积的实现细节 卷积核(kernel)通道(channels)x1x6x5x4x3x2x7x9x8xm h1h5h4h3h2hm h6h7h9h8x1x6x5x4x3x2x7x9x8xm-h5h4h3h2-h6h7h9h8局 部 连 接(45,
9、55,65)(1,2,3)全 连 接(15,25,.,m5)x1x6x5x4x3x2x7x9x8xm-h5h4h3-h6h7h9h8-kernel_size=5(1,2,3,4,5)r1g1b1-channels=3(r1,g1,b1),(r2,g2,b2),(r3,g3,b3)r2g2b2r3g3b3r4g4b4r5g5b5r6g6b6r7g7b7r8g8b8r9g9b9rmgmbm a2b2c2a3b3c3a4b4c4a5b5c5a6b6c6a7b7c7a8b8c8a9b9c9-h5h4h3h2-h6h7h9h8h5=a5+b5+c5感受野(receptive field)阚道宏8.1 卷
10、积 神经网络CNN 卷积的实现细节 下采样(downsampling)与池化(pooling)x1x6x5x4x3x2x7x9x8xm h1h5h4h3h2hm h6h7h9h80 0h1h5h3 h7h9kernel_size=3strides=1pool_size=2strides=28.1 卷积 神经网络CNN 卷积的实现细节 局部连接与权值共享 填充(padding)步长(strides)卷积核(kernel)通道(channels)下采样(downsampling)与池化(pooling)二 维卷积kernel_size=(3,3),或kernel_size=3hijxij8.1 卷
11、积 神经网络CNN 卷积神经网络的基本结构 卷积神经网络属于前馈式神经网络,主要由 卷积层 和全连接层 两种结构组成 卷积层被用作隐层(可继续细化成卷积、池化两部分);而输出层使用的则是全连接层 1998 年,Y.LeCun 等人设计了名为LeNet-5 的卷积神经网络8.1 卷积 神经网络CNN 卷积神经网络的基本结构 卷积神经网络属于前馈式神经网络,主要由 卷积层 和全连接层 两种结构组成 卷积层被用作隐层(可继续细化成卷积、池化两部分);而输出层使用的则是全连接层 1998 年,Y.LeCun 等人设计了名为LeNet-5 的卷积神经网络 2006 年,G.Hinton 提出了深度学习思
12、想阚道宏8.1 卷积 神经网络CNN 深度学习中的问题与创新 问题:梯度消失或梯度爆 炸、过 拟合、参数增 长过快等 创新 各种改进 的 反向传播 算 法、ReLU 激 活函数、批 次标准化、Dropout 等 各种抑制参数过快增长的方法,例如 权值共 享、卷 积核小型化、快捷连接(shortcut connection)或称跳跃连接(skip connection)等 提高算力的GPU(Graphics Processing Unit)并行计算方法等8.1 卷积 神经网络CNN LeNet-5 模型编程实战 TensorFlow 中的卷积函数tf.nn.conv2d()和 卷积层类keras
13、.layers.Conv2D 编程实现LeNet-5 卷积神 经网络,为MNIST 手写数 字数据集建立一个分类模型阚道宏8.1 卷积 神经网络CNN tf.nn.conv2d()和keras.layers.Conv2D8.1 卷积 神经网络CNN Python 中的拦截方法8.1 卷积 神经网络CNN LeNet-5 模型编程实战 加载数据集并进行预处理阚道宏8.1 卷积 神经网络CNN LeNet-5 模型编程实战 加载数据集并进行预处理 搭建LeNet-5 卷积神经网络阚道宏8.1 卷积 神经网络CNN LeNet-5 模型编程实战 加载数据集并进行预处理 搭建LeNet-5 卷积神经网
14、络 配置并训练模型8.1 卷积 神经网络CNN LeNet-5 模型编程实战 加载数据集并进行预处理 搭建LeNet-5 卷积 神经网 络 配置并训练模型 测试并评估模型8.2 循环 神经网络RNN 自然语言处理(Natural Language Processing,缩写NLP)是 机 器 学 习 的 一 个 重 要 研 究 方 向,它 所 处 理 的 主 要 是 序列数据 处 理 序 列 型 数 据 的 关 键 是 如 何 提 取 数 据 背 后 的 含 义,或称作语义(semantic)特征。语 义 特 征 真 正 反 映 了 序列数据的本质 循 环 神 经 网 络 主 要 用 于 处
15、理 序 列 型 数 据,例如语音识别(speech recognition)、机器翻译(machinetranslation)、文 本 情感分 析(text sentiment analysis)、行 情 预 测(market forecast)等,其 核 心 思 想 是 基 于 神经网络为序列型数据建立语义特征提 取模型8.2 循环 神经网络RNN 序列数据的语义特征 序列中每个数据都有自己独立的含义(这里 将其称作词义)序列数据中的词义会互相影响、互相 依赖,需根据上下文才能确定词义并最终形成 序列的 整体含义(这里将其称作 语义)“我吃苹果”与“我用苹果”8.2 循环 神经网络RNN 序
16、列数据的语义特征 语义特征的概率模型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)()8.2 循环 神经网络RNN 序列数据的语义特征 语义特征的映射模型“苹果”、“香蕉”、“芒果”、“樱桃”one-hot 编码和词向量(word feature vector)红 色圆形苹 果香 蕉芒 果樱 桃两个向量之间夹角的余弦 被称作这两个向量的 余弦相似度(cosine similarity)8.2 循环 神经网络RNN 序列
17、数据的语义特征 语义特征的映射模型“苹果”、“香蕉”、“芒果”、“樱桃”one-hot 编码和词向量(word feature vector)词汇 向量(word to vector)8.2 循环 神经网络RNN RNN 神经元与RNN 网络层8.2 循环 神经网络RNN RNN 神经元与RNN 网络层ht-1,1ht-1,2ht-1,qxt1xt2 xtdht1ht2htqht1ht2htq fxh+fhh=f:(xt,ht-1)htWxhWhhht-1htAxtht-1ht fhh xt fxh WhhWxh()()()RNN 神经元8.2 循环 神经网络RNN RNN 神经元与RNN 网
18、络层8.2 循环 神经网络RNN 将RNN 网络层作为神经网络 的隐层x1x2xNhNy1y2ynWxhWhhh0AWxhWhhAWxhWhh ARNN 层Dense 层Output 层Input 层x1x2xNhNv1v2vNy1y2ynWxhWhhh0AWxhWhhAWxhWhh AEmbedding 层RNN 层Dense 层Output 层Input 层x1x2xNhNv1v2vNyNWxhWhhh0AWxhWhhAWxhWhh A Embedding 层RNN 层Dense 层Output 层Input 层h2y2h1y18.2 循环 神经网络RNN RNN 模型编程实战 Keras
19、 高层接口 词嵌入层类keras.layers.Embedding 序列填充函数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.lay
20、ers.SimpleRNN 编程实现一个包含词嵌入层、RNN 网络 层的神经网络,为IMDB 影评数据集建立 一个情 感分类模型8.2 循环 神经网络RNN RNN 模型编程实战 编程实现一个包含词嵌入层、RNN 网络 层的神经网络,为IMDB 影评数据 集建立一个情 感分类模型阚道宏8.2 循环 神经网络RNN RNN 模型编程实战 编程实现一个包含词嵌入层、RNN 网络 层的神经网络,为IMDB 影评数据 集建立一个情 感分类模型8.2 循环 神经网络RNN LSTM 模型 短期记忆(short-term memory)长短期记 忆(Long Short-Term Memory,缩写LST
21、M),()阚道宏8.2 循环 神经网络RNN LSTM 模型阚道宏8.2 循环 神经网络RNN LSTM 模型阚道宏8.2 循环 神经网络RNN LSTM 模型()()()()阚道宏8.2 循环 神经网络RNN LSTM 模型编程实战 Keras 高层接口为LSTM 模型专门提供了一 个LSTM 网络层类 改用LSTM 来搭建影评数据情感分 类神经 网络8.3 自编 码器 其功能是对原始数据 进行 编码(encoding),然后再通过 解码(decoding)恢复出原始数据(或称作重建数据)自编码器在结构和原理上 与普通 神经网 络没有什么大的区别,但其 设计思 想非常 具有创新性8.3 自编
22、 码器 深入理解神经网络 神经网络模型通过 输入层接受外部输入的原始数据,然后经隐层、输出层做逐层处理,最终通过输出层向外输出结果 隐层的作用相当于是从 原始数据 中提取出特征,然后交由输出层进行预测(回归或分类)并输出预测结果 换句话说,神经网络模型实现了一个“原始数据 特征 预测结果”的映射过程(隐 层)特 征 模 型f:x z(输 出 层)预 测 模 型g:z y特 征z输 入x输 出y8.3 自编 码器 深入理解神经网络 神经网络是一种数学建模 新方法 只要有足够的隐层和神经元数量,神 经网络 模型就 能以任意精度逼近任意复杂的 函数 函数实际上是一种映射,例如从原始 数据 提 取特征
23、 就是一种映射或称作函数,可记作:;从特征 到预测结果 也是一种映射或函数,可记 作:。神经网络在本质上就是一种“映射”模型,并且能够 模拟任意复杂的映射 数学建模是研究客观世界的基本方法,其目的就是建立描述不同事物之间关系的数学模型 利用神经网络搭建一个“万能模型”,然后 利用样 本数据和学习算法对模型进行训练,这样 就能比 较容易 地建立起神经网络式的数学模型8.3 自编 码器 深入理解神经网络 将现有理论融入神经网络 神经网络建模具有一定的盲目性 在神经网络建模过程中引入已有的领域知识,这样就能在相关理论指导下开展模型设计工作,减少盲目性 充分融合现有理论是神经网络创新发展的一个重要方向
24、,它既能让神经网络如虎添翼,也能让现有理论焕发新的生机8.3 自编 码器 深入理解神经网络 神经网络模型具有良好的 适应性 和扩展 性 原始数据 特征 重建数据 的映射 编码解码 的过程,或压缩 解压 缩 过程,即 自 编 码器 编 码器(encoder),其 功能是从 原 始数据 中提 取特征;右边的被称作 解码器(decoder),其功能是 根据编码器输出的特征 重建数据(可能与原始数 据存在 误差)输 入 层 隐 层 输 出 层z1z2znx1x2xd隐 层 输 出 层x1x2xdh特 征z h原 始 数 据x重 建 数 据x8.3 自编 码器 自编码器及其编程实战使用Keras 高层接
25、口对自编码器进行编程实战,为MNIST 手写数字数据集搭建一个编码 解码模型8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 搭建神经网络模型时使用的是Keras 高层接口提供的堆叠式神经网络类Sequential,然后向其中添加网络层对象,例如Dense、Conv2D、SimpleRNN、LSTM等类的对象,最后再为模型配置损失函数、优化算法和评价指标 如果堆叠式神经网络类Sequential 不能满足特定的应用需求,这时就需要定义自己的神经网络类阚道宏8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 搭建神经网络模型时使用的是Keras 高层接口提供的堆
26、叠式神经网络类Sequential,然后向其中添加网络层对象,例如Dense、Conv2D、SimpleRNN、LSTM等类的对象,最后再为模型配置损失函数、优化算法和评价指标 如果堆叠式神经网络类Sequential 不能满足特定的应用需求,这时就需要定义自己的神经网络类阚道宏8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras 高层接口对自编码器进行编程实 战,为MNIST 手写数字数据集搭建一 个编码 解码模型8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras 高层接口对自编码器进行编程实 战,为MNIST 手写数字数据集搭建
27、一 个编码 解码模型阚道宏8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras 高层接口对自编码器进行编程实 战,为MNIST 手写数字数据集搭建一 个编码 解码模型8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras 高层接口对自编码器进行编程实 战,为MNIST 手写数字数据集搭建一 个编码 解码模型阚道宏8.3 自编 码器 自编码器及其编程实战 定义自己的神经网络模型类 使用Keras 高层接口对自编码器进行编程实 战,为MNIST 手写数字数据集搭建一 个编码 解码模型8.3 自编 码器 变分法与KL 散度 通过变分法建立概率
28、模型,然后基于概率分布重建数据,这就是变分自编码器(Variational AutoEncoder,缩写VAE)自编码器:原始数据 特征 重建数据 的映射 原始数据 是可以观测的随机变量(记作),而特征 则属于不可观测的随机变量(即隐变量,记作)观 测 变 量X P(X)隐 变 量Z P(Z)联 合 概 率 分 布P(X,Z)采 样 采 样P(X|Z)P(Z|X)观 测 样 本(x1,x2,.)隐 变 量 样 本(z1,z2,.)条 件 采 样 条 件 采 样8.3 自编 码器 变分法与KL 散度 KL 散度8.3 自编 码器 变分法与KL 散度 EM 算法观 测 变 量X P(X)隐 变 量
29、Z P(Z)联 合 概 率 分 布P(X,Z)采 样 采 样P(X|Z)P(Z|X)观 测 样 本(x1,x2,.)隐 变 量 样 本(z1,z2,.)条 件 采 样 条 件 采 样8.3 自编 码器 变分法与KL 散度 EM 算法 变分推断观 测 变 量X P(X)隐 变 量Z P(Z)联 合 概 率 分 布P(X,Z)采 样 采 样P(X|Z)P(Z|X)观 测 样 本(x1,x2,.)隐 变 量 样 本(z1,z2,.)条 件 采 样 条 件 采 样8.3 自编 码器 变分法与KL散度 EM 算法 变分推断 变分自编码器 数据重建的过程可看作是 一个依 概率分 布进行 抽样的过程:先根据
30、原始样本 估计特 征的概 率分布,即后验概率;然后依后验 概率 抽 样得到特征样本;最后再 依观 测概率 观测得 到重建样本 原 始 样 本x后 验 概 率P(Z|x)Q(Z|x;)参 数估 计特 征 样 本z抽 样P(Z|x)重 建 样 本x观 测P(X|z)8.3 自编 码器 变分法与KL散度 EM 算法 变分推断 变分自编码器 数据重建的过程可看作是 一个依 概率分 布进行 抽样的过程:先根据原始样本 估计特 征的概 率分布,即后验概率;然后依后验 概率 抽 样得到特征样本;最后再 依观 测概率 观测得 到重建样本 原 始 样 本x后 验 概 率P(Z|x)Q(Z|x;)参 数估 计特
31、征 样 本z抽 样P(Z|x)重 建 样 本x观 测P(X|z)8.3 自编 码器 变分自编码器 自编码器使用神经网络为数据重建实现了一个“原始数据 特征 重建数据”的映射模型。自编码器在设计时具有很强的盲 目性,其映射过程也没有可解释性 变分自编码器 则是通过变分法建立概率模型,然后基于概率分布重建数据。可以使 用神经 网络来实现变分自编码器,为数据重建 搭建一 个“变分自编码器神经网络”模型阚道宏8.3 自编 码器 变分自编码器 自编码器使用神经网络为数据重建实现了一个“原始数据 特征 重建数据”的映射模型。自编码器在设计时具有很强的盲 目性,其映射过程也没有可解释性 变分自编码器 则是通
32、过变分法建立概率模型,然后基于概率分布重建数据。可以使 用神经 网络来实现变分自编码器,为数据重建 搭建一 个“变分自编码器神经网络”模型原 始 样 本x后 验 概 率P(Z|x)Q(Z|x;)参 数估 计特 征 样 本z抽 样P(Z|x)重 建 样 本x观 测P(X|z)先 验 概 率P(Z)概 率 模 型:依 概 率 分 布 重 建 数 据(编 码 器)f:x z(解 码 器)g:z x输 入x输 出x特 征 样 本z抽 样P(Z)神 经 网 络 模 型先 验 概 率P(Z)抽 样P(Z)8.3 自编 码器 使用神经网络搭建变分自 编码器 模型 损失函数 采样函数阚道宏8.3 自编 码器
33、使用神经网络搭建变分自 编码器 模型 损失函数 采样函数8.3 自编 码器 使用神经网络搭建变分自 编码器 模型 损失函数()8.3 自编 码器 使用神经网络搭建变分自 编码器 模型 损失函数()8.3 自编 码器 使用神经网络搭建变分自 编码器 模型 损失函数()()8.3 自编 码器 使用神经网络搭建变分自 编码器 模型 损失函数 采样函数8.3 自编 码器 进一步理解概率分布的先 验与后 验阚道宏8.3 自编 码器 进一步理解概率分布的先 验与后 验原 始 样 本x后 验 概 率P(Z|x)Q(Z|x;)参 数估 计特 征 样 本z抽 样P(Z|x)重 建 样 本x观 测P(X|z)先
34、验 概 率P(Z)概 率 模 型:依 概 率 分 布 重 建 数 据(编 码 器)f:x z(解 码 器)g:z x输 入x输 出x特 征 样 本z抽 样P(Z)神 经 网 络 模 型先 验 概 率P(Z)抽 样P(Z)阚道宏8.3 自编 码器 进一步理解概率分布的先 验与后 验原 始 样 本x后 验 概 率P(Z|x)Q(Z|x;)参 数估 计特 征 样 本z抽 样P(Z|x)重 建 样 本x观 测P(X|z)先 验 概 率P(Z)概 率 模 型:依 概 率 分 布 重 建 数 据(编 码 器)f:x z(解 码 器)g:z x输 入x输 出x特 征 样 本z抽 样P(Z)神 经 网 络 模
35、 型先 验 概 率P(Z)抽 样P(Z)8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIST手写数字数据集搭 建一个 编码 解码 模型 变分自编码器神经网络模型在 程序代码结构 上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecoder、变分自 编码器 类VAE,然后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类VAE 的单 步
36、训练方法train_step()在计算损失函数时比较复杂8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIST手写数字数据集搭 建一个 编码 解码 模型 变分自编码器神经网络模型在 程序代码结构 上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecoder、变分自 编码器 类VAE,然后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类
37、VAE 的单 步训练方法train_step()在计算损失函数时比较复杂x1x2xd sampling()ln 2zy1y2ydd1d2d-meand-log-vard4d6 d5N(0,1)d3原始图像 正态分布参数 特征样本 重建图像.8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIST手写数字数据集搭 建一个 编码 解码 模型 变分自编码器神经网络模型在 程序代码结构 上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecod
38、er、变分自 编码器 类VAE,然后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类VAE 的单 步训练方法train_step()在计算损失函数时比较复杂x1x2xd sampling()ln 2zy1y2ydd1d2d-meand-log-vard4d6 d5N(0,1)d3原始图像 正态分布参数 特征样本 重建图像.阚道宏8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIS
39、T手写数字数据集搭 建一个 编码 解码 模型 变分自编码器神经网络模型在 程序代码结构 上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecoder、变分自 编码器 类VAE,然后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类VAE 的单 步训练方法train_step()在计算损失函数时比较复杂x1x2xd sampling()ln 2zy1y2ydd1d2d-meand-log-vard4d6 d5N(0,1)d3原始图像 正态分布参数 特征样
40、本 重建图像.阚道宏8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIST手写数字数据集搭 建一个 编码 解码 模型 变分自编码器神经网络模型在 程序代码结构上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecoder、变分自 编码器 类VAE,然后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类VAE 的单 步训练方法train_s
41、tep()在计算损失函数时比较复杂x1x2xd sampling()ln 2zy1y2ydd1d2d-meand-log-vard4d6 d5N(0,1)d3原始图像 正态分布参数 特征样本 重建图像.阚道宏8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIST手写数字数据集搭 建一个 编码 解码 模型 变分自编码器神经网络模型在 程序代码结构上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecoder、变分自 编码器 类VAE,然
42、后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类VAE 的单 步训练方法train_step()在计算损失函数时比较复杂x1x2xd sampling()ln 2zy1y2ydd1d2d-meand-log-vard4d6 d5N(0,1)d3原始图像 正态分布参数 特征样本 重建图像.阚道宏8.3 自编 码器 使用神经网络搭建变分自编码器模型 损失函数 采样函数 变分自编码器编程实战 使用Keras 高层接口进行变分自编码器 神经网络模型编程实战,为MNIST手写数字数据集搭 建一个 编码
43、解码 模型 变分自编码器神经网络模型在 程序代码结构上与自编码器基本相同,都是先自定义三个类,即变 分编码 器类VEncoder、变分解码器类VDecoder、变分自 编码器 类VAE,然后 定义对象搭建模型并对模型进行配置、训练 和测试 所不同的 是,变分自 编 码器需增 加 一个采样 函 数sampling();另外,变分自编码器类VAE 的单 步训练方法train_step()在计算损失函数时比较复杂x1x2xd sampling()ln 2zy1y2ydd1d2d-meand-log-vard4d6 d5N(0,1)d3原始图像 正态分布参数 特征样本 重建图像.8.4 生成 对抗网络
44、GAN 变分自编码器模型中的 解码器,任给标 准正态 分布 的 特征样 本,解码器就能生成一个与 手写数 字非常 相似的 图像 在未输入任何原始样本 的 情况下 却能输 出新样 本,这 时的解码器相当于是一种能自动生成 新样本 的生成 模型,因此它 被改称 为 生成 器(generator)模型 生成器模型需要先通过学 习算法 对原始 样本 进 行学习,然后 才能自动生成新样本,这相当于 是在学 习的基 础上进 行再 创作(解 码 器)g:z x生 成x生 成 器 模 型N(0,1)抽 样特 征z P(X)=P(X)?8.4 生成 对抗网络GAN 生成器的工作原理 生成器生成的新样本 与原 始
45、样本 之间存 在什么样的联系?生成器如何通过神经网络 来生成 新样本(现将 其改称为生 成样本)?有时 也将生 成样本 称作 伪造(fake)样本,将原 始样本 称作 真实(real)样本(解 码 器)g:z x生 成x生 成 器 模 型N(0,1)抽 样特 征z P(X)=P(X)?8.4 生成 对抗网络GAN 生成器的工作原理 样本之间的相似性 可以将标准正态分布映射成任意分布(解 码 器)g:z x生 成x生 成 器 模 型N(0,1)抽 样特 征z P(X)=P(X)?8.4 生成 对抗网络GAN 生成器的工作原理 样本之间的相似性 可以将标准正态分布映射成任意分布(解 码 器)g:z
46、 x生 成x生 成 器 模 型N(0,1)抽 样特 征z P(X)=P(X)?8.4 生成 对抗网络GAN 生成器的工作原理 让生成器模型生成指定分布的样本 给定某个真实概率分布,希望设计一 个映射函数 使得生成样本服从这个真实分 布,即:(解 码 器)g:z x生 成x生 成 器 模 型N(0,1)抽 样特 征z P(X)=P(X)?(解 码 器)g:z x生 成x生 成 网 络N(0,1)抽 样特 征z P(X)=P(X)?鉴 定y:0/1?阚道宏8.4 生成 对抗网络GAN 生成对抗网络 训练(解 码 器)g:z x生 成x生 成 网 络N(0,1)抽 样特 征z鉴 定y:0/1?(分
47、类 器)x P(x)x P(x)0真 实x1输 出y=P(x)y=P(x)P(X)P(X)判 别 网 络阚道宏8.4 生成 对抗网络GAN 生成对抗网络 训练 损失函数(即学习策略)判别网络的损失函数 生成网络的损失函数(解 码 器)g:z x生 成x生 成 网 络N(0,1)抽 样特 征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 x生 成x生 成 网 络N(0,1)抽 样特 征
48、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 生成 对抗网络GAN DCGAN 及其编程实战 生成网络 判别网络 定义DCGAN 搭建网
49、络 加载数据集 训练阚道宏8.4 生成 对抗网络GAN DCGAN 及其编程实战 生成网络 判别网络 定义DCGAN 搭建网络 加载数据集 训练 测试阚道宏8.4 生成 对抗网络GAN WGAN 及其编程实战 对 于 单 个 训 练 样 本,如 果 通 过 判 别 网 络 后 的输出概率为,则其二分类 交叉熵 被定义 为,8.4 生成 对抗网络GAN WGAN 及其编程实战 Wesserstein 距离阚道宏8.4 生成 对抗网络GAN WGAN 及其编程实战 Wesserstein 距离8.4 生成 对抗网络GAN WGAN 及其编程实战 Wesserstein 距离 WGAN 在网络 结构
50、上 与普通 生成对 抗网络 没有什 么区别,最主要的区别是 损失函数 WGAN 的学习 策略是 最小化 生成样 本输出 概率P(X)与真实样本输出概率P(X)之间的Wesserstein 距离 判别网络、生成网络的 损 失函数8.4 生成 对抗网络GAN WGAN 及其编程实战 Wesserstein 距离 WGAN 在网络结构上与普通生成对抗网络没有什么区别,最主要的区别是 损失函数 WGAN 的学习策略是最小化生成样本输出概率P(X)与真实样本输出概率P(X)之间的Wesserstein 距离 判别网络、生成网络的 损失函数 WGAN 编程实战阚道宏8.4 生成 对抗网络GAN WGAN