当前位置: 首页 > news >正文

中国建设银行云南省分行官方网站/现在最好的免费的建站平台

中国建设银行云南省分行官方网站,现在最好的免费的建站平台,二级分销被国家叫停,如何做电影网站不违法TreeBERT https://arxiv.org/abs/2105.12485 Comments: Accepted by UAI2021 Subjects: Machine Learning (cs.LG); Programming Languages (cs.PL) Cite as: arXiv:2105.12485 [cs.LG] 1 Introduction 现有挑战: 设计适当的机制来学习程序的语法结构 代码是强结…

TreeBERT

https://arxiv.org/abs/2105.12485

Comments: Accepted by UAI2021
Subjects: Machine Learning (cs.LG); Programming Languages (cs.PL)
Cite as: arXiv:2105.12485 [cs.LG]

1 Introduction

现有挑战:

  • 设计适当的机制来学习程序的语法结构

    代码是强结构化的,代码的语义依赖于要表示的具有不同语法结构的程序语句和表达式的组合,不能仅仅采用类似于自然语言的处理方法(简单的将代码建模为单词序列)。

    如何使用AST作为预训练模型的输入?

  • 树形结构的预训练任务探索

    面向序列的任务直接应用于非顺序结构化AST中存在一些不恰当的问题,因此,需要为树设计新的预训练任务,使预训练模型能够同时从AST中提取语法和语义信息。

主要贡献:

  • 提出了TreeBERT,一个面向pl的基于树的预训练模型。
  • 遵循Transformer编码器-解码器架构。为了使Transformer能够利用树形结构,将代码片段对应的AST表示为根节点到终端节点路径的集合,然后引入节点位置嵌入以获得节点在树中的位置。
  • 提出了一种适用于AST的混合目标来学习语法和语义知识,即树掩码语言建模(TMLM)和节点顺序预测(NOP)。
    • 在TMLM中,在编码器侧输入具有屏蔽节点的AST路径集,并在解码器侧使用AST中的上下文信息预测完整的代码片段。
    • 由于路径中节点的顺序表达了程序结构信息,NOP通过预测节点是否无序来提高模型捕获语法结构信息的能力。

2 Model

2.1 Model Architecture

采用transformer的编码器-解码器结构。修改了Transformer的编码器端,只添加了一个完全连接的层来调整输入的维度。

2.2 Input Representation

AST Representation

AST以树的形式展示了程序的语法结构。树中的每个节点表示代码中的一个结构。

AST节点分为两类:

  • 类型节点(type node),用 v 表示。
  • 值节点(value node),用 x 表示。值节点几乎都是叶节点(终端节点),除了函数名是非叶子节点但是使用了 value 属性。

用从根节点到叶节点的路径集合表示AST,A = { p1,p2,…,pN },N表示AST中路径的个数。

在这里插入图片描述

Code Representation

与AST相应的代码片段被分割成一系列 tokens,[LT][CLS] 分别被添加在序列的开始和结尾处。

C = [LT],x1,x2,…,x3,[CLS] ,其中 [LT][LT] 的向量表示, [CLS][CLS] 的向量表示,M是代码片段的长度。

C 被使用在解码器的输入。[EOS] 是解码器端的句尾标识符。

[LT] 不仅作为解码器端的句子开头标识符,它的值还表示目标编程语言的类型。例如, [LT] = [PLT] 表示语言类型是 Python,[LT] = [JLT] 表示语言为Java,当 [LT] = [UNK] 时表示编码器生成的语言是在预训练阶段未见过的语言。这样定义是因为在将代码片段转换为AST时,隐藏了不同类型语言的实现细节,我们需要提示语言类型,以便模型了解不同编程语言之间的差异。

使用 [CLS] 作为NOP的聚合表示。

在这里插入图片描述

Path Representation

每一个 path 是一个 nodes 序列, p i = v 1 i v 2 i . . . v L − 1 i x t i p_i=v^i_1v^i_2...v^i_{L-1}x^i_t pi=v1iv2i...vL1ixti,path 上的叶子节点 x t i x^i_t xti 是对应的代码片段的一个 token,L是 path 的长度。

我们将路径上的节点向量连接起来以表示路径:

p i = C o n c a t [ v 1 i ; v 2 i ; . . . ; v L − 1 i ; x t i ] ; p_i=Concat[v^i_1;v^i_2;...;v^i_{L-1};x^i_t]; pi=Concat[v1i;v2i;...;vL1i;xti];

路径集合中的路径表示向量之间没有排序关系。因此,与标准Transformer不同,我们的模型编码器端不添加位置编码来为路径向量分配位置信息,而是在形成节点表示时使用节点位置嵌入来添加树中节点的位置信息。

Token Representation

使用字节对编码(BPE),从AST的值节点和代码片段中学习最常见的 subtoken,并对其进行切片,例如 “third_party” 可能被切片成 “third” ,“-” 和 “party”,使用过程每个token 的所有 subtoken 的向量和来表示完整的 token。

AST中的类型节点数量固定且较少,直接通过embedding将其表示为 实值向量。

Node Posiotion Embedding

一个节点的 position embedding 是其父节点的 position embedding 与它相应的 level embedding 的线性组合。

由 H+1 个 level embedding 作为参数,即 W l e v e l W^{level} Wlevel,其中H为树的高度。我们使用 W 0 l e v e l W^{level}_0 W0level作为根节点的 parent position embedding。如果在 第 j 层有一个节点,它的 position embedding 是 W p a r e n t W^{parent} Wparent 并且它由 c 个子节点,那么它的第 i 个子节点的 position embedding 表示为:
在这里插入图片描述

其中 W p a r e n t W^{parent} Wparent W l e v e l W^{level} Wlevel 是可学习的线性矩阵。Node Posiotion Embedding 可以获得层次信息和节点的父节点和兄弟节点的相对位置信息。

2.3 Pre-training Tasks

Tree Masked Language Modeling (TMLM)

给定 AST-code 片段对,提出一种屏蔽AST中的节点和代码片段的tokens的策略。

在编码器端,首先根据概率 { q n i } n = 1... L \{q^i_n\}_{n=1...L} {qni}n=1...L的分布对路径 p i p_i pi 上的节点进行采样,并使用 TOPK() 操作去选择概率最大的k个节点 m i A m^A_i miA,然后用一个特殊 token [mask] 替换路径 p i p_i pi 中的这些节点,得到 p i m a s k e d p^{masked}_i pimasked

在这里插入图片描述

其中 A m a s k e d A^{masked} Amasked 代表 masked 路径的结合, l l l 是当前的节点层次, L L L 是路径中最大的节点层数, N N N 为AST中包含的路径个数, i = 1... N i=1...N i=1...N。注意, L L L 被减去是为了防止数值溢出,这确保了路径中在较大层次的节点被屏蔽的概率更高。

TMLM以更高的概率屏蔽路径中靠近终端的节点。主要原因是:

  1. 由于每条路径都是从根节点到终端节点,所以节点离根节点越近,在路径集中重复的次数就越多。如果我们使用标准的MLM屏蔽策略,许多相同类型的节点被屏蔽。重复学习这些节点的表示会损害模型的性能。
  2. AST的终端节点通常是指用户自定义的值,这些值代表代码中具有丰富含义的标识符和名称。因此,更频繁地屏蔽这些节点可以迫使我们的模型学习它们的表示。

在解码器端,解码器的输入 C m a s k e d C^{masked} Cmasked是通过屏蔽代码片段中的 tokens 获得的,屏蔽公式如下:
在这里插入图片描述
其中 m A = m 1 A ∪ m 2 A ∪ . . . ∪ m N A m^A=m^A_1∪m^A_2∪...∪ m^A_N mA=m1Am2A...mNA x x x 是集合 m C m^C mC 中需要被 mask 的元素。

我们保留与 m A m^A mA 中的值节点对应的 tokens,屏蔽代码片段 C 中的其他节点。这样,通过下一个 token 的预测,TMLM可以强制解码器依赖于 AST 的特征表示,而不是代码片段中的 previous token。

下图显示了一个示例,灰色节点意味着节点被 masked。根据前面的策略,在AST 中,四条路经被 masked 的节点集合为: m 1 A = { v 4 , x 1 } , m 2 A = { x 2 } , m 3 A = { } , m 4 A = { x 4 } m^A_1=\{v_4,x_1\},m^A_2=\{x_2\},m^A_3=\{\},m^A_4=\{x_4\} m1A={v4,x1},m2A={x2},m3A={},m4A={x4},在代码片段中,值节点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3 是被给出的,其它节点是被 masked 的,即 m C = { x 3 , x 5 } m_C=\{x_3,x_5\} mC={x3,x5}。解码器需要做的是预测完整的代码片段 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 x_1,x_2,x_3,x_4,x_5,x_6 x1,x2,x3,x4,x5,x6
在这里插入图片描述

在TMLM中,**编码器读取被屏蔽的AST路径集合,然后解码器推断出与AST对应的代码片段。**当代码转换为AST时,隐藏了一些语义信息,如“+”,“>”,“<=”等二进制操作符在AST中使用“BinOpSub”节点表示。在这种情况下,如果解码器被设计为预测AST,则上述语义信息将被忽略。因此,我们设计解码器来预测代码片段,以鼓励模型推断这些语义信息,从而增强其在下游任务中的泛化能力。

总之,TMLM可以强制编码器理解AST并推断隐藏在AST中的语义信息

Node Order Prediction(NOP)

为了进一步提高从程序中提取语法结构信息的能力,我们设计了二值化预训练任务NOP。

AST中节点的顺序有一些隐式约束。以上图中的AST结构为例,“if”节点下必须有一个“body”节点,“body”节点下必须有一个“Expr”节点。为了获取这种语法结构信息,我们以一定的概率决定是否随机交换路径中某些节点的位置,然后训练模型来区分AST中节点的顺序是否正确。如图2所示,我们交换节点v3和v5的位置(图中绿色的节点代表交换位置)。

[CLS] 的隐向量通过一个全连接层压缩到一维,然后通过sigmoid函数得到AST路径中无需节点存在的概率 y’

3 Experiment

为了验证TreeBERT的有效性,TreeBERT对两个生成任务进行了微调,并与基线进行了比较。生成任务是代码总结和代码文档。我们还评估了TreeBERT在c#数据集上的性能,并通过实验证明TreeBERT可以很好地推广到预训练阶段未见的编程语言。

4 Conclusion

改进策略:

  1. TreeBert不仅可以用于代码摘要和代码文档之类的任务,还可以用于源语言能够进行AST构造的任何任务。继续探索将TreeBERT应用于更多 PL 任务的可能性。
  2. 进一步改进TreeBERT,例如在AST中添加更多的程序信息,或者同时使用AST、graph和sequence等多模态形式,从而从不同的角度提取程序信息,使TreeBERT能够更好地解决PL下游任务。

相关文章:

TreeBERT:基于树的编程语言预训练模型。

TreeBERT https://arxiv.org/abs/2105.12485 Comments: Accepted by UAI2021 Subjects: Machine Learning (cs.LG); Programming Languages (cs.PL) Cite as: arXiv:2105.12485 [cs.LG] 1 Introduction 现有挑战&#xff1a; 设计适当的机制来学习程序的语法结构 代码是强结…...

生成小程序的二维码的base64码(中间logo可以自定义)

1.生成基础二维码 /*** 生成微信小程序二维码&#xff0c;带参数,最终转成base64* param page 当前小程序相对页面 必须是已经发布的小程序存在的页面(否则报错)&#xff0c;例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里)&#xff0c;如果不…...

【音视频 | Ogg】Ogg封装格式详解——包含Ogg封装过程、数据包(packet)、页(page)、段(segment)等

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

ubuntu 22.04 安装ros2 iron

目录 一、镜像 二、ifconfig 三、ssh连接不上 四、安装iron 一、镜像 123云盘直接下载 二、ifconfig sudo apt install net-tools 三、ssh连接不上 sudo apt install openssh-server 四、安装iron Ubuntu (Debian packages) — ROS 2 Documentation: Iron document…...

PHP语言、B/S手术麻醉临床信息管理系统源码

手术麻醉临床信息管理系统有着完善的临床业务功能&#xff0c;能够涵盖整个围术期的工作&#xff0c;能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施&#xff0c;能够规范麻醉科的工作流程&#xff0c;实现麻醉手术过程的信息数字化&#xff0c;自动生…...

Win11安装网络打印机

https://support.microsoft.com/zh-cn/windows/%E5%9C%A8-windows-%E4%B8%AD%E5%AE%89%E8%A3%85%E6%89%93%E5%8D%B0%E6%9C%BA-cc0724cf-793e-3542-d1ff-727e4978638b...

逆向学习记录(3)工具介绍jadx、gda和jeb

1、jadx 下载地址如下&#xff0c;目前最新版本为v1.4.7&#xff0c;改成想要下载的版本号就能下载对应的版本。 https://github.com/skylot/jadx/releases/tag/v1.4.7 下载后解压&#xff0c;进入对应路径的bin文件夹内&#xff0c;运行jadx-gui.bat。 2、gda 下载地址和gi…...

C#,数值计算——偏微分方程,Mglin的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Mglin { private int n { get; set; } private int ng { get; set; } private double[,] uj1 { get; set; } private Lis…...

一机服务万人,拓世法宝AI智能商业数字人一体机,解锁文旅新表达

在人工智能的强劲推动下&#xff0c;人们走进了一个令人振奋的数字化时代。如何让文化传承与现代科技完美融合&#xff0c;成为一个十分有趣的议题&#xff0c;当AI技术结合文旅生活&#xff0c;便悄然开启了一种全新的旅游服务模式——AI数字文旅。 在我国国家博物馆、文旅大…...

【源码解析】聊聊SpringBean是如何初始化和创建

我们知道通过类进行修复不同的属性&#xff0c;比如单例、原型等&#xff0c;而具体的流程是怎么样的呢&#xff0c;这一篇我们开始从源码的视角分析以下。 刷新方法 在刷新容器中有一个方法&#xff0c;其实就是 Bean创建的过程。 finishBeanFactoryInitialization(beanFact…...

【0基础学Java第六课】-- 数组的定义与使用

6 数组的定义与使用 6.1 什么是数组6.2 数组的创建及初始化6.2.1 数组的创建&#xff1a;6.2.2 数组的初始化 6.3 数组的使用6.3.1 数组中元素的访问6.3.2 Java中JVM当中的内存划分6.3.3 遍历数组 6.4 数组是引用类型6.4.1 初始JVM的内存分布6.4.2 基本类型变量与引用类型变量的…...

后台项目Gradle打包jar,不包含依赖jar并放到外部路径

# 1.Gradle打包jar # 2.依赖jar包外放到其他目录 # 3.保留引用关系 # 4.去掉引入的缓存build.gradle// 需要放到dependencies下面 // 傻逼问题 1 这个jar打包还得主动开 jar.enabled true // 1.清除上一次的lib目录 task clearJar(type: Delete) {delete "$buildDir\\lib…...

NSSCTF web刷题记录4

文章目录 [NSSRound#4 SWPU]1zweb(revenge)[强网杯 2019]高明的黑客[BJDCTF 2020]Cookie is so subtle![MoeCTF 2021]fake game[第五空间 2021]PNG图片转换器[ASIS 2019]Unicorn shop[justCTF 2020]gofs[UUCTF 2022 新生赛]phonecode[b01lers 2020]Life On Mars[HZNUCTF 2023 f…...

什么是大模型?一文读懂大模型的基本概念

大模型是指具有大规模参数和复杂计算结构的机器学习模型。本文从大模型的基本概念出发&#xff0c;对大模型领域容易混淆的相关概念进行区分&#xff0c;并就大模型的发展历程、特点和分类、泛化与微调进行了详细解读&#xff0c;供大家在了解大模型基本知识的过程中起到一定参…...

数据结构之队的实现

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…...

【实战Flask API项目指南】之三 路由和视图函数

实战Flask API项目指南之 路由和视图函数 本系列文章将带你深入探索实战Flask API项目指南&#xff0c;通过跟随小菜的学习之旅&#xff0c;你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧&#xff01; 前言 当小菜踏入Flask后端开发的世界时&…...

mediasoup udp端口分配策略

mediasoup-worker多进程启动时&#xff0c;rtcMinPort/rtcMaxPort可以使用相同的配置。 for (let i 0; i < numWorkers; i) { let worker await mediasoup.createWorker({ logLevel: config.mediasoup.worker.logLevel, logTags: config.mediasoup.work…...

山西电力市场日前价格预测【2023-11-07】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-07&#xff09;山西电力市场全天平均日前电价为318.54元/MWh。其中&#xff0c;最高日前电价为514.01元/MWh&#xff0c;预计出现在18: 00。最低日前电价为192.95元/MWh&#xff0c;预计…...

Microsoft Dynamics 365 CE 扩展定制 - 5. 外部集成

本章内容包括: 使用.NET从其他系统连接到Dynamics 365使用OData(Java)从其他系统连接到Dynamics 365使用外部库从外部源检索数据使用web应用程序连接到Dynamics 365运行Azure计划任务设置Azure Service Bus终结点与Azure Service Bus构建近乎实时的集成使用来自Azure服务总线…...

手机升级STM32单片机,pad下载程序,手机固件升级单片机,局域网程序下载,STM32单片机远程下载升级

STM32单片机&#xff0c;是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。 STM32单片机的在线下载通常需要以下几种方式完成&#xff1a; 1、使用ST提供的串口下载工具&#xff0c;本地完成固件的升级下载。 2、自行完成系统BootLoader的编写…...

【漏洞复现】weblogic-SSRF漏洞

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 漏洞测试注入HTTP头&#xff0c;利用Redis反弹shell 问题解决 Path : vulhub/weblogic/ssrf 编译及启动测试环境 docker compose up -dWeblogic中存在一个SSRF漏洞&#xff0…...

FreeSWTCH dialplan check nosdp

应朋友要求写一段dialplan&#xff0c;如果没有sdp&#xff08;sip_profile打开了3pcc&#xff09;&#xff0c;马上回486&#xff0c;当然如果有sdp&#xff0c;dialplan正常往下走 我试了试&#xff0c;貌似不太复杂&#xff0c;如下&#xff1a; <!-- check no sdp --&…...

微信小程序案例3-1 比较数字

文章目录 一、运行效果二、知识储备&#xff08;一&#xff09;Page()函数&#xff08;二&#xff09;数据绑定&#xff08;三&#xff09;事件绑定&#xff08;四&#xff09;事件对象&#xff08;五&#xff09;this关键字&#xff08;六&#xff09;setData()方法&#xff0…...

哈希表----数据结构

引入 如果你是一个队伍的队长&#xff0c;现在有 24 个队员&#xff0c;需要将他们分成 6 组&#xff0c;你会怎么分&#xff1f;其实有一种方法是让所有人排成一排&#xff0c;然后从队头开始报数&#xff0c;报的数字就是编号。当所有人都报完数后&#xff0c;这 24 人也被分…...

可达矩阵-邻接矩阵-以及有向图的python绘制

参考1 自定义输入矩阵来绘制 根据参考代码&#xff0c; 自定义 代码如下&#xff1a; # 编程实现有向图连通性的判断 from pylab import mplmpl.rcParams[font.sans-serif] [SimHei] mpl.rcParams[axes.unicode_minus] False import numpy as np import networkx as nx imp…...

react typescript @别名的使用

1、config/webpack.config.js中找到alias&#xff0c;添加: path.resolve(src) &#xff0c;如下&#xff1a; alias: {// Support React Native Web// https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/"react-native&qu…...

C++性能优化笔记-6-C++元素的效率差异-7-类型转换

C元素的效率差异 类型转换signed与unsigned转换整数大小转换浮点精度转换整数到浮点转换浮点到整数转换指针类型转换重新解释对象的类型const_caststatic_castreinterpret_castdynamic_cast转换类对象 类型转换 在C语法中&#xff0c;有几种方式进行类型转换&#xff1a; // …...

c#中switch常用模式

声明模式 首先检查value的类型&#xff0c;然后根据类型输出相应的消息 public void ShowMessage(object value) {switch (value){case int i: Console.WriteLine($"value is int:{i}"); break;case long l: Console.WriteLine($"value is long:{l}"); b…...

Flink SQL 常用作业sql

目录 flink sql常用配置kafka source to mysql sink窗口函数 开窗datagen 自动生成数据表tumble 滚动窗口hop 滑动窗口cumulate 累积窗口 grouping sets 多维分析over 函数TopN flink sql常用配置 设置输出结果格式 SET sql-client.execution.result-modetableau;kafka source…...

nodejs国内镜像及切换版本工具nvm

淘宝 NPM 镜像站&#xff08;http://npm.taobao.org&#xff09;已更换域名&#xff0c;新域名&#xff1a; Web 站点&#xff1a;https://npmmirror.com Registry Endpoint&#xff1a;https://registry.npmmirror.com 详见&#xff1a; 【望周知】淘宝 NPM 镜像换域名了&…...