sememes的潜在空间思考

793 阅读3分钟

NLP中的latent space

在nlp领域,直接上GAN model来操作latent code存在一些问题,图中是一个例子,在latent space遨游的时候,中间的句子不make sense。 image.png

最简单的解决方法是用VAE而不是用GAN。GAN本身的训练方式是非常依赖连续空间的。在训练的时候,我们的目标就是连续空间上的pixel值。在这一点上,VAE就没有这个假设。因此VAE是自然的选择。

image.png

核心问题

针对图像潜在空间解释的现有方法

  • 监督 简单的分类器、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

  • 自监督 自己对同一张图像进行前后编辑得到两张图像作为 yyyy' 然后训练。
    需要属性简单易观测和量化(大小、位置...)。
    文章:
    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。
y=F1(z)=F1(z+αn)=Az+b+αAn=y+αAny' = F_1(z') = F_1(z + αn) = Az + b + αAn = y + αAn
n=arg maxnRd:nTn=1 An22n^* = {\underset {n ∈ R^d: n^Tn=1}{\operatorname {arg\,max} }}\ ||An||^2_2
N=arg maxNRd×k:niTni=1i=1,...,k i=1kAni22N^* = {\underset {N ∈ R^{d×k}: n_i^Tn_i=1 \forall i=1,...,k}{\operatorname {arg\,max} }}\ \sum_{i=1}^k||An_i||^2_2
=arg maxNRd×k i=1kAni22i=1kλi(niTni1)= {\underset {N ∈ R^{d×k}}{\operatorname {arg\,max} }}\ \sum_{i=1}^k||An_i||^2_2 - \sum_{i=1}^k λ_i(n_i^T n_i − 1)
=arg maxNRd×k i=1k(nitATAniλiniTni+λi)= {\underset {N ∈ R^{d×k}}{\operatorname {arg\,max} }}\ \sum_{i=1}^k(n_i^tA^TAn_i - λ_in_i^Tn_i+λ_i)
ATAni=λiniA^TAn_i = λ_in_i
ATA=QΛQTA^TA = Q\Lambda Q^T

在我们构造的网络中,如果可以得到针对latent code的第一层映射 FF 的网络参数 AA,那么利用它做特征分解得到若干的direction,然后将它们对应的属性试出来。

想法2:将direction作为参数矩阵,无监督联合训练求解。

  • 同样是通过无监督回避对属性的预先定义,尝试找到更多意想不到的direction。
  • 启发于 Unsupervised Discovery of Interpretable Directions in the GAN Latent Space。

联合学习 AABB ,固定 DecoderDecoder

1.png

  • 矩阵 ARd×kA ∈ R^{d×k},其中 dd 等于潜在空间的维数,kk 等于我们想要试图发现的direction的数量(取决于网络模型和数据集)。kk 表示one-hot 向量eke^k的第 kk 维为1,乘上矩阵 AA 后,也就等效于选择了 AA 中的第k个direction。εε 衡量对这个direction我们的变化程度。
z=z+A(εek)z' = z + A(εe_k)
  • 重构器 RR,其输入是一对单词 W1W_1W2W_2,即 D(z)D(z)D(z+A(εek))D(z + A(εe_k))BB 输出一个标量对 (k,ε)(k', ε'),也就是找出之前选择的direction kk,和变化的幅度。

优化目标

1.png
为什么这种方法会有效呢?

  • 最小化 ΔkΔk,也就是试图精确定位到A中的具体列(direction),这个过程使得对词语中不同属性的更改容易相互区分。可以看作一个解耦的过程。
  • 最小化 ΔεΔε,是迫使在这个direction上的移动是连续渐进的,而不是突变的。

想法3:从词语的直观属性入手,进行监督训练。

  • 从词语的语义属性中,选择比较直观,便于衡量的入手,构造可用于监督或自监督的标签。 从词性入手
    构造word-pair(x1,x2),比如对于动词和名词,构建 (饭,吃饭),(菜,吃菜),(书,看书),(画,看画)...
    z1z_1z2z_2 对应 x1x_1x2x_2 的表征,DD 是decoder。
    利用:
n=arg minnEz,α[HowNet(D(z1+αn),D(z2)]n^* = {\underset {n}{\operatorname {arg\,min} }}\,E_{z,α}[HowNet(D(z_1+αn), D(z_2)]

HowNet(D(z1),D(z2))HowNet(D(z1),D(z2))用于衡量两个单词的语义相似度,优化目标是最小化其差异。

从数量词入手
对于 Number=F(z)Number= F(z),尝试找到 nn,使 Number=F(z+αn)Number' = F(z + αn) 随着 αα 有相同变化。