593. LLM - Detect AI Generated Text | llm-detect-ai-generated-text
首先,我要感谢Kaggle、The Learning Agency Lab以及@cookiecutters举办了这场如此有趣的竞赛!我确实从这次比赛中学到了很多。对我个人而言,这算是一项巨大的成就,特别是因为我刚从大学毕业仅仅5个月。
能够体验到如此显著的排名提升,我感到非常幸运!虽然我预见到会有一定程度的上升,但没想到这个解决方案的泛化能力会如此出色!
这是我第二次参加竞赛,也是我的第一篇讨论帖。如果我说错或做错了什么,提前在此道歉。欢迎并感激大家的真诚反馈!
总结:huggingface.co/spaces/abdullahmeda/detect-ai-text
困惑度(PPL)通常被用作评估语言模型(LM)性能的指标。它被定义为文本在语言模型下负对数似然平均值的指数。较低的困惑度表示语言模型对其预测更有信心,因此被认为是一个更好的模型。语言模型的训练是在大规模文本语料库上进行的,可以认为它已经学习了一些常见的语言模式和文本结构。因此,困惑度可以用来衡量文本与常见特征的符合程度。
我使用了开源GPT-2模型的所有变体(除了xl尺寸)来计算收集文本的困惑度(文本级和句子级困惑度)。观察到无论是在文本级别还是句子级别,LLM生成的内容相较于人类书写的文本都具有相对较低的困惑度。LLM捕捉到了其训练文本中的常见模式和结构,并且非常擅长重现它们。因此,LLM生成的文本具有相对集中的低困惑度。
人类有能力根据不同的上下文、受众和写作目的,以多种多样的方式表达自己。这包括使用创造性或富有想象力的元素,如隐喻、明喻和独特的词汇选择,这些都会使GPT-2更难预测。人类书写文本和LLM生成文本的困惑度分布如下图所示。

这个想法源自以下论文:arxiv.org/pdf/1906.04043.pdf。它研究了3种测试来计算输入文本的特征。他们的主要假设是,为了生成流畅且自然-looking的文本,大多数解码策略都会从分布头部采样高概率的token。我选择了最强大的Test-2特征,即从LM预测的概率分布中,统计位于Top-10、Top-100、Top-1000和1000+排名中的token数量。
该实现背后的核心思想来自以下论文:arxiv.org/pdf/2301.07597.pdf。将上述两种技术的特征结合起来,训练了一个VotingClassifier。我首先独立地在44k条daigt v2数据集上计算特征,但只获得了不到0.7的ROC AUC分数。使用@starblasters8分享的80万条数据集才是真正的转折点。PPL和GLTR的分数分别跃升至0.8和0.9。将它们结合并使用更大的模型获得了更好的结果。虽然计算了CV分数,但它对追踪进度的帮助不大,因为它总是接近1。以下是我所有解决方案迭代的分数明细:
| 数据 | 特征 | 模型 | Public LB | Private LB |
|---|---|---|---|---|
| 44K | PPL | GPT-2 Small | 0.674 | 0.506 |
| 44K | GLTR | GPT-2 Small | 0.637 | 0.445 |
| 44K | PPL + GLTR | GPT-2 Small | 0.661 | 0.465 |
| 800K | PPL | GPT-2 Small | 0.800 | 0.656 |
| 800K | GLTR | GPT-2 Small | 0.910 | 0.918 |
| 800K | PPL + GLTR | GPT-2 Small | 0.923 | 0.926 |
| 800K | PPL + GLTR | GPT-2 Medium | 0.932 | 0.953 |
| 800K | PPL + GLTR | GPT-2 Large | 0.938 | 0.956 |
使用joblib持久化特征和scikit-learn模型,在推理时调用以节省时间。使用此方法的平均提交仅需约10分钟!
受Hello-SimpleAI/chatgpt-detector-roberta的启发,我使用@starblasters8提供的80万样本数据集对该模型本身以及roberta-large进行了微调。我对这种方法寄予厚望,但在Public和Private LB上的分数分别没有超过0.793和0.674,尽管其CV接近0.98。
查看了@jsday96的这篇讨论后,我认为使用稍大的模型如deberta-v3-large,并将80万数据集扩展到包括Pile或SlimPajama等其他开放数据集会提高分数。不幸的是,我不得不放弃这个想法,因为我既没有处理如此多数据的经验,也没有相应的计算能力!
虽然公共TF-IDF方法获得了非常诱人的分数,但我怀疑它过度拟合了公共测试集。然而,我没想到它会跌至0.89这么低。相比之下,我未选择的最佳提交获得了0.964的分数,这是将TF-IDF与PPL和GLTR方法按相等权重混合的结果。
代码可在 kaggle.com/code/abdullahmeda/8th-lb-solution-ppl-gltr-features 找到
最后但并非最不重要的一点是,这次讨论是由LLM生成的吗?🤖🤣