1 散度在无监督学习中的应用

在神经网络的损失计算中,最大化和最小化两个数据分布间散度的方法,已经成为无监督模型中有效的训练方法之一。

在无监督模型训练中,不但可以使用K散度JS散度,而且可以使用其他度量分布的方法。f-GAN将度量分布的做法总结起来并找出了其中的规律,使用统一的f散度实现了基于度量分布的方法实现基于度量分布方法训练GAN模型的通用框架。

1.1 f-GAN简述

f-GAN是是一套训练GAN的框架总结,它不是具体的GAN方法,它可以在GAN的训练中很容易实现各种散度的应用,即f-GAN是一个生产GAN模型的“工厂”。

它所生产的GAN模型都有一个共同特点:不进行任何先验假设,对要生成的样本分布使用最小化差异的度量方法,尝试解决一般性的数据样本生成问题(常用于无监督训练)。

1.2 基于f散度的变分散度最小化方法(Variational Divergence Minimization,VDM)

变分散度最小化方法是指通过最小化两个数据分布间的变分距离来训练模型中参数,这是f-GAN所使用的通用方法。在f-GAN中,数据分布间的距离使用f散度来度量。

1.2.1 变分散度最小化方法的适用范围

WGAN模型的训练方法、分自编码的训练方法也属于VDM方法。所有符合f-GAN框架的GAN模型都可以使用VDM方法进行训练。VDM方法适用于GAN模型的训练。

1.2.1 f散度

给定两个分布P、Q,p(x)和q(x)分别是x对应的概率函数,则f散度可以表示为;

f散度相当于一个散度“工厂”,在使用它之前必须为式中的生成函数f(x)指定具体内容。f散度会根据生成函数f(x)对应的具体内容,生成指定的度量算法。

2 用Fenchel共轭函数实现f-GAN

2.1 .Fenchel共轭函数的定义(Fenchel conjugate)

Fenchel共轭/凸共轭函数,是指对于每个凸函数且满足下半连续的f(x),都有一个共轭函数f*的定义为:

式中的f*(t)是关于t的函数,其中t是变量;dom(f)为f(x)的定义域;max即求当横坐标取t时,纵坐标在多条表达式为{xt-f(x)}的直线中取最大那条直线上所对应的点,如图所示。

2.2 Fenchel共扼函数的特性

图8-23中有1条粗线和若干条细直线,这些细直线是由随机采样的几个x值所生成的f(x),粗线是生成函数的共轭函数f*。图8-23中的生成函数是f(x)=|x-1|÷2,该函数对应的算法是总变分(Total Variation,TV)算法。TV算法常用于对图像的去噪和复原。

2.3 将Fenchel共轭函数运用到f散度中

2.4 用f-GAN生成各种GAN

将图8-22中的具体算法代入到式(8-40)中,便可以得到对应的GAN。有趣的是,对于通过f-GAN计算出来的GAN,可以找到好多已知的GAN模型。这种通过规律的视角来反向看待个体的模型,会使我们对GAN的理解更加透彻。举例如下:

2.5 f-GAN中判别器的激活函数

3 互信息神经估计

互信息神经估计(Mutual Information Neural Estimation,MlNE)是一种基于神经网络估计互信息的方法。它通过BP算法进行训练,对高维度的连续随机变量间的互信息进行估计,可以最大化或者最小化互信息,提升生成模型的对抗训练,突破监督学习分类任务的瓶颈。(参见的论文编号为arX:1801.04062,2018)

3.1 将互信息转化为KL散度

在前面介绍过互信息的公式。它可以表示为两个随机变量XY的边缘分布的乘积相对行太、Y联合概率分布的相对熵,即

这表明E信息可以通过求KL散度的方法进行计算。

3.2 KL散度的两种对偶表示

KL散度具有不对称性,可以将其转化为具有对偶性的表示方式进行计算,基于散度的对偶表示公式有两种。

其中dual f-divergence表示相对于Donsker-Varadhan表示有更低的下界,会导致估计结果更加宽松和不准确。因此,一般使用Donsker-Varadhan表示。

3.3 神经网络中的KL散度的应用

4 稳定训练GAN的经验与技巧

4.1 GAN训练失败的分类

GAN模型的训练是神经网络中公认的难题。对于众多训练失败的情况,主要分为两情况:模式丢弃(mode dropping)和模式崩塌(mode collapsing)

  • 模式丢弃是指模型生成的模拟样本中,缺乏多样性的问题,即生成的模拟数据是原始数摆集中的一个子集。刚如,MNST数据分布一共有10个分类,而生成器所生成的模拟数据只有其中某个数字。
  • 模式崩塌:生成器所生成的模拟样本非常模湖,质量很低。

4.2 GAN训练技巧

4.2.1 降低学习率

通常,当使用更大的批次训练横型时,可以设置更高的学习率。但是,当模型发生模式透弃情况时,可以尝试降低模型的学习率,并从头开始训练。

4.2.2 标签平滑

标签平滑可以有效地改善训练中模式崩塌的情况。这种方法也非常容易理解和实现,如奥真实图像的标签设置为1,就将它改成一个低一点的值(如0.9)。这个解决方案阻止判别器过于相信分类标签,即不依赖非常有限的一组特征来判断图像是真还是假。

4.2.3 多尺度梯度

这种技术常用于生成较大(1024像素×1024像素)的模拟图像。该方法的处理方式与传统的用于语义分割的U-Net类似。模型更关注的是多尺度梯度,将真实图片通过下采样方式获得的多尺度图片与生成器的多跳连接部分输出的多尺度向量一起送入判别器,形成MSG-GAN架构。(参见的论文编号为arXv:1903.06048,2019)

4.2.4 更换损失函数

在f-GAN系列的训练方法中,由于散度的度量不同,导致训练不稳定性问题的存在。在这种情况下,可以在模型中使用不同的度量方法作为损失函数,找到更适合的解决方法。

4.2.5 借助互信息估计方法

在训练模型时,还可以使用MNE方法来辅助模型训练。

MINE方法是一个通用的训练方法,可以用于各种模型(自编码神经网络、对抗神经网络)。在GAN的训练过程中,使用MINE方法辅助训练模型会有更好的表现,如图8-27所示。

图8-27左侧是GAN模型生成的结果;右侧是使用MINE辅助训练后的生成结果。可以看到,图中右侧的模拟数据(黄色的点)所覆盖的空间与原始数据(蓝色的点)更一致。

4.3 MINE方法概述

MINE方法中主要使用了两种技术:互信息转为神经网络模型技术和使用对偶KL散度计算损失技术。最有价值的是这两种技术的思想,利用互信息转为神经网络模型技术,可应用到更多的提示结构中,同时损失函数也可以根据具体的任务而使用不同的分布度量算法。【详见下一节实战】

【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧相关推荐

  1. 【Pytorch神经网络理论篇】 20 神经网络中的注意力机制

    注意力机制可以使神经网络忽略不重要的特征向量,而重点计算有用的特征向量.在抛去无用特征对拟合结果于扰的同时,又提升了运算速度. 1 注意力机制 所谓Attention机制,便是聚焦于局部信息的机制,比 ...

  2. 【Pytorch神经网络理论篇】 23 对抗神经网络:概述流程 + WGAN模型 + WGAN-gp模型 + 条件GAN + WGAN-div + W散度

    1 对抗神经简介 1.1 对抗神经网络的基本组成 1.1.1 基本构成 对抗神经网络(即生成式对抗网络,GAN)一般由两个模型组成: 生成器模型(generator):用于合成与真实样本相差无几的模拟 ...

  3. 【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵

    图神经网络(Graph Neural Network,GNN)是一类能够从图结构数据中学习特征规律的神经网络,是解决图结构数据(非欧氏空间数据)机器学习问题的最重要的技术. 1 图神经网络的基础知识 ...

  4. 【Pytorch神经网络理论篇】 22 自编码神经网络:概述+变分+条件变分自编码神经网络

    1 无监督学习模型的概述 在监督训练中,模型能根据预测结果与标签差值来计算损失,并向损失最小的方向进行收敛. 在无监督训练中,无法通过样本标签为模型权重指定收敛方向,这就要求模型必须有自我监督的功能. ...

  5. 【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度

    1 信息熵 熵 (Entropy),信息熵:常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据. 1.1 信息熵的性质 单调性,发生概率越高的事件,其 ...

  6. 【Pytorch神经网络理论篇】 19 循环神经网络训练语言模型:语言模型概述+NLP多项式概述

    1 语言模型 循环神经网络模型可以对序列片段进行学习,找到样本间的顺序特征.这个特性非常适合运用在语言处理方向. 1.1 语言模型简介 语言模型包括文法语言模型和统计语言模型,一般指统计语言模型. 1 ...

  7. 【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型

    同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深 ...

  8. 【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失

    代码: [Pytorch神经网络实战案例]28 GitSet模型进行步态与身份识别(CASIA-B数据集)_LiBiGor的博客-CSDN博客1 CASIA-B数据集本例使用的是预处理后的CASIA- ...

  9. 【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型

    1 ResNet模型 在深度学习领域中,模型越深意味着拟合能力越强,出现过拟合问题是正常的,训练误差越来越大却是不正常的. 1.1 训练误差越来越大的原因 在反向传播中,每一层的梯度都是在上一层的基础 ...

最新文章

  1. CSS浮动元素特点有什么
  2. 六、CPU优化(6)DMV与计数器
  3. impala jdbc驱动执行impala sql的一个坑(不支持多行sql)
  4. C#里partial关键字的作用
  5. Visiual Studio2012 CLR20r3问题
  6. git 撤销文件的修改(checkout/reset )
  7. 更新增加一个门店ID字段的值
  8. ffmpeg对amr格式编解码
  9. 打开word时总是弹出The resource dll can not be loaded
  10. 修改使用phpstorm创建的模板的默认注释
  11. python 数据文件上传到ftp服务器
  12. 项目验收文档模板(四)
  13. spring-boot集成kafka(包含zookeeper和kafka的下载介绍)
  14. 电脑扬声器耳机已拔出
  15. Linux中将4块10T新硬盘合并成一个,挂载到Resource目录下
  16. Python爬虫之网易云音乐数据爬取(十五)
  17. 电脑上的计算机可以加密码,如何给电脑上的文件夹加密
  18. 计算机键盘上的基准键是哪两个键,键盘上的基准键分别是什么?
  19. android项目实现查询功能,Android实现归属地查询功能(示例代码)
  20. 分布式相关问题总结(精选)

热门文章

  1. 2005年度国产空间信息系统软件测评
  2. 利用jquery修改elment的自定义组件多选框el-select(修改多选框的颜色)
  3. lisp 车位块自动编号_机械车位做产权登记,真的适合吗?
  4. 解决-ubuntu 安装redis无法启动
  5. 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  6. 调用API发送短信python
  7. Python开发中收集的一些常用功能Demo
  8. C# 线程池ThreadPool
  9. osg指定向量旋转指定角度
  10. win10 + 独显 + Anaconda3 + tensorflow_gpu1.13 安装教程(跑bert模型)