-
摘要:
近年来,大语言模型(large language model,LLM)作为深度学习网络技术的关键分支,在自然语言处理(natural language processing,NLP)领域取得了一系列突破性成就,并被广泛采用. 然而,在其包括预训练、微调和实际部署在内的完整生命周期中,多种安全威胁和隐私泄露的风险相继被发现,引起了学术和工业界越来越多的关注. 首先以LLM发展过程中出现的预训练-微调范式、预训练-提示学习范式和预训练指令微调范式为线索,梳理了针对LLM的常规安全威胁,即3种对抗攻击(对抗样本攻击、后门攻击、投毒攻击)的代表性研究,接着总结了一些最新工作披露的新型安全威胁,然后介绍了LLM的隐私风险及其研究进展. 相关内容有助于LLM的研究和部署者在模型设计、训练及应用过程中,识别、预防和缓解这些威胁与风险,同时实现模型性能与安全及隐私保护之间的平衡.
Abstract:In recent years, Large Language Models (LLMs) have emerged as a critical branch of deep learning network technology, achieving a series of breakthrough accomplishments in the field of Natural Language Processing (NLP), and gaining widespread adoption. However, throughout their entire lifecycle, including pre-training, fine-tuning, and actual deployment, a variety of security threats and risks of privacy breaches have been discovered, drawing increasing attention from both the academic and industrial sectors. Navigating the development of the paradigm of using large language models to handle natural language processing tasks, as known as the pre-training and fine-tuning paradigm, the pre-training and prompt learning paradigm, and the pre-training and instruction-tuning paradigm, this article outline conventional security threats against large language models, specifically representative studies on the three types of traditional adversarial attacks (adversarial example attack, backdoor attack and poisoning attack). It then summarizes some of the novel security threats revealed by recent research, followed by a discussion on the privacy risks of large language models and the progress in their research. The content aids researchers and deployers of large language models in identifying, preventing, and mitigating these threats and risks during the model design, training, and application processes, while also achieving a balance between model performance, security, and privacy protection.
-
Keywords:
- large language models /
- pre-trained language models /
- security /
- privacy /
- threat
-
深度学习模型在图像识别、自然语言处理、机器人技术以及自动驾驶等诸多领域发挥了重要作用. 由此涌现出了一系列主流深度学习(deep learning,DL)框架,如PyTorch[1],TensorFlow[2],Caffe[3],Keras[4]. 这些框架使程序员能够高效地开发、训练和评估模型. 尽管这些工具使得将深度学习集成到软件系统中变得容易,但它们都建立在动态类型语言Python之上,缺乏类型检查机制. 因此,许多错误无法在编译阶段通过类型检查加以排除. 此外,基于命令式语言构建的神经网络模型不利于代码优化,并且不便于进行模型正确性的形式验证.
由于深度学习应用程序独特的操作方式和数据要求,以及应用和部署的快速增长,这类程序中出现的错误也日益增多. 其中张量形状错误(shape error)是深度学习代码中的主要错误类型之一,可能在深度学习任务的各个阶段发生. Wu等人[5]的研究表明,形状错误占据了TensorFlow程序中45%的故障.
在使用深度学习框架(如Pytorch)构建人工智能(artificial intelligence,AI)模型时可能会出现张量形状不匹配错误. AI模型通常由多个层组成,每个层接受输入张量并产生一个输出张量. 每一层的输出张量形状必须与下一层的输入张量形状相匹配,否则,在运行时会出现形状错误. 以下是文献[6]中的一个示例:
1 class Net(nn.Module):
2 def __init__(self):
3 super(Net, self). __init__()
4 self.layers = nn.Sequential(
5 nn.Linear(28*28, 120),
6 nn.ReLU(),
7 nn.Linear(80, 10)
8 )
该例子定义了一个简单的神经网络模型,由一系列的层组成,包括一个线性层、一个激活函数ReLU和另一个线性层. 第1个线性层的输入是1个维度大小为28×28的1维序列,输出是一个大小为120的张量,最后1个线性层的输入是大小为80的张量,输出是一个表示分类的10维向量,其中激活函数不改变张量的形状. 然而,第2个线性层的权重张量尺寸(80×10)与实际传入的张量尺寸120不匹配,从而导致形状错误. 这种错误通常会导致程序崩溃,从而浪费大量的计算时间. 尤其是当错误出现在复杂模型的后期阶段时,可能需要运行很长时间才会发现错误,因为需要处理庞大数据集的冗长预处理过程. 这不仅会导致计算资源和时间的显著浪费,还会产生错误结果以及耗时的调试工作.
针对这种形状错误,现有的解决方案是分析学习框架中编写的代码. 已有一些研究尝试解决深度学习模型中的形状错误问题[6-9]. 然而,随着深度学习模型复杂性的增加,以及数据集和输入维度规模的扩大,形状错误的严重性愈发凸显. 这些方法并不能百分之百检查出所有形状错误.
DL框架可以被视为用于构建AI模型的领域特定编程语言,用于实现各种算法[10]. 然而,现有主流学习框架如PyTorch,TensorFlow等无法借助类型系统来排除网络模型中的形状错误. 一些强类型语言也曾尝试构建学习框架[11-12],但是由于这些语言缺乏准确描述张量的类型系统,也没有实现自动检查形状错误的功能. 因此,在DL框架中加入自动检查形状错误的能力将是一个更好的解决方案.
本文提出了一种新的学习框架Ionia,该框架具有以下显著优势. 首先,该学习框架采用了带类型的网络描述和类型检查,能够自动解决深度学习模型中的形状错误问题. 这与以往的工作有所不同. Ionia并不是对使用现有框架编写的代码进行分析,而是从头开始定义了一个新的强类型学习框架. 与主流的动态类型Python语言的学习框架不同,Ionia是嵌入在Coq定理证明器中. Coq[13]是一个具有强大类型系统的定理证明助手. 本文充分利用了Coq的类型检查机制,定义了一个专门用于描述张量的类型系统,并为各种神经网络算子定义了类型以及具体语义. 通过这些类型化的算子,该学习框架的类型检查机制能够静态检查AI模型中是否存在形状错误并精准定位. 换句话说,能够通过类型检查的网络模型一定不存在形状不匹配错误. 这种方法为形状错误检测提供了更高效、更可靠的解决方案.
更重要的是,该学习框架为进一步优化和验证AI模型奠定了良好基础,这是本文选择在Coq定理证明器中构建DL框架的主要考量. 自动检查形状不匹配错误只是这一设计的一个有用的副产品和阶段性成果,但Ionia的潜力远不止于此. 由于Coq是一种函数式编程语言,以其强大的数学理论为基础,提供了几乎无法在传统命令式编程语言中实现的高级优化和形式化验证途径. 凭借Coq强大的推理能力,使得对模型进行严格的数学证明成为可能,确保其在逻辑上的一致性和正确性,这为AI编译器的优化和正确性验证提供了更为坚实的基础.
最终,高级函数式抽象需要转换为命令式代码,以满足现代并行硬件接口的要求. 本文在文献[14-16]的基础上在Coq中设计并实现了一系列重写转换规则,用于将带类型的函数式神经网络算子表达式转换为相应的命令式C代码. 虽然文献[16]在文献[14-15]的理论基础上实现了常见函数式矩阵程序,如矩阵加法、乘法到C代码的转换工作. 但该技术的表达能力有限,难以在函数式层面表示出如卷积、池化等神经网络算子. 因此,本文将该技术进一步扩展,定义了一个基于有限集的下标索引到元素值映射的张量构造函数,从而能够表示出100余个函数式神经网络算子表达式,并设计实现了一系列针对神经网络算子的重写转换规则,用于生成算子C代码. 这些重写转换规则便于后续在Coq中进行正确性的形式验证,以保证生成的神经网络算子C代码的可靠性. 利用该方法,本文成功生成了一批神经网络算子的C代码,该代码与手工编写的代码质量相当,且生成的多核并行OpenMP C代码相比顺序执行的算子C代码速度提升了4~10倍. 此外,该方法生成的C代码具有高安全性,能够有效避免常见手工编写代码时出现的下标越界和存储分配错误.
本文的主要贡献总结如下. 首先,基于Coq建立了一个带类型的函数式深度学习框架Ionia. 该框架具有带类型的张量结构以及强大的类型检查能力,能够确保构建的神经网络模型无形状错误. 实验结果表明,该框架能够自动静态检测到模型中的形状不匹配错误. 其次,设计并实现了一系列重写转换规则,用于将函数式神经网络算子表达式转换为高安全、高可靠的C代码. 这项工作实际上具备了一个小型AI编译器的功能,不仅在函数式层面构建了DL框架,而且实现了函数式表示的神经网络算子到OpenMP C代码的翻译. 最后,这项工作不仅为形状错误检测提供了方便,更为后续AI编译器的优化及正确性验证奠定了基础.
1. 相关工作
目前,已有多项工作致力于解决深度学习框架中的形状不匹配问题. Hattori等人[9]针对PyTorch应用,提出了一种半静态分析方法,用于推断动态计算图中的类型和形状. 然而,由于其路径不敏感和半静态的特性,该工具在实际应用的完全静态分析中并不适用. PyTea[6]是一个自动静态分析器,用于检测 PyTorch代码中的张量形状不匹配错误. 该分析器基于对所有可能执行路径的静态跟踪,收集张量形状约束,并检查这些约束是否不可满足. 然而,它并不执行通用的值分析,这限制了其在跟踪张量或数组索引非绑定异常时的能力. 相比之下,本文所提出的方法基于Coq这种依赖类型编程语言,允许直接通过索引对张量形状进行静态检查. 这使得张量形状的验证更为简单直接,并能够更全面直观地分析张量形状的依赖关系.
针对TensorFlow应用程序,已经提出了不同的方法来检测形状错误. Pythia[7-8]利用值流分析静态追踪整个程序中的张量形状,并警告可能的形状不匹配. 而ShapeFlow[17]则作为动态分析器,通过模拟TensorFlow库来监控形状变换. 然而,这些方法都存在局限性. Pythia对Python和TensorFlow的覆盖仍不足以满足实际应用的需求,而ShapeFlow需要一个缩小的虚拟数据集,并且无法检测由未经测试的输入数据集引起的潜在形状不匹配.
一些工具已经采用了类型系统来对张量形状进行静态检查. Hasktorch[18]提供了对libtorch[19]的Haskell[20]绑定,以静态检查张量形状. 然而,使用Haskell的类型级编程特性意味着张量不被视为一等对象. Relay[21-22]是一个深度学习编译器系统,支持丰富的张量形状类型推断,并支持动态和静态形状检查. 与此同时,文献[23]提出了一种基于类型的方法来检测张量形状不匹配,首先执行静态类型/形状推断,在静态推断无法保证形状一致性时添加动态检查. 文献[24-26]是关于依赖类型系统中的渐进类型研究. 这些工作特别关注于细化类型系统中谓词部分的渐进性,而底层简单类型则保持静态. 与这些方法相比,本文直接利用Coq内在的类型检查机制来实现静态类型检查.
以强类型的函数式语言为基础构建深度学习框架的研究也已有探索. DeepDSL[11]是一种嵌入在强类型语言Scala中的领域特定语言,支持直接构造神经网络模型,并提供早期的静态检查,最终将DeepDSL程序编译为Java源代码. 另外,文献[12]是一个基于OCaml编程语言的科学计算系统,包括各种由OCaml实现的库,如基于算法微分实现的数学优化、回归和深度神经网络等,专注于从头开始构建神经网络模型. 然而,这些工作由于缺乏对张量的准确定义,因此无法自动检测出张量形状错误.
从函数式编程模型出发,以函数式的方式表示各种操作和优化策略,然后将其转换为硬件接口所需的命令式程序,已成为解决高性能可移植性问题的一种流行方法. 例如,数据并行理想化(data parallel idealised algol,DPIA)[14-15]实现了一种策略保留(strategy preserve)的翻译方法,它基于一系列的重写规则将高级函数式代码翻译成低级、无数据竞争的并行命令式代码. 麻莹莹等人[16]在Coq定理证明器中形式化了DPIA技术,实现了矩阵代码生成技术,将高级函数式矩阵表达式转换为C代码. 然而,这些方法基于元素到元素的映射实现的函数式矩阵表达式虽然能够表示诸如向量/矩阵加法、乘法等常规矩阵操作,但在处理神经网络中的卷积、池化等算子时面临挑战. 例如,在表达卷积核在输入张量上的移动过程时存在困难. 相比之下,本文所定义的以有限集的下标索引到元素值的映射实现的张量表达式有助于全面表示函数式神经网络算子,从而设计出一系列重写转换规则,用于生成神经网络算子OpenMP C代码.
一个张量语言(a tensor language,ATL)[27]是轻量级的Coq框架,旨在优化以纯函数式数组语言编写的张量程序,实现了各种 Halide[28]优化调度指令,并最终将优化后的张量表达式翻译成C代码. 然而,它们的代码生成过程是直接将ATL程序降低为C代码字符串. 相比之下,本文利用延续传递(continuation passing)风格[29]的重写转换规则,将函数式张量表达式翻译成命令式原语,提供了更高的灵活性和可扩展性. 这有助于处理复杂的嵌套函数结构,并且便于后续在Coq定理证明器中对重写转换规则进行严格的证明,以保证生成代码的可靠性. 此外,ATL 采用基于列表的方式来表示数组/张量,并配有保护表达式以防止数组越界访问. 相比之下,本文使用了带长度的向量类型来表示数组,并利用有限集来确保安全的数组索引访问,更简洁直接. 因此,生成的命令式代码在内存安全性方面更具优势.
本文的显著优势在于,使用本文设计的强类型深度学习框架Ionia构建的神经网络模型,能够从根本上避免张量形状不匹配的错误,或者说,能够在模型构建过程中自动有效检测出张量形状相关的错误并精准定位. 这一特性极大地提升了模型开发的效率和可靠性. 此外,将函数式神经网络算子表达式翻译为高安全的多核并行OpenMP C代码. 生成的C算子不仅能够精确执行预期操作,还能够避免诸如下标越界和存储分配错误等人工编写代码时常见的问题.
2. 张量类型
本节将深入探讨张量类型的形式化定义方式. 这种形式化表示不仅要便于描述神经网络算子操作,还要能够捕获神经网络模型中固有的形状.
张量类型是神经网络中表示数据的关键概念,它们作为多维数组的抽象表示,用于存储输入、权重和输出数据. 已有一些研究专注于张量类型的形式化定义[30-32]. 本文采用嵌套数组的方式来定义张量类型,并基于一个有限集的下标索引到元素值的映射函数来构造具体的张量.
首先,在Coq中定义了一个归纳数据类型data,它作为各种数据结构的基础表示. 其中,构造器num和ary分别封装了数值和数组.
Inductive data : Set :=
| num : data
| ary : nat -> data -> data.
在张量的上下文中,有限集充当张量/数组的索引集,能够避免数组索引访问越界的错误. 在Coq中,存在多种定义自然数有限集的方法[13, 33]. 本文采用了一种简洁直观的方式,允许有限自然数集与自然数之间的直接转换. 其定义如下所示:
Definition fin (n : nat) : Set :=
match n with
| O => unit
| S n' => { i | i < (S n')}
end.
在这个定义中,O和S是自然数的构造函数. O表示0,S表示后继函数. 例如,自然数3可以用S (S (S O))来构造. 关键字Definition用于非递归函数或值的定义,而Fixpoint用于递归函数的定义.
fin的定义接受一个自然数n,返回一个集合. 通过对自然数n模式匹配. 当n为O时,返回一个空集合unit,当n不为O时(即为S n'),它包含一个自然数i以及i < S n'的证明. 在Coq的构造逻辑中,证明是编码证明过程的显式项,结构{i | P i}表示满足P i为真的i的集合,其包括了P i为真的证明. 例如,fin 5表示{0, 1, 2, 3, 4}这个集合中的元素,其中每个元素都小于5. 本文将该有限集作为张量的索引类型,可以确保下标索引保持在边界范围之内.
在定义张量类型时,形式化向量是一个关键步骤. 在Coq中,存在多种定义向量类型的方法,包括基于函数的方法[33]和标准库中的依赖类型[12]. 本文采用了Coquelicot[34]中使用的向量形式化方法,该方法使用元组构造向量.
Fixpoint vector (n : nat) : Set :=
match n with
| O => unit
| S n' => ((vector n') * B)%type
end.
本文定义的向量类型是通过元组表示构造的,这种方法的优势在于接近函数式语言中的数据结构,并且便于实现向量的一些基本操作及形式化验证. 然而,这种数据结构不便于根据索引访问数组元素. 因此,在定义涉及数组索引的一些函数时,这种数据类型不方便表示. 另一种建模向量的方式是将其视为从索引集到向量元素的函数映射. 在实际工作中,有时需要在这2种表示方法之间进行切换. 下面定义的函数mk_vec将基于函数的向量表示转换为基于元组的向量表示.
Fixpoint mk_vec{n : nat}: (fin n -> B) -> vector n :=
match n with
| O => fun ( _:_ ) => tt :vector 0
| S n' => fun (u : fin (S n') -> B) =>
(mk_vec (fun i : fin n' => u i), u [n'])
end.
此处,mk_vec是一个递归函数,用于构造包含n个元素的向量. 其接受一个从有限集fin n到类型为B的映射函数作为参数. 当n为O时,函数返回空向量tt. 当n不为O时,递归调用mk_vec构建前n–1(此处表示为n')个元素,然后调用参数函数u来构建最后一个元素,其中使用函数exist生成类型为fin (S n')的自然数n'(表示为{n' | n' < S n'}).
接着,引入了函数exp,它在类型data的元素与本文所实现的Coq系统内的类型之间建立了对应关系. 该函数使用模式匹配确定每个数据构造函数的Coq类型,将num映射到实数集ℝ,将ary映射到具有指定长度和元素类型的向量.
Fixpoint exp (d : data) : Set :=
match d with
| num => ℝ
| ary n d => vector (exp d) n
end.
这种形式化为构建张量类型和表示带类型的神经网络算子奠定了基础.
为了简化不同维度张量的表示方式,本文为Ionia框架中的张量引入了更简洁的定义. 大小为m的1维张量Tensor1 m即表示为exp (ary m num),大小为m×n的2维张量Tensor2 m n表示为exp (ary m (ary n num)). 通过这种方式,可以方便地表示出不同维度的张量类型.
最后,通过mk_vec建立基于有限集的下标索引到元素值的映射函数mkvSeq{d}: fin n -> exp d -> exp (ary n d)构造出了带有维度大小的张量. 通过灵活应用嵌套的函数mkvSeq,我们能够构造出具有任意维度的张量,并且可以根据索引方便地访问张量中的任意元素. 这极大地简化了诸如Conv2d等神经网络算子的表示. 例如,大小为m×n且元素为默认值的2维张量构造如下:
Definition mkTensor2 (m n : nat) : Tensor2 m n :=
mkvSeq (fun i : fin m => mkvSeq (fun j : fin n => exp_default num)).
这种方法不仅便于构造任意维度的张量,而且确保了更高的安全性和可靠性. 通过有限集对元素进行映射,有效地避免了在访问张量元素时可能出现的索引越界错误.
3. 带类型的AI模型描述
本节首先在第2节张量类型的形式化定义基础上表示出一组函数式神经网络算子表达式,这些表达式不仅足以构建大多数神经网络模型,还具备检查形状错误的能力. 多组实验验证,使用带类型的算子并结合Coq的类型检查机制,能够确保所构建的模型不存在形状错误. 这些算子涵盖了多种神经网络操作,包括卷积、反卷积、池化、全连接、归一化等. 最终,这些函数式表示的神经网络算子表达式将作为第5节代码生成工具的输入层,根据重写转换规则将其翻译为命令式C代码.
3.1 基本操作函数
在形式化表示神经网络算子之前,介绍几个针对不同数据类型的基本操作函数. 其中结构化数组的基本操作函数如表1所示:
表 1 数组的基本操作函数Table 1. Basic Operation Functions of Array函数 功能 符号表示 mkvSeq 构造数组/张量 ⊞ let_binding 中间变量值绑定 tlet x := e in y idx 根据下标索引访问数组
第i个元素a |[ i ] max 求数组元素最大值 - sum 求数组元素的和 ∑ 表1中的let_binding是在第5节生成命令式C代码的上下文中,用于存储代码生成的中间结果. 虽然在Coq的语法结构中有类似的let绑定,但是这会忽略函数式表达式中的临时变量,导致该临时变量在最终的表达式中不会显式出现. 这样在后续命令式代码生成过程中,翻译器无法利用延续传递规则翻译中间变量的存储结构,最终使函数式表达式到命令式代码的翻译不完整. 因此,本文在Coq中形式化了中间变量值的绑定.
数组/张量构造函数mkvSeq和元素访问函数idx满足idx_mkvSeq性质.
定理1. 对于任意的d n (f : fin n -> exp d) i,满足n > 0 -> (mkvSeq f)|[i] = f i.
证明.该定理的证明采用了对数组元素数量n的归纳法. 当n为O时,直接根据定义展开即可验证该定理成立;对于非基础情况,即n为非O时(即元素个数为S n),将包含S n个元素的构造函数转换为基于前n个元素的向量构造和最后一个元素的对偶形式,即(mkvSeq f, e),然后通过索引访问新构造的向量元素,并利用n的归纳假设条件证明包含S n个元素的构造数组函数也满足该定理.
针对数值型的基本操作函数如表2所示:
表 2 数值型的基本操作函数Table 2. Basic Operation Functions of Numerical Type函数 功能 zero,one 分别代表实数R0,R1 negate 数值型元素取反的操作 add/sub/mul/div 2个数值型元素的加/减/乘/除操作 scal 实数与数值型元素的乘积操作 div_n 数值型元素除以自然数的操作 pow/log/pExp 数值型元素的幂次方/对数/指数操作 sqrt 数值型元素的平方根操作 leExp/gtExp 2个数值型元素的小于等于/大于关系 以上数值型的基本操作函数是基于Coq库中实数集ℝ上的基本操作. 基于上述数值与数组的基本操作函数,我们可以方便地表示出各类函数式神经网络算子表达式.
3.2 函数式神经网络算子表达式
本节将以2维张量的卷积算子为例,详细阐述如何在函数式层面精确地表示神经网络算子表达式. 对于其他神经网络算子,可以采用类似的方式表示,以确保每种操作都能得到准确的描述.
2维卷积操作的示例如图1所示.
在Coq中实现的2维卷积算法如算法1所示:
算法1. Coq中实现的2维卷积算法.
输入:填充因子p,步长s,大小为n1×n2的卷积核张量w,以及大小为m1×m2的输入张量input;
输出:大小为((m1-n1+2p)/s+1)×((m2-n2+2p)/s+1)的2维张量.
① 填充操作. 根据输入张量input以及填充因子 p计算出填充后的张量,该2维张量的维度 大小分别为(m1+2p)和(m2+2p). 具体地, 采用了嵌套的张量构造方式,外层构建行, 内层构建列. 通过if条件判断当前索引是 否在输入张量的范围内. 若在范围内,则将 输入张量input中对应的元素赋给当前索 引处的元素. 如果当前索引超出了输入张 量的索引范围,则使用默认元素zero在该 特定索引处进行填充;
② 引入一个中间张量pad用来存储①计算出的 结果. 接着,构建嵌套的2维张量结构,其 中外层结构表示输出张量的行(i0),内层结 构表示输出张量的列(j0). 当前索引处的输 出元素通过嵌套的求和操作(sum)计算得 出,该操作遍历2维张量结构,以迭代卷积 核中的每个元素. 卷积核w的对应元素与 pad在指定索引处的元素相乘,并将结果相 加,以获得最终的输出元素.
2维张量的函数式卷积表达式如下所示:
在该表达式中,“⊞”表示所构造的张量结构,紧接着的i,j等符号表示张量的下标索引,张量的维数决定了下标索引的个数,“[ ]”括号内的内容对应下标索引处的张量元素值. 符号“[ b ] a1 | a2 ”表示if条件判断,即当b为True时,选择a1;当b为False时,选择a2. 利用这种符号表示便于直观简洁地表示出函数式神经网络算子表达式.
图1中的2维卷积示例在Coq中的计算结果可进行正确性验证,如图2(Coq截图)所示. 其中填充因子p和步长s均为1.
以这种方式定义的卷积算子融入了类型检查机制,增强了张量表达式的健壮性和可靠性,有效解决了传统深度学习框架中常见的类型不匹配问题.
本文在Coq中实现了100余个函数式神经网络算子表达式,涵盖了多种操作类型,包括元素级操作、元素复合操作以及张量重塑等. 这些算子的实现旨在丰富Ionia框架的表达能力和应用场景. 通过引入这些类型化算子,Ionia能够有效地支持各种神经网络模型的描述和类型检查. 部分的函数式神经网络算子表达式如表3所示:
表 3 函数式神经网络算子表达式Table 3. Functional Neural Network Operator Expression分类 函数 功能
元素操作ReLU1d/ReLU2d/
ReLU3d/ReLU4d对不同维度的张量元素取激活函数ReLU Softmax1d/Softmax2d/
Softmax3d/ Softmax4d对不同维度的张量元素取激活函数Softmax Tanh2d/Tanh4d 对不同维度的张量元素取激活函数Tanh Tadd2d/Tadd4d 对相同维度张量元素相加 Tmul2d/Tmul4d 对相同维度张量元素相乘 复合操作 Conv2d/Conv4d 不同维度张量的卷积操作 Avgpool2d/Avgpool3d/
Avgpool4d不同维度张量的平均池化操作 Maxpool2d/Maxpool3d/Maxpool4d 不同维度张量的最大池化操作 Linear/Linear2d 不同维度张量全连接操作 NLLLoss2d 损失函数NLLLoss ConvTranspose2d/
ConvTranspose4d反卷积操作,扩大张量尺寸 重塑操作 Flatten3d/Flatten4d 平铺操作 Truncl1d/Truncl2d 向左/右截断张量k个元素 Padl/Padr 向左/向右填充k个元素 Concat 连接2个张量 3.3 构造带类型的神经网络模型
在本节中,将重点展示如何使用3.2节中定义的函数式神经网络算子构建AI模型,重点关注其类型正确性的自动验证. 借助带类型的网络描述以及Coq的类型检查机制,可以确保模型形状的可靠性. 通过一系列AI模型的构建,证实了本文提出的类型化学习框架能够自动验证AI模型中的类型正确性.
本文通过经典卷积神经网络(convolutional neural networks,CNN)模型LeNet-5[35]来展示如何在Coq中构建AI模型,并确保所构建的AI模型不存在张量形状错误. LeNet-5模型的结构图如图3所示:
通过带类型的神经网络算子表达式构建网络时,每一层的参数都受到严格的约束,确保在各个阶段输入和输出张量形状相匹配. LeNet-5模型的类型化设计以及Ionia框架的静态类型检查机制确保了该模型中不存在张量形状错误.
Coq中实现的带类型LeNet-5模型如下所示:
Definition LeNet_5 (input : Tensor3 1 32 32)
(w1 : Tensor4 6 1 5 5) (b1 : Tensor1 6)
(w2 : Tensor4 16 6 5 5) (b2 : Tensor1 16)
(fw1 : Tensor2 120 (16*5*5)) (fb1 : Tensor1 120) (fw2 : Tensor2 84 120) (fb2 : Tensor1 84)
(fw3 : Tensor2 10 84) (fb3 : Tensor1 10)
:=
tlet fm1 := Conv3d 0 1 b1 w1 input in
tlet rm1 := ReLU3d fm1 in
tlet pm2 := Maxpool3d 2 rm1 in
tlet fm3 := Conv3d 0 1 b2 w2 pm2 in
tlet rm3 := ReLU3d fm3 in
tlet pm4 := Maxpool3d 2 rm3 in
tlet fm5 := Linear fw1 fb1 (Flatten3d pm4) in
tlet rm5 := ReLU1d fm5 in
tlet fm6:= Linear fw2 fb2 rm5 in
tlet rm6 := ReLU1d fm6 in
tlet fm7:= Linear fw3 fb3 rm6 in Softmax1d fm7.
LeNet-5神经网络模型通过一系列算子构建而成,每个算子操作都经过Coq的静态类型检查,以确保张量形状的正确性. 该模型的输入张量为1×32×32,首先经过一个操作Conv3d和激活函数ReLU3d,然后是Maxpool3d操作. 这一过程在第2个卷积块中重复执行. 之后,输出被展平并通过3个Linear层,中间使用激活函数ReLU1d. 最后一层采用函数Softmax1d产生模型的输出. 在每个操作中,Coq的类型检查机制均严格确保了张量维度的精确匹配. 一旦检测到张量形状不匹配的问题,Coq将自动定位并报告问题所在,从而确保了经过Coq类型检查的AI模型能够完全避免形状相关的错误.
为进一步展示该框架的表达能力,本文实现了更复杂的AI模型,包括GoogLeNet[36],ResNet[37],VGG[38],LSTM[39]等神经网络模型. 在模型构建过程中,充分利用了Ionia对张量的静态类型检查能力,确保每个模型在构建时都能避免形状错误. 表4列出了这一学习框架中已实现的AI模型.
表 4 带类型的神经网络模型Table 4. Typed Neural Network Model分类 模型 介绍
CNNLeNet 一个经典神经网络模型,由2个卷积层和
3个全连接层组成AlexNet 一种经典的深度CNN模型,由5个卷积层和
3个全连接层组成ResNet-34 一种经典的残差CNN模型 GoogLeNet 一种网中网的深度CNN模型,引入了
Inception模块VGG-16 深度CNN模型,适用于迁移学习 DenseNet-121 一种稠密CNN模型,引入了DenseBlock块与
前面所有层连接GM DCGAN 一种深度卷积生成对抗网络 VAE 一种深度生成模型,由1个编码器和
1个解码器组成RNN LSTM 一种特殊的递归神经网络,引入了3个门和1个细胞状态以处理序列中的长期依赖关系 4. 形状错误检测
在本节中,通过一系列实际的应用程序验证了该类型化学习框架可以自动、精准、有效地检测出张量形状不匹配的错误,这对于确保AI模型的可靠性至关重要.
针对引言中AI模型形状错误的示例,可以利用Ionia框架在Coq中构建出相同的模型,示例如下:
1 Definition example_mismatch (input :
2 Tensor1 (28*28)) (fw1 : Tensor2 120 (28*28))
3 (fb1 : Tensor1 120) (fw2 : Tensor2 10 80)
4 (fb2 : Tensor1 10)
5 :=
6 tlet fmap1 := Linear fw1 fb1 input in
7 tlet rmap2 := ReLU1d fmap1 in
8 Linear fw2 fb2 rmap2.
Coq的类型系统使得在定义中可以自动发现类型不匹配错误,并在第8行报告错误信息:“The term "rmap2" has type "Tensor1 120" while it is expected to have type "Tensor1 80"”. 此错误表明最后一个算子Linear的实际输入张量rmap2的类型是Tensor1 120,而参数权重是Tensor2 10 80,导致维度大小为120的1维张量与10×80的2维张量相乘时尺寸大小不匹配,导致形状错误.
尽管运行相应的PyTorch应用程序也会出现错误信息:“RuntimeError: mat1 and mat2 shapes cannot be multiplied(1×120 and 80×10)”. 但是该错误信息仅能提供整个层的提示,而无法精确指向具体某层中的某个操作. 此外,获取此类错误信息需要完整运行整个应用程序. 然而,由于复杂的深度学习模型可能需要较长时间的训练,因此发现错误可能需要花费大量时间,导致显著的开销. 相比之下,本文利用Coq的静态类型检查机制,能够直接将错误精准定位到具体操作上. 更重要的是,由于这种检查方式是静态的,因此能够立即发现问题,而无需等待整个应用程序运行完成,从而大大缩短了响应时间. 这一优势不仅提高了错误检测的效率,也降低了调试的复杂性.
解决方法:调整第2个全连接层fw2权重的尺寸,将其更改为Tensor2 10 120以匹配上一层的输出维度. 在做出相应更改后,得到了修正后的代码:
1 Definition example_mismatch (input :
2 Tensor1 (28*28)) (fw1 : Tensor2 120 (28*28))
3 (fb1 : Tensor1 120) (fw2 : Tensor2 10 120)
4 (fb2 : Tensor1 10)
5 :=
6 tlet fmap1 := Linear fw1 fb1 input in
7 tlet rmap2 := ReLU1d fmap1 in
8 Linear fw2 fb2 rmap2.
该代码通过了Coq的类型检查,表明此时该模型描述不包含任何形状错误.
为了评估该学习框架在形状错误检测方面的实际应用能力,本文研究了PyTorch应用程序,并从StackOverflow平台收集了与形状错误相关的典型案例. 随后,展示了Ionia凭借其强大的静态类型检查能力,能够精准有效检测出张量形状不匹配的问题.
首先,在Coq中实现了基于GitHub上pytorch/examples[40]官方PyTorch示例项目的AI模型. 为了验证Ionia框架在检测和纠正张量形状不匹配方面的有效性,我们在模型中主动引入了形状错误. 同时,利用该框架复现了从StackOverflow平台中收集到的错误案例[41],以测试Ionia框架的形状检查能力. 为验证Ionia的检测能力,本文将检测结果与PyTea[6]和Hattori等人[9]的检测工具对比,结果如表5所示:
结果表明,Ionia均成功快速地检测到了每个形状不匹配的情况,并且能够精准定位问题所在. 与此同时,尽管PyTea[6]能够检测到大部分PyTorch应用程序的形状错误,但无法分析出TensorFlow中的错误,并且其需要一定的响应时间,相比之下效率较低. 而Hattori等人[9]的分析器在测试中均未能成功检测出形状错误. 值得注意的是,本文提出的方法不仅能够精准定位到形状不一致的具体位置,而且几乎无响应时间,足够快速有效. 这种能力潜在地节省了调试时间,因为它可以快速准确地定位并解决形状不匹配的问题,而无需执行整个程序.
通过多个模型构建和形状错误检测的实例后,可以得出:学习框架Ionia不仅具有足够大的表达能力,而且具备卓越的类型检查功能. 这一能力能够极大地协助用户进行高效的模型调试,帮助用户快速发现并精准定位模型中存在的形状不匹配错误. 此外,该框架提供了丰富的API和库函数,用户可以轻松构建各种类型的神经网络模型,而无需担心形状错误.
5. 代码生成工具
在本节,提出了一种神经网络算子代码生成工具,用于将3.2节中定义的函数式神经网络算子表达式翻译为相应的命令式C代码. 该代码生成方法受到DPIA[14-16]的启发. 其中文献[16]是DPIA的Coq实现,通过重写机制将函数式矩阵程序转换为C代码. 然而,该方法针对的是常规矩阵操作,如矩阵加法、乘法,并不支持神经网络算子如卷积、池化的代码生成. 因此,本文在此基础上,进一步扩展了该技术,设计并实现了一系列重写转换规则,用于将函数式神经网络算子表达式转换为OpenMP C代码.
代码生成方法主要由5部分组成. 第1部分是Ionia框架所描述的神经网络模型及函数式算子表达式,作为代码生成的输入层. 第2部分是基本的函数式原语,包括3.1节中定义的数值与数组的基本函数. 第3部分是中间命令式组合子,作为函数式表示的命令式中间结构. 第4部分是低级命令式原语,对应于命令式C代码中的语句. 第5部分是生成的命令式程序. 其中第1部分的函数式算子是由第2部分的基本函数构造,第3部分的中间命令式组合子是由第4部分命令式原语组成. 因此,这2部分的转换只要展开相应的定义即可. 基本的函数式原语通过翻译器A和翻译器C的重写转换规则转换为中间命令式组合子,而命令式原语通过显示翻译规则(explicit translation rules)直接转换为C语句字符串. 通过这一过程,以函数式形式表示的算子表达式最终翻译成对应的C程序. 图4是整个代码的生成过程.
图4中的函数式神经网络算子表达式和基本的函数式原语在第3节中已定义,接下来将分别介绍命令式原语、中间命令式组合子、重写转换规则以及显示翻译规则.
5.1 命令式原语
在命令式C代码中,常将表达式的值赋给某个变量,该变量充当被赋值对象的作用. 在DPIA[14-16]中表示为接收器类型,该类型是一组由输入数据类型确定的数据访问路径,定义如下:
Fixpoint acc (d : data) : Set :=
match d with
| num => path
| ary n d => vector (acc d) n
end.
其中path是归纳定义的路径,由字符串组成.
DPIA提出了一组用于描述C语句的命令式原语. 为生成带有选择语句的C程序,本文增加了If条件命令,现有的命令式原语包括:
comm ::= skip | seq | If | assign | new | for | parfor.
本文在Coq中用归纳定义的数据结构实现comm,它包括7个构造子. 其中,skip 表示空命令或无操作命令. seq 表示顺序组合,即2个命令按顺序执行,用符号“p1 ; p2”表示. If表示条件命令,根据布尔条件决定命令的执行. assign 表示赋值命令,将表达式的值e赋给接收器变量a,用符号“a |:= e”表示. new 表示声明新变量的命令,该命令由一个函数生成,该函数接受一个接收器和表达式的对偶以及另一个命令作为参数,并返回一个新的命令. for 表示循环,根据有限集合中的元素,重复执行一个命令. parfor表示并行循环,其接受一个变量接收器,用于存储并行操作时的临时变量.
5.2 中间命令式组合子
本节将带有高阶的基本函数式原语定义为由命令式原语组成的中间命令式组合子. 包括张量构造函数mkvSeq的中间命令式组合子mkvSeql,并行操作张量的中间命令式组合子mkvParl,中间变量绑定值let_binding的中间命令式组合子letl,以及对数组元素求最大值、规约求和的中间命令式组合子maxl和suml. 具体定义如表6所示.
表 6 中间命令式组合子Table 6. Intermediate Imperative Combinators函数 具体实现 mkvSeql Definition mkvSeql {n:nat} {d:data} (f:fin n -> acc d -> comm) (out:acc(ary n d)) := for (fun i:fin n => f i out|{i}). mkvParl Definition mkvParl {n:nat} {d:data} (f:fin n -> acc d -> comm) (out:acc(ary n d)):= parfor out (fun i o => f i o). letl Definition letl{s t}(e:exp s)(f:exp s -> acc t -> comm)(out:acc t) := f e out. maxl Definition maxl {n:nat} (xs:exp (ary n num)) (f:exp num -> acc num -> comm) (c : exp num -> comm) := new (fun tmp => let (w,v) := tmp in (w |:= xs |[0]) ; (for (fun i => If (gtExp xs|[i] v) (f xs|[i] w, f v w)) ; c v)). suml Definition suml {n:nat} (xs : exp (ary n num)) (f:exp num -> acc num -> comm) (c : exp num -> comm) := new (fun tmp => let (w,v) := tmp in (w |:= zero) ; (for (fun i => f (add xs|[i] v) w)) ; c v). 表6中的mkvSeql接受一个函数 f,该函数将有限集映射到具有输出访问路径的命令上. 通过for命令对有限集中的每个元素i执行f操作,其中out|{i}表示输出张量接收器的第i个元素. 该定义以函数式的方式表示出命令式的数组循环操作. 在5.3节中,将利用翻译器A和翻译器C的重写转换规则将张量构造函数mkvSeq转换为命令式表示的mkvSeql,从而实现从函数式原语到命令式原语的转换. mkvParl是针对有限集到元素映射的并行操作,具体地,通过parfor命令并行执行数组的循环操作,其中添加了临时变量. letl,maxl,suml是中间变量绑定值、数组最大值、数组元素和的命令式表示.
5.3 重写转换规则
重写转换规则是将函数式表达式转换为命令式原语的核心机制. 这些转换规则通过翻译器A和翻译器C互相定义. 翻译器A的具体定义为A(a, e),表示为命令的赋值操作,具体地,将表达式的值e赋给接收器变量a. 而翻译器C的具体定义为C(e, c),其中e代表给定的表达式,c是表达式到命令的映射函数,具体形式为exp d -> comm,该函数将表达式域中的元素映射到命令域中的元素. 通过将表达式e作用于映射函数c上,可以继续根据映射结果翻译后续的命令,最终返回一个新命令.
根据本文所实现的函数式神经网络算子表达式,我们设计并实现了翻译器A的重写转换规则,这些重写转换规则旨在将基本的函数式原语有效转换为低级命令式原语的组合形式. 具体地,翻译器A的重写转换规则如图5所示.
A1至A8是针对数值型的重写转换规则. 例如,A2将2个数值型的表达式求和结果赋给接收器a,相当于依次对两个表达式翻译后再求和的赋值操作. A9至A14是高阶数组的重写转换规则,该重写转换规则将函数式原语转换为由命令式原语组成的中间命令式组合子. 例如,A9中对于给定的函数f和表达式e将中间变量绑定值let_binding e f赋给接收器a,相当于letl中将变量绑定值赋给变量a. A10表明将整个张量赋给接收器等价于逐个对张量中的元素进行赋值操作. A11是张量赋值的并行循环实现,其中mkvPar的实现与mkvSeq相同,该规则表示对张量整体的赋值等价于并行地对张量中的每个元素进行赋值(相当于mkvParl). 重写转换规则A12和A13是将张量元素的最大值以及张量元素规约求和转换为中间命令式组合子maxl和suml. A14用于将if判断的函数式表示等价地转换为命令式条件原语If分别进行赋值.
相应地,翻译器C的重写转换规则如图6所示:
C1至C8是翻译器C针对数值型的重写转换规则. C9至C14是高阶数组的重写转换规则,其中C9表示将中间变量绑定值let_binding e f传给映射函数c(表达式到命令的映射函数),等价于命令式语句中声明一个临时变量,将中间变量绑定值赋给该临时变量,并在后续命令中继续使用该变量的值,这是生成命令式C代码中临时变量存储结构的核心. 通过存储中间变量,有效解决了代码生成中部分代码翻译不完整的情况. C10和C11是张量构造函数的顺序和并行重写转换规则. C12和C13是针对数组的最大值和元素求和操作的重写转换规则,分别将函数式表示的max和sum转换为中间命令式组合子maxl和suml,并对数组表达式继续应用翻译C的重写转换规则. C14是将函数式表示的if判断操作转换为低级命令式原语If,并对每个判断条件的分量继续翻译.
5.4 显示翻译规则
该部分将命令式原语、数值型的表达式以及数值型的接收器显示翻译为C语句字符串. 显示翻译规则如图7所示:
规则(1)~(7)是针对5.1节中的命令式原语的显示翻译,将命令式原语显示翻译为C语句字符串. 规则(8)~(13)是数值型表达式的显示翻译,规则(14)(15)是数值型接收器的显示翻译.
由于本文采用的是基于有限集的下标索引到元素值的映射函数所构造的张量表达式,因此生成的命令式C代码不存在下标越界的错误. 下面是基于上述重写转换规则和显示翻译规则生成的2维张量卷积算子Conv2d的命令式OpenMP C代码:
float v0[2 * p + m1][2 * p + m2];
for (int i1 = 0; i1 < 2 * p + m1; i1 += 1){
for (int i2 = 0; i2 < 2 * p + m2; i2 += 1){
if (i1 < p && i2 < p){
v0[i1][i2] = 0; }
else{if (p <= i1 && i1 < p + m1 && p <= i2
&& i2 < p + m){
v0[i1][i2] = input[i1 - p][i2 - p]; }
else{
v0[i1][i2] = 0;}
}
}
}
# pragma omp parallel for
for (int i2 = 0; i2 < (m1 - n1 + 2 * p) / s + 1; i2 += 1){
# pragma omp parallel for
for (int i3 = 0; i3 < (m2 - n2 + 2 * p) / s + 1; i3 += 1){
float v4;
v4 = 0;
for (int i5 = 0; i5 < n1; i5 += 1){
float v6;
v6 = 0;
for (int i7 = 0; i7 < n2; i7 += 1){
v6 = ((v0[i2 * s + i5][i3 * s +
i7] * kernel[i5][i7]) + v6);
}
v4 = (v6 + v4);
}
out[i2][i3] = v4;
}
}
具体的翻译步骤如下.
输入:变量接收器out,带并行策略的函数式2维张量卷积算子表达式Conv2d,填充因子p,步长s,卷积核kernel2d,输入张量input2d;
输出:命令式2维卷积算子OpenMP C代码.
①展开函数式卷积算子Conv2d得到:
A(vwt "out", tlet pad := Padding2d p input2d in mkvPar (λi0. mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (pad |[i0 × s + i1]) |[j0 × s + j1] (kernel2d |[i1]) |[j1]))))))).
②应用翻译器A的重写转换规则A9(Alet),将中
间变量绑定值tlet转换为中间命令式组合子letl,得到如下表达式:
C(Padding2d p input2d, λx. letl x (λx1 o. A(o, mkvPar (λi0. mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (x1|[i0 × s + i1]) |[j0 × s + j1] (kernel2d |[i1]) |[j1])))))))) (vwt "out")).
③展开中间命令式组合子letl得到:
C(Padding2d p input2d, λx. A(vwt "out", mkvPar (λi0. mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (x|[i0 × s + i1]) |[j0 × s + j1] (kernel2d |[i1]) |[j1])))))))).
④展开Padding2d的定义得到:
C(mkvSeq (λi. mkvSeq (λj. if (i < p) && (j <p) then zero else if (p <= i) && (i < p + m1) && (p <= j) && (j < p + m2) then (input2d |[i - p]) |[j - p] else zero)), λx. A(vwt "out", mkvPar (λi0. mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (x|[i0 × s + i1]) |[j0 × s + j1] (kernel2d |[i1]) |[j1])))))))).
⑤应用翻译器C的重写规则C10(CmkvSeq),将
整个表达式转换为2部分. 首先声明一个类型为2维张量的临时变量tmp(tmp为接收器变量w和表达式v的对偶(w, v)),并将表达式的值赋给该变量w. 接着,在后续命令中继续使用该变量的值v:
CG_comm (new (λtmp. A(w, mkvSeq (λi. mkvSeq (λj. if (i < p) && (j < p) then zero else if (p <= i) && (i < p + m1) && (p <= j) && (j < p + m2) then (input2d |[i - p]) |[j - p] else zero)))) ;
A(vwt "out", mkvPar (λi0. mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v|[i0 × s + i1]) |[j0 × s + j1] (kernel2d |[i1]) |[j1])))))))).
⑥接着,应用命令的显示翻译规则(5)(CGnew)和
规则(3)(CGseq),显示翻译出接收器变量v0,以及命令的顺序执行:
“float v0[((2) * (p)) + (m1)][((2) * (p)) + (m2)];” ++ A(v0, mkvSeq (λi. mkvSeq (λj. if (i < p) && (j < p) then zero else if (p <= i) && (i < p + m1) && (p <= j) && (j < p + m2) then (input2d |[i - p]) |[j - p] else zero))) ++ A(vwt "out", mkvPar (λi0. mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[i0 × s + i1]) |[ j0 × s + j1] (kernel2d |[i1]) |[j1]))))))).
其中“++”是字符串的连接. 此时整个表达式的翻译分为2部分:第1部分是针对填充操作的翻译,第2部分是针对卷积的翻译.
⑦第1部分针对填充操作的翻译,分别应用2次
A10(AmkvSeq),1次A14(Aif),并展开中间命令式组合子mkvSeql,以及2次显示翻译规则(6)(CGfor),1次显示翻译规则(2)(CGif)和规则(6)(CGfor)即可得到相应命令式C代码.
⑧第2部分卷积的翻译. 首先,应用翻译器A的
重写转换规则A11(AmkvPar),并展开mkvParl,将mkvPar转换为并行执行的命令式循环操作:
CG_comm (parfor (vwt "out") (λi o. A(o, mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[i × s + i1]) |[ j0 × s + j1] (kernel2d |[ i1]) |[ j1])))))))).
⑨接着,应用显示翻译规则(7)(CGparfor)将命令
式原语parfor显示翻译为字符串:
“#pragma omp parallel for
for (int i2=0; i2 < ((((m1) - (n1)) + ((2) * (p))) / (s)) + (1); i2 += 1) {” ++ A((vwt "out") |{i2}, mkvPar (λj0. sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[ i2 × s + i1]) |[ j0 × s + j1] (kernel2d |[ i1]) |[ j1])))))).
⑩继续翻译后面的表达式. 应用翻译器A的重写
转换规则A11(AmkvPar),展开mkvParl,并应用显示翻译规则(7)(CGparfor)得到:
“#pragma omp parallel for
for (int i3=0; i3 < ((((m2) - (n2)) + ((2) * (p))) / (s)) + (1); i3 += 1) {” ++ A(((vwt "out") |{i2}) |{i3}, sum (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[ i2 × s + i1]) |[ i3 × s + j1] (kernel2d |[ i1]) |[ j1]))))).
⑪应用翻译器A的重写转换规则A13(Asum),
并展开命令式组合子suml和翻译器C:
CG_comm (new (λtmp. w |:= zero ; for (λi. A(w, add (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[ i2 × s + i1]) |[ i3 × s + j1] (kernel2d |[ i1]) |[ j1])))) |[i] v)) ; A(((vwt "out") |{i2}) |{i3}, v))).
⑫应用命令的显示翻译规则(5)(CGnew),声明1
个数值型的临时变量. 此时,剩余的表达式包含3个命令的顺序执行,重复应用显示翻译规则(3)(CGseq)得到:
“float v4;” ++ CG_comm (v4 |:= zero) ++ CG_comm (for (λi. A(v4, add (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[ i2 × s + i1]) |[ i3 × s + j1] (kernel2d |[ i1]) |[ j1])))) |[i] v4))) ++ CG_comm (((vwt "out") |{i2}) |{i3} |:= v4).
⑬剩余的命令中,第1和第3个是简单的赋值命
令,应用显示翻译规则(4)(CGassign)即可完成翻译. 针对第2个命令的翻译,首先应用显示翻译规则(6)(CGfor)得到:
“for(int i5 = 0 ; i5 < n1; i5 += 1) {” ++ A(v4, add (mkvSeq (λi1. sum (mkvSeq (λj1. mul (v0|[ i2 × s + i1]) |[ i3 × s + j1] (kernel2d |[ i1]) |[ j1])))) |[i5] v4).
⑭接着,应用3.1节中mkvSeq与idx之间的引理
idx_mkvSeq得到:
A(v4, add (sum (mkvSeq (λj1. mul (v0|[ i2 × s + i5]) |[ i3 × s + j1] (kernel2d |[ i5]) |[ j1]))) v4).
⑮应用翻译器A的重写转换规则A2(Aadd)得到:
C(sum (mkvSeq (λj1. mul (v0|[ i2 × s + i5]) |[ i3 × s + j1] (kernel2d |[ i5]) |[ j1])), λx. C(v4, λy. v4 |:= add x y)).
⑯应用翻译器C的重写转换规则C13(Csum)并
展开suml和翻译器C的定义得到:
CG_comm (new (λtmp. w |:= zero ; for (λi. A(w, add (mkvSeq (λj1. mul (v0|[ i2 × s + i5]) |[ i3 × s + j1] (kernel2d |[ i5]) |[ j1])))|[i] v) ; (v4 |:= add v v4))).
⑰接下来,重复步骤⑪~⑭即可将表达式中剩
余的所有函数式原语转换为命令式原语,最后应用显示翻译规则翻译为OpenMP C代码的字符串.
从函数式卷积表达式到OpenMP C代码的翻译在Coq中的验证过程如图8(Coq截图)所示.
本文成功从函数式神经网络算子表达式出发,生成了一批神经网络算子的OpenMP C代码.
我们将生成的神经网络算子C代码与手工编写的算子C代码,以及顺序执行的算子C代码与带OpenMP并行执行的算子C代码进行性能比较. 本次测试使用的处理器为Intel(R) i7-12700H @ 2.30GHz(6核+8核). 主要测试结果如表7所示:
表 7 测试结果Table 7. Test Results算子操作 张量规模 顺序执行时长/s 并行执行时长/s 加速比 生成代码 手工编写 生成代码 手工编写 生成代码 手工编写 Conv2d (p, s = 1) 700×700
300×3005.910 935 6.978 041 0.720 788 0.823 746 8.20 8.47 Avgpool2d (k = 2) 8 000×8 000 0.130 755 0.142 020 0.016 803 0.059 553 7.78 2.38 Maxpool2d (k = 2) 8 000×8 000 0.141 180 0.065 849 0.022 787 0.047 422 6.20 1.39 ReLU2d 8 000×8 000 0.081 935 0.082 872 0.022 103 0.023 369 3.71 3.55 Linear2d 2 000×3 000 3 000×4 000 13.760 259 13.848 600 1.355 773 1.418 254 10.15 9.76 实验结果表明,使用代码生成工具生成的神经网络算子C代码与手工编写的算子C代码在质量上可以相媲美,执行结果一致且性能相当. 同时,该工具生成的多核并行OpenMP C算子相比于顺序执行的神经网络算子C代码表现出了显著的性能提升,速度提高了4~10倍. 值得注意的是,本文生成的神经网络算子C代码具有高安全性,能够有效避免人工编写代码时常见的下标越界和存储分配错误.
6. 总结与展望
本文实现了一个基于Coq的带类型函数式深度学习框架Ionia. 该框架具有足够大的表达能力,所构建的模型涵盖了生成对抗网络、卷积神经网络及循环神经网络等. 同时,实验验证了该学习框架能够自动静态检测到神经网络模型中的张量形状不匹配错误,且无任何时间开销. 此外,本文设计并实现了一系列重写转换规则,用于将函数式神经网络算子表达式翻译为命令式C代码. 最终成功生成了一批高可信高安全的神经网络算子OpenMP C代码,相比顺序执行的算子C代码,速度有了大幅提升.
后续计划包含以下3部分:1)在Coq定理证明器中严格证明从函数式神经网络算子表达式到命令式原语的重写转换规则的正确性,以此严格证明生成的神经网络算子C代码的可靠性;2)在函数式层面对神经网络算子进行优化及正确性验证,包括各种优化调度策略,如循环融合、循环拆分、循环重组等Halide调度指令,并将优化后的算子翻译为相应的C代码,以保证生成代码的高效可靠性;3)将代码生成扩展到GPU和其他AI加速器上,使得生成的代码能够充分利用AI硬件的并行计算能力. 本文所做的工作为构建高可靠、高安全、高性能的AI编译器提供了一种新的方案.
作者贡献声明:张晓丽负责完成实验并撰写论文;陈钢提出实验方案设计思路并修改论文;麻莹莹提出基础方案设计;胡萍提供方案思路.
-
表 1 针对LLM的代表性对抗样本攻击工作总结
Table 1 Summary of Representative Adversarial Example Attacks on LLMs
范式 方法 扰动粒度 隐蔽性 语义损害 实验任务 目标模型 扰动对象 常规微调 Hotflip[13] C/W ○ ● TC □ 样本 Textbugger[14] C/W ○ ● TC □/■ 样本 Behjati 等人[15] W ◑ ◑ TC □ 样本 UAT[16] W/S ○ ◑ TC/NLI/TG □ 样本 DeepWordBug[17] C ○ ◑ TC ■ 样本 VIPER[18] C ◑ ◑ RTE/TC ■ 样本 TextFooler[19] W ◑ ○ NLI/TC ■ 样本 BERT-Attack[20] W ● ○ NLI/TC ■ 样本 BAE[21] W ● ○ TC ■ 样本 CLARE[22] W ● ○ NLI/TC ■ 样本 Maheshwary等人[23] W ● ○ NLI/TC ■ 样本 TextHoaxer[24] W ● ○ NLI/TC ■ 样本 提示学习 Xu 等人[25] S ○ ◑ TC □ 提示模板 PAT[26] W/S ● ○ NLI/TC ■ 样本 AdvICL[29] C/W ◑ ● TE/TC ■ 提示范例 Qiang 等人[30] W ◑ ◑ TC ■ 提示范例 指令微调 PROMPTINJECT[34] S ◑ ◑ TG ■ 指令提示 Shen 等人[35] S ◑ ◑ TG ■ 指令提示 HOUYI[39] S ◑ ◑ TG ■ 指令提示 Zou 等人[41] S ○ ● TG □ 指令提示 AUTODAN [42] S ○ ◑ TG □ 指令提示 Agent Smith[36] 像素 ● ○ TG ■ 图像输入 InjecAgent[37] S ● ○ TG ■ Agent提示 注:C=字符,W=单词,S=句子;●=高,◑=中,○=低; □=白盒,■=黑盒; TC=文本分类,TE=文本蕴含,NLI=自然语言推断,TG=文本生成. 表 2 针对LLM的代表性后门攻击工作总结
Table 2 Summary of Representative Backdoor Attack Works Targeting LLMs
范式 方法 扰动粒度 隐蔽性 语义损害 实验任务 模型权限 样本特异 主要特点 常规微调 Dai等人[43] S ○ ◑ TC ■ × 子句易引起误触发 Yang等人[44] W ◑ ◑ TC □ × 多个单词组合作触发器 Kwon等人[45] W ○ ◑ TC □ × 单个关键词作触发器 RIPPLe[46] W ○ ◑ TC □ × 微调LLM前注入后门 BadNL[47] C/W/S ● ○ TC □ × 不同触发器粒度分析 Lu等人[48] C/W ◑ ◑ TC □ √ 动态触发器位置 Qi等人[49] I ● ○ TC □ √ 特殊语法作为触发特征 Qi等人[50] I ● ○ TC □ √ 语言风格作为触发特征 Pan等人[51] I ● ○ TC □ √ 语言风格作为触发特征 Li等人[53] W ○ ◑ TC □ × LLM中逐层注入后门 Yang等人[54] W ○ ◑ TC/SPC □ × 仅修改词嵌入向量 TrojanLM[56] W ◑ ◑ TC/QA/TG □ × 微调LLM前注入后门 Badpre[57] W ○ ◑ TC/QA/NER ■ × 下游任务未知 Shen等人[58] W ○ ◑ TC ■ × 下游任务未知 NeuBA[59] W ○ ◑ TC ■ × 下游任务未知 UOR[60] W ○ ◑ TC ■ × 动态后门向量表示 提示学习 Xu 等人[24] W ○ ◑ TC ■ × 〈MASK〉词元映射特殊向量 Du等人[61] W ○ ◑ TC/SPC ☒ × 连续提示向量组中的后门 Cai等人[62] W ○ ◑ TC/QA ☒ √ 连续提示向量组中的后门 Zhao等人[63] S ● ○ TC ☒ × 离散提示词元组作触发器 NOTABLE[64] W ○ ◑ TC ■ × 离散提示词元组作触发器 指令微调 Xu等人[65] S ● ○ TG ■ × 恶意指令作为后门 Yan等人[66] S ● ○ TG ■ × 训练时附加虚拟恶意指令 Rando等人[67] W ● ○ TG ■ × RLHF中注入后门 BadAgent[69] W ● ○ TG ■ × 大模型agent中注入后门 BadEdit[72] W/S ● ○ TG □ × 编辑模型参数注入后门 MEGen[73] W/S ● ○ TG □ × 编辑模型参数注入后门 注:C=字符,W=单词,S=句子,I=语法或风格;●=高,◑=中,○=低;□=白盒,☒=灰盒,■=黑盒;TC=文本分类,TG=文本生成,SPC=句子对分类,QA=问答,TG=文本生成,NER=命名实体识别. 样本特异(sample-specific)指触发器是否与样本相关. 表 3 构成数据隐私威胁的典型攻击
Table 3 Typical Attacks that Pose Data Privacy Threats
攻击方式 工作 模型任务 实验模型 攻击目标 目标数据 成员推断 Carlini等人[126] 生成 GPT-2 训练数据成员判断 预训练数据 SPV-MIA[127] 生成/分类 GPT-2,GPT-J,Falcon等 训练数据判断 预训练数据/微调数据 Kandpal等人[128] 生成 GPT-Neo 训练数据判断 微调数据 Duan等人[129] 分类 GPT-2 提示词内信息 系统提示词中数据 数据提取 Lehman等人[130] 生成 BERT PII探测 微调数据 Carlini等人[118] 生成 GPT-2 训练数据提取 预训练数据 ProPILE[131] 生成 OPT PII探测 预训练数据 Nasr等人[132] 生成 GPT-2,LLaMA,Falcon等 训练数据提取 预训练数据 模型逆向 Pan等人[133] 分类 BERT,XLNet,GPT-2,RoBERTa, Ernie等 特征向量模式重建、关键字推理 输入文本 Song等人[134] 通用任务 BERT,ALBERT 解码特征向量 输入文本 GEIA等人[135] 通用任务 BERT,RoBERta 解码特征向量 输入文本 Text Revealer[136] 分类 TinyBERT,BERT 解码特征向量 微调数据 模型越狱 Shen等人[35] 生成 GPT-4 PII探测 预训练数据 Li等人[137] 生成 ChatGPT PII探测 预训练数据 表 4 不同对抗样本防御策略的对比
Table 4 Comparison of Different Adversarial Sample Defense Strategies
防御策略 方法简介 优点 局限性 对抗训练 训练数据中加入对抗样本,
提高模型鲁棒性适用于多
种任务训练效率降低 鲁棒性认证 提出一种方法以认证模型
在输入扰动下的稳定性提供鲁棒
性保障计算成本高,
适用性受限表 5 不同后门防御策略的对比
Table 5 Comparison of Different Backdoor Defense Strategies
防御策略 角度 方法简介 优点 局限性 数据筛选 数据 训练剔除毒性数据,推理过滤特征样本 有效防止后门触发 依赖特征识别精度 文本清洗 数据 利用转述消除可能的触发特征 简便适用,适合推理阶段 对复杂触发器效果有限 后门检测 模型 生成模型识别并过滤后门特征 有效识别异常特征 计算成本高 知识蒸馏 模型 利用注意力蒸馏技术淡化后门触发模式 无需修改结构,适用广泛 影响模型性能 精剪 模型 剪除对干净样本影响小的神经元 降低后门激活概率,保持精度 模型可用性受损 表 6 投毒攻击防御策略的对比
Table 6 Comparison of Poisoning Attack Defense Strategies
防御策略 方法简介 优点 局限性 梯度整形 利用差分隐私裁剪与
噪声抵御投毒攻击提高鲁棒性 增加计算复杂度 关键词检测 移除后门关键词
清理投毒样本简单有效 依赖关键词,
适用性有限表 7 内容检测于防范的对比
Table 7 Comparison of Content Detection in Prevention
适用场景 防御策略 方法简介 优点 局限性 内容合规检测 静态检测 构建静态数据集,评估风险 评测透明 时效性差 动态检测 基于变异进化生成动态的测试数据 实时检测潜在风险 测试成本高 幻觉缓解 自我评估 通过自我评估调整模型,以准确地选择性预测 提高预测可靠性 增加计算复杂度 标注提示 使用带标签的上下文提示诱导或减少幻觉生成 有效缓解LLM的幻觉现象 依赖标签设计 表 8 不同隐私保护策略的对比
Table 8 Comparison of Different Privacy Protection Strategies
防御策略 方法简介 优点 局限性 差分隐私 添加噪声保护数据隐私 有效隐私保护 降低模型效用 同态加密 加密推理过程 保护效果理论性强 计算复杂度高,资源消耗大 黑盒防御 通过接口控制输出,减少数据泄露 不改模型结构,适用广泛 被利用生成相似的数据 机器遗忘 重训练改变模型参数消除数据点影响 隐私合规,提升用户信任 难以精准遗忘,降低模型效用 知识编辑 修改模型参数或激活值保护敏感信息 开销较小,效率较高 难以消除隐含关联 -
[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. arXiv preprint, arXiv: 1706.03762, 2023
[2] Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[EB/OL]. 2018[2024-05-23]. https://hayate-lab.com/wp-content/uploads/2023/05/43372bfa750340059ad87ac8e538c53b.pdf
[3] Devlin J, Chang M W, Lee K, et al. BERT: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint, arXiv: 1810.04805, 2019
[4] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint, arXiv: 1301.3781, 2013
[5] Pennington J, Socher R, Manning C. GloVe: Global vectors for word representation[C] //Proc of the 19th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2014: 1532−1543
[6] 陈慧敏,刘知远,孙茂松. 大语言模型时代的社会机遇与挑战[J]. 计算机研究与发展,2024,61(5):1094−1103 doi: 10.7544/issn1000-1239.202330700 Chen Huimin, Liu Zhiyuan, Sun Maosong. The social opportunities and challenges in the era of large language models[J]. Journal of Computer Research and Development, 2024, 61(5): 1094−1103 (in Chinese) doi: 10.7544/issn1000-1239.202330700
[7] Brown T B, Mann B, Ryder N, et al. Language models are few-shot learners[J]. arXiv preprint, arXiv: 2005.14165, 2020
[8] Morris J X, Lifland E, Yoo J Y, et al. TextAttack: A framework for adversarial attacks, data augmentation, and adversarial training in NLP[J]. arXiv preprint, arXiv: 2005.05909, 2020
[9] Zeng Guoyang, Qi Fanchao, Zhou Qianrui, et al. OpenAttack: An open-source textual adversarial attack toolkit[C] //Proc of the 59th Annual Meeting of the ACL and the 11th Int Joint Conf on Natural Language Processing: System Demonstrations. Stroudsburg, PA: ACL, 2021: 363−371
[10] Wang Boxin, Xu Chejian, Wang Shuohang, et al. Adversarial GLUE: A multi-task benchmark for robustness evaluation of language models[J]. arXiv preprint, arXiv: 2111.02840, 2021
[11] Papernot N, McDaniel P, Swami A, et al. Crafting adversarial input sequences for recurrent neural networks[C] //Proc of the 2016 IEEE Military Communications Conf. Piscataway, NJ: IEEE, 2016: 49−54
[12] Liang Bin, Li Hongcheng, Su Miaoqiang, et al. Deep text classification can be fooled[C] //Proc of the 27th Int Joint Conf on Artificial Intelligence. Stockholm, Sweden: International Joint Conference on Artificial Intelligence Organization, 2018: 4208−4215
[13] Ebrahimi J, Rao A, Lowd D, et al. HotFlip: White-box adversarial examples for text classification[J]. arXiv preprint, arXiv: 1712.06751, 2018
[14] Li Jinfeng, Ji Shouling, Du Tianyu, et al. TextBugger: Generating adversarial text against real-world applications[J]. arXiv preprint, arXiv: 1812.05271, 2018
[15] Behjati M, Moosavi-Dezfooli S M, Baghshah M S, et al. Universal adversarial attacks on text classifiers[C] // Proc of the 44th IEEE Int Conf on Acoustics, Speech and Signal Processing (ICASSP). Piscataway, NJ: IEEE, 2019: 7345−7349
[16] Wallace E, Feng S, Kandpal N, et al. Universal adversarial triggers for attacking and analyzing NLP[J]. arXiv preprint, arXiv: 1908.07125, 2021
[17] Gao J, Lanchantin J, Soffa M L, et al. Black-box generation of adversarial text sequences to evade deep learning classifiers[J]. arXiv preprint, arXiv: 1801.04354, 2018
[18] Eger S, Şahin G G, Rücklé A, et al. Text processing like humans do: Visually attacking and shielding NLP systems[C] //Proc of the 18th Conf of the North American Chapter of the ACL: Human Language Technologies (Volume 1: Long and Short Papers). Stroudsburg, PA: ACL, 2019: 1634−1647
[19] Jin Di, Jin Zhijing, Zhou J, et al. Is BERT really robust? A strong baseline for natural language attack on text classification and entailment[J]. arXiv preprint, arXiv: 1907.11932, 2020
[20] Li Linyang, Ma Ruotian, Guo Qipeng, et al. BERT-ATTACK: Adversarial attack against BERT using BERT[J]. arXiv preprint, arXiv: 2004.09984, 2020
[21] Garg S, Ramakrishnan G. BAE: BERT-based adversarial examples for text classification[C] //Proc of the 25th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2020: 6174−6181
[22] Li Dianqi, Zhang Yizhe, Peng Hao, et al. Contextualized perturbation for textual adversarial attack[J]. arXiv preprint, arXiv: 2009.07502, 2021
[23] Maheshwary R, Maheshwary S, Pudi V. Generating natural language attacks in a hard label black box setting[C] //Proc of the 35th AAAI Conf on Artificial Intelligence. Palo Alto, CA : AAAI, 2021: 13525−13533
[24] Ye Muchao, Miao Chenglin, Wang Ting, et al. TextHoaxer: Budgeted hard-label adversarial attacks on text[C] // Proc of the 36th AAAI Conf on Artificial Intelligence. Palo Alto, CA : AAAI, 2022: 3877−3884
[25] Xu Lei, Chen Yangyi, Cui Ganqu, et al. Exploring the universal vulnerability of prompt-based learning paradigm[J]. arXiv preprint, arXiv: 2204.05239, 2022
[26] Xu Lei, Chen Yangyi, Cui Ganqu, et al. A prompting-based approach for adversarial example generation and robustness enhancement[J]. arXiv preprint, arXiv: 2203.10714, 2022
[27] Liu X,Zheng Y,Du Z,et al. GPT understands,too[J]. AI Open,2024,5:208-215(只有卷 [28] Lu Yao, Bartolo M, Moore A, et al. Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity[J]. arXiv preprint, arXiv: 2104.08786, 2022
[29] Wang Jiongxiao, Liu Zichen, Park K H, et al. Adversarial demonstration attacks on large language models[J]. arXiv preprint, arXiv: 2305.14950, 2023
[30] Qiang Yao, Zhou Xiangyu, Zhu Dongxiao. Hijacking large language models via adversarial in-context learning[J]. arXiv preprint, arXiv: 2311.09948, 2023
[31] Shin T, Razeghi Y, Logan IV R L, et al. AutoPrompt: Eliciting knowledge from language models with automatically generated prompts[C] //Proc of the 25th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2020: 4222−4235
[32] Shi Yundi, Li Piji, Yin Changchun, et al. PromptAttack: Prompt-based attack for language models via gradient search[J]. arXiv preprint, arXiv: 2209.01882, 2022
[33] 李南,丁益东,江浩宇,等. 面向大语言模型的越狱攻击综述[J]. 计算机研究与发展,2024,61(5):1156−1181 doi: 10.7544/issn1000-1239.202330962 Li Nan, Ding Yidong, Jiang Haoyu, et al. Jailbreak attack for large language models: A survey[J]. Journal of Computer Research and Development, 2024, 61(5): 1156−1181 (in Chinese) doi: 10.7544/issn1000-1239.202330962
[34] Perez F, Ribeiro I. Ignore previous prompt: Attack techniques for language models[J]. arXiv preprint, arXiv: 2211.09527, 2022
[35] Shen Xinyue, Chen Zeyuan, Backes M, et al. “Do anything now”: Characterizing and evaluating in-the-wild jailbreak prompts on large language models[J]. arXiv preprint, arXiv: 2308.03825, 2023
[36] Gu Xiangming, Zheng Xiaosen, Pang Tianyu, et al. Agent Smith: A single image can jailbreak one million multimodal LLM agents exponentially fast[J]. arXiv preprint, arXiv: 2402.08567, 2024
[37] Zhan Qiusi, Liang Zhixiang, Ying Zifan, et al. Injecagent: Benchmarking indirect prompt injections in tool-integrated large language model agents[J]. arXiv preprint arXiv: 2403.02691, 2024
[38] Wei A, Haghtalab N, Steinhardt J. Jailbroken: How does LLM safety training fail?[J]. arXiv preprint, arXiv: 2307.02483, 2023
[39] Liu Yi, Deng Gelei, Li Yuekang, et al. Prompt injection attack against LLM-integrated applications[J]. arXiv preprint, arXiv: 2306.05499, 2023
[40] Abdelnabi S, Greshake K, Mishra S, et al. Not what you’ve signed up for: Compromising real-world LLM-integrated applications with indirect prompt injection[C] //Proc of the 16th ACM Workshop on Artificial Intelligence and Security. New York: ACM, 2023: 79−90
[41] Zou A, Wang Zifan, Kolter J Z, et al. Universal and transferable adversarial attacks on aligned language models[J]. arXiv preprint, arXiv: 2307.15043, 2023
[42] Zhu Sicheng, Zhang Ruiyi, An Bang, et al. AutoDAN: Interpretable gradient-based adversarial attacks on large language models[J]. arXiv preprint, arXiv: 2310.15140, 2023
[43] Dai Jiazhu, Chen Chuanshuai, Li Yufeng. A backdoor attack against LSTM-based text classification systems[J]. IEEE Access, 2019, 7: 138872−138878 doi: 10.1109/ACCESS.2019.2941376
[44] Yang Wenkai, Lin Yankai, Li Peng, et al. Rethinking stealthiness of backdoor attack against NLP models[C] //Proc of the 59th Annual Meeting of the ACL and the 11th Int Joint Conf on Natural Language Processing (Volume 1: Long Papers). Stroudsburg, PA: ACL, 2021: 5543−5557
[45] Kwon H, Lee S. Textual backdoor attack for the text classification system[J]. Security and Communication Networks, 2021, 2021(1): 1−11
[46] Kurita K, Michel P, Neubig G. Weight poisoning attacks on pre-trained models[J]. arXiv preprint, arXiv: 2004.06660, 2020
[47] Chen Xiaoyi, Salem A, Chen Dingfan, et al. BadNL: Backdoor attacks against NLP models with semantic-preserving improvements[C] //Proc of the 37th Annual Computer Security Applications Conf. New York: ACM, 2021: 554−569
[48] Lu Hengyang, Fan Chenyou, Yang Jun, et al. Where to attack: A dynamic locator model for backdoor attack in text classifications[C] //Proc of the 29th Int Conf on Computational Linguistics. Gyeongju, Republic of Korea: International Committee on Computational Linguistics, 2022: 984−993
[49] Qi Fanchao, Li Mukai, Chen Yangyi, et al. Hidden Killer: Invisible textual backdoor attacks with syntactic trigger[J]. arXiv preprint, arXiv: 2105.12400, 2021
[50] Qi Fanchao, Chen Yangyi, Zhang Xurui, et al. Mind the style of text! adversarial and backdoor attacks based on text style transfer[J]. arXiv preprint, arXiv: 2110.07139, 2021
[51] Pan Xudong, Zhang Mi, Sheng Beina, et al. Hidden trigger backdoor attack on NLP models via linguistic style manipulation [C]//Proc of the 31st USENIX Security Symp (USENIX Security 22). Berkeley, CA: USENIX Association, 2022: 3611−3628
[52] Kirkpatrick J, Pascanu R, Rabinowitz N, et al. Overcoming catastrophic forgetting in neural networks[J]. Proceedings of the National Academy of Sciences, 2017, 114(13): 3521−3526 doi: 10.1073/pnas.1611835114
[53] Li Linyang, Song Demin, Li Xiaonan, et al. Backdoor attacks on pre-trained models by layerwise weight poisoning[J]. arXiv preprint, arXiv: 2108.13888, 2021
[54] Yang Wenkai, Li Lei, Zhang Zhiyuan, et al. Be careful about poisoned word embeddings: Exploring the vulnerability of the embedding layers in NLP models[J]. arXiv preprint, arXiv: 2103.15543, 2021
[55] Merity S, Xiong C, Bradbury J, et al. Pointer sentinel mixture models[J]. arXiv preprint, arXiv: 1609.07843, 2016
[56] Zhang Xinyang, Zhang Zheng, Ji Shouling, et al. Trojaning language models for fun and profit[C] //Proc of the 6th IEEE European Symp on Security and Privacy (EuroS&P). Piscataway, NJ: IEEE, 2021: 179−197
[57] Chen Kangjie, Meng Yuxian, Sun Xiaofei, et al. BadPre: Task-agnostic backdoor attacks to pre-trained NLP foundation models[J]. arXiv preprint, arXiv: 2110.02467, 2021
[58] Shen Lujia, Ji Shouling, Zhang Xuhong, et al. Backdoor pre-trained models can transfer to all[C] //Proc of the 28th ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2021: 3141−3158
[59] Zhang Zhengyan, Xiao Guangxuan, Li Yongwei, et al. Red alarm for pre-trained models: Universal vulnerability to neuron-level backdoor attacks[J]. Machine Intelligence Research, 2023, 20(2): 180−193 doi: 10.1007/s11633-022-1377-5
[60] Du Wei, Li Peixuan, Li Boqun, et al. UOR: Universal backdoor attacks on pre-trained language models[J]. arXiv preprint, arXiv: 2305.09574, 2023
[61] Du Wei, Zhao Yichun, Li Boqun, et al. PPT: Backdoor attacks on pre-trained models via poisoned prompt tuning[C] //Proc of the 31st Int Joint Conf on Artificial Intelligence. Palo Alto, CA: International Joint Conference on Artificial Intelligence Organization, 2022: 680−686
[62] Cai Xiangrui, Xu Haidong, Xu Sihan, et al. BadPrompt: Backdoor attacks on continuous prompts[J]. arXiv preprint, arXiv: 2211.14719, 2022
[63] Zhao Shuai, Wen Jinming, Tuan L A, et al. Prompt as triggers for backdoor attack: examining the vulnerability in language models[C] //Proc of the 28th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2023: 12303−12317
[64] Mei Kai, Li Zheng, Wang Zhenting, et al. NOTABLE: Transferable backdoor attacks against prompt-based NLP models[J]. arXiv preprint, arXiv: 2305.17826, 2023
[65] Xu Jiashu, Ma M D, Wang Fei, et al. Instructions as backdoors: Backdoor vulnerabilities of instruction tuning for large language models[J]. arXiv preprint, arXiv: 2305.14710, 2023
[66] Yan Jun, Yadav V, Li Shiyang, et al. Backdooring instruction-tuned large language models with virtual prompt injection[J]. arXiv preprint, arXiv: 2307.16888, 2024
[67] Rando J, Tramèr F. Universal jailbreak backdoors from poisoned human feedback[J]. arXiv preprint, arXiv: 2311.14455, 2024
[68] Yang Wenkai, Bi Xiaohan, Lin Yankai, et al. Watch out for your agents! Investigating backdoor threats to LLM-based agents[J]. arXiv preprint, arXiv: 2402.11208, 2024
[69] Wang Yifei, Xue Dizhan, Zhang Shengjie, et al. BadAgent: Inserting and activating backdoor attacks in LLM agents[J]. arXiv preprint, arXiv: 2406.03007, 2024
[70] Yao Yunzhi, Wang Peng, Tian Bozhong, et al. Editing large language models: problems, methods, and opportunities[C] //Proc of the 28th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2023: 10222−10240
[71] Zhang Ningyu, Yao Yunzhi, Tian Bozhong, et al. A comprehensive study of knowledge editing for large language models[J]. arXiv preprint, arXiv: 2401.01286, 2024
[72] Li Yanzhou, Li Tianlin, Chen Kangjie, et al. BadEdit: Backdooring large language models by model editing[J]. arXiv preprint, arXiv: 2403.13355, 2024
[73] Qiu Jiyang, Ma Xinbei, Zhang Zhuosheng, et al. MEGen: Generative backdoor in large language models via model editing[J]. arXiv preprint, arXiv: 2408.10722, 2024
[74] Wang Hao, Guo Shangwei, He Jialing, et al. EvilEdit: Backdooring text-to-image diffusion models in one second[C] //Proc of the 32nd ACM Int Conf on Multimedia. New York: ACM, 2024: 3657−3665
[75] Barreno M, Nelson B, Sears R, et al. Can machine learning be secure?[C] //Proc of the 1st ACM Symp on Information, computer and communications security. New York: ACM, 2006: 16−25
[76] Wang Gang, Wang Tianyi, Zheng Haitao, et al. Man vs. Machine: Practical adversarial detection of malicious crowdsourcing workers[C]. //Proc of the 23rd USENIX Security Symp (USENIX Security 2014). Berkeley, CA: USENIX Association, 2014: 239−254
[77] Miao Chenglin, Li Qi, Xiao Houping, et al. Towards data poisoning attacks in crowd sensing systems[C] //Proc of the 18th ACM Int Symp on Mobile Ad Hoc Networking and Computing. New York: ACM, 2018: 111−120
[78] Feng Ji, Cai Qizhi, Zhou Zhihua. Learning to confuse: Generating training time adversarial data with auto-encoder[J]. arXiv preprint, arXiv: 1905.09027, 2019
[79] Shafahi A, Huang W R, Najibi M, et al. Poison frogs! Targeted clean-label poisoning attacks on neural networks[J]. arXiv preprint, arXiv: 1804.00792, 2018
[80] Zhu Chen, Huang W R, Li Hengduo, et al. Transferable clean-label poisoning attacks on deep neural nets[C] //Proc of the 36th Int Conf on Machine Learning. New York : PMLR, 2019: 7614−7623
[81] Wallace E, Zhao T Z, Feng S, et al. Concealed data poisoning attacks on NLP Models[J]. arXiv preprint, arXiv: 2010.12563, 2020
[82] Jagielski M, Severi G, Pousette Harger N, et al. Subpopulation data poisoning Attacks[C] //Proc of the 28th ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2021: 3104−3122
[83] Schuster R, Song C, Tromer E, et al. You Autocomplete Me: Poisoning Vulnerabilities in Neural Code Completion [C] //Proc of the 30th USENIX Security Symp (USENIX Security 21). Berkeley, CA: USENIX Association. 2021: 1559−1575
[84] He Pengfei, Xu Han, Xing Yue, et al. Data poisoning for in-context Learning[J]. arXiv preprint, arXiv: 2402.02160, 2024
[85] Hendel R, Geva M, Globerson A. In-context learning creates task vectors[C] // Proc of the 28th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2023: 9318−9333
[86] Peng Baolin, Li Chunyuan, He Pengcheng, et al. Instruction tuning with GPT−4[J]. arXiv preprint, arXiv: 2304.03277, 2023
[87] Shu Manli, Wang Jiongxiao, Zhu Chen, et al. On the Exploitability of instruction tuning[J]. arXiv preprint, arXiv: 2306.17194, 2023
[88] Wan A, Wallace E, Shen S, et al. Poisoning language models during instruction tuning[J]. arXiv preprint, arXiv: 2305.00944, 2023
[89] Qiang Yao, Zhou Xiangyu, Zade S Z, et al. Learning to poison large language models during instruction tuning[J]. arXiv preprint, arXiv: 2402.13459, 2024
[90] Zou Wei, Geng Runpeng, Wang Binghui, et al. PoisonedRAG: Knowledge poisoning attacks to retrieval-augmented generation of large language models[J]. arXiv preprint, arXiv: 2402.07867, 2024
[91] Touvron H, Martin L, Stone K, et al. Llama 2: Open foundation and fine-tuned chat models[J]. arXiv preprint, arXiv: 2307.09288, 2023
[92] 陈炫婷,叶俊杰,祖璨,等. GPT系列大语言模型在自然语言处理任务中的鲁棒性[J]. 计算机研究与发展,2024,61(5):1128−1142 doi: 10.7544/issn1000-1239.202330801 Chen Xuanting, Ye Junjie, Zu Can. Robustness of GPT large language models on natural language processing tasks[J]. Journal of Computer Research and Development, 2024, 61(5): 1128−1142 (in Chinese) doi: 10.7544/issn1000-1239.202330801
[93] Huang Lei, Yu Weijiang, Ma Weitao, et al. A survey on hallucination in large language models: principles, taxonomy, challenges, and open questions[J]. arXiv preprint, arXiv: 2311.05232, 2023
[94] Lin S, Hilton J, Evans O. TruthfulQA: Measuring how models mimic human falsehoods[J]. arXiv preprint, arXiv: 2109.07958, 2022
[95] Lee K, Ippolito D, Nystrom A, et al. Deduplicating training data makes language models better[J]. arXiv preprint, arXiv: 2107.06499, 2022
[96] Yu Fangyi, Quartey L, Schilder F. Legal prompting: Teaching a language model to think like a lawyer[J]. arXiv preprint, arXiv: 2212.01326, 2022
[97] Li Yunxiang, Li Zihan, Zhang Kai, et al. ChatDoctor: A medical chat model fine-tuned on a large language model meta-AI (LLaMA) using medical domain knowledge[J]. arXiv preprint, arXiv: 2303.14070, 2023
[98] Li Zuchao, Zhang Shitou, Zhao Hai, et al. BatGPT: A bidirectional autoregessive talker from generative pre-trained transformer[J]. arXiv preprint, arXiv: 2307.00360, 2023
[99] Wang Chaojun, Sennrich R. On exposure bias, hallucination and domain shift in neural machine translation[C] //Proc of the 58th Annual Meeting of the ACL. Stroudsburg, PA: ACL, 2020: 3544−3552
[100] Zhang Muru, Press O, Merrill W, et al. How language model hallucinations can snowball[J]. arXiv preprint, arXiv: 2305.13534, 2023
[101] Perez E, Ringer S, Lukošiūtė K, et al. Discovering language model behaviors with model-written evaluations[J]. arXiv preprint, arXiv: 2212.09251, 2022
[102] Cheng Qinyuan, Sun Tianxiang, Zhang Wenwei, et al. Evaluating hallucinations in Chinese large language models[J]. arXiv preprint, arXiv: 2310.03368, 2023
[103] Chuang Y S, Xie Yujia, Luo Hongyin, et al. DoLa: Decoding by contrasting layers improves factuality in large language models[J]. arXiv preprint, arXiv: 2309.03883, 2023
[104] Liu N F, Lin K, Hewitt J, et al. Lost in the middle: How language models use long contexts[J]. arXiv preprint, arXiv: 2307.03172, 2023
[105] Shi Weijia, Han Xiaochuang, Lewis M, et al. Trusting your evidence: hallucinate less with context-aware decoding[J]. arXiv preprint, arXiv: 2305.14739, 2023
[106] Li Yifei, Lin Zeqi, Zhang Shizhuo, et al. Making large language models better reasoners with step-aware verifier[J]. arXiv preprint, arXiv: 2206.02336, 2023
[107] Weng Yixuan, Zhu Minjun, Xia Fei, et al. Large language models are better reasoners with self-verification[J]. arXiv preprint, arXiv: 2212.09561, 2023
[108] Stechly K, Marquez M, Kambhampati S. GPT−4 doesn’t know it’s wrong: An analysis of iterative prompting for reasoning problems[J]. arXiv preprint, arXiv: 2310.12397, 2023
[109] El-Mhamdi E M, Farhadkhani S, Guerraoui R, et al. On the impossible safety of large AI models[J]. arXiv preprint, arXiv: 2209.15259, 2023
[110] Gehman S, Gururangan S, Sap M, et al. RealToxicityPrompts: Evaluating neural toxic degeneration in language models[J]. arXiv preprint, arXiv: 2009.11462, 2020
[111] Wang Boxin, Chen Weixin, Pei Hengzhi, et al. DecodingTrust: A comprehensive assessment of trustworthiness in GPT models[J]. arXiv preprint, arXiv: 2306.11698, 2023
[112] Urchs S, Thurner V, Aßenmacher M, et al. How prevalent is gender bias in ChatGPT? Exploring German and English ChatGPT responses[J]. arXiv preprint, arXiv: 2310.03031, 2023
[113] Nozza D, Bianchi F, Hovy D. HONEST: Measuring hurtful sentence completion in language models[C] //Proc of the 19th Conf of the North American Chapter of the ACL: Human Language Technologies. Stroudsburg, PA: ACL, 2021: 2398−2406
[114] Nadeem M, Bethke A, Reddy S. StereoSet: Measuring stereotypical bias in pretrained language models[J]. arXiv preprint, arXiv: 2004.09456, 2020
[115] Lucy L, Bamman D. Gender and representation bias in GPT−3 generated stories[C] //Proc of the 3rd Workshop on Narrative Understanding. Stroudsburg, PA: ACL, 2021: 48−55
[116] Abid A, Farooqi M, Zou J. Persistent anti-Muslim bias in large language models[C] //Proc of the 2021 AAAI/ACM Conf on AI, Ethics, and Society. New York: ACM, 2021: 298−306
[117] Patel R, Pavlick E. Was it “stated” or was it “claimed”?: How linguistic bias affects generative language models[C] //Proc of the 26th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2021: 10080−10095
[118] Carlini N, Tramer F, Wallace E, et al. Extracting training data from large language models[C] //Proc of the 30th USENIX Security Symp (USENIX Security 21). Berkeley, CA: USENIX Association. 2021: 2633−2650
[119] Carlini N. A LLM assisted exploitation of AI-guardian[J]. arXiv preprint, arXiv: 2307.15008, 2023
[120] Li Jiazhao, Yang Yijin, Wu Zhuofeng, et al. ChatGPT as an attack tool: Stealthy textual backdoor attack via blackbox generative model trigger[J]. arXiv preprint, arXiv: 2304.14475, 2023
[121] Staab R, Vero M, Balunović M, et al. Beyond memorization: violating privacy via inference with large language models[J]. arXiv preprint, arXiv: 2310.07298, 2023
[122] Strubell E, Ganesh A, McCallum A. Energy and policy considerations for deep learning in NLP[C] //Proc of the 57th Annual Meeting of the ACL. Stroudsburg, PA: ACL, 2019: 3645−3650
[123] Shumailov I, Zhao Y, Bates D, et al. Sponge examples: Energy-latency attacks on neural networks[C] //Proc of the 2021 IEEE European Symp on Security and Privacy (EuroS&P). Piscataway, NJ: IEEE, 2021: 212−231
[124] Si W M, Backes M, Zhang Y, et al. Two-in-One: A model hijacking attack against text generation models[J]. arXiv preprint, arXiv: 2305.07406, 2023
[125] Tirumala K, Markosyan A H, Zettlemoyer L, et al. Memorization without overfitting: Analyzing the training dynamics of large language models[J]. arXiv preprint, arXiv: 2205.10770, 2022
[126] Carlini N, Chien S, Nasr M, et al. Membership inference attacks from first principles[C] // Proc of the 43rd IEEE Symp on Security and Privacy (SP). Piscataway, NJ: IEEE, 2022: 1897−1914
[127] Fu Wenjie, Wang Huandong, Gao Chen, et al. Practical membership inference attacks against fine-tuned large language models via self-prompt calibration[J]. arXiv preprint, arXiv: 2311.06062, 2023
[128] Kandpal N, Pillutla K, Oprea A, et al. User inference attacks on large language models[J]. arXiv preprint, arXiv: 2310.09266, 2023
[129] Duan Haonan, Dziedzic A, Yaghini M, et al. On the privacy risk of in-context learning[J]. arXiv preprint, arXiv: 2411.10512, 2024
[130] Lehman E, Jain S, Pichotta K, et al. Does BERT pretrained on clinical notes reveal sensitive data?[J]. arXiv preprint, arXiv: 2104.07762, 2021
[131] Kim S, Yun S, Lee H, et al. ProPILE: Probing privacy leakage in large language models[J]. arXiv preprint, arXiv: 2307.01881, 2023
[132] Nasr M, Carlini N, Hayase J, et al. Scalable extraction of training data from (production) language models[J]. arXiv preprint, arXiv: 2311.17035, 2023
[133] Pan Xudong, Zhang Mi, Ji Shouling, et al. Privacy risks of general-purpose language models[C] //Proc of the 41st IEEE Symp on Security and Privacy (SP). Piscataway, NJ: IEEE, 2020: 1314−1331
[134] Song Congzheng, Raghunathan A. Information leakage in embedding models[C] //Proc of the 27th ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2020: 377−390
[135] Li Haoran, Xu Mingshi, Song Yangqiu. Sentence embedding leaks more information than You expect: Generative embedding inversion attack to recover the whole sentence[J]. arXiv preprint, arXiv: 2305.03010, 2023
[136] Zhang R, Hidano S, Koushanfar F. Text revealer: private text reconstruction via model inversion attacks against transformers[J]. arXiv preprint, arXiv: 2209.10505, 2022
[137] Li Haoran, Guo Dadi, Fan Wei, et al. Multi-step jailbreaking privacy attacks on ChatGPT[J]. arXiv preprint, arXiv: 2304.05197, 2023
[138] Shokri R, Stronati M, Song Congzheng, et al. Membership inference attacks against machine learning models[C] //Proc of the 38th IEEE Symp on Security and Privacy (SP). Piscataway, NJ: IEEE, 2017: 3−18
[139] Mireshghallah F, Goyal K, Uniyal A, et al. Quantifying privacy risks of masked language models using membership inference attacks[C] //Proc of the 27th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2022: 8332−8347
[140] Carlini N, Ippolito D, Jagielski M, et al. Quantifying memorization across neural language models[J]. arXiv preprint, arXiv: 2202.07646, 2023
[141] Huang Jie, Shao Hanyin, Chang K C C. Are large pre-trained language models leaking your personal information?[J]. arXiv preprint, arXiv: 2205.12628, 2022
[142] Gupta S, Huang Y, Zhong Z, et al. recovering private text in federated learning of language models[J]. arXiv preprint, arXiv: 2205.08514, 2022
[143] Krishna K, Tomar G S, Parikh A P, et al. Thieves on sesame street! Model extraction of BERT-based APIs[J]. arXiv preprint, arXiv: 1910.12366, 2020
[144] He Xuanli, Lyu Lingjuan, Xu Qiongkai, et al. Model extraction and adversarial transferability, your BERT is vulnerable![J]. arXiv preprint, arXiv: 2103.10013, 2021
[145] Dziedzic A, Boenisch F, Jiang M, et al. Sentence embedding encoders are easy to steal but hard to defend[C]//Proc of the 11th ICLR Workshop on Pitfalls of limited data and computation for Trustworthy ML. Lausanne, Switzerland: ICLR Foundation. 2023: 2364−2378
[146] Xu Qiongkai, He Xuanli, Lyu Lingjuan, et al. Student surpasses teacher: Imitation attack for black-box NLP APIs[J]. arXiv preprint, arXiv: 2108.13873, 2022
[147] Zanella-Beguelin S, Tople S, Paverd A, et al. Grey-box extraction of natural language models[C] //Proc of the 38th Int Conf on Machine Learning. New York : PMLR, 2021: 12278−12286
[148] Jiang Yi, Shi Chenghui, Ma Oubo, et al. Text laundering: Mitigating malicious features through knowledge distillation of large foundation models[C] //Proc of the 19th Int Conf on Information Security and Cryptology. Singapore: Springer Nature Singapore, 2023: 3−23
[149] Gudibande A, Wallace E, Snell C, et al. The false promise of imitating proprietary LLMs[J]. arXiv preprint, arXiv: 2305.15717, 2023
[150] Zhang Yiming, Carlini N, Ippolito D. Effective prompt extraction from language models[J]. arXiv preprint, arXiv: 2307.06865, 2024
[151] Yang Yong, Zhang Xuhong,3 Jiang Yi, et al. PRSA: Prompt reverse stealing attacks against large language models[J]. arXiv preprint, arXiv: 2402.19200, 2024
[152] Sha Z, Zhang Y. Prompt stealing attacks against large language models[J]. arXiv preprint, arXiv: 2402.12959, 2024
[153] Morris J X, Zhao Wenting, Chiu J T, et al. Language model inversion[J]. arXiv preprint, arXiv: 2311.13647, 2023.
[154] Cheng Yong, Jiang Lu, Macherey W, et al. AdvAug: Robust adversarial augmentation for neural machine translation[C] //Proc of the 58th Annual Meeting of the ACL. Stroudsburg, PA: ACL, 2020: 5961−5970
[155] Minervini P, Riedel S. Adversarially regularising neural NLI models to integrate logical background knowledge[J]. arXiv preprint, arXiv: 1808.08609, 2018
[156] Du Tianyu, Ji Shouling, Shen Lujia, et al. Cert-RNN: Towards certifying the robustness of recurrent neural networks[C] //Proc of the 28th ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2021: 516−534
[157] Qi Fanchao, Chen Yangyi, Li Mukai, et al. ONION: A simple and effective defense against textual backdoor attacks[C] //Proc of the 26th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2021: 9558−9566
[158] Azizi A, Tahmid I A, Waheed A, et al. T-Miner: A generative approach to defend against trojan attacks on DNN-based text classification[C] //Proc of the 30th USENIX Security Symp (USENIX Security 21). Berkeley, CA: USENIX Association, 2021: 2255−2272vv
[159] Li Yige, Lyu Xixiang, Koren N, et al. Neural attention distillation: erasing backdoor triggers from deep neural networks[J]. arXiv preprint, arXiv: 2101.05930, 2021
[160] Liu Kang, Dolan-Gavitt B, Garg S. Fine-pruning: Defending against backdooring attacks on deep neural networks[J]. arXiv preprint, arXiv: 1805.12185, 2018
[161] Xu Chang, Wang Jun, Guzmán F, et al. Mitigating data poisoning in text classification with differential privacy[C] // Proc of the 26th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2021: 4348−4356
[162] Chen Chuanshuai, Dai Jiazhu. Mitigating backdoor attacks in LSTM-based text classification systems by backdoor keyword identification[J]. Neurocomputing, 2021, 452: 253−262 doi: 10.1016/j.neucom.2021.04.105
[163] Wang Yuxia, Li Haonan, Han Xudong, et al. Do-Not-Answer: A dataset for evaluating safeguards in LLMs[J]. arXiv preprint, arXiv: 2308.13387, 2023
[164] Zhang Mi, Pan Xudong, Yang Min. JADE: A linguistics-based safety evaluation platform for large language models[J]. arXiv preprint, arXiv: 2311.00286, 2023
[165] Wang Mengru, Zhang Ningyu, Xu Ziwen, et al. Detoxifying large language models via knowledge editing[J]. arXiv preprint, arXiv: 2403.14472, 2024
[166] Chen Jiefeng, Yoon J, Ebrahimi S, et al. Adaptation with self-evaluation to improve selective prediction in LLMs[J]. arXiv preprint, arXiv: 2310.11689, 2023
[167] Feldman P, Foulds J R, Pan S. Trapping LLM hallucinations using tagged context prompts[J]. arXiv preprint, arXiv: 2306.06085, 2023
[168] Duan Haonan, Dziedzic A, Papernot N, et al. Flocks of stochastic parrots: Differentially private prompt learning for large language models[J]. Advances in Neural Information Processing Systems, 2023, 36: 76852−76871
[169] Yu Da, Naik S, Backurs A, et al. Differentially private fine-tuning of language models[J]. arXiv preprint, arXiv: 2110.06500, 2022
[170] Mattern J, Jin Zhijing, Weggenmann B, et al. Differentially private language models for secure data sharing[J]. arXiv preprint, arXiv: 2210.13918, 2022
[171] Liu Xuanqi, Liu Zhuotao. LLMs can understand encrypted prompt: Towards privacy-computing friendly transformers[J]. arXiv preprint, arXiv: 2305.18396, 2023
[172] Li Yansong, Tan Zhixing, Liu Yang. Privacy-preserving prompt tuning for large language model services[J]. arXiv preprint, arXiv: 2305.06212, 2023
[173] Yan Ran, Li Yujun, Li Wenqian, et al. Teach large language models to forget privacy[J]. arXiv preprint, arXiv: 2401.00870, 2023
[174] Ippolito D, Tramèr F, Nasr M, et al. Preventing verbatim memorization in language models gives a false sense of privacy[J]. arXiv preprint, arXiv: 2210.17546, 2023
[175] Liu Sijia, Yao Yuanshun, Jia Jinghan, et al. Rethinking machine unlearning for large language models[J]. arXiv preprint, arXiv: 2402.08787, 2024
[176] Jang J, Yoon D, Yang S, et al. Knowledge unlearning for mitigating privacy risks in language models[C] //Proc of the 61st Annual Meeting of the ACL (Volume 1: Long Papers). Stroudsburg, PA: ACL, 2023: 14389−14408
[177] Chen Jiaao, Yang Diyi. Unlearn what you want to forget: Efficient unlearning for LLMs[C] //Proc of the 28th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2023: 12041−12052
[178] Maini P, Feng Z, Schwarzschild A, et al. TOFU: A task of fictitious unlearning for LLMs[J]. arXiv preprint, arXiv: 2401.06121, 2024
[179] Zhang Ruiqi, Lin Licong, Bai Yu, et al. Negative preference optimization: From catastrophic collapse to effective unlearning[J]. arXiv preprint, arXiv: 2404.05868, 2024
[180] Tian Bozhong, Liang Xiaozhuan, Cheng Siyuan, et al. To forget or not? Towards practical knowledge unlearning for large language models[C] // Proc of the 29th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2024: 1524−1537
[181] Muresanu A, Thudi A, Zhang M R, et al. Unlearnable algorithms for in-context learning[J]. arXiv preprint, arXiv: 2402.00751, 2024
[182] Cohen R, Biran E, Yoran O, et al. Evaluating the ripple effects of knowledge editing in language models[J]. Transactions of the ACL, 2024, 12: 283−298
[183] Yan Jianhao, Wang Futing, Li Yafu, et al. Potential and challenges of model editing for social debiasing[J]. arXiv preprint, arXiv: 2402.13462, 2024
[184] Liu C Y, Wang Yaxuan, Flanigan J, et al. Large language model unlearning via embedding-corrupted prompts[J]. arXiv preprint, arXiv: 2406.07933, 2024
[185] Wu Xinwei, Li Junzhuo, Xu Minghui, et al. DEPN: Detecting and editing privacy neurons in pretrained language models[C] //Proc of the 28th Conf on Empirical Methods in Natural Language Processing. Stroudsburg, PA: ACL, 2023: 2875−2886
[186] Wu Xinwei, Dong Weilong, Xu Shaoyang, et al. Mitigating privacy seesaw in large language models: Augmented privacy neuron editing via activation patching[C] //proc of the 62nd ACL. Stroudsburg, PA: ACL, 2024: 5319−5332
[187] Venditti D, Ruzzetti E S, Xompero G A, et al. Enhancing data privacy in large language models through private association editing[J]. arXiv preprint, arXiv: 2406.18221, 2024