落合陽一さん提唱のALOsで生成AIを試してみたら凄かった!
皆さんはじめまして。株式会社オープンストリーム・技術創発推進室の小川です。
オープンストリームに入社してから一年経ちますが、LLMの知識が必要となる場面が増えてきました。この分野で学んだことを発信することで自分の理解をより深めたいと思いブログを始めてみました。
今回は、最近読んだ論文で興味深かった落合陽一さんの「Towards Digital Nature: Bridging the Gap between Turing Machine Objects and Linguistic Objects in LLMMs for Universal Interaction of Object-Oriented Descriptions」(https://arxiv.org/abs/2304.04498) を紹介していきます。
落合陽一さんは、研究者であるだけでなく、メディアアーティストなど様々な分野で活動されています。「デジタルネイチャー」という概念を提唱し、この概念に関する探求も行なっています。今回紹介する論文の内容もこの概念に関わるので、まずこのデジタルネイチャーについて軽く説明します。
1. デジタルネイチャーについて
デジタルネイチャーは、本論文において「現実世界とデジタル世界との隔たりが無くなり、オブジェクトのシミュレーションを容易に実行できる世界観」と説明されています。すなわち、コンピュータの技術の進化に伴い、現実世界のあらゆるものをコンピューター上のオブジェクトと等価的に扱える=デジタルネィチャーの時代が到来すると、落合さんは提唱しています。より詳細な解説は、彼の著書「デジタルネイチャー 生態系を為す汎神化した計算機による侘と寂」(https://amzn.asia/d/74U3WJD) などを参照ください。
本論文では、このデジタルネィチャーの思想にもとづいて現実とデジタルの間を結ぶためのLLM活用の新たなアプローチを提案しています。
2. 論文の概要
実世界に存在するオブジェクトを計算機上のデジタル世界のオブジェクトとして表現するには、従来は人間の多大な労力と専門知識が必要であり大変な仕事であった。この作業をAI(LLM)で実施させたい。
実世界とデジタル世界とのギャップを埋める手段として、「抽象言語オブジェクト (ALOs)」を提案する。
ALOs は、オブジェクト指向プログラミングと言語シミュレーション(後述)のアイデアを背景として発想したものである。
ALOs 作成用プロンプトと ALOs からプログラミング言語のオブジェクトに変換するプロンプトという2種類のプロンプトを LLMに実行させることで、実世界から計算機上へのオブジェクトの変換をシームレスに行うことができる。
上記のアプローチによって、以下の成果を得られた。
3次元(3D)世界のオブジェクト(ただし物理エンジンは使用しない)を表すプログラムコードをLLMで自動的に生成できた。作成した3次元世界では、オブジェクト間の相互作用(互いに反応しあうこと)も確認できた。
現実の複雑な状況をシミュレートした画像をLLMで自動的に生成できた。
このアプローチの研究が進めば、現実世界のシミュレーションの実装はより身近で実用的なものになるだろう。
3. 言語シミュレーションとは
ALOs を理解する前提として、「言語シミュレーション(language simulation)」という用語について理解しておく必要があるでしょう。
計算機を使ってシミュレーションを行う手法は様々なものがあります。代表的なのが物理シミュレーションです。物理シミュレーションでは、物理学の法則(主に力学的な方程式)を使って系や物体の性質や振る舞いを記述して、その方程式を計算することで対象の振る舞いを予測したり可視化したりします。例えば、太陽系の惑星の運動のシミュレーションや、建築物の構造強度シミュレーションによる設計分析などです。
一方、本論文で言及されている言語シミュレーションは、論文内で明確に定義はされていませんが、文意から推察すると『実世界の対象の性質や振る舞いを自然言語で記述し、それらをLLMに入力することで、LLMの持つ言語的な「論理思考力」を用いて対象物を振る舞いを予想したり、相互作用を分析したりすること』という意味だと思われます。
言語シミュレーションのメリットは、普通の言葉によって対象を記述すればよいので、専門知識がない人でも扱いやすいことや、物理シミュレーションよりも柔軟で広範囲な対象(例えば社会的存在としての人間の行動)をシミュレートできることなどが上げられるでしょう。さらに、言語を通じてLLMが持っている膨大な知識とリンクしやすいという利点もあります。
4. ALOsとはなにか
実世界のオブジェクトをプログラミング言語で定義するには、従来は専門的な知識や多大な時間と労力が必要でした。しかし GPT-3.5 などの LLMの登場で、コードを自動的に生成できるようになり、全てを人の手でコーディングする必要は無くなりました。
ただし、オブジェクトの複雑な相互作用、状態の管理などを明確に定義するには、より高度なオブジェクトに関する知識やコーディングスキルが求められ、LLMに単純に指示しても上手くいきません。そこで、この作業を簡単にするための新しい手段が "Abstract Language Objects(ALOs)" です。
ALOs は LLMの膨大な知識や抽象化能力を活用することで、実世界のオブジェクトの特性や相互作用を自然言語で記述させたオブジェクトです。
4.1. ALOsを適用する方法
ALOs を実際に適用するには、以下の2つのステップを実施します。
第1ステップとして、LLMのシステムプロンプトに以下のような ALOs を作成する手順を定義します。(もちろん、実験の内容によってこのプロンプトの内容を変更する場合があります。)
なお、システムプロントとは、ChatGPTのAPIに装備されている機能で、その後の他のプロンプト共通の前提として使われるプロンプトのことです。
第2ステップは、第1ステップで生成した ALOs やその相互作用をPythonやJavascriptなどの高水準プログラミング言語や、なんらかのハードウェア、ニューラルネットワークなどに統合させることです。このステップでは、LLMによって生成した ALOs をプログラム言語コードに変換させるためのプロンプトを定義します。
次に提案したアプローチの有効性を示すための実験とその結果を説明します。
5. 実験とその結果成果
5.1. 実験1:3Dのデジタル世界の構築
5.1.1. 目的
JavaScriptライブラリ Three.js を用いて、シンプルな3Dのデジタル世界と猫とルンバのオブジェクトを構築し、両者の振る舞いをシミュレートすること。
5.1.2. 手順
LLMのシステムプロンプトとして、ALOs を生成して JavaScript 及び Three.js のコードで書き出すことを指示する。(詳細は論文の Prompt 2 を参照)
ユーザープロンプトで、主に以下のような内容を指示する。(詳細は論文の Prompt 3 を参照)
猫、ルンバ、3D世界 ALOs の作成
ALOs から JavaScript のクラスへの変換
メインループのアニメーション関数から呼び出される各クラスの更新関数を定義
上記でLLMが生成したクラスを、手動でインスタンス化し JavaScript のアニメーションループに登録することでシミュレーションを行う。
LLMが生成したコードは実行時にエラーが発生することがあるが、小さなコードミスであれば手動で修正し、複雑な処理を追加する際は、GPT-4 で生成されたコードも活用することで対応した。
5.1.3. 結果
LLMは、システムプロンプトに従って猫とルンバ(ロボット掃除機)の ALOs を作成して JavaScript コードを生成できた。ネコの ALOs はジャンプやニャーと鳴くといった動作を取り、ルンバの ALOs は移動や回転、猫から逃げたり避けたりといった動作を表現できた。
5.2. 実験2: 教室でのシュミレーション
5.2.1. 目的
教室の様子をシミュレートした画像を生成すること。
5.2.2. 手順
LLMのシステムプロンプトは、実験1のものを使用する。
ユーザープロンプトで、主に以下のような内容を指示し、画像生成AIに対するプロンプトやパラメータを生成させる。(詳細は論文の Prompt 4 を参照)
教室、生徒、教師の ALOs とそのパラメータを作成
教室で教師が生徒に教えている状況をシミュレート
上記で得られたパラメータをMidjouney V5などの画像生成ソフトウェアのプロンプトとして使用することで、これらのオブジェクトの画像を生成する。(詳細は論文の Prompt 5 を参照)
5.2.3. 結果
各オブジェクトの画像や意図したとおりの教室の様子の画像を生成できた。これにより LLMで定義された ALOs をもとに、かなり複雑な状況設定の画像を作成できることを実証した。
ただし別の実験として、IoT環境(ルーターを介してスマートフォンとプリンターと接続した状況)をシミュレートした結果、写真風の画像ではなく下図のような画像の出力となりました。この原因は、ALOs として生成されたパラメータが、色や液晶上の画像などのビジュアルに関するものではなく、デバイスの仕様に関するものが多かったからです。このようなケースに対応するためには、デバイスの概観に関する記述を増やすなど、ALOs を作成する際のパラメータに改善の余地が残っています 。
6. 追試:カードゲームの進行を再現:ALOs を介したアプローチ vs 通常のプロンプトでのアプローチ
ALOs の利点や通常のプロンプトとの違いを自分なりに深掘りしてみようと思い、トレーディングカードゲーム(遊戯王やデュエルマスターズなど)を題材に私も実験を行ってみました。
具体的には、これらのゲーム進行をプログラムコードで再現することを試みました。その際、(a)ALOs を介して生成したコードと(b)通常のプロンプトから生成したコードを比較しました。この2つの生成アプローチは、両方ともChatGPTで実行しましたが、ALOs の作成には、「抽象言語オブジェクト(ALOs)の作成」 (https://chatgpt.com/g/g-jQUP6xNBx-chou-xiang-yan-yu-ohusiekuto-alos-nozuo-cheng
) というChatGPTで公開されているカスタムGPTを利用しました。(なお、このカスタムGPTは落合さんが作成されたものかどうかは不明です。)
6.1. 実験の結果
まず、2つのアプローチで生成したコードの共通点は、プレイヤーやカードのオブジェクトをルールに合わせて定義できていたことです。
しかし ALOs を介したアプローチでは、ターンの進行や勝敗の確認など、ゲームの進行を統括するメソッドも定義できていました。つまりゲームの進行を管理できるという点でALOs を使わないアプローチよりも優れていました。さらに、生成された ALOs には、各オブジェクトの定義やゲームのシミュレーション手順が自然言語で記述されていたので、ChatGPTが生成したコードの意図も読み取りやすいという利点もありました。
7. まとめ
この論文では、実世界のオブジェクトを計算機上のプログラミング言語で記述されたオブジェクトに変換するための、LLMを用いた新しい方法である ALOs を提案し、その有効性を実験で示しています。ALOs を使うことで、各オブジェクトの細かな特徴や性質に即した高度なコードが生成しやすくなるため、LLMによる自動プログラミングや実世界のシミュレーションをさらに高度化できる可能性を示しています。ALOs は非常に興味深いアイデアであると感じました。
6節で述べたように私も実際に ALOs を動かしてみましたが、特に複雑な指示をしなくてもChatGPTがカードゲームのルールに合わせてコードを淡々と生成していく様子は面白いと思うと同時に少し怖かったです。AIのプログラミング能力がここまで高まってくると、本当に人間のプログラマーの仕事が大幅に減りそうだと感じたからです。
最近では、LLMのポテンシャルを引き出すための手法が徐々に確立され共有されるようになっていますが、ALOs はその中でも高度で効果的な手法です。将来は、コーディングの意味合いは、プログラミング言語を記述・修正する行為から、ALOs のような自然言語とプログラミング言語の間に存在する言語を記述・修正する行為に変わるかもしれません。
今回の記事は以上です。お読みいただきありがとうございました!