代码也能预训练微软&哈工大最新提出CodeBERT模型支持自然-编程双语处理

2、本文提出了一个混合学习目标,能够支持使用双模数据NL-PL,且能够很容易地应用到单模数据中(例如没有自然语言文本的编程代码);

在具体的训练过程,作者用了六种编程语言在多语言BERT的设置中训练模型。 我们首先来看下CodeBERT的模型框架。

自2020年12月11日起,进口经营者在进口原产于澳大利亚的相关葡萄酒时,应依据本初裁决定所确定的各公司的从价补贴率向中华人民共和国海关提供相应的临时反补贴税保证金。临时反补贴税保证金以海关审定的完税价格从价计征,计征公式为:临时反补贴税保证金金额=海关审定的完税价格×临时反补贴税保证金比率。相应地,进口环节消费税保证金金额=(海关审定的完税价格+关税+临时反补贴税保证金)÷(1-消费税税率)×消费税税率,进口环节增值税保证金金额=(海关审定的完税价格+关税+临时反补贴税保证金+进口环节消费税保证金)×增值税税率。

大出行:出行受限而旅游关注度仍较高 新能源汽车热度回升

论文链接:https://arxiv.org/pdf/2002.08155.pdf这篇论文提出了一个被称为「CodeBERT」的双模预训练模型,据作者介绍,这也是目前已知的第一个大型 NL-PL(自然语言-编程语言)预训练模型。

1、自然语言代码搜索

 模型训练的最后一步是模型微调,具体操作是在NL-PL任务中使用不同的CodeBERT设置。例如在自然语言代码搜索中,会使用与预训练阶段相同的输入方式。而在代码到文本的生成中,使用编码器-解码器框架,并使用CodeBERT初始化生成模型的编码器。

 在模型的整体架构上,CodeBERT并未脱离BERT和Roberta的思想。和大多数工作类似,作者使用了多层双向Transformer。更为具体一点,作者使用的模型架构与Roberta-base完全相同,即都有12层,每层有12个自注意头,每个头的大小是64,隐藏尺寸为768,前馈层的内部隐藏尺寸为3072。

雷锋网原创文章,。详情见转载须知。

针对自然语言代码搜索,在这篇论文里,作者在 CodeSearchNet语料库上对CodeBERT进行了预训练并做微调,这是一个包含了 6 种较为普遍的代码语言(分别为Ruby、JavaScript、Go、Python、Java、PHP)的语料库。如下图所示,他们在自然语言代码搜索任务中取得了SOTA的结果:

大制造:防疫用品生产成“热点” 用户购房装修需求较快恢复

在汽车领域,轿车和SUV是近期用户搜索最多的车型,以安全性著称的德系车是轿车中最受关注的车系,SUV中则是自主品牌更受欢迎。报告指出,相关鼓励政策的出台也影响着民众的购车选择。近日,工信部发布的《关于有序推动工业通信业企业复工复产的指导意见》中指出,将重点支持新能源汽车、智能制造等战略性新兴产业。在政策指引下,新能源汽车在遇冷后又重新回温。报告中同样反映了这一趋势,数据显示,自2月份以来,新能源汽车的日均搜索热度比春节期间增长60%。

与求职相对,创业也是择业的另一重要选择。然而,因受疫情冲击,许多留有创业需求的新人在相对艰难的环境下,往往会选择风险更低、投入时间成本较小的“经济自由”方式,以实现“非常时期”的安稳过渡。据报告显示,进入便捷、地区适应性较高的招商加盟模式成为企业服务行业中关注度最高的细分领域,较春节期间环比增长173%;其中下沉市场的红利依旧,三线城市对招商加盟的搜索热度最高。

数据集统计 训练CodeBERT所使用的数据集是Husain等人在2019年提供的最新数据集,里面包括 2.1M双模数据和6.4M 单码数据,其中双模码数据是指自然语言-代码对的并行数据,单码是指“未成对”的数据。 另外一些数据来自开源Nonfork GitHub仓库。对这些数据的处理是采用了一些约束和规则进行过滤。

“搜索平台上的用户全系列行为实际上起到了数据样本和样本数据的价值,可以帮到各类企业更好地研判市场、决策交易和引导客户,并制定出基于现实动态的企业经营行动和传播营销方案”。国家广告研究院研究员马旗戟专家表示,搜索不仅是人们主动发起的认识行为,反映用户需求、动机和目的,在宏观视角下,大量搜索痕迹也可以作为研判对象,呈现复杂社会运行的本质和全貌,甚至能准确预测事件、商业的走向,进而帮助各企业主做出合理的决策和采取正确的行动,从而在疫情之后的社会经济和商业振兴中占据有利的位置。

推广:猎云银企贷,专注企业债权融资服务。比银行更懂你,比你更懂银行,详情咨询微信:zhangbiner870616,目前仅开通京津冀地区服务。

与其他线下行业不同的是,春节后是旅游行业的常规淡季,加上受疫情影响,今年春节之后用户旅游出行的需求就一直处于较低迷水平。但细分数据可以看出旅游作为一个刚需仍有很大的爆发空间。

另外,还有一个学习生成器用来检测一个词是否为原词,其背后原理是一个二进制分类器,这里与GAN不同的是,如果生成器碰巧产生正确的Token,则该Token的标签是“real”而不是“fake”。

该预训练模型能够处理NL-PL 的普遍问题,例如用自然语言搜索代码、自动生成代码等。 所谓自然语言代码搜索,所要解决的问题是,如何通过自然语言query查找到所需的代码块,这和我们常用的搜索引擎(通过自然语言query来查找所需网页)类似。

我们用几句话来总结这项工作的意义: 

针对这个任务,CodeBERT也基本上都取得了SOTA结果,特别是相较于之前的ROBERTa模型,更是有显著的提高。 值一提的是,CodeBERT有一大亮点,即尽管它只在Ruby、JavaScript、Go、Python、Java、PHP等代码语言上进行了预训练,但预训练的模型却可以泛化到其他代码语言任务上,例如C#语言。  

 这部分实验主要研究在不更改参数的的情况下,Code BERT能够学习哪些类型的知识。目前学界还没有针对NL-PLProbing的工作,所以在这部分实验中,作者自行创建了数据集。 给定NL-PL对,NL-PL Probing的目标是测试模型的正确预测能力。模型比较结果如下图所示: 

根据《反补贴条例》第二十九条和第三十条的规定,商务部向国务院关税税则委员会提出对原产于澳大利亚的进口相关葡萄酒采取临时反补贴措施的建议。国务院关税税则委员会根据商务部的建议作出决定,自2020年12月11日起,采取临时反补贴税保证金的形式对原产于澳大利亚的进口相关葡萄酒实施临时反补贴措施。

数据显示,疫情期间网民的出行需求下降幅度较大,而对旅游信息的关注度下降幅度较小,可见网民的旅游需求依然强烈,随着疫情结束很可能集中爆发。在旅游类型分布上,用户关注的旅游类型主要集中于国内游,占比高达78%,遥遥领先于出境游。

三、征收临时反补贴税保证金的方法

自新冠肺炎疫情蔓延以来,物资生产需求持续走高,不仅国家紧急协调各方资源保障供给,众多企业也加速复工复产,跨界生产防护物资。报告显示,2月以来,生产制造行业普遍复苏较快,口罩生产设备飙升最为典型。数据指出,生产相关防疫用品的机械设备迎来增长潮,搜索热度环比春节前上涨94%。在用户热搜的生产制造品类中,口罩生产设备排名前列,挖掘机、测温仪等防疫生产力的“后勤”保障位居其后。

目标二:替换Token检测。在这部分有两个数据生成器,分别是NL生成器和PL生成器,这两个生成器都用于随机掩码位置集(randomly masked positions)生成合理的备选方案。

在预训练阶段,作者首先对每种语言的数据集进行了训练。数据集分割如下: 

各利害关系方在本公告发布之日起10天内,可向调查机关提交书面评论意见。

报告显示,2月开始,大多数行业需求逐步回升。生产制造、房产装修、招聘、企业服务等4个行业复苏较快,2月的日均搜索热度比春节期间增长均达到110%以上;旅游行业受疫情影响较大,目前仍未见明显拐点,搜索热度仍处于较低水平。智能小程序成为网民在搜索产品里获取信息和服务的重要载体。

报告特约专家,中国社科院信息化研究中心主任、信息化与网络经济室主任、研究员姜奇平指出,疫情正在催生智能经济中一个重要趋势性变化,智能经济将助力多样性红利浮现,该报告展现了智能经济中的需求与机会,同时也揭示出智能经济中的创新动能。

大服务:求职招聘受疫情影响较小 创业者关注新媒体、电商

调查机关对被调查产品是否存在补贴和补贴幅度、被调查产品是否对国内产业造成损害及损害程度以及补贴与损害之间的因果关系进行了调查。根据调查结果和《反补贴条例》第二十五条的规定,调查机关作出初步裁定。现就有关事项公告如下:

调查范围:原产于澳大利亚的进口装入2升及以下容器的葡萄酒。

 作者做了四个实验,分别是:1)将CodeBERT应用到自然语言代码搜索任务上,并与传统方法进行对比;2)进行NL-PL Probing实验,考察CodeBERT在预训练阶段到底学习了什么知识;3)将CodeBERT应用到生成任务当中;4)考察CodeBERT预训练模型的泛化能力,发现效果非常之好。 

性能相比于之前的SOTA模型ROBERTa取得了显著的提高。  

上表显示了正确预测实例的数量与全部实例数量的比例。可以看出,在各个变成语言的预测上,CodeBERT基本都取得了最高的分数。但由于不同编程语言的数据集非常不平衡,因此用累计的数据进行比较更为恰当,在PL和NL的probing中,CodeBERT的结果都要比RoBERTa高10~20个百分点。 也可以用一个具体的案例来对比下。下图案例中分别掩盖了NL和PL中的“min”:

主要用途:主要作为饮料酒供人消费。

虽然作者也按照一定的顺序通过遍历AST的树结构来训练CodeBert,但并不会带来生成任务的改进。这种结果意味着结合AST来改进codebert是潜在方向。

给定一段自然语言作为输入,代码搜索的目标是从一组代码中找到语义上最相关的代码。为了进行比较,作者选择了Husain 等人在2019年发布的 CodeSearchNet 语料库进行训练。这个语料库框架如下图所示,共包含6中常见的编程语言(Python、JavaScript、Java、Ruby、PHP、Go)。 

数据还指出,求职大军更倾向于通过招聘平台获取求职相关信息,58同城、前程无忧、百度百聘为代表的综合性招聘平台和各地方性招聘平台关注度持平。除了招聘平台,工作地点、薪酬、职位类型和招聘信息的时效性是用户择业时最主要的信息关注点。

从这个结果可以看出,相较于RoBERTa,CodeBERT能够更好地推广到其他编程语言。不过值得注意的是,模型的效果略低于code2seq,作者认为原因可能是code2seq使用其抽象语法树AST中的组合路径,而CodeBERT仅将原始代码作为输入。

在微调阶段,设置学习率为1e-5,批量大小为64,最大序列长度为200,最大微调周期为8,并使用Adam来更新参数,并从开发集中选择出表现最好的模型,并用于测试集上进行评估。 结果如下表所示: 

进口经营者在进口被调查产品时,应依据本初裁决定所确定的各公司的从价补贴率向中华人民共和国海关提供相应的临时反补贴税保证金。

模型参数的总数为125M。 在预训练阶段,总共设计了两部分输入,一个是自然语言文本,另一个是编程语言的代码。对于自然语言文本将其视为单词序列,并拆分为WordPiece。对于编程代码,将其看做Token序列。 CodeBERT的输出也包括两个部分:1、聚合序列表示;2、有标记的上下文向量(contextual vector)。 

BERT作为一种双向Transformer的编码器,其对预训练方法的创新深受业界和学术界的喜爱,虽然其他大规模的预训练模型例如ELMo、GPT等已经能够在各种NLP任务中提升SOTA。 

调查机关初步认定,原产于澳大利亚的进口相关葡萄酒存在补贴,国内相关葡萄酒产业受到实质损害,而且补贴与实质损害之间存在因果关系。

3、CodeBERT在自然语言代码搜索和代码文档生成两个任务中都达到了SOTA性能,此外作者在实验中还建立了一个数据集来研究NL-PL预训练模型的探测能力,方便了以后跟进的研究人员。

 这部分研究代码到文档的生成问题,并在六种编程语言中研究了生成任务在Code Search Net Corpus上的结果。 另外,为了证明CodeBERT在代码到NL生成任务中的有效性,作者采用了各种预训练的模型作为编码器,并保持了超参数的一致性。  实验结果如下:

产品描述:以鲜葡萄或葡萄汁为原料,经全部或部分发酵酿制而成的装入2升及以下容器的葡萄酒。

一个NL-PL对,其中红线框中的是NL文本,黑色框是PL文本。 为了利用Nl-PL对的双模实例(bimodal instances)以及大量可用的单模代码(unimodal codes),作者使用了混合目标函数来训练CodeBERT,包括标准掩码语言建模和可替换Token检测。

被调查产品名称:装入2升及以下容器的葡萄酒,简称“相关葡萄酒”。

与此同时,搜索生产制造相关内容的用户对生产相关专业知识最为关注。如“开口罩厂需要什么设备”、“激光打印机和喷墨打印机的区别”等,侧面展现出疫情时期生产者在入局前趋向谨慎的行为导向。

具体来说,CodeBERT抓住了自然语言和编程语言之间的语义联系,能够支持自然语言代码搜索等NL-PL理解任务以及一系列像代码生成这样的生成任务。 

在编程语言上进行预训练的模型的性能优于ROBERTa 

目标一:掩码语言建模。将NL-PL对作为输入,随机为NL和PL选择位置进行掩码,然后用特殊的掩码Token进行替换。注意,掩码语言建模的任务是预测出被掩码的原始Token。 

 如前面提到,微软的 Bing 在2018年便已经上线了代码搜索功能,可以预期,基于预训练的代码功能也将很快落实到 Bing 的产品当中,从而提供能加优质的服务。同时我们也可以期待,该项工作能够在近期开源,以让更多研究人员快速跟进这一工作。

作为生活刚需,房产装修行业存在较大需求存量,在疫情好转后较快反弹。报告数据显示,2月起,用户对房产装修的关注度快速恢复增长,日均搜索热度比春节期间增长120%,逐步接近往年同期水平。从区域分布上看,新一线城市的房产装修需求最高,而经济风险抵御能力较弱的低线级城市,在房产装修上仍处于观望态度,预计未来增长空间较大。

该产品归在《中华人民共和国进出口税则》:22042100。

而另一方面,代码文档生成任务,是未来能够极大节省程序员工作量的极具前景的一个研究方向。如下图所示,

学习器的损失函数 经过调整后,损失函数优化如下:

由于疫情期间小微企业受到冲击,招聘行业供给减少,求职需求大增。2月以来企业复工复产,招聘黄金期来临。数据显示,自2月起,招聘、求职相关内容搜索热度增幅达165%。而随着企业的有序复工复产,未来求职招聘需求走势将持续走高。

随着疫情得到控制,各行业开始复工复产,用户需求也开始全面恢复。3月24日,百度发布《六大线下行业复苏搜索大数据报告》(以下简称“报告”),通过聚焦汽车、旅游出行、生产制造、房产装修、招聘、企业服务六大行业在疫情爆发以来的搜索趋势变化,以大数据的视角展现了线下行业的复苏情况。

但是上述提到的模型基本上都是面向自然语言处理,例如掩蔽语言建模、从未标记文本学习上下文表示。 相比以往的Bert的应用场景,作者另辟蹊径,推出双模态预训练模型,即兼顾NLP任务和Python、Java等编程语言。 

可替换Token检测目标图解 在模型训练的设计上,其主要包括两个目标,其一是掩码语言建模,其二是可替换Token检测。在第二个目标中,作者进一步使用了大量的单模码数据。 

而值得关注的是,大量用户在疫情期间养成的宅家办公、宅家买菜习惯与相关“宅娱”休闲方式的兴起,也促使线上娱乐及O2O零售成为创业焦点。报告显示,电商、新媒体也成为各线级城市用户更为关注的招商加盟类型。

声明:新浪网独家稿件,!

被调查产品的具体描述如下:

1、据作者表示,CodeBERT也是目前已知的首个大型的NL-PL(自然语言-编程语言)预训练模型;

(雷锋网(公众号:雷锋网))