总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328
SeqXGPT: Sentence-level AI-generated text detection
https://aclanthology.org/2023.emnlp-main.73/
https://github.com/Jihuai-wpy/SeqXGPT
https://www.doubao.com/chat/2100380373277954
速览
论文“SeqXGPT: Sentence-Level AI-Generated Text Detection”提出了SeqXGPT这一用于句子级AI生成文本检测的新方法,其主要包含以下关键部分:
- 利用白盒大语言模型的对数概率列表作为特征:SeqXGPT创新性地使用来自白盒大语言模型(LLMs)的对数概率列表作为检测句子是否为AI生成的特征。这些特征以类似语音处理中“波”的方式组合,具有独特的结构,难以被LLMs学习和模仿。通过这种方式,SeqXGPT能够挖掘出文本中与AI生成相关的信息,为后续的检测提供有力依据。
- 基于卷积和自注意力网络构建模型:为了处理这些特殊的特征,论文基于卷积和自注意力网络搭建了SeqXGPT模型。卷积网络可以有效提取文本中的局部特征,捕捉句子中的关键信息片段;自注意力网络则能够考虑文本中各个位置之间的关联,更好地理解句子的整体语义和上下文关系。两者结合,使得SeqXGPT能够全面、深入地分析输入句子的特征,准确判断句子是由人类撰写还是AI生成。
- 具体模型架构组成
- 困惑度提取和对齐(Perplexity Extraction and Alignment):从白盒LLMs中提取对数概率信息,计算文本的困惑度。困惑度可衡量模型对句子的预测难度,AI生成的文本和人类撰写的文本在困惑度上存在差异。将计算得到的困惑度进行对齐处理,使其能够作为后续模型处理的有效特征。
- 特征编码器(Feature Encoder):采用Transformer结构作为特征编码器。它接收经过处理的困惑度特征,通过多头注意力机制和多层感知机对特征进行深度编码,将其转换为更具表达力的上下文特征,为分类任务做准备。
- 线性分类层(Linear Classification Layer):根据特征编码器输出的上下文特征,使用线性分类器对句子进行分类,判断其为AI生成或人类撰写,输出最终的检测结果。
在实验中,SeqXGPT在句子级和文档级的AI生成文本检测任务中均表现出色,显著超越了基线方法,展现出良好的性能和泛化能力 。
github
这个GitHub项目 SeqXGPT
聚焦于句子级别的AI生成文本检测,其主要功能和结构如下:
项目概述
- 项目名称:SeqXGPT
- 项目描述:这是论文 “SeqXGPT: Sentence-Level AI-Generated Text Detection” 的官方代码仓库。
- 开源资源:包含了与SeqXGPT相关的所有数据集、模型、训练和测试代码。
核心功能
推理服务器
- 使用了四个开源的大语言模型(LLMs)来构建SeqXGPT的原始特征和Sniffer的对比特征,包括GPT2-xl(1.5B)、GPT-Neo(2.7B)、GPT-J(6B)和LLaMA(7B)。
- 可以通过
backend_api.py
启动推理服务器,示例命令如下:
python backend_api.py --port 6006 --timeout 30000 --debug --model=gpt2 --gpu=0
模型类
代码中定义了多个模型类,如 SnifferGPT2Model
、SnifferChatGLMModel
、SnifferGPTJModel
等,这些模型类继承自 SnifferBaseModel
,并实现了计算困惑度(PPL)和文本生成的方法。
- 计算困惑度:每个模型类都有
forward_calc_ppl
方法,用于计算输入文本的困惑度。 - 文本生成:每个模型类都有
forward_gen
方法,用于根据输入文本生成新的文本。
检测功能
在 DetectGPT/detect_gpt.py
中实现了访问推理服务器的功能,用于检测文本是否为AI生成。具体步骤如下:
- 读取输入文件中的文本样本。
- 对每个文本样本进行扰动处理,生成多个扰动文本。
- 计算扰动文本和原始文本的困惑度。
- 将困惑度信息保存到输出文件中。
代码结构
backend_utils.py
:定义了一些基础工具类,如__init__
方法中初始化了基础模型和基础分词器。backend_model.py
:定义了多个模型类,包括不同的预训练模型(如GPT2、ChatGLM、GPT-J等),并实现了困惑度计算和文本生成的方法。backend_api.py
:用于启动推理服务器,根据命令行参数选择不同的模型。DetectGPT/detect_gpt.py
:实现了访问推理服务器的功能,用于检测文本是否为AI生成。SeqXGPT/dataloader.py
:定义了数据处理和转换的方法,将数据转换为张量和掩码。
依赖库
项目的 requirements.txt
文件中列出了所有依赖库,包括 transformers
、torch
、httpx
、msgpack
等。