关于word embedding的一些思考

源于最近做生成和检索式对话系统,以及一篇well named paper:When and Why are Pre-trained Word Embeddings Useful for Neural Machine Translation? 这里总结一下最近对word embedding的思考。

https://www.cnblogs.com/Determined22/p/5780305.html

https://www.cnblogs.com/Determined22/p/5804455.html

https://www.cnblogs.com/Determined22/p/5807362.html

https://heleifz.github.io/14732610572844.html

word embedding的本质是一个function,将token映射到一个hidden space中去(有时候不要加太多戏……)。流行的word embedding都是基于distributional hypothesis,即具有相似上下文的词,应该具有相似的语义。著名的CBOW和Skip-Gram都是基于此的,考虑的是在context下的co-occurence。(这里插播一下,所以很多时候和“good”最近的是“bad”,这里的近并不是semantic意义上的近,而是context的co-occurence高。

1、When and Why are Pre-trained Word Embeddings Useful for Neural MachineTranslation?
本文针对NMT做了几个实验。下面简单列出部分实验分析:

(1)source embedding和target embedding对比:

关于word embedding的一些思考_第1张图片

Comparing the second and third columns, we can see the increase is much more significant with pre-trained source language embeddings. This indicates that the majority of the gain from pre-trained word embeddings results from a better encoding of the source sentence.

即pretrained embedding带来的好处更多的是better encoding of the source sentence,这也在其他seq2seq生成任务中启示我们,source sentence的表示对性能的影响是最关键的。

(2)一般来讲,对于不太大的数据集,pretrained word embedding(on Wiki)都能带来一些提高。随机初始化时结果太好或者太差的情况改用pretrained embedding带来的提升相似,不太大(3个BLEU点左右)。但是如果随机初始化训完能得到一个差强人意的BLEU时,改用pretrained word embedding带来的效果是最大的。

2、Building End-to-End Dialogue Systems Using Generative Hierarchical Neural Network Models 

本文很大篇幅在讲利用word2vec或者大数据集来bootstrapping提高小数据集的效果。

(1)使用pretrained word2vec来初始化有一定提升。在train的时候分了两个阶段,第一个阶段fix embedding,第二个阶段finetuning。

(2)对于在大数据集上预训练的模型而言,随机初始化embedding performs slightly better。

(3)都随机初始化的基础上,参数量加大一般会导致更快地收敛,但是数据量不够大的情况下也更快会发生过拟合,最终的效果还真不一定谁更好。同样的在paper中也能看出来,在500W的data set中训练的模型的hidden比直接在19W的data中训练的模型的hidden大了好多。一般来讲,参数越多的模型,设计越sophisticated的模型的能力的确是越强,但是这一切都是建立在数据量足够多足够好的情况下的。反过来说,如果数据没有那么多,可能应该从参数量少一点、结构简单一点的模型入手会更好。

3、生成式和检索式对比:基于400W pairs

pretrained embedding对于检索式一般来说能带来提升。(SMN直接fix了,自己的实验是trainable的)。检索式收敛的更快,检索式学习的low level表示也更差,一个好的表示对检索式带来的提高是不可估量的。

pretrained embedding对于生成式作用不大。

 

你可能感兴趣的:(Dialogue,Systems,Representation)