OpenCog Hyperon:人間レベルを超えるAGI(汎用人工知能)のためのフレームワーク<前編>

【目次】

OpenCog Hyperon(オープンコグ ハイペロン)の概要

2008年にリリースされたOpenCogは、ソフトウェアとハードウェアを組み合わせて心の働きをシミュレートするオープンソースプロジェクトであり、AGI(汎用人工知能)の実現を目指しています。脳を直接リバースエンジニアリングするのではなく、コンピュータ科学に基づいた工学的なアプローチを採用している点が特徴です。その認知アプローチは、心の哲学、認知科学、コンピュータ科学、数学、言語学など、多岐にわたる学術分野の融合に基づいています。

OpenCogは、Atomspaceと呼ばれる高度な知識グラフ(KG)を中心に、ニューラルネットワーク、生成AI、確率的AI、プログラム学習AIなど、さまざまなAIモジュールを統合しています。この統合により、適切な認知アーキテクチャを通じて異なる知能コンポーネントが相互に支援し合い、創発的な構造とダイナミクスを生み出す「認知的シナジー」を実現します。

また、OpenCogはオープンソースプロジェクトであり、誰でもコードを閲覧したり、貢献したりすることができます。

2021年に再構成されたOpenCog Hyperonは、OpenCogプロジェクトの拡張版であり、スケーラビリティと使いやすさの課題を解決し、新たな数学的概念を用いて、より強力で汎用性の高いAIの実現を目指しています。2024年4月30日には、Hyperonのアルファ版がリリースされており、最新のAI言語「MeTTa」を導入し、学習空間と知識ストアを提供することで、パターンマイニングや注意配分などのツール群を活用し、AIシステムが協調して学習し問題を解決することが可能になります。

Hyperonは、SingularityNET、HyperCycle、AI-DSLと協力し、全てのAIエージェントが互いに通信できるメタサービスの集合をサポートするフレームワークとして機能し、部分の総和よりも大きいAGIシステムを形成します。

人工知能 人類最悪にして最後の発明:ジェイムズ・バラット(著)

OpenCogについては、2015年6月に出版された『人工知能 人類最悪にして最後の発明』第11章「学習する認知アーキテクチャ”OpenCog”」にて、最初にAGIを達成する可能性のある数少ない組織の一つとして、ベン・ゲーツェル氏と共に紹介されています。

AGIやASIのコントロール問題をテーマにした作品としては、ニック・ボストロム氏の著書『スーパーインテリジェンス:超絶AIと人類の命運』が主要な参考文献となりますが、難解なそれとは異なり、こちらは初心者でも理解しやすい内容となっています。SingularityNETのTGEが行われた2017年頃からの古参の皆さんはすでに購読済みだと思われますが、興味がある方はぜひチェックしてみてください。AGIの研究開発に関する歴史的な知識や、これから紹介するHyperonの専門的な論文の内容も理解が深まると思います。

当時のプロモーション映像
参考文献

OpenCog Hyperonは、人間レベルを超えるAGIの構築を目指したフレームワークです。このフレームワークの詳細については、2023年9月19日に発表された以下の論文をご覧ください。論文は100ページに渡る長文ですが、今回これを2回に分けて翻訳して紹介します。内容は正確性と読みやすさに配慮して行う予定です。

論文タイトルOpenCog Hyperon: A Framework for AGI at the Human Level and Beyond:人間レベルを超える汎用人工知能のためのフレームワーク』

注意事項

  • 翻訳はLLMを用いて行うため、内容に誤りがある可能性があります。
  • 翻訳結果については、専門家のレビューが必要です。

1. はじめに

AI分野は、20世紀半ばの黎明期に、人間レベル、さらにはそれを超える汎用知能を持った機械の開発を目指して誕生しました。しかし、当初予想されていたよりも困難を極めたため、AI分野は大きく舵を切ることになりました。特定のタスクを効率的に遂行することに特化した「Narrow AI(特化型AI)」システムへと移行し、汎用的な適応力や自己および世界理解を追求する方向からは遠ざかったのです。

しかし、最新のコンピューティングパワー、センサー性能、そして潤沢なデータの恩恵もあり、汎用人工知能(AGI)への熱は再び高まり、かつてないほどの盛り上がりを見せています。今では、数年のうちに人間レベルのAGIが達成可能になるという意欲的な予測を耳にするのも珍しくありません。

この論文の著者たちは、このような見方が流行するずっと前からAGIの展望に楽観的でした。しかしながら、人間レベル、さらにはそれを超える汎用知能という偉大な到達点を目指すためには、問題の繊細さに真正面から向き合うことが必要であるとも考えています。人間レベルのAGIは、決してAGIの最終目標ではありませんが、相互に依存し合う多くの側面を持っており、現在のLLMやそれらを中心とした単純な認知アーキテクチャでは達成できないだろうと信じています。

ここでご紹介するのは、「OpenCog Hyperon」です。これは、自律学習と人間による教育や監督を組み合わせることで、人間レベルを超えるAGIを達成できると我々が考える認知アーキテクチャおよびAIシステムの設計です。HyperonはOpenCog系列の新しいシステムであり、初期の「OpenCog Classic」システムと同じ中核的な認知理論と上位設計概念に基づいて構築されていますが、より高いスケーラビリティ、使いやすさ、数学的洗練を実現するために最初から設計し直されています。本稿では、開発中のソフトウェアシステムであるOpenCog Hyperonシステムの概要と、その設計を中心に発展してきた様々な理論的および実践的な取り組みについて概説します。

長年AIやAGI分野に携わってきた人なら理解していると思いますが、Hyperonのような「ブランド化されたソフトウェアシステム」は、一見技術的に重要そうに見えても、実際は根本的な意義はそこまでありません。しかし、社会学、マーケティング、あるいは注目を集めるという点では明らかに重要です。「OpenCog Hyperon」という名前のもとで、私たちは多様なアルゴリズム、データ構造、数学的アイデア、認知システム理論、そしてコードを集結させています。これらは密接に関係し合いながらも独立した意味を持ち、Hyperonソフトウェアシステムの構築、使用、理解において共通して用いられています。本稿では、Hyperonのコードベースと実用アプリケーションについて具体的に論じる部分もありますが、Hyperonに様々なソースから統合された理論的アイデアや概念についても触れます。これらの基盤となる原則は、Hyperonの枠組みを超えても重要な価値を持っています。

本稿は主に、技術的な概要をハイレベルで概説しています。より具体的な内容については、ウェブサイトにある各種ドキュメント、動画、コードリポジトリへのリンクをご参照ください。なお、Hyperonに関連する認知理論のより詳細な考察については、ゲーツェルによる2021年の論文 『General Theory of General Intelligence:汎用知能の一般理論』を参照してください。

この文章は、Hyperonを実現すべく共に活動してきた著者グループによる非公式なテキストです。少し珍しい形式を採用しており、三人称による散文と、開発に携わるさまざまなメンバーの一人称による直接引用が混ざり合っています。この形式を採用した理由は、内容を堅苦しくなく、よりパーソナルなものにするためです。研究開発やエンジニアリングは、抽象的で顔のない活動ではなく、特定の人間の集団による仕事、情熱、洞察の交点であり相乗効果であることを伝えたいと考えました。プロジェクトには、それぞれが独自の視点と個性を持って参加しています。

2. Hyperonへの道のりのスナップショット

この論文の核心は、Hyperonソフトウェア研究開発プロジェクトにおけるAGIへの具体的なアプローチの概要説明ですが、この技術プロジェクトを「我々が構築するかもしれない心とは何か」というより広範な理解の追求の中に適切に位置づけることが重要だと考えています。

今日、AIおよびある程度はAGIも、主要な商業的および実践的な追求の対象となっており、この分野の新規参入者の多くは、利用可能な素晴らしいツールで今すぐ何ができるかに重点を置いています。しかし、OpenCogプロジェクトは、AI分野における以前の段階、つまりハードウェアとデータリソースが迅速な実験をサポートするのに十分でなく、進歩が主に概念的探究によって推進されていた時代から生まれました。つまり、AI研究開発は、知性の本質を理解するという知的探究と深く結びついていたのです。

2.1 Hyperonにおける知性の概念:いくつかの考察

2023年6月、ストックホルムで開催されたAGI-23カンファレンスのHyperonのワークショップで行われた講演で、Hyperonの共同創設者であるベン・ゲーツェルは、Hyperonシステムとその前身システムの基礎となる汎用知能の概念について、自身の考え方を振り返りました。(ベンの考え方は非常に重要ですが、Hyperonのようなシステムは一人の産物ではなく、その誕生過程や存在理由について異なる見解があることも覚えておく必要があります。)

1970年代初頭、SFや科学普及誌でAIについて読み始めたのが、私とAIとの関わりの始まりでした。しかし、70年代後半から80年代初頭にかけて、当時のAI研究が主にルールベースの生産システムに焦点を当てているように見えたことに、私は幻滅を感じるようになりました。論理そのものが嫌いだったわけではないのですが、人間らしい認知に必要なすべての知識を手作業でコード化するという考えがナンセンスだと感じられたのです。しかし、実際にAIシステムのプログラミングを始めるにつれて、AI分野がこのようなシステムに支配されていた理由を理解し始めました。自己組織化システムで何かを達成することは、非常に困難だったのです。

10代後半にAI分野を最初に学んだ時、もう一つ興味深い側面を発見しました。それは、特化型AIの驚くべき実現可能性でした。当時の限られたコンピューティングリソースでも、私より上手にチェッカーをプレイするAIシステムが存在することは、ティーンエイジャーの私にとって非常に印象的でした。これが、特化型AIとAGIの間の二分法に関する厄介な疑問を提起しました。1960年代や70年代には、人間がこなすタスクは高度な汎用知能を必要としているように見えていましたが、実際は非常にシンプルなアルゴリズムでも成功することがある、という発見は重要でした。進化上人間にとって重要だった様々なタスクをこなす特化型能力の寄せ集めこそが、人間レベルのAGIかもしれないと考え始めた研究者がいたのも納得できました。

一方、AI分野の発展に伴い、実用的な問題への対処法として、必ずしも単純な特化型技術を導入するよりも、AGI志向のアプローチを採用する方がより効果的な場合が出てきています。これは、実際のアプリケーションで問題となるような厳しい時間とリソースの制約下でも当てはまります。

学業を続ける中で、人間の心と機械の心の数学を理解したいと思い、数学の博士号を取得する過程で、私は汎用知能の概念を形式化しようと試みました。1991年の著書『The structure of intelligence:知性の構造』では、汎用知能を「複雑な環境下で複雑な目標を達成する能力」と定義しました。(そして、関連する複雑さの概念をアルゴリズム情報理論を用いて形式化しようと試みました)。これは、LeggHutterが2007年頃に提唱した汎用知能の形式的定義と近いアプローチです。この定義に従うと、特化型AIは一般的に、あまり複雑でない範囲の目標を追求し、人間や他のソフトウェアシステムによって十分に準備され管理された状況下で最もよく動作します。

その後、ブリュッセル自由大学で2018年に博士論文『Open-Ended Intelligence:オープンエンド・インテリジェンス』を執筆したWeaver(別名:David Weinbaum)の考えに出会いました。Weinbaumは、大陸哲学の視点から、知能を複雑で自己組織化し、自己生成(自己再構築)するシステムとして考察しました。彼の見解では、知能システムは「個体化」を目指しています。これは、システムが境界を維持して存在を継続させながら、同時に自分を超えた何かへと進化することを目指すことを意味します。彼は、目標を達成したり報酬関数に向かって働くことが、システムを賢くする核心ではないと主張します。むしろ、個体化と自己超越に向かって流れる自己組織化ネットワークこそが、時に明示的または暗黙的に目標を生み出し、それらの目標を最大化させるような行動をとらせるのだと主張しています。しかし、この自己組織化は目標を消失させ、新たな目標を生み出すことも起こりえます。これは、目標志向の人間である私自身の経験とも共鳴します。 私は頻繁に目標を設定しますが、追求していく過程で、目標を再定義したり、そもそも放棄してしまうことが多いのです。

Weaverの知能概念は、科学的・数学的に厳密なものではありませんでしたが、部分的には印象論的な要素を含みながらも、AGI理論と複雑系理論を結びつける非常に納得のいくものでした。彼のオープンエンド・インテリジェンスという概念においては、目標達成は知能の中核をなすものではありません。むしろ、焦点は自己組織化の側面にあります。例えば、知能システムは特定の時点で報酬関数に向かって働くことがありますが、それが本質的にシステムを知的にするわけではありません。代わりに、個体化と自己超越に向かう自己組織化ネットワークは、時に暗黙的または明示的な目標を生み出す可能性があります。そして、そのような目標を最大化させるような行動をとるかもしれませんが、その後自己組織化によってその目標は消失し、別の目標が浮かび上がってくることがあります。このような目標形成の動的な性質と自己超越の追求は、私自身の歩んできた人生にも通じるものだと感じられました。

Weaverの知見は、「複雑な環境における複雑な目標達成」という従来の汎用知能の定義にとらわれていた私にとって、新たな視点を提示してくれました。その結果、AGIに対する多様な見方に心を開くようになり、厳密な定義が必ずしも必要ではなく、AGIは多面的で捉えどころのない概念かもしれないとも考えるようになりました。

Hyperonは、明示的に表現された目標だけでなく、自己組織化のダイナミクスによって暗黙的に生じる目標を含む、複雑な環境における複雑な目標を達成できるシステムとして構想されています。また、自己組織化と自律性を追求するオープンエンド・インテリジェンスとして、個体化と自己超越の両方を継続的に目指すよう設計されています。

Hyperonを支えるAGIの概念的アプローチでは、人間レベルの汎用知能は、より高度な汎用知能システムへの道のりにおける、ある意味での「通過点」と捉えられています。Hyperonの基本アーキテクチャは、人間の認知科学の知見を豊富に活かしていますが、人間の心や脳を細部まで模倣しようとするものではありません。その結果、Hyperonは人間レベルの合理性、洞察力、分析能力、創造性(そして倫理観や思いやりといった人間らしさ)に縛られることはありません。「複雑な環境下で複雑な目標を達成する」とか「個体化と自己超越のバランスを取る」といったAGIの汎用的概念は、確かに人間が得意とする領域ですが、同時に、これらは必ずしも人間が他の実現可能な物理システムと比べて優れているとは限りません。人間にとって、人間の知能を理解し、それに関連するAGIを作り出すことは重要ですが、Hyperonでは人間レベルをはるかに超える様々な知能形式と並行して、これを達成することができる設計を目指しています。

2.2 「作れる心」とは何か?

引き続き、AGI-23カンファレンスの講演内容に話を戻すと、ベン・ゲーツェルは次のように述べています。10代だった頃、汎用知能の本質を理解しようとする探究は、私をAIだけでなく、心の哲学へと導きました。哲学は非常に複雑なものでしたが、ある点では明快さをもたらしてくれました。実際、OpenCog Hyperonの設計に向けた私の旅は、技術的なAIよりも心の哲学から始まったのです。

私の考え方に大きな影響を与えた哲学者の一人に、19世紀後半のアメリカの哲学者チャールズ・サンダース・パースがいます。彼は記号論理学を導入したことで知られ、AIの基礎となったいくつかの技術的要素にも貢献しています。パースの「形而上学」は、彼が第一、第二、第三と呼んだ3つの基本的なカテゴリーから発展しました。第一は、分析不可能な純粋な生の経験です。第二は、ビリヤードの球同士が衝突するような物理世界を表す反応です。そして第三は、あるものが他のものと関係している関係性です。

これらのカテゴリーは、様々な解釈が可能です。まず第一のカテゴリーは、デイヴィッド・チャーマーズが意識の分析で論じた「素朴な意識体験」に結びつく可能性があります。パースは、この素朴な現象体験と複雑な意味論的関係との間の関係を、難問ではなくカテゴリーの誤りであると見なしました。彼の見方は、素朴な体験(第一)、組織化されたパターン(第三)、そして身体的反応(第二)は、互いに還元できない別個のカテゴリーであるというものでした。

パースは習慣に関する概念も持っていました。彼はそれを「精神の法則」と呼び、習慣を形成する傾向のことだと考えました。つまり、あるパターンが世界の中で一定期間出現し続けると、それが再び現れる確率は、そうでない場合よりも高くなるというものです。パターンという概念は、パースにとって根本的なものでした。

パースにインスピレーションを受け、 私は知能システムと心はパターンによって構成されると考えるようになりました。これらのパターンは、自分自身と世界のパターンを認識し、互いに適応しながら、ランダムに変異や結合していくのです。 そして、本質的にこういったパターンが心を構成し、自己組織化システムとして見なされます。グレゴリー・ベイトソンなどの哲学者や、ベンジャミン・ウォーフなどの言語学者も、世界を自己組織化のパターンシステムとして捉えるという、 同様の見解を示しています。

これらの心の哲学と複雑系科学からのアイデアは、ゲーツェルが1990年代に出版した一連の書籍の中で詳細に説明されました。

これらの書籍には、ある程度はハイレベルなAI設計のスケッチも含まれていましたが、直接実装するのに十分な具体的なものではなく、実現にあたっては他にも多くの難しい決定が必要とされていました。

このような哲学的思考、認知科学、システム理論に基づくAGIに関するアプローチは、単一のAGI設計を決定するのではなく、実現可能なAGI設計や、部分的・完全機能するAGIやプロトAGIシステムを考えるための手法を提供します。また、高度なレベルのAGIを実現する可能性が高いAGI設計とそうでない設計を見極めるための指針を与えてくれます。

デイヴィッド・チャーマーズ:あなたは意識をどう説明しますか?

2.3 Hyperon前史の一部

ベン・ゲーツェルのAGI-23カンファレンスでの講演では、引き続き、このような概念的探究がいかにして一連の実用的なAIソフトウェアシステムの構築へと導いたのかが具体的に説明されました。そして、その集大成がHyperonと呼ばれるプロジェクトです。

1990年代初頭、私はHaskellの初期バージョンを使って、自己組織化パターン認識に基づくシステムを構築しようとかなりの時間を費やしました。これらの試みは興味深いものでしたが、実用的なアプリケーションには繋がりませんでした。その原因は、スケールの不足か、アプローチ自体に根本的な問題があるのではないかと推測しました。数千億ものニューロンを持つ人間の脳の圧倒的な大きさは、スケールが重要な要素であることを示唆していました。

その後、私はインターネットがこれらのシステムのスケーリングに可能性をもたらすことを発見しました。1990年代後半のウェブマインド計画は、インターネットを活用し、大規模な自己組織化パターン認識エージェントを実行することを目指していました。私の著書『Creating Internet Intelligence:インターネット・インテリジェンスの創造』 では、そこから出現する「グローバルブレイン」の概念、特に分散コンピューティングネットワーク上に存在する強力なAGIシステム(Webmindインスタンスなど)が、集中型グローバルブレインの認知ハブとしての役割を果たし得るというアイデアについて論じています。

また、1995年には、「分散主義」を基盤としたプラットフォームでアメリカ大統領選に出馬することを宣言するウェブページも公開しました(当時はまだ35歳になる前で、出馬資格がありませんでしたが)。私の著書『Creating Internet Intelligence』では政治的な側面は強調しませんでしたが、背景にはそういった考えがありました。ブロックチェーンが登場するずっと以前から、私を含め他の人々は、大規模なAGIを構成する分散型AIプロセスを分散して制御する必要性、そして初期段階のAGIを狭い目的を持つ中央集約型組織の手に渡さないことの重要性について考えていました。

初期の構想では、世界規模に分散されたWebmindシステムと、それに関連する人工生命システム(WebWorlds)を構築する計画がありました。これらは、現在のTODAのような分散型台帳が不要のブロックチェーンを強く彷彿させるような、強力な暗号化と分散処理を利用するものでした。全てのトランザクションを記録した巨大な複製台帳という概念は、スケーラビリティの問題が明白であるため、私には思い付きもしませんでした。

しかし、当初は分散型グローバルコンピューティングシステムの最初のアプリケーションとして、分散型通貨を利用することは考えませんでした。一時期は検討しましたが、MastercardやVisaに対抗できるほど高速なシステムを構築するには時間がかかりすぎると判断したのです。過去には金融取引システム向けのAI開発にも携わっていましたが、分散型通貨が一部違法行為が横行する闇市場的な投機的地下経済の中心になり得るとは考えもしませんでした。もしそう考えていたら、私はサトシ・ナカモトになり、Hyperonははるかに多くの資金提供を受けられるプロジェクトになっていたかもしれません!

当時の技術基盤では、Webmindのような分散型エージェントシステムによる実用的なAGIシステムの構築は困難であることが判明しました。このことから、哲学的にはWebmindと似ていますが、ソフトウェア構成としては現在のHyperonに近い、Novamente認知エンジンが誕生しました。Webmindは分散型エージェントシステムに焦点を当てていましたが、Novamenteはより構造化されたものでした。どちらのシステムも、論理的推論、非公理的推論システム、進化型プログラム学習、注意配分、パターンマイニングを統合することを目指していました。

Novamenteは、Atomspaceと呼ばれる知識ベースを中心に構築されていました。Atomspaceは、当初「汎用ハイパーグラフ」と呼ばれていた構造で、後に「メタグラフ」と呼ばれるようになりました。簡単に説明すると、ノード同士をまたぐリンクや、リンク自体を指すリンク、さらに大きなサブグラフを指すリンクを備えたグラフです。また、ノードとリンクの両方に対して、さまざまな複雑さの重み付けや構造(複雑な型システムから生じる型のようなもので、メタグラフ自体としても表現できる)を付与することができます。このフレームワークでは、ノードとリンクのどちらも「アトム」と呼ばれます。Webmindも同様の表現能力を持っていましたが、Novamenteほど明確で洗練された方法ではありませんでした。

Novamenteのチームは、私を中心に、Cassio Pennachin、Hyperonで現在中心的な役割を担っているAndre’ Senna、AGIのNARSプロジェクトを精力的に推進するPei Wangなどによって構成され、さまざまな認知プロセスを、このAtomspace上で作用する動作するエージェントとして実装しました。本質的には、2つのループの入れ子構造を変更しました。当初の構造では、外側のループがエージェントを順に繰り返し処理し、各エージェントは異なる機能を実行して、集合的に認知プロセスを遂行していました。Novamenteでは、このループの順序が逆転し、システムはAtomspace内のノードとリンクに対して作用する認知プロセスを反復処理するようになりました。

両方のアプローチの効率性は、使用するハードウェアインフラによって大きく左右されました。1990年代半ばに短期間実験した、ダニー・ヒリスコネクションマシ(最大128,000個の独立したプロセッサを搭載した並列コンピュータ)のようなMIMD並列ハードウェアでは、Webmind型の分散型エージェントシステムが最も適切かつ効果的でした。一方、RAMと処理系を厳密に分離した従来のコンピュータシステムでは、Novamente型の構造化されたエージェントシステムの方が、許容できる効率性を実現できる可能性が高くなります。SimuliとTrueAGIと共同開発しているプロセッサ内蔵RAM AGIチップのような革新的な最新のハードウェア設計では、この種の汎用AGIシステムを実装する最適なアプローチは、WebmindとNovamenteの中間的なものになる可能性があります。

Hyperonフレームワークは、WebmindやNovamenteとは異なり、実装における「分散型エージェント」の度合いに関して、より多くの柔軟性をサポートするように設計されています。これは、過去20年間のコンピュータサイエンスとソフトウェア設計における著しい進歩のおかげです。Hyperonのプログラミング言語であるMeTTaは、プログラムをAtomspaceのサブネットワークとして扱い、Atomspaceを変換するプログラムとして解釈されます。また、MeTTaは、Hypercycleの台帳を持たないブロックチェーンにおけるスマートコントラクト言語としても使用されます。この詳細については、後ほど詳しく説明します。

NovamenteのAGIプロジェクトは、様々なAGIアルゴリズムに関する研究論文を発表し、自然言語処理や信号解析において、限定的ながらも実用的な成果を上げることができました。2008年には、システムのかなりの部分がOpenCogとしてオープンソース化され、コミュニティによるコードベースの拡張が始まりました。特に重要な貢献の一つが、Linas Vepstasによって開発されたOpenCogパターンマッチング機能です。当初、パターンマッチング機能は、Atomspace知識グラフのパターン認識を行うためのシステムでしたが、最終的には再帰的なパターンマッチング機能を備えた関数型および論理型プログラミングフレームワークへと進化しました。

しかし、OpenCogが進化するにつれて、スケーラビリティと使いやすさに関する課題が明らかになってきました。これらの課題に対処するため、開発者の一部はニューロシンボリックシステムの試行錯誤を開始しました。Alexey PotapovVitaly Bogdanovは、深層学習ライブラリであるTorchをOpenCogと連携させ、記号処理とニューラル処理を組み合わせることを可能にしました。しかし、この統合はあまり効率的ではないことが判明しました。OpenCogは、特にGPU上で実行する際に、最新のニューラルネットワークフレームワークよりも処理速度が劣っていたからです。

これらの課題が、私たちを現在OpenCog Hyperonと呼ばれているAGIインフラ設計へと向かわせる大きな要因の一つとなりました。

2020年頃のOpenCogは、拡張性と使いやすさの面で限界が見えていました。そこで、OpenCog開発者の一部は、システムを一から作り直すことを検討しました。この動きは、開発者が数学や理論の分野での最新の進展を、より直接的にAIシステムに取り込もうという考えとも結びついていました。そのコンセプトの一つが「認知的シナジー」です。これは、人間の脳における異なるタイプの記憶や学習メカニズムがどのように相互作用するかを理解したことから生まれたものです。認知的シナジーは、脳が問題解決に行き詰まった際に、ある種の記憶から別の種類の記憶へと変換し、本質的に異なるタイプの学習メカニズムを活用して解決策を見いだすことを示唆しています。

このような宣言型知識 (事実や関係性を表現する知識)、手続き的知識(手順や操作方法に関する知識)、感覚的知識(感覚器官を通して得られる知識)の相互作用を形式化するために、圏論と呼ばれる数学の一分野とその他の関連する数学概念が用いられ、様々なAIアルゴリズムをメタグラフと呼ばれる上位グラフ上での操作へと変換することが可能になりました。また、OpenCogの効率性を向上させるために、この数学的枠組みをより深く組み込むことが実現可能であるように思われました。この概念的および形式的な方向性は、OpenCogシステムとスケーラブルな深層学習フレームワーク(大規模データに対応できる深層学習ライブラリ)のような外部のAIシステムとの間で、より洗練された効率的なインターフェースを構築する点でも有望であるように思われました。

最終的に、これらの必要性とインスピレーションに基づいて、OpenCog Hyperonと呼ばれる新しいシステムが開発されました。「Hyperon(ハイペロン)」 は素粒子の名前です。この名前は、Atomspaceに由来する物理学用語のメタファーのテーマを継続させるため、そしてAtomspaceが汎用ハイパーグラフ(別名メタグラフ)であることから、「hypergraph」との響きを考慮して選ばれました。

ここからは冗談半分になりますが、次の大規模なオーバーホールは「Tachyon(タキオン)」 と呼ばれるかもしれない、という提案がありました。これは 、コア部分に量子コンピューティングの構造を取り入れたり、クローズド・タイムライク・ループ(時間的閉曲線)を用いた斬新なハードウェアによる計算の高速化を取り入れたりするものになるでしょう! (しかし、それはまた別の文書での話にしましょう…)

3. OpenCog Hyperon:AGIのための現代的でスケーラブルなインフラストラクチャ

では、いよいよソフトウェアフレームワークとしてのHyperonの詳細を少し見ていきましょう。図1は、主要コンポーネントの多くを大まかに示していますが、これらのコンポーネント間の相互関係は非常に多様で動的であり、単純に正確に図式化することはできません。。

3.1 AtomspaceとMeTTa:OpenCogのコアとなる構成要素

図1:Hyperonアーキテクチャの主要コンポーネントとTrueAGIアプリケーションフレームワークへの統合

Hyperonの中核となる構成要素は、OpenCogやNovamente認知エンジンと同様にAtomspaceです。Atomspaceは、複雑な相互リンク構造を持つノードとリンクで構成されたメタグラフです。このメタグラフは非常に汎用性が高く、サブグラフを含む様々な種類のデータでノードやリンクにラベル付けすることができます。このラベリングメカニズムは、メタグラフ内に複雑な型システムを埋め込むことも可能にします。

Hyperonの新要素であり、以前のOpenCogバージョンとは質的に異なるのが、MeTTaと呼ばれるプログラミング言語です。MeTTaプログラムはAtomspace内のサブメタグラフであり、Atomspaceの一部を修正または追加された部分に書き換えるための手順として解釈されます。(補足説明:MeTTaインタプリタによって何らかの命令として解釈されないすべてのアトムは、MeTTaプログラムで処理可能なデータの「定数」項目であるという意味で、Atomspace内のすべてのサブメタグラフは一種のMeTTaプログラムであると言えます。)

Hyperonが登場する以前のOpenCog(現:OpenCog Classic)は、洗練されたパターンマッチング機能を備えていました。この機能は、献身的なOpenCog開発者であるLinas Vepstasによって設計され実装されました。従来のパターンマッチング機能以上の機能を備えており、パターンマッチングを行うだけではなく、Atomspace上で様々な変換を実行することもできました。これは合理的で興味深い設計でしたが、Hyperonでは少し異なるアプローチを取ることにしました。以下に説明します。

  • 標準的かつ静的なパターンマッチング機能への移行 : Hyperonのパターンマッチング機能は、より標準的で静的なものになるように設計されました。ただし、特殊な機能もいくつか備わっています。例えば、変数を含むパターンの微妙な処理、効率的な型推論を備えた型システムに属するアトムによるマッチングの効率的な実行、そして個々のアトムではなくサブグラフ全体に対する変数のマッチングなどです。
  • MeTTaによるプログラムロジックの分離 : これまでのOpenCogでは、パターンマッチング機能自体に複雑なプログラムロジックが組み込まれていました。しかし、Hyperonではこのアプローチを変更し、MeTTaと呼ばれる新しい言語によりラッパー(Wrapper)を導入しました。MeTTaはパターンマッチング機能を呼び出す機能を備えており、パターンマッチングの実行プロセス内ではなく、外部でプログラムロジックを処理します。これにより、よりシンプルで効率的な設計が実現できます。

MeTTaは、関数型プログラミングと論理型プログラミングの両方の長所を融合し、従来のパラダイムを超えた斬新なプログラミング言語として注目されています。

パターンマッチングに加えて、MeTTaは独自のセマンティクス(意味論)を持つ等式も扱います。この等式の開発には多大な検討が重ねられ、その目的の一つは、MeTTaをホモトピー型理論をはじめとする数学モデルと統合し、同一性の概念に複雑さを加えることでした。MeTTaの等式に対する非正統的なアプローチは、代入や比較がどのように動作するかをあまり決めつけない、十分低レベルなものです。

MeTTaインタプリタは、Atomspaceにメタモーフォシス(変態)をもたらし、自己書き換えを可能にします。これは、自己修正コードにとって大きな可能性を示唆しています。MeTTaインタプリタと組み合わせたAtomspaceは、基本的に、ノードとリンクの集合が自己修正し自己書き換えを行うものとして理解できます。

さらに、MeTTa言語は非常に汎用性が高く、メタグラフとMeTTaグラフの両方で表現することができます。メタグラフは、ノードとリンクだけでなく、それらの関係性も表現できるグラフ構造です。一方、MeTTaグラフは、MeTTa言語で表現されたグラフ構造です。

Alexey Potapovによると、Hyperonの設計の初期段階では、独自のAtomspaceや関連ツールを構築するのではなく、既存のグラフデータベースやベクトルストアと関連するクエリエンジンを利用することが検討されました。しかし、最終的には、AGIの要件があまりにも特殊であったため、独自の構築が必要であるという結論に至りました。

Hyperonにおける知識表現は、MeTTAプログラムを含め、全てメタグラフと呼ばれる構造で構成されています。これは、一般的なAIやAGIアプローチとは実質的に異なる点です。通常のグラフは「トリプレット(主語、述語、目的語)の集合」で表されますが、ハイパーグラフは「タプル(複数の要素の集合)の集合」です。一方、メタグラフは「(ツリー)の集合」であり、エッジ(辺)はノード(頂点)の木構造的なつながり、あるいはエッジは任意の数のノードと他のエッジをつなぐタプルであると言えます。複雑なステートメントや任意の知識表現に不可欠であり、プログラムコード表現にも適しています。

メタグラフは、通常のグラフのようなよりシンプルなデータ構造にエンコードすることはできますが、メタグラフエンコーディングを前提とした走査インデックス付け、検索アルゴリズムは十分に最適化されていません。後者には補助ノードの導入が必要であり、インデックス付けと走査で特別に扱われるべきです。このような方法でグラフデータベースを調整することは理論上可能ですが、基盤となるグラフ表現とそれに対応するアルゴリズムの利点は明確ではありません。

さらに、MeTTAの核となる操作は、パターンマッチングと変数の束縛を伴う一元化です。これは、クエリと照合される知識ベースのエントリ双方で行われます。しかし、このような機能は既存のクエリエンジンではサポートされておらず、キーバリュー型ストアのような下位レベルのホスト表現ではより簡潔に実装できます。これが、RAM内のAtomspaceと分散型アトムスペースの両方で、グラフデータベースをバックエンドとして使用しない理由です。

例えば、MeTTAを使用して “猫は動物である” というステートメントを照合する場合、”猫” という変数と “動物” という変数を定義し、”猫” が “動物” の一種であることを表すパターンでマッチングを行います。この過程で、MeTTAは変数の束縛を行い、”猫” が具体的な “動物” の種類(例えば、”三毛猫” や “トラ猫”)に置き換えられるようにします。

Greg Meredithは、MeTTaの主要開発者であるAlexey Potapov、Vitaly BogdanovAdam Vandervorstと協力して、MeTTaの形式的な動作セマンティクス(意味論)を作成しました。このセマンティクスはこちらで公開されています。また、この形式的な動作セマンティクスに密接に沿ったFormal MeTTaコードリポジトリも存在しており、アイデアをプロトタイプ化してからMeTTaのメインコードベースに移植する際に使用されてきました。

MeTTaとコンピュータサイエンスや形式論理学で使用される型システムとの関係は、この概要レベルでも簡単に言及しておく価値があります。MeTTaは本質的に非常に汎用性が高く、型を持ちません。これは、MeTTaが基本的にメタグラフ上の書き換え規則であり、その規則がメタグラフ自体に埋め込まれているためです。しかし、型は選択されたノードとリンクに付加されたメタグラフの一部にすぎないため、型システムをMeTTa内部で構築することができます。その結果、依存型、漸進型、確率を表す高階型など、非常に汎用性の高い型システムを構築できるようになります。ただし、このような複雑な型に対して効率的な型チェッカーを書くことは依然として課題であり、高度なコンピュータサイエンスの知識が求められます。

このプログラミングフレームワークの洗練さと汎用性を示す例として、AGI-22OpenCogワークショップにおいて、Jonathan WarrellはMeTTaを用いてピーター・アクゼル非有基的集合論の非常にコンパクトな実装を披露しました。この理論における集合は、自分自身を要素として含むことも、循環的な包含関係を持つこともできます。この実装では、Atomspace内で非有基的集合を表現するために循環グラフを利用し、それらを書き換えるためのルールを確立しました。これにより、ゲーツェルが提唱した無限次確率に基づく確率論理のエレガントな実装が可能になります。ゲーツェルの提案は、不確かな共有社会的知識(「私たちはお互いに、この命題が多分正しいことを知っている」)を扱うための方法であり、さらに「我と汝」関係やあらゆる強固な文化を特徴付けるような共有理解など、より有用なバリエーションにも応用できます。

スティーブン・ウルフラム理論物理学に基づく「ルリアド」の概念と、MeTTaのAtomspaceは密接な関係を持っています。どちらも、パターンが無限に階層化された構造(再帰制限なし)を表現するメタグラフ構造であり、無限グルーポイドや(∞,1)-圏などの関連する数学的構成を用いてモデル化することができます。しかし、ウルフラムが物理学に着想を得た研究で探求しているルリアドの特定の領域は、近い将来のAGI文脈において最も有用と考えられる特定の種類のメタグラフとは異なっています。

「MeTTa」という名前は、Meta-Type-Talkの頭字語ですが、ベン・ゲーツェルはAGI-23での講演の中で次のように述べています。仏教哲学における “metta” という言葉は、慈愛を意味することにも注目しています。印象論的には、この名前は、哲学的にもコンピュータサイエンス的にも、システムを善意のあるAIへと導くものとして解釈できるでしょう。

スティーブン・ウルフラム :「万物の理論を計算する」
3.1.1 もう一つのプログラミング言語の必要性

ベン・ゲーツェルは、AGI-23講演の中で次のように述べています。1990年代半ばに斬新なAGI言語の開発に初期段階で取り組んだ後、私は新たな言語の開発は、真面目なAGI研究者にとって魅力的な選択肢ではあるものの、避けるべき誘惑であるという結論に達しました。多くの研究者は、適切なプログラミング言語があればAGIの実装作業が容易になると考えていました。しかし、30年後、彼らはキャリアの大半がAGIではなく、プログラミング言語の研究開発に費していたことに気づいたのです。それにもかかわらず、私はAGI研究キャリアの数十年の経験を経て、新しいプログラミング言語の作成に携わっています。しかし、LISPPrologなどの過去の事例とは異なり、Hyperonチームでは、この新しい言語を開発するにあたって、実装したい具体的な機能が多数あるという点でアプローチが異なります。私たちはすでに他の言語やフレームワークでプロトタイプのAGIシステムを構築してきた経験があるため、AGIのアイデアを効果的に実現するために必要な言語としての特性や要素をかなり明確に把握しています。

Alexey Potapovは、この点をさらに詳しく説明しています。代替案を慎重に検討した結果、知識表現、パターンマッチングクエリ、およびそれらを連鎖する機能を専用の言語であるMeTTaに組み込むことにしました。MeTTaはHyperonの基盤となる重要なコンポーネントです。知識表現の必要性は明白であり、認知言語の導入も認知アーキテクチャや類似プラットフォームにおいて非常に一般的です。しかし、MeTTaを独立したプログラミング言語として開発すべきかどうかについては、長時間を費やし議論を重ねました。認知言語は制限や専門化が生じる可能性があり、汎用プログラミング言語内のDSLやライブラリとして実装 することもできます。

Hyperonは、複数のパラダイムを横断して研究を行うためのプラットフォームであるため、その認知言語は特定の分野に特化せず、汎用性を持たせることが重要でした。

Agdaなどの証明支援系言語、Prologなどの古典的な論理言語、ChurchAnglicanなどの汎用確率プログラミング言語は、いずれも特定のパラダイムに特化しており、汎用性に欠けます。例えば、PrologにはProbLogのような拡張機能が存在しますが、これらは相互運用できない独立したプロジェクトであり、統合的な利用は困難です。同様に、確率プログラムの実行履歴を分析するには、言語インタプリタを直接操作する必要があり、煩雑な作業が伴います。さらに、これらの言語はネイティブに知識ベースと連携することができず、外部のグラフデータベースをクエリする機能に限定されています。そのため、認知アーキテクチャに必要な多くの機能を備えていないと言えます。

Hyperonを汎用ホスト言語のライブラリとして実装するには、いくつかの課題を克服する必要があります。まず、Hyperonには、推論規則や手続き知識を含むすべての知識エントリが内省的で書き換え可能なユースケースが存在します。 例えば、PyTorchのようなPythonでHyperonをライブラリとして使用する場合、できるだけHyperon言語で記述したいでしょう。Hyperon言語では、Atomspace内の知識としてプログラムを表現し、Pythonコードは必要最低限に抑えたいと考えられます。Pythonコードは、内省的ではなく、推論の対象となる知識ではないからです。従来の言語で実装された特製のシンボル系システムの例は多く存在しますが、そのようなシステムではシンボル情報の処理が命令型言語で記述されており、相互に互換性がなく、より大きなシンボル系システムで使用することができません。したがって、推論規則自体を認知言語で実装することは非常に重要です。

そのためには、認知言語がある程度の汎用性と表現力を持つ必要があります。これは、認知言語がPythonやRustのような汎用言語のようにあらゆる用途に使えるべきという意味ではなく、さまざまなAIシステムやコンポーネントを実装するのに十分な機能を備えていなければならないという意味です。Atomspaceに格納されたこれらのプログラムは、ホスト言語のコードとして表現されるのではなく、独自のインタープリタによって評価されます。また、この認知言語専用の構文を持たずに、既存のホスト言語の構造を使ってAtomspaceを埋めることも可能ですが、ホスト言語の構文を抽象化し、純粋な認知言語コードを分離することで、さらなる利点が生じます。

Hyperonは、OpenCog Classicや他の多くの認知アーキテクチャと同様に、独自の内部認知言語を備えています。この言語は、Hyperonの設計全体が持つ普遍性と柔軟性によって、他の言語とは一線を画します。そのため、言語を持たないという選択肢は存在しません。そして、この言語をライブラリ作成やデバッグに利用できるプログラミング言語として扱うか、単なる内部認知言語として扱うかは、利便性の問題となります。HyperonのPLN、MOSES、ECANなどの異なるコンポーネントをMeTTaで実装し、独自の推論戦略やDNNとの統合方法などを他のライブラリと共に扱う場合、MeTTaをプログラミング言語として扱う方が便利です。

3.1.2 MeTTaの概要

MeTTaは革新的な言語であり、習得するためには従来のプログラミング思考を捨て、新しいアプローチを身につける必要があります。そのため、簡単な概要だけでは十分な理解は得られないかもしれません。しかし、ある程度の技術的背景を持つ読者向けに、MeTTaの特徴と他の言語との差別化ポイントを簡潔にまとめることは依然として価値があると思われます。

MeTTaのプログラムは、式の集合であり、これらはAtomspaceと呼ばれるコンテナに格納されます。式は、「アトム」と呼ばれる基本要素のタプル(複数要素の組み合わせ)で構成されます。このアトムは、以下の3種類に分類できます。

  1. 別の式:より複雑な複合式を構築するために組み合わせられる部分式です。再帰的にネスト(入れ子)構造となっており、別の式自体を要素として含むことができます。これにより、階層的なデータ構造を表現することが可能になります。
  2. 純粋なシンボル:特定の概念や値を抽象的に表現するシンボルです。プログラム内で利用される変数名とは異なり、あらかじめ定義された意味を持ちます。例えば、「赤」や「3.14(円周率)」といったシンボルがこれに該当します。
  3. グラウンデッドアトム(接地アトム):MeTTaプログラム自体では完全に記述できないサブシンボリックなデータをラップする特別なエンティティです。センサー値や画像の一部など、記号だけでは表現しきれない情報がこれに当たります。パーサーはこのようなグラウンデッドアトムに変換すべき値を認識し、適切に処理を行います。

例えば、以下のものは有効な式です。

  • MySymbol:単純なシンボルです。プログラム内で特定の概念を表すために利用されます。
  • (A (B C D) E):複合式で、タプル (B C D) を含むアトム A とアトム E からなるタプルです。ネスト構造の例を示しています。
  • (”point” (10 10)):グラウンデッドアトムを含む複合式で、文字列 "point" と数値のタプル (10 10) からなるタプルです。この式内の "point"10 は、パーサーによってグラウンデッドアトムに変換されます。パーサーはプログラムの構文を解析するソフトウェアで、この場合は "point" を座標を表すデータに変換する処理を行うと考えられます。

Atomspacesは、他のコンテナとは異なり、式をそこから取得するための特別なクエリ機能を備えています。MeTTaの式はメタグラフのエッジとして扱うことができ、Atomspaces全体はインデックス付けされた内容に対して効率的に動作するクエリエンジンを備えたメタグラフデータベースや知識ベースとして機能します。さらに、Atomspacesに対するクエリは、関数型言語におけるパターンマッチングを汎用化した概念としても理解できます。クエリは通常、特殊なタイプのアトムである変数を含む式です。現在の構文では、変数は記号の先頭に $ を付加することで通常のシンボルと区別されます。変数を持つ式はパターンと呼ばれます。

例えば、式 (A (B C D) A) は、以下のクエリ(パターンとの一致検索)によって検索できます。

  • (A $x A):このパターンでは、$xワイルドカードとして機能し、式 (A (B C D) A) 内の任意の部分に一致することができます。
  • (A (B $x $y) A):このパターンでは、$x$y はそれぞれ独立した変数であり、式 (A (B C D) A) 内の対応する位置(BとD) に一致しなければなりません。
  • ($x (B C D) $x):このパターンでは、$x は式 (A (B C D) A) の最初と最後の複数部分に一致する値でなければなりません。

しかし、(A ($x $y C) A)(A (B C D) (A $x))($x ($x C D) A) のクエリは、式 (A (B C D) A) には一致しません。

Atomspacesは、他の多くのデータベースコンテナと異なり、変数を含む式を格納できるという特徴があります。変数がクエリと式内で互いに矛盾なく部分式にバインドできた場合、それらの式とクエリがマッチングされます。バインドとは、変数に具体的な値を割り当てる操作を指します。例えば、式 (A ($a $a) A) は、クエリ ($b (B B) $b) と一致しますが、クエリ ($b (B B) C)($b (B $b) $b) とは一致しません。後者の場合、両方の変数 $a$b に対して、2つの式を完全に一致させるような代入を見つけることができないからです。

MeTTaのコアとなるパターンマッチング関数は、「クエリパターン」と「結果パターン」という2つのパラメータを受け取り、指定されたAtomspace内でクエリパターンと「統一」可能な式を検索します。そして、統一によって得られた値を使用して、結果パターンの変数を置換した結果を出力します。統一とは、変数を含む2つの式が同じ意味になるように、変数に値を割り当てるプロセスです。例えば、クエリパターンが (A (B $x $y) A) であり、結果パターンが (Found $x $y) の場合、このクエリパターンが (A (B C D) A) と一致すると、結果は (Found C D) になります。

特定のグラウンディングアトムは、ホスト言語で記述された実行可能コードをカプセル化することができます。MeTTa式は評価対象であり、式が実行可能なグラウンディングアトムで始まる場合、その式の評価結果はラップされたコードの実行結果となります。具体的には、match はパターンマッチング機構への参照を提供するグラウンディングアトムであり、&self はMeTTaプログラム自体が格納されているAtomspaceを参照するグラウンディングアトムです。

例えば、MeTTa式として (match &self $(A (B $x $y) A) (Found $x $y)) を評価すると、プログラムのAtomspaceに対して、対応するクエリパターンと結果パターンを用いたパターンマッチングが呼び出されます。

MeTTaスクリプトが処理されると、その式はプログラムのAtomspaceに格納されます。もし特定の式を即座に評価したい場合は、現在は式の前頭に ! を付ける必要があります。以下のMeTTaプログラムの実行過程を見てみましょう。

(Sam is a frog)
(Tom is a cat)
(Sophia is a robot)
! (match &self ($x is a robot) (I know $x the robot))

このプログラムでは、最初の3つの式はプログラムのAtomspaceに格納されます。そして、最後の式が評価されると、(I know Sophia the robot) が出力されます。

プログラムのAtomspaceにあるパターンは、汎用的な知識表現に役立ちます。以下のプログラムを見てみましょう。

(Implies (Human $x) (Mortal $x)) ; すべての人間は死ぬ (含意関係)
! (match &self (Implies (Human Socrates) $y) (Concluding $y)) ; (即時評価)

このプログラムを実行すると、(Concluding (Mortal Socrates)) を出力します。なぜなら、クエリパターンが変数 $xSocrates に、変数 $y(Mortal Socrates) に置き換えると、クエリパターンがAtomspac内にある表現と統一できるからです。このプログラムは、ソクラテスが人間であるという知識と、人間なら誰でも死ぬという含意関係を使って、ソクラテスは死ぬことを推論します。

グラウンデッドアトムの評価は、それらにラップされた実行コードに委譲されますが、シンボル式の評価は、インタプリタが等式クエリを構築することで行われます。つまり、式 (f a) が評価される場合、クエリ (match &self (= (f a) $r) $r) が構築され、このクエリの結果がさらに評価されます。もし等式クエリの結果が空であれば、その式は自身として評価され、簡約化されません。以下のプログラムを見てみましょう。

(= (add (S $x) $y) (Add $x (S $y))) ; (S $x) + $y と $x + (S $y) は等しい
(= (add Z $x) $x) ; Z + $x は $x に等しい
! (add (S Z) (S Z)) ; (即時評価) (1 + 1) を計算

この節では、式 (add (S Z) (S Z)) の評価過程を通して、MeTTaのシンボル式評価の仕組みを説明します。

  1. 初期クエリパターン:まず、MeTTaは評価対象の式 (add (S Z) (S Z)) と一致するかどうかを調べるために、クエリパターン (= (add (S Z) (S Z)) $r) を生成します。この $r は、後続の評価のために導入された変数です。
  2. 最初の式との統一:このクエリパターンは、MeTTaが保持する知識であるAtomspace内の最初の式 (= (add (S $x) $y) (Add $x (S $y))) と統一できます。統一により、変数 $x には Z が、$y には (S Z) が、$r には (add Z (S (S Z))) がバインディングされます。
  3. 再帰的評価$r にバインディングされた (add Z (S (S Z))) はまだ評価されていないため、新たなクエリパターン (= (add Z (S (S Z))) $r) が生成され、評価が繰り返されます。
  4. 2番目の式との一致:このクエリパターンは、Atomspace内の2番目の式 (= (add Z $x) $x) とも統一でき、変数 $x には (S (S Z)) がバインディングされます。
  5. 評価の終了:さらに評価を進めようとしても、$r の値 $x を使って一致するパターンは見つかりません(空の結果)。
  6. 最終結果:空の結果が得られたため、$r の値 (S (S Z)) がそのまま評価結果となります。

MeTTa式の評価は、等式クエリ連鎖を用いることで実現されており、これは関数型プログラミングにおける関数呼び出しのパラダイムと機能的に類似しています。しかしながら留意すべき点として、これらの等式は単なる計算結果ではなく、知識ベースに永続的に格納されたエントリとして依然として存在し、明示的にクエリが可能であることが挙げられます。

例えば、最終プログラムに対してクエリ (match &self (= (add $x $y) Z) (Answer $x $y)) を実行した場合、(Answer Z Z) が返されます。これは、クエリパターンが排他的に (= (add Z $x) $x) のみと統一可能であるためです。注意:比較対象となる2つのクエリパターン内にある同じ名前の変数は、別々の変数として扱われます。

MeTTaにおける変数を含む式の評価は、データベースクエリや関数型プログラミングと類似した特性を持っています。プログラム内の変数は、論理プログラミングの概念と親和性が高く、関数型プログラミングと知識ベースを統一的に取り込むパラダイムを可能にします。言い換えれば、MeTTaの変数クエリは、データベースの検索機能、関数型プログラミングの変数操作、論理プログラミングの推論機能という、3つの特徴を統合したユニークな機能を持っています。

以下のプログラム例では、標準ライブラリの Trueand を用いて、カエルに関する知識を表現し、推論を行います。

(= (croaks Fritz) True) ; カエルのフリッツは鳴く
(= (eat_flies Fritz) True) ; カエルのフリッツはハエを食べる
(= (frog $x) (and (croaks $x) (eat_flies $x))) ; カエル(x)は鳴き、ハエを食べる
(= (green $x) (frog $x)) ; 緑色(x)はカエル(x)である
! (green Fritz) ; (即時評価) フリッツは緑色?

最後の式 ! (green Fritz) は、関数型プログラミングのアプローチと同様に True に評価されます。特筆すべきは、(green Sam) が単に False を返さず、(and (croaks Sam) (eat_flies Sam)) に簡約される点です。さらに興味深いのは、(if (green $x) $x (no-answer)) も評価され、Fritz が返されることです。MeTTaが変数を含む式を評価できる理由は、等式クエリを構築するからです。例えば、 (green $x) はクエリパターン (= (green $x) $result) を用いて評価されます。このクエリでは、$result(frog $x) にバインドされ、さらに (and (croaks $x) (eat_flies $x)) に評価されます。その後、クエリパターン (= (croaks $x) $result)(= (croaks Fritz) True) と統一され、$result には True$x には Fritz がバインドされます。

MeTTaでは、自動的な等式に基づく連鎖を回避したい場合、プログラマーは match を使用して、純粋に宣言的な知識に対する推論ルールを定義することができます。例えば、プログラム内の (,) は、クエリパターンにおける2つのサブパターンの同時マッチングを表します。サブパターンは異なる式を持つことが許容されますが、変数バインディングは共通となります。以下はプログラムの例です。

(Fact (Human Plato)) ; プラトンは人間である (事実)
(Implies (Human $x) (Mortal $x)) ; 人間なら誰でも死ぬ (含意)
! (match &self (, (Implies $a $b) (Fact $a)) (Inferred $b))

例:上記のプログラムは、人間が死ぬという含意(Implies)関係とプラトンが人間であるという事実から、プラトンは死ぬという結論を導き出します。このプログラムを実行すると、(Inferred (Mortal Plato)) が出力されます。

MeTTaにはいくつかの特定の機能があります。

1. 非決定性:MeTTaのクエリは、非決定性であることが特徴です。すなわち、単一の結果ではなく、複数の結果を返す可能性があります。同様に、等式に基づく評価も、複数の結果を返すように設計されています。例えば、知識ベースに (is-a Plato Human) (is-a Socrates Human) が格納されている場合、クエリ (match &self (is-a $x Human) $x) はプラトンとソクラテスの両方を返します。

2. 漸進的依存型:MeTTaは、漸進的依存型システムを採用しています。シンボルには型を割り当てることができ、式の型は、パターンマッチングを含む自動推論プロセスによって決定されます。以下の例は、MeTTaの型システムの表現力を示しています。

(: Nat Type) ; Nat は型の名前
(: Z Nat) ; Z は Nat 型の値
(: S (-> Nat Nat)) ; S は Nat 型から Nat 型への関数を表す型
(: Vec (-> $t Nat Type)) ; Vec は要素型 $t を持つ長さ可変のリストを表す型
(: Cons (-> $t (Vec $t $x) (Vec $t (S $x)))) ; Cons は Vec 型の要素のコンストラクタ
(: Nil (Vec $t Z)) ; Nil は空の Vec 型を表す

上記の型定義に基づくと、(Cons 0 (Cons 1 Nil)) という式の型は (Vec Number (S (S Z))) になります。

3. カスタムグラウンデッドアトム:MeTTaプログラミング言語は、カスタムグラウンデッドアトムをサポートしています。これにより、MeTTaプログラムは、外部データ構造や他の言語(Rust, C++, Python)で記述されたコードをラップすることができます。この機能は、根拠推論やNeural-symbolic統合において重要です。

4. 自己修正:MeTTaのAtomspace APIは、クエリ処理のための match 関数だけでなく、アトムの追加や削除を行うための関数も提供しています。アトム自体もMeTTa内でグラウンデッドアトムとして表現されるため、MeTTaプログラムは自己修正が可能です。すなわち、プログラム実行中に自身のコードを更新することができます。

3.1.3 AGIのためのMeTTaインタプリタの最適化

MeTTaという言語は、AGI以外にも幅広い分野で活用できる可能性を秘めています。この言語は、論理プログラミングと関数プログラミングの両方を柔軟に扱えるだけでなく、実行時に生成される型システムを含むさまざまな型システムをホストでき、本来複雑なプログラミングタスクを簡素化することができます。しかし、MeTTa開発における我々の主要な目標はあくまでAGIであり、そのため、重要と考えられるAGIアルゴリズム群に対して効率的なパフォーマンスを発揮するようにMeTTaインタプリタを最適化する方法を綿密に分析してきました。

ベン・ゲーツェルは次のように述べています。2020年、COVID-19パンデミックの影響で出張が大幅に減少したため、例年よりも理論的な研究に時間を費やすことができました。そこで、数年前に中断していた数学的AGI理論の研究を再考し、「折り畳み」と「展開」と呼ばれる操作の洗練されたバージョンをメタグラフ上で実行することで、OpenCogアプローチによるAGIに必要なすべてのアルゴリズムをある程度の近似で表現できるという仮説を検証しました。

具体的には、関数型プログラミング理論における「モルフィズム動物園」と呼ばれる一群の操作(futurism、histomorphism、metamorphismなど) が存在します。通常、これらの操作はリストやツリー上で実装されますが、私はこれらの「再帰スキーム」をメタグラフ上で実装することで、論理推論、進化学習、注意配分などを効率的に実装するための基盤を構築できるのではないかと考えました。これらはすべて、人間のような心を再現する上で重要だと感じていた中核的な技術です。

メタグラフ上での折り畳みと展開の操作をMeTTaインタプリタで効率的に実行できれば、HyperonシステムにおけるAGIアルゴリズムの効率化が大幅に進むと考えられます。これは、多様なAGIアルゴリズムの基本的な共通構造と操作を明らかにすることによるものであり、数学的な応用により大きな価値が生まれる可能性があります。この数学的アプローチは、最新の数学の中でも最も複雑なものとは言えませんが、20年前には実現が難しかったものです。当時は、関数型プログラミングの数学がまだ完全には発展しておらず、このような進展が可能ではありませんでした。

このアプローチの欠点としては、典型的なコンピュータプログラマーが扱うにはやや抽象的すぎることです。もちろん、アプリケーション開発者や認知科学者にとっても同様です。しかし、コンピュータや携帯電話の利用者のほとんどは、基盤となる半導体物理学を理解する必要はありません。システム設計における課題は、洗練された基盤となる仕組みを利用できるようにしつつ、すべての詳細を理解する必要のない、ドメイン固有言語、API、その他の簡略化されたツールを作成することです。

3.1.4 MeTTa開発の次の段階における課題

MeTTaは、既存のプログラミング言語とは一線を画す独自の言語であり、その最も近い親戚と言われている言語も、熱狂的な関数型プログラミング愛好家しか知らないようなマイナーな言語です。MeTTaの動作を理解したい場合は、Alexey Potapovによるチュートリアル動画 [] [] が良い出発点になるでしょう。また、MeTTAプロジェクト開始当初に書かれたAlexeyの基本概念の解説ドキュメントも役に立つはずです。より数学的なアプローチを好むのであれば、Greg MeredithによるMeTTaの操作セマンティクス解説が理解を深めるのに役立つでしょう。

MeTTaの開発は多くの作業を経て現在の段階に到達しましたが、この言語はすでにいくつかのAGI志向アルゴリズムの実験に使用されています。しかし、人間レベルを超えるAGIの開発と、反射的自己プログラミングを可能にする基盤言語として効果的に機能するためには、MeTTaをさらに進化させる必要があります。MeTTaに関する詳細な資料を閲覧された方は、Adam VanderVorstによるMeTTa開発の次フェーズにおける課題に関するコメントにも興味を持たれるでしょう。Adamによる公式なMettaコードベースも興味深く、純粋な数学的観点とMeTTaの主要なRustコードベースとの中継役として非常に役立っています。

AdamはMeTTaの現状と未来について次のようにまとめています。Hyperonエコシステムの中核にあるのは、Atomspaceと呼ばれる空間です。これはOpenCog Atomspaceの後継にあたるもので、新しいMeTTa言語をサポートするために最初から構築されました。どちらも根本的に簡素化されており、ファーストクラスラムダ式や引用は使用されず、型システムは項と同じレベルで扱われます。手動でのクエリ作成は、統一された(入れ子構造の)統一構文に置き換えられ、カスタム機能の追加も容易に行えるようになっています。これらの簡素化により、このドキュメントで紹介した多くの進歩が可能になりましたが、その一方でいくつかの課題も生じています。

以下では、そうした課題について詳しく説明していきます。

1. シンプルな項言語: MeTTaの基盤となる項言語は、非常に強力で柔軟性が高いという特徴を持つ一方、より多くの開発者グループが実際に利用できるようにするには、ドキュメントとツールの拡充が不可欠です。MeTTaのコア部分には、わずか4種類の基本型しか存在しません。

  1. シンボル(名前):基本的な用語や概念を表します。
  2. 変数(プレースホルダー):具体的な値が入る枠のようなもので、計算や推論の中で値が代入されます。
  3. グラウンデッドシンボル (カスタム機能):ユーザーが定義した処理や機能を表します。
  4. 式 (上記の基本型のリスト):シンボル、変数、グラウンデッドシンボルを組み合わせて、論理的な関係や計算を表します。

このため、代数的データ型のような複雑なデータ構造は、他のあらゆる構成要素と同じように宣言して使用する必要があります。関数についても同様で、変数を統一できるスコープに分割してから、変数を含む通常の式として記述する必要があります。では、具体例を見てみましょう。

(=(succ$x)(S$x))

一見、この定義はそれほど悪く見えません。しかし、 グラウンデッドシンボルが存在せず、変数も $x のみであるため、この式の意図を正確に把握することは困難です。さらに、この式のいくつかを名前変更すると、次のような式に変換されてしまいます。

(If (Has $money) (make $money))

このようになると、本来の式の意図が完全に失われてしまいます。汎用性は諸刃の剣であり、MeTTaではクラスをインスタンス化する専用の ?new? キーワードや、関数を定義するための def キーワードが存在せず、慣れるまでは戸惑うかもしれません。その代わりに、驚くべきことに、名前変更のステートメント(それ自体が等式)を実行時に追加することもできるのです。これは、従来の言語では実現できないレベルの柔軟性を提供しており、MeTTaの大きな強みと言えます。

しかし、安全でフレンドリーな言語を作る望みが完全に失われたわけではありません。最近では、「名前」と「機能定義」を分離する言語が登場しています。Unisonはその一例で、コードをデータベースに保存し、正規化されたコード断片に名前を付けるため別々のファイルを用意しています。Lamduも注目すべき言語です。彼らはネーミングの柔軟性を利用して、これまでにないレベルの国際化を実現しています。インタラクティブなエディターにより、ユーザーは仮想インライン化、ライブ評価、ホバー時のエイリアス表示を通じて、どの名前が何にバインドされているのかを確認できます。MeTTaのようなシンプルで表現力があり、動的な言語の成功には、ツールが極めて重要な役割を果たすでしょう。

今回の例で注目すべきは、MeTTaが意図的に慣例に反した記号を使っていることです。なぜなら、通常の意味や機能を想像させるような名前ではなく、エイリアシング(名前変更)と呼ばれる別名を用いることで、プログラムの意図をより明確に表現できます。具体的には、以下の3つが挙げられます。

  • 等号 ( = ):通常はインタプリタによる照合や評価に直接用いられる記号ですが、ここでは「等しい」というエイリアシングが使用されています。
  • 関数「succ」: おそらくリスト内の後続要素を表すと思われる関数ですが、「持つ」というエイリアシングが使用されています。本来の機能を示す言葉ではありませんが、この例では文脈上適切な意味を持つ可能性があります。
  • コンストラクタ「S」: おそらく新しい何かを生成すると思われる記号ですが、「作る」というエイリアシングが使用されています。こちらも本来の名前とは異なりますが、この例では機能を理解できるでしょう。

エディタでは、関数は評価に組み込まれる際の記号に関係なく、一貫した形で表示されます。新しく定義された名前は、従来のプログラミング言語と同様にハイライト表示されます。さらに、エディタはシンボルの参照を解決し、そのシンボルが定義されているかどうかをユーザーに示すことができます。

しかし、これらの解決策はどれも、そもそも課題の原因となっている動的データベースの性質を利用しています。そのため、ライブラリやエディタの開発者は、MeTTaステートメント内のシンボルがMeTTa自体で何を意味するかを定義する必要があります。これにより、ユーザーとそのツールがクエリを実行できるようになりますが、これは非常にメタな解決策であり、開発者にとって負担が大きくなります。

2. 拡張可能な型システム: MeTTaは、型を持たない言語をベースにしていますが、その上に複雑な型システムを構築することができます。これは、MeTTaの主要な利用形態になると考えられています。しかし、ベース言語が無型であることは、長所と短所があります。

MeTTaがサポートする統一と変換は、型チェック、型推論、および型注釈生成を実装するのに十分強力です。しかし、MeTTaプログラムは一度に作成するものではなく、時間をかけて構築していくものであるため、理想的には、一度にプログラム全体を実行して型エラー報告を受け取るのではなく、型チェッカーと対話形式で作業を進めていくことが望ましいでしょう。

MeTTaでは、型も単なる項として扱われます。例えば、(: succ (-> Nat Nat)) のように、プログラムを構築していく過程で、有効な項を徐々に絞り込んでいくことができます。

この柔軟性の利点としては、型を先に定義するか、項を先に定義するかを自由に選択して実験できることです。さらに、エディタによっては、型チェッカーが推測した型をコードベースに挿入してくれる可能性もあります。一方で、プログラムの完成度を把握する責任は開発者自身にあります。つまり、対話型の型推論を利用するため、欠けている定義があってもすぐにエラーにならず、実行可能な部分までプログラムが実行されてしまいます。そのため、プログラムの計画と未完成部分のマーキングは、開発者とツールが共同で責任を負うことになります。これは証明系における ??? のような記号と同様に、MeTTaでは型推論エンジンが穴埋めを手伝ってくれますが、全体を把握するのは開発者の責任となります。

3. わかりやすく表現力豊かな簡約セマンティクス:コンピュータ科学者、関数型プログラマー、あるいはラムダ計算に基づく言語に精通したAI開発者にとって、MeTTaに明示的なラムダ式メカニズムが欠如していることは、直感的に理解しにくいと感じる可能性があります。

MeTTaでは、古典的なベータ簡約(変数置換)ではなく、統一化と呼ばれるメカニズムを用います。この双方向置換メカニズムは、Epic Gamesが開発した新しいプログラミング言語であるVerseとその計算体系でも採用されていますが、情報の伝達が双方向に行われるという特徴があります。具体的には、結果を式から計算できるだけでなく、式を結果から計算することも可能で、さらにその組み合わせも自由に行えます。この機能は、関数論理プログラミング以外のほとんどのプログラミングパラダイムに慣れたユーザーにとっては、かなり違和感を感じるかもしれません。しかし、MeTTaは、この双方向性の利点を活かし、局所的な宣言的なステートメントを、数学的に期待される通りの動作でプログラムで使用することを可能にしています。

統一化は強力な手法ですが、諸刃の剣でもあります。多くの場面で必要とされるわけではないにもかかわらず、常に「予期せぬ結果」が生じる可能性があるため、MeTTaでは意味の可能性について慎重に検討する必要があります。この課題は、名前のエイリアシング(前述)やグラウンディング(後述)と同様のアプローチで解決できます。具体的には、MeTTaステートメントなどの追加情報によって、制御フローをユーザーと最適化ツールに明確に示すことが可能です。


4. matchを用いた空間変換: 前述のとおり、MeTTaにはあらゆる種類のクエリに対応する統一された構造があります。この match 構文は、最も簡単な検索(例えば、センサー[温度][外部])から始まり、二段階の変換(古典的な異なるフィールドの結合とミートを連鎖させた挿入のオーケストレーション)まで幅広い用途に使用できます。 例えば、以下のようになります。

具体例

  • 単純な検索sensors[temperature][outside]:(match &sensors (Temperature Outside $t) $t)
    • この構文は、センサーデータの中から、屋外温度 $t を表す値を問い合わせるものです。
  • 2段階の変換 (match &process (send $channel, $payload) (match &process (recv $payload $channel \$body) (Result \$body)))
    • この構文は、より複雑な処理を表しており、2段階の match をネストさせています。
      • 第一段階の match は、プロセスの中から、特定のチャネル $channel に送信 send されたペイロード $payload を探します。
      • 第二段階の match は、受信 recvされたペイロード $payload とチャネル $channel が一致するものの中から、実際のデータ本体 $body を抽出します。
      • 最終的に、抽出されたデータ本体 $body を結果 Result として返します。

注意すべき点として、JITコンパイルステップを挟まない場合、最初のデータベースクエリの結果に対して、それぞれ個別にデータベースクエリが実行されます。この種の最適化問題は、多値入力関数にも当てはまりますが、MeTTaの場合は統一という機能があるために、さらに複雑な問題となります。

5. カスタム関数: Atomspace外部で実装された他言語関数を参照するための「グラウンデッドアトム」は、極めて重要かつ価値の高い機能であり、柔軟な利用が可能です。この機能は、様々なユースケースに活用でき、開発効率を高めることができます。しかしながら、開発者にとっては複雑な選択を伴う場合も少なくありません。対象のアトムのグラウンディング状態(グラウンデッドか?)やグラウンディングの必要性(グラウンディングすべきか?)に関する評価は、状況によって複雑な判断を伴う場合があり、必ずしも明確な正解が存在するわけではありません。

MeTTaは、浮動小数点のような基本的な機能からPyTorchモデル全体まで、4つのコア型以外のあらゆる機能を「グラウンディング(根拠付け)」と呼ばれる仕組みによって拡張します。グラウンディングは、値、パターンマッチングの挙動、評価方法を変化させることができます。しかし、グラウンディングはMeTTa外部で行われるため、グラウンディングされた定義は通常の定義のようにクエリで検索することができません。そのため、ライブラリ開発者は、グラウンディングされた機能の詳細な説明を記述する責任を負います。例えば、MeTTa内部の定義であれば、関数の引数の数を調べるためにクエリを実行できますが、グラウンディングされた関数の場合には、この情報をメタスペースに追加するか、または「スタブ」と呼ばれる代替手段を用いる必要があります。

依存関係は、より複雑な問題を提起します。match クエリや評価全般は、特定のシンボルを考慮に入れます。例えば、= はグラウンデッドシンボルではありませんが、グラウンデッド関数内で使用されます。もし match がMeTTa内部で実装されていれば、定義を解析し、= のエイリアシング(または開発者による独自グラウンディング)に関する情報を提供する機能を作成することが可能です。例えば、開発者が記号 , をペアを表すものとして使用していたにもかかわらず、match のグラウンディングが変更され、この記号に複合クエリを示す特別な意味が割り当てられたために、開発者のコードが破損してしまったという事例があります。

MeTTaにおける依存関係管理には、いくつかの潜在的な解決策が考えられます。具体的には、名前空間コードサニタイザー、インタプリンタ警告などがあります。包括的な解決策を導き出すためには、多大な労力と時間が必要となりますが、MeTTaを大規模なコードベースと複雑な依存関係チェーンで運用できるようにするために不可欠です。

3.2 LLM時代におけるHyperonの立ち位置

この文書の後半部分からもわかるように、MeTTaやHyperonの他の要素は、それぞれ長年の歴史を持つ様々な学術的・実践的な知識基盤や伝統に依拠しており、相当な技術的深度を有しています。一方で、昨今のAI分野はLLMにやや支配されている感があり、この高度で繊細、複雑なMeTTaというアプローチとは全く異なる方向から生まれてきたと言えます。そのため、HyperonがLLMの分野にどのように適合するかについて考察し、コメントを加えることは自然な流れでしょう。「LLMの欠点を乗り越える」という考え方は、Hyperonの開発当初からの動機でも、Hyperonを考える上で最も自然な方法でもありません。しかし、LLMとHyperonを様々な形で統合した実用的なシステムを構築する文脈において、思考実験的な観点からこの角度で考察することは有意義と言えます。

LLMは、汎用知能の文脈で興味深い位置を占めています。LLMは、原則的には特定のタスクに特化した「Narrow AI」であると考えられます。しかし、人間にとっては信じられないほど幅広い領域を扱うことができます。LLMは膨大な学習データを利用して動作しますが、その汎用化能力は学習データの範囲内に限定されます。初期のプログラムや学習データを超えた汎用化が本質的に求められるAGIとは、この点が大きく異なります。しかし、LLMは膨大な訓練データをわずかに超出する汎用化能力を持つことで、非常に幅広いタスクを実行できます。なぜなら、その訓練データは人間の日々の活動における関心事の多くをカバーしているからです。

LLMが、ある種の「創発」現象を示していることも注目に値します。創発とは、個々の要素の単純な相互作用から、システム全体として新しい性質が生まれてくる現象のことです。LLMは、ネットワークの重みを変更せずに新しい事例に適応することができ、Few-shot Learning(少量の学習データによる学習)とIn-context Learning(文脈に依存した学習)を実現しています。これは、ニューラルネットワークの活性化空間内でのダイナミクスによるものです。 ニューラルネットワークで重みを変更せずに学習するという概念自体は新しいものではありませんが、LLMがこのタイプの学習を適用できる規模は前例のないものです。

一方で、LLMにはいくつかの深刻な限界もあります。具体的には、科学研究や画期的な数学定理の生成に必要な体系的な多段階推論は、これらのシステムにとって困難です。これは、LLMが既存の知識に依存しがちで、それを大きく超えて拡張することができないことが一因です。さらに、 LLMは創造性に欠けており、芸術的に革新的な作品を生み出すことは言うまでもなく、美的に豊かだったり感動させたりするような作品を生み出すこともできません。結局のところ、LLMの大きな限界は、その狭さ、つまり訓練データに依存した特性に密接に関連しています。

AI研究コミュニティ全体では、LLMとAGIの関係性について意見は大きく分かれています。例えば、ゲイリー・マーカスヤン・ルカンは、LLMをAGIへの道の遠回りだと考えています。一方、LLMを大きな進歩と捉える研究者も多く、現在のLLMを拡張したり、他の技術と組み合わせたりすることで、人間レベルのAGIを達成できると考えています。

この文書を読み進めることで、そしてすでに明らかになっているように、LLMはHyperonシステムやそれに関連する理論の中核を担うものではありません。しかし、現在の仮説としては、LLMがHyperonシステムと密接に、あるいは緩やかに統合されることで、Hyperonベースの汎用知能において重要な役割を果たす可能性があると推測されます。

LLMから得られる教訓は、Hyperonやその他のLLMを中心としないAGI開発にも広く応用できます。例えば、驚くべきことかもしれませんが、LLMが強く示唆するのは、大規模なスケーリングがAIシステムの能力を飛躍的に向上させる可能性があるということです。Hyperonは、最新の深層学習フレームワークと同様に、より緻密な設計で、スケーラビリティを念頭に構築されています。これを実現するために、最新のハードウェア、分散処理、さらにはブロックチェーンさえも活用しています。LLMの優れたスケーラビリティは、他のAIアルゴリズムも同様のスケーラビリティを実現するために、最新のコンピューティングとデータインフラ技術を活用する必要性を示唆しています。そうすることで、LLMが深層ニューラルネットワークの能力を向上させたように、他のAIアルゴリズムもその本来の力を発揮し始め、LLMと効果的にハイブリッド化して、新たな知性のかたちを生み出す可能性を秘めています。

Alexey Potapovは、HyperonをLLMの代替または補完として追求する理由を以下のように説明しています。LLMは長所と短所を併せ持つことが明らかになっています。既存のLLMに記号知識と推論を統合することで、短期的な成果をある程度達成することは可能です。しかし、既存のLLMを高度な知識グラフや記号推論システムと統合しても、人間レベルのAGIを実現するには不十分である可能性が高いです。

AGIの研究開発における焦点は異なる可能性があります。Hyperonの開発においては、記号要素を持つLLMの強化に、メタグラフクエリに基づく外部書き込み可能メモリによるLLMの拡張などが考えられます。一方、LLMを含むDNNは、単独ではAGIやNarrow AGIではなく、反射、本能、スキルのような役割を持つ汎用的なNarrow AIと捉えることもできます。これらのDNNは、明示的な知識と推論ベースのエンジンによって制御され、他のアプローチや手法と統合されることで、真のAGIの実現に貢献する特殊なモジュールとして機能します。後者のアプローチにおいては、Hyperonの利用は非常に理にかなっていますが、同時に大きな課題も存在します。

AGI開発における重要な目標は、現実世界の状況に対処する能力を獲得することです。現実世界の状況は、自然言語では表現できない複雑さや多様性を含んでいます。Hyperonベースのアプローチでは、そのような状況の明示的な表現を学習することを想定しています。この表現は、現在の記号表現のように脆くはなく、ニューラルネットワークが学習する暗黙的な表現よりもはるかに構造化されたものでなければなりません。したがって、Hyperonにとっての2つの主要な課題は次のとおりです。

  • 知識メタグラフのスケーリング:少なくともLLMが処理する情報量と同程度までの知識メタグラフをスケーリングする必要があります。
  • シンボリックAIの脆さの軽減:シンボリックAI手法で時々見られる脆さを軽減する必要があります。この脆さは、手作業で作られた表現、ルール、アルゴリズムへの依存としばしば結びついています。

両方の課題を克服することは、おそらく異なるアプローチ、特にDNNとLLMが担う役割とNeural-Symbolic統合の型をそれぞれ変えることで可能になる可能性があります。ただし、最適なアプローチを選択することは、それ自体が別の課題となります。

3.3 特殊な空間と多様な役割

HyperonアプローチにおけるAGI開発の技術解説に戻ります。Hyperonには中核を担うメタ表現ハブであるAtomspaceメタグラフに加え、標準のRAM内Atomspaceを拡張するスペースAPIも備えています。このAPIを介して、分散パターン記憶と検索、効率的な並行実行、ニューラルネットワークのアトムとしてのシームレスな統合など、様々な機能を実現する特化型スペースの構築が可能となります。

HyperonとMeTTaが持つ多様な空間こそが、単なる理論的なフレームワークや研究ツールを超え、実世界のアプリケーションを支える基盤となる鍵となります。その柔軟性を活かし、自己修正型コードスープの作成からブロックチェーンにおけるスマートコントラクト言語としての利用まで、幅広い用途への適用が可能になります。近年におけるRAM容量の増大やプロセッサの高速化などのコンピュータハードウェアの進歩は、MeTTaをより多くのアプリケーションに適用することを現実的なものへと押し広げ、その可能性をさらに大きく広げていきます。

例として、複数のマシンにまたがって動作できる分散型アトムスペース(DAS)があります。このAtomspaceの変種は、MongoDBRedisを基盤とし、最新のNoSQLデータベース技術を活用することで、大規模な分散型アトムスペースを実現しています。

また、Rholang Atomspaceと呼ばれるものもあります。これは、MeTTaプログラムをRholang(ローラン)にコンパイルしたものです。Rholangは、マルチコアマシンやマルチスレッド機能を備えたコアなど、並行処理インフラ上で各種プログラムを効率的に実行することで知られる言語です。現在、GSIが開発した最先端のAPUアソシエイティブ・プロセッシング・ユニットチップ上でRholangを用いた実験が進行しています。Rholang Atomspaceを作成することで、MeTTaプログラムをRholangにコンパイルし、並行処理インフラ上で効率的に実行させることができます。これにより、効率的な並列処理、ブロックチェーン技術との統合、暗号化などの機能が利用できるようになります。

特殊なスペースを複数種類作成できる機能は、もう一つの重要な利点をもたらします。それは、Atomspace APIを介してニューラルネットワークと連携する能力です。つまり、大規模言語モデルやその他の深層ニューラルネットワークをAtomspace APIでラップし、それらに対してパターンマッチングを行うことができます。これにより、形式的なパターンマッチングクエリと、自然言語クエリやニューラルネットワーク内の活性化などとの間の変換を実現する橋渡し機能が構築されます。この結果、Hyperonシステム全体におけるニューラルローブ(神経葉)としての役割を果たす「ニューラルアトムスペース」と呼ばれるものが形成されます。一つのHyperonインスタンスには、異なる目的を持った様々なニューラルアーキテクチャを実装した複数のニューラルローブを持つことができ、これらのニューラルローブは、直接相互接続したり、デフォルトのAtomspaceなどの他のスペースをハブとして利用して連携することができます。

図2:HyperonのDASの高レベルアーキテクチャ

さらなる効率化とスケーラビリティの向上を目指した取り組みとして、特注ハードウェアと連携する試みがあります。それが、現在開発初期段階にあるOpenCogパターンマッチングチップです。SimuliとTrueAGIのコラボレーションにより開発が進められているこのチップは、ハードウェアの制約上APIに制限がある可能性はありますが、HyperonスタイルのパターンマッチングをサポートするオンチップAtomspaceを搭載するように設計されています。

3.3.1 分散型アトムスペース

Andre Luiz de Sennaは、OpenCogに先立つWebmind認知エンジンとNovamente認知エンジンの主要開発者の一人であり、OpenCog Atomspaceのオリジナルバージョンも開発しました。最近では、Hyperonの分散型アトムスペースの設計と開発を主導しています。(図2で簡略に描かれています) 彼はこの作業について次のようにまとめています。

分散型アトムスペース(DAS)は、OpenCog Hyperonが知識を表象および格納するために使用するハイパーグラフです。DASに格納されるべき知識の性質と量は、扱う領域や問題解決に用いられるAIアルゴリズムによって大きく異なりますが、AIエージェントは常にDASを知識源として、実行中に生成または達成された計算結果を格納するコンテナとして利用します。

AIエージェントにおいて、データ構造であるDASは中核的な役割を担っています。AIエージェントの実行中には、常にハイパーグラフの走査、ノードやリンクのプロパティに対する問い合わせ、サブグラフのマッチングといった操作が実行されます。さらに、エージェントが学習を進める過程で、ノード、リンク、サブグラフの新しい要素の追加、プロパティの変更、接続性の変更といった要求も発生します。これらの要件を満たすために、DASはハイパーグラフ要素に対する効率的なCRUD(作成、読み取り、更新、削除)操作を提供する柔軟性の高いAPIと、プロパティ、接続性、サブグラフのトポロジーなどを含む複雑なクエリを効率的に実行するための堅牢なインデックスシステムを備えている必要があります。

極めて大規模な知識ベースを扱う場合、柔軟で高速なAPIを維持することは大きな課題となります。そのためには永続的なバックエンドが必要とされます。スケーラブルなデータベースエンジンを使用することは一見シンプルなアプローチのように思えますが、DASが求めるような方法で知識ベースを表現と保存するためには、いくつかの問題に対処する必要があります。

最初に取り組む課題は、どのデータベースエンジンを使用するかという選択です。これは、Atomspaceの要素の中には、あるタイプのデータベースの方が表現しやすく、他の要素は別のタイプのデータベースの方が表現しやすいというように、適したデータベースが分かれていることが問題になるからです。クエリに必要なインデックスにも同様のことが言えます。各データベースエンジンは、ハッシュテーブル、正規表現に対応したテキストインデックス、地理空間インデックス、B木スキーマインデックスなど、非常に有用な特殊なインデックス型を提供していますが、すべてのデータベースエンジンがこれらすべてを提供しているわけではありません。

さらに、AI エージェントは特定の時点において、知識ベースの中で最も関連性の高い部分に集中し、ハイパーグラフの一部に焦点を当てながら他の部分を無視する能力が求められます。そのため、DASには階層的なキャッシュメカニズムが必要です。これは、最も関連性の高い情報をエージェントに近い場所(ローカルRAM)に保持し、現在アクティブに使用されていない情報は離れた場所(リモートストレージやディスク)に格納できる仕組みです。課題は、Atomspaceの知識ベースにおける独特な局所性概念が、従来のデータベースエンジンがキャッシュと負荷分散ポリシーを実装する際に前提としている時間的・空間的な概念とは異なる点にあります。この不一致は、OpenCog Hyperonの環境において著しい性能低下を引き起こす可能性があります。

最初の問題に対処するため、DASは永続化バックエンドで複数のデータベースエンジンを使用します。図2のように、これらのエンジンのAPIを抽象化し、利用可能なインデックスに応じてより適切なエンジンにリクエストをルーティングするレイヤーを実装しています。知識ベースの一部(例えば、ノードとリンクのプロパティ)はドキュメントデータベースでモデリングされ、他の部分(ハイパーグラフのトポロジー)はキーバリュー型データベースでモデリングされます。概念実証の実装ではMongoDBとRedisを使用していますが、他にも利用可能なデータベースエンジンが存在します。

永続レイヤーへの要求は、1つ以上のデータベースエンジンにルーティングされます。具体的には、特定のノードの流入集合にあるリンク(指向リンク)に関する要求はRedisにリダイレクトされ、名前が指定された正規表現に一致するノードに関する要求はMongoDBにリダイレクトされます。この選択は、各データベースエンジンが持つインデックスに基づいて、アトムDB内部で行われます。

DASは、MeTTaインタープリタ内で動作するローカルキャッシュを備えています。これは、ハイパーグラフの走査やサブグラフのパターンマッチングによって、アトムの作成、変更、検索を行うためのAPIを備えたAtomSpaceです。このAtomSpaceは、MeTTaプログラマーにとってAPI呼び出しが透過的に行われるように、インタープリタと統合されています。キャッシュポリシーは、実行時にサブグラフパターンを使用して定義され、アトムがローカルキャッシュからメインのDASサーバーへ、またはその逆方向にどのように移動するのかを決定します。

図2に示すように、DASの概念実証実装が開発されました。この実装は独立したコンポーネントとして作成され、Redisが3台、MongoDBが1台、DASが1台の計5台のサーバークラスタにデプロイされました。知識ベースには3億個のアトムが含まれており、ローカルで単純なAIアルゴリズムを実行した結果、典型的なクエリに対するレスポンスタイムは良好な結果が得られました。この成果を踏まえ、現在ではこの実装を実際のHyperonコンポーネントとしてMeTTaインタープリタに統合することを目指しています。具体的な計画は以下の通りです。

  • MeTTaインタプリタ内蔵のローカルキャッシュの実装:MeTTaインタプリタ内で動作するローカルキャッシュを実装します。このキャッシュポリシーは、関連するサブグラフパターンに基づいて動的に決定されます。
  • スケーラブルなデプロイメントアーキテクチャの実装:知識ベースのサイズとクエリ負荷に応じて、自動的にスケーリング可能なデプロイメントアーキテクチャを実装します。
  • アトムDBとデータベースエンジンの最適化:各データベースエンジンが提供するインデックスとクラスタリング機能を最大限に活用できるように、アトムDBとデータベースエンジンをチューニングします。
  • DASクエリエンジンの拡張:HyperonのAIエージェントが必要とする全てのクエリタイプをサポートするように、DASクエリエンジンを拡張します。

3.4. ブロックチェーン統合による分散型デプロイメント

適切なブロックチェーン技術を統合することで、Hyperonインスタンスを世界中の多くのマシンに分散させることができ、単一の所有者や中央管理者が不要になります。これは、関係者同士が完全な信頼関係を築いていなくても、異なるマシンで動作する複数のエージェント間で協調させることを可能にします。

ブロックチェーンインフラを活用する利点は多岐にわたります。これにより、分散型Hyperonシステムは、家庭用コンピューターやスマートフォンなどの空きリソース、専用ホームコンピューティングボックス、さらにはこれまで暗号通貨マイニングに使用されてきたサーバーファームなど、幅広いコンピューティングリソースを利用できるようになります。また、ブロックチェーンを活用することで、元々セキュアな設計となり、初期段階のAIシステムを訓練して学習させるためにデータを提供した、個人や組織の主権が尊重されます。さらに、このようなシステムへのハードウェア、データ、教育的インタラクションの提供を促進する、革新的なトークノミクスモデルも活用可能です。

ベン・ゲーツェルは、次のように述べています。分散型インフラの活用は、AGIが人間レベルに近づくにつれて、単一の勢力が強力なAGIシステムに対する独裁的な権力を握るリスクを低下させます。ここでの中核となる直感は、インターネットやLinuxオペレーティングシステムのような、分散型で参加者によって統治されるシステムは、現在のアメリカや中国のビッグテック企業などが提供する中央集権型のITシステムよりも、強力なAGIの調整と運用において、より優れたモデルを提供できるというものです。

現在、Hyperonアーキテクチャへの緊密な統合が計画されている主要な分散型ツールは以下の通りです。

  • SingularityNETプロトコル:分散型AIエージェント間の連携に使用されます。
  • NuNetプロトコル:AIエージェントの集団間での分散型コンピューティングリソースの使用を調整する分散型プロトコルです。
  • Hypercycleレジャーレスブロックチェーンプロトコル:分散型ソフトウェアプロセス間の安全でスケーラブルな分散型通信を実現します。
  • Rholang言語:分散型ネットワーク上でスマートコントラクトを効率的に実行する機能を備えています。

Hyperon自体は、これらのツールが一つもなくても完全に機能させることができます。ただし、その場合、従来通りの方法で集中型サーバーファームにデプロイする必要があり、セキュリティはファイアウォールなどの従来の仕組みで確保することになります。また、部分的に異なる個人や組織が所有する、統合認知ネットワークを運用するのは難しくなります。

Rholangには、Hyperonにおけて特別な役割があります。具体的には、MeTTaスクリプトの安全な分散実行を可能にすることと、並列処理のインフラ上でMeTTaスクリプトを効率的に実行することの二つの用途があります。

SingularityNETの最高製品責任者であるJan Horlingsは、これらの様々なツールがもたらす付加価値を次のようにまとめています。本質的に、SingularityNETプラットフォームはAIサービスの流通チャネルとして機能し、あらゆるAI手法の開発者がトラストレスな環境でAPIコールを収益化できるようにします。公開後は、誰でも自由にAPIコールを開始でき、開発者は成功した呼び出しに応じてAGIXトークンを獲得できます。追加的な負担は一切ありません。Hyperonは、このプラットフォーム上で多くの小規模で特化したAIサービスや知識グラフと並んで、極めて高度な汎用AIサービスとして存在することになります。

Hyperonのプラットフォーム上では、LLM、ECAN、PLN、SISTERなどの高度に統合されたAI戦略や機能を提供します。しかし、Hyperonフレームワークは、さらに多くのサービスを統合する機会も提供します。この分散型プラットフォームは、Hyperonの機能拡張に参加したい開発者や組織にその機会を提供します。言い換えると、Hyperonとの統合により、独自のサービスを拡張することも可能なのです。

プラットフォーム上でサービスとHyperon間のダイナミックな連携を可能にする重要な要素が「AI-DSL」と呼ばれるものです。これは高度なインテリジェントサービスオーケストレーターであり、各サービスの入力、出力、目的だけでなく、多面的な評価スコアのようなその他の属性も認識します。AI-DSLは、利用可能なサービスとユーザーリクエストに基づいて、アドホックなワークフローを自動的に作成することができます。さらに、AI-DSLをLLMで強化することで、AIユーザーは自然言語でプラットフォームに指示を出すことが可能になります。このプラットフォームアシスタントは、ユースケースやユーザーのニーズに応じて、速度、コスト、品質などの最適なサービスと、望ましい結果に到達するための最適なシーケンスを見つけ出します。

言い換えると、Hyperonがプラットフォーム上で十分に成熟した段階になれば、プラットフォームアシスタント(AI-DSL)は、Hyperonやプラットフォーム上のその他の専用サービスへのユーザーインターフェースとして機能するようになります。もちろん、専用サービスやHyperonをプラットフォーム上で実行させる方法はこれだけではありません。あらゆる種類のツールやアプリケーションは、Hyperonや特定のサービスと直接連携することもできますし、APIベースのAI-DSLを活用して、プラットフォーム上のAIサービスエコシステムを継続的に監視し、特定のタイミングで最適なシーケンスを導き出すこともできます。

このようにして、プラットフォームはHyperonをオープンで完全に分散化されたエコシステムにしっかりと組み込みます。このエコシステムは、潜在的に非常に多様なナレッジグラフとAIサービスで構成されており、開発者コミュニティ全体がHyperonの中核機能の貢献と強化を可能にします。同様に、誰でもHyperonに接続し、その成長する可能性から恩恵を受けることができます

Hyperonをこれらの分散志向ツールと統合する基本的な戦略は比較的単純です。各DASコンポーネントと各ローカルAtomspace(結合されたMeTTaインタープリタを含む)は、SingularityNETエージェントとして扱われ、それらはHypercycleのAIマシンコンテナにラップされます。このコンテナは、そのデプロイメントとオーケストレーションを管理するNuNetノードと関連付けられます。これらのHyperonエージェントで実行されるMeTTaスクリプトは、ネットワーク上の他のエージェントと通信する必要がある場合、Rholangにコンパイルされ、RholangのHyperCycleとの統合機能を使用して、他のエージェントとの安全なメッセージングを実現します。

図3:SingularityNETプラットフォームに関する主要な開発イニシアチブの一部のラフな暫定ロードマップ

これらすべての実装には、もちろん多くの複雑な側面が関与し、2023年から2025年にかけて、各種関連するツールがアルファ版からベータ版、そして本番稼働版へと段階的に移行していく中で、徐々に進められていくことになります。SingularityNETエコシステムのインフラツールも、Hyperonの成熟に合わせて急速に構築されています。2024年のSingularityNETプラットフォームの戦略は、図3に示唆されているように、特定のドメインをカバーする知識グラフの分散型ホスティングと活用(LLM、初期のHyperonバージョン、その他のAIツール内)に焦点を当てており、Hyperonが成熟していくにつれて、分散型Hyperonインスタンスへの「プラグイン」としての役割を果たすAIサービスの分散ホスティングとの相互接続に焦点を移していきます。シンギュラリティネット財団から派生した垂直市場特化のプロジェクト、DeFi領域のSingularityDAO、長寿領域のRejuve Network、メディア領域のMindplexなどは、SingularityNET、Hyperon、NuNetインフラ上で適切なHyperonプラグインエージェントを提供することで、それぞれのビジネスモデルの一部を実現していく予定です。

3.5 MeTTaをRholangにコンパイルして迅速かつ安全な分散実行を実現する

Hyperonのインフラと形式主義におけるもう一つの革新的な取り組みは、MeTTaをRholang(ローラン)言語にコンパイルする進行中のプロジェクトです。このプロジェクトは、以下の2つの目的を達成することを目指しています。

  • 適切なハードウェア上でMeTTaプログラムの効率的な並列実行を可能にすること
  • MeTTaをHyperCycleのレジャーレスブロックチェーン(および潜在的には他のチェーン)のスマートコントラクト言語として使用できるようにすること

後者のアプリケーションであるスマートコントラクト言語へのMeTTa適用は、必ずしもAGI言語としての利用と密接に関係するわけではありません。前述の通り、MeTTaプログラミング言語は、AGI領域を超えて幅広い分野で活用できます。独自の利点や特性を持つMeTTaを用いて、台帳なしのDeFiにおけるスマートコントラクトを作成することは、AGIやAIの有無に関わらず理にかなっています。なぜなら、MeTTaは形式的検証と効率的な実行に適しており、どちらもDeFi分野において重要視される要素だからです。

しかしながら、Hyperonシステム内でMeTTaをAIスクリプトやAI生成コードの記述に利用しつつ、同時にHyperCycleネットワークのスクリプト操作にも用いる二重の使用方法には、明らかな相乗効果の可能性が秘められています。このアプローチは、分散型ネットワークレベルで、大量の出現知能を備えた分散型AIシステムの開発に大きな可能性をもたらします。

MeTTaとRholangのインターフェースプロジェクトは、SingularityNET、Hyperon、Lucius Greg Meredith、および彼が以前携わっていたRChainプロジェクトの後継にあたるF1REFL3Yとの共同作業で進められています。RChainは、革新的なブロックチェーン技術を開発しました。その中心となるのが、Rholangスマートコントラクト言語です。Rholangは、Meredithが考案した「ロー計算(ρ計算)」と呼ばれる数学体系の構文フロントエンドであり、並行計算プロセスの形式化において新たな領域を切り拓く革新的なものです。

図4:HyperonアーキテクチャにおけるMeTTaとRholangの制御フローの高レベルの描写

Rholangは、分散環境や並列ハードウェア上で安全かつ効率的に実行できるという、注目すべき特性を持っています。2023年、Meredithとそのチームは、MeTTaからRholangへのソースコード変換コンパイラを開発しました。このコンパイラの目的は、MeTTaから生成されたコードにRholangが持つ並行性とセキュリティの利点を付与することです。

Meredithは、この取り組みのいくつかの重要ポイントを次のようにまとめています。AIを分散化させるのであれば、ブロックチェーンの特性を多く取り入れる必要があります。特に、LLMや定理証明機など、何らかのAIリソースを実行するノードは、DoS攻撃に耐性を持たせる必要があります。同様に、そのようなリソースで構成されるネットワークは、ネットワーク内の1つのノードの障害に耐性を持たせる必要があります。これが、SingularityNETのMeTTa言語をF1R3FLY.ioのRNodeに統合する動機の一つです。

図5:分散型Rholangプログラムを安全に評価するためのRNodeネットワークの概略図。
これらのRNodeは、Hypercycleを含む複数のブロックチェーンインフラと連携して動作する可能性があります。

もう一つの理由はパフォーマンスです。現時点のRNodeは、1ノードあたりの1プロセッサで約1,000トランザクション/秒(tps)のスループットを実現しています。ここで言うトランザクションは、データ提供者からデータ利用者にデータがコミットされ、永続的に通信されることを指します。この実行モデルは、RSpaceと呼ばれる革新的なキーバリュー型データベース(KVDB)を用いて実装されています。RSpaceの大きな特徴は、データだけでなく、処理が中断した時点の情報(継続状態)もキーとして格納される点にあります。実行メカニズムは、Rholangと呼ばれるスマートコントラクトプログラミング言語で記述されています。MeTTa2Rhoコンパイラは、MeTTa言語をRholangに変換するプログラムです。このコンパイラを使用することで、MeTTaの実行はネットワークにノードとプロセッサが追加されるにつれてスケールし、Rholangも同様にスケーラブルになります。しかし、MeTTaをRholangにコンパイルするメリットはスケーリングだけにとどまりません。

具体的には、RNodeネットワークはすべてCBC-Casperと呼ばれるコンセンサスアルゴリズムに基づいて動作しています。これにより、すべてのノードが同じ実行状態のコピーを持ち、その結果、1つまたは複数のノードが障害を起こしても、ネットワークは動作を継続できます。さらに、あるノードがRholangを実行するためには、クライアントがネットワークに紐づけられたトークンを使用し、計算とストレージリソースに対する費用を支払う必要があります。これは、必然的に発生するDoS攻撃に対する予防策となります。

図4は、この処理の流れを概説しています。Meredithは、次のように説明しています。図のように、MeTTaクライアント(人間ユーザーまたは計算エージェント)は、正当なMeTTaプログラムをシステムに送信します。このバージョンでは、最初にゲートウェイを経由してネットワーク内のノードに転送されることを想定しています。しかし、ユーザーがプログラムを直接ノードに送信することも問題ありません。これらのノードは、MeTTa2RHOコンパイラを搭載した改良型RNodeです。コンパイラは、MeTTaプログラムをRholangに変換し、その後ノード上で実行されます。

本番環境での実装では、実行によって生成された実行ログは、ネットワーク内の他のすべてのノードによって検証されます。結果があれば、検証フェーズの終了後に安全にユーザーへ送信するか、楽観的に(検証を待たずに)ターゲットノードによるrholang実行の終了時に送信することができます。

図5は、RNodeネットワークの概要を大まかに示しています。Meredithによると、RNodeネットワーク (シャードと呼ばれることも多い)は、世界各地に分散配置されたノードで構成されます。具体的には、AWS 米国西部リージョン、Google Cloud 英国リージョン、IBM Cloud EUなどにノードが配置されています。これらのノードは、KademliaとCBC-Casperを組み合わせた仕組みで相互接続されています。クライアントは、実行要求に署名します。この署名は、実行に必要な計算とストレージに関連するトークンを持つウォレットを特定するために使用されます。

MeTTaからRholangへのコンパイラについては、論文『Meta-MeTTa:An operational semantics for MeTTa』で詳しく解説されています。詳細は複雑ですが、基本的な仕組みは比較的シンプルです。具体的には、MeTTaのセマンティクスはレジスタマシンで表現されており、このレジスタマシンは、「Correctness-by-Construction(CbC)」と呼ばれる設計パターンを用いることで、Rholangに容易にコンパイルできます。

このコンパイラを作成するプロセスは、MeTTa自体の機能セットを形作る上でも貴重なものでした。 具体的には、以下の2つの機能が追加されています。

  • シールド化された項:将来のMeTTaバージョンでは、望ましくない情報漏洩を防ぐため、外部からの調査によるシールド化された項の保護手段がサポートされます。
  • 包括 (Comprehensions):将来のMeTTaバージョンでは、信頼境界を越えたリソースとの安全な通信を可能にするため、包括と呼ばれる概念がサポートされます。

これらの機能は、いずれもF1REFL3Yとのコラボレーションの結果としてMeTTaに追加されたものであり、どちらもスマートコントラクトアプリケーション以外の分野でも有用な可能性を秘めています。例えば、包括はMeTTaレベルでPLNのセマンティクスを簡単に表現する方法を提供します。

3.6 認知型AGI研究開発プラットフォームの必要性

Hyperonプラットフォームのアーキテクチャを構築する過程では、多くの困難で複雑な選択を迫られました。現在のHyperonシステムが唯一の有効なアプローチだと主張するつもりは全くありません。しかしながら、現在存在する他のシステムや、我々が把握している開発中のシステムと比較検討した結果、Hyperonには大きな利点があると確信しています。Alexey Potapovは、現在のAI分野の進化段階において、認知型AGI研究開発プラットフォームの必要性を強調しています。まず、彼は関連するLLMの限界を以下のように要約しています。

ここ10年間、深層学習は様々な分野で画期的な成果を上げてきました。最近のLLMの成果は、AGIの実現への近道となり得るのではないかと思わせるほどです。しかしながら、LLMには記憶や世界モデルの欠如といった明白な限界があり、これらの限界を克服すべく、ニューロシンボリック統合によるシンボリック手法の活用が進められています。

ChatGPTやLLaMAのようなLLM上には、Langchain、AutoGPT、Voyagerなど、多数のラッパーが存在します。これらは、専用ソフトウェアとして、命令型プログラミング言語で書かれており、LLMを制御するためのさまざまな手法を実装しています。しかし、相互運用性がないという課題があります。このようなラッパーが必要とされるのは、LLMが一種の「言語反射」と呼ばれる仕組みを持つためです。言語反射とは、あらかじめ定められたパターンに基づいて入力に対して自動的に出力を生成する仕組みです。LLMはこの言語反射の性質を持つため、特定の実用アプリケーションにおいて、シンボリックな制御によって精度や効率を向上させることができます。

LLMをAGIの候補として考えてみましょう。LLMにチェスをプレイさせたいとします。LLMはどのようにプレイするでしょうか?最善を尽くしても、外部プログラムであるMuZeroへの呼び出しを生成するだけでしょう。しかし、LLMはMuZeroを一手一手制御できるでしょうか?答えはノーです。LLMは現在のチェス盤上の状況を把握できません。さらに、LLMに単にチェスをプレイさせるだけでなく、ルークでチェックメイトを達成するよう指示した場合、LLMはこの情報をどのようにしてMuZeroに伝えることができるでしょうか?そもそもMuZeroは、そのような情報を独自に考慮することができるでしょうか?答えは、何らかの変更や再訓練なしでは不可能です。

次に、LLMに2つの盤面で同時にプレイさせ、同じターンに両方の盤面で同じ種類の駒を使うように指示してみましょう。LLMはそれぞれのターンで2つのMuZeroを連携させる必要があるでしょうか?答えはイエスですが、LLMは現状それができません。LLMはゲーム状況やMuZero内部の処理について何も理解していないため、連携させることができません。このようなことをAGIシステムが行うためには、言語を含む世界のさまざまな側面を共有表現し、それに基づいた統合的な意思決定プロセスや行動選択プロセスが必要となります。

深層学習の支持者は、膨大な実世界のデータをすべて用いて巨大なDNNを訓練すれば、データから世界表現とその利用戦略を同時に学習できると主張するでしょう。その実現可能性はさておき、しかし、現時点で利用可能な計算リソースやデータ量を遥かに超える規模のアプローチです。一方、ニューロシンボリック認知アーキテクチャにおけるシンボリック系の能力は、まだ十分に活用されておらず、探求の余地が大いに残されています。

LLMは既に、異なるパラダイムのAI手法を統合するための簡易的なハブとして活用され始めています。これらの手法は、それぞれ異なる思考様式に基づいており、LLMプラグインとして実装されています。しかし、プロンプトと呼ばれる手法によるブラックボックス的な浅い統合には限界があります。より認知的に豊かなアーキテクチャであれば、異なるAIパラダイムの手法をより巧妙かつ強力に組み合わせることが可能になります。Potapovは、「AIにおける様々なパラダイムや手法は偶然生まれたのではありません。それぞれに長所と短所があり、問題解決に適しています。LLMもまた、異なる外部ツールとの迅速な統合が進んでいます。なぜなら、異なる分野の問題解決には、それぞれ適した手段を用いる方が効率的だからです」と指摘しています。

Hyperonは、異なるパラダイム間の完全な相互運用を目指しています。そのコアとなる操作は、ストレージから情報を汎用的に取得することです。この操作は、(メタ)グラフ知識ベースへのクエリ、関数型プログラミングにおけるパターンマッチング、論理推論における統一、さらにはTransformerネットワークやその他のニューラルモジュールにおけるアテンションヘッドによる処理までを網羅します。このような操作を連鎖させることで、チューリング完全な言語を構築することができ、これは「認知アセンブラ」として機能し、宣言型と手続き型、エピソード記憶と意味記憶、そしてそれらにおける様々な情報処理形式を実装するための汎用的なアプローチとなります。

異なるタイプのストレージを同時に使用し、それらへのクエリを複合的に組み合わせることも可能です。デフォルトでは、シンボリッククエリを備えたメタグラフ知識ベースであるAtomspaceが使用されますが、Atomspaceはサブシンボリックなアトムも含むことができます。しかし、超高次元ベクトル、グラフ埋め込み、アテンションメカニズム、または単なるプロンプトベースのクエリングに基づく完全なニューラル空間も使用できます。クエリの連鎖は、空間(認知的観点からの記憶)自体の内容によって記述されており、空間を任意の方法で実装し、学習することも可能にします。その結果、宣言的推論の様々なストラテジーだけでなく、確率的プログラミング、遺伝的プログラミング、ニューラルモジュールネットワークなどの他の推論ストラテジーを実装して組み合わせることができます。例えば、ニューラルモジュールネットワークは、シンボリック推論、またはそれ自体によってその場で組み立てられることもでき、宣言的推論はシンボリックな実装にすることもニューラルな実装にすることもできます。

Hyperonでは、いくつかの具体的なアイデアやAGI理論をモジュールとして実装することを想定していますが、AGIの研究開発は依然として広範な分野です。Hyperonは、まさにそのようなAGIの研究開発のためのプラットフォームであり、異なるパラダイム、アプローチ、手法間の認知的シナジーに焦点を当てています。この点で、特定の理論を中心に構築され、その理論の枠を超えたAGIの研究開発には使いづらい従来のプロトAGIシステムとは一線を画します。

Hyperonは、強力なシンボリック表現とニューラルネットワークを組み合わせた、複数のパラダイム間で相互運用可能なコンポーネントを段階的に開発することを可能にします。これは、従来のDNN中心のアプローチが弱いシンボリック表現しか活用しておらず、高度なシンボリックシステムはDNNと浅いレベルで統合されていたりするのとは対照的です。Hyperonは、単なる研究やプロトタイピングのためのプラットフォームではなく、具体的なAGIシステム開発のための有望なフレームワークにもなります。もし、複数のパラダイムを統合するアプローチが単一のパラダイムよりも効率的であることが証明されれば、Hyperonは今後をリードするAGIプラットフォームとなる可能性を秘めています。

<後編へ続く>

カルダノステークプール【OBS】

暗号通貨革命では、カルダノステークプール(ティッカー:OBS)を運営すると共に、皆様に役立つ有益な情報を無償で提供して行きます。ADAステーキングを通しての長期的なメディア&プール支援のご協力の程、何卒よろしくお願い致します。

この記事が気に入ったら
いいね ! しよう

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA