強いAIの実現方法 ~実践的な作り方~

強いAIの実践的な作り方を検討しています。メイン記事に主張をまとめています。人工知能関係の書評もあり。なお、今後、任意団体として活動してみたいと考えており、手伝ってみたいという方は是非ご連絡下さい。詳しくは、メイン記事の7を参照下さい。

作って動かすALifeを読んだ(中編)

作って動かすALife 実装を通した人工生命モデル理論入門(中編)

岡 瑞起、池上 高志、ドミニク・チェン、青木 竜太、丸山 典宏 著
2018年07月 オライリージャパン

 前編の続き。第5章までは、自己複製を扱っていた。しかし、人工生命(Alife)の意義は、進化により機能を発達させることにあるため、第6章「個体の動きが進化する」では、自己複製が可能なモデルを前提として、進化の概念を導入する。思えば、人工生命が最初にメジャーになった時、進化をさせれば人間まで辿り着くのではないかという期待もあった。しかし、著者が5章で述べているように、1994年のシムズの研究「Evolving Virtual Creatures(進化する仮想生物)」以降、目立った仮想動物の出現には至っていないというのが現状である、とのこと。

 適応度地形なる概念が紹介される。適応度は、より高い適応度の動物が数を増やし、低い動物は数を減らすというもの。環境に応じ各生物が適応度が高くなる方向に進化することで、縦軸が適応度で、いくつも山があるような等高線がかけるようである。進化に従い複製の成功率が高くなったり個体数が増えることを「適応度の山を登る」と言う。人工生命の世界では重要な概念らしいが、結局は後付で生物の進化の方向を説明するものであり、本書の著者は否定的であった。むしろ、進化は高機能化とともに多様性を生み出す装置である、という考え方を述べており、ブログ筆者も共感する。

 また、OEE(Open-Ended Evolution)という概念があり、ある戦略が優位になっても必ずそれを凌駕する戦略が生まれ、進化は終わらないというものである。

 これらを背景に、実際にエージェントをGA(遺伝的アルゴリズム)で進化させるのが6章の中心である。GAは、15年ぐらい前に流行ったものですね。

 入力層に9つ、出力層に4つのニューロンを持つエージェントで、中間層(隠れ層)はニューロン4個1層のシンプルなニューラルネットワーク。隠れ層と出力層にはバイアスも入力できる。Kerasで実装。
 入力層のうち、実際のセンサ入力は7層、出力層のうち2つをコンテキストニューロンということで入力層にフィードバックさせ、入力層を7+2で9層としている。(コンテキストニューロンというのは、RNNの簡単なものと考えていいのかしら)
 実際の出力層は、速度と進行方向角度の2つを出力する。センサ情報を元に、エサが分布している空間において、エサをたくさん集められるエージェントをGAで作り出す。遺伝子数がニューロン間の重み係数で60個。
 紹介されているプログラムでは、個体数は50個、ランダムに1/3はそのまま残し、1/3は交叉、残り1/3は突然変異で進化させる。

 この実装内容はシンプルであるが、ごはんを知的に集めるというエージェントの目指すべき基本的な姿は自分がやりたいことと同じで、実装例として参考になる。
 最初この本を手にした時、実は、自分がやりたいことをこの本のプログラムベースで改造していこうとちょっと思っていた。しかし、入力層の数をもっと多く、中間層を多層にしたぐらいでは全く追いつかないであろうということも良く分かった。身体モデルにおいてセンサ入力の設計、出力の設計を固めることで、AI部分の実装をどうしていけば良いのかが見えてくると思われる。身体を複雑にしていくと出力層の数も増えていくのだろうけど、幸い意識はシングルタスクであり、上手く一つの行動をとるようにしていくことになるだろう。

 自分の環境ではグラフィックに問題があり、走らせるにしても魔改造をしなくてはならないので、実施例はまた機会があれば。

 また、本章ではTierraが少し言及されているが、インターネットで見る限り、活動は15年ぐらいまでに終わっているようだ。生物学者だったTom Rayの作ったAlifeの初期の代表的な研究成果であり、CPUの占有時間、メモリ占有量等を争うプログラムを生物の進化に見立てた。
 シムズにしてもレイ博士にしても、誰かが立ち上げた人工生命プログラムは、天才が残した成果から、その後が続いていないようにみえる。必要なのはオリジナリティと才能なのかもしれない。
 独自性という意味では、外界と身体を記号化すべきという自分の主張は、まだオリジナリティを失っていないように見える。

 なお、人工生命のプログラムとして、ARTILIFEというドワンゴの人工生命ゲームプロジェクトがあるようなので、ちらっと見てみたが、動きが気持ち悪かった…別記事にしよう。

作って動かすALifeを読んだ(前編)

作って動かすALife 実装を通した人工生命モデル理論入門

岡 瑞起、池上 高志、ドミニク・チェン、青木 竜太、丸山 典宏 著
2018年07月 オライリージャパン

 オライリージャパンの宣伝が目に入り、最近買ってないなぁと思って最近の新刊リストを眺めていたら、タイトルを見て、目次に身体性とブルックスのサブサンプションアーキテクチャのことが書いてあり、慌てて購入した。Amazonお急ぎ便をキャンセルし、本屋に出向きました。

 東大池上研究室を中心として、人工生命の最先端の状況を実践的に示してくれる。人工生命の本は、かなり古いものしか持っておらず、助かった。というか、自分がやりたいことが人工生命でもあるので、どきどきしながら読んでいる。

 第1編はチューリングサイバネティクス等の人工生命へつながる歴史。第2編はオートマトンライフゲームチューリングの業績の一つである、生物の印象的な縞模様、まだら模様を生成するメカニズム等。ライフゲームと言えば、emacsに入っている隠しコマンドで知っていた。アルゴリズムとプログラムの詳細な説明があり、実践的で分かりやすい。

 第3編は個の形成と自己複製について。厳密な自己複製では無く、緩い自己複製を行うことで逆に環境に対しロバスト性を有することが出来るとのこと。細胞膜を受動的に生成する仕組みが単細胞生物としての個を確立しているという指摘が面白かった。

 第4編は群知能。実はブログ筆者の20年以上前の卒論も、マルチエージェントシステムでの強化学習による最適パターンの自己創発というもので、群知能は昔から関心がある。本書では、ボイドモデルの紹介に多くのページをさいている。また、群知能が大型化することでイノベーションが生まれやすいという見解が述べられている。人間の創造性が集団知にあることを示唆しており興味深いとのこと。

 第5編が、身体性とサブサンプションアーキテクチャである。なんとなく、サブサンプションアーキテクチャで高層ほど高度な判断を行うみたいな記述があり、ブログ筆者とは見解が異なる。身体性について、ブルックスが述べていること以外のことで述べられているのは、脳と身体が共に進化する共進化という概念である。ブログ筆者としては、ブルックスの意見から導きかれることは別のページではっきり述べているので、ここでは繰り返さない。付属のpyプログラムで、サブサンプションアーキテクチャを実装して試せるのが大変ありがたい。

 前半はここまで。第6編以降に進化等も含めた複雑なALifeの最新状況が語られるので期待したい。

 なお、本書のpyを動かそうと思って、初めてpyにふれた。ブログ筆者はC言語の使い手なので、行列の扱いが簡単になり便利と思いきやファイルの書き出しに苦労するなど、さすがに慣れないと違和感がある。pythonに慣れるべきなのだろう。
 また、Windows7で使ってみたが、本書のプログラムではVisual関係でエラーが出て、結果のビジュアル表示が出来ない。救援を求む。以下がエラー内容。

f:id:tomotomo47:20190303021323p:plain

 

提案のまとめ 詳しくは右側のメイン記事で

・構成論的アプローチを実践するのに、実ロボットを実環境で動かすのではなく、外界モデルと身体モデルの中でAIを走らせ、ソフトウェアのみで行うことを提案。
・意味は外界ー身体ー脳の相互作用であり、人間は意味を記号で理解する。脳ではなく外界と身体をソフトウェア上で記号化し、その世界でAIを動かすことで、意味が理解できない弱いAIの欠点を克服し、強いAIへの突破口とする。

身体モデルの構想

 本ブログでやろうとしていることは、外界-身体-AIの相互作用により、AIが意味を取り扱えるようにして、強いAI実現の突破口とする、外界-身体は、辞書レベルでモデル化したソフトウェアで良い。

 今回は、身体モデルについて、要件と作成方針を具体的に整理していく。言うなれば、意味を扱うことを目的とした人工生命モデルであり、そのために必要な要件を、大きな構成要素ごとに整理していく。 

  • 身体モデルの要件
    ①AIモデルに対し、外界とのインタフェースを担い、双方向の作用を及ぼすこと
    ②(意味とは差異だから)作用は差異として定義できれば良い
    ③人が単語として識別している(辞書に載っている)身体に関するものが存在すること。外界モデルで定義されたモデルに対応した、AIモデルとのインタフェースを有すること。

  • 実体に関係する身体モデルの作成方針
     より具体化していく。まずは、物理的に存在するものの取り扱いについて。
     AIが、リンゴを認識することを考える。外界モデルでリストアップした、リンゴの意味(差異)は以下の通り。
    ・食べ物である
    ・表面は赤であり、中は白い
    ・芳香がする
    ・甘い味がする
    ・固い歯ごたえがある
    ・手のひらに乗る程度の大きさであり、口に入る大きさである

     上記に対応し、身体が具備すべき機能は以下の通り。
    ・食べ物を摂取するIFがあること
    ・食べ物を食べる必要があること(食べないと死んでしまうこと)
    ・視覚があること
     視覚の実装方法としては、以下の二つが考えられる。
    ①リンゴを見たらAIが「リンゴ」と分かる。
    ②色、大きさ、外形等からAIがリンゴと識別する。
     ①の場合、AIは、名前を知っているものだけを識別できる。名前を知らないものを見た時に、人に名前を聞く等の学習プロセスがない。ただし、その学習プロセスが知能形成に必須ということがない限り、①でも良いと考える。実際に、人間は名前を知っているものしか識別できないのだ。また、外界も記号化されているので、名前を知っているものしか存在しない世界にエージェントは生きることになる。
     視覚については、時間が1ステップ進むごとに毎回視界内にある物体のリストアップをすることになる。単純にプログラムすると、地球の裏側にあるようなものまで常に視界内にあるかのチェックを行う必要があり、エージェントの数、対象の数により演算量が増えすぎるので、あらゆる物体の位置について、自分の属するセルにいるものだけチェックする等、プログラム的な工夫が必要。

    ・匂い、味が分かること(嗅覚、味覚)
     AIはリンゴの嗅いと味を知っていることになる。食べ物の好き嫌いはエージェントごとに変えられるので、エージェントの個性になり、世界が多様化していく要素になるが、好き嫌いを、AIモデルに入れるのか、身体モデルにいれるのか、というのが問題になる。
     ここでは、動物が実現しているような機能(好き嫌い、欲求、報酬系等)については、身体側とする。例えばリンゴを食べてまずいと感じるまでは身体モデル側ということだ。
    ・リンゴを手に取れること(アクチュエータ)
     物理的に模擬せず、1m以内に近づけば取るか取らないかを選ぶ感じで良いと思う。

     以上は、リンゴに関係する身体モデルだが、実際には移動、疲れ、気温センサ、睡眠等、その他の実体に関する内容を盛り込んでいく。洗い出し方法は、辞書による。オントロジーという話もあるが、人間が見て意味が分かるように整理されただけでは意味が無い。やりたいことは、外界―身体が連接したオントロジーを定義し、その中で人工生命シミュレーションを行うということかもしれない。

  • 実体の無い外界に関係する身体モデル?
     辞書を見ていくと、当然ながらリンゴとかとは異なり、実体の無い単語が多く出てくる。友情、努力、勝利、戦争等、社会に伴う概念が多い。友人と親友とかどうやって区別するのだろう。このような概念もモデルに入れ込まなくてはならない。信頼という言葉を考えると、獲物を取りに行く時に誰と一緒に行くかみたいな用途で、かなり原始的な社会でも出てくる概念に見えるため、初期段階からAI側にしろ身体側にしろ実装をしていくべきと考える。
     食欲を身体モデル側にいれるという方針の下では、友情も身体モデルで良いように見える。あるいは、前項で整理したように、動物で実現しているような機能は身体モデルとすると、友情はAIでも良いのかもしれない。
     やりたいことのゴールは、外界と複数のエージェントの存在により複雑になった人工生命プログラムで、欲求と報酬系でドライブされ言語能力を有する大規模深層学習系が、創発的に言語をしゃべることで知能を獲得する、ということであり、「友情」をAIモデルに入れる場合、深層学習系が自発的に友情という概念を獲得することになると考えるので、まずは身体モデル側で良いのではないかと思う。やりながら考えていく。

  • 身体モデルのプログラム構造について
     以下のような構造の構造体を定義していくことになろう。「→」は物理的な状態に対応した感覚出力。リンゴを認識するだけでは済まないので、拡張していくことを前提に考える必要がある。
    名前
    位置(X,Y)
    性別(男女)
    年齢?
    体力→満足感~空腹感→食欲
    摂食インタフェース(口のこと)
    視覚センサ→視界内の物体を認識。視界内の物体のリスト型構造体かな…。
    味覚センサ→味の好み
    聴覚→人の発言の認識(感覚出力では無いですが)
    気温センサ→快不快
    疲労疲労感(不快感)
    睡眠→睡眠欲(不快感)

     上記のようなリストが、人間の特性がある分だけ続くことになる。また、快不快→解決しようとする欲求、の組み合わせで、エージェントが行動していくことになるのであろう。欲求も(長い進化の中で)強化学習で身につけたものかもしれないが、当面は、欲求までは取得済みと考える。

     自分の状態に対応した欲求→何らかの行動の結果の報酬という系で、報酬を最大化する強化学習を施すことで賢いエージェントは育つだろうが、別の項で述べたように、新たな状況下で「こうすれば良い」と思いつけるようにはならないと思われる。また、脳内に報酬系があると言われるが、気温が低い時に火にあたって暖かくなり、不快状態がなくなるだけで良いのか、不快状態がなくなることで報酬系に出力があるのか等、人間のメカニズムに近づけた実装にしていきたい

  • 欲求などが身体モデルに属するのかAIモデルに属するのか、について
     本来、欲求などは脳内でおきていることであり、AIモデルに組み込むものかもしれないが、動物にもある機能、本能に関するもの、は、身体モデル側にしておく、という考えで行く。
     言語能力は本能なのか、というのは、生成文法等の理解が出来ていないため発言するのもおこがましいが、母国語は教えられた環境で変わること(日本人でも英語が母国語になる)から、少なくとも文法等は後天的である。また、一切言語を習わないし周囲で誰も言語を使っていない場合、言語の習得はしないだろうし、ソシュールが正しければ、虹が何色かの認識も出来ないであろう。AIモデルにおいて、言語能力を付与していく。

ごはんが3個現れた

 少し気軽に、思いついたことを書くこともしてみようと思いました。

 結局やろうとしていることは、

  • 外界ー身体ーAIの相互作用によりAIが意味を扱えるように外界ー身体モデルを構築し、人工生命の実験をしていきましょう
  • AIには身体が必要だ派の構成論的アプローチも、ソフトウェアでやればいいのです

 ということなので、強いAIを構築するためのデバック環境の方法論、とも言える。強いAI自体について、こうすれば良い、という明確な方法論がある訳では無い。ただし、実ロボットを動かしたりするより、よっぽど効率的に検討が出来るであろう。

 さて、

・外界のある場所に1日1回、ごはんが1個現れる。エージェントはそれを食べれば生きていける。

 という環境で、

・エージェントが毎日そこにごはんを取りに行く

 というのをAIが自発的に思いつくのは、強化学習等で実現出来そうである。ただし、強いAIでもなんでもないであろう。
 ここで、ある日突然、

・ごはんが3個現れた

 という時にどうなるのか。

 ごはんを3個回収するということをAIが思いつけば、ちょっと賢い。エージェントが3個持ち帰って3日間それを食べ、3日後に次のごはんを取りに来るのか、毎日取りに行って在庫を増やすのかは分かりませんが。
 在庫を増やすまでならリスでも出来るが、リスは冬の前にドングリを貯めこむように、本能にプログラミングされている。上記の例において、ごはんが3個現れた時に、強化学習で繰り返し学習して、最終的に3個回収すべきという最適解を学習した結果がリスなのだと思われる。
 従って、AIが知的(強いAI)ということは、ごはんが3個現れた時に、強化学習での繰り返し学習の果てに解決方法を見出すのではなく、3個現れた時点で、「ラッキー、3個とも持ち帰ろう」と思いつくべきなのだと思う。

 恐らく普通の人なら3個持ち帰ろうと思いつくであろうが、どうして人間がそれを思いつけるのかが分からない。

・実は過去に強化学習済み
・3個持ち帰ることによる効果を内部モデルで評価しているのか?その場合、2個持ち帰るとかも全部評価するのか?フレーム問題にならないか?
・人間は、心の中を含め、発言しなくても3個持ち帰ることを思いつけるのか?
(私は、考えるということは、心の内部で発声してそれを耳が聞くことだとも思います)

 人間が、3個持ち帰ると思いつける仕組みをご存知の方がいたらコメント下さい。

 これを思いつけるようなAIプログラムを作るべく、いろいろ試すソフトウェア環境を用意するのが、本プロジェクトの意義の一つです。ただし、環境を複雑にして、欲求、報酬系ミラーニューロン等を身体とAIにコーディングしていけば、自然と出来るようになることも期待しています。

 目の前にごはんがあれば全部持ち帰ること、というように強化学習済みなら、3個ごはんが現れたら3個持ち帰るかもな…人間がそういうアルゴリズムになっているとも思えませんが。
 あと、1度に1個しか持ち帰れない場合に、その日のうちにもう1回ごはんを取りに戻ろうとAIが思いつけるかとかも分かりやすい。人間なら思いつきそう。この問題も、強化学習で最終的に解にたどり着いても意味が無い。強化学習は、強いAI実現のための答えでは無いのかもしれない。

「人工知能の哲学」を読んだ 松田雄馬 著

人工知能の哲学 ~生命から紐解く知能の謎~
松田雄馬著 2017年 東海大学出版部

  前回ネット記事の感想を書いたが、そこで呼ばれていた松田氏の著書2冊を読んでみることとした。まずは1冊目の感想。良書を読むことができ、感謝している。

 5章構成で、それぞれ特徴ある内容である。
 第1章「人工知能」とは何か
 現在が第3次人工知能ブームにあること、ダートマス会議等から始まる人工知能の歴史を振り返る。ブログ筆者が好感を持ったのは、AIの歴史の一部としてロボット研究を取り上げ、ブルックスが開発した、身体を持ち反射で行動するロボットについてAIの可能性を見ているところにある。サブタイトルにも「生命」とあるように、著者は、生命のメカニズムからAIを俯瞰しようとしており、身体性にも注目している。
 なお、そもそもの執筆動機は、現在の第3次人工知能ブームにおいて、今度こそ人工知能が何でも出来るという風潮に対する警鐘にあるようだ。歴史が繰り返されることのないよう、賢者は歴史に学べ、とのこと。

 第2章「知能」とは何かを探る視点
 個人的にお気に入りの章である。錯覚を例として、物理的な感覚に対し騙されるようにして脳内に内部モデルを構築することで、人間は周囲を認識しているとのことである。また、先天的白内障の患者が手術で視覚を取り戻した時の反応などから、感覚だけではなく自ら動くことも重要で、環境との相互作用を通し自己を構築し、外界との調和的な関係を構築することだそうだ。
 この章で感銘を受けたのは、「赤ん坊がぼんやりとした内部モデル」で認識しているということである。人工知能の問題の一つに「フレーム問題」があり、人間が非常に上手く認識を取捨選択している仕組みが分からないのであるが、この「ぼんやりとした内部モデル」は、フレーム問題を解くカギになるかもしれないと思った。松田氏はその点にはふれていなかったが。

 なお、錯覚については、グレゴリー著「脳と視覚」が詳しい。その本を読んだ限り、錯覚という現象は、脳が騙されているというよりは、脳が両眼の画像データから3次元空間を再構築しようとしているために、実際には同じ長さの矢印を片一方は短く感じたりする、ということであった。内部モデルとは若干異なる気もする。

 第3章「脳」から紐解く「知能」の仕組み
 脳の解剖学的見地から、知能の仕組みにせまる。哺乳類には反射脳と情動脳からなる生存脳と、社会脳とも呼ばれる理性能があること、ミラーニューロンは他者の行為理解であり、そこからコミュニケーションが生まれる可能性、歌の能力が鳥、クジラ類、人間に限られること等、解剖学的見地から示唆に富む提言を行っている。
 
 第4章「生命」から紐解く「知能」の仕組み
 ホタルの群れがシンクロして点滅すること等から、生命においてリズムが重要な役割を担っているとしている。リズムといえば、ファイファーも「知能の原理」の中で、CPGによるリズム運動のアトラクタ収束について言及していた。人間はリズム運動が得意であり、階段を考えずに降りられるのも、CPGにより脊髄からリズミカルな筋肉収縮指令が出ており、ニューロンでアトラクタ状態へ収束されるからである。

 第5章「人工知能」が乗り越えるべき課題
 ここまで、AIにとって生命及び身体が重要であること、環境との相互作用が重要であることについて語ってきた著者だが、実はシンギュラリティ懐疑派であり、強いAIも懐疑派であることが本章で分かった。すなわち、現在の第3次人工知能ブームにおいては、結局は弱いAIであり、このままでは強いAIには到達しないであろうとのこと。その例として、AIが椅子を認識することの難しさを取り上げている。椅子については、次の著書のタイトルにもなっている。

 ここからはブログ筆者の見解だが、ロボットが椅子に座るには、椅子の前に立ち、関節の力を抜いて椅子に体を任せる方法がある。椅子の形状を3次元計測し、全ての関節の角度を計算して、全部の関節の角度がそうなるような軌道を計算して実行する、ということをやるから座れないのだ。力を抜き、椅子にもたれれば、重量を支えられる限り椅子が自然な姿勢をロボットに提供するであろう。これは、ファイファーが「知能の原理」で主張していることであり、知能に身体が必要であることの証左である。
 また、椅子の役割は体を休めることである。立っていると疲れる身体をもったエージェントであれば椅子の意味を理解できるであろうし、逆に、立ってても疲れないなら椅子の意味は理解できない、というのが本ブログにおける主張であり、意味とは外界ー身体ー脳の相互作用である、ということである。本ブログで取り組もうとしているプログラムでは、椅子の意味を理解するためには、身体モデルに疲れを導入することになる。

 松田氏の著書に戻ると、椅子の意味をAIが理解することの難しさを記載しながら、ではどうすれば良いのかについては、「椅子とAIとの「関係」、それによりAIが「物語」に生きること」が重要だが、それを解決する研究は着手されていない、ということになっている。
 椅子についてはブログ筆者も上記のように一家言あり、次の著書において松田氏がどのような解決に至っているか、楽しみである。

 なお、松田氏は本来なら一介のブログ筆者が言及して良いような方では無いと思いますし、この文章に変なところがあれば、それはブログ筆者が松田氏の主張を理解できていないためであろうと思うので、原著をあたられたい。特に、松田氏の文献読破量には圧倒される思いである。ソシュールについて言及が無かったが「意味とは差異である」「認識は言語に依存し、名前を知らないものは認識できない」という思想について、松田氏がどう考えるかも大変興味がある。
 ブログ筆者は、脳メカニズムについて疎いため、本書の3章を足掛かりに、参考文献等で勉強しようと思う。その意味でも、広い分野に渡ってAIに関する知識が俯瞰されている本書は、良書だと思います。

外界モデルの構想

 本ブログでやろうとしていることは以下の通り。
・外界-身体-AIの相互作用により、AIが意味を取り扱えるようにして、強いAI実現の突破口とする
・外界-身体は、辞書レベルでモデル化したソフトウェアで良い。

 今回は、外界モデルについて、要件と作成方針を具体的に整理していく。言うなれば、やろうとしていることは意味を扱うことを目的とした人工生命モデルであり、そのために必要な要件を、大きな構成要素ごとに整理していく。

 結論をまとめる。
・モデル化する対象(例えばリンゴ)の、他との差異をリストアップし、ここでは外界モデルの中のリンゴモデルで差異を表現するとともに、身体にも差異を検知するセンサを用意する。外界と身体は組み合わせて考えていく。食べ物モデルで味をパラメータにしたら、身体に味覚センサをつける等。

・最終的には上記を、辞書に載っている言葉すべてについて実施する。ただし、最初は取捨選択しながら進め、知的行動が創発される程度に複雑な環境になれば良い。

・本モデル化において、外界にあるものは全て記号化されたものであり、エージェントは言語能力を通じ記号を知っているので、いわゆる記号接地問題は無い世界になる

・坂を上った先に食べ物が有り、あるエージェントが発見すると、他のエージェントにそれを伝え、みんなでそれを取りに行く、程度の知的行動は創発することが出来るであろう。そのような行動をエージェントにプログラミングしなくても、自然にエージェントが出来るようになる、ということ。

・外界を2Dにするか3Dにするか、リンゴ等の物体を3Dモデルで扱うか概念だけでモデル化するか等は、開発環境を調査した上で決定する。
 

  • 外界モデルの基本的な要件
    ①AIに対し、身体を通じ作用を及ぼすこと
    ②(意味とは差異なので)作用は差異として定義する
    ③辞書に載っている、身体より外側にあるのものが存在すること。ただし、想定する状況は人類の歴史上で言えば狩猟時代であり、例えば自動車等は不要
    ④複数の、AIを搭載したエージェントが存在出来ること

  • 外界モデルの例…リンゴ
     ①②をより具体化していく。AIが、リンゴを認識することを考える。
     機械学習の発達により、リンゴが写っている写真を見て、リンゴと出力するエージェントは実現できるようになった。ただし、そのエージェントがリンゴの意味を分かっているかと言うと、そうではない。エージェントがリンゴを正しく認識したと認識するのは、エージェントの出力結果と写真を見比べるユーザーであり、意味を与えているのはユーザーなのである。本ブログでは、そのようなプロセスではなく、エージェントが人間と同じようにリンゴを認識するプロセスを考える。
     リンゴの意味が他との差異であるとして、その差異とは何か。以下に試しにリストアップする。
    ・食べ物である
    ・表面は赤であり、中は白い
    ・芳香がする
    ・甘い味がする
    ・固い歯ごたえがある
    ・手のひらに乗る程度の大きさであり、口に入る大きさである

     実物のリンゴは上記の複数の作用を、特に苦労せずに人間に対しもたらすことが出来る。これが、リンゴの意味は外界(実物のリンゴ)にある、ということである。外界モデルでも、上記差異をモデル化していかなくてはならない。
     また、上記の差異は、全て身体とのペアになっている。すなわち、色が赤いということは、身体側に色を検知できるセンサが必要である。食べ物であるということは、身体側は食べ物がないと死んでしまうべきである。食べ物を食べなくても維持できるエージェントは、人間と同じように食べ物を認識することは出来ない。そのようなエージェントは、食べ物の意味を扱えないのである。
     実ロボットを身体にしようとしても、そんなロボットを作るのは無理である。上記のリンゴの差異を全て扱えるロボットが作れないということは、身体性をAIで扱うためにロボットを用意しても、そのロボットはリンゴの意味を人間のように理解することは出来ない。しかし、本ブログが提唱するように、外界-身体もソフトウェア化すれば、身体性を人間と同じように扱うことができる。

  • 外界モデルを作成するプロセス
     上記の例から、外界モデルを作るということは以下のプロセスになる。
    ・外界に存在させる対象の、他との差異をリストアップする。
    ・差異をモデルに付与させる
    ・身体モデルにも、差異に対応した特性を付与する(視覚センサ等)
    ・③のために、外界―身体-AIモデルの中に存在させたいモデルすべてについて検討していく。辞書を上から読んでいくことになるであろう。狩猟時代ということで、ある程度の複雑さがあれば良く、辞書に載っていること全てである必要は無い。
     なお、食べ物であれば、実在の食べ物に合わせる必要は無い。社会の複雑さをある程度担保できれば良いので、複数種類の食べ物があり、味、大きさ、外見、重さ、摂取カロリー等のパラメータに違いがあれば良いと考える。従って、実際には、食糧0~食糧127等の、番号で区別することになるであろう。
  • プログラム構造について
     例として食べ物モデルを外界に置く場合、以下の2つの方法が考えられる。
    ①3Dモデルを作り、身体側も3Dモデルにして、拾ったり食べたりの動作を実際に行わせる。味等、3Dモデルだけで表現出来ない変数は追加で付与する。
    ②3Dモデルではなく、全て変数として扱ってしまう。位置はXYZ座標にして、近くのエージェントがリンゴを取る動作をしたら、そのリンゴは手に取られたことにする。

     これは、開発環境として何を採用するかに依存するので、別途考える。Unity等の汎用開発環境をベースにする場合、①でもいけるであろうが、自由度が下がるかもしれない。開発環境の詳細を調べていないので、開発環境を調査した上で決定したい。

     いずれにせよ、例えばリンゴのモデルがエージェントの視界に入ったら、エージェントは「リンゴ」だと認識できるようにする。外界は記号をベースに構成され、エージェントは言語能力を通じ記号を知っているので、いわゆる記号接地問題が無い世界になる。

  • 世界構造
     外界である以上、エージェントがうろうろする世界構造が必要である。これを3Dにするか、単純に2Dにするかも、開発規模及び開発環境に依存してくる。簡単に開発環境が準備できるようであれば、3Dにしても良いかもしれない。木をゆするとリンゴが木から落ちてくるとかを、開発環境が模擬してくれるのであれば。ただし、そんなところの模擬が必要なのかは分からない。
     それを発見したエージェントがそれを言葉で他のエージェントに伝え、他のエージェントも真似をして木を揺らして楽にリンゴを手に入れる、というのを、プログラムしなくても創発的に出来るようにはなると思う。
     あっさり書いているが、これこそ知能のあるエージェントなのかもしれない。2001年宇宙の旅で、モノリスに遭遇した類人猿並みというか。地形に起伏があると、山の向こうに食べ物があることが分かり、次の日リーダーが群れを率いて山の向こうに食べ物を探しに行く、ようなことも創発できると思う。

     時間の考え方も、開発環境に影響される。ステップ毎に計算する形か、リアルタイム性を持たせるかの2種類であろう。汎用開発環境を使用する場合、リアルタイム性でもいいと思うが、リアルタイム性ありの環境では、逆に計算を加速できないかもしれない。早送りは出来るのであろうか…。
     外界モデルとしては、昼夜の区別、気温差、四季等、狩猟時代をモデルとして最低限の環境は再現したい。

未来学者は間違っている 私たちの知能の座は「ゲノム」だった 佐倉 統 を読んだ

 ネットの記事であるが、本ブログでも最も着目している、身体性を取り扱った記事であり、結論に興味を惹かれたので紹介する。著者は、理化学研究所のAIPチームリーダー佐倉統氏。

 勝手にリンクをして良いのか良く分かりませんが、シェアは歓迎だと思われるので、同じ扱いで、問題なしとさせて頂く。

gendai.ismedia.jp


 理化学研究所のAIP(革新知能統合研究センター)というと、政府肝いりで日本の人工知能研究者のエースを投入し、諸外国からの遅れを取り戻そうとしている新進気鋭の組織であり、そのリーダーが身体性に着目されているのは嬉しいことである。松尾豊先生も身体性を今後のキーワードとしており、米国に先んじる分野として、日本においては身体性が注目されているのかもしれない。

 気になったのは結論の、「はじめに言葉ありきではなく、はじめに身体ありきなのだ」というところだ。
 当ブログでは、身体性こそ強い人工知能の鍵であると同じ主張をしている。ただし結論は「はじめに言葉ありき」であり、同じく身体性に着目しながら、ここまで結論が違うのが面白かった。

 佐倉先生の主張は、「今まで、「知能」という概念が対象とする範囲が、あまりにも脳偏重だったのだ。知能は身体と密接な関係にある。いや、むしろ、「知能とは身体性のことだ」と言ってしまってもいいのではないかとすら思う。」とのことだが、これは90年代からブルックスやファイファーが主張していたことである。

 ブログ著者の主張は、身体性の意義は環境ー身体ー脳の相互作用にあり、人間は意味を記号で理解するから、環境ー身体も記号で表現してAIが扱えるようにすれば良い、とうことだ。だから「はじめに言葉ありき」なのであり、脳の記号化では無くて環境ー身体を記号化せよ、ということである。
 「はじめに身体ありき」と言って、ロボットを実空間で動かすことにこだわると、ブルックスやファイファーの辿った道に陥るのではないかと思う。
 ある意味、私の主張に独自性があることは、このブログの存在意義にもなるとは思いますが。私が書いていることは、身体性に注目することは前提で、その際に、環境ー身体は実はソフトウェアでいいのです、ということなので。


 記事の細部を読んでいくと、まず、カーツワイルの議論に誤りがあるとのこと。カーツワイルの、コンピュータには体がないので、人間と異なりいくらでも大きく出来るから超知性ができるという主張に対し、コンピュータにも本体があり、発熱等が問題になるから、カーツワイルは身体性に無頓着すぎる、ということであった。
 身体の意義が、環境と脳の相互作用を司る、と言う意味では、カーツワイルは身体の役割にかまわな過ぎると言えるかもしれないが、佐倉先生のように計算機本体をコンピュータの身体だと言っても仕方ない気もする。計算機の原理は、実はアルゴリズムであり、ハードウェアは何でも良い、という解釈もあるし。

 ボストロノムの「間の技術者がマシン・インテリジェンスを進化させようと試みる場合、進化における自然選択の全過程が、その試みに関わりがあるわけではない」という主張は「断じて違う」とのこと。北に住む猿の毛が長く、南に住む猿の毛が短いのは、ゲノムの知能の表れであるそうだ。私は専門家ではないが、生存に有利な状態が生き残ったのが進化だと思うので、一概に猿の例が知能と言えるかは分からない。

 総じて「こういった進化の過程や環境との相互作用を考慮せずに、カーツワイルやボストロムのように人間の脳の活動による知能だけを考察の対象にするのは、大きな間違いだ。」というように、カーツワイルとボストロムは身体性の重要性を分かっていない、という趣旨である。
 ボストロノムは未読だが、カーツワイルは読んだことがあり、身体性を軽視しているわけではないというか、カーツワイルのはシステム論であり、ブルックスのことも当然知っているだろうから、カーツワイルが議論の対象としていないAI構築論で批判しなくても良いのではないかと思った。


 また、身体性を重視するのは日本の方が得意で背景に文化的な違いがあるとのことで、長い引用だが「AI/ロボット研究においても、身体性を重視したロボットが必ずしも日本の専売特許というわけではない。アメリカでも1980年代後半から、MITのロドニー・ブルックスが、単純だけれども学習能力のあるロボットを積極的に外部環境と相互作用させることで「進化」させるサブサンプション・アーキテクチャを推進し、ロボット研究において一世を風靡した。」と書かれている。
 うーん。日本の人達は、ブルックスとファイファーの本を読んだり訳したりして身体性の議論を学んだのであり、日本の方が身体性は得意だと言うのもやめた方が良いと思う。90年代当時が日本のロボット工学の全盛期だったことは正しいし、また、ファイファーは日本のロボット学者と議論して本をまとめたと書いているので、お互い切磋琢磨したことはあるのだろうと思いますが。
 細かいが、サブサンプション・アーキテクチャはロボットを「進化」させていない、とも思う。


 全体に反論が多い評になってしまった。ただし、もともとの文章がカーツワイル等への反論なので、佐倉先生が反論という言論手法を嫌っている訳では無いと思い、一応公開する。

外界ー身体ー脳モデル構築の進め方概要

 しばらく実業が慌ただしく手がつかなかったが、少し落ち着いたので、気を取り直して再開する。考えを再整理すると以下の通り。 

  • AIには意味が分からないので、人間の知性は実現できないという意見がある
  • 意味とは、外界―身体―脳の相互作用である
  • 構成論的アプローチ等、ロボットを実世界で動かして知的なことをやらせる「人工知能には身体が必要派」があるが、現時点では、昆虫レベル以上の成果が上がっていない(行き止まりを戻れない等)
  • 一方ソシュールによれば、意味とは差異である。従って、外界―身体―脳の相互作用を実現するためには、外界―身体は脳にとって差異の表現となっていれば良く、必ずしも実環境である必要は無い。
  • また、ソシュールによれば、人間は言葉で知っていることしか意味・あるいは概念として扱わない。
  • したがって、脳の「外側」に、辞書に載っている単語レベルで外界―身体モデルを作ることで、ソフトウェアのみで外界―身体ー脳(=AI)の相互作用を再現でき、AIは意味を取り扱えるようになる。これが、AIが意味が分からない、ということに対する突破口になるであろう。

    (すなわち、ソフトウェアのみでも構成論的アプローチは出来るのである。むしろ、ハードを使うことによる煩わしさから解放される)

  • 人間のような知性を持つAIを作りたかったら、脳を記号化するのではなく、外界-身体を記号化すべきなのだ。これを実現すれば、少なくとも記号接地問題が無い環境で脳の学習が図れる。
  • 記号に着目するという意味では記号創発ロボティクスという分野があるが、彼らは実世界でロボットを動かしロボット内で記号を創発、学習することに主眼をおいており、立場が違う
  • 最近話題になっている世界モデルは、脳の「内側」に外界モデルを作ろうというものであり、外界-身体-脳のうち身体という概念が抜けているかもしれない。ただし、人間は視力で画像を見ておらず3次元区間を見ているので、世界モデルという考え方自体は正しいであろう。これは、錯覚の発生する理由を考えれば分かることである。

 

今後、以下を順番に整理していく。

  • 外界モデルの要件と作成方針
  • 身体モデルの要件と作成方針
  • 脳モデルの要件と作成方針
  • 全体を通しての要件と作成方針
  • 使用言語、構築すべきコンピュータ環境等

 

 基本的には、辞書に載っている単語を出来るだけモデルで表現することになる。食べ物は比較的簡単だが、友情・勝利・政党等、抽象的な概念もモデルとして表現されると良い。

 ただし、完全に実世界を模擬する必要も無い。最終目標は人間のような知性をソフトウェアで実現することであり、ブルックスの主張である「生物が複雑な動きをするのは環境が複雑だから」という言葉に従えば、知性が出現するぐらい複雑な環境と、大容量の脳を用意すれば良い。

 多数のエージェントがいること自体が個々のエージェントにとって複雑な環境になるので、狩猟時代に人類の周りにあったであろうレベルの環境、そしてエージェント間の相互作用を言語で行うことで、知性が出現するに十分な複雑性をもたらせるのではないかと期待する。

 エッセイ的な表現になるが、人間の知性そのものが、探知して行動するという生物の原理が複雑になり、特異点(シンギュラリティ)を超えたものと考えられる。探知―判断―行動のループでなくて、探知―行動のループを複雑にすることにこだわりたい。その道で生物界がシンギュラリティを起こせたのだから、AIでシンギュラリティを起こすにも、同じ道を辿るのが一つの方法であることは明らかだ。

 

この短文でも、モデル化にあたっての方針がいくつか示されている。

・狩猟時代ぐらいを想定したモデルにすること

・複数のエージェントが存在すること

・エージェント間は言語等の記号でお互いにやり取りができること。

・そもそもとして、脳が身体を通じて探知し記号化した差異を、外界―身体―脳それぞれのモデル化により表現していくこと。

 次回以降、上記の方針に基づき個々のモデルについての要件を整理していく。そして、使用する言語まで決めた上で、実際のコーディングに入っていく。


 今後出来れば、サラリーマンが休日に作業して何かをやり遂げるような、任意団体として活動していきたいと考えています。空飛ぶ車とか人工衛星が任意団体で作られているようですので、「強いAI」を作る任意団体があってもいいじゃない。
 一応、全く更新をしていない時にも月に100件ぐらいはアクセスがあったようですので、手伝ってみようという方は是非ご連絡下さい。特に失うものも無いはずです(時間?) t-mori@na.rim.or.jp

強いAIを作り始めるにあたり

 しばらく更新が止まっていたが、その間に、2chにて自論を述べてみる、ということをやってみた。自論とは、本ブログで取り上げている、構成論的アプローチ(身体性)は実空間でなくてソフトウエア空間でやってみるべき、その際、外界と身体を辞書レベルで記号化せよ、ということである。

 その結果として、

・AIを構築するのに仮想空間で学習させるというアイデアは当たり前であり、アニメ(SOA)とかでもある。

ということで理解いただけなかった。アクセス数は今までで一番多かったですが。

 では、なぜ彼らはアニメを作ったりしているだけで、強いAIを作っていないのか。人間の知性をソフトウェアで再現することは、ブルックスが言うように、地動説、進化論についで、人間の存在意義を根底から変えてしまうほどの偉業であるのに。

 その答えとして、仮想空間で学習させるということが、ゲームAI等以外で大々的に試みられていない理由をまとめる。

  • 仮想空間で学習させる、というアイデア自体は、脳の細胞接続を全部再現すれば知性を再現できるというぐらい、実際の作業に落とし込めていない漠然としたアイデアにとどまっている
    →本ブログでは、外界と身体を辞書レベルで記号化せよということで具体化しているつもりであったが、まだ漠然としている

  • 脳のアルゴリズムの構築方法が分かっていないので、そちらを研究すべきと考える人がほとんど。全脳アーキテクチャ等。
    →仮想空間で学習させる、こと自体が、脳のアルゴリズム構築方法の根幹であると思う。まず大事なのはそちらなのだ。人工知能には身体があるべき、という主張を徹底するべき。生物が複雑な動きをするのは外界が複雑だからなので、十分に複雑な外界を用意すれば脳も知性に到達するかもしれない。

  • 最も重要な点として、「仮想空間での学習」ということの意義が理解されていないと思われる。仮想空間を構築する際にも、意義を理解してその効果を最大限発揮できるように構築しなくてはならない。
    →意味とは外界ー身体ー脳の相互作用であるため、本手法により、AIに意味を扱わせることが出来るようになる。
    →実空間でロボットを動かすという、人工知能には身体が必要である派(構成論的アプローチ、身体性)にとって、外界と身体も仮想空間で良い、ということはブレークスルーである。同派は今までロボット実機にこだわっていたため成果が出ていないが、仮想空間において身体性を意識した研究を行えば、研究速度が上がり成果が出るかもしれない

 ただし、実際に行動に移さないと誰も興味を持たないし、上記の意義も伝わらないだろうという点では、2ch(5chですが)の指摘も正しい。

 そのため、以降、実際に作業を進めていくとともに、その様子を適宜ブログにてアップしていくことにする。今回はその宣言まで。