读paper7-RAP-Gen_Retrieval_Augmented_Patch_Generation_with_CodeT5
读paper7-RAP-Gen: Retrieval Augmented Patch Generation with CodeT5 INTRODUCTION 名为RAP-Gen的新型检索增强补丁生成框架,通过从补丁检索器中获取相关的修复模式来增强自动程序修复。 模型在性质上是半参数化的,旨在结合隐式(参数化)端到端程序修复学习和显式(非参数化)修复模式挖掘的双重优势。 与先前的修复模式挖掘工作的区别之一是,我们利用最相关的错误-修复对作为有关错误补丁的指导修复模式,而不是使用手工设计的启发式方法对修复模板进行聚类。 RAP-Gen采用了阶段式学习策略来连接补丁检索器和补丁生成器:补丁检索器首先搜索相关的错误修复模式,然后将其传递给CodeT5补丁生成器,根据源代码和检索的外部错误修复知识合成一个修复补丁候选列表。 对于检索器,我们提出了一种混合方法,通过基于原始源代码的稀疏(BM25 )和密集(DPR)检索来考虑词法和语义匹配。我们使用CodeT5的编码器作为我们的密集DPR检索器,并提出使用对比学习目标对其进行训练,使用先前的错误-修复对作为修复补丁通常与其错误补丁共享大部分语义。 ...
深度学习-注意力机制
注意力机制 注意力机制概述 自主性的与非自主性的注意力提示解释了人类的注意力的方式, 下面来看看如何通过这两种注意力提示, 用神经网络来设计注意力机制的框架, 首先,考虑一个相对简单的状况, 即只使用非自主性提示。 要想将选择偏向于感官输入, 则可以简单地使用参数化的全连接层, 甚至是非参数化的最大汇聚层或平均汇聚层。 因此,“是否包含自主性提示”将注意力机制与全连接层或汇聚层区别开来。 在注意力机制的背景下,自主性提示被称为查询(query)。 给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs,例如中间特征表示)。 在注意力机制中,这些感官输入被称为值(value)。 更通俗的解释,每个值都与一个键(key)配对, 这可以想象为感官输入的非自主提示。 如下图所示,可以通过设计注意力汇聚的方式, 便于给定的查询(自主性提示)与键(非自主性提示)进行匹配, 这将引导得出最匹配的值(感官输入)。 此外,注意力机制的设计有许多替代方案。 例如可以设计一个不可微的注意力模型, 该模型可以使用强化学习方法 (Mni ...
研一课程笔记-并行计算
研一课程笔记-并行计算 一、多核体系结构概述 指令级并行 在多核时代到来之前,倾向于提升晶体管集成度,通过集成,可以将更多的原本片外的部件集成到片内中,从而开发出了诸如流水线、乱序执行、动态分支预测和缓存等,这些“低挂果”虽然硬件实现较为复杂,但生产之后的成本相对较低,开发人员无需考虑数据竞争、同步、通信等问题。 逻辑复杂度:例如超标量处理器中大部分部件都用于确保指令的分隔执行。 功耗问题:功耗和电容 CCC、电压V2V^2V2 和时钟频率 fff 相关,CCC 和集成度相关,VVV 如果降低,将导致 fff 变慢。 fmax=c(V−Vthd)αVf_{\max}=c\frac{(V-V_{\mathrm{thd}})^\alpha}Vfmax=cV(V−Vthd)α。其中 VthdV_{thd}Vthd 为阈值电压 如果降低阈值电压,则会导致处理器静态功耗指数级增长 数据级并行 由于之前的问题导致集成度无法再提高,频率无法再提升,产生了多核概念。 并行计算机分类: SISD,串行体系结构通用模型,但可以实现指令级并行 SIMD,多用于向量处理器结构 MISD, ...
研一课程笔记-数值分析1-3
研一课程笔记-数值分析1-3 绪论与预备知识 概论 衡量数值算法的几个标准 衡量算法的优劣有两个标准,一是要有可靠的理论基础,包括收敛性、数值稳定性和算法精度等;二是要有较好的计算复杂度。 数值稳定性 数值稳定性即算法对舍入误差的敏感性。舍入误差对计算结果的精确性影响小的算法,具有较好的数值稳定性;反之,算法的数值稳定性差。 算法精度 数值算法的精度衡量了近似解对精确解的近似程度。算法的精度越高并不一定导致近似解的误差越小。精度的具体定义依赖于所考虑的问题类型。在偏微分方程的数值算法中我们一般考虑收敛精度,它指的是算法的收敛速率。 计算复杂度 计算复杂度指的是通过数值计算解决问题的困难程度。最常见的是时间复杂度和空间复杂度 收敛性 算法的收敛性一般指数值解逼近精确解的性质,而对于不同的问题,其定义也是有区别的。例如在迭代算法中,收敛性指的是近似解能够随着迭代过程趋向于精确解,它通常与迭代矩阵的谱半径相关。在偏微分方程数值算法中,收敛性指的是随网格尺寸等参数变化的数值解的收敛性质,它与算法的收敛精度密切相关。 误差理论 误差按照它们的来源可分为以下四种 ...
读paper6-缺陷样本生成
VGX: Large-Scale Sample Generation for Boosting Learning-Based Software Vulnerability Analyses VGX通过设计基于代码tokens之间的值流关系(value flow relationships)的绝对和相对位置编码的注意力机制,构建了一个基于Transformer的上下文化模型,并在大型代码语料库上对自定义的Transformer进行预训练,然后针对现有(task-specific 的)易受攻击代码位置数据集进行微调。然后,VGX利用从历史修复和人类对真实世界漏洞的知识中学习的编辑模式,在识别到的上下文中实现漏洞代码注入。 至于什么是值流,国内没有很规范的解释,国外对此有一定的应用,比如静态值流分析工具SVF :https://blog.csdn.net/gitblog_00087/article/details/138841899 。指的应该是数据流 源码与数据集地址:https://zenodo.org/records/10443177 Background and motivati ...
读paper5-基于图的缺陷检测与修复两篇
读paper5-基于图的缺陷检测与修复两篇 CSGVD: A deep learning approach combining sequence and graph embedding for source code vulnerability detection 一种结合序列和图嵌入的深度学习方法用于源代码漏洞检测 利用原始源代码的控制流图,将函数级的漏洞检测视为一个图二分类任务。首先,我们提出了一个PE-BL模块,它继承并增强了预训练语言模型的知识。通过使用序列嵌入,它提取了代码在控制流图中的局部语义特征作为节点嵌入。其次,CSGVD使用具有残差连接的(with residual connectivity)图神经网络来提取图的结构化信息。最后,我们提出了一种均值双仿射注意力池化(M-BFA)方法,以更好地聚合节点信息作为图的特征表示。 符号定义如下: {(ci,yi)∣ci∈C,yi∈Y}i=1N\{(c_i,y_i)\mid c_i\in\mathbb{C},y_i\in\mathbb{Y}\}_{i=1}^N{(ci,yi)∣ci∈C,yi∈Y}i=1N :数据 ...
cs224w-图机器学习2
cs224w-图机器学习2:GNN 图神经网络 前面几节内容主要介绍了节点嵌入的概念,也就是说我们可以将一个图中的节点映射到一个的 d 维向量上,而这种映射方式使得相似的节点对应的向量更接近,但主要的问题还是,我们如何学习出一个映射函数 f,而图嵌入的两个核心组件是编码器和相似度函数,图神经网络 GNN 提供了一种基于深度学习的节点嵌入方法。 深度学习基础 介绍了监督学习、损失函数、机器学习中的优化、梯度向量、随机梯度下降等基本概念,不过这些内容已经反复接触过了,因此也就不再专门整理记录 深度学习中的函数往往更为复杂,并且在反向传播进行参数更新的过程中需要用链式法则来求梯度,但总的来讲,不管是传统的监督机器学习还是深度学习,我们的优化目标都是: minL(y,f(x))\min\mathcal{L}(y,f(x)) minL(y,f(x)) 图深度学习 问题的定义 我们把要研究的图记为 GGG,图中所有节点构成集合 VVV,AAA 是图的接邻矩阵 用 XXX 表示图节点的特征矩阵,每个节点具有 mmm 维的特征,节点的特征可以根据图的实际情况来选取 一种很 naive 的方法是将图 ...
读paper4-多智能体强化学习入手与论文集
多智能体强化学习入手与论文集 TODO List [x] 先把RL复习一下:马尔可夫与蒙特卡洛部分 [x] 2019.10的一篇nature:Grandmaster level in StarCraft II using multi-agent reinforcement learning。https://www.nature.com/articles/s41586-019-1724-z。https://mp.weixin.qq.com/s/R4RXxLan7H2sCbBrKqyH6w [x] 多智能体强化学习算法【一】【MAPPO、MADDPG、QMIX】 [ ] 新型多智能体 Transformer(MAT,Multi-Agent Transformer)架构,该架构可以有效地将协作 MARL 问题转化为序列模型问题,其任务是将智能体的观测序列映射到智能体的最优动作序列。https://arxiv.org/pdf/2205.14953.pdf [x] 多智能体强化学习大模型初探https://mp.weixin.qq.com/s/C_bNa42FdR5xLRcbSLXSCg [x ...
cs224w-图机器学习1
cs224w-图机器学习1 Introduction 选择图的原因:图是用于描述并分析有关联 / 互动的实体的一种普适语言。它不将实体视为一系列孤立的点,而认为其互相之间有关系。它是一种很好的描述领域知识的方式。 网络与图的分类 networks / natural graphs:自然表示为图 Social networks: Society is a collection of 7+ billion individuals Communication and transactions: Electronic devices, phone calls, financial transactions Biomedicine: Interactions between genes/proteins regulate life(大概是基因或蛋白质之间互动从而调节生理活动的过程) Brain connections: Our thoughts are hidden in the connections between billions of neurons graphs:作为一种表示方 ...
读paper3-Katana_Dual_Slicing-Based_Context_for_Learning_Bug_Fixes
读paper3-Katana: Dual Slicing-Based Context for Learning Bug Fixes 提出了一种基于程序切片的方法,其不是任意地将代码作为上下文包含进来,而是分析对错误语句具有控制或数据依赖关系的语句。利用代码的上下文和修复版本的上下文来捕获相关的修复要素。这里修复版本的上下文并不是指错误代码区的代码前缀与后缀,而是指的是与错误代码直接关联的代码块,无论是控制流还是数据流。 思路上还是基于变形的AST+图神经网络,同时通过上下文的切分尽可能减少冗余信息,通过修复版本的上下文为神经网络的学习提供更多信息。 项目开源在https://github.com/saltlab/Katana 问题引入 当前最先进的基于学习的程序修复方法以各种方式利用上下文,并且其中许多方法使用基于序列和树/图的源代码表示来学习程序修复。这些方法使用包含buggy语句的包围类、包围函数、buggy子树或整个文件来捕获buggy语句的上下文。然而,所有这些方法都对处理buggy语句设置了一个界限限制。基于序列的方法使用最大标记数限制(例如,1,000个标记),在这个范围内 ...
读paper2-基于LLM的缺陷修复
读paper2-基于LLM的缺陷修复 A Deep Dive into Large Language Models for Automated Bug Localization and Repair 来自 Proceedings of the ACM on Software Engineering 。用作启发思路吧,水水的,一二区里没见这刊。反正成果也没开源,全靠几张图。。。 研究概述 现有的工作探索了将整个有错误的函数输入到LLMs中,并使用注释来指导LLMs生成修复好的函数的方法。然而,让LLMs生成整个函数是多余的,因为原有有错误的函数中并不是所有的代码都是错误的。有可能有错误的代码及其相应的修复代码共享一些非错误的前缀和后缀。例如,在图1中,蓝色和棕色的代码是有错误和修复函数共享的前缀和后缀代码。通常,只有少部分有错误的代码需要修改。在给定的例子中,只需要将 “getProperty” 替换为 “get” 就可以生成修复代码。要求LLMs生成这之外的其他代码可能会导致更多的错误,并降低整体的错误修复能力。 问题根源还是在于细粒度,所以该文提出了一种基于token的缺陷定位与修 ...
深度学习-LogSumExp技巧
深度学习-LogSumExp技巧 引言 今天来学习下 LogSumExp(LSE)技巧,主要解决计算 Softmax 或 CrossEntropy时出现的上溢 (overflow) 或下溢 (underflow) 问题。 我们知道编程语言中的数值都有一个表示范围的,如果数值过大,超过最大的范围,就是上溢;如果过小,超过最小的范围,就是下溢。 什么是 LSE LSE 被定义为参数指数之和的对数: logSumExp(x1…xn)=log(∑i=1nexi)=log(∑i=1nexi−beb)=log(eb∑i=1nexi−b)=log(∑i=1nexi−b)+log(eb)=log(∑i=1nexi−b)+b\begin{aligned}\operatorname{logSumExp}\left(x_{1} \ldots x_{n}\right) &=\log \left(\sum_{i=1}^{n} e^{x_{i}}\right) \\ &=\log \left(\sum_{i=1}^{n} e^{x_{i}-b} e^{b}\right) \\ & ...
jupyter踩坑记录
jupyter踩坑记录 VSCode安装完成后无法在命令行使用 无法将“jupyter”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 ‘jupyter’ 不是内部或外部命令,也不是可运行的程序 首先要确认环境变量: D:\IDE-Extends\Python3\Lib\site-packages D:\IDE-Extends\Python3\Scripts D:\IDE-Extends\Python3 理论上第三个不需要,我只是保险起见 保险起见我直接把环境变量用户PATH与系统PATH都来了一份 其次:D:\IDE-Extends\Python3\Scripts,类似的,这个文件夹内,其实你发现根本没有 jupyter.exe 所以执行类似:jupyter nbconvert --to markdown '文件名.ipynb'命令会报错 一种可以在当前目录下复制 jupyter-notebook.exe 重命名为 jupyter.exe 另一种是直接使用 jupyter-notebook 替换命令中的 jupyter VSCode下ipynb转md https:/ ...
吴恩达深度学习笔记汇编4-3:序列模型
吴恩达深度学习笔记汇编4-3:序列模型(Sequence Models) 这部分知识是我在学习吴恩达的深度学习课程时对其笔记的汇总与编注。 内容上,原笔记是视频课程的字幕整合,我对原笔记一些无关紧要的内容进行了删减,以达到精炼的目的,并增加了一些个人见解、语义上的补充以及一部分中英对照和公式推导,以对吴老师的课程内容理解提供更充分的辅助,有一些使用了引用来加以区分,不过大部分并未进行标注(主要是没有观感很好的标注方法)。 我对原文有一些改动,主要是原文有一些地方翻译的不尽人意(这是因为视频课程中吴老师语句也并不会像课本一样做到非常条理清晰),所以我对那些词不达意、逻辑或语句结构混乱的地方进行了删改,以更清晰地表达出吴老师的原意。(这部分改动基本没有标注) 以及一些加粗,也是我自己认为相对重点的地方,带有一定主观性,见谅。 又,每节课程开始都会有简短的引言,不过看上去可能有些废话,但我认为也是必不可少的,所以用引用进行标注,可以选择性阅读 课程地址:【[双语字幕]吴恩达深度学习deeplearning.ai】 https://www.bilibili.com/video/BV1FT4y ...
吴恩达深度学习笔记汇编4-2:序列模型
吴恩达深度学习笔记汇编4-2:序列模型(Sequence Models) 这部分知识是我在学习吴恩达的深度学习课程时对其笔记的汇总与编注。 内容上,原笔记是视频课程的字幕整合,我对原笔记一些无关紧要的内容进行了删减,以达到精炼的目的,并增加了一些个人见解、语义上的补充以及一部分中英对照和公式推导,以对吴老师的课程内容理解提供更充分的辅助,有一些使用了引用来加以区分,不过大部分并未进行标注(主要是没有观感很好的标注方法)。 我对原文有一些改动,主要是原文有一些地方翻译的不尽人意(这是因为视频课程中吴老师语句也并不会像课本一样做到非常条理清晰),所以我对那些词不达意、逻辑或语句结构混乱的地方进行了删改,以更清晰地表达出吴老师的原意。(这部分改动基本没有标注) 以及一些加粗,也是我自己认为相对重点的地方,带有一定主观性,见谅。 又,每节课程开始都会有简短的引言,不过看上去可能有些废话,但我认为也是必不可少的,所以用引用进行标注,可以选择性阅读 课程地址:【[双语字幕]吴恩达深度学习deeplearning.ai】 https://www.bilibili.com/video/BV1FT4y ...
吴恩达深度学习笔记汇编4-1:序列模型
吴恩达深度学习笔记汇编4-1:序列模型(Sequence Models) 这部分知识是我在学习吴恩达的深度学习课程时对其笔记的汇总与编注。 内容上,原笔记是视频课程的字幕整合,我对原笔记一些无关紧要的内容进行了删减,以达到精炼的目的,并增加了一些个人见解、语义上的补充以及一部分中英对照和公式推导,以对吴老师的课程内容理解提供更充分的辅助,有一些使用了引用来加以区分,不过大部分并未进行标注(主要是没有观感很好的标注方法)。 我对原文有一些改动,主要是原文有一些地方翻译的不尽人意(这是因为视频课程中吴老师语句也并不会像课本一样做到非常条理清晰),所以我对那些词不达意、逻辑或语句结构混乱的地方进行了删改,以更清晰地表达出吴老师的原意。(这部分改动基本没有标注) 以及一些加粗,也是我自己认为相对重点的地方,带有一定主观性,见谅。 又,每节课程开始都会有简短的引言,不过看上去可能有些废话,但我认为也是必不可少的,所以用引用进行标注,可以选择性阅读 课程地址:【[双语字幕]吴恩达深度学习deeplearning.ai】 https://www.bilibili.com/video/BV1FT4y ...
吴恩达深度学习笔记汇编3-2:结构化机器学习项目
吴恩达深度学习笔记汇编3-2:结构化机器学习项目 (Structuring Machine Learning Projects) 这部分知识是我在学习吴恩达的深度学习课程时对其笔记的汇总与编注。 这一部分内容并没有很多需要推导的数学知识或者很深奥的思想(除了最后几节),大部分都是经验性知识,更侧重于理解与思考,所以我对原文尽量没有改动,以免产生歧义。 当然,有一些加粗,是我自己认为相对重点的地方,带有一定主观性,见谅。 课程地址:【[双语字幕]吴恩达深度学习deeplearning.ai】 https://www.bilibili.com/video/BV1FT4y1E74V 笔记链接:https://github.com/fengdu78/deeplearning_ai_books 笔记在线阅读:http://www.ai-start.com/dl2017/ 机器学习策略(2)(ML Strategy (2)) 进行误差分析(Carrying out error analysis) 你好,欢迎回来,如果你希望让学习算法能够胜任人类能做的任务,但你的学习算法还没有达到人类的表现,那 ...
吴恩达深度学习笔记汇编3-1:结构化机器学习项目
吴恩达深度学习笔记汇编3-1:结构化机器学习项目 (Structuring Machine Learning Projects) 这部分知识是我在学习吴恩达的深度学习课程时对其笔记的汇总与编注。 这一部分内容并没有很多需要推导的数学知识或者很深奥的思想(除了最后几节),大部分都是经验性知识,更侧重于理解与思考,所以我对原文尽量没有改动,以免产生歧义。 当然,有一些加粗,是我自己认为相对重点的地方,带有一定主观性,见谅。 课程地址:【[双语字幕]吴恩达深度学习deeplearning.ai】 https://www.bilibili.com/video/BV1FT4y1E74V 笔记链接:https://github.com/fengdu78/deeplearning_ai_books 笔记在线阅读:http://www.ai-start.com/dl2017/ 机器学习(ML)策略(1)(ML strategy(1)) 为什么是ML策略?(Why ML Strategy?) 什么是机器学习策略呢?我们从一个启发性的例子开始讲,假设你正在调试你的猫分类器,经过一段时间的调整,你的系统 ...