AI生成テキストの検出の課題
美容とファッションのエキスパートが解説する「AI生成テキストの検出の課題」
AIが生成したテキストを検出する課題と、それに使用される技術の効果について、詳しく見ていきます。
共著:Naresh Singhとの共著。
目次
はじめに
記事や投稿の執筆におけるAI補助技術は今や至る所にあります!ChatGPTは、言語に基づくAIのさまざまな応用を開放し、どんな種類のコンテンツ生成にもAIの使用が急増しました。
しかし、創造的な執筆のような学校の課題では、学生は独自のコンテンツを作成することが期待されています。しかし、このようなタスクにAIの人気と効果があるため、誘惑されて使用するかもしれません。そのような場合、教師が信頼性のあるツールにアクセスできることは重要です。ツールはAI生成コンテンツを検出するためのものです。
本稿では、そのようなツールの直感的な理解と技術的な仕様を提供することを目指しています。AI検出の仕組みを直感的に理解したい読者と、そのようなツールを構築したい技術的な読者を対象としています。
- In Japan, the concept of FinTech is gaining popularity rapidly, and many businesses are starting to incorporate data science into this field. Data science involves the analysis and interpretation of large amounts of data to gain insights and make informed
- データサイエンスプロジェクトでのPythonの型ヒント 必須、必要かどうか、またはNo-No?
- 「より良いMLシステムの構築-第4章 モデルの展開とその先」
さっそく始めましょう!
テキストの出所検出の直感を養う
高いレベルでは、「GPT-3などのAI言語モデルがこのテキストの一部または全部を生成した可能性はどれくらいあるか」という質問に答えようとしています。
一歩引いて考えると、あなたの母親が以下の文をあなたに言う可能性はどれくらいあるでしょうか?
- お願いだから8時より前に寝て。
- お願いだから11時以降に寝て。
前者の方が後者よりもはるかに可能性が高いと予想します。なぜなら、あなたは自分の周りの世界について理解を深め、どのような出来事がより起こりやすいかを感じ取る力を持っているからです。
これこそが言語モデルが働く仕組みです。言語モデルは、言語に関して何かを学習します。途中までの文が与えられた場合、次のトークンや単語を予測する能力を身に付けます。
上記の例では、もしもあなたに「あなたの母親が何かを言っている」と伝えられた場合、そしてこれまでに言われているのが「お願いだから寝て」という部分だけだとすると、文の最もありそうな継続は「8時より前に」となり、「11時以降に」ではないと考えるでしょう。技術的な言葉で言えば、2番目の文を聞いた場合、1番目の文に比べてあなたはより困惑すると言えます。
言語モデルの文脈で困惑度がどういう意味を持つか、もっと詳しく見ていきましょう。
言語モデルの困惑度とは何ですか?
dictionary.comによると、perplexityは以下のように定義されます。
困惑、混乱、不確実性の状態。
現実世界において、予期しない状況に遭遇した場合、予期した状況に遭遇した場合よりも困惑するでしょう。たとえば、道路を運転していると、信号を見た場合は、道路を横断するヤギを見た場合と比べて困惑する可能性は低いです。
同様に、文の次の単語を予測しようとする言語モデルでは、私たちが予期しない単語を使って文を完成させる場合と予期した単語を使う場合で、モデルは私たちを困惑させます。いくつかの例です。
低い困惑度の文は以下のようになります。
- 外は晴れています。
- すみません、便に乗り遅れて国立公園に間に合わなかったです。
高い困惑度の文は以下のようになります。
- 外はパンの日です。
- 私は外で都合の悪い光を見逃して国立公園に行けませんでした。
次に、言語モデルの予測の困惑度を計算する方法を見てみましょう。
言語モデルの予測の困惑度を計算する
言語モデルの困惑度は、文の次のトークン(単語)を予測することができる確率と関連しています。
6600個のトークンの語彙で言語モデルを訓練し、1つの予測ステップを実行してモデルに文の次のトークンを予測させるとします。このトークンを選ぶ確率が5/6600(つまり、このトークンは非常に可能性が低い)であると仮定しましょう。その困惑度は、確率の逆数であり、6600/5 = 1320となり、この提案に対して私たちは非常に困惑していることを示唆しています。もし、このトークンを選ぶ確率が代わりに6000/6600であった場合、困惑度は6600/6000 = 1.1となり、この提案に対して私たちはわずかに困惑していることを示唆しています。
したがって、より可能性の高い予測に対するモデルの困惑度は、より可能性の低い予測に対する困惑度よりも低くなります。
文「x」のすべてのトークンを予測する困惑度は、形式的にはトークンの確率の逆数の積のN乗根と定義されます。
しかし、数値の安定性を確保するために、対数関数を使用して定義することもできます。
この式は、予測されたトークンが正解トークンであるという平均の負の対数尤度のe(2.71828)のべき乗と関連しています。
訓練と検証の困惑度
モデルの訓練と検証の困惑度は、バッチまたはエポックの損失から直接計算することができます。
予測の困惑度
予測の困惑度は、各予測に対する正解ラベルのセットを持つことが必要なため、計算することはできません。
Perplexityを計算するためのPyTorchコード
変数probsが(shape(sequence_length,)のtorch.Tensorであり、その位置のシーケンス内で言語モデルによって予測された正解トークンの確率を含んでいるとします。
このコードを使用して、トークンごとの困惑度を計算できます。
token_perplexity = (probs.log() * -1.0).exp()print(f"トークンの困惑度:{token_perplexity}")
次に、サンプルの困惑度を計算するコードです。
# 困惑度はe^(平均NLL)。sentence_perplexity = (probs.log() * -1.0).mean().exp().item()print(f"文の困惑度:{sentence_perplexity:.2f}")
次に、文からパーセントークン確率を計算するコードを見てみましょう。
def get_pointwise_loss(self, inputs: List[str], tok): self.model.eval() all_probs = [] with torch.inference_mode(): for input in inputs: ids_list: List[int] = tok.encode(input).ids # idsの形状は(1, len(ids_list)) ids: Torch.Tensor = torch.tensor(ids_list, device=self.device).unsqueeze(0) # これまでの文(ids)におけるその位置のトークンが文を完成する確率(トークンのcomplete probability)です。 y = self.model(ids) criterion = nn.CrossEntropyLoss(reduction='none', ignore_index=0) # モデルの出力における2番目以降のトークンから損失を計算します。 loss = criterion(y[:,:,:-1], ids[:,1:]) # 各トークンの確率を計算するためには、負の対数損失の逆数を計算する必要があります。 loss = loss * -1.0 # 興味のない確率を-infに設定します。これにより、softmaxはこれらの値を0.0に設定します。 loss[loss == 0.0] = float("-inf") # probsには各トークンの予測確率が格納されます(2番目のトークンから開始します)。 # 既存の文脈なしで文の開始を予測するモデルの確率を含めたくないためです。 probs = loss.exp() all_probs.append(probs) # # return all_probs#
言語モデルの動作方法と、パーセントークンおよびパーセンスパースキティを計算する方法についての情報がわかったので、これらをすべて組み合わせて、テキストがAIによって生成されたものかどうかを検出するツールを構築するためにどのようにこの情報を活用できるのかを見てみましょう。
AIによるテキスト検出
AIによって生成されたテキストであるかどうかを確認するために必要なすべての要素が揃っています。次に必要なものを説明します:
- チェックしたいテキスト(文または段落)。
- このテキストのトークン化バージョン。このトークン化は、このモデルのトレーニングデータセットをトークン化するために使用されたトークナイザを使用して行われます。
- トレーニングされた言語モデル。
上記の1、2、3を使って次のことが計算できます:
- モデルによって予測されるパーセントークン確率。
- パーセントークン確率を使用したパーセントークンパースキティ。
- 文全体のパースキティ。
- モデルのトレーニングデータセットに対するパースキティ。
テキストがAIによって生成されたものかどうかを確認するには、文のパースキティをモデルのパースキティにスケーリングされたファジファクター、アルファと比較する必要があります。文のパースキティがスケーリングされたモデルのパースキティよりも大きい場合、おそらく人間によって書かれたテキスト(つまりAIによって生成されたものではない)です。そうでなければ、おそらくAIによって生成されたものです。これは、モデルが自身が生成するテキストに困惑することを予想しているためです。したがって、モデル自体が生成しないテキストに遭遇すると、そのテキストがAIによって生成されない理由があると考えられます。文のパースキティがモデルのトレーニングパースキティと同じかそれ以下の場合、この言語モデルを使用して生成された可能性が高いですが、非常に確信は持てません。これは、人間がそのテキストを書いた可能性があり、偶然にもモデルが生成できるものである可能性があるためです。つまり、モデルは多くの人間が書いたテキストで訓練されているため、ある意味ではモデルは「平均的な人の文章」を表していると言えます。
上記の式でppx(x)は、入力「x」のパースキティを意味します。
次に、AIによって生成されたテキストと人間の書いたテキストの例を見てみましょう。
AIによって生成されたテキストと人間が書いたテキストの例
各トークンのパースキティをモデルのパースキティと比較して、文中の各トークンの色をつけるPythonコードを作成しました。パースキティを考慮しない場合、最初のトークンは常に黒色です。パースキティがモデルのパースキティと同じかそれ以下の場合、AIによって生成された可能性があるため、赤で塗りつぶされます。一方、パースキティが高いトークンは緑で塗りつぶされます。つまり、それらは明らかにAIによって生成されたものではありません。
文章の前にある角かっこ内の数字は、言語モデルを使用して計算された文の困惑度を示しています。一部の単語は部分的に赤色と部分的に青色になっていることに注意してください。これは、サブワードトークナイザーを使用したためです。
以下のHTMLを生成するコードは次のとおりです。
def get_html_for_token_perplexity(tok、sentence、tok_ppx、model_ppx):
tokens = tok.encode(sentence).tokens
ids = tok.encode(sentence).ids
cleaned_tokens = []
for word in tokens:
m = list(map(ord、word))
m = list(map(lambda x:x if x!= 288 else ord(' '), m))
m = list(map(chr、m))
m = ''。join(m)
cleaned_tokens.append(m)
#
html = [
f "< span> {cleaned_tokens [0]}&lt;/span>",
]
for ct、ppx in zip(cleaned_tokens [1:]、tok_ppx):
color = "black"
if ppx.item()>= 0:
if ppx.item()<= model_ppx * 1.1:
color = "red"
else:
color = "green"
#
#
html.append(f "< span style ='color:{color} ;'> {ct}&lt;/span>")
#
return ""。join(html)#
上述の例からわかるように、モデルがテキストを人間に生成されたものと検出した場合、それは確かに人間によって生成されたものですが、テキストをAIに生成されたものと検出した場合、AIによって生成されたものではない可能性があります。では、なぜこれが起こるのでしょうか?次に見てみましょう!
誤検出
私たちの言語モデルは、人間によって作成された大量のテキストでトレーニングされています。特定の人物によって(デジタルで)書かれたものかどうかを検出するのは一般的に難しいです。トレーニングのためのモデルの入力には、おそらく多数の人によって書かれた多種多様な書き方のテキストが含まれています。これにより、モデルは多様な書き方と内容を学ぶことができます。おそらく、あなたの書き方はモデルがトレーニングされたテキストと非常に密接に一致することが非常に可能性が高いです。これが誤検出の結果であり、モデルがテキストがAIに生成されたものであることを確信できない理由です。ただし、モデルは一部のテキストが人間によって生成されたことを確信することができます。
OpenAI: OpenAIは最近、低い精度レートを引用してAI生成テキストを検出するツールを中止すると発表しました(出典: Hindustan Times )。
元のバージョンのAI分類ツールには、最初からいくつかの制限と不正確さがありました。ユーザーは、AIまたは人間によって書かれたテキストを分類するために少なくとも1,000文字のテキストを手動で入力する必要がありました。残念ながら、このツールのパフォーマンスは低くなり、AIが生成したコンテンツのわずか26%しか正しく識別せず、人間によって作成されたテキストを9%の確率でAIと誤ってラベル付けしました。
ここには、OpenAIからのブログ記事があります。それはこの記事で言及されているものとは異なるアプローチを使用したようです。
クラシファイアは、同じトピックの人間によって書かれたテキストとAIによって書かれたテキストのペアのデータセットで微調整された言語モデルです。このデータセットは、私たちが人間によって書かれたと思われるさまざまなソースから収集しました。例えば、事前トレーニングデータとInstructGPTに提出されたプロンプトへの人間のデモです。各テキストをプロンプトと応答に分割しました。これらのプロンプトに対して、私たちは、私たちや他の組織によってトレーニングされたさまざまな言語モデルから応答を生成しました。ウェブアプリでは、偽陽性率を低く保つために信頼度のしきい値を調整します。言い換えれば、分類器が非常に自信を持っている場合にのみ、テキストをおそらくAIが書いたものとマークします。
GPTZero:もう1つの人気のあるAI生成テキスト検出ツールは GPTZero です。 GPTZeroは困惑度とバースティネスを使用してAI生成テキストを検出するようです。 「バースティネスとは、テキスト内で特定の単語やフレーズがバーストで現れる現象を指します。言い換えれば、テキスト内で単語が一度現れると、近くに再び現れる可能性が高い」ということです(ソース)。
GPTZeroは非常に高い成功率を主張しています。GPTZeroのFAQによると、「閾値0.88で、AIのドキュメントの85%がAIとして分類され、人間のドキュメントは99%が人間として分類されます」と述べられています。
このアプローチの一般性
この記事で言及されているアプローチは一般化されにくいです。これは、例えばGPT3、GPT3.5、およびGPT4という3つの言語モデルがある場合、入力テキストをすべてのモデルに通し、それぞれのパープレキシティをチェックしてテキストがどのモデルによって生成されたかを確認する必要があることを意味します。それぞれのモデルはテキストをわずかに異なる方法で生成するため、テキストを独立して評価してどれかがテキストを生成した可能性があるかを確認する必要があります。
2023年8月時点で大規模な言語モデルが増えているため、テキストが世界の言語モデルのいずれから生成されたものかを確認することは困難に思われます。
実際に、新しいモデルは毎日作成されており、この急速な進歩に対応しようとするのは至難の業です。
以下の例は、私たちのモデルにChatGPTがAI生成されたかどうかを予測させた結果を示しています。ご覧の通り、結果はまちまちです。
これにはいくつかの理由があります。
- トレーニングコーパスのサイズ: 当社のモデルは非常に少ないテキストでトレーニングされていますが、対してChatGPTはテラバイトのテキストでトレーニングされています。
- データの分布: 当社のモデルはChatGPTとは異なるデータ分布でトレーニングされています。
- ファインチューニング: 当社のモデルは単なるGPTモデルですが、ChatGPTはチャットのような応答に特化してファインチューニングされているため、わずかに異なるトーンでテキストを生成します。法的なテキストや医療アドバイスを生成するモデルがある場合、これらのモデルによって生成されたテキストに対して当社のモデルは性能が低下します。
- モデルのサイズ: 当社のモデルは非常に小さく(ChatGPTのようなモデルの2000億パラメータに対して100万パラメータ未満)、サイズが大きいモデルと比較しています。
明らかに、テキストがAI生成されたものかどうかを確認するためには、より良いアプローチが必要です。
次に、インターネット上で流布しているこのトピックに関する誤情報のいくつかを見てみましょう。
誤情報
一部の記事はパープレキシティを誤解しています。例えば、google.comで「人間によるコンテンツのパープレキシティは高いのか低いのか?」と検索すると、最初の位置に以下の結果が表示されます。
これは間違っています。通常、人間による作成されたコンテンツは、AI生成されたコンテンツと比較してパープレキシティが高いです。
次に、この分野で研究者が進展を遂げている技術を見てみましょう。
次は何か?
AI生成テキストの検出は難しい問題であり、成功率が推測とほぼ同じほど低いことが確立されました。この分野の研究者が進展を遂げるためにどのような最先端の技術を探求しているかについて見ていきましょう。
ウォーターマーキング: OpenAIとGoogleはAI生成テキストにウォーターマークを付けることを約束しています。これにより、プログラムで識別することが可能になります。
このウォーターマークの技術的な詳細は不明であり、どの会社もそれに関連する詳細を開示していません。
OpenAIとGoogleがウォーターマーキングの技術を採用したとしても、展開されるすべての言語モデルにウォーターマークが含まれる保証はありません。人々は自分自身のモデルを展開して、自分たちのAIベースのテキスト生成ツールを使ってテキストを発表することができる可能性もあるでしょう。企業が生成されたテキストにウォーターマークを入れることを決めたとしても、それが標準化されるかどうか、または各企業が独自の戦略や有料ツールを持っていて、AIベースのテキスト生成ツールを使用してテキストが生成されたかどうかをチェックすることができるかどうかは明確ではありません。オープンスタンダードであれば、それが計算を行うために多くの計算が必要な暗号化のようなものでない限り、それを回避することができるかもしれません。オープンスタンダードでない場合、人々はこれらのチェックを実行するために必要なツールやAPIへの自由なアクセスを提供するためにこれらの企業に頼らざるを得なくなるでしょう。また、AI生成テキストをウォーターマーク付きで取り込んだり、ウォーターマークのないAI生成テキストを返すようにモデルをトレーニングすることも可能であるという問題もあります。
この記事では、AI生成テキストにウォーターマークを追加する可能な技術について議論し、そのアプローチに関する重要な課題を指摘しています。
パーソナライゼーション:私たちの意見では、AI生成テキストの検出の問題は近い将来も難しいままであると考えています。より効果的にするために、戦略はより侵襲的で個人化される必要があると考えています。例えば、あるテキストがAI生成であるかどうかではなく、そのテキストが特定の人物によって書かれたものかどうかを尋ねるのがより妥当であるかもしれません。ただし、それにはその特定の人物によって書かれた大量のテキストにアクセスする必要があります。さらに、この問題は、この記事のように複数の人物によって書かれたものなどがある場合、さらに複雑になります。
こうした個人化システムを持つことができれば、教育関係者はグループ課題ではなく個別課題を生徒に与える傾向が強くなるでしょう。また、すべての学生が最初に自分自身が書いた大量のテキストを提供する必要があります。これは、授業を受ける前に大学で数時間を費やすことを意味するかもしれません。確かに、これはチームで共通の目標を達成するための協力の重要性を学生に教える能力に対して否定的な影響を与えるでしょう。
一方で、AIベースのテキスト生成にアクセスできることで、学生は研究や文献の研究などの実際の問題に集中する時間を取ることができるようになります。数学や科学の授業で概念や技術を学ぶための時間を増やすことが想像できます。それについて書く時間はAIが担当できます。
結論
この記事では、AI生成テキストを検出する方法について直感を養いました。生成されたテキストのパープレキシティ(困惑度)を使用することができる主な指標を見ました。与えられたテキストがAI生成されたものかどうかをパープレキシティを使用してチェックするためのいくつかのPyTorchのコードも見ました。また、偽陽性の可能性を含むこのアプローチのいくつかの欠点も見ました。これがAI生成テキストの検出に関する詳細な事情を理解し、それを高く評価するのに役立つことを願っています。
この領域は絶えず進化しており、研究者たちはより高い精度でAI生成テキストを検出する方法を模索しています。この技術の私たちの生活への影響は重要であり、さまざまな点で未知です。
AI生成テキストを検出する手法については、テキスト全体が人間によって書かれたものまたはAI生成テキストのどちらかと仮定しました。実際には、テキストは部分的に人間によって書かれ、部分的にAIによって生成される傾向があるため、事情はかなり複雑になります。
AI生成テキストを検出するためのバースティ度の使用など、他の手法について読みたい場合は、こちらをご覧ください。
この記事のすべての画像(最初の画像を除く)は著者によって作成されました。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles