查看原文
其他

微软开源用于学习通用语言嵌入的MT-DNN模型

AI科技评论 微软研究院AI头条 2020-09-12



编者按:不久前,微软发布了用于学习通用语言嵌入的多任务深度神经网络模型——MT-DNN,它集成了 MTL 和 BERT 语言模型预训练二者的优势,在 10 项 NLU 任务上的表现都超过了 BERT,并在通用语言理解评估(GLUE)、斯坦福自然语言推理(SNLI)以及 SciTail 等多个常用 NLU 基准测试中取得了当前最佳成绩。本文由微信公众号“AI科技评论”编译自微软研究院博客文章“Towards universal language embeddings”,经授权转载。


语言嵌入(Language embedding)是将符号化的自然语言文本(例如单词、短语和句子)映射到语义向量表示的过程,它是自然语言理解(NLU)深度学习方法的基础。语言嵌入通用于众多 NLU 任务,因此很值得大家学习。


学习语言嵌入有两种常用方法:语言模型预训练和多任务学习(MTL)。语言模型预训练通过利用大量未标注的数据来学习通用语言嵌入,而 MTL 则能有效利用来自许多相关任务的监督数据,并通过减轻对特定任务的过度拟合从正规化效应(regularization effect)中获利,从而使学习的嵌入对任务具有通用性。


不久前,微软研究人员发布了 MT-DNN,它是一个用于学习通用语言嵌入的多任务深度神经网络模型。MT-DNN 集成了 MTL 和 BERT 语言模型预训练二者的优势,在 10 项 NLU 任务上的表现都超过了 BERT,并在通用语言理解评估(GLUE)、斯坦福自然语言推理(SNLI)以及 SciTail 等多个常用 NLU 基准测试中取得了当前最佳成绩。




MT-DNN 架构



MT-DNN 通过整合由 Google AI 开发的预训练双向变换器语言模型(BERT),扩展了微软在 2015 年提出的多任务深度神经网络模型。MT-DNN 模型的架构如下图所示。较低层在所有任务中共享,而顶层是针对任务特定的。首先,输入 X(一个句子或一对句子)在 l_1 层中被表示为嵌入向量序列,每个单词都对应一个嵌入向量序列。然后,基于变换器的编码器捕获每个单词的上下文信息,并在 l_2 层中生成共享的上下文嵌入向量。最后,额外的特定任务层针对每个任务生成特定任务表示,随后是分类、相似性评分或相关性排序所必需的操作。MT-DNN 使用 BERT 将其共享层初始化,然后通过 MTL 对其进行优化。


MT-DNN 架构


域适应结果


评估语言嵌入通用性的一种方法是,测算嵌入适应新任务的速度,或者需要多少特定任务标签才能在新任务上获得相当好的结果。嵌入越通用,所需要的特定任务标签也越少。MT-DNN 的论文作者在域适应中对 MT-DNN 和 BERT 进行了比较,其中两个模型都能够通过逐渐增加用于适应的域内数据的大小来适应新任务。SNLI 和 SciTail 两个任务上的结果如下表和下图所示:在仅有 0.1%的域内数据(SNLI 中的样本量为 549 个;SciTail 中的样本量为 23 个)的情况下,MT-DNN 的准确率达到+ 80%,而 BERT 的准确度大约为 50%,这证明了通过 MT-DNN 学习的语言嵌入比通过 BERT 学习的语言嵌入通用性更强。


SNLI 和 SciTail 数据集上,MT-DNN 和 BERT 的准确度对比


开源



目前,MT-DNN已经在 GitHub 社区(https://github.com/namisan/mt-dnn)开源 ,开源包中包含预训练模型、源代码以及说明文档(逐步描述了如何复现 MT-DNN 论文中实现的结果,以及如何通过域适应让预训练的 MT-DNN 模型适用于任意新任务)。



长按图片扫码,了解更多开源信息








你也许还想看


感谢你关注“微软研究院AI头条”,我们期待你的留言和投稿,共建交流平台。来稿请寄:msraai@microsoft.com。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存