TransCoder介绍

Facebook的TransCoder利用无监督学习实现代码转换,如Python到C++,通过预训练、去噪编码和回译三步提高效果。文章介绍了XLM模型在多语言编码解码中的应用,以及TransCoder如何结合Denoising Auto-Encoding和Back-Translation提升模型的跨语言翻译能力。
摘要由CSDN通过智能技术生成

人工智能如果能写代码的话那可能就是程序员的噩梦了。不过也许人们可以把更多的精力放在真正创造性的工作上去,比如移民火星什么的。Facebook的TransCoder虽然不能解放人类,但是也算朝这个方向迈出了坚实的一步。

无监督的代码转换

这项工作的重点在"无监督"上面。毕竟,如果我们有完美的平行语料,即源语言语料库和对齐的目标语言语料库,那么代码转换(或者代码互翻)可以简单理解为神经机器翻译(NMT)问题,比如英译德,中译英等等。然而现实并不存在这样的完美对齐的代码语料库。

作者用了github上大量的单语料库作为训练集,包括C++, Java, Python,成功实现了它们之间的互译功能。先看下图从Python到C++的效果。翻译模型显然需要能够推断变量的类型,然后才能正确的实现从动态类型语言到静态类型语言的转换。另外模型也照顾到了两种语言里deque包含的不同的方法,python里独有的range等等。这些都是通过无监督的训练实现的,这是怎么做到的?
在这里插入图片描述

无监督机器翻译

这个要从无监机器督翻译说起。无监督代码转换(翻译)可以看成是无监督机器翻译的一个子问题,或者一个简化问题。很长一段时间以来人们就在研究语言翻译里的few shots或者zero shots问题,因为小语种的翻译总是受限于稀少的平行语料。这方面出彩的工作包括 XLM,这是Facebook在BERT出现后不久就提出的用来编码多种语言的模型。也包括前面介绍过的多语种句子嵌入,里面有提到了NMT问题和Monolingual语料库在不同任务上共同发力的例子。这里有必要再跑题一下,由于Transcoder利用XLM来预训练单语料模型,我们先简要介绍一下XLM。

XLM

XLM代表Cross-lingual Language Modeling,是一种跨(多)语言模型。对应的,该模型需要一个所有语言共享的字典。

字典-- BPE

现在BPE简直成为NLP各种模型的字典标配了,在跨语言模型里更是如此。 优点是它可以有效地帮助不同语言的同形词根对齐,比如英语,德语,法语这些相近的语言。举个例子,英语的Hello和德语的Hallo共享"llo", 以此为锚点,进一步把词根周围的其他词根对齐,这里英语里的He和德语里的Ha也可以在嵌入空间找到

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值