从自己训练word2vec到使用预训练模型
词嵌入是深度学习在NLP中最著名的技术了。词嵌入基于分布假设(Harris (1954)),认为相同意义的词分布在相似的上下文中。关于词嵌入的详细介绍可以参考这篇文章。
word2vec (Mikolov et al., 2013)和GloVe (Pennington et al., 2014)算法是词嵌入算法的先驱,但是并不被认为是深度学习算法。word2vec是浅层神经网路,GloVe是基于统计的方法。实践证明使用词嵌入在实践中很有效。
最开始的时候,解决NLP问题需要使用词嵌入的时候倾向与自己训练一个领域相关模型。渐渐的,一些基于Wikipedia, Twitter, Google News, web crawls预训练的模型开始得到广泛应用。使用预训练的词嵌入模型可以很方便的集成到自己的深度学习算法中。
今年表明预训练的词嵌入模型依然是NLP中的一个关键难题。Facebook AI实验室的fastText发布了294中语言的预训练向量。fastText能够避免OOV问题,并在小数据集上优于word2vec和GloVe。
spaCy框架集成了词嵌入和深度学习模型,完成诸如NER和依存分析任务,并且允许用户更新模型或者使用自己的模型。
未来,预训练的模型将在生物、文学、经济等特定领域取得好的效果,但是也存在不能很好的调优问题。同时,一些适应性的词嵌入方法出现了。
通用embedding应用于指定领域
导致预训练词嵌入的应用下降的主要问题是预训练语料和最终使用的语料之间的词分布差别。如果没有足够多的语料训练自己i的词嵌入模型,那么使用预训练的词嵌入模型是有好处的。那么如何将通用词嵌入模型应用到指定领域呢?
NLP中这一类问题通常叫做交叉领域或者领域适应技术,跟迁移学习类似。Yang et al今年做过相关有意思的工作,论文通过给定的源领域embedding使用正则化的skip-gram模型用来学习目标领域的embedding。
论文的方法简单但是有效。想象一下,我们知道源领域中单词w的词嵌入向量为 ws w_s。为了计算目标领域 wt w_t,作者将 ws w_s经过一系列转换。基本的,如果单词在两个领域中频繁出现,那么它的含义将不是领域独立。这种情况下,转换的量比较大,所以结果向量在两个领域中趋向于一致。但是如果单词在一个领域中出现的频率比另一个领域高,那么转换的量将小。
这个研究主题没有得到广泛的研究,但是我相信在不久的将来将会得到更多的关注。
情感分析取得的难以置信的效果
历史上很多的发现都是不经意的,比如青霉素、比如X光。今年,Radford et al.在探索字节等级的循环语言模型性能,该模型的目标是预测Amazon中文本中的下一个字符,他们发现已训练模型中的单个神经元能够高效的预测情绪值。是的,没有听错,单个情感神经元能够准确的区分负面和正面的情感。