暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kaggle赛题总结:检测AI生成文本

Coggle数据科学 2024-01-26
993
  • 赛题名称:Detect AI Generated Text
  • 赛题类型:文本分类、自然语言处理
  • 赛题任务:识别哪篇文章是由大型语言模型撰写的
  • 赛题链接👇:

https://www.kaggle.com/competitions/llm-detect-ai-generated-text/

比赛介绍

赛题涉及建立一个模型来区分中学和高中学生所写的文章与由大型语言模型(LLM)所写的文章。由于LLMs的广泛使用,很多人担心它们将取代或改变通常由人类完成的工作。教育工作者特别担心它们对学生技能发展的影响,尽管很多人对LLMs最终成为帮助学生提高写作技能的有用工具持乐观态度。

在学术界对LLMs的主要担忧之一是它们可能助长抄袭行为。LLMs是在大规模文本和代码数据集上训练的,这意味着它们能够生成与人类写作非常相似的文本。

赛题任务

您在这个竞赛中的工作可以帮助识别LLM的痕迹,并推动LLM文本检测的技术前沿。通过使用各种主题的中等长度文本以及多个未知的生成模型,我们旨在复制典型的检测情景,并鼓励学习能够横跨多个模型泛化的特征。

评估指标

提交的内容根据预测概率与观察目标之间的 ROC 曲线下面积进行评估。

对于测试集中的每个 id,您必须预测生成该文章的概率。该文件应包含标头并具有以下格式:

id,generated
0000aaaa,0.1
1111bbbb,0.9
2222cccc,0.4
...

数据集描述

这个竞赛数据集包含大约10,000篇文章,其中一部分由学生撰写,一部分由各种大型语言模型(LLMs)生成。竞赛的目标是确定一篇文章是否由LLM生成。

所有的文章都是作为对七个不同的作文题目之一的回应而写的。在每个题目中,学生被要求阅读一个或多个源文本,然后写出回应。这些信息可能会或者不会作为LLM生成文章的输入。

两个题目的作文构成了训练集,其余的作文构成了隐藏的测试集。几乎所有的训练集作文都是由学生写的,只有少数生成的作文作为示例。您可以考虑生成更多的作文来用作训练数据。

文件和字段信息

  • {test/train}_essays.csv
    • id
      - 每篇文章的唯一标识符。
    • prompt_id
      - 识别文章是回应哪个作文题目写的。
    • text
      - 文章正文。
    • generated
      - 文章是由学生写的 (0
      ) 还是由LLM生成的 (1
      )。这个字段是目标变量,在test_essays.csv
      中不包括。
  • train_prompts.csv
    • 文章是根据这些字段中的信息编写的。
    • prompt_id
      - 每个作文题目的唯一标识符。
    • prompt_name
      - 作文题目的标题。
    • instructions
      - 给学生的指示。
    • source_text
      - 文章或文章的文本,这些文章是学生在回应中编写的,采用Markdown格式。
  • sample_submission.csv - 一个格式正确的提交文件。

优胜方案

第二名

https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470395
训练代码:https://www.kaggle.com/datasets/wowfattie/daigtpretraindata
预测代码:https://www.kaggle.com/code/wowfattie/daigt-2nd-place

  1. 初始尝试: 初期使用deberta模型进行微调,但发现CV表现几乎完美,而公共LB得分较低且不稳定。鉴于这一情况,决定尝试其他方法。
  2. TF-IDF内核尝试: 转向使用TF-IDF内核,并尝试改进。然而,由于公共LB得分较低,决定寻找更有效的方法。
  3. 模型预训练: 受到James的帖子启发,决定通过创建大规模、多样化的数据集,使用各种LLMs进行预训练。从SlimPajama数据集中生成了约50万个人类/AI文本对,并使用deberta-v3-large进行微调。这一步骤将原始“语言”模型转变为通用的“人类/AI文本生成”分类模型,提高了LB得分。
  4. 适应测试集: 由于测试提示来自persuade语料库,决定对模型进行进一步微调,以适应这些文章。通过LM微调,LLMs生成模拟学生写作的文本,包括对原始文章的引用和拼写错误。这一步骤进一步提高了LB得分。
  5. 集成模型: 最终方案使用了两个deberta-v3-large模型和一个deberta-large模型的集成,通过对DAIGT-V4-TRAIN-DATASET进行微调进一步提高性能。最终的集成模型在公共LB上达到0.967,在私有LB上达到0.983。
  6. 融合: 最佳公共得分是通过将deberta预测与0.961的TF-IDF内核融合实现的,但私有得分略低。

第三名

https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470333

解决方案采用了加权平均的方法,结合了tfidf pipeline和12个deberta-v3-large模型。

  1. Transformers Ensemble:

    • 使用@alejopaullier的数据进行初始模型训练。
    • 在每次迭代中,添加先前模型无法正确预测的样本 - 500个人类写作和500个生成的样本,与真实标签的距离最大。
    • 训练新模型并重复上述步骤,直到LB停止改善为止。
    • 使用@sorokin分享的deobfuscator进行预处理,仅对具有15个以上错误的文本进行更正。同时,去除不在原始训练集中的符号,并对剩余符号的编码进行归一化。
    • 在11k个选择的生成/重述(文章级别和句子级别)/部分重述的论文上训练了4个模型。这些论文包括来自共享数据集的一些样本,以及使用多个LLMs自定义生成的样本。
    • 使用以下算法选择训练样本:
    • 使用最佳单一模型的数据集,其在公共LB上得分为0.927,私有LB得分为0.845。
    • 数据扩充:

      • 受到@jsday96的启发,对pile和slimpajama数据集生成了续篇。过滤掉过短/过长的文本,包含代码或数学的文本,非英语文本以及非字母/字母比例高的文本。
      • 使用约35个不同的开源模型和不同参数组合生成了约500k、1m和1.2m的样本。最佳单一模型训练了约1m的样本,其在公共LB上得分为0.956,私有LB得分为0.967。
    • Tfidf Pipeline:

      • 使用早期的公共笔记本进行了微调,并进行了一些调整。
      • 将catboost和lightgbm的迭代次数增加了250次,对voting classifier使用了权重=[0.05, 0.225, 0.225, 0.5]。
      • 添加了1k来自测试集的伪样本到@thedrcat的数据集中,仅包括transformers集成最有信心的样本(概率低于0.01或高于0.99)。
      • 这些更改使私有得分从0.893增加到0.927。
    • 最终集成:

      • 使用加权平均集成了tfidf和在11k数据集上训练的模型的概率。仅使用transformers的预测低于0.1或高于0.9的样本,对于中间范围的样本,使用tfidf的概率。
      • 然后,使用加权平均集成了无条件的概率,包括在大型数据集上训练的模型。这种加权平均方式改善了公共和私有LB以及本地CV。
    • 后处理:

      • 对于每个prompt_id,如果样本数量大于1000,则在tfidf上使用umap进行拟合,计算到7个最接近的人类写作和7个生成样本的距离,并通过缩放预测,以人类距离/生成距离的比率进行裁剪至(0.9,1.1)。
      • 这个后处理略微改善了公共和私有LB。

    第五名

    https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470093

    1. 数据集和模型细节:
      • PERSUADE作文
      • 未受版权保护的Pile完成文本
      • SlimPajama完成文本
      • Tricky Crawl(特殊的Crawl数据集)
      • 对deberta-v3-large和mamba-790m进行微调,使用不同比例的以下数据集:
      • 训练数据采样:
        • 采用不同比例的数据集进行模型微调,但普遍的模式是除了Pile数据之外,其他数据都进行了欠采样。最佳模型使用了62-99%的Pile数据,而PERSUADE作文始终占数据混合比的1%。

      测试时推理

      1. 教师模型推理:
        • 使用1个DeBERTa模型和2个上下文长度为1024标记的Mamba模型对测试数据进行推理。最终的软标签是它们的加权平均,其中DeBERTa模型占90%的权重。
      2. 学生模型训练:
        • 对测试文档的短随机选择块进行微调,以模拟教师集合的预测。两个学生模型使用不同的上下文长度,一个为128字符(约32个标记),另一个为256字符。这两个学生模型在先前数据集的100万文档上进行预训练,主要是Pile数据,都基于deberta-v3-large。
      3. 学生模型推理:
        • 经过微调的学生模型对测试文档的重叠块进行预测,步幅为其上下文长度的一半。每个模型的最终预测是所有这些预测的平均值,其中128字符上下文长度的模型占60%的权重,256字符上下文长度的模型占40%的权重。

      领域自适应策略

      通过使用短上下文的学生模型,模型学习查找与数据集特定措辞相关的信息,这与长上下文模型在更广泛文档中查找的内容相关。这个领域自适应策略受到SimCLR的启发,但回顾时也意识到它与Noisy Student Training和UDA有相似之处。

      结果和评估

      • 单独使用的全上下文DeBERTa模型在私有LB上得分为0.970,Mamba模型得分约为0.957。
      • 最终学生模型在没有Mamba的情况下得分为0.977,使用Mamba得分为0.972。
      • 由于未选择最佳提交作为最终三个提交之一,所以最终得到了第五名。此外,使用的DeBERTa模型并非最佳,因为有一个单独得分为0.976的模型,没有进行领域自适应。

      第七名

      https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470643

      1. LM-Based Data Generation:
        • 通过使用vanilla Falcon-7B、Mistral-7B和Llama-7B模型生成约400k非教学调整的文本数据,从slimpajama生成约25k篇教育调整的文章。这些模型使用不同的温度、top p值和频率惩罚。
        • 使用这个生成的数据对单个DeBERTa-v3-large模型进行微调,上下文长度为512,在推理时使用1024长度。
      2. 模型组合:
        • 针对40-60百分位的预测结果,用基本的TF-IDF + SGD模型的结果替换。这个微调在CV上有轻微提升,但在LB上影响较小。
      3. 模型性能概览:
        • 使用DeBERTa-v3-large-512模型在只使用persuade数据时,公共LB得分为0.869,私有LB得分为0.875。
        • 将该模型应用于persuade和slimpajama数据后,公共LB得分提高到0.942,私有LB得分提高到0.965。
        • 尝试使用更长的上下文(1024长度)和不同模型规模,其中DeBERTa-v3-large-1024在persuade和slimpajama数据上的公共LB得分为0.922,私有LB得分为0.957。

      第九名

      https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470255

      解决方案主要包括两个部分:一个基于TFIDF的流水线,使用多个分类器在TFIDF特征之上进行分类,以及一个基于BERT的流水线,用于分类人类和生成的文本。

      1. 精心策划的数据集:
        • 数据集精心挑选,包含多样的提示和不同规模的模型,样本数量从约20万到70万不等。
      2. 统计学和反向工程的去模糊流程:
        • 使用统计学和反向工程的方法进行去模糊处理,提高了公共LB得分0.006,降低了私有LB得分0.001。
      3. 基于聚类的后处理:
        • 使用基于聚类的后处理,进一步提高了LB得分约0.001。

      TFIDF流水线类似于许多公共笔记本中使用的流水线,但值得注意的例外是他们使用了一种反向工程的方法来纠正系统性的拼写错误。此外,TFIDF还包括一个后处理步骤,观察到具有足够相似性的文本对几乎总是由LLM生成。

      BERT流水线包括2个deberta_v3_large模型和1个roberta模型。每个模型在不同但有重叠的多样化数据集变体上进行训练。这些数据集来自大量开源LLM,参数大小在7-70B之间变化,以及商业LLM提供的多种温度和top_p变化。生成的文本来源于文章生成、改写和文本完成提示。人类文本则来自学生文章和开源网络文本。每个数据集版本中总共有25万到70万个样本。最佳单个基于BERT的分类器在公共LB上达到0.96,私有LB上为0.915。

      第十二名

      https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470396

      这个团队的最终解决方案主要包括两个主要部分:TF-IDF流水线和DeBERTa模型的集成。以下是解决方案的关键点和步骤:

      1. TF-IDF使用测试数据集:TF-IDF流水线使用了测试数据集,将测试集中的n-grams作为特征,这是一种利用测试集数据泄漏的方法。在Kaggle竞赛中,数据泄漏有时可能是非常有用的,因此采用这种方法是合理且高效的。

      2. 数据集:初始阶段,为Persuade语料库中的每个提示生成数据。然而,当在这些数据上训练DeBERTa模型时,发现其在LB上表现不佳,因此放弃将其用于训练,转而将其用作本地CV数据集。后来,考虑使用更广泛的数据集,选择了tiiuae/falcon-refinedweb数据集,因为它在Falcon的论文中表现更好。

      3. DeBERTa模型训练:DeBERTa模型在选择的数据集上进行训练,输入包括从真实文本和由LLMs生成的文本中提取的随机长度的部分文本。考虑到文本长度差异,对DeBERTa模型的训练过程中对文本进行了随机截断,以确保不同标签的文本长度分布在训练过程中是一致的。

      第十三名

      https://www.kaggle.com/competitions/llm-detect-ai-generated-text/discussion/470593

      团队的最终解决方案在私人LB上达到了0.938的得分,公共得分为0.957。他们的最佳私人提交也是选择的提交,如果仅考虑公共LB,这将排名大约2000左右。

      团队使用了一些公开分享的数据集,其中在所有尝试的数据集中,@thedrcat的v4对他们来说非常重要。此外,他们还自己生成了一些数据,并分享了一些用于生成文本的提示。

      在数据清洗和生成方面,团队分享了一些他们使用的提示样本。例如:

      • 一个提示是为非英语为母语的平均成绩为6到13年级的学生生成论述性文章的任务,要求文章长度在450到650字之间,带有一些拼写错误和错误,模拟学生在时间紧张的环境中写作的情境。
      • 另一个提示涉及撰写关于探索金星的论述性文章,根据文章中的细节评估作者如何支持这个观点。这个提示中涉及一些具体的要求,如提供评估作者观点的主张、文章中支持主张的证据等。

      此外,他们还从Persuade Corpus中提取了一些关于种族/族裔和性别信息的样本,并确保了所有7个提示的平衡。

      交叉验证

      团队在实践中几乎没有使用交叉验证,因为数据集是不固定的,他们无法评估和比较。在比赛接近尾声时,他们确实固定了数据集,并开始观察第四小数位的交叉验证,但效果并不显著。

      建模

      团队使用了3个模型的集成:

      • DebertaXLarge - 私人0.92 - 公共0.939 - 集成权重 - 50%
      • Deberta v3 Large - 私人0.847 - 公共0.914 - 集成权重 - 25%
      • Roberta Large - 私人0.849 - 公共0.923 - 集成权重 - 25%

      这些模型都使用相同的超参数进行训练,其中最大长度为512,有5个折。

       竞赛交流群 邀请函  #

      △长按添加竞赛小助手

      每天大模型、算法竞赛、干货资讯

      与 36000+来自竞赛爱好者一起交流~

      文章转载自Coggle数据科学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论