ホームページ >バックエンド開発 >Python チュートリアル >DSPy を使用して AI 生成テキストを検出するための OpenAI の GPT-mini の最適化

DSPy を使用して AI 生成テキストを検出するための OpenAI の GPT-mini の最適化

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-24 06:46:14257ブラウズ

AI が生成したテキストの検出はホットな話題となっており、研究者や実務家がその実現可能性と倫理的影響について議論しています。モデルがより洗練されるにつれて、人間が書いたテキストと AI が生成したテキストを区別することは、刺激的な課題であると同時に重要なニーズとなっています。

この投稿では、139 万のテキスト サンプルの魅力的なデータセットを使用して、DSPy の最適化機能を利用して、このタスクのために OpenAI の GPT-4o-mini を微調整する方法を検討します。最後には、DSPy を使用して基本的な AI テキスト検出器を実装、評価、最適化する方法がわかります。手動のプロンプト エンジニアリングは必要ありません。


データセットの読み込み

まず、データセットをロードしましょう。このデータセットには、人間が書いたもの、またはさまざまな人間および LLM ソースから AI が生成したものとしてラベル付けされたテキスト サンプルが含まれています。始めるには、Python 3 と DSPy およびハグ顔データセット ライブラリがインストールされていることを確認してください。

pip install dspy datasets

データセットのサイズは約 2GB であるため、インターネットの速度によっては、この手順に数分かかる場合があります。

トレーニングとテストのためにデータセットを均等にロードして分割するコードは次のとおりです:

from datasets import load_dataset

# Load the dataset
ds = load_dataset("artem9k/ai-text-detection-pile", split="train")

# For simplicity, we’ll do an even split of data for testing and training
NUM_EXAMPLES = 80  # Adjust this to experiment with dataset size
ds = ds.train_test_split(test_size=NUM_EXAMPLES, train_size=NUM_EXAMPLES)

ヒント: NUM_EXAMPLES を調整して、より大きなデータセットを試したり、最適化を実行する際のコストを削減したりできます。


モデルのセットアップ

次に、OpenAI の GPT-4o-mini を使用して、基本的な DSPy 予測子を作成します。 GPT-4o-mini は OpenAI の GPT-4o モデルの軽量バージョンであり、実験のコスト効率が高くなります。 DSPy は、構造化された入出力マッピングを定義する シグネチャ を使用してこのプロセスを簡素化します。

コードを実行する前に、「YOUR_API_KEY」を OpenAI API キーに置き換えます。

import dspy
from typing import Literal

# Initialize the OpenAI GPT-4o-mini model
lm = dspy.LM('openai/gpt-4o-mini', api_key="YOUR_API_KEY")
dspy.configure(lm=lm, experimental=True)

# Define the AI text detector signature
class DetectAiText(dspy.Signature):
    """Classify text as written by human or by AI."""
    text: str = dspy.InputField()
    source: Literal['ai', 'human'] = dspy.OutputField()

# Create a basic predictor
detector = dspy.Predict(DetectAiText)

ここでは迅速なエンジニアリングを行っていないことに注意してください。代わりに、DSPy を利用して入力と出力の関係を自動的に処理します。

いくつかのサンプル入力を使用して「検出器」をテストできます。

print(detector(text="Hello world (this definitely wasn't written by AI)"))

予測は出力の「ソース」フィールドに表示されます。


検出器の評価

基本的な検出器ができたので、DSPy の評価ツールを使用してそのパフォーマンスを評価しましょう。このために、モデルがテキストのソース (人間または AI) を正しく予測しているかどうかをチェックする簡単な指標を定義します。

評価を設定して実行するコードは次のとおりです:

from dspy.evaluate import Evaluate

# Define a simple evaluation metric
def validate_text_source(example: dspy.Example, pred, trace=None) -> int:
    return 1 if example.source.lower() == pred.source.lower() else 0

# Transform the dataset into DSPy-compatible "Example" objects
dspy_trainset = [
    dspy.Example(source=x['source'], text=x['text']).with_inputs('text') for x in ds['train']
]
dspy_devset = [
    dspy.Example(source=x['source'], text=x['text']).with_inputs('text') for x in ds['test']
]

# Evaluate the detector
evaluator = Evaluate(devset=dspy_devset, num_threads=12)  # Adjust threads based on your system
evaluator(detector, metric=validate_text_source)

最初のテストでは、76% ~ 81% の精度を達成しました。データセットのランダムなサンプリングにより結果が異なる場合があることに注意してください。

Optimizing OpenAI’s GPT-mini to Detect AI-Generated Text Using DSPy


DSPy による最適化

DSPy の真の力は、その最適化機能にあります。 MIPROv2 オプティマイザーを使用すると、プロンプトを手動で調整することなく検出器のパフォーマンスを向上させることができます。オプティマイザーは、少数のショットの例、動的なテンプレート、自己教師ありの手法を使用してこのプロセスを自動化します。

オプティマイザーを設定して実行する方法は次のとおりです:

pip install dspy datasets

注: 「ライト」プリセットを使用した 1 回の最適化実行のコストは、通常、80 例のデータセットで 0.50 ドル未満です。


結果と反復

最適化を実行した後、パフォーマンスが大幅に向上することがわかりました。最初の実行では、ベースラインの 76% ~ 81% と比較して、91.25% の精度を達成しました。その後の実行は 81.2% から 91.25% の範囲であり、最小限の労力で一貫した改善が実証されました。

Optimizing OpenAI’s GPT-mini to Detect AI-Generated Text Using DSPy

さらに使用するために最適化されたモデルをロードするには:

from datasets import load_dataset

# Load the dataset
ds = load_dataset("artem9k/ai-text-detection-pile", split="train")

# For simplicity, we’ll do an even split of data for testing and training
NUM_EXAMPLES = 80  # Adjust this to experiment with dataset size
ds = ds.train_test_split(test_size=NUM_EXAMPLES, train_size=NUM_EXAMPLES)

次の方法でさらに反復できます:

  • オプティマイザーの自動パラメータ (軽、中、重) を調整するか、ハイパーパラメータを自分で設定します。
  • トレーニングと評価用のデータセットのサイズを増やします。
  • より高度な、または更新された LLM を使用したテスト。

結論

わずか数ステップで、DSPy が実際のユースケース向けに LLM 最適化を簡素化する方法を実証しました。手動によるプロンプト エンジニアリングを一切行わずに、AI が生成したテキストの検出において目に見える改善を達成しました。このモデルは完璧ではありませんが、DSPy の柔軟性により継続的な反復が可能であり、スケーラブルな AI 開発にとって貴重なツールとなっています。

DSPy のドキュメントをよく読み、他のオプティマイザーや LLM パターンを試してみることを強くお勧めします。


完全なコードは GitHub で入手できます。

質問はありますか?コメント?教えてください。DSPy で何を構築するか楽しみにしています!

LinkedIn | で私を見つけることができます。 EES の CTO 兼パートナー。

以上がDSPy を使用して AI 生成テキストを検出するための OpenAI の GPT-mini の最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。