世界を動かす技術を、日本語で。

CauseNet: ウェブから抽出された因果関係グラフに向けて

概要

CauseNetは、人間の持つ 全ての因果知識 を体系化した 大規模知識ベース。 因果知識と 因果信念の分離 を目指し、AI分野での因果推論研究を加速。 1,160万件超の因果関係 を高精度で抽出し、オープンドメインの因果グラフを構築。 多様なウェブソースからの抽出と 豊富な証拠情報 を保持。 ダウンロード・利用・拡張が可能な オープンデータ として提供。

CauseNet:全因果知識ベースの構築

  • CauseNetは 全人類の因果知識 を体系化・知識ベース化するプロジェクト
  • 因果知識 と単なる 因果信念 の分離を目指す設計思想
  • 人工知能分野 において因果知識は重要な基盤
  • 既存の知識ベースでは 因果情報の網羅性が不足 していた現状
  • 検証作業の困難さ が因果知識ベースの普及を妨げてきた背景

CauseNetの特徴と規模

  • CauseNetは ウェブ上の半構造化・非構造化データ から因果関係を抽出
  • 1,160万件を超える因果関係 を収録、抽出精度はおよそ 83%
  • 初の大規模・オープンドメイン因果グラフ の構築
  • 因果関係の表現例(証拠データ省略)
    • 例:disease → death
  • 因果推論やQA、議論支援 など多様な応用可能性

CauseNetのデータセットバージョン

  • CauseNet-Full :全データセット(約1.8GB、1,160万件の因果関係、1,218万件の概念)
  • CauseNet-Precision :高精度サブセット(約135MB、約20万件の因果関係、8万件の概念)
  • CauseNet-Sample :小規模サンプル(約54KB、264件の因果関係、524件の概念)
    • 初学者や実験用 に最適

データモデルと証拠情報

  • CauseNetの中心は 因果概念因果関係 から成る
  • 各因果関係には 抽出元や手法などの証拠データ を付与
  • 抽出例と証拠データの型
    • ClueWeb12文、Wikipedia文、Wikipediaリスト、Wikipediaインフォボックス
  • 各証拠には ページID、タイトル、タイムスタンプ、文やリスト情報 などを付与

抽出例

  • ClueWeb12文抽出例
    • smoking → disability
    • 証拠:ページID、参照URL、抽出文、抽出パターン等
  • Wikipedia文抽出例
    • human_activity → climate_change
    • 証拠:ページID、タイトル、改訂ID、見出し、抽出文等
  • Wikipediaリスト抽出例
    • separation_from_parents → stress_in_early_childhood
    • 証拠:ページID、タイトル、リストの見出し等
  • Wikipediaインフォボックス抽出例
    • alcohol → cirrhosis
    • 証拠:ページID、タイトル、テンプレート名、引数等

CauseNetの活用と拡張

  • CauseNetは Neo4j グラフデータベースへのロード用サンプルコードを提供
    • 例:coronavirus → SARSの因果関係グラフ表示
  • 因果概念スポッター により、複数語から成る因果概念を高精度で抽出
    • 例:「global warming」「human activity」「lack of exercise」など
  • 概念スポッティング用データセットも公開(Wikipediaインフォボックス、リスト、ClueWeb文)
    • 各データセットは 80%訓練、10%開発、10%テスト で分割

論文・引用情報

  • CauseNetは CIKM 2020論文 「CauseNet: Towards a Causality Graph Extracted from the Web」の基盤
  • 論文引用形式:
    • @inproceedings{heindorf2020causenet, ...}
  • 問い合わせ先: Stefan Heindorf (Paderborn University)

ライセンスと利用条件

  • コード: MITライセンス
  • データ: Creative Commons Attribution 4.0 Internationalライセンス
    • 商用・非商用問わず利用可(要クレジット表記)

Hackerたちの意見

サンプルセットにはこんなのが含まれてるよ:{ "causal_relation": { "cause": { "concept": "boom" }, "effect": { "concept": "bust" } } } まるでヘッジファンドのボックスみたいだね。

それに、その関連性がどれだけ妥当かどうかは別として、実際に集めてるのは、何のメカニズムもなしに見える相関関係のセットなんだよね…。

見た感じ、https://tylervigen.com/spurious-correlations?page=135 を追加しちゃってもいいかも。

「地図は領域ではない」というのは、バイアスやミスがAIプロジェクト全体から切り離せないことを示してる。ジャロン・ラニアーみたいに語りたくはないけど、これはシミュレートされた知能の語彙における基本的な用語なんだよね。

これ、あんまり意味がわからないな。オントロジーとかは試されてきたけど、いつも脆すぎるって結果が出てる。フロントページの例(これがセットの中で一番良いものだと思うけど)を見てみて:人間の活動 => 気候変動。これってすごく広い概念だから、実際には役に立たないよね。病気 => 死。全然ニュアンスがないし。「病気」の定義すらないし、ミクソマトーシスがヨーロッパのウサギには致死的でも、人間や金魚にはそうじゃないって表現する方法もない。

その通り。場合によっては、病気が死を引き起こすこともあるし、他の場合では免疫を引き起こして「健康」をもたらし、死を遅らせることもある。

コラーとフリードマンは「確率的グラフィカルモデル」の中で「明瞭性テスト」について書いていて、状態変数は全てを見通せる観察者にとって明確であるべきだと言っています。「人間の活動」みたいな状態は客観的に測定できるものではないんですよね。PGMと因果モデルは同じではないけど、状態変数を考えるこの方法はすごく良いフィルターになります。

もっと重要なのは、死の確率や原因の一部、あるいは単純な一次元的な要素ではないってことです。たとえ「矢印」に簡略化できたとしても、そのラベルはスカラー数じゃないんです。最低限でも、それはベクトルで、LLMの埋め込みと同じです!さらに重要なのは、各因果的な矢印の端点も複雑であいまいなもので、ベクトルとして表現するのがベストです。つまり、病気は「インフルエンザ」みたいな単純なラベルじゃないんです。インフルエンザだけでも、何千もの変異株が常に変わってるんですよ!「病気」の適切な表現もベクトルで、原因となる病原体の特定のゲノムとの面白い相関があるでしょう。[1] 次に考えるべきことは、病気と感染したものとの間の「ベクトル積」を考慮することです。感受性や以前の免疫などを考慮するために... ちょっとしたステップで、トランスフォーマーが登場します。大規模言語モデルで見られるように。これがうまく機能する理由で、現実の複雑なニュアンスを高次元の確率的因果フレームワークにエンコードして、情報を処理したり、質問に答えたりできるからです... 現代のLLMの埋め込みや重みを手動でエンコードするのは(約1テラバイト!)信じられないほど無駄です。でも、それが実用的な「古典論理」モデルを作るために必要なことなんです。特に、こういったアプローチを使ったエキスパートシステムは、数十年にわたって取り組まれてきたけど、ほとんど役に立たないから市場ではほぼ完全に失敗していました。[1] すべての病気が生物学的な要因によって引き起こされるわけではない!これはまた別の深い話です。

オントロジー、オントロジーではなく、試みられてきました。システムは健全で完全であることはできないということはかなり理解されていますが、人々は世界の単一モデルを作ろうと突っ込んでいきました。

過去数年にわたって特定の分野のオントロジーを作ることは、オントロジーを書いた人たちの間で共通の理解を生むだけで、彼らが使ってほしい人たち(他の皆)との間には大きな隔たりができるだけだと完全に同意します。おそらく違うのは、LLMを通じて機械も意味や正しさについて「意見」を持つことができる点です。全てを振り返ると、もしLLMにオントロジーを定義させたらどうなるんだろうって思います...

デモクリトス(紀元前460年頃)は「ペルシャの王国を手に入れるよりも、一つの原因を発見したい」と言ったそうで、真の原因を見つけるのはかなり難しいことを示唆しています。

同意します。私たちが期待できる最強のものは因果メカニズムで、それらのほとんどはせいぜい仮説や特定の条件下でのみ適用される部分的な説明です。正直なところ、これらのオントロジーがどうして続いているのか理解できません。この分野に誰が投資していて、なぜなんでしょう?

でも「病気 => 死」+ AI って、少なくとも数十億ドルのベンチャーキャピタル資金は確実に集まるよね。

何千年もずっとそんなオントロジーを開発しようとしてきたわけだけど、こんなに希望が持てない楽観主義の原因は何だと思う?因果関係のデータベースがあればいいのに…。

高レベルのオントロジーをざっくり描いて、LLMにそれを注釈付けさせたりリンクさせたりして、かなり役立つものにするのは簡単だよ。LLMを審査員に使って、そのオントロジーを使ったベンチマークスイートを作って、徐々に最適化することもできるし。

これ、数日前にHNに投稿された記事を思い出すな:Uncertain[1]。こういう因果関係のグラフには、ニュアンスを保つために不確実性の概念が必要だと思う。計算の観点から実用的かどうかはわからないけど、従来のNLP技術とLLM分析を組み合わせることで実現できるかも? [1] https://github.com/mattt/Uncertain

そうだね。サイトの最初の例では、病気が原因で死が結果として示されてるけど、これはいくつかの点で間違ってる。健康とか病気なんてものは存在しない。常に何かと戦ってるだけで、時々それが明らかになるだけなんだよね。それに、病気が必ずしも死に繋がるわけじゃないし、明らかに。

このプロジェクトからファジィロジックの雰囲気を感じます。現在、多くの研究者が「データの不確実性」や「測定の不確実性」、あるいは「アレアトリック/エピステミック」不確実性の方向に進んでいます。このチュートリアル(コンピュータビジョン向けですが)が非常に直感的で、他の分野でこれらの概念を使う方法をよく理解できると思いました: https://arxiv.org/abs/1703.04977

これってCycみたいじゃない?HNでそれに関するいくつかの興味深い記事があったよ: https://news.ycombinator.com/item?id=43625474 「Cycの追悼」 https://news.ycombinator.com/item?id=40069298 「Cyc: 歴史に忘れられたAIプロジェクト」

CYCのサブセットみたいだね。一般的な宣言データじゃなくて因果データを集めようとしてる感じ。彼らの論文がCYCに一度も触れてないのはちょっと変だな。

古いものはまた新しくなるって感じだね。

Cycは、知識表現や推論の分野ではほとんど言及されてないね。ほとんどの研究者には利用できないか、知られてないから。主にマーケティング資料に基づいているものを基にするのは難しいよね。私が間違っているかもしれないけど、Cycに言及している人たちも、KRRやシンボリックAIの初期の仕事の歴史的な例としてしか使ってない気がする。OpenCycは利用可能な小さなサブセットだけど、これを使ったことがある人には会ったことがないな。

じゃあ、PROLOGを使えばいいじゃん。プログラミングにおける因果関係の本質だし、三段論法も説明できるよね。

Prologで表現される条件関係や、どんな演繹的システムでも、物質的含意(~PvQ)であって、因果関係ではないんだ。因果関係を物質的含意でエンコードできるけど、結局はその因果関係を世界の中で見つけ出さなきゃいけないんだよね。

「因果関係」じゃなくて「カジュアル」って読んじゃって、記事を読みながらすごくがっかりした!カジュアルな知識のインベントリは面白そうだけど、今考えると何が含まれるのか想像するのが難しいな…。仕事で知ってるけど誰もそれを知識だと思ってない「隠れた知識」って概念があって、新人に教えるのが難しいんだよね。でも「カジュアルな知識」とは違う気がするし、「トリビア」もそうだよね。まあ、仕方ないか!

「常識」を正確に説明するのは、実はすごくシンプルなんだよね。

私もそう思った!それで、前に考えてたプロジェクトのアイデアを思い出したよ。時間旅行者のウィキみたいなもので、いろんな時代や場所のカジュアルな知識を集めるの。例えば、「1972年のパリでの電車の切符の買い方」とかね。でも、これはシャワー中に思いついたアイデアだから、どうやってこの知識を集めて、特にどうやって提示するかは想像しづらいんだよね。ある意味、ウィキペディアは年々記事が変わるのを記録してるから、すでにやってると言えるかも :) 電車の切符に関する記事はあまり良い例じゃなかったけど、2004年の「コンピュータモニター」は読むのがちょっと楽しいよ :) 残念ながら、情報記事を書くときに「カジュアルな知識」はしばしば省かれちゃうんだよね。この例では、電源ボタンがモニターの裏にあることが多いっていうのが書かれてないけど、2004年には知っておくと良かった情報だよね。それに、いくつかのモニターはコンピュータから電力を取ってるから、コンピュータが起動する前にはモニターも起動しないんだよね。それについて言えば、シャットダウン後はコンピュータを切った方がいいかも!追記:これは小説家や映画製作者にも役立つかもしれないね(カジュアルな時間旅行者に加えて)。

あなたが言っているのは、暗黙知のことを指しているのかな?

これ、LLMのトレーニングを補強するのに少しは価値があるかも?1980年代と90年代初頭に、シンボリックAI技術(概念依存、NLP、エキスパートシステムなど)を使ってかなりの時間を費やしたんだ。DARPAやPacBellが資金提供した2つの大きなエキスパートシステムプロジェクトはうまくいったけど、シンボリックAIは大体脆弱で、無限に近い人間の労力が必要に思えた。LLMは大きな改善で、Cause etや廃止されたOpenCycプロジェクトみたいなプロジェクトでの実際の使い道は、ちょっとしたトレーニングデータとしての可能性くらいしか見えないな。

これを見て、もっと面白いプロジェクトを思いついたよ。研究記事から自動的に抽出された情報のコンペンディウムみたいなもの。要するに、全体をまとめたメタ分析だね。例えば、インドネシアの男性の身長とさまざまな人生の結果の関係についての記事を読んだら、まずインドネシアの男性の平均身長を保存して、次にその平均身長と各人生の結果との関係、関係の種類(例えば、ピアソンの相関)、関係値(r値)などを保存するんだ。エンティティ、関係、関係値、doiソースを保存する感じ。量的なウィキペディアみたいなものだね。