许嵩

Style VAE 阅读笔记

会有一股神秘感。 提交于 2019-12-06 00:33:38
题目:Towards controllable image descriptions with semi-supervised VAE Abstract 解决问题:为了生成更自然和风格化的图像描述,模型必须学习特定于风格的模式,并要求收集特定于风格的数据集,这非常耗时 提出模型:Semi-supervised Conditional Variational Auto-Encoder 效果:相比目前存在的模型,能够以更广泛的样式生成更准确的图像描述 Introduction 目前模型存在的问题:这些模型通常以最大似然目标进行训练,这会鼓励生成的描述在人类参考描述的训练集中使用最常见的n-gram,从而使模型生成只是粗略地描述了图像的内容的caption 为了提高描述的质量,一些研究人员建议添加物体的外部信息,例如属性,这可以进一步提高生成的描述的准确性,但仍然不足以生成各种具有特定风格的描述。 前人的工作:StyleNet 因为模型是确定性(determinstic)的,所以缺乏描述的可变性(variability) 无法以端到端的方式有效地训练以同时生成所有风格的描述 他们的模型在可用数据方面受到限制,因为它要求每个图像都具有中性和风格化的描述,而这受限于小的风格化描述数据集,并且无法利用更多可用的非风格化图像描述数据 本文解决的挑战

生成对抗网络系列(0)――生成模型

匿名 (未验证) 提交于 2019-12-03 00:32:02
本小节算是GAN的预备篇,主要介绍目前几个主流的生成模型,以及他们各自的优势。现有的使用较多的生成模型主要有以下5个,他们的源代码如下: https://github.com/wiseodd/generative-models 这里给出的代码主要是CPU实现。不太适合我们现在要处理的任务,基于他们的代码,我改编出了GPU版,目前只实现了AE、VAE和部分GAN,代码会持续更新中… https://github.com/Cuiyirui/Generative-Model-with-pytorch-GPU 2.1 Auto-encoder 先来看Auto-Encoder也就是我们说的AE,它的主要思路是把输入的vector编码成code,再把code解码成vector. 其中的编码器和解码器部分一般是Neural Network,可以是简单的线型神经元,也可以是CNN。为了训练函数用p-范数做损失函数: L = ‖ x G ( z ) ‖ p L =‖ x G ( z ) ‖ p p取1就是我们熟悉的L1 loss,p取2就是L2 loss. 把NN换成简单的3层神经网络: 这里的图像编码是3位。用到的数据集主要是MNIST和我们自己的服装数据集。 我们先看MNIST上的例子 从上边的结果发现,随着训练次数的增加,生成的图像在逐渐变清晰。但我们随机给一个长度为3的变量作为编码时

PCA,AE,VAE,RPCA,概率PCA之间的联系与区别

匿名 (未验证) 提交于 2019-12-02 23:43:01
AE 自编码器 代码:自编码器keras教程 是半监督的,自编码器是只有一层隐层节点,输入和输出具有相同节点数的神经网络 自动编码器输入的是X,我们的AE网络结构是X->H->X‘,我们的目的是让X’尽可能的等于X(X‘与X有相同维度),这样训练出来的H就可以用来表示或重构X。 用于压缩数据,但是没有泛化能力,因此不能作为生成模型 自动编码器与PCA的比较 自动编码器既能表征线性变换,也能表征非线性变换 ;而 PCA 只能执行线性变换 。 PCA可以直接得到最优的解析解,而AutoEncoders只能通过反向传播得到局部最优的数值解 。因为自动编码器的网络表征形式,所以可将其作为层用于构建深度学习网络。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。 PCA PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征

条件变分自编码器CVAE

匿名 (未验证) 提交于 2019-12-02 23:36:01
转自: https://zhuanlan.zhihu.com/p/25518643 上一期探讨了 变分自编码器模型(VAEs) ,本期继续生成模型的专题,我们来看一下条件概率版本的变分自编码器(CVAEs)。(对应的,另一类生成模型GANs也有条件概率版本,称为 CGANs 。) VAE回顾 VAE的目标是最大化对数似然函数 其中, 由于KL散度非负,对数似然函数的变分下界即为上式中的 项。一般来说, 是未知的,或者难以获得显式表达式的,因此,直接优化对数似然函数是不可行的,一般转而优化它的变分下界,即上式中的 项。Diederik P.Kingma和Max Welling提出了两个算法SGVB和AEVB去估计 。 CVAE VAE用的训练集是数据 。当生成数据时,由隐变量 控制生成数据 ,如果我们现在有的数据不只是 ,我们还有关于数据 的一些额外信息 ,最简单的,以手写数字为例,它的标签0-9,那么我们是否能够利用上这些额外的信息呢? CVAE-1 一个简答的想法,考虑条件概率分布 ,套用原来的VAE模型,我们不难作出以下推导: 于是 其中, 类似于VAE,套用SGVB算法,再做一下reparameterization,取适当的分布和网络,我们就得到了一个CVAE模型。 我们姑且称这个版本的CVAE为CVAE-1模型,没错,CVAE模型不止一个...... CVAE-2 此外

CVAE-GAN论文学习-1

我怕爱的太早我们不能终老 提交于 2019-11-29 08:17:31
CVAE-GAN: Fine-Grained Image Generation through Asymmetric Training 摘要 我们提出了一个变分生成对抗网络,一个包含了与生成对抗网络结合的变分子编码器,用于合成细粒度类别的图像,比如具体某个人的脸或者某个类别的目标。我们的方法构建一张图片作为概率模型中的一个标签成分和潜在属性。通过调整输入结果生成模型的细粒度类别标签,我们能够通过随机绘制潜在属性向量中的值来生成指定类别的图像。我们方法的创新点在于两个方面: 首先是我们提出了在判别器和分类器网络中使用交叉熵损失,对于生成器网络则使用平均差异目标函数。这种不对称损失函数能够使得训练出来的GAN网络更稳定。 其次是我们使用了encoder网络去学习潜在空间和真实图片空间中的关系,并使用成对的特性去保持生成图像的结构。 我们使用人脸、花和鸟的自然图片来训练,并说明了提出的模型有能力去生成有着细粒度类别标签的真实且不同的样本。我们进一步将展示我们的模型应用于其他任务的效果,如图像修复、高分辨率以及用于训练更好的人脸识别模型的数据增强。 1. Introduction 构建自然图像的有效的生成模型是计算机视觉中的主要问题。它目标是根据潜在的自然图像分布来调整一些潜在向量来生成不同的真实图片。因此,期望的生成模型是能够捕获钱在的数据分布。这可以说是一个很难的任务

机器学习: 变分自编码器VAE

半城伤御伤魂 提交于 2019-11-29 00:47:05
前言: 比较好的资料可以参看参考资料中【苏剑林】的相关讲解。这篇博客就不重复造轮子了。 问答总结: 如何理解VAE的目的是 进行分布之间的变换 ? 专属分布 P ( Z ∣ X k ) P(Z|X_k) P ( Z ∣ X k ​ ) 的提出原因是什么? 在VAE中,优化函数是什么的时候,会退化为普通的AutoEncoder? 如何理解VAE通过 KL散度 让所有 P ( Z ∣ X k ) P(Z|X_k) P ( Z ∣ X k ​ ) 都向 N ( 0 , 1 ) \mathcal{N}(0,1) N ( 0 , 1 ) 看齐,从而使得模型具有生成能力。 VAE的重参数技巧是什么?为什么会有重参数技巧? VAE和AE的区别就是对一个样本,前者编码的是一个多维分布,二后者编码的是确定的向量。 参考资料 [1] 苏剑林. (2018, Mar 18). 《变分自编码器(一):原来是这么一回事 》[Blog post]. Retrieved from https://kexue.fm/archives/5253 [2] Kingma D P, Welling M. Auto-encoding variational bayes[J]. arXiv preprint arXiv:1312.6114, 2013. [3] 苏剑林. (2018, Mar 28). 《变分自编码器(二)

自编码器 Autoencoder

﹥>﹥吖頭↗ 提交于 2019-11-28 18:55:51
自监督模型 训练一个ae的encoder,就能把code和object对应起来,获得code。给定一个code,decoder就能输出对应的object。 Autoencoder存在什么问题?   因为作为训练数据的object是有限的,导致decoder实际上只能把训练过程中见过的code给还原成对应的object。如果随机给一些code,它不会生成训练集中没有见过的object。 如何解决?    VAE: 训练decoder的时候给code加点噪声,就能让decoder在生成的时候可以克服一些带噪声的code,即使没有在训练中见过,也能生成比较合理的object(直觉上的理解,训练的时候希望一定范围内的code都能重构输入)。 因此在VAE中,encoder输出的不直接是code,而是一组mean和一组variance,而向量c才是真正的code,其中ci = exp(σ i ) x e i + m i 。训练过程中的优化目标也不仅是重构误差,还有一项 Σ (exp(σ i ) - (e i ) + (m i ) 2 ),要强迫variance不能太小(因为是模型学习的参数,如果不做限制,为了能重构的更好variance会越更新越接近0)。 理论上分析 VAE:   对 p(x) 的建模通过 p(x | z) * p(z) 来实现,很容易就想到GMM。如何从GMM 中采样数据

基于变分自编码器(VAE)利用重建概率的异常检测

﹥>﹥吖頭↗ 提交于 2019-11-27 06:17:13
本文为博主翻译自:Jinwon的Variational Autoencoder based Anomaly Detection using Reconstruction Probability,如侵立删 http://dm.snu.ac.kr/static/docs/TR/SNUDM-TR-2015-03.pdf 摘要 我们提出了一种利用变分自动编码器重构概率的异常检测方法。重建概率是一种考虑变量分布变异性的概率度量。重建概率具有一定的理论背景,使其比重建误差更具有原则性和客观性,而重建误差是自动编码器(AE)和基于主成分(PCA)的异常检测方法所采用的。实验结果表明,所提出的方法形成了基于自动编码器的方法和基于主成分的方法。利用变分自动编码器的生成特性,可以推导出数据重构,分析异常的根本原因。 1 简介 异常或异常值是与剩余数据显着不同的数据点。 霍金斯将异常定义为一种观察结果,它与其他观察结果有很大的偏差,从而引起人们怀疑它是由不同的机制产生的[5]。 分析和检测异常非常重要,因为它揭示了有关数据生成过程特征的有用信息。 异常检测应用于网络入侵检测,信用卡欺诈检测,传感器网络故障检测,医疗诊断等众多领域[3]。 在许多异常检测方法中,光谱异常检测技术试图找到原始数据的低维嵌入,其中异常和正常数据预期彼此分离。 在找到那些较低维度的嵌入之后,它们被带回原始数据空间

raw input()和input区别

时光总嘲笑我的痴心妄想 提交于 2019-11-27 05:45:00
版本差异 raw_input——》python2版本 input——》python3版本 2. 输入格式差异 就是raw_input()随便输都是字符串,而input()必须按照Python的规则来~ raw_input() name=raw_input(‘输入姓名:’) age=raw_input(‘输入年龄’) 我们输入汉字的姓名和数字的年龄 输入姓名:许嵩 输入年龄:31 许嵩 31 Repl Closed 直接输入,变量是str类型 input() name=input(‘输入姓名:’) age=input(‘输入年龄:’) 我们还是输入汉字的姓名和数字的年龄 输入姓名:‘许嵩’ 输入年龄:31 许嵩 31 Repl Closed 姓名为str类型,年龄为int类型,故许嵩加 ’ ’ ,数字直接为数字。 啥时候用raw_input()啥时候用input()? 如果是python2版本,则两种都可以使用 如果是python3版本,则只能使用 input() 建议都使用 input() 来源: https://blog.csdn.net/weixin_43392489/article/details/99460986

gan以及其变种中值得思考部分

做~自己de王妃 提交于 2019-11-27 02:25:55
1. GAN 从原始gan(生成对抗网络)到wgan,说是各种gan的变形百花齐放也不为过,关于gan的文章数不胜数,有严谨数学推导的文章也多如牛毛,所以随笔写下一个关于gan和变种中可以引起思考,能够为其他领域的研究提供一点点思路的拙见。文章没有太过详细的关于数学的推导,但还是默认看文章的人对gan较为熟悉,所以不再浪费精力在怎么让你明白这个火了三年的网络到底是怎么一回事上,直接开门见山。 1.1原始GAN训练困难 (1)目前最公认的一个考虑是,gan想对原始数据分布进行建模,但原始数据分布以及生成器产生的数据分布都为高维空间中的低维流形(类比于一个平面中的两条曲线,或者一个立方体中的两个平面),因此对于这种情况,原始gan最后损失函数所推导出的js散度很难衡量这两个分布的“距离”,进而在进行梯度下降训练时,没有“动力”去减少两个分布的差距。 (2)在训练模型时,采样不够多,导致判别器很容易将这个“二分类”问题给解出来,本质与第一点相同(无论从对损失函数的形式还是数学严谨推导,都可以证明kl散度计算等价于解决二分类问题) 2.GAN变种 gan神经网络的变种过于繁杂,简单介绍以下几种变种中有意义的事:fGAN WGAN CycleGAN cGAN VAEGAN InfoGAN 2.1 fGAN 优点: (1)推导的F函数将原始GAN中的js散度推广到了更宽广的F散度