paint-brush
AI における Rho 微積分の事例@f1r3flyceo
2,508 測定値
2,508 測定値

AI における Rho 微積分の事例

Lucius Meredith13m2023/02/03
Read on Terminal Reader

長すぎる; 読むには

心の理論は、計算の特定のモデルが私たちの脳のアーキテクチャに定着したことを示していますか?
featured image - AI における Rho 微積分の事例
Lucius Meredith HackerNoon profile picture


脳の植民地化としての意識

この世代で最も独創的な思想家の 1 人であるJoscha Bachとの最近の会話で、彼は、モバイルの同時実行性は汎用人工知能と相いれないという驚くべき主張をしました。このコンテキストでは、モバイルの同時実行性とは、エージェント (計算プロセスとも呼ばれます) がお互いを発見できるときに見つけられる一種の同時実行性を意味し、通信トポロジー (誰が誰を認識し、誰が誰と話しているか) が進化しています。このモデルは、計算要素がマザーボード上のコンポーネントのようにはんだ付けされているモデルとは大きく異なります。モバイルの同時実行性は、初めて会ったばかりの人々が互いの Web サイト、電子メール アドレス、および電話番号を学習するインターネットまたは電話ネットワークに似ています。 Joscha の主張は、脳は可塑性にすぎない、つまり、ニューロン間の接続は学習中にのみ変化し、一般的な計算中には変化しないというものです。


彼の世代で最も独創的な思想家の 1 人であるJoscha Bachは、モバイルの同時実行性は汎用人工知能と相いれないという驚くべき主張をしました。


この命題に対する私の回答は、脳のハードウェア上で実行される計算の論理モデルに精神がホストされていないことを前提としているということです。結局のところ、 Java 仮想マシン(JVM) は、それが実行されるハードウェアとはまったく異なる計算モデルです。 Haskellの計算モデルは、輝かしい Haskell コンパイラ ( GHC ) が通常ホストされているハードウェアで具現化されているものよりも、さらに劇的な計算の考え方のバリエーションです。なぜ心はこのように組織化されないのでしょうか? Joscha のグラフィック メタファーを使用するために、脳のハードウェア上でそれ自体をホストする植民地化する計算モデルとして心が発生しないのはなぜでしょうか?もしそうなら、ロー計算の実装であるrholangは、最初はIntelとAMDのチップでホストされており、それらの計算モデルは、ロー計算によってキャプチャされたモデルとは大きく異なります。


特に、 rho-calculusは、モバイルの並行計算を直接サポートしています。ロー計算で実行されるプロセスの社会の間の通信トポロジーは動的です。この社会で誰が誰を知っていて、誰と話せるかは、計算の過程で変化します。ロー計算についてのこのような考え方は、ロー計算のようなモデルが人間の脳のハードウェアにホストされ、そのハードウェアにコロニーを形成した可能性があるという非常に正当な理由があるという私の主張を予見します。心の理論。


コード、データ、計算

この議論を行うために、すべてのコンピューター科学者、ましてやすべての開発者が行うわけではないいくつかの区別をしたいと思います。私はコード、データ、計算を区別しています。任意のコードは、何らかのデータとして扱うことができます。これは、計算モデルが表現またはホストされる、ある種のデータ構造のインスタンスです。たとえば、 Haskellのようなチューリング完全な計算モデルを、文脈自由文法 (整形式の Haskell プログラムの文法など) を介して表現される用語言語でホストできます。しかし、文脈自由文法はチューリング完全ではないことがわかっています。どうすればいいの?チューリング完全モデルより表現力が低いことが証明されているものが、チューリング完全計算をどのように表現できるのでしょうか?


UnsplashのWalkatorによる写真



これは、構文とセマンティクスの違いの核心を突いています。言語という用語の文法は、計算のダイナミクス、つまりコードの意味論ではなく、プログラムの構文を表します。代わりに、計算のダイナミクスは、(構文上で動作する) 規則と、実行したい計算を表す特定の構文、つまり何らかのコードとの相互作用によって発生します。ラムダ計算 (Haskell の基礎となる計算モデル) では、計算の主力はベータ削減と呼ばれる規則です。このルールは、コード内で発生する変数をデータで置き換えるという行為を通じて、データに対する関数の操作を表します。それが操作するデータは、データへの関数の適用の構文表現ですが、データへの関数の適用に対応する計算ではありません。その計算は、ベータ削減が構文で動作し、それを新しい構文に変換するときに行われます。この違いは、チューリング完全よりも表現力の低いモデル (たとえば、文脈自由文法) がチューリング完全計算をホストできる方法です。


チューリング完全モデルより表現力が低いことが証明されているものが、チューリング完全計算をどのように表現できるのでしょうか?これは、構文と意味論の区別の核心に切り込みます。言語という用語の文法は、計算のダイナミクス、つまりコードの意味論ではなく、プログラムの構文を表現します。


余計なことは言いませんが、Java と JVM でも同じ違いがあります。 JVM での計算のダイナミクスは、仮想マシン内のレジスタとコードの表現の組み合わせで動作するルールによって発生します。 Java コードの一部を見つめている Java プログラマーは、計算を見ているわけではありません。それからはほど遠い。 Java プログラムの構文は、コード実行時の JVM のレジスターの状態に応じて発生する可能性のあるさまざまな計算の全範囲へのウィンドウです。これら 2 つの評価形式の違い、ラムダ計算におけるベータ削減と JVM の遷移の違いは非常に重要であり、それについては後で説明します。


ただし、現時点では、コードと計算のこの区別について考える 1 つの方法は、物理学との類推によるものです。従来、物理法則は次の 3 つの要素で表現されていました。物理状態の表現 (これをプログラムの構文と考えてください)、状態が時間の経過とともにどのように変化するかを示す運動の法則 (これを構文に作用する規則と考えてください)。 ;初期条件 (これは、実行したい特定のコードと考えてください)。この観点から、物理学は、私たちの観察に基づいて物理世界が進化する方法に特定の方法で対応する実行が特定の目的のプログラミング言語と見なされます。物理学は、プログラムを実行して、運動の法則を介して到達する状態への初期状態の進化が観察と一致するかどうかを確認できるため、テスト可能です。特に、私たちが最初の状態に一致する構成で物理的な世界を見るとき、それは私たちの運動の法則が言うことと一致する進化のプロセスを経て、私たちの運動の法則が言う状態に着陸しますか?そうすべき?物理学がこの形をしているという事実が、コードで効果的に表現できる理由です。


物理学のアナロジーは、ラムダ計算、π計算、またはロー計算のような計算モデルを、JVM の遷移のようなモデルに対して完全に緩和します。 Java コードの一部をじっと見つめているとき、それがどのように動作するかを理解するために必要なすべての情報を持っているわけではありません。 JVM の状態に応じて、同じ Java コードの動作が大きく異なる場合があります。対照的に、上記の計算計算は形式と機能を結びつけます。表現で見るものは、あなたが得るものです。物理学の観点から、科学者としてリバース エンジニアリングを行う必要があるのは、運動の法則、つまり計算の法則だけです。隠れた状態の束を推測する必要はありません。


コードと計算の違いがわかれば、コードとデータの違いはやや微妙ではありますが、比較的直感的になります。コンピュータプログラムのデータも単なる構文です。この意味では、これも単なる構文であるコードと同じです。すべての Lisp プログラマーは、どういうわけかコードはデータであり、データはコードであるという考えを理解しています。 Java でさえ、Java コードを Java オブジェクトとして操作できる一種のメタプログラミングをサポートしています。問題は、コードとデータの間に実際の境界線があるかどうかです。


答えは決定的なイエスです。データは非常に特殊なプロパティを持つコードです。たとえば、コードは常に確実に終了するまで実行されます。すべてのコードがこれを行うわけではありません。実際、チューリングのEntscheidungsproblemの有名な解決策は、特定の品質の表現力、つまりチューリング完全性を享受する言語では、プログラムがいつ停止するかを一般に知ることができないことを示しています。しかし、表現力の低い言語もあり、チューリング完全言語は、言語全体よりも表現力の低い適切なサブ言語またはフラグメントを楽しんでいます。データは、構文に関連付けられた計算が停止することを証明できる構文に存在します。同様に、データは、計算が有限分岐のみを享受することを証明できる構文に存在します。


プログラマーはデータについてこのように考えません。彼らはデータを見たときにそれを知っているだけです。しかし、組み込みのデータ型を備えていないラムダ計算のような計算モデルでは、カウント数や真偽のブール値など、すべてがコードとして表現されます。どのコードがデータを構成し、どのコードが汎用プログラムを構成するかを選択することは、コードが上で説明した種類のプロパティをいつ持つかを検出できることに関係しています。一般に、このようなプロパティを検出できるシステムの種類があります。繰り返しますが、これは微妙な問題ですが、幸いなことに、すべての微妙な点を理解する必要はなく、データとコードの間の境界線がどこにあるかを正確に理解する必要もありません。

要約すると、コードとデータはどちらも、1 つまたは複数のルールが動作する状態を表す単なる構文です。データは、コードよりも表現力の低い構文の断片で表現されるため、コードが常に享受できるとは限らない明確なまたは限定的な特徴をデータに与えます。計算は、いくつかのルールが状態の表現と相互作用するときに発生する進化のプロセスです。では、これらすべてが AI や心、さらにはロー計算と何の関係があるのでしょうか?


知性を定義する特性としての内省

rho-calculus には、計算とコードの区別の構文表現があります。計算をコードの一部としてパッケージ化して操作できるように表現し、新しいコードに変換する操作があります。また、コードの一部を計算に戻す操作もあります。おっと、それは次のレベルのたわごとだと言うかもしれません。しかし、前述したように、Lisp プログラマーと Java プログラマーは、この種のメタプログラミングを長い間行ってきました。彼らはしないといけない。その理由はスケールに関係しています。自動化されたサポートなしに、人間のチームが何百万行ものコードを含むコードベースを管理することは不可能です。彼らはコンピュータープログラムを使ってコンピュータープログラムを書きます。彼らは、コンピューター プログラムを使用して、コンピューター プログラムの展開を構築します。メタプログラミングは、今日の世界では必要です。


スミスの主張は、心自身のプロセスを見る心の能力である内省は、知性の重要な特徴であるということです。一部の人にとっては、これが知性の決定的な特徴でさえあります。


しかし 1980 年代、まだ AI の黎明期だった頃、 Brian Cantwell Smithという研究者が、私だけでなく AI や AI に関連する分野の多くの人々の共感を呼んだ観察を行いました。スミスの主張は、心自身のプロセスを見る心の能力である内省は、知性の重要な特徴であるということです.一部の人にとっては、これが知性の決定的な特徴でさえあります。この内省のアイデアを具体化するために、Smithは 3-Lisp と呼ばれるプログラミング言語を設計しました。この言語には、rho-calculus と同じ演算子があります。具体的には、3-Lisp には、計算をコードに具体化することを表す構文と、実行中の計算にコードを反映させるための構文があります。


さて、今日の開発者が直面している規模の問題と、私たちの内省的で内省的な能力を論理的な存在としてモデル化する問題との間に関連があると疑うのに十分な理由があります。特に、私たち自身の推論を表現する複雑さを管理することは、計算反射の存在下で扱いやすくなります。より良い推論を得るために、すべてのアルゴリズムのトリックを自分自身の推論の表現に適用できます。この観察結果は、進化生物学者が心の理論と呼んでいるものの文脈で増幅されます。


具体的には、内省は、他の人、特に自分の種のメンバーの行動をコンピューターでモデル化できることによって得られる進化上の利点から生じます。アリスがバーバラの行動をモデル化する能力を発達させ、バーバラがアリスに非常に似ている場合 (同じ種、同じ部族、さらには同じ大家族構造など)、アリスはアリスの行動をモデル化できるようになります。また、バーバラがアリスと対話しているときにアリスがバーバラの動作をモデル化する必要がある場合、アリスはアリスの動作のモデル化に直接関与します。これを、アリスが自分の家族単位または部族の行動をモデル化できる規模にまで引き上げると、物事は本当に興味深いものになります。これについては後ほど詳しく説明しますが、今のところ、計算リフレクションについては、その言葉の 2 つの意味で大規模な推論を改善することに関係があることがわかります。(複雑さのスケール) 推論をそれ自体に適用することによる推論の改善、および (社会的スケール) ) 多数の推論エージェントに関する推論の改善。


実際、コンピューターの反射と、知性とプログラミング言語の設計におけるその役割に関するスミスの考えは、原始的な計算演算子として具象化と反射を取るロー計算の設計のインスピレーションでした。しかし、3-Lisp と rho-calculus の部分の会社は、3-Lisp が明らかに逐次的であるということです。相互作用し、調整しながら独立して実行される自律的な計算プロセスの社会を合理的に表現する方法はありません。しかし、心の理論の文脈では、これはまさに推論者が行う必要があることです.彼らは、コミュニケーションと調整を行いながら独立して行動する自律的なエージェントで構成される、社会的状況の明示的なモデルを必要としています。


Rho計算: 3-LispからSociety of Mindへ

スミスが計算反射のアイデアを開発していたのとほぼ同時期に、マービン・ミンスキーは有名な「心の社会」の論文を開発していました。ミンスキーの提案に対する私の見解は、心は米国議会やその他の審議機関のようなものだということです。それは、さまざまなリソース(課税ベースからの資金提供など)を求めて争っている独立したエージェントの集まりで構成されています。私たちが意識的な決定として考えていることは、多くの場合、意識的な経験のはるか下で行われる、独立した自律的なエージェントの群れの間での長い審議プロセスの結果に似ています。しかし、審議プロセスは拘束力のある投票をもたらし、その拘束力のある投票は意識的な決定として経験されるものです.


UnsplashのSimon Kadulaによる写真


計算の大部分を意識的な推論の外に置くこの見解は、本質的に、実際に定義的に反射的であるという精神の見解とどのように調和することができますか? rho-calculus は、この質問に対する答えを念頭に置いて設計されました。


rho-calculus によると、計算エージェントは 6 つの形しかない:


  • 0 - 何もしない停止済みまたは null のエージェント。
  • for( y <- x )P - エージェント P になる前に、変数 y にバインドされるデータを待機しているチャネル x でリッスンしているエージェント。
  • x!( Q ) - チャネル x でコード/データを送信しているエージェント。
  • P|Q - 実際には 2 つのエージェント P と Q の並列構成であり、同時に自律的に実行されるエージェント。
  • *x - x によって参照されるコードを実行中の計算に反映しているエージェント


これらの構文のうち 3 つが記号 x をどのように使用しているかに注目してください。そのうちの 2 つは x をエージェント間の通信チャネルであるかのように使用し、そのうちの 1 つは x をコードへの参照であるかのように使用します。 rho-calculus が秘めている 1 つの魔法のトリックは、チャネルがコードの一部への参照であるということです。慣れるまで少し時間がかかりますが、それは時間とともにやってきます。


アリスの社会的文脈の外側の観察者として、私たちはその行動を各個人の行動の並行構成として書き留めることができます. P1 | P2 | … | Pn ここで、Pi はアリスの社会的文脈における i 番目の個人のモデルです。ここで、アリスの行動のモデルには、彼女自身の行動がそれについての推論を表すために、その並列構成の表現が必要です。 @( P1 | P2 | … | Pn ) のシンボルで。


ロー計算に関するこれだけの情報を武器に、アリスについての物語に戻り、彼女が直面している社会的知性と内省的知性を発達させるすべての課題の倹約的な表現を見つけることができます。アリスの社会的文脈の外側の観察者として、私たちはアリスの行動を各個人の行動の並行構成として書き留めることができます。シンボルでは、それは P1 |です。 P2 | … | Pn、Pi はアリスの社会的文脈における i 番目の個人のモデルです。ここで、アリスの行動のモデルには、彼女自身の行動がそれについての推論を表すために、その並列構成の表現が必要です。 @( P1 | P2 | … | Pn ) のシンボルで。アリスがアクセスできる場所にこのデータを配置するために、彼女はモデルをチャネル x!( P1 | P2 | … | Pn ) に配置し、取得する必要がある場合は実行します。


for( y <- x )AliceThinkingAboutHerColleagues( y ) | x!( P1 | P2 | … | Pn )


ラムダ計算のベータ還元と精神的に非常に似ているロー計算の計算の主力ルールは、このような式が次のように発展することです。


AliceThinkingAboutHerColleagues( @( P1 | P2 | … | Pn ) )


これで、同僚に対するアリスの考えは、アリスが利用できる同僚の行動を明示的に表したものになりました。それを使用して、彼女は P1 の動作をシミュレートすることによって、同僚の動作をシミュレートできます。 P2 | ... | @( P1 | P2 | ... | Pn ) の操作による Pn 。 Alice | Alice のような表現で、同僚の実際の行動を観察している Alice をモデル化できます。 P1 | P2 | ... |番号。アリスは自分のシミュレーションと観察結果を比較できます。実際、私たちがモデル化できるものはすべて、実行するだけでなく、データに具体化して、コードとそのシミュレーションをアリスが社会的状況の実際の行動について観察したものと比較するためにも利用できます。これには、アリス自身の行動が含まれます。


あっという間だったかもしれませんが、考えてみてください。これは、アリスが自分のソーシャル コンテキストとその中で自分自身を同時にモデル化するために必要な操作の最小セットです。特に、アリス自身の行動がそれらのスレッドをデータに具体化し、彼女の処理がそのデータと対話するときに、アリスはスレッドを「意識的に利用可能」になります。この議論は、ロー計算の設計審議に入ったものの一部です。これは、計算の反射に関するスミスの議論と、進化生物学の心の理論による生物の説明に適合する心の社会に関するミンスキーの議論を調和させる計算の最小モデルです。小さいものは、状況の重要な要素を見逃しています。


私たちは敵に会いました、そして彼らは私たちです.

この議論は、ロー計算のような計算モデルがアリスの脳内のハードウェアで購入を見つけることがもっともらしい理由です。彼女は、同様に社会的文脈の行動をモデル化するために競争している彼女の種の他のメンバーと競争するために、このモデルのすべての要素を必要としています.これが、Joscha の立場とはまったく逆に、モバイルの同時実行性が汎用人工知能の中心にあると私が主張する理由です。


Ralph Benko の的確な編集コメントに感謝します。