ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

汎用AI開発委員会コミュの記号着地

  • mixiチェック
  • このエントリーをはてなブックマークに追加

コメント(37)

これってやっぱりAIにデータベースを装備するしかないと思うんですね。それも百科事典的な。

あとパターン認識したものを、いかにして記号着地させるかは、また別の問題ですけど。
データベースは絶対に必要ですよね。でも、百科事典的というよりは、やはり人間のように随時情報を取り入れて成長・変化していく仕組みでなければすぐに陳腐化するし、装備することさえ大変ではないでしょうか。

でも、記号着地にしても、パターン認識にしても、データベース化にしても、その前に「価値」の問題があると考えます。何を価値とするか、という根本の方向付けというか、前提がなければ何もできないか、できても使えないものになってしまうのではないでしょうか。

しかし、これってすぐに「AIに人格を与える」って論議を引き起こすと思います。私はそもそも「知能」自体が人間がその有益な代用品として必要性を認めるものなのですから、非人格的な知能なんて存在しないと思います。
データベースは知識有機的自己進化型ルールベースじゃないと無理。LispやPrologは古典的AIには有効だったけど、もうその限界が見えた気がする。だからまずデータベースシステム作りからはじめるべき。

「価値」つまり「記号を着地させる所」っていまどれぐらいの研究が進んでいるんだろう。着地させようにも目標もなく着地はできない。まあ、これはデータベース作りとも関係してくるんだけど、「人工知能言語(「価値」を定義できる)」と「人工知能仮想モデルマシン(論理的思考や推論が可能)」を作った方が早いかもしれない。

私もAIには人格が不可欠だと思います。まあ、AIに「人格」を与えると「人権」ってものも生じてしまいますね(国際法的な「基本的人権」に忠実ならば)。鉄腕アトムってのもそこらあたりを描いた作品といえます。
できれば「因果関係を推論できるデータベース」ってのができればいいんですが。

SQLの組み合わせで色々考えた事あるんですが、どうしてもモデル化の段階でつまずいちゃうんですよね。後、自己増殖(覚える)、自己淘汰(忘れる)って考えていくと、ライフゲームのような万能チューリングマシンをベースにしたデータベース作ったらいいんじゃないかと。
今日本屋に行ったら、いい本を見つけました。

「いまどきのプログラム言語の作り方」毎日コミュニケーションズ・randy

まあ、Javaぐらいの言語なら作れそうですね。いっそのこと、「Java + SQL + Prolog + 自己拡張可能」みたいなプログラム言語とインタプリタ設計してみようかな。
ちょっと考えたんだけど、オブジェクトの拡張(継承でのメンバー変数やメソッドの追加)を動的にできるような言語を考えればいいかな。で、それをオンメモリと同時に、SQLで因果関係(強化学習させて)つけてデータベースに格納すればOK?

でもまだ、意識境界線って大きな問題があるなあ。
「記号着地」に対してのある考察

今日、こんなことがありました。

私が外を歩いていると、何か物体が近づいてきた。

1.それは動物である
2.4つ足で歩いている
3.大きさは50cmぐらい
4.毛がフサフサ生えてる
5.「ワン」と鳴いた
6.etc...


ここで私の記憶している情報に検索をかけた。
「この物体は、私の中に記憶、定義されている『犬』の要件を80%以上の確率で満たしている」

そして推論。
「この物体は『犬』である」

人間ってこのような手順で記号着地しているんじゃないだろうか。
AIに記号着地させるにも同様な手順を踏めばいいのではないかと思う。

1.まず「言葉」を提示する
2.その言葉の持つ属性を「重み」をつけて定義する

フレーム問題に陥らないようにするためには、「そのオブジェクトの属性の重みの合計が、あるしきい値を超えたら、その定義の要件を満たしている」として記号着地すればいい。

フレーム問題の根本的な過誤は「属性に重みをつけず、平等に扱った」ことにあるような気がする。実際、人間もフレーム問題を完全に解決してないが、それでも生活できている。それは「万が一にも起こらない可能性のことは最初から除外する」という経験則に則ってるから。
ちょっと補足。

> 1.それは動物である

Q.なぜそれを「動物」であると認識できたのか?
A.それは「常識」があるから。

AIの場合、手続型言語であれば「常識」をルール化してしまえるので、そこからフレーム問題に陥ることはない。
percent flag = 0.percent;
if(it.move == true){ flag++; }
if(it.move.how == legs.4.num){ flag++; }
if(it.size ?about? 50.length.cm){ flag++; }
if(it.appearance == organism.mammal.appearance.bristle){ flag++; }
・
・
・
if(flag > 80.percent){ it.kind = organism.mammal.kind.dog ;}
----------------------
非常に頭の悪いコードでごめんなさい。
んで、書いて思ったこと。
「percent」:率を格納する型。
「?about?」:”ぐらい”を意味する比較演算子。こんなの他の言語でもあったらいいなぁ。。
「50.length.cm」:”単位”の概念が必要になるのかなぁ。
「organism.mammal.appe・・・」:どこまで深く定義すべきなのか

というかみんな直感的に思うだろうけど、「私はこんなことしてる覚えはない」
なんかなぁ・・・Inputを受け取って中で照合してるというより、Input自体が内部データベースを操作してるかんじがするんだよなぁ・・
多分、人間が犬を認識する時には、「属性検索の優先順位」みたいなものがあって、それに沿って調べている気がする。
大まかに「動物」「大きさ」「4つ足」でグルーピングして、ある程度候補を絞ってから、「常識」に遵って「ここは動物園じゃない」っていうことで大部分の動物を候補から外す。そして「犬」か「猫」ぐらいに候補を絞って、その後は総当りで、犬の持っている属性に近いか、猫の持っている属性に近いか、調べて「これは『犬』だ」って認識しているのかな。まあ「ワンと鳴いた」みたいな絶対的な属性があれば、即座に犬であると判断を下すのだけど。
 これを利用すれば人工無能なんてすぐにできちゃう。対象が何か、属性の重いものから質問していけばいいから、汎用エキスパートシステムなんてすぐにできる。
 生物はこれをパターン認識と連動して行うから、高速に対象が何か「認識」できるのだと思う(生物の場合、「危機回避」が第一優先条件だから、自然と「認識」が発達したと思う)

「?about?」みたいな演算子あると便利ですね。これはファジイ解析を応用できそう。? about,80% ? とかで「80%ぐらいの確率でそれにあたるか」なんて使い方もできそう。
自律型のロボットプログラムを組んでみたいなら「カルネージハート」っていうPlayStationのゲームやってみればいい。今だとPSP用に「カルネージハート・ポータブル」ってのが出てる。

大体最初に「10m以内に飛行物がある時はしゃがむ」「50m以内の時は任意の方向にジャンプする」みたいな危機回避ロジックがあり、それがなければ移動なり攻撃なりを行うのが標準的なプログラムの作り方。最初に自分に危機がなさそうな状態を調べることでフレーム問題から逃れている。

まあ、ゲームとしてもよくできてるので、一度お勧めしておきます。
それはif文のみでAIが作れるって主張の肯定?
ゲーム等のシミュレータの中だけで完結するAIなら可能かもしれないけど、現実世界を考えたときに得られる刺激などそれこそ無数にあるわけで・・・
そういうわけで、私はifの逐次処理のみでAIが作れるという主張には反対します。

あと、
>>「ワンと鳴いた」みたいな絶対的な属性があれば、即座に犬であると判断を下す
ここが分からない。それまでの処理(仮に処理1とする)を中断して、別の処理(処理2)を始めて、それで前の処理(処理1)の判断を下している?時間的に考えると、処理1を処理2が追い越していて、そこが実際にプログラムで記述するときにどうやるんだろう?と私は思ってしまいます。人間なら並列処理が可能だから、ごくごく普通にこなしてしまうけど、ノイマン型コンピュータにはとても困難に思えるのです。
Inputに対し、スレッドを乱立させて解析する?きゃーデッドロックだわーw

>>「常識」に遵って「ここは動物園じゃない」っていうことで大部分の動物を候補から外す。
この部分には同意。”このシチュエーションでありえる事象”のみを候補に入れているんだと思う。心理学でいう「赤ずきんちゃん効果」でしょうな。しかし、それをどうコード化するか?というのでいつも詰まってしまうのですよ。。
> それはif文のみでAIが作れるって主張の肯定?

あくまでも私は「『言葉』を提示し、その属性を定義する」という「モデル化された現実世界」を想定している。その意味においては「if文のみでAIが作れる」というのはその通り(もっと正確に言うとifと論理文だけで)。だって、実際人間の脳だって目、耳、触覚から入ってきた電気信号をパターン処理してある「言葉」として「記号着地」しているでしょ? ここらあたりはイデア論とも絡んでくるんだけど、私に近づいてきた物体はイデア論的には本当は「犬」ではなかったかもしれない。でも目から入ってきてパターン認識した信号は「犬であると推論した」わけ(ここらあたりは一度「唯脳論」を読んでみて下さい)。もちろん、現実世界の精妙さは驚くべきものだけど、現時点でコンピュータで処理できるレベルまでモデル化するのなら、イデア論よりも唯脳論の方がシンプルに割り切れてる。

>> 人間なら並列処理が可能だから、ごくごく普通にこなしてしまうけど、ノイマン型コンピュータにはとても困難に思えるのです。
だから属性に「重み」をつけて定義するのが有効ではないかといっています。
例えば、

1.「空を飛んでた」...否定条件
2.「ワン」と泣いた...必要十分条件
3.「動物である」...必要条件


みたいに重みの中にも、否定条件なのか、必要十分条件なのか、必要条件なのか、の順に属性チェックをかけていけばいい。否定条件を満たせば即座にチェックから外すし、必要十分条件を満たせばそれでOKだし、必要条件にも重みをつけてあるので、ある閾値を超えれば「その確率が高い」として記号着地する。これならノイマン型でもそう問題なく処理できるはず。別にマルチスレッドなんて使わなくてもコーディングできる(使った方が効率いいけど)。

> しかし、それをどうコード化するか?というのでいつも詰まってしまうのですよ。。
こればっかりは「書いてみせる」しかないでしょうね(今、そのための準備をしてます)。まあ、そのためにはどのように「常識」をハードコーディングするか、色々考えています。
カルネージハートはかなりハマりました。ジェットストリームアタック組んだりして。最近出たPSP用だと物理空間がシミュレートされているようで、是非欲しいのですが(小遣いがなくて買えません…苦笑)
> 言葉の問題ですが。

まあ、それができれば記号着地ですね(苦笑)

私の場合は「パターン認識されたもの(オブジェクト)がある『言葉』として意味をなす」ことを「記号着地」と呼んでいます。
そのためにはバックボーンにその「言葉」の定義が必要。実際コンピュータでイデア論的なオブジェクトの定義を認識させるのはまず不可能だから、「言葉」だけの処理に特化した方が強いAIを作るには現実的ではないかと。ただ、世の中で言っている「記号着地」の根本的な問題って単に、「単純にその定義の属性をある程度満たせばいいんじゃないの?」って気がするのです。

話がまだ噛み合ってないですかね。
私の場合は、すべての基本となる「『文章』の知識データベース化」を、まずは端緒としたいと思います。文章ができていたら音声は音声認識にパイプを繋げばいいわけですから。

画像というのは今の所、パターン認識がどれぐらいの成果が上がっているか詳しくは知らないので、優先順位は低いです(全盲の方でも意識を獲得しているわけですから)。もちろん「映像→文章」をやってくれる人がいるのであれば、それは大歓迎です。
>>tillieaさん
拙い言葉を補完していただきありがとうございます。
その通り、私は実物としてロボットを作っているのですが、いつも”時間”をどう扱おうかと悩んでいます。逐次更新される環境に対応するためには、新しい情報はどんどん取り入れたほうが良いし。それまで推論を続けていたプロセスを止めるのはもったいないし。。
また、文章解析についても、最近の研究では”単語の出てくる順番”等にも注目してますよね。これもある意味”時間軸”だと思うわけです。
これは昨日、原付に乗りながら家に帰って来る時に考えました。人間の場合、その単位時間ごとの「接近してくる、または危険物」を優先して処理している気がします。特に視覚がある場合、視野に入って来る物がその対象となっているのでは? 推論も「危険度の高いものが新たに現れた」(例えば向こうから走ってくるオブジェクト=自動車)ら、一旦それまでの推論をご破算にして再度推論プロセスを開始しているんじゃないかと。また視野に入っていても危険ではないもの(例えば道の向こうに建っていて動かないオブジェクト=建物)は、推論の優先順位からは低めであると。
だから人間の場合、視野にあるもので記号着地したオブジェクトをマッピングしておいて、あとはその危険度(自分までの距離)が上がっているのか下がっているのかに注目することで、フレーム問題からは逃れている気がします。だから目をつぶって部屋を歩くと、物にバンバンぶつかる(フレーム問題を処理しきれない)のも仕方ないかな、と。
入力情報から属性を抽出してそれを記号に落とし込むという風な考え方をしている人が多いようだけど、入力情報から属性を抽出する段階でかなり情報が記号化されてるような気がして妙な感じがします。
人間が認識しているすべての事象は、それぞれが数千万とか数億ぐらいのスケールで、たくさんの情報からなりたっています。それらの情報群を「属性」という大きな枠組みで分類しようとしていては認識の本質にいつまでたってもたどりつけないような気がします。
ニューラルネットワークですな。脳内に100〜200億はあると言われているニューロンの一つ一つに、身体中の神経の入力と筋肉の出力を全部つないで、入力と出力の関係を築く・・・
もちろん、それこそがホンモノであり、理想なのですが、そこまでいっちゃうと、”人”がいじれなくなると思うのですよ。じゃあその辺は大学や専門の研究機関に任せて、ここではコミュの名前にあるように、”汎用”に使える人工知能を開発してみようという話しではないのですか?
私はそういう方向からのアプローチもアリだと思います。細かく細かく作っていったら、もしかしてNNを用いた人工知能と区別ができないほどのモノもできるかも?
あと「開発しやすい」というのもありますね。NNに多量の入力と出力を学習させるのには、現在のコンピュータでもかなり手間取るのではないですか?また、その評価方法はどうなるのでしょう?
>>しょうちゃんさん
>それらの情報群を「属性」という大きな枠組みで分類しようとしていては認識の本質にいつまでたってもたどりつけないような気がします。

「認識の本質」というと、すぐにイデア論的な認識論談義になってしまうので、ここではそれは止めてあくまでもコンピュータで扱えるレベルの「認識」を考えています。ここではその単位を「言葉」レベルで扱っていこうとかなと。「犬」っていう言葉にはイデア論的にはいろいろな認識から成り立っているんだけど、「言葉」としては文字コード化された「犬」でしかない。日本語の分からない人に「犬」を見せても何のことか分からずに単なる図形としてしか認識されないでしょう。もちろん「それって単なる言葉遊びじゃん」となる可能性もなきにしもあらずなのですが、「言葉」っていうのはコンピュータが扱うレベルのデータのモデル化度合いにはちょうどいいかな、と思っています。
「属性」というものももちろん「認識」されたものであり、そこから無限に「定義付け地獄」にはまり込んでいく可能性もあるのですが、そこは「常識」をルール化することで、なんとか逃れようと考えています。
どうでもいいからコードが見たい。

話しはそれからだ。
いや、実際、肯定文or否定文の区別すらどうしようか悩んでる。
にほんごにがてなんでぷろぐらむこーどがよみたいなぁ〜
知能を開発するために人間が知識を一つ一つインプットしていく事は不可能だと思うし、もしそんなことが出来たとしても知能のレベルは開発者の知識の範囲に限られたものしか出来ないと思います。人工知能自体に新しい発想といったものも生まれ得ないので当然フレーム問題にぶち当たってしまう事も必至ではないでしょうか?
人が知能をいじくったり、常識をルール化するといった方法をとれば、ある作業に限定した能力を持たせる事は可能かも知れませんがここで議論されているような「汎用」性のある知能には到底及ばないと思います。
>> yonekenさん

そうなんですよね、結局コード書いてナンボですから。今、一番最初に「生存本能」を満たすプログラムを考えてるんですが、まだちょっと発表するとこまで出来上がっていません。

1.「人間」は「動物」から継承されたオブジェクトである。
2.「動物」は(内部的には0から5までの)「生存状態」を持ち、「時間」が経てば徐々に減っていく。
3.「人間」は「生存状態」によって、「満腹」「普通」「腹減った」(もっと細かくすることも可能)という「感情」を感じることができる。
4.「生存状態」0になれば「死亡」する。
5.「死亡」を回避するには「食物」を得る必要がある。「食物」を得れば、「生存状態」が良好になる
6.この死亡しないルールを「生存本能」としてルール化せよ

コード自体は頭に浮かんでいるんですが、果たしてこれでいいのかどうか、ちょっと考え込んでいます。
>> しょうちゃん

このプロジェクトでは「記号着地」ってのはそう重要な問題ではなくて、全体の割合でいうと2〜3割の重要度でしかないんです。

それより重要なのは「推論」を含む「意識」をどのようにプログラミングするかの方が重要。人間の場合、未体験の事象にも対応できているんで、そのベースにある推論エンジンは割とシンプルにできているんじゃないかと予想しています。

論理的思考(AND、OR、NOT)、三段論法、演繹、帰納ぐらいを教え込んで、あとは因果関係を意識できるようにする(←これが一番の難関)。これをどうプログラミングするかは、まだ答えが出ていません。

その基本的なシステムさえできちゃえば、後は汎用AIに新聞でも読ませておけば知識データベースを増やすことは簡単なんで、あまり杞憂はしていません。
>>焚麻さん

> とりあえず、今回の目標とするコンセプト、プロジェクト像をハッキリさせないとなんとも言えませんね。

そんなんですよね。まあコンセプトは「『言葉』による知識データベースの作成」「『意識』の獲得」が2大テーマです。

そのために付随する基礎技術として、「限定された世界(部屋と町程度?)の知識データベース構築」「人工知能言語の設計・制作」あたりから手をつけようかな、と。
「ゲーム開発者のためのAI入門」って本を読んで感じたのですが、ルールベースのAI、スクリプティングエンジン、ベイズ法、ファジー理論、遺伝的アルゴリズムをもっと掘り下げないといけないみたいですね。自然言語処理は優先度的にはちょっと低めかな。

まあ、個人的に空いた時間でやってるので、ぼちぼつやります。
因果関係って、強化学習の結果、「関係が真、または極めて強」の場合、「有り」と見なすのかな? ちょっとこの問題を考慮中です。
>>30 taked2さん

「生存本能」を満たすプログラムについてですが、「汎用」とは、「人間が色んな目的に利用できる道具としてのAI」という前提ですよね。

そうなると、生存させるべきは一義的には「AI利用者としての人間」であって、人間の持つ「生存本能」は、AIに認識させるべき人間の属性の一つだということで間違いないですよね。

言葉尻の問題を突っついてなければ良いのですが、AIが人間の生存をサポートする上での本質的な価値は生存「本能」を満たすことではなく、「生存」そのものを持続させること、という方向性で考えれば、「人間が食物を摂取すること」も「人間を危機から回避させること」も、人間その他の属性を詳細に知識化し、入力情報との因果関係を推論することで記号着地となり得ると思います。
> そうなると、生存させるべきは一義的には「AI利用者としての人間」であって、人間の持つ「生存本能」は、AIに認識させるべき人間の属性の一つだということで間違いないですよね。

まあ、そういう風にルールをコードでさくさく書いちゃう事はできるんですが、「汎用」となるとちょっと考えないといけない事があるんです。

つまり「人間は動物であり生存本能を持っている」という属性から、「それなら動物である犬も生存本能を持っているだろう」というように推論させるためにはどうすればいいか、という問題があるんです。つまり「演繹」「帰納」をどう推論エンジンに組み込めばいいのか、まあ「生存本能」のような単純なモデルでどこまでをルールとして作りこむべきで、どこからは推論エンジンに任せるのかの線引きをしたいと思っているんです。
まあ、推論エンジンも最初はPrologぐらいをベースにするのが現実的なのかな。

ログインすると、残り6件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

汎用AI開発委員会 更新情報

汎用AI開発委員会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。