GraphCodeBert:基于数据流的代码表征预训练模型

news2024/11/29 4:04:38

GraphCodeBert

https://arxiv.org/abs/2009.08366

1 模型结构

使用多层双向 Transformer

在这里插入图片描述
变量定义 :

  • C:源码集合
  • W:文本集合
  • V:变量集合
  • E:变量间的边的集合

输入:把注释,源代码和变量集连接为序列 X = { [CLS],W,[SEP],C,[SEP],V },其中 [CLS] 是三个段前的特殊token,[SEP]是分割两种数据类型的特殊token。

GraphCodeBERT 将序列 X 作为输入,然后把序列转换为输入向量 H 0 H^0 H0,对于 X 中的每一个 token,它的输入向量是通过将其对应的token和位置嵌入(position embedding)相加构建而来的。对变量序列中的所有变量使用特殊的 position embedding来表示他们是数据流的节点。

该模型在输入向量上应用 n 个 Transformer 来产生上下文表示。每个transformer层包含一个架构相同的 transformer block, transformer block应用多头自注意力机制。对于第 n 个 transformer 层,多头自注意力的输出 H n H^n Hn由下面的公式计算:

在这里插入图片描述

其中前一层的输出 H n − 1 H^{n-1} Hn1分别使用不同的模型参数 W 线性投影到 Q K V,u是头数, d k d_k dk 是头的维度。M(|X|×|X|)是mask矩阵,当第i个token和第j个token允许计算 attention score时,M=0,否则M为一个极大的负值。

2 Graph 引导的 Masked Attention

将图结构整合到Transformer中。

通过给注意力分数加一个非常大的负值,softmax之后,注意力分数会变成0,从而可以避免q查询k。

变量序列中,如果两个变量有一条边直接相连或者两个节点是同一变量,那么就允许q对k进行查询。

为了表示源码token和数据流节点之间的关系,定义一个新的集合E’,如果变量 v i v_i vi 是由源码token c j c_j cj 所定义,那么就表示为<vi,cj>∈E’。如果存在这种关系,那么就允许计算attendion
在这里插入图片描述

  • [CLS], [SEP] 可以和其它序列中所有的元素自由attention
  • W , C 中的元素之间可以自由attention。
  • 如果一个变量 v i v_i vi 是由源码token c j c_j cj 所定义,比如 int c = 10; 中的 code token c 和变量 c 对应,那么vi 可以和 cj 计算attention,否则不可以。
  • 变量序列中的两个变量之间只有存在数据流关系的情况下才可以计算attention

3 预训练任务

  • MLM

    MLM用于源码表示学习,MLM目标是预测随机抽样Masked token的原始token,如果源码上下文不足以推出 masked code token,可以使用注释上下文信息,从而促进模型对齐 NL-PL 表示。

  • Edge Prediction

    Edge Prediction 用于数据流的表示学习。其目的是为了让模型可以学习结构感知表示,这种表示对“值来自哪里”的关系进行编码,以便更好地理解代码。在数据流中随机抽取20%的节点v,通过在mask矩阵(M)中添加一个无限负值来mask连接这些被采样节点的直接边,然后预测这些masked边。

  • 预测 code token 和 node之间的边。其动机是鼓励模型根据数据流来对齐变量和源代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL基本功系列】第一篇 先熟悉MySQL的运行逻辑

​ 我将推出一系列关于MySQL的博客文章&#xff0c;涵盖了从入门到深入底层的原理。这些文章将包括MySQL的运行逻辑、InnoDB存储引擎、SQL优化、undo log、bin log等多个方面的知识。希望这些文章能为你提供宝贵的信息和洞见&#xff0c;并帮助你更好地理解和应用MySQL。同时&a…

国产系列 | Atlas 300I Pro 推理卡性能、应用场景、技术规格介绍

Atlas 300I Pro 推理卡是基于昇腾AI处理器的新一代高性能推理卡&#xff0c;融合“通用处理器、AI Core、编解码”于一体&#xff0c;提供超强AI推理、目标检索等功能&#xff0c;具有超强算力、超高能效、高性能特征检索、安全启动等优势&#xff0c;可广泛应用于OCR识别、语音…

UMS攸信技术与欣奕华复合机器人携手共进,领跑智能制造未来!

近年来&#xff0c;全球机器人领域的相关创新机构与科技企业不断探索人工智能、人机协作、多技术融合等领域&#xff0c;推动机器人在仓储运输、智能工厂、医疗康复等领域的深入应用。 2023年10月19日&#xff0c;攸信技术与浙江欣奕华达成战略合作&#xff0c;成为其产品特约经…

Mysql Cluster (NDB - Network Database) - 分布式

Mysql高可用架构 复制&#xff08;Replication&#xff09; 是本文中所有 MySQL 技术的基础。包括&#xff1a;异步复制、半同步复制&#xff0c;增强半同步复制。InnoDB 副本集&#xff08;MySQL InnoDB ReplicaSet&#xff09; 无缝衔接其他 MySQL 官方提供的应用程序&#…

Java智慧工地管理平台可视化大数据建造工地APP源码

建筑行业是国民经济的重要物质生产部门和支柱产业之一&#xff0c;同时&#xff0c;建筑业也是一个安全事故多发的高危行业。如何加强施工现场安全管理、降低事故发生频率、杜绝各种违规操作和不文明施工、提高建筑工程质量&#xff0c;是摆在各级政府部门、施工企业面前的一道…

多机位直播案例

目录 1、案例简述 2、设备准备&#xff1a; &#xff08;1&#xff09;笔记本电脑 &#xff08;2&#xff09;手机 &#xff08;3&#xff09;触控一体机 &#xff08;4&#xff09;教室前端监控摄像机 &#xff08;5&#xff09;教室后端监控摄像机 &#xff08;6&…

R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…

java拉取股票数据进行分析

1.背景 2.数据获取分析 3.代码获取数据 代码: package com.life.gupiao;import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.poi.excel.ExcelUtil; import…

Scala中使用Selenium进行网页内容摘录的详解

前言 公众号成为获取信息的重要途径之一。而对于公众号运营者来说&#xff0c;了解公众号的数据情况非常重要。比如&#xff0c;你可能想要获取公众号的文章内容&#xff0c;进行数据分析或者生成摘要。或者你可能想要监控竞争对手的公众号&#xff0c;了解他们的最新动态动态…

【漏洞复现】Django _2.0.8_任意URL跳转漏洞(CVE-2018-14574)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 说明内容漏洞编号CVE-2018-14574漏洞名称Django任意URL跳转漏洞漏洞…

Jmeter全流程性能测试实战

项目背景&#xff1a; 我们的平台为全国某行业监控平台&#xff0c;经过3轮功能测试、接口测试后&#xff0c;98%的问题已经关闭&#xff0c;决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

Chart 2 OpenCL简介

文章目录 前言OpenCL简介OpenCL 标准API 函数OpenCL C OpenCL Profiles总结 前言 记录本人学习OpenCL的历程&#xff0c;总结一些重要的知识点&#xff0c;作为个人学习笔记&#xff0c;参考书籍 Qualcomm Snapdragon™ Mobile Platform OpenCL General Programming and Optim…

【广州华锐互动】智慧安防应急可视化系统定制开发

随着科技的飞速发展&#xff0c;我们的生活方式正以前所未有的速度发生变化。在这个变革的时代&#xff0c;智慧安防应急可视化系统作为一种新兴的技术&#xff0c;正在为现代安全领域带来革命性的突破。本文将探讨智慧安防应急可视化系统的概念、应用和前景&#xff0c;以期为…

制造业出海如何乘风破浪?制胜绝招在这里!

目录 问题1: 企业为什么要出海&#xff1f; 问题2: 中国制造业出海企业应具备那些能力&#xff1f; 问题3: 出海应注意哪些事项以保证数据安全&#xff1f; 问题4: 出海企业应怎样做好人才管理&#xff1f; 问题5: 企业如何高质量出海&#xff1f; 国内制造领域各行各业纷…

浅析节能监管平台数据的分析及相关产品选型

摘 要&#xff1a;目前全国大部分省市都已建立节能监管平台&#xff0c;已积累了大量建筑的能耗数据&#xff0c;这些数据未能在建筑节能中得以有效应用。从能耗数据分析、应用两方面入手&#xff0c;对节能监管平台数据在建筑节能中的实际运用进行剖析。再针对节能监管平运行过…

GitLab CI/CD使用经验,来自于莫纳什大学的考试任务解析

CI/CD简介 CI/CD的作用在于自动化和加速软件开发、测试和交付流程&#xff0c;通过持续集成确保代码协同工作和质量&#xff0c;通过持续交付降低风险&#xff0c;使每次代码变更都能够快速、高质量地交付到生产环境&#xff0c;从而提高软件开发效率、质量和协作。 作业要求…

如何处理msvcp110.dll缺失的问题,msvcp110.dll修复方法分享

当我们试图运行用Visual Studio 2012开发的应用程序时&#xff0c;有时可能会收到一个错误提示&#xff1a;“程序无法启动&#xff0c;因为计算机中丢失了msvcp110.dll”。这是非常常见的DLL&#xff08;动态链接库&#xff09;错误之一。它通常是因为该dll文件丢失或损坏所造…

VERT900 Antenna

782773-01 VERT900 Vertical Antenna (824-960 MHz, 1710-1990 MHz) Dualband Includes one VERT900 824 to 960 MHz, 1710 to 1990 MHz Quad-band Cellular/PCS and ISM Band omni-directional vertical antenna, at 3dBi Gain.

如何对非线性【SVM】进行三维可视化

首先导入相应的模块&#xff0c; from sklearn.datasets import make_blobs from sklearn.svm import SVC import matplotlib.pyplot as plt import numpy as np 我们使用make_circles()函数创建散点图&#xff0c;并将散点图中的点的横纵坐标赋值给x,y&#xff0c;其中x是特…

大数据房价预测分析与可视 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据房价预测分析与可视 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适合…