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

Kaggle 检测AI生成文本:高分思路

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

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

评估指标

提交的内容根据预测概率与观察目标之间的 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 - 一个格式正确的提交文件。

高分思路

  • 基础思路:利用预训练的BERT模型进行微调,以区分学生写的文章和由大型语言模型(LLM)生成的文章。
  • 进阶思路:利用构建的额外数据集,使用TF-IDF向量化文章文本。使用随机梯度下降(SGD)等传统机器学习算法进行训练。

外部数据集样例:https://www.kaggle.com/datasets/alejopaullier/daigt-external-dataset

核心代码如下:

https://www.kaggle.com/code/yongsukprasertsuk/ai-generated-text-mod-weight-add-more-data-0-928/

sgd_model = SGDClassifier(max_iter=5000, tol=1e-3, loss="modified_huber"
sgd_model2 = SGDClassifier(max_iter=5000, tol=1e-3, loss="modified_huber", class_weight="balanced")  # max_iter = 1000 -> 5000
sgd_model3 = SGDClassifier(max_iter=10000, tol=5e-4, loss="modified_huber", early_stopping=True)

ensemble = VotingClassifier(
  estimators=[
  ('sgd', sgd_model), 
  ('sgd2', sgd_model2),
  ('sgd3', sgd_model3)],
  voting='soft')
  
ensemble.fit(X[:train.shape[0]], train.label)
preds_test = ensemble.predict_proba(X[train.shape[0]:])[:,1]

生成外数据注意事项:

  1. 调用ChatGPT生成多样样本:

    • 利用ChatGPT生成的文本,确保样本具有一定的多样性,涵盖不同主题、风格和复杂度。
    • 使用不同的温度值或prompt来调用ChatGPT,以获取更多变化的生成文本。
  2. 给出prompt并构造输入:

    • 提供给ChatGPT的prompt应该具有多样性,覆盖不同的主题和语境,以确保生成的文本涵盖竞赛数据中可能的各种情况。
    • 构造输入时,考虑使用不同长度的prompt,以模拟在实际应用中可能遇到的情况。
    • 保持输入的一致性,以确保生成的文本具有可比性。
  3. 关注指示性信息:

    • 在生成样本时,注意ChatGPT的instructions字段,以确保生成的文本与指示性信息一致。
    • 保持生成的文本与指示性信息之间的逻辑一致性,以提高数据集的质量。
  4. 数据集的统一性:

    • 给每个生成的文本分配唯一的ID,以确保数据集的唯一性和标识。
    • 在构建数据集时,维护一致的字段结构,使得生成的文本、prompt和源文本之间的关系清晰可见。
  5. 考虑不同难度级别:

    • 在prompt中使用不同难度级别的语言和问题,以模拟学生可能面对的各种情况。
    • 确保生成的文本具有各种难度,使得模型在学习区分学生和AI生成文本时能够更全面地学到特征。
  6. 验证生成数据的质量:

    • 在构建生成数据集后,对生成的文本进行一些质量验证,确保文本合理、语法正确,并且与指示信息一致。

 竞赛交流群 邀请函  #



△长按添加竞赛小助手

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

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


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

评论