[研究笔记]由RNN的Discrepancy现象联想到深度学习与GAN

研究笔记属于个人备忘所用,词不达意,文不成章。大多数内容都是灵机一动的脑子里的幻听而已。内容或许随着作者的认知、成长和对事物的理解逐步淘汰,并可能因为作者知识体系和见解的浅薄暴露出很多的错误。所以不要太当真。

2017年02月07日的研究笔记

Discrepancy,exposure bias

在看SeqGAN[Yu et al. 2016]时,看到了关于Exposure Bias的记述,特地了解了一些,在此记录。

RNN在训练时和推断时,数据是不一样的。在训练时,模型是有期望输出(Label)和实际输出的区别的,而损失函数就是建立在期望与实际之间的差距之上的。即,后一个节点的输入本应该是前一个节点产生的输出+前一个节点的hidden,训练时这个输入是可以指定成正确的sample。然而在推断时,只有实际输出,没有期望输入。每一个节点的输入不再是前一个节点”期望的输出“,而就是模型前一个单元真实产生的输出。如果这个输出序列的匹配在之前的训练数据中没有出现过,那RNN的输出将会越来越偏差(discrepancy),最后面目全非。

为了解决这个问题,有不少方法(疑)。其中一种是将衡量“输出合法性”的客观评价值项加入到loss中。如机器翻译中可以将BLEU加入到loss。然而,很多task并没有这个客观评价值,或者这个评价值很难计算得到。

Samy Bengio[Bengio et al. 2015]提出了Scheduled Sampling方法,就是在训练过程中,随机地用上一个单元的真实输出作为这个单元的输入,而传统RNN训练时则只会用期望输出。以此让RNN在训练中能够适应“不同的语料”。换句话说,个人觉得这种方法其实就是在扩充语料。原本语料都是固定的,现在相当于成倍地产生新语料(将原语料中的一些词用模型的输出替换掉)。但实际上产生的新语料里面估计会有不少错误,这也是为啥Huszar说到这种方法只是治标不治本[Huszar 2015]的原因。

深度学习、RNN与GAN的联想

个人感觉,深度学习的一大特色就在于“特征学习”。深度学习与传统的机器学习方法相比,就是通过精心设计的结构、损失函数、优化算法,来“自动地”获得到一种对知识的“再表示”。这种再表示可以是降维的(做特征),也可以是升维的(稀疏表示),目的就是让原始的输入经过某种变换而对后续的应用发挥更大的作用。而相比之下,传统的机器学习就是在“手动地”寻找这些变换方法。

对于很多Task来说,研究者想让整个问题解决流程有一种美学价值,就使用带有一种对“端到端”的执念。换句话说,整个模型、训练过程中,最好能让每一个部分都加入到“端到端”的体系中。最好除了输入数字出是指定的之外,剩下所有部分都能自动地工作,不用太多的人工介入、挑选特征等等。

在深度学习中,特征是自动选择的,但大部分模型仍然需要一个手工设计的loss来进行优化。这就不够优美了。所以GAN对于这类任务有个天然的好处,就是设计了一种能够“自动配置”的“discriminator”,并且能够作为loss,在相互博弈中得到训练。这就相当于连loss函数都是一个动态学习得到的(听上去有点儿做参数估计时MAP和MLE)的感觉。换句话说,我们甚至连loss的形式都是让GAN自动学习得到。

Summary

最近一直在研究GAN在文本领域的一些应用,感觉这个模型虽然问题多多,潜力非常大!

References

[Yu et al. 2016] Yu, L., Zhang, W., Wang, J., & Yu, Y. (2016). SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient. arXiv. Retrieved from http://arxiv.org/abs/1609.05473

[Bengio et al. 2015] Bengio, S.; Vinyals, O.; Jaitly, N.; and Shazeer, N. 2015. Scheduled sampling for sequence prediction with recurrent neural networks. In NIPS, 1171–1179.

[Huszar 2015] Husz´ ar, F. 2015. How (not) to train your generative model: Scheduled sampling, likelihood, adversary? arXiv:1511.05101.

Friskit

继续阅读此作者的更多文章