
2026/07/17 1:41
古典的な機械学習によるLLM生成テキストの検出
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
2026 年初頭現在、従来の機械学習モデルは、AI で生成されたテキスト内の統計的パターンを信頼性高く同定することができ、単一文の検出精度で約 85% を達成している。このブレイクスルーは、Lofter プラットフォーム上の低品質な AI ファンフィクションをフィルタリングすることを目的として開始されたプロジェクトより発祥したものであり、テキストのパレックスに基づく方法はコストが高すぎ、エラーに脆弱であり、ローカルでの展開が困難であったため採用されなかった。解決策としては、スクレイピングにより 2022 年以前の記事および対応する AI サンプルを生成して得られた、約 10,000 件の人間コンテンツと AI コンテンツのサンプルを用いて学習された 7 モデルアンサンブル(Gemini-3-flash、Qwen-Coder-plus、GLM-5、Kimi-k2.5、Doubao-Seed-code、DeepSeek-V3.2、Pony を含む)が採用されている。検出システムは TF-IDF(用語の重要性を測定)と LinearSVC/SVM を組み合わせており、ONNX Web Runtime の Wasm 経由で完全にブラウザ上で動作する。
オンラインデモは https://lyc8503.github.io/AITextDetector で利用可能であり、ソースコードおよび学習済みモデルは GitHub の lyc8503/AITextDetector に入手できる。検出器は、Google Translate を通じたラウンドトリップなどの一般的なバイパスタクティクスに対して頑健で、高エンゲージメントの 2026 年以前の Lofter ファンフィクションでは誤報率が 0.01% 未満である。また、リライプトプロンプトに直面した場合には精度が低下するが、その度合いは modest(~89.9% から ~85% への modest な低下)である。現在のリーダーである GPT 5.2 に対する性能は依然として約 71–73% と高く維持されている一方、2022 年以前のウェブノベルに対する検出率は 30% 未満であり、人間の創造性と合成パターンの再結合との間の軍拡競争を浮き彫りにしている。この技術は、正当なユーザーをペナルティ科することなく人間コンテンツと合成コンテンツを効果的に分離するが、将来的な検出器は学術論文や AI 生成画像などのドメインを対象とする可能性がある。
本文
AIGC 検出器:古風な機械学習で AI テキストを特定する実験的プロジェクト
本稿は、2026 年初頭時点での大規模言語モデル(LLM)が生成したテキストと人間によるテキストの識別方法に関する実験的な報告です。従来の統計的手法を用いれば、多くの「AI 生成コンテンツ」を検出できる可能性を示しています。
🚀 TL;DR & デモ
-
核心結論:
- 2026 年初頭時点では、LLM 生成テキストには明確な統計的なパターンが見られます。
- これらのパターンを用いることで、従来の機械学習モデル(古典的 ML)で人間作成のコンテンツと効果的に区別可能です。
- 多くの既存の「AI 検出ツール」はこの原理に基づいていると考えられます。
-
オンラインデモ:
- URL: https://lyc8503.github.io/AITextDetector
- 特徴:
- 汎用データベースのモデルを使用しておらず、厳密な最適化は行われていません。
- 単文での検出精度: 約 85%。
- 注意: デモには制限事項がありますので、コードや原理を直接確認されることをお勧めします。
-
リソース:
- コアコード(ドラフト版)と訓練済みモデルファイルは GitHub
で入手可能です。lyc8503/AITextDetector
- コアコード(ドラフト版)と訓練済みモデルファイルは GitHub
📜 背景:なぜ「根性論じ」なのか?
半年前、卒業論文執筆中に「AIGC(AI 生成コンテンツ)検出」への関心が高まりました。
- CNKI、万方などのデータベースやサードパーティツールを試し、手書きテキストと LLM テキストを高い精度で区別できることを確認しました。
- しかし、当時の多忙な生活や「どうすれば回避できるか」という好奇心から開発は中断。
最近では、Lofter などで質の低い AI 生成同人小説(設定崩壊やフォーマット不備)が目につくようになりました。しかし、多くの場合文体やプロンプトの影響で直感的に判別が難しく、「違和感」だけで判断するしかない不安な状況でした。 この「AI 生成ゴミ」という現状に堪えきれず、VS Code を開き、週末プロジェクトとして検出器の開発を再開した次第です。
🧪 研究の軌跡:失敗と成功
❌ 試み 1: テキスト・ペルプレキシティ(単語出現確率)
- アイデア: 既存 LLM に各単語が現れる確率を推定させ、予測される単語ばかりなら「AI」と判定する。
- 結果: 失敗。
- 偽陽性(人間→AI と誤検知)と偽陰性(AI→人間 と誤検知)が多発。
- 合理的な閾値の設定が困難。
- 高い推論コスト、クロスモデルでの汎化性の欠如など実用面の壁があった。
❌ 試み 2: 安易なチュートリアルへの依存
- 外部の簡易ガイドに頼る試みは省略し、独自のアプローチを探求することにしました。
✅ 試み 3: scikit-learn SVM の採用(成功)
- アプローチ: 古風な機械学習(Scikit-learn)に戻り、線形サポートベクターマシン(Linear SVC)とNaive Bayesを用いる。
- 直感: LLM は検出可能な語彙選択パターンを持ち、それを Naive Bayes が検知できるはず。
- 成果: 予期せぬ強力な信号を捉え、精度の向上に至りました。
📊 データ生成戦略
古風な機械学習にはラベル付きデータが必要です(人間テキスト vs AI テキスト)。 LLM API は高価なので、創意工夫を凝らして低コスト/無料 API を活用しました。
収集・処理方法
- 人間テキスト: 2010〜2022 年(チャット GPT 出現前)のプラットフォームからスクレイピングし、低エンゲージメントや短文を除外して約1 万件をサンプリング。
- AI テキスト: 上記テキストの章要約を LLM に生成させ、さらにその要約を元に完全な文章を再生成(スタイル維持)。
💸 コスト対策(※推奨されませんが)
API クォータ制限ギリギリで複数のサービスを並行利用:
- Gemini: Antigravity CLI のクォータ活用(約 $20/月)。
- Qwen / GLM-5 / Kimi 等: プロモーションコードや無料公開期間の利用。
- 課金方式の悪用: 呼び出し回数制 API を「巨大入力+バッチ処理」でトランザクションを減らし、トークン消費を最適化(最終的に Gemini トークン 3 億個相当の試行)。
生成したモデルセット (7 種類):
gemini-3-flash, qwen-coder-plus, glm-5, glm-4.7, kimi-k2.5, doubao-seed-code, deepseek-v3.2
⚙️ 訓練プロセスと結果
1. 特徴量エンジニアリング
- 中国語の句読点で文を分割。
- ノイズ(非中・英文字)除去。
- scikit-learn の TF-IDFベクトライザー適用。
2. 多クラス分類の失敗と解決策
- 一度は「人間+7 つの AI モデル」の 8 クラス分類を試みるも、モデル間類似度が高く(蒸留済み)、精度は**約 50%**に低下。
- 解決策: 個別に 7 つのバイナリ分類器(AI vs 人間)を訓練し、多数決投票方式を採用。
- 条件: ≥2 モデルで「AI」と判定された場合のみ「AI 生成」とフラグ設定。
3. 訓練結果要約(Top 50 万特徴量固定後)
| モデル | 1 文精度 | 1 文 F1 スコア |
|---|---|---|
| qwen | 0.8911 | 0.8974 |
| doubao | 0.8940 | 0.8700 |
| gemini | 0.8809 | 0.8082 |
| kimi25 | 0.8721 | 0.8473 |
| deepseekv32 | 0.8529 | 0.8403 |
| pony | 0.8493 | 0.8286 |
| glm47 | 0.8436 | 0.8222 |
- 結論: 全モデルで精度 85%、F1 スコア 80%以上を実現。非常に堅牢です。
- 投票方式の重要性: AI テキストは複数のモデルで検出される傾向があり、投票方式が理にかなっています。
🛠 JavaScript Web デモへの実装
サーバーレスを維持するため Python API を使用せず、完全にJavaScript 環境で TF-IDF + SVM を実装。
- 特徴量数: パフォーマンス優先で 50 万個採用(JSON 形式では約 107MB)。
- 処理速度: 100 万文字でもマシン依存だが許容範囲内。数千文字なら瞬時判定。
📈 パフォーマンステスト:実用性検証
分類閾値の目安
入力テキストが全特徴量の中で「AI とフラグされた割合」による判定。
| フラグ率 | 判定結果 |
|---|---|
| < 50% | 人間作成 |
| 50 – 70% | 人間かもしれない / 不確定 |
| ≥ 70% | AI の可能性あり(強い疑い) |
検出率テスト結果
① 訓練データ内のモデル(Doubao, Deepseek など)
- プロンプト: 「私に 3000 語の物語を書いてください」
- Deepseek V3.2: 78.4% 検出
- Doubao Seed Code: 93.0% 検出(完璧に近い)
② 訓練データ外のモデル(未见過データ)での汎化能力
- Claude Sonnet 4.6: 71.9% 検出
- GPT 5.2: 73.3% 検出
- その他(MiMo-V2, GPT-4o など): 約 70%〜90% で安定検出。
③ スタイリングプロンプト攻撃への耐性
- 人間のスタイルを模倣して生成させた場合でも、検出率は**67.8%**と十分に高く維持されました。
④ ユーザー実態調査(Lofter 同人小説等)
- 2022 年以前の Web ノベル (10 冊): 最大で 29.1%、最小は 4.9%。すべて30% 未満。
- Lofter 高エンゲージメント作品: 閾値を厳しくしても偽陽性は極めて低く(60% 閾値では 0.04%)、実質的な検出が可能。
- Android アプリランキング記事: AI スコアが 50% を超える記事は全体の**2.22%**に過ぎず、多くのユーザーは意識していない。
🛡️ 攻撃と防御:検出回避は可能か?
AIGC デテクターを作った後に試した「アンチデテクター」対策ですが、実用的な回避手段は見つかりませんでした。
| 回避手法 | 手法概要 | 検出率変化 |
|---|---|---|
| 古典的翻訳法 | Google Translate 等による往返翻訳 (CN→EN→CN) | 89.9% → 85.0% (わずかな低下) |
| LLM プロンプト法 | 「AI のような書き方をしない」という指示の出力 | 89.9% → 83.0% |
- 結論: 検出率は低下しますが、依然として明確にフラグされます。
- 回避のための唯一の現実的解: 大規模な人間テキストで LLM をファインチューニングするか、SVM の特徴量を破壊するルールベースシステム構築(これらは本稿の範囲外)。
💭 おまけ:開発者の考察と展望
プロジェクトの意義
- **scikit-learn の「Hello World」**レベルのコードで、驚くほど堅牢な検出器を構築できました。
- 主要な努力は LLM にデータを生成させることだけでしたが、古典的 ML の復権を示唆しています。
- このアプローチは、学術論文を含む他のドメインへ応用可能です。
開発者の思い:AI 生成コンテンツについて
- 評価: 最初の印象では十分「 decent」でも、近寄れば単なるパターン認識(単語頻度統計)であることがバレます。創造性の欠如や浅さは避けられません。
- 問いかけ: LLM は本当に世界を理解しているのか?それとも巨大な事前学習データの再結合に過ぎないのか?バグ修正が追いつかぬ「vibe コーディング」のように、AI 生成テキストも結局は不完全な存在かもしれません。
- 社会への懸念: AI の誤用と濫用が加速しており、人間が AI に依存することで「本当に理解しているか」を問われる時代になっています。
「3.9 と 3.11 の方が大きいのはどれか?」という無限のバグを修正した後に、モデルが世界を理解できると言えるのでしょうか?少なくとも、AI 時代前にコーディングを学んでおいてよかったです。
このデモは実験的なものであり、さらに精度向上と応用が続くことを期待します。