代码智能
文章平均质量分 84
chad_lee
看论文的
展开
-
【AI4Code最终章】AlphaCode:《Competition-Level Code Generation with AlphaCode》(DeepMind)
不同于CodeX的GPT,只用Transformer的decoder,这里用的是完整的Transformer,既有encoder也有decoder。encoder输入是题目的描述(也包括题目的tags、solution使用的语言、题目中的样例),decoder的输出对应的ground-truth是一个solution,可以是对的,也可以是错的。在10次程序竞赛的成绩。模型训练分为预训练和微调,然后预测阶段先大规模采样(召回)得到一百万,然后聚类和过滤得到1000个(粗排),然后选出10个提交(精排)。...原创 2022-07-18 23:10:57 · 594 阅读 · 0 评论 -
【AI4Code】CodeX:《Evaluating Large Language Models Trained on Code》(OpenAI)
CodeX尝试了从头训练和基于GPT-3的参数fine-tuning,结果发现基于GPT-3的参数fine-tuning并没有取得效果上的提升,但基于GPT-3的参数fine-tuing可以收敛的更快,因此,论文中都采用的是这种训练策略。CodeX是在Github的159GB的代码文本上无监督的训练的,论文造了一个和HumanEval数据集格式一致的SupervisedFine-Tuning数据集,在这个数据集上fine-tuning后的模型效果更好。这点想的有点科幻了。...原创 2022-07-18 23:07:07 · 1747 阅读 · 0 评论 -
【AI4Code】《Pythia: AI-assisted Code Completion System》(KDD 2019)
它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。一种是将代码解析为抽象语法树(AST),每个节点包括两个属性type和value,所以每个节点需要两个embedding。,LSTM的输出经过一个线性层后,直接和候选集里的token的embedding做内积,然后对内积结果做softmax。,缺点是用户下拉菜单的时间可能要长于直接打代码的时间。,不过代码补全任务的候选集更小。...原创 2022-07-18 23:02:01 · 350 阅读 · 0 评论 -
《Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions》 S&P 2022
代码经常包含bug,Copilot在大量未经审查的代码上训练,模型肯定已经学习了脆弱的或者包含bug的代码。这篇文章系统性地分析了Copilot推荐不安全代码的。为了开展此分析,本文promptCopilot在与高风险网络安全弱点相关的场景中生成代码,例如那些来自MITRE的“前25名”常见弱点枚举(CWE)列表。本文在三个维度上探索Copilot的表现——产生漏洞的广泛性、prompt对产生漏洞的影响、受影响领域的广泛性。...原创 2022-07-18 22:54:01 · 421 阅读 · 0 评论 -
【AI4Code】《Unified Pre-training for Program Understanding and Generation》 NAACL 2021
此外,分析表明PLBART学习程序语法、样式(例如,标识符命名约定)、逻辑流程(例如,else块内的if块等效于elseif块)对程序语义至关重要,因此即使在有限的注释下也表现的很好。PLBART基于BARTbase架构,使用seq2seq去噪预训练来利用PL和NL中的未标记数据,这里有三种噪声策略标记屏蔽、标记删除和标记填充,将有噪音的序列输入encoder,原始序列加上位置偏移输入decoder,目标是去除噪声恢复原序列。decoder的最后一个输出送入线性分类器中分类。...原创 2022-07-14 22:38:34 · 434 阅读 · 0 评论 -
【AI4Code】《IntelliCode Compose: Code Generation using Transformer》 ESEC/FSE 2020
生成树的时候使用beamsearch,beamwith为K,假设最终生成的序列长度为L,模型一共需要预测K*L次,但是模型可以batch执行,所以一共只需要L次。4)在预训练时,加入一个languagetypeclassification任务,即多一个head,每次预测该语言的类型。对序列token化的处理,一个是用subtoken来缩小词表,一个是屏蔽字符串以防止敏感数据泄漏。1)忽略语言之间的不同,用统一的模型训练多种语言【实验表明这种方式比单独对单语言训练效果更差】...原创 2022-07-14 22:36:29 · 569 阅读 · 0 评论 -
【AI4Code】《Contrastive Code Representation Learning》 (EMNLP 2021)
现有代码表征学习方法最大的缺点是对源代码的编辑非常敏感,即编辑的代码不改变语义。训练用的是伪孪生网络,基本和HeKaiming的MOCO一样,两个encoder+MLP,输出带入InfoNCE的对比学习loss,也维护了负样本队列。文章举个例子,现有方法对于代码编辑是不鲁棒的,对代码进行超过3个单词的对抗攻击改动,codeclone检测的准确度就已经低于随机猜了。本文提出的方法是学习到代码功能的相似性,而不是形式上的相似性,因此对于。文章的核心思想就是对code进行不改变功能的扩增,然后对比学习。...原创 2022-07-14 22:31:29 · 352 阅读 · 0 评论 -
【AI4Code】《CoSQA: 20,000+ Web Queries for Code Search and Question Answering》 ACL 2021
CoSQA类似CLIP做出了一个NL-PL的query-key二分类数据集,然后类似CLIP一样双模态对齐训练,在此基础上添加了对比学习,并设计了两类数据扩增方法。双塔的encoder都是CodeBERT。原创 2022-07-14 22:26:00 · 299 阅读 · 0 评论 -
【AI4Code】《InferCode: Self-Supervised Learning of Code Representations by Predicting Subtrees》ICSE‘21
InferCode与Doc2vec类似,将AST视为文档,子树作为文档中的单词。给定AST集合{T1,T2,…,Tn}{T1,T2,…,Tn},TiT_iTi的所有子树集合{…,Tij,…}{…,Tij,…},将TiT_iTi和TijT_{ij}Tij表示为D维向量,考虑子树TijT_{ij}Tij出现在TiT_iTi∑jlogPr。...原创 2022-07-14 22:19:06 · 439 阅读 · 1 评论 -
【AI4Code】《GraphCodeBERT: Pre-Training Code Representations With DataFlow》 ICLR 2021
近年来,应用于编程语言的预训练模型得到飞速发展,相关任务比如codesearch,codecompletion,codesummarization也得到提升。但是,现有的预训练模型是将codesnippet(代码片段)视为一个token序列,忽视了。本文的GraphCodeBERT,没有用句法级别的AST,而是用的代码的数据流(dataflow)来表示源代码信息。...原创 2022-07-14 21:55:37 · 1089 阅读 · 0 评论 -
【AI4Code】《CodeBERT: A Pre-Trained Model for Programming and Natural Languages》 EMNLP 2020
将BERT应用在上编程语言(PL)和自然语言(NL),预训练完的CodeBERT得到的通用表示,可以支持下游各种任务比如自然语言代码搜索,代码文档生成等。作者还贡献了一个NL-PL的数据集。原创 2022-07-14 21:49:52 · 412 阅读 · 0 评论