网易首页 > 网易号 > 正文 申请入驻

CodeBERT: 面向编程语言和自然语言的预训练模型

0
分享至

来自哈工大SCIR的冯掌印及其团队提出了面向编程语言和自然语言的预训练模型CodeBERT。

CodeBERT通过预训 练的方式学习一个通用表示来支持下游和编程语言相关的应用,比如自然语言代码检索,代码文档生成等。

CodeBERT使用Transformer作为基本的网络结构,采用了混合目标函数: 掩码语言模型(MLM)和替换词检测(RTD)。

实验结果表明,CodeBERT在下游的自然语言代码检索和代码文档生成任务上都取得了SOTA效果。

为了进一步研究CodeBERT学到了哪些类型的知识,他们构造了第一个probing数据集,然后固定预训练好的参数来对模型进行检测。 实验结果显示,CodeBERT比其他预训练模型在probing上表现更好。

论文名称:CodeBERT: A Pre-Trained Model for Programming and Natural Languages

论文作者:冯掌印,郭达雅,唐都钰,段楠,冯骁骋,公明,寿林钧,秦兵,刘挺,姜大昕,周明

原创作者:冯掌印

论文链接:https://arxiv.org/pdf/2002.08155.pdf

代码地址::https://github.com/microsoft/CodeBERT

1

简介

大规模预训练模型在自然语言处理领域取得了重要的进展。这些预训练模型通过在没有标注的语料上进行自监督训练,可以学习到有效的上下文表示。自然语言处理领域预训练模型的成功,也推动了多模态预训练的发展,比如ViLBERT (Lu et al., 2019), VideoBERT (Sun et al., 2019)等。在本文中,我们提出了CodeBERT,通过学习自然语言和编程语言之间的语义联系,能够支撑众多NL-PL相关的任务。

2

模型

我们采用了Transformer作为模型的基本网络结构。具体地,我们使用了和RoBERTa-base完全一样的结构,即都有12层,每层有12个自注意头,每个头的大小是64,隐层维度为768。模型参数的总数为125M。

在预训练阶段,将自然语言文本和编程语言的代码拼接起来作为输入,两部分内容均使用和RoBERTa-base一样的tokenizer。数据样例如图1所示。

预训练数据集方面,我们使用了Husain等人在2019年提供的最新数据集CodeSearchNet,里面包括 2.1M双模数据和6.4M 单模数据,其中双模数据是指自然语言-代码对的并行数据,单模是指只有代码的数据。数据集中包括六种编程语言,具体数据统计结果见表1。

为了同时利用双模数据和大规模的单模数据,我们提出了混合预训练目标:掩码语言模型(MLM) 和替换词检测(RTD)。

目标1:掩码语言模型。将NL-PL对作为输入,随机为NL和PL选择位置进行掩码,然后用特殊的掩码Token进行替换。掩码语言模型的目标是预测出原始的token。目标2:替换词检测。先分别用单模的自然语言和代码数据各自训练一个数据生成器,用于为随机掩码位置生成合理的备选方案。另外,还有一个判别器学习自然语言和代码之间的融合表示,来检测一个词是否为原词。判别器实际上一个二元分类器,如果生成器产生正确的Token,则该Token的标签为真,否则为假。模型架构如图2所示。

最终,模型预训练目标为

CodeBERT经过预训练之后,在下游任务使用时需要微调。例如在自然语言代码搜索中,会使用与预训练阶段相同的输入方式。而在代码到文本的生成中,使用编码器-解码器框架,并使用CodeBERT初始化生成模型的编码器。

3

实验

我们选了四个不同的设置来验证模型的有效性,分别是自然语言代码检索,NL-PL的probing,代码文档生成,在未经过预训练编程语言上模型的泛化性。

自然语言代码检索 给定一段自然语言作为输入,代码搜索的目标是从一组代码中找到语义上最相关的代码。为了进行比较,我们选择了Husain 等人在2019年发布的 CodeSearchNet 语料库进行训练,数据集中包括六种编程语言,各种语言的数据统计如表2所示。

我们保持和官方一致,使用MRR作为评价指标。另外,我们计算了六种编程语言上的宏平均作为整体的评价指标。结果如表3所示,相比之前的模型,我们的模型取得了明显的提升。

NL-PL Probing 这部分实验主要研究在固定模型参数的情况下,研究CodeBERT学习到了哪些类型的知识。目前学界还没有针对NL-PL Probing的工作,所以在这部分实验中,我们首先创建了数据集。具体地,我们将其构造成了多项选择题任务,给定输入,让模型选择正确的结果。根据输入和选项的不同,数据集又分为三个部分。模型比较结果如表4所示,结果显示,我们的模型在三个不同的设置下都能够达到最好的结果。

代码文档生成 我们研究了在预训练的六种编程语言上,代码到文档的生成问题。为了证明CodeBERT在代码到文档生成任务中的有效性,我们采用了各种预训练的模型作为编码器,并保持了超参数的一致性。实验结果如表5所示,我们的模型在所有编程语言类别上均获得最好的效果。

泛化能力 为了进一步研究模型的泛化性,我们在代码文档生成任务中,在C#编程语言上进行了测试。我们选择了Codenn数据集,这是一个包含Stack Overflow自动收集的66015对问题和答案的数据集,并采取了和原论文同样的设置进行实验。结果如表6所示,相比RoBERTa,我们的模型能够取得更好的结果。但是,我们的模型效果略低于Code2Seq,这可能是因为该模型有效使用了代码中的AST信息。

4

总结

在本工作中,我们提出了第一个面向编程语言和自然语言的预训练模型,并且在下游的自然语言代码检索,代码文档生成任务上,我们的模型均取得了SOTA的效果。另外,我们构造了第一个NL-PL Probing数据集来研究预训练模型学到了哪种类型的知识。虽然我们的模型已经取得了很好的效果,但也有很多潜在的方向值得进一步研究,比如在预训练过程加入与生成相关的目标函数,加入编程语言的AST结构信息等。

AI 科技评论将会在留言区选出 15名读者,每人送出《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)》一本(在其他公号已获赠本书者重复参加无效)。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
纳瓦尔:不要去管别人,只管早睡、运动和读书

纳瓦尔:不要去管别人,只管早睡、运动和读书

书窗小记
2026-05-06 21:38:32
小时候冠军堆成山,U17却输印尼!杨旭揭穿中国足球最大谎言

小时候冠军堆成山,U17却输印尼!杨旭揭穿中国足球最大谎言

曹老师评球
2026-05-08 23:55:19
夺冠难了!维拉进欧联决赛引发连锁反应 2队为欧冠资格将死拼曼城

夺冠难了!维拉进欧联决赛引发连锁反应 2队为欧冠资格将死拼曼城

雪狼侃体育
2026-05-08 16:36:08
歪打正着!一旦美欧把中国踢出全球供应链,那中国国运来了挡不住

歪打正着!一旦美欧把中国踢出全球供应链,那中国国运来了挡不住

探源历史
2026-05-08 03:49:20
马斯克神预言应验!全球疯抢的不是芯片,是中国20万一台的变压器

马斯克神预言应验!全球疯抢的不是芯片,是中国20万一台的变压器

Thurman在昆明
2026-05-08 19:54:50
中方丝毫不退让,荷兰威胁不买大陆芯片,外媒:欧盟忍耐到极点

中方丝毫不退让,荷兰威胁不买大陆芯片,外媒:欧盟忍耐到极点

疯狂小菠萝
2026-05-08 13:35:05
李赛凤的乱伦,床缝摸出个用过的套,衣柜里还藏着个半裸的干儿子

李赛凤的乱伦,床缝摸出个用过的套,衣柜里还藏着个半裸的干儿子

西楼知趣杂谈
2026-04-26 10:18:11
空腹抽血,喝水算不算破坏?很多人意外!检验科医生权威解答

空腹抽血,喝水算不算破坏?很多人意外!检验科医生权威解答

环球网资讯
2026-05-06 13:46:09
别骂国足不接东南亚杯!不是怕输,是国际足联的生意我们玩不起

别骂国足不接东南亚杯!不是怕输,是国际足联的生意我们玩不起

圣西罗的太阳
2026-05-07 20:46:15
广东揭阳怪事!停工自建房钢筋长出嫩芽,半空无种子太反常

广东揭阳怪事!停工自建房钢筋长出嫩芽,半空无种子太反常

观察鉴娱
2026-05-08 09:48:09
一粒减肥神药掀翻7个行业!百事麦当劳股价大跌,保险养老竟也被迫重大调整

一粒减肥神药掀翻7个行业!百事麦当劳股价大跌,保险养老竟也被迫重大调整

爆角追踪
2026-05-05 20:01:26
国乒3-0击败韩国晋级四强,韩媒直言差距太大

国乒3-0击败韩国晋级四强,韩媒直言差距太大

吴锎旅行ing
2026-05-09 00:54:43
以色列已经告诉世界:日本若敢拥有核武器,美国并不会第一个翻脸

以色列已经告诉世界:日本若敢拥有核武器,美国并不会第一个翻脸

趣文说娱
2026-04-17 21:37:03
喝酒后出现这3个现象,说明你的身体已不适合喝酒,再喝就是玩命

喝酒后出现这3个现象,说明你的身体已不适合喝酒,再喝就是玩命

深度报
2026-04-24 22:31:58
39岁男子在公司外猝死,事前曾说“身上冷”,家属认为其在岗期间身体不适申请工伤,公司:他已正常下班几个小时

39岁男子在公司外猝死,事前曾说“身上冷”,家属认为其在岗期间身体不适申请工伤,公司:他已正常下班几个小时

极目新闻
2026-05-08 16:11:52
白衣美女,身材真好

白衣美女,身材真好

蓝色海洋009
2026-05-07 20:42:57
7800亿军购案通过背后,蓝营一人背弃郑丽文,赵少康发起挑战

7800亿军购案通过背后,蓝营一人背弃郑丽文,赵少康发起挑战

DS北风
2026-05-08 20:26:30
外交部:霍尔木兹海峡受袭船上有中国籍船员 暂未收到有伤亡情况

外交部:霍尔木兹海峡受袭船上有中国籍船员 暂未收到有伤亡情况

每日经济新闻
2026-05-08 17:21:13
现役球员季后赛总得分TOP6,只有哈登没有总冠军

现役球员季后赛总得分TOP6,只有哈登没有总冠军

懂球帝
2026-05-08 11:07:06
“机车女神”痞幼拿下张雪!评论区沦陷了!

“机车女神”痞幼拿下张雪!评论区沦陷了!

4A广告文案
2026-05-07 09:13:48
2026-05-09 02:20:49
AI科技评论 incentive-icons
AI科技评论
点评学术,服务AI
7254文章数 20751关注度
往期回顾 全部

科技要闻

SK海力士平均奖金600万 工服成相亲神器

头条要闻

外籍银行高层在香港豪宅性虐及杀害两女子 内幕解密

头条要闻

外籍银行高层在香港豪宅性虐及杀害两女子 内幕解密

体育要闻

他把首胜让给队友,然后用一年时间还清账单

娱乐要闻

古天乐被曝隐婚生子,新娘竟是她

财经要闻

估值3000亿 DeepSeek寻求500亿元融资

汽车要闻

MG 4X实车亮相 将于5月11日开启盲订

态度原创

数码
艺术
旅游
教育
军事航空

数码要闻

华硕京东重磅新品日,华硕天选7系列游戏本开启预约

艺术要闻

砸22亿!OPPO在东莞建了一批“O字楼”

旅游要闻

社评:中国的“Country Walk”何以吸引西方年轻人

教育要闻

摒弃打压式教育,皮格马利翁效应

军事要闻

伊朗:最高领袖穆杰塔巴全面掌控局势

无障碍浏览 进入关怀版