专栏首页量子位想在PyTorch里训练BERT,请试试Facebook跨语言模型XLM

想在PyTorch里训练BERT,请试试Facebook跨语言模型XLM

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI

今年2月,Facebook发表了论文《Cross-lingual Language Model Pretraining》,这篇论文提出了基于BERT优化的跨语言模型XLM,它刚刚出生就在两项机器翻译任务上取得了巨大进步。

在无人监督的机器翻译中,XLM在WMT’16的德语-英语上获得了34.3 BLEU,比之前的技术水平提高了9个以上BLEU。

然而这只是在单个应用领域的成绩,XLM更全面的性能测试结果如何呢?

就在昨天,论文的两位作者提交了GLUE测试得分,在使用相同的数据 (Wiki/TBC)的情况下,没有下一句预测任务,XLM新模型在所有提交的GLUE任务上均优于BERT。

为何能比BERT性能更好,论文作者之一Guillaume说:是因为更大的维度,以及没有下一句预测。

XLM项目

Facebook已经在GitHub上更新了的XLM项目的最新结果。

根据最新的文档描述,XLM的PyTorch英语模型与预训练的BERT TensorFlow模型使用相同的数据(Wikipedia + Toronto Book Corpus)进行训练。

该实现不使用下一句预测任务,网络只有12层但容量更高,包含6.65亿参数。总的来说,XLM模型在所有GLUE任务上都比原始BERT具有更好的性能。

整个XLM项目包括以下代码:

1、预训练语言模型: 因果语言模型(CLM)- 单语 掩码训练的语言模型(MLM) - 单语 翻译语言模型(TLM) - 跨语言 2、监督/无监督的机器翻译训练: 去噪自动编码器 并行数据培训 在线反向翻译 3、XNLI微调 4、GLUE微调

Facebook展示了XLM在生成跨语言句子表征上的能力。下面的代码中可以看到根据预训练模型获取句子表征的例子。

# list of (sentences, lang)
sentences = [
    ('the following secon@@ dary charac@@ ters also appear in the nov@@ el .', 'en'),
    ('les zones rurales offr@@ ent de petites routes , a deux voies .', 'fr'),
    ('luego del cri@@ quet , esta el futbol , el sur@@ f , entre otros .', 'es'),
    ('am 18. august 1997 wurde der astero@@ id ( 76@@ 55 ) adam@@ ries nach ihm benannt .', 'de'),
    ('اصدرت عدة افلام وث@@ اي@@ قية عن حياة السيدة في@@ روز من بينها :', 'ar'),
    ('此外 , 松@@ 嫩 平原 上 还有 许多 小 湖泊 , 当地 俗@@ 称 为 “ 泡@@ 子 ” 。', 'zh'),
]

# add </s> sentence delimiters
sentences = [(('</s> %s </s>' % sent.strip()).split(), lang) for sent, lang in sentences]

论文简介

最近的研究证明了生成预训练(Generative pretraining)对英语自然语言理解的效率。而Facebook将这种方法扩展到多种语言,并展示了跨语言预训练的有效性。

他们提出了两种学习跨语言模型(XLM)的方法:一种是无监督学习,只依赖单语数据,另一种是监督学习,利用新的跨语言语言模型目标的平行数据。

这种方法获得了关于跨语言分类、无监督和监督机器翻译的最新结果。在XNLI上,这种方法比之前的技术将准确率提高了4.9%。

在无人监督的机器翻译中,XLM在WMT’16德语 - 英语上获得了34.3 BLEU,比之前的最佳结果提高了9个以上BLEU。

在有监督机器翻译中,XLM在WMT’16罗马尼亚语-英语上获得了38.5 BLEU的结果,比之前的最佳方法提高了超过4 BLEU。

传送门

论文地址: https://arxiv.org/abs/1901.07291

项目地址: https://github.com/facebookresearch/XLM

作者系网易新闻·网易号“各有态度”签约作者

本文分享自微信公众号 - 量子位(QbitAI),作者:关注前沿科技

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 斯坦福大学推出对抗抑郁症的聊天机器人(附论文)

    安妮 编译自 Business Insider 量子位出品 | 公众号 QbitAI 抑郁症不是一个听起来耳生的疾病了,它会使患者陷于抑郁的情感状态,自尊心降低...

    量子位
  • 最强国产围棋AI“凤凰狗”正式开源,单块GPU就能对弈职业九段

    由微信翻译团队课余打造,初出茅庐便在福州2018人工智能围棋大赛上击败绝艺夺冠,PhoenixGo备受关注、风头正劲。

    量子位
  • 硅谷巨头的语音交互入口争夺战中,谷歌面临五大挑战

    李杉 编译自 Recode 量子位 报道 | 公众号 QbitAI 如果谷歌想继续成为主导全球的信息来源,就需要确保人们能够在各种情况下继续使用谷歌产品。为了达...

    量子位
  • CRM product type 04的用途

    Product type 04 is used for Industry solution Media in CRM. The product created ...

    Jerry Wang
  • jsp中的类似 if - else 语句 的语法

    <c:choose>    <c:when test="${requestScope.newFlag== '1' || requestScope.newFlag...

    用户1220053
  • 一般Web前端开发要学什么 如何掌握Web前端技术

    一般Web前端开发要学什么?如何掌握Web前端技术?越来越多的行业巨头不断向Web前端示好,除苹果、微软、黑莓之外,谷歌的Youtube已部分使用Web前端。C...

    用户5827212
  • 北大开源了中文分词工具包,准确度远超Jieba,提供三个预训练模型

    一位是来自清华的THULAC,一位是要“做最好的中文分词组件”的结巴分词。它们都是目前主流的分词工具。

    用户2769421
  • .Net CSharp语言中When关键字的用法

    c# 6引入了when关键字。when关键字是通过某些特定标准来过滤catch块中的异常的一种方法。后来在c# 7中扩展到case语句。我们将介绍如何在异常处理...

    程序你好
  • 区块链技术阅读列表

    有很多值得学习的区块链技术资源,在这里稍微总结了一下。因为不想再多一个 markdown repo,所以把它放在了 blockchain-tutorial 的 ...

    用户1558438
  • PHP中WEB典型应用技术

          2)、在浏览器端提供能够进行文件上传的表单。其实就是给表单添加属性:enctype=”multipart/form-data”;

    北国风光

扫码关注云+社区

领取腾讯云代金券