#### 2.1.4生成对抗网络
生成性对抗网络(GAN)是利用多层体系结构强大的代表性功能的相对较新的模型。 GAN最初是在2014年推出的[57]虽然它们本身没有提出不同的架构(_即_。例如,在新型网络构建模块方面),它们具有一些特殊性,这使得它们略有不同不同类型的多层架构。 GAN响应的一个关键挑战是采用无监督的学习方法,不需要标记数据。
典型的GAN由两个竞争块或子网组成,如图2.7所示;发生器网络![](https://img.kancloud.cn/d8/26/d8269b24182ee5a22641d376c5993358_60x20.gif)和鉴别器网络![](https://img.kancloud.cn/84/b5/84b5516c36ee52c8dfdbc6bb75460b8d_63x18.gif),其中![](https://img.kancloud.cn/7f/05/7f05ba32c44427a0a85b373fd193bb05_9x8.gif)是输入随机噪声,![](https://img.kancloud.cn/3c/1a/3c1a60edb621d9a7b223a34d87cdef02_11x10.gif)是实际输入数据(_,例如_。图像)和![](https://img.kancloud.cn/19/b5/19b5edfbfd190edb57cd97dc6e381191_15x18.gif)和![](https://img.kancloud.cn/2e/e2/2ee237c15e5041876276ffbf6a747ece_15x15.gif)分别是两个块的参数。每个块可以由任何先前定义的多层体系结构构成。在原始论文中,发生器和鉴别器都是多层全连接网络。鉴别器![](https://img.kancloud.cn/26/61/2661c2f73236ce62700299f2115fb4d9_15x12.gif)被训练为识别来自发生器的数据并且以概率![](https://img.kancloud.cn/ae/6d/ae6d7dcb015d3d9a4878611695b4d0c8_17x12.gif)分配标签“假”,同时以概率![](https://img.kancloud.cn/53/f4/53f4a2336db9f462081fd46690604bc5_46x16.gif)将标签“真实”分配给真实输入数据。作为补充,生成器网络被优化以生成能够欺骗鉴别器的伪表示。这两个块在几个步骤中交替训练,其中训练过程的理想结果是鉴别器,其将![](https://img.kancloud.cn/c3/b5/c3b5904fc03536dbc796c74b06060961_32x15.gif)的概率分配给真实和伪造数据。换句话说,在收敛之后,生成器应该能够从随机输入生成实际数据。
![](https://img.kancloud.cn/de/9c/de9c8426d92e4f010cdb6a88af05cf15_333x246.png)
图2.7:通用生成性对抗网络(GAN)结构的图示。
自原始论文以来,许多贡献都参与了通过使用更强大的多层架构作为网络的主干来增强GAN的能力[114](_,例如_。用于鉴别器和反卷积网络的预训练卷积网络,学习发电机的上采样滤波器。 GAN的一些成功应用包括:文本到图像合成(其中网络的输入是要渲染的图像的文本描述[115]),图像超分辨率,其中GAN从较低的生成逼真的高分辨率图像分辨率输入[94],图像修复GAN的作用是从输入图像填充缺失信息的孔[149]和纹理合成,其中GAN用于从输入噪声合成真实纹理[10]。
#### 2.1.5多层网络培训
如前几节所述,各种多层架构的成功在很大程度上取决于其学习过程的成功与否。虽然神经网络通常首先依赖于无监督的预训练步骤,如2.1.1节所述,但它们通常遵循最广泛使用的多层架构训练策略,这是完全监督的。训练过程通常基于使用梯度下降的误差反向传播。梯度下降因其简单性而广泛用于训练多层架构。它依赖于最小化平滑误差函数![](https://img.kancloud.cn/97/8f/978fb38532842fa6b79cc8ee2e428939_43x18.gif),遵循定义为的迭代过程
![](https://img.kancloud.cn/18/66/18660be3990b6d3ca1d0177cf847d387_127x24.gif)(2.11)
其中![](https://img.kancloud.cn/86/7a/867a12bcaa0b2c9327f095d6ccd1bfa7_15x9.gif)表示网络参数,![](https://img.kancloud.cn/38/9a/389a9983ea24ad0b3af0559c2aca381b_11x8.gif)是可以控制收敛速度的学习速率,![](https://img.kancloud.cn/a4/5d/a45d23410b59160d6955eb918252e2da_53x40.gif)是在训练集上计算的误差梯度。这种简单的梯度下降方法特别适用于训练多层网络,这要归功于使用链规则进行反向传播并计算相对于不同层的各种网络参数的误差导数。虽然反向传播可追溯到多年[16,146],但它在多层架构的背景下得到了普及[125]。在实践中,使用随机梯度下降[2],其包括从连续的相对小的子集中近似整个训练集上的误差梯度。
梯度下降算法的主要问题之一是学习率![](https://img.kancloud.cn/38/9a/389a9983ea24ad0b3af0559c2aca381b_11x8.gif)的选择。学习率太小会导致收敛缓慢,而较大的学习率会导致围绕最佳状态的过冲或波动。因此,提出了几种方法来进一步改进简单的随机梯度下降优化方法。最简单的方法,称为随机梯度下降与动量[137],跟踪从一次迭代到另一次迭代的更新量,并通过进一步推动更新,如果梯度从一个方向指向同一方向,进一步推动学习过程时间步骤到另一个定义,
![](https://img.kancloud.cn/18/66/18660be3990b6d3ca1d0177cf847d387_127x24.gif)(2.12)
用![](https://img.kancloud.cn/8c/8b/8c8b9dbbd1e6b0fac772d9589e2d0ca2_10x12.jpg)控制动量。另一种简单的方法涉及根据固定的时间表以递减的方式设置学习速率,但这远非理想,因为该时间表必须在训练过程之前预先设定并且完全独立于数据。其他更复杂的方法(_,例如_ .Adagrad [34],Adadelta [152],Adam [86])建议通过执行较小的更新,在训练期间调整学习率到每个参数![](https://img.kancloud.cn/49/4f/494f262c0ded99d8ddd368cee8ff26d6_17x11.jpg)。频繁变化的参数和不常见的更新。这些算法的不同版本之间的详细比较可以在其他地方找到[124]。
使用梯度下降及其变体进行训练的主要缺点是需要大量标记数据。解决这一困难的一种方法是采用无监督学习。用于训练一些浅层ConvNet架构的流行的无监督方法基于预测稀疏分解(PSD)方法[85]。 Predictive Sparse Decomposition学习一组过度完整的滤波器,其组合可用于重建图像。该方法特别适用于学习卷积体系结构的参数,因为该算法被设计用于学习以补丁方式重建图像的基函数。具体地,预测稀疏分解(PSD)建立在稀疏编码算法的基础上,该算法试图通过与基组B的线性组合来找到输入信号X的有效表示Y.形式上,稀疏编码的问题广泛地存在。制定为最小化问题,定义为,
![](https://img.kancloud.cn/71/d0/71d0144f09e6cd32a31f88f4179d13a6_209x21.gif)(2.13)
PSD通过最小化定义为的重构误差,在卷积框架中调整稀疏编码的思想,
![](https://img.kancloud.cn/08/e9/08e9f16aeab818cd9ed56dc64a71c4d0_490x21.gif)(2.14)
其中![](https://img.kancloud.cn/af/68/af68991085075f1aa71a1c2e6cdbf021_281x18.gif)和![](https://img.kancloud.cn/98/2b/982ba703f70cd3d04aa174ca0d31e9ac_19x12.gif),![](https://img.kancloud.cn/26/61/2661c2f73236ce62700299f2115fb4d9_15x12.gif)和![](https://img.kancloud.cn/33/8e/338ec0451e1b4b7e7decd0b4443a8828_14x12.gif)分别是网络的权重,偏差和增益(或归一化因子)。通过最小化方程2.14中定义的损失函数,算法学习表示![](https://img.kancloud.cn/11/0b/110b4406a2b7b64282c80e0d43398d01_14x12.jpg),重建输入补丁![](https://img.kancloud.cn/89/38/8938f7479ea72465602bb25b05952684_16x12.gif),同时类似于预测表示![](https://img.kancloud.cn/01/aa/01aa158fc8bc3d7f7f3b2807df8b4a5e_14x12.gif)。由于等式的第二项,学习的表示也将是稀疏的。在实践中,误差在两个交替步骤中被最小化,其中参数![](https://img.kancloud.cn/49/d4/49d4bbe8be1a84d6d5956f57efd64751_97x18.gif)是固定的并且在![](https://img.kancloud.cn/11/0b/110b4406a2b7b64282c80e0d43398d01_14x12.jpg)上执行最小化。然后,表示![](https://img.kancloud.cn/11/0b/110b4406a2b7b64282c80e0d43398d01_14x12.jpg)被固定,同时最小化其他参数。值得注意的是,PSD以补片程序应用,其中每组参数![](https://img.kancloud.cn/39/b2/39b2ccbd064f8e3241bb0dfae4f2a4c4_74x18.gif)是从输入图像重建不同的补丁中学习的。换句话说,通过将重建聚焦在输入图像的不同部分上来学习不同的内核集。
#### 2.1.6关于转学的一个词
培训多层体系结构的一个意想不到的好处是学习特征在不同数据集甚至不同任务中的令人惊讶的适应性。例子包括使用ImageNet训练的网络识别:其他物体识别数据集,如Caltech-101 [38](_,例如_。[96,154]),其他识别任务,如纹理识别(_例如_。[25]),其他应用,如物体检测(_,例如_。[53])甚至基于视频的任务,如视频动作识别(_,例如_)。 [134,41,144])。
使用多层体系结构在不同数据集和任务中提取的特征的适应性可以归因于它们的层次性,其中表示从简单和局部到抽象和全局。因此,在层次结构的较低层提取的特征往往在不同的任务中是共同的,从而使多层架构更适合于转移学习。
对不同网络和任务中特征的有趣可转移性进行系统探索,揭示了考虑转移学习时需要考虑的几个良好实践[150]。首先,它表明仅微调更高层,与微调整个网络相比,系统性能更好。其次,这项研究表明,任务越多,转移学习效率就越低。第三,更令人惊讶的是,人们发现,即使经过微调,网络在初始任务下的表现也不会受到特别的阻碍。
最近,一些新兴的努力试图通过将学习问题作为连续的两步程序,_,例如_ [3,127]来强制执行网络“转移学习能力。首先,所谓的快速学习步骤如通常所做的那样,在网络针对特定任务进行优化的情况下执行。其次,在全局学习步骤中进一步更新网络参数,该步骤尝试最小化不同任务之间的错误。
### 2.2空间卷积网络
理论上,卷积网络可以应用于任意维度的数据。它们的二维实例非常适合于单个图像的结构,因此在计算机视觉中受到了相当大的关注。随着大规模数据集和功能强大的计算机的可用性,视觉界最近看到ConvNets在各种应用中的使用激增。本节介绍最突出的2D ConvNet架构,它将相对新颖的组件引入2.1.3节中描述的原始LeNet。
- TensorFlow 1.x 深度学习秘籍
- 零、前言
- 一、TensorFlow 简介
- 二、回归
- 三、神经网络:感知器
- 四、卷积神经网络
- 五、高级卷积神经网络
- 六、循环神经网络
- 七、无监督学习
- 八、自编码器
- 九、强化学习
- 十、移动计算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度学习
- 十三、AutoML 和学习如何学习(元学习)
- 十四、TensorFlow 处理单元
- 使用 TensorFlow 构建机器学习项目中文版
- 一、探索和转换数据
- 二、聚类
- 三、线性回归
- 四、逻辑回归
- 五、简单的前馈神经网络
- 六、卷积神经网络
- 七、循环神经网络和 LSTM
- 八、深度神经网络
- 九、大规模运行模型 -- GPU 和服务
- 十、库安装和其他提示
- TensorFlow 深度学习中文第二版
- 一、人工神经网络
- 二、TensorFlow v1.6 的新功能是什么?
- 三、实现前馈神经网络
- 四、CNN 实战
- 五、使用 TensorFlow 实现自编码器
- 六、RNN 和梯度消失或爆炸问题
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用协同过滤的电影推荐
- 十、OpenAI Gym
- TensorFlow 深度学习实战指南中文版
- 一、入门
- 二、深度神经网络
- 三、卷积神经网络
- 四、循环神经网络介绍
- 五、总结
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高级库
- 三、Keras 101
- 四、TensorFlow 中的经典机器学习
- 五、TensorFlow 和 Keras 中的神经网络和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于时间序列数据的 RNN
- 八、TensorFlow 和 Keras 中的用于文本数据的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自编码器
- 十一、TF 服务:生产中的 TensorFlow 模型
- 十二、迁移学习和预训练模型
- 十三、深度强化学习
- 十四、生成对抗网络
- 十五、TensorFlow 集群的分布式模型
- 十六、移动和嵌入式平台上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、调试 TensorFlow 模型
- 十九、张量处理单元
- TensorFlow 机器学习秘籍中文第二版
- 一、TensorFlow 入门
- 二、TensorFlow 的方式
- 三、线性回归
- 四、支持向量机
- 五、最近邻方法
- 六、神经网络
- 七、自然语言处理
- 八、卷积神经网络
- 九、循环神经网络
- 十、将 TensorFlow 投入生产
- 十一、更多 TensorFlow
- 与 TensorFlow 的初次接触
- 前言
- 1. TensorFlow 基础知识
- 2. TensorFlow 中的线性回归
- 3. TensorFlow 中的聚类
- 4. TensorFlow 中的单层神经网络
- 5. TensorFlow 中的多层神经网络
- 6. 并行
- 后记
- TensorFlow 学习指南
- 一、基础
- 二、线性模型
- 三、学习
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 构建简单的神经网络
- 二、在 Eager 模式中使用指标
- 三、如何保存和恢复训练模型
- 四、文本序列到 TFRecords
- 五、如何将原始图片数据转换为 TFRecords
- 六、如何使用 TensorFlow Eager 从 TFRecords 批量读取数据
- 七、使用 TensorFlow Eager 构建用于情感识别的卷积神经网络(CNN)
- 八、用于 TensorFlow Eager 序列分类的动态循坏神经网络
- 九、用于 TensorFlow Eager 时间序列回归的递归神经网络
- TensorFlow 高效编程
- 图嵌入综述:问题,技术与应用
- 一、引言
- 三、图嵌入的问题设定
- 四、图嵌入技术
- 基于边重构的优化问题
- 应用
- 基于深度学习的推荐系统:综述和新视角
- 引言
- 基于深度学习的推荐:最先进的技术
- 基于卷积神经网络的推荐
- 关于卷积神经网络我们理解了什么
- 第1章概论
- 第2章多层网络
- 2.1.4生成对抗网络
- 2.2.1最近ConvNets演变中的关键架构
- 2.2.2走向ConvNet不变性
- 2.3时空卷积网络
- 第3章了解ConvNets构建块
- 3.2整改
- 3.3规范化
- 3.4汇集
- 第四章现状
- 4.2打开问题
- 参考
- 机器学习超级复习笔记
- Python 迁移学习实用指南
- 零、前言
- 一、机器学习基础
- 二、深度学习基础
- 三、了解深度学习架构
- 四、迁移学习基础
- 五、释放迁移学习的力量
- 六、图像识别与分类
- 七、文本文件分类
- 八、音频事件识别与分类
- 九、DeepDream
- 十、自动图像字幕生成器
- 十一、图像着色
- 面向计算机视觉的深度学习
- 零、前言
- 一、入门
- 二、图像分类
- 三、图像检索
- 四、对象检测
- 五、语义分割
- 六、相似性学习
- 七、图像字幕
- 八、生成模型
- 九、视频分类
- 十、部署
- 深度学习快速参考
- 零、前言
- 一、深度学习的基础
- 二、使用深度学习解决回归问题
- 三、使用 TensorBoard 监控网络训练
- 四、使用深度学习解决二分类问题
- 五、使用 Keras 解决多分类问题
- 六、超参数优化
- 七、从头开始训练 CNN
- 八、将预训练的 CNN 用于迁移学习
- 九、从头开始训练 RNN
- 十、使用词嵌入从头开始训练 LSTM
- 十一、训练 Seq2Seq 模型
- 十二、深度强化学习
- 十三、生成对抗网络
- TensorFlow 2.0 快速入门指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 简介
- 一、TensorFlow 2 简介
- 二、Keras:TensorFlow 2 的高级 API
- 三、TensorFlow 2 和 ANN 技术
- 第 2 部分:TensorFlow 2.00 Alpha 中的监督和无监督学习
- 四、TensorFlow 2 和监督机器学习
- 五、TensorFlow 2 和无监督学习
- 第 3 部分:TensorFlow 2.00 Alpha 的神经网络应用
- 六、使用 TensorFlow 2 识别图像
- 七、TensorFlow 2 和神经风格迁移
- 八、TensorFlow 2 和循环神经网络
- 九、TensorFlow 估计器和 TensorFlow HUB
- 十、从 tf1.12 转换为 tf2
- TensorFlow 入门
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 数学运算
- 三、机器学习入门
- 四、神经网络简介
- 五、深度学习
- 六、TensorFlow GPU 编程和服务
- TensorFlow 卷积神经网络实用指南
- 零、前言
- 一、TensorFlow 的设置和介绍
- 二、深度学习和卷积神经网络
- 三、TensorFlow 中的图像分类
- 四、目标检测与分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自编码器,变分自编码器和生成对抗网络
- 七、迁移学习
- 八、机器学习最佳实践和故障排除
- 九、大规模训练
- 十、参考文献