智慧城市物联网时代下
更广泛地说,人工智能有潜力帮助其他编程任务。例如,Facebook AI以前共享了神经代码搜索的工具,这些工具可学习自动为编码错误提供建议修复。虽然TransCoder并非旨在帮助调试或提高代码质量,但它有潜力帮助工程师迁移旧代码库或使用以其他语言编写的外部代码。 为了促进有关使用深度学习进行代码翻译的未来研究,Facebook AI还发布了一个测试集,该测试集使其他研究人员可以使用计算精度而不是语义盲模型来评估代码翻译模型。
Facebook AI期待看到其他人在和TransCoder的合作基础上继续前进,并为新的翻译任务推进自我监督学习。 编程语言转换让实际应用受益自动代码翻译有可能使程序员在公司或开源项目中工作的程序员更加高效,因为他们可以更轻松地集成公司内其他团队或其他开源项目的各种代码。它还可以大大减少更新用古老语言编写的旧代码库的工作量和开销。
反编译的进步可能会促使公司和其他机构更新到最新的语言并促进未来的创新,这可能让使用服务的人们以及机构本身受益。编程语言机器翻译的进步也可以帮助那些没有时间或负担不起学习多种语言编程的人 仅跨语言模型预训练和自动降噪就足以生成翻译。但是,这些翻译的质量往往很低,因为从未训练过该模型以使其在测试时可以完成预期的工作,即将功能从一种语言翻译为另一种语言。 为了解决此问题,Facebook AI使用反向翻译,这是在弱监督的情况下利用单语数据的最有效方法之一。对于每种目标语言,Facebook AI使用一个模型和一个不同的开始标记。它经过训练可以从源到目标以及从目标到源并行转换。 然后可以以弱监督的方式训练模型,以从嘈杂的源序列中重建目标序列,并学习从源到目标的转换。并行训练目标到源版本和源到目标版本,直到收敛为止。 为了评估他们的模型,以前的大多数源代码翻译研究都依赖于自然语言中使用的度量标准,例如BLEU分数或其他基于标记之间相对重叠的方法。但是,这些类型的指标不太适合编程语言。语法差异小的两个程序在执行代码时可能会获得很高的BLEU分数,同时仍然产生非常不同的结果。相反,具有不同实现方式的语义等效程序,将具有较低的BLEU分数。 另一种度量标准是参考匹配,或与实地参考完全匹配的翻译百分比,但这通常会低估翻译质量,因为它无法识别语义上等效的代码。
为了更好地衡量TransCoder和其他代码转换技术的性能,Facebook AI创建了一个称为计算精度的新指标,该指标评估假设函数在给定相同输入时是否生成与参考相同的输出。Facebook AI还将发布测试集以及用于计算该指标的脚本和单元测试 图显示了TransCoder如何利用无监督机器翻译的三个原理 Facebook AI首先利用开源GitHub项目中的源代码,使用MLM目标对Facebook AI的模型进行了预训练。就像在自然语言处理的上下文中一样,这种预训练会创建跨语言的嵌入:在相似上下文中使用的来自不同编程语言的关键字在嵌入空间中非常接近(例如catch和except)。 这些嵌入的跨语言性质来自存在于多种语言中的大量通用令牌。令牌的示例包括C ++,Java和Python通用的关键字(例如,for,while,if,try),以及源代码中出现的数学运算符,数字和英文字符串。 使用MLM进行预训练使TransCoder可以生成输入序列的高质量表示。然而,解码器缺乏翻译能力,因为从未训练过解码器,基于源表示对序列进行解码。为了解决此问题,Facebook AI训练了该模型以使用降噪自动编码(DAE)目标对序列进行编码和解码。
DAE的工作方式类似于监督机器翻译算法,其中训练模型以在给定序列的损坏版本的情况下预测令牌序列。在测试时,该模型可以对Python序列进行编码,并使用C ++起始符号对其进行解码以生成C ++转换。 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |