国庆期间偶然看到一篇关于Unsupervised Blingual Lexicon Induction的文章,与之前看过的文章不同,之前的文章基本都是利用GANs作为生成模型,本论文的生成模型使用了Variational Autoencoder(VAEs,变分子编码)。读完该论文,我脑里想到了一个新思路——能不能找到其他的生成模型用在Bilingual Lexicon Induction上?
参考:https://www.cnblogs.com/vpegasus/p/generative_models.html
GANs的火热最直接的原因,其原理直观,可解释。生成模型的目的常常是为得到数据X的分布p(X)。而常常我们对数据的分布一无所知,甚至很多数据分布是没有解析式的。GANs来求解p(X)时,走了一条不同寻常的路。GANs采用对抗的方式来学习,或者说是模仿(mimic)的方式来学习。GANs有个生成器(G),它的目的是生成可以以假乱真的数据,为了更好的训练G,GANs引入一个判别器(D),它的工作是当一个样本经过它之后,它能判别出样本是真实的数据样本还是生成器生成的样本,即它输入一个值来代表样本为真的程度。正如原文的例子一样,G相当于一个假币制造者,而D 是警察。就在这个互相对抗中,G生成的样本越来越像直实数据,而D的判别能力也越来越高。用公式表示即是:
变分自编码器(VAE)是另一种非常著名的生成模型,常常将其与GANs相提并论。VAE虽然在学术界很有名,但很多人对它并不是很了解,一部分原因是VAE的名字很高大上,会有人觉得比较难从而望而却步;还有一些原因是没有太多讲解的比较好的, 通俗但又不失逻辑的博文。其实最主要的原因是VAE真的涉及比较多的知识,从而仅有的几篇好资料还是从不同角度切入,这为初学者带来不小的障碍。VAE的第一手资料当然是原始论文,但因为是大师手笔,其把他们认为‘显而易见’而对我们至关重要的过程给省略了,所以也比较难读。
从字面可知VAE至少包含两块内容,变分推断(Variational Inference)与自编码器(Auto encoders)。
首先,变分推断在VAE当中,可以简单的理解为KL散度的应用即可。其次,自编码器是因为VAE的结构与自编码器很像,都有解码与编码过程。
首先来看auto encoder的结构:
Input: X 经过auto encoder生成\hat X,如果二者相似,说明auto encoder的是一个可用的模型。
auto encoder模型涉及两过程:编码(encoding)与解码(decoding)。通常认为X的生成是由某些隐变量(latent variables,记为Z)决定的。所以变程可分解为:
从上图可知,encoder在X给定的前提下,会产生两个参数向量,μ(X)μ(X)和 ∑(X)∑(X)。但这会产生两个问题,一个是在此分布上做抽样方差会很大,另一个是抽样这个方式本身是不可导的。
参考:https://blog.csdn.net/daydayjump/article/details/87924066,https://blog.csdn.net/Struggling_orange/article/details/83272276,https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/81039361
三者图解:
