コンテンツにスキップ
この記事はパブリックドメイン(CC0)です。自由にご利用ください。 CC0 1.0 Universal

人工学習知能システム:ALIS構想

ここでは、人工学習知能システム(Artificial Learning Intelligence System: ALIS)について、コンセプトや原理から、基本設計と開発方法について整理していきたいと思います。

コンセプト

現在の大規模言語モデルを中心とした生成AIは、ニューラルネットワークベースの教師あり学習に基づいてトレーニングされています。

学習のプロセスとして、このニューラルネットワークの学習を先天的学習と位置づけます。

ALISは、先天的学習とは別に、後天的学習というプロセスを組み込むことで、両方の学習プロセスを総合した推論を可能にするシステムです。

この後天的学習では、ニューラルネットワークの外部に学習した知識を蓄積して、推論の際に活用します。

従って、ALISの技術的なコアは、再利用可能な知識の抽出、保存、そして推論時の知識の選択と利用になります。

また、ALISは単なる一要素技術ではなく、先天的学習と後天的学習を組み合わせたシステム技術でもあります。

学習知能システムの要素

ALISは、既存の先天的学習も、今後検討していく後天的学習も、学習と推論という枠組みでは同じ原理に従うという枠組みで扱います。

ALISにおける学習の原理を説明するために、学習知能システムの5つの要素を定義しておきます。

1つ目は、知的プロセッサです。これはナレッジを使用した推論と、学習のためのナレッジの抽出を行う処理システムを指します。

LLMや人間の脳の一部が、知的プロセッサの代表例です。

2つ目は、ナレッジストアです。これは抽出したナレッジを保存し、必要に応じて取り出すことができる保存場所を指します。

LLMでは、ナレッジストアはニューラルネットワークのパラメータです。人間の場合は脳の中の長期記憶に相当します。

3つ目は、世界です。これは人間やALISなどの学習知能システムから見た外界を指します。

世界は、人間にとっては現実世界そのものです。LLMの場合は、LLMからの出力を受けてLLMにフィードバックをする仕組みが世界に相当すると考えられます。

4つ目は、ステートメモリです。これは学習知能システムが推論を行う際に利用する内部の一時メモリのようなものを指します。

LLMの場合は、隠れ状態と呼ばれる推論中に使われるメモリ空間です。人間の場合は短期記憶に相当します。

5番目は、フレームワークです。これは、いわゆる思考の枠組みです。学習知能システムの用語で説明すると、推論時に必要になるナレッジの選択基準と、ステートメモリを整理するための論理的な状態空間構造を指します。

LLMの場合は、隠れ状態の意味構造であり、一般的にはその内容は曖昧で人間には理解できません。また、ナレッジの選択は処理しているトークン毎に、どの既存のトークンを参照するかを選択するアテンションメカニズムに組み込まれています。

人間の場合は、前述の通り、思考の枠組みです。特定の思考の枠組みを使って思考する際、長期記憶の中から特定のノウハウ群を思い出して短期メモリに乗せています。そして、現在把握している知覚された情報を、思考の枠組みに沿った形で整理して状況を理解します。

学習知能システムの原理

学習知能システムは、以下のように動作します。

知的プロセッサが、世界に対して作用をします。世界は、その作用を受けて結果を返します。

知的プロセッサは、その結果から再利用可能なナレッジを抽出して、ナレッジストアに保存します。

知的プロセッサは、反復的に世界に作用する場合、ナレッジストアからナレッジを選択し、それを利用して作用の仕方を変化させます。

基本的な仕組みはこれだけです。

一方で、本質的にはナレッジの抽出、保存、選択、利用の方法が、そのシステムが意味のある学習ができるかどうかを決定づけます。

人間は、このナレッジの抽出、保存、選択、利用がうまくできる仕組みを持っているため、学習ができます。

LLMを含むニューラルネットワークは、抽出の部分は外部の教師によって処理されますが、保存、選択、利用ができる仕組みを持っています。これにより、教師さえ与えられれば学習できるのです。

また、学習知能システムは、フレームワークの抽出や保存、選択とステートメモリ上での利用方法もナレッジとして学習することで、より複雑な学習も可能になります。

ナレッジの種類

この原理を踏まえて、後天的学習について設計する場合、後天的なナレッジがどのような形の情報であるかを明確にする必要があります。

後天的なナレッジも、別途ニューラルネットワークのパラメータとして学習する方法も考えられます。

しかし、後天的ナレッジは、ニューラルネットワークのパラメータのみに限る必要はありません。現実的な候補としては、自然言語でテキスト化されたナレッジが考えられます。

自然言語でテキスト化されたナレッジであれば、LLMの自然言語処理能力を活かして、抽出と利用ができます。また、通常のITシステムのデータとして扱えるため、保存や選択も容易です。

さらに、自然言語でテキスト化されたナレッジは、人間や他のLLMが内容をチェックしたり、理解することも容易ですし、場合によっては編集も可能です。

他の学習知能システムと共有したり、マージや分割も可能です。

このため、ALIS構想の後天的ナレッジは、自然言語でテキスト化されたナレッジを最初のターゲットとして設計していきます。

後天的ステートメモリとフレームワーク

後天的ナレッジとして自然言語でテキスト化されたナレッジを選択するメリットについて説明しました。

それと同様に、推論のためのステートメモリとフレームワークにも、自然言語テキストを用いることができます。

考え方の枠組みであるフレームワークも、自然言語でテキスト化されたナレッジとしてナレッジストアに保存して利用することができます。

そのフレームワークで定義された構造に基づいて状態の初期化や更新を行う場合にも、テキスト形式のステートメモリを用いることができます。

このように後天的ナレッジだけでなく、フレームワークやステートメモリもテキスト形式を選択して設計することで、ALISは後天的学習と推論全般に、LLMの自然言語処理能力を活用することができます。

形式ナレッジ

後天的ナレッジ、フレームワーク、ステートメモリは、自然言語テキストだけでなく、さらにより厳密な形式言語や形式モデルを選択することもできます。

選択、と書きましたが、先天的学習と後天的学習をハイブリッドに利用できるように、ALISには異なる複数の後天的ナレッジの学習の仕組みを組み込むことができることを目指します。

形式言語や形式モデルによるナレッジは、より厳密で曖昧さを排除したものにできます。

また、形式言語や形式モデルでフレームワークを表現し、ステートメモリ上で初期状態を展開した場合、LLMではなく形式モデルを処理できる知能プロセッサで厳密なモデルでシミュレーションや論理展開ができます。

この形式言語や形式モデルの代表例は、プログラミング言語です。

世界を学習していく中で、そこにある法則や概念をフレームワークとしてプログラムで表現できれば、それをコンピュータでシミュレーションすることができます。

コラム1:ナレッジの種類

学習知能システムのナレッジを整理していくと、大きく3系統と2タイプに大別できることが分かってきます。

3系統とは、ニューラルネットワークが扱うネットワークパラメータナレッジ、自然言語による自然ナレッジ、形式言語による形式ナレッジです。

2タイプとはステートレスとステートフルです。

ステートレスのネットワークパラメータナレッジは、ディープラーニングAIのような直感的な知識です。考えたり言葉にして識別はできない猫と犬の特徴を、ステートレスのネットワークパラメータナレッジとして学習できます。

ステートフルのネットワークパラメータナレッジは、生成AIのようなファジーな反復的処理により現れる知識です。

ステートレスの自然ナレッジは、単語に紐づく意味のような知識です。

ステートフルの自然ナレッジは、文章に含まれるコンテキストを含む知識です。

自然ナレッジは、先天的にステートフルのネットワークパラメータナレッジに含まれているものもありますが、後天的に自然言語テキストから得られる知識もあります。

ステートレスの形式ナレッジは、反復を含まない数式で表現できる知識です。ステートフルの形式ナレッジは、プログラムで表現できる知識です。

自然ナレッジと形式ナレッジのステートメモリとして、自分の脳の短期記憶を使用することもできます。

しかし、短期記憶であるため安定して状態を維持し続けることが難しいという問題があります。また、形式化された曖昧さのない状態として保持することも得意ではありません。

一方で、自然言語テキストや形式言語や形式モデルを書き留めたり編集したりするステートメモリとして、紙やパソコンやスマホを利用することができます。

一般的には、紙やパソコンのデータは、ナレッジストアとしてナレッジを記憶しておくためのものとして捉えられていることが多いですが、考えを整理するためのステートメモリとしても利用できます。

このように、3系統と2タイプのナレッジを駆使して、人間は知的活動を行なっていることが分かります。

ALISも同じようにこの3系統、2タイプのナレッジを駆使した知的活動が行えるようにし、それを強化していくことで、その能力を飛躍的に向上させていく可能性を秘めています。

特に、ALISは膨大なナレッジストアとステートメモリを利用できるという強みがあります。また、それぞれを多数用意して、切り替えたり結合したりしながら知的作業を行うことも容易にできます。

コラム2:知的オーケストレーション

ナレッジストアに大量のナレッジをため込むことができるという強みはありますが、生成AIが一度に利用できるトークン数の制限や、無関係なナレッジがノイズになるという制約があるため、ナレッジの量が多いことが単純に知的活動に有利になるというわけではありません。

一方で、ナレッジストアを適切に分割し、特定の知的作業に必要な知識を集めた高密度の専門ナレッジストア化することで、トークン限界とノイズの問題を緩和できます。

その代わりに、その専門ナレッジストアは特定の知的作業の際にしか使えないものになります。

多くの知的活動は、様々な知的作業の複合活動になっています。このため、ナレッジを知的作業の種類ごとに専門ナレッジストアに分割しておき、知的活動を知的作業に細分化することで、ALISは専門ナレッジストアを適切に切り替えながら知的活動全体を実行することができます。

これは異なる楽器を演奏するそれぞれのプロの演奏家と、その全体の指揮を執る指揮者で構成されるオーケストラのようなものです。

この知的オーケストレーションというシステム技術により、ALISは知的活動を組織化することができるようになります。

ALISの基本設計と開発方法

ここからはALISの開発に向けた整理を行います。

既に原理やコラムで書いたように、ALISは本質的に、容易に機能やリソースの拡張ができる仕組みになっています。それは、ALISの本質が、特定の機能にあるのではなく、ナレッジの抽出、保存、選択、利用というプロセスだからです。

例えばナレッジの抽出を行う仕組みを複数種類用意しておき、そこから選択したり、同時に使用したりすることがシステムの設計次第で自由に選択できます。

また、その選択自体をALISに行わせることもできます。

保存、選択、利用も同様に選択や並列化が自由にできます。

このため、ALISはウォーターフォール的に機能全体を設計せずともインクリメンタルでアジャイルに開発を進めることができます。

はじまりのALIS

では、ごくシンプルなALISを設計していきます。

基本的なUIは、おなじみのチャットAIにします。初回は、ユーザからのインプットをそのままLLMに渡します。そしてLLMからの応答をUIに表示し、ユーザからの次の入力を待ちます。

次の入力があると、LLMには新しい入力だけでなく、それまでのユーザとLLMの間のチャット履歴を付けてLLMに入力します。

このチャットAIのUIの裏側に、チャット履歴から再利用可能なナレッジを抽出する仕組みを用意しておきます。

それは会話が終了したタイミングや、一定時間ごとに実行される処理としてチャットAIシステムに追加することができます。ナレッジ抽出には、もちろんLLMを使用します。

このLLMには、ALISのコンセプトと原理、そしてナレッジ抽出のノウハウをシステムプロンプトとして与えます。意図通りにナレッジが抽出されないようであれば、試行錯誤してシステムプロンプトを改良しましょう。

チャット履歴から抽出したナレッジは、そのままナレッジレイクに保存します。ナレッジレイクとは、ナレッジを構造化する前の状態でフラットに保存しておくだけの仕組みです。

次に、ナレッジレイクのナレッジを選択しやすくするための構造化の仕組みを用意します。

これには典型的なRAGで使われるセマンティックサーチのためのエンベディングベクトルストアや、キーワードインデックスなどを用意するということです。

この他にも、より高度なナレッジグラフを生成することや、カテゴリ分類をすることなども考えられます。

このようなナレッジレイクに対する構造化情報の集合を、ナレッジベースと呼ぶことにします。このナレッジベースとナレッジレイク全体が、ナレッジストアとなります。

次に、ナレッジストアをチャットUIの処理に組み込みます。

ここは基本的には一般的なRAGの仕組みと同じです。ユーザからの入力に対して、役立ちそうなナレッジをナレッジストアから選択し、ユーザからの入力と合わせてLLMに渡します。

これにより、LLMはユーザからの入力を処理する際に、自動的にナレッジを利用します。

これにより、ユーザとの会話の度にナレッジが増えていき、過去の会話で蓄積されたナレッジを利用するシンプルなALISが実現できます。

シンプルなシナリオ

例えば、このシンプルなALISを使ってユーザがWebアプリを開発しているケースを想像してください。

LLMが提案したコードに対して、ユーザが実行結果がエラーになったという報告をするでしょう。そしてユーザとLLMが協力してトラブルシュートした結果、LLMが把握していた外部APIの仕様が古く、最新のAPI仕様に合わせることで上手く動作するようになったとします。

すると、このチャットスレッドから、LLMが知っているAPI仕様が古いことと、APIの最新仕様がどうなっているかというナレッジを、ナレッジストアに蓄積することができるでしょう。

そして、次に同じAPIを使用するプログラムを作成する場合、ALISはこのナレッジを活かして、最初からAPIの最新仕様に基づいたプログラムを生成できるでしょう。

はじまりのALISの改良

ただし、そのためには、ユーザからの入力に対して、このナレッジが選択される必要があります。もしかすると、ユーザの入力から直接はこのナレッジが結びつかないかもしれません。なぜならユーザの入力に、その問題となったAPI名は登場しない可能性が高いためです。

その場合、LLMの応答の中で、はじめてそのAPI名が出てくることになります。

そこで、シンプルなALISを少し拡張して、事前検討や事後チェックを行う仕組みを追加します。

事前検討は、最近のLLMの思考モードと同じようなものです。ステートメモリとしてテキストを保持できるメモリを用意しておき、ユーザからの入力を受けたら事前検討をするようにシステムプロンプトで指示をしておきます。

そしてLLMの事前検討結果をステートメモリに入れ、その事前検討結果を元にして、ナレッジストアからナレッジを選択します。

そしてチャット履歴、事前検討結果、ユーザ入力に対応したナレッジ、事前検討結果に対応したナレッジを、LLMに渡して結果を受け取ります。

そして、LLMから返された結果についても、ナレッジストアからナレッジを検索します。そこで見つかったナレッジを含めて、事後チェックをLLMに依頼します。

そこで問題があれば、問題点と指摘の理由を付けて、再度チャット用のLLMに渡します。

こうして事前検討と事後チェックの際にナレッジを選択する機会を設けることで、蓄積したナレッジを利用できる機会を増やすことができます。

展望

このようにはじまりのALISを作り、その弱点を補う改良を加えるという流れは、まさにアジャイル開発であり、インクリメンタルにALISを改良していくことができることを示しています。

また、例に挙げたように、初期のALISはソフトウェア開発への利用が最も適しています。それは、需要が高い分野であるとともに、ナレッジを明確に蓄積しやすい分野でもあるためです。

白黒がはっきり付けられるジャンルでありながら、トライ&エラー型の試行錯誤的なナレッジの蓄積が必要かつ重要な分野です。

加えて、ALISの開発自体がソフトウェア開発であるため、ALIS開発者自身がALISのユーザとなることができるという点も、魅力的です。

そして、ALISのシステムと共に、ナレッジレイクもGitHubなどでオープンに共有することができます。

そうすれば、ALISシステムの改良とナレッジの蓄積を多人数で行うことができ、それらの成果を全員が享受して、さらに効率的にALISの開発を進めることができます。

もちろん、ナレッジの共有はALIS開発者に限らず、ALISを利用するソフトウェア開発者全員から集めることができます。

ナレッジが自然言語であることで、さらに2つの利点があります。

1つ目の利点は、LLMのモデルの変更やバージョンアップ時にもナレッジが生かせるという点です。

2つ目の利点は、蓄積した膨大なナレッジレイクを、LLMの事前学習データセットとして利用できるという点です。これはファインチューニングとして利用する方法と、LLMの事前学習そのものに利用する方法の二通りがあります。

いずれにしても、ナレッジレイクに蓄積したナレッジを先天的に学習したLLMを利用できれば、さらに効率的にソフトウェア開発ができるようになるでしょう。

また、ソフトウェア開発の中にも、要求分析、設計、実装、テスト、運用、保守といった様々な工程があり、また対象とするソフトウェアのドメインやプラットフォーム毎に専門知識が存在します。膨大に蓄積されるナレッジを、こうした観点で分割する仕組みを作れば、ALISオーケストラを構成することもできます。

このようにALISの要素技術は揃っており、あとはノウハウの抽出、適切なナレッジの選択、専門ナレッジの分割、ステートメモリの活用方法など、実践的に様々な方法を試していって効果的なやり方を発見していくことが重要です。また、複雑になっていくと、処理時間やLLMの利用コストなども増えていくため、その最適化も必要です。

これらの試行錯誤や最適化は、フレームワークの開発や改良により、学習的に進めることができます。

フレームワークは、初めのうちはユーザである開発者が試行錯誤しながらALISに組み込んでいくことになるでしょう。ただしその際にも、LLM自体にフレームワークのアイデアを作らせることはできます。

そして、世界から受け取った結果や抽出したナレッジを参考にして、フレームワークの改良や発見をするフレームワークをALISに組み込むことで、ALIS自身が学習的に試行錯誤や最適化を実行していくでしょう。

現実世界のALIS

この段階までALISが洗練されてくると、ソフトウェア開発の世界に限らず、広く様々な世界でALISはナレッジを学習することができるようになっているはずです。

ソフトウェア開発と同様に、人間がパソコンを使って実行しているような様々な知的活動の世界に、ALISは適用範囲を広げていくはずです。

こうした純粋な知的活動であっても、ALISは対象の世界に対する一種のエンボディドAI(身体を持つAI)のような性質を持ちます。

それは世界と自分との境界を認識し、その境界を通じて世界に作用し、世界から受け取る情報を知覚することができるためです。

その世界との境界が物理的に目に見え、一箇所に局在しているものを、私たちは一般的に身体と呼んでいます。

しかし、境界が目に見えず、空間的に分散しているとしても、境界を介した知覚と作用をするという構図は物理的な身体を持つ場合と同じです。

その意味で、知的活動を行うALISは、仮想的にエンボディドAIの性質を持つと考えることができます。

そして、新しい未知の世界であっても適切に学習することができる段階にまでALISが洗練されると、実際に物理的な身体を持つリアルエンボディドAIの一部としてALISを組み込むことができる可能性があります。

このようにして、ALISはやがて現実世界に適用され、現実世界を学習していくことになるでしょう。