===== BriCA プラットフォームの使い方 ===== ==== はじめに ==== BriCA プラットフォームを用いて、脳型認知アーキテクチャを持つエージェントを開発し、[[https://gym.openai.com|OpenAI Gym]]で記述した環境でテストしたり、学習を行わせたりすることができます。 ==== プラットフォームを構成するソフトウェア ==== BriCA プラットフォームの主な構成要素には以下のものがあります: * [[https://github.com/wbap/BriCA1|BriCA1]]: 脳型認知アーキテクチャを記述し、走らせるための [[BriCAコア]] (Python プログラム) * [[https://github.com/wbap/BriCA1/blob/master/brica1/brica_gym.py|brica_gym]]: BriCAを用いた[[https://gym.openai.com|OpenAI Gym]] エージェントを作成するための Python プログラム\\ (Gym環境の実行サイクルに合わせた記述を行うためのクラスを含みます。) * [[https://github.com/wbap/BriCAL|BriCAL]]: [[BriCA言語]]記述から動作する BriCA プログラムを生成するインタプリタ * [[https://github.com/wbap/BriCAL/tree/master/bif_excel2brical|bif_excel2brical]]: 表形式ファイルからBriCA言語ファイルを生成するユーティリティ ==== ユースケース ==== BriCA プラットフォームを用いた認知アーキテクチャ開発は次のような順番ですすめることができます。 - 表(Excel)形式でモジュールとポート、ポート間接続を記述\\ (形式については[[https://github.com/wbap/BriCAL/tree/master/bif_excel2brical|bif_excel2brical]]および以下の例題を参照ください。) - 表形式記述をbif_excel2bricalでJSON形式に変換 - Gym環境、BriCAコンポーネント、main プログラム(下記)を実装 - テストとデバッグ ==== Mainプログラムの概要 ==== BriCA言語インタプリタとOpenAI Gymを用いた認知アーキテクチャのコードは概ね次のようなコードを含みます。 * 必要なライブラリのインポート(含 ''brica1'', ''brica1.brica_gym'', ''brica1'',''brical'', ''gym'', ''numpy'', ''json'') * JSON形式のBriCA言語記述ファイルの読み込み、形式チェック\\ (この段階で BriCAモジュールが生成されBriCA言語内部表現''nb''に紐付けられます) * 他の設定ファイルなどの読み込み(あれば) * Gym環境インスタンス生成 * BriCAコンポーネント初期化 * ポート作成(''nb.make_ports()'') * ''agent_builder = brical.AgentBuilder()'' * ''agent = agent_builder.create_gym_agent(nb, 認知アーキテクチャ最上位モジュール, Gym環境インスタンス)'' * ''scheduler = brica1.VirtualTimeSyncScheduler(agent)'' * ループを回して BriCAの "scheduler.step()''を実行\\ (Gym環境と同期させるためにトークンを回していることに注意) * 終了後環境などをクローズ 具体例は下記を参照ください。 ==== 例題 ==== === BriCAテスト === (Gymエージェントではない) * [[https://ggle.io/4wXy|表形式]] * [[https://github.com/wbap/BriCAL/blob/master/bif_excel2brical/usecase/n001.brical.json|JSON形式BriCA言語ファイル]] * [[https://github.com/wbap/BriCAL/blob/master/bif_excel2brical/usecase/n001.py|Mainプログラム]] === 最小限の認知アーキテクチャ === (Gymエージェント) * [[https://ggle.io/4wZG|表形式]] * [[https://github.com/rondelion/minimalCA/blob/main/minimal_CA.brical.json|JSON形式BriCA言語ファイル]] * [[https://github.com/rondelion/minimalCA/blob/main/minimal_CA_1_BL.py|Mainプログラム]] === 皮質・基底核・視床ループ === (Gymエージェント) * [[https://ggle.io/4wZK|表形式]] * [[https://github.com/rondelion/MinimalCtxBGA/blob/main/CBT1CA.brical.json|JSON形式BriCA言語ファイル]] * [[https://github.com/rondelion/MinimalCtxBGA/blob/main/CBT1cCA_1_BL.py|Mainプログラム]] === 注意機構を持つ作業記憶 === (Gymエージェント) * [[https://ggle.io/4wZO|表形式]] * [[https://github.com/rondelion/MinimalWMAgent/blob/main/MinWMAgent1.brical.json|JSON形式BriCA言語ファイル]] * [[https://github.com/rondelion/MinimalWMAgent/blob/main/MinWMAgent1_1_BL.py|Mainプログラム]]\\ 内部結合を持つアーキテクチャでは内部出力を持つコンポーネントを 環境エピソード終了後にリセットし、前のエピソードの情報が残らないようにする必要があります。 上記3つの実装の解説は[[https://doi.org/10.11517/jsaisigtwo.2022.AGI-020_02|こちら]]