本文假定读者拥有VAE的知识。关于VAE,之前发表的记事里稍微有讲,可以到我的主页去看。
VAE填补了潜在空间的真空,让点到点之间的转换更加平滑,例如下图中的第三行,从3转换到6。
训练后的潜在空间分布大概如下图,为了方便展示我只输出了0到3:
我们可以看到代表0的深蓝和代表1的青色,两者相距遥远。因为手写的0和1很容易分辨,所以产生这样的结果也是理所当然的。可是我们很容易产生一个问题,0和1在逻辑上是相邻的,那我们为什么不能让它们在潜在空间里也相邻呢?
比如从3转换到6,更加自然的方法难道不是3,4,5,6这样递增吗?我们有没有办法让神经网络学习潜在空间的逻辑联系呢?这就是今天这篇记事的主题了。
我的想法是,当然可以,只要将相邻数字(比如2和3,4和5)产生的潜在空间距离缩小不就好了吗? 于是我让神经网络在训练的时候,随机抽取相邻数字对产生的潜在空间向量,减小两者之间的距离。
训练之后的结果如下图。
我们可以看到红色和蓝色,分别是1和0,距离确实被拉近了,可是测试得到的结果如下图:
看前面行的第一和第三列,我们看到2变成了3,1变成了2,这可以说明模型确实学到了一点联系,然后第三行,从3变成9,中间也经过了一些类似8的东西。
但是怎么说呢,无论如何实验都不能说是成功。一是因为效果很差,二是因为不知道怎么用到研究上,所以这个研究就先闲置了。