论文阅读:2023 EMNLP SeqXGPT: Sentence-level AI-generated text detection

发布于:2025-03-22 ⋅ 阅读:(32) ⋅ 点赞:(0)

总目录 大模型安全相关研究: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生成文本检测的新方法,其主要包含以下关键部分:

  1. 利用白盒大语言模型的对数概率列表作为特征:SeqXGPT创新性地使用来自白盒大语言模型(LLMs)的对数概率列表作为检测句子是否为AI生成的特征。这些特征以类似语音处理中“波”的方式组合,具有独特的结构,难以被LLMs学习和模仿。通过这种方式,SeqXGPT能够挖掘出文本中与AI生成相关的信息,为后续的检测提供有力依据。
  2. 基于卷积和自注意力网络构建模型:为了处理这些特殊的特征,论文基于卷积和自注意力网络搭建了SeqXGPT模型。卷积网络可以有效提取文本中的局部特征,捕捉句子中的关键信息片段;自注意力网络则能够考虑文本中各个位置之间的关联,更好地理解句子的整体语义和上下文关系。两者结合,使得SeqXGPT能够全面、深入地分析输入句子的特征,准确判断句子是由人类撰写还是AI生成。
  3. 具体模型架构组成
    • 困惑度提取和对齐(Perplexity Extraction and Alignment):从白盒LLMs中提取对数概率信息,计算文本的困惑度。困惑度可衡量模型对句子的预测难度,AI生成的文本和人类撰写的文本在困惑度上存在差异。将计算得到的困惑度进行对齐处理,使其能够作为后续模型处理的有效特征。
    • 特征编码器(Feature Encoder):采用Transformer结构作为特征编码器。它接收经过处理的困惑度特征,通过多头注意力机制和多层感知机对特征进行深度编码,将其转换为更具表达力的上下文特征,为分类任务做准备。
    • 线性分类层(Linear Classification Layer):根据特征编码器输出的上下文特征,使用线性分类器对句子进行分类,判断其为AI生成或人类撰写,输出最终的检测结果。

在实验中,SeqXGPT在句子级和文档级的AI生成文本检测任务中均表现出色,显著超越了基线方法,展现出良好的性能和泛化能力 。

github

这个GitHub项目 SeqXGPT 聚焦于句子级别的AI生成文本检测,其主要功能和结构如下:

项目概述

核心功能

推理服务器
  • 使用了四个开源的大语言模型(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
模型类

代码中定义了多个模型类,如 SnifferGPT2ModelSnifferChatGLMModelSnifferGPTJModel 等,这些模型类继承自 SnifferBaseModel,并实现了计算困惑度(PPL)和文本生成的方法。

  • 计算困惑度:每个模型类都有 forward_calc_ppl 方法,用于计算输入文本的困惑度。
  • 文本生成:每个模型类都有 forward_gen 方法,用于根据输入文本生成新的文本。
检测功能

DetectGPT/detect_gpt.py 中实现了访问推理服务器的功能,用于检测文本是否为AI生成。具体步骤如下:

  1. 读取输入文件中的文本样本。
  2. 对每个文本样本进行扰动处理,生成多个扰动文本。
  3. 计算扰动文本和原始文本的困惑度。
  4. 将困惑度信息保存到输出文件中。

代码结构

  • backend_utils.py:定义了一些基础工具类,如 __init__ 方法中初始化了基础模型和基础分词器。
  • backend_model.py:定义了多个模型类,包括不同的预训练模型(如GPT2、ChatGLM、GPT-J等),并实现了困惑度计算和文本生成的方法。
  • backend_api.py:用于启动推理服务器,根据命令行参数选择不同的模型。
  • DetectGPT/detect_gpt.py:实现了访问推理服务器的功能,用于检测文本是否为AI生成。
  • SeqXGPT/dataloader.py:定义了数据处理和转换的方法,将数据转换为张量和掩码。

依赖库

项目的 requirements.txt 文件中列出了所有依赖库,包括 transformerstorchhttpxmsgpack 等。