NLP中的latent space
在nlp领域,直接上GAN model来操作latent code存在一些问题,图中是一个例子,在latent space遨游的时候,中间的句子不make sense。
最简单的解决方法是用VAE而不是用GAN。GAN本身的训练方式是非常依赖连续空间的。在训练的时候,我们的目标就是连续空间上的pixel值。在这一点上,VAE就没有这个假设。因此VAE是自然的选择。
核心问题
针对图像潜在空间解释的现有方法
-
监督 简单的分类器、SVM向量机等。
文章:
Semantic Hierarchy Emerges in Deep Generative Representations for Scene Synthesis Interpreting the Latent Space of GANs for Semantic Face Editing
GANalyze Toward Visual Definitions of Cognitive Image Properties -
自监督 自己对同一张图像进行前后编辑得到两张图像作为 和 然后训练。
需要属性简单易观测和量化(大小、位置...)。
文章:
On the steerability of generative adversarial networks
Controlling generative models with continuous factors of variations -
无监督 矩阵分解:通过特征分解得出多个direction。
联合训练:将direction组成的矩阵作为训练的参数。
往往需要一个个试direction对应的属性。
文章:
Closed-Form Factorization of Latent Semantics in GANs
Unsupervised Discovery of Interpretable Directions in the GAN Latent Space
思考
想法1:通过无监督的特征分解方式找到direction,回避对属性的定义问题。
- 无监督的方法和监督/自监督相比,可以针对更多更复杂的、不用事先被我们定义的属性。
- 图像的属性相对文本更加清晰,便于观察和度量,因此对于标签的构造也更简单,文本的属性更抽象、更难量化。
- 启发于 Closed-Form Factorization of Latent Semantics in GANs。
在我们构造的网络中,如果可以得到针对latent code的第一层映射 的网络参数 ,那么利用它做特征分解得到若干的direction,然后将它们对应的属性试出来。
想法2:将direction作为参数矩阵,无监督联合训练求解。
- 同样是通过无监督回避对属性的预先定义,尝试找到更多意想不到的direction。
- 启发于 Unsupervised Discovery of Interpretable Directions in the GAN Latent Space。
联合学习 和 ,固定 。
- 矩阵 ,其中 等于潜在空间的维数, 等于我们想要试图发现的direction的数量(取决于网络模型和数据集)。 表示one-hot 向量的第 维为1,乘上矩阵 后,也就等效于选择了 中的第k个direction。 衡量对这个direction我们的变化程度。
- 重构器 ,其输入是一对单词 、,即 和 。 输出一个标量对 ,也就是找出之前选择的direction ,和变化的幅度。
优化目标:
为什么这种方法会有效呢?
- 最小化 ,也就是试图精确定位到A中的具体列(direction),这个过程使得对词语中不同属性的更改容易相互区分。可以看作一个解耦的过程。
- 最小化 ,是迫使在这个direction上的移动是连续渐进的,而不是突变的。
想法3:从词语的直观属性入手,进行监督训练。
- 从词语的语义属性中,选择比较直观,便于衡量的入手,构造可用于监督或自监督的标签。
从词性入手:
构造word-pair(x1,x2),比如对于动词和名词,构建 (饭,吃饭),(菜,吃菜),(书,看书),(画,看画)...
和 对应 和 的表征, 是decoder。
利用:
用于衡量两个单词的语义相似度,优化目标是最小化其差异。
从数量词入手:
对于 ,尝试找到 ,使 随着 有相同变化。