【导读】词嵌入已经彻底改变了自然语言处理(NLP)的世界。从概念上讲,词嵌入是一种语言建模方法,它将句子中的短语或单词映射到向量和数字。任何NLP应用程序的第一步是确定将使用哪种类型的词嵌入算法。通常,NLP模型采用预训练的字嵌入算法,例如Word2Vec,Glove或FastText。虽然这种方法相对简单,但它也会导致非常低效,因为随着NLP模型的发展,几乎不可能确定嵌入哪个词会表现得更好。如果NLP模型本身可以为给定的上下文选择最佳的单词嵌入怎么样?在最近的一篇论文中,来自Facebook人工智能研究实验室(FAIR)的研究人员提出了一种方法,允许NLP模型动态选择在给定环境中表现最佳的字嵌入算法。
作者|Jesus Rodriguez
编译|专知
整理|Yingying,李大囧
论文地址: https://arxiv.org/abs/1804.07983
动态元嵌入是一种将不同的嵌入模型组合在一个集合模型中的技术,它允许NLP算法根据其性能选择要使用的嵌入。从本质上讲,Facebook的技术基于整体的特定行为将嵌入算法的选择从设计时延迟到运行时。
预训练词嵌入的挑战
动态元嵌入背后的原理相当简单:不同的字嵌入算法在给定环境下执行的方式不同,为什么不将它们全部组合在一起让网络决定使用哪种嵌入?此外,动态元嵌入通过更传统的一代预训练单词嵌入方法解决了一些切实的挑战。
覆盖范围:当遇到超出给定词汇量的单词时,预训练的单词嵌入算法会很困难。
特定领域:有监督的单词嵌入模型通常在单个域上进行训练,在遇到来自其他领域的句子时表现不佳。
评估:在NLP模型中评估字嵌入算法的性能几乎是不可能的。我们可以清楚地评估NLP模型的性能,但很难将其与底层字嵌入的行为相关联。
可解释性:补充前一点,理解特定字嵌入算法为何以某种方式表现的特定NLP设置难以置信。给定一个特定的NLP任务,很难预测哪个字嵌入算法会表现得更好。
动态元嵌入
动态元嵌入开始于给定的字嵌入算法集合。给定特定句子在一组tokens {t1,t2,... tn},动态元嵌入模型将从不同模型产生一系列嵌入。随着时间的推移,NLP算法将评估每个嵌入模型的性能并相应地分配权重,从而获得更好的性能。
GitHub上提供了动态元嵌入的开源实现。 基于PyTorch,当前的实现使得将不同的字嵌入合并到NLP模型中非常简单。 以下代码显示了如何使用由FastText和Glove嵌入组成的集合来训练NLP模型。
python train.py --task snli
--datasets_root data/datasets
--embeds_root data/embeddings
--savedir checkpoints
--embeds fasttext,glove
--mixmode proj_sum
--attnnet no_dep_softmax
--nonlin relu
--rnn_dim 128
--fc_dim 128
动态词嵌入的评测
Facebook团队在不同的NLP场景中评估了动态元嵌入,例如情感分析,图像标题检索,语言推理等等。 在每项任务中,使用动态元嵌入的模型能够胜过使用预训练的单词嵌入的模型。
除了令人印象深刻的性能结果之外,动态元嵌入还隐含了一些关于不同字嵌入算法性能的有趣见解。 下面的图表说明了动态元嵌入的偏好,给出了具体的已知单词或低频单词。 我们可以清楚地看到,ImageNet词嵌入模型对于混合词是首选,而Glove在使用低频词的情境中是首选。
选择字嵌入算法的任务通常是高度主观的并且基于领域知识。 Facebook关于动态元嵌入的工作表明,选择一个嵌入字的模型最好留给神经网络本身。 动态元嵌入允许NLP模型为不同的任务选择不同的字嵌入,从而实现更高效和可预测的性能。 此外,动态元嵌入产生了更多可解释的NLP模型,更有效的语言分析,并且显着地突出了在给定特定上下文的情况下哪些字嵌入模型更好地执行。 关于动态元嵌入的工作相对较新,但它确实显示出改进当前一代NLP模型的巨大希望。
原文链接:
https://towardsdatascience.com/whats-new-in-deep-learning-research-facebook-meta-embeddings-allow-nlp-models-to-choose-their-d92b5064cbc5
-END-
专 · 知
欢迎微信扫描下方二维码加入专知人工智能知识星球群,获取更多人工智能领域专业知识教程视频资料和与专家交流咨询!
登录www.zhuanzhi.ai或者点击阅读原文,使用专知,可获取更多AI知识资料!
专知运用有多个深度学习主题群,欢迎各位添加专知小助手微信(下方二维码)进群交流(请备注主题类型:AI、NLP、CV、 KG等)
请关注专知公众号,获取人工智能的专业知识!
点击“阅读原文”,使用专知