人工智能辅助撰写文章的技术现在无处不在!ChatGPT已经解锁了许多基于语言的人工智能应用程序,人工智能在任何类型的内容生成中的使用都已经达到了以前前所未有的高度。
在诸如创意写作之类的工作中,人们被要求创造自己的内容。但是由于人工智能在这些任务中的普及和有效性,很人工智能很有可能会被滥用。所以能够获得可靠和值得信赖的工具来检测人工智能生成的内容是一个非常重要的问题。所以本文将提供构建这样一个工具的思路和技术规范。
文本检测的思路
我们的目标是“像GPT这样的大语言模型有多大可能生成全部或部分文本?”
所以我们就要从日常入手,比如:一个典型的日常场景,你母亲对你说下面这句话的可能性有多大?
亲爱的,请在晚上8点前上床睡觉;亲爱的,请在晚上11点后上床睡觉。
我们会猜测前者比后者更有可能发生,因为你已经建立了对周围世界的理解,并对哪些事件更有可能发生有了感觉。
这正是语言模型的工作原理。语言模型学习周围世界的一些东西,他们学会预测给出一个不完整句子的下一个符号或单词。
在上面的例子中,如果你被告知你的妈妈正在说某事,而到目前为止她说的是“亲爱的,请上床睡觉”,那么这个句子最有可能的延续是“8:00 pm之前”,而不是“11:00 pm之后”。因为父母都会让孩子早睡觉,对吧
语言模型的困惑度是什么?
困惑:困惑的状态;混乱;不确定性。
在现实世界中如果你遇到意想不到的情况,例如:当你在路上开车时,看到一个红绿灯,那么你就不太可能感到困惑,而如果你看到一只野生动物穿过城市的街道,那么你肯定就会产生很大的疑问。
对于一个试图预测句子中下一个单词的语言模型,如果它使用一个我们不期望的单词来完成句子,我们说这个模型会让我们感到困惑。
具有低困惑的句子看起来像下面这样
1、It’s a sunny day outside.
2、I’m sorry I missed the flight and was unable to reach the national park in time.
具有高度困惑的句子看起来像下面这样:
1、It’s a bread day outside.
2、I’m convenient missed light outside and could not reach national park.
如何计算语言模型所做预测的困惑度呢?
困惑度 perplexity
语言模型的复杂性与能够毫不意外地预测句子的下一个符号(单词)的概率有关。
假设我们用包含6600个记号的词汇表训练一个语言模型,让模型预测句子中的下一个单词。假设选择这个单词的可能性是5/6600(即不太可能)。它的困惑度是概率6600/5 = 1320的倒数,这表示困惑非常高。如果选择这个单词的可能性是6000/6600,那么困惑度将是6600/6000 = 1.1,这说明困不太困惑。
困惑度的计算公式如下:
为了保证数值的稳定性,我们可以用对数函数来定义它。
模型的训练和验证困惑度可以直接从batch或epoch损失中计算出来。但是无法计算预测的困惑度,因为它要求每个预测都有一组基本的真值标签。
让我们假设变量probs是一个张量,它包含了语言模型在序列中那个位置预测基真值的概率。
可以使用此代码计算每个困惑度。
token_perplexity = (probs.log() * -1.0).exp()
print(f"Token Perplexity: {token_perplexity}")
分享说明:转发分享请注明出处。