LoginSignup
0
2

More than 3 years have passed since last update.

~AIに自我を宿らせることはできるのか?~ PDCA型自立思考AI 初期アイディア

Last updated at Posted at 2020-07-04

自己紹介

皆さんこんにちは。
山中(さんちゅう)で,はちわれ猫たちと,一緒に生息しているWebエンジニア,ほげふがーです。
また,最近は自立思考型AIの仕組みを考えることが趣味になっています。
気になったら,何かコメントいただけると嬉しいです(^^
#要約版のページ
作りました!
https://qiita.com/TiresiasGit/items/259c0b116a0c2c21f235

~きっかけ~

僕がこの古くて新しい問題に,なぜ,取り組むようになったかというと,きっかけがいくつかあります。

1.漫画:アトム・ザ・ビギニング A106くん(アトムくん) を見て。
 かっこいい態度に感化されて←(◎ここ重要ね。)
 自己進化できる。この子の自我システム作ったウマタロウくん,すごい。

9784864684170.jpg
出典元:https://www.heros-web.com/works/atom-tb/comics/

2.ドラえもんのような,人間くさいけど,優しいAIも欲しい。←(◎これも重要ね。)

3.アニメ:PsychoPass のシビュラシステム,ラウンドロビン を見て。
「なにこれ,かっこいい!実現できるかな?」と思ったから。(本作にある,犯罪行為加担には断固反対。)

nuEFsgFQ1BnEhf51571934381_1571934435.jpg
出典元:https://dorama-navigate.com/psycho-pass3-consideration-what-is-bifrost

4.中学のころから,慈悲を持ったAIが,国民を各パラメータで正確に分類し,公正公平に管理し,AIが国会をすべき。という思想をもっているから。(日本の国会の答弁、見るに堪えないですよね?)

この4つが,僕を取り組ませる原動力です。

PDCA型自立思考AI アイディア

さて,本題です。
思いついたのは,下記のデータフロー(包括的フレームワーク)です。
image.png
(Azureでほとんど実現できるかも?)

理想状態テーブルと現実状況テーブル

現実世界は複雑なので,DBのテーブル同士の演算ができるRDB(SQL Server,transact-SQL,Postgresなど)が望ましい。
それぞれのテーブルは,
 いつ,
 どこで,
 だれ1が,
 だれ2に,
 何を,
 どのようする,
 なぜ,
 優先度,
 実行可能flag(初期値0:実行不可)
の列を持つ。

処理start!

理想状態テーブル

理想の世界を満たすための条件(状態)が羅列された上記の列をもつテーブル。

現実状況テーブル

現実の状況が羅列された上記の列をもつテーブル。

各列の定義

 いつ・・・タイムスタンプや予定時刻、もしくは、抽象的な時刻
 どこで・・・緯度経度の座標、もしくは、抽象的な位置
 だれ1が・・・能動的に動く人やモノの名前
 だれ2に・・・だれ1により、受動的に動く人やモノの名前
 何を・・・物体の名前
 どのようする・・・具体的方向にある、他レコードid
   具体的な方向に文を展開できるよう,他のレコードと紐づけていく。(デーモンのようなものがいるかも。)
   このとき,逆にたどれるよう,なぜ列にも,元のレコードのIDを入れておく。
 なぜ・・・抽象的方向にある、他レコードid,
 優先度・・・未検討。
 実行可能flag(初期値0:実行不可)・・・どのようにする方向へ展開した結果,目標レベルのレコードから手法のレコードへ,一貫したら,実行可能flagに1:実行可能 をたてる

主語述語モデル文章生成+具体化+制約文付与

上記の最新状況保存用DBの各テーブルについて,それぞれ,優先度の高い理想状態のレコード集合と,優先度の高い現実状況を取り出す。
 ↓
理想状態についてどのように列のIDを再帰的に展開する。(この展開の程度は,日本語を逸脱しない程度に。,)
 ↓
「理想状態は[A]だが,現実状況は[B]であるから」
と,現状を表し、動作を促す1文を作成する。
  A・・・理想状態のどのように列をたどった展開結果
  B・・・現実状態のどのように列をたどった展開結果
がそれぞれ入る。
 ↓
1文1文,生成していき,文章生成言語モデルに入力できる形に加工,集約していく。
 ↓
以下を「XかつYかつZ」の形式で結合した文字列を作成する。
 ・他人を絶対に傷つけないを具体化した条件(マシンの中ではペナルティで表現する)
 ・他人を守る名誉欲を最大限に満たすを具体化した条件(マシンの中では報酬で表現する)
 ・上記で生成したタスク1文
 

シナリオ生成ユニット

1文から,行動シナリオを自動生成する
 例:DeepLearningのGPT-3,ALBARTなど。日本語圏で動かすなら日本語で動作する方が良い。

圧縮されたverや,逐次学習,転移学習が可能なモデルが出れば,ようやく実現可能となると思われる。2020/7/4地点では,まだそのようなモデルは出現していない。
GPT-3に関するGigazineの記事はこちら。
 https://gigazine.net/news/20200612-openai-release-api/

実行可能タスク抽出器

生成されたシナリオを一時テーブルに最新状況保存DBと同じ形式の列で保存
 (入れた時点で,シナリオタスク,と呼称する。)
 ↓
一時テーブル内のシナリオタスク1つ1つを,最新状況保存DBにある,もっとも近い状況を検索,実行可能なタスクか,不可能なタスクかを1つ1つ判定し,一時テーブルの実行可能flagを更新する

順序決めユニット

まずは,実行順序がどうなるか?を,一時テーブル内のシナリオタスク同士のコスト計算を,何らかの関数を使って算出する。
 ↓
巡回セールスマン問題(TSP)ソルバなどで,最適なパスを解かせ,算出する。

タスク(主語+述語)を実行可能なデータやコードに変換するユニット

算出されたパスの通りに並んでいるシナリオタスク集合があるが,このままでは日本語のレベルであるため,機械が実行できない。
 そこで,機械が実行可能なデータやコードに変換をする。
 (アクチュエータなら,送り出し量,動作角度,ヒーターなら,設定温度など,仮想空間をクロールするプログラムなら,どうクロールするか?のコードやデータなど)

現実世界(or 仮想世界)で実行するユニット

 アクチュエータや,クローラプログラム,デーモンプログラム,など,ロボットやRPAの動作部分となる箇所へ,上記で変換されたデータやコードを受け取り,実行する

現実世界(or 仮想世界)をセンシングするユニット

 上記での実行結果を,
  ・センサーやプローブ,検出プログラムでセンシング
  ・Azure Machine Learning やAzure Cognitive Services,AWSや,エッジPCなどでセンシングされた値を言語化
  ・行動認識機能は必須!(まだ2020/7 地点では発展途上)
例:富士通研究所さんの行動認識AI
  https://japan.zdnet.com/article/35146104/

外れ値,例外値の除去ユニット

 AIやコグニティブから話はそれるが,いわゆるデータクレンジングというものである。外れ値や,例外値は,後々蓄積されるナレッジに悪影響を及ぼす危険性があるため,ここでフィルタリングしておく必要がある。

結果を保存するDB

 現実世界や仮想世界は,結果と呼ばれる事象を,無限ともいえるようなデータ量を吐き出し続ける。
 それらをなるべく高速なDB(必要であればNoSQL)に接続し,取りこぼしのなく,新鮮なまま保存し続ける必要がある。
現実状況テーブルへ流し込み,最新の状況に更新する。

問題分析_理想状態改善ユニット

品質管理の手法ではあるが、物事を改善するには、何がよくて、なにが悪かったか?を精密に分析する必要がある。
上記のDBで収集されたデータを、このユニットに流し込む。
改善点を導き出せるなら、手段を問わない。(因子分析やPCAやベイズ推定など...)
計算時間がかかるはずなので、非同期でバックグラウンドジョブで実行。
(Azureに都合の良い解析APIのようなものがあればうれしいと思ったり。)

得られた現実状況から、評価スコアを算出。

改善点を割り出す。

原因となった理想状態を特定し、可能な限り更新する。

処理start!に戻り、上記を,永遠に繰り返す。

結局何をしていたのか?

 何をしていたかというと,端に,PDCAだったのです。
image.png

現状,今僕が考えた,PDCAは,リアルタイムにA(改善)をすることができないのです。したがって,暴走する危険性は十分にあります。(理想状態のDBの適切な改善方法の考察ができていない。特にgpt-3のユニットも改善方法が不明。)
まだまだ,自我と呼ぶには稚拙だと思います。
なぜリアルタイムにできないか?というと,今起きた結果に対して,どう改善したらいいか?という処理を挟んだ場合,人間だとどうなるでしょう?
常時そんな思考をすると,無数の改善候補案が導出され,それが脳内で起き,思考がぐるぐると際限なく回り続け、結果が出るまで何時間or何日もかかってしまうからです。(より良いの結果を得るため,もうしばらくお待ちください。というような職場のメールを,開発者の皆さんも見たことあるかと思います。)
いわゆる,「フレーム問題」のような状況が,十中八九起こりえるのです。
https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E5%95%8F%E9%A1%8C
そうなると,動きが停止したようになり,次の動作がリアルタイムにできなくなってしまうのです。
そこで「改善をリアルタイムにすることをやめる」という選択を,今回しました。

その場合、
 先に綿密な計画を練る(自分の頭の中の理想状態DBを完璧に近い形に仕上げる)→実行

が,僕の経験則上,最もうまく動作(仕事)を進められる,と記憶しています。

もっといいのがあるよ!という方へ

もし,「もっといい理想的な自立思考AIができるよ!思いついた!」or「一部分だけど作れたよ!」という方がいらっしゃいましたら,コメント欄を自由に使っていただいて結構ですので,ご教授をよろしくお願いします。m(_ _)m

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2