1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIは一つひとつを良くしながら、全体のばらつきを削る — 査読付き論文3本と、引用をCrossref APIで照合する話

1
Posted at

生成AIを使うと、書いたものの出来は良くなります。では、全体では何が起きているのか。

この問いに、別々の分野から同じ答えを出している査読付き論文が3本あります。人の創作を調べた実験、科学の進め方を論じた展望、そしてAI自身の学習を調べた研究です。並べると、一つの形が見えます。

AIは、一つひとつを良くしながら、全体のばらつきを削っていく。

後半では、この3本の書誌と「訂正が出ているか」を Crossref API で機械照合したコードも載せます。記憶で書いた数値に後からURLを貼る、という書き方をしないための工程です。


1. 個人の創造性は上がり、全体は狭まる

Doshi & Hauser, "Generative AI enhances individual creativity but reduces the collective diversity of novel content"
Science Advances 10(28), eadn5290 (2024-07-12)
https://doi.org/10.1126/sciadv.adn5290

オンラインで短編小説を書かせ、一部の書き手にだけ大規模言語モデルの案を渡した実験です。

要旨によれば、AIの案に触れた物語は「より創造的で、よく書けていて、楽しめる」と評価されました。特に、もともと creative でない書き手ほど効果が大きい。ところが、AIを使って書かれた物語どうしは、人間だけで書かれた物語よりも互いに似ていた。

著者らはこれを social dilemma と呼びます。

With generative AI, writers are individually better off, but collectively a narrower scope of novel content is produced.

個々はより新規と評価されるのに、全体の多様性は減る。同じ現象の裏表です。


2. AIは「分かった気」を生む

Messeri & Crockett, "Artificial intelligence and illusions of understanding in scientific research"
Nature 627, 49-58 (2024-03-06)
https://doi.org/10.1038/s41586-024-07146-0

実験報告ではなく、Nature に載った展望論文(Perspective)です。科学の営みの中でAIがどう使われているかを整理しています。

主張は2段構えです。AIを使う研究者に理解の錯覚が生まれること。そしてその錯覚が、科学のモノカルチャーを覆い隠すこと。AIで扱いやすい方法・問い・視点が支配的になり、それ以外が見えなくなるという警告です。

分かった気になるのは個々の研究者の話。方法と問いが偏るのは分野全体の話です。1章目と同じ構造が、科学という営みの階層で起きています。


3. 自分の出力で学ぶと、モデルは壊れる

Shumailov et al., "AI models collapse when trained on recursively generated data"
Nature 631, 755-759 (2024-07-24)
https://doi.org/10.1038/s41586-024-07566-y

AIが生成した文章でAIを学習させ続けると何が起きるか。要旨をそのまま引きます。

We find that indiscriminate use of model-generated content in training causes irreversible defects in the resulting models, in which tails of the original content distribution disappear. We refer to this effect as 'model collapse'.

分布の裾が消える。 珍しい例から先に失われ、その欠陥は元に戻せない。著者らはこれを model collapse と名づけました。言語モデルだけでなく、VAE や混合ガウスモデルでも起きるとしています。


3本を並べると

階層 個々に起きること 全体に起きること
人の創作 物語がより新規と評価される 物語どうしが似ていく
科学の営み 理解が進んだ感覚を得る 方法と問いが単一化する
AI自身 学習は進む 分布の裾が消える

左の列だけ見ていると、どれも良い話です。右の列は、一人ひとりの視点からは見えません。合計して初めて現れるからです。

そして1と2で削られたばらつきは、3のAIにとっての学習データそのものです。人が書くものが似ていき、科学の問いが偏り、その出力でAIが学ぶ。3本は別々の現象ではなく、一つの循環の別の場所を見ています。


書くコードの側で、これはどう出るか

3本とも、対象はコードではありません。だからここから先は論文の主張ではなく、同じ構造がコードでも成り立つかどうかを自分で確かめるための問いとして書きます。

  • 同じモデルに同じ問題を投げると、似た構造の実装が返る。1章目の「物語どうしが似ていく」と同じ位置にある
  • 動いたコードは、理解した証拠ではない。2章目の「理解の錯覚」と同じ位置にある
  • 公開リポジトリに生成コードが積まれ、それが次のモデルの学習データになる。3章目の入口にあたる

どれも個々のPRの差分を見ているかぎり見えません。良いコードが増えているようにしか見えないからです。見えるとしたら、リポジトリ全体やエコシステムを合計したときです。

自分の手元で観測するなら、たとえばこういう問いになります。同じ機能を実装したモジュールの構造がどれくらい似ているか。レビューで出る指摘の種類が減っていないか。使うライブラリの種類が減っていないか。いずれも一件ずつでは測れない量です。


引用を、書く前に機械で照合する

ここからが実装です。

論文を引く記事でいちばん壊れやすいのは、誌名・巻・ページ・年です。記憶で書いて後からDOIを貼ると、DOIは正しいのに周辺の数字がずれる、という壊れ方をします。この壊れ方は、リンクを踏んで確かめる読者にしか見つかりません。

なのでDOIだけを手で入れ、残りは Crossref API が返したものを採るようにします。

# -*- coding: utf-8 -*-
"""記事に引く論文の書誌を Crossref で照合する。
   手で入れるのは DOI だけ。誌名・巻・ページ・年は API が返したものを使う。
"""
import json, time, urllib.request

DOIS = [
    "10.1126/sciadv.adn5290",
    "10.1038/s41586-024-07146-0",
    "10.1038/s41586-024-07566-y",
]
UA = {"User-Agent": "paper-check/1.0 (mailto:you@example.com)"}  # 連絡先は入れる作法

def crossref(doi):
    req = urllib.request.Request("https://api.crossref.org/works/" + doi, headers=UA)
    return json.load(urllib.request.urlopen(req, timeout=30))["message"]

for doi in DOIS:
    m = crossref(doi)
    def dt(k):
        v = m.get(k)
        return "-".join(f"{p:02d}" for p in v["date-parts"][0]) if v else "なし"
    print(m["container-title"][0],
          f'{m.get("volume","-")}({m.get("issue","-")})',
          m.get("page") or m.get("article-number", "-"),
          f'online={dt("published-online")} print={dt("published-print")}')
    print("  ", m["title"][0])
    print("  ", ", ".join(a["family"] for a in m["author"]))
    time.sleep(1)   # Crossref への礼儀。連打しない

実行するとこうなります。

Science Advances 10(28) eadn5290 online=なし print=2024-07-12
   Generative AI enhances individual creativity but reduces the collective diversity of novel content
   Doshi, Hauser
Nature 627(8002) 49-58 online=2024-03-06 print=2024-03-07
   Artificial intelligence and illusions of understanding in scientific research
   Messeri, Crockett
Nature 631(8022) 755-759 online=2024-07-24 print=2024-07-25
   AI models collapse when trained on recursively generated data
   Shumailov, Shumaylov, Zhao, Papernot, Anderson, Gal

ここで拾える事故が2つあります。

ページ番号が無い雑誌がある。 Science Advances は page が空で、article-number に eadn5290 が入ります。ページ番号のつもりで page だけを読むと、空文字が記事に載ります。

online と print で日付が1日ずれる。 Nature の2本はどちらも1日違います。どちらを書くかは決めの問題ですが、決めずに片方を書くと、別の場所で採った日付と食い違います。この記事は online で揃えました。

訂正が出ていないかも、同じAPIで分かる

3章目の論文には2025年に著者訂正が出ています。これは update-to を見れば機械的に分かります。

m = crossref("10.1038/s41586-025-08905-3")   # 上と同じ関数
print(m["title"][0])
print([(u["type"], u["DOI"]) for u in m.get("update-to", [])])
Author Correction: AI models collapse when trained on recursively generated data
[('correction', '10.1038/s41586-024-07566-y')]

update-to は訂正した側のレコードに入ります。元論文のレコードを引いても空なので、「元論文を引いて update-to が空だから訂正は無い」と結論すると外します。訂正を探すなら、https://api.crossref.org/works?query.bibliographic=Author+Correction+<題名> のように訂正側を検索するか、出版社のページを見ます。


読むときの注意

3本とも査読付きですが、射程には限りがあります。

  • 1章目の回帰係数などの統計値は本文中にあり、要旨には出てきません。この記事は要旨で確認できる範囲だけを扱っています
  • 2章目は実験報告ではなく Perspective です。データではなく論として読む必要があります
  • 3章目の実験は比較的小さなモデルで行われており、最新の大規模モデルでの再現ではありません。また前述の著者訂正(10.1038/s41586-025-08905-3)が出ています

動画版

この3本を、英語の原文レベルで読む動画にしました。英文を意味のかたまりに割り、訳を英語の語順のまま並べています。返り読みをしないことが、英語を英語のまま理解する近道です。


ばらつきは、誰かが意図して残さないかぎり残りません。

あなたのリポジトリから、いま静かに削られているばらつきは何でしょうか。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?