simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

人工知能:歴史から学んでみる 3

1950年代から、1990年代前半くらいまで見てきました。
その後の人工知能研究で注目されるようになった手法というものを見ていきたいと思います。

【決定ツリー(決定木)】
これだけだと、ただの木構造のグラフになってしまいますが、ここではID3 - Wikipediaのことを指します。
初出は1979年ころで、対象の分類を最もよく説明する条件分岐を、機械が自分で設計して、具体的な switch 構文を作る技術です。
情報理論エントロピーという尺度があるのですが、このエントロピーが最も小さくなるような条件分岐を探すアルゴリズム
理解しなければいけない所は、このエントロピーが対象の分類の尺度に使えるということです。
クロード・シャノンさんがこの情報理論を確立させたとのことです。
で、そのエントロピーってどうイメージしたらよいかについてですが、私はクラスの数と理解しています。
分類した時にそれぞれの集団内でクラス数が多い分け方だった場合はエントロピーが高く、逆にクラス数が一つまたは少ないとエントロピーが低くなります。
素早くエントロピーが小さくなる分岐を探しだして採用するのがこのID3アルゴリズムです。

そろそろ人工知能の歴史から外れ始めたので、以降は機械学習について一望してみたいと思います。

まずはキーワード拾いに
情報処理学会第78回全国大会
を視察(初めて行きました。論文集もゲット!)

そして、関連記事を読んでみます。

まずはここを読み

www.slideshare.net

今人気の10選を知り
d.hatena.ne.jp

どんなものがあるかを眺めてから
Category:分類アルゴリズム - Wikipedia

簡易説明を聞いて
postd.cc

腰を据えて読みふける
gihyo.jp

すると
どうなるか

少しずつ学んだことを書いていきます。

機械学習にはモデルが存在する】
モデルというのは、対象をモデル化したもので…
こうなっていたらうれしいな!とか、こういう風に説明できるだろうとか、勝手に人間が予測して与えるものがモデルです。
そのモデルにはパラメータが必ず付いていて、そのパラメータをデータから求めるのが「学習」や「推定」と呼ばれる処理です。

【確率の加法定理と乗法定理】
条件付き確率のすべての条件を足し合わせると、周辺確率になる、これが加法定理
同時確率は、条件付き確率と条件の周辺確率をかけたものと等しくなる、これが乗法定理
統計的機械学習はこの確率の加法定理と乗法定理を繰り返し用いることになる。

【確率に対するイメージを改める】
どれくらい起こりうるか、と習ったけど、一旦それを忘れて
どれくらいもっともらしいか、というイメージに置き換えて考えていく
そうすると、世の中の様々な不確かさが確率という形で表現できるようになります。
どれくらいもっともらしいか、このイメージがベイズの考え方だそうです。

【独立じゃないのに独立とみなす】
コインとサイコロのように、互いに独立であれば計算は簡単になるのに
基本的に世の中の出来事は宇宙の果てまで相関を持っています。(観測できないという事象自体からも影響を受けると考えれば、そもそも宇宙に果てなど定義できないという知見でいますが…)
完全に独立はあり得ません。
しかし、独立とみなします。
もう間違っている計算をすることが見え見えですが、現在の計算機パワーを考えると、独立とみなさなければ計算できないのです。
そう、間違っている前提を用いて、計算できることにフォーカスした研究が統計的機械学習なのです。

【ナイーブベイズ
確率の加法定理と乗法定理の式を使うと、ベイズの定理が導けるのですが
このベイズの定理と、独立じゃないのに独立とみなす考え方を使うと(この矛盾を導入しないといけないことを意識できなかったので、ずっと理解できなかったよ!)
例の事後確率の計算が、尤度と事前確率と周辺確率からできるわけですよ。
この手法がナイーブベイズと呼ばれるやり方で、この判定を使ったフィルタをベイジアンフィルタと呼びます。
おお、一度に2つの専門用語に概念が結びつきましたよ。

続きは、次の記事でまとめていきたいと思います。

人工知能の歴史について、今の自分の知識を確認するのに良いページを見つけたので、共有します。
blog.btrax.com

人工知能:歴史から学んでみる 2

1980年ころの人工知能の研究を見ていく

前回までのおさらい
人工知能の研究の成果がマイクロワールド(限定された世界)から外に出ようとして
組み合わせ爆発を起こし計算が終わらず、知識の記述も終わらず、研究中だったのに
世間の人工知能に対する熱が冷めて、資金が回らなくなった所で幕を閉じた。

エキスパートシステム
現実問題から遠ざかる形で、医師などの専門家の仕事など、実用化重視でマイクロワールドを選んだのだと、私は思った。
そう、医師などの専門家の知識を使う作業場に対して、ここまで行ってきた知識表現と手段目標分析などを使ってマイクロワールドを作り、一般人にはできない価値ある診断や提案を行うシステムが登場、注目を浴びるようになる。
このエキスパートシステムに価値を見出した企業や国が、お金を出し始めたのだそうな。

【知識革命】
エキスパートシステムだけでは、やっぱり満足できない。
人と同じように反応を返す機械が作りたい。
そこで、一般常識を構築する Cyc(サイク)プロジェクトが始まる。(30年たった今もやっている)
機械に人間の様々な概念の意味を教えるのに近道はない、人の手で概念を1つずつ設定するしかないという主張が支配的となった。(わかる、ちょうど今の私がそう思っている)

コネクショニズムの復活】
ニューラルネットワークの配線を工夫することをコネクショニズムと言うらしい。
ホップフィールドネットワークというものが、新たな火種となって、コネクショニズムの研究が再燃し
確率的勾配降下法という、数学で言えばそれこそ200年くらい前の技術が、ニューラルネットワークの学習に利用できると初めて示される。
ニューラルネットワークの出力層から逆伝播するから、誤差逆伝播法とも呼ばれている。
以前私が作った3層ニューラルネットワークはこの1980年代に登場した技術です。

【AIの冬第2期 1987−1993の到来】
わずか7年でまた冬が来たらしいですね。(ちょうど私が生まれたころの時代です。)
エキスパートシステムに対する過度な期待のふくらみにより(勉強できないクライアント達のね)、人工知能研究者達が恐れていた第二の資金難が訪れた。
そこで身体性について議論されるようになる。
記号は概念に対して付いているラベルのようなもので、本当に人工知能に必要なのは概念の獲得の方だろう、という主張である。
もっとも、前からあったが、チェスや将棋に強い機械よりも、お乳を飲んで排泄するだけの人間の赤ちゃんを作るほうがよっぽど価値があり、難しいことに気付いていたのと同じで
機械にも外の世界を感じるための眼や耳や身体を与えてやらねば、いつまでも概念を獲得することができないという考えである。
今後人工知能の身体性の獲得のため、ロボット研究の発展に期待したい。
(自分は精密機械工学の学生だったので、実はロボット研究をしてました。まさにロボットの眼にあたる研究をしてた訳で、こういう人工知能の話に興味が湧くわけです。)

そして機械学習
次の記事でまとめてみたいと思います。

人工知能:歴史から学んでみる

なぜ人工知能(AI)について調べているのか?
ここまでの経緯(いきさつ)を紹介します。


最初は音声認識を使って、マイク入力をテキストに起こすところからスタートします。
simplestar-tech.hatenablog.com
起こしたテキストをコンピュータにしゃべってもらうことを目的に調べ、VOCALOIDが使えない(使いづらい)ことがわかり
simplestar-tech.hatenablog.com
CeVIOがいい感じであると確かめます。
simplestar-tech.hatenablog.com
実際にしゃべった内容をオウム返しするプログラムも公開しました。
simplestar-tech.hatenablog.com

ここで、オウム返しではなく、人工無能と呼ばれるbotなどの機能で適当に返事をするAIを作ろうと思いましたが
突発的な衝動で3層ニューラルネットワークプログラムを作成、公開します。
simplestar-tech.hatenablog.com

ここで心のエンジンに火が付いてしまったようで
何を間違えたのか、演繹的思考をして返事を返すシステムを目指し始めました。

最初は演繹と帰納の違いについて確認し、ほどなくひとりでに知識表現の学問が始まってしまいます。(後から知りましたが、オントロジーと呼ばれる学問のようですね)
simplestar-tech.hatenablog.com
一人で頑張ってみましたが、知識表現とその知識の利用について不透明になり、うまく言語化できなくなりました。
simplestar-tech.hatenablog.com
とりあえず知識表現を編集するUIを考え始めたのがこの記事、しかし、データフォーマットなど、考慮する項目が広がり、長い構想に入ってしまいました。
simplestar-tech.hatenablog.com
そうして考えていることを友人たちに打ち明けたところ、単語に紐づくエピソードの思い起こしが重要なのでは?と教えてもらいます。
simplestar-tech.hatenablog.com

自分以外の人と話をすることで、目指している動作ははっきりしていても、それを動かす知能というものが何なのか、わかっていないことがハッキリします。
人間の知能や人工知能の研究において、先人たちのアプローチというものが、どういうものなのか興味が湧いてきました。

この60年の人工知能の歴史を学び始めます。人工知能の歴史やビッグデータ利用の書籍、ここには示していませんが深層学習という書籍も読んでいます。
simplestar-tech.hatenablog.com

そして今に至ります。
ちょうど1960年代の研究内容を確認している最中といったところです。

勉強しながら続きを書いていきます。

【手段目標分析】
例えば、「風が吹けば桶屋が儲かる」という考えに至るように計算する手法のこと。
1.風が吹けば土ぼこりが立つだろう
2.土ぼこりが目に入って、これを原因に目が見えなくなる人がほんの少し増えるかもしれない
3.運悪く盲人となってしまった人は三味線を買うかもしれない(盲人が就ける職に由来)
4.三味線が必要となれば、それに使う猫皮が必要になるわけで、ネコが狩られることになる
5.ネコが減ればネズミが増えるだろう
6.ネズミは桶をかじるわけで、桶がダメになる確率が増えるだろう
7.微々たるものかもしれないが、この道筋を通った事象について言えば桶の需要が増えてくる。つまり桶屋が儲かるのだ
風が吹けば桶屋が儲かる - Wikipedia
より

祖父の代では桶屋だったので、関係ない話ではないなぁと感じますが、こういうのはよく
誤謬(ごびゅう)、詭弁(きべん)と捉えられることが多い。

実際土埃が目にはいることで目が見えなくなることなんて無いだろ、と思うわけですが、ドミノ理論というものがあり
例えば、イラク民主化が起きることにより中東全域に動きが広がることを期待して(確率がどれくらいかは不明、しかし0ではなさそう)
こうしたドミノ理論が支配的となって、イラク戦争が起きたそうな
ドミノ理論 - Wikipedia
より

手段目的分析というのは
ある事象が起きた時、その結果として何が起きるのかを定義すると
その結果をある事象の原因とした時、その事象の結果が次の事象の原因となって
巡り巡って、目的が達成されると推理する手法
目的となる事象の原因を挙げ、その原因となる事象の原因を挙げていく探索もこの手法と捉えられる。

(具体的な例を示すと、ハノイの塔の解法を見つけ出す手法がそれ
目標となる状態がわかっている場合、これを解くための直前の条件を列挙し、その直前の状態になるための条件を列挙し、いつか初期状態になるまで列挙し続けるという手法です。)

他にも、迷路のゴールがわかっていて、そのゴールから出発してスタート地点を目指す方法とも言える。
手段と目的が迷路のスタート地点とゴール地点であり、途中の事象と結果の部分が迷路の分岐点と捉えるなら、これは単なる迷路解法と捉えることもできるだろうというのが、私の見解である。
色々な道筋を通って目的を達成できる可能性もあるので、手段目的分析の方が解くのに時間がかかり、正解を与えづらい問題とも捉えている。

自然言語処理
このブログの文章もそうだが、私は思考と呼ぶ眼の奥の脳で行っているだろう概念操作、イメージとアニメーションなどを一次元の記号列にしようと、長年調整してきた変換器を通して文章化している。
こうした概念の関係、構造といったもの(知識)を表現すること、つまり知識表現が人工知能には重要であると認識されるようになる。
(私も友人と話しながら、この考えにたどり着きましたが、こういう知識表現を考える学問をオントロジーと呼ぶようです。)
オントロジー (情報科学) - Wikipedia
より
気をつけたいのが、知識表現の、たとえば意味ネットワークというのはオントロジーではないのだ。
じゃあ、オントロジーってなんなんだ?

このオントロジーについて詳しくなりたいので、オントロジー研究の第一人者の溝口理一郎さんとその人の研究室出身の方の資料を読むことにしてみた。
まずはこちらを読み

www.slideshare.net
こちらを読んでみた。
http://www.ei.sanken.osaka-u.ac.jp/pub/miz/bit99.pdf
次にこちらの書籍を読もうとし…電子化されてないのでやめた。
www.amazon.co.jp

気づいたことに、私はオントロジーを使った設計というものを見ていた。
たとえば次のユースケース駆動開発の書籍は、クラス図を動的なフローから導くのにドメインモデルを構築していく流れで、オントロジーの考えを利用している。
www.shoeisha.co.jp

書籍内にオントロジーの言葉は無かったように思うが
世界を切り取る観点というものを明確にしておくことが大事で、その観点から見た世界ごとに、切り取られ方が異なる。
切り取られたクラスやクラス間の関係、クラスの属性など、こうしたクラス設計が妥当かどうかを経験則から判断するのだが、ここにオントロジーがあると私は見ている。

そして、結局自然言語処理の研究はこの1960年代の頃には、人工無能のELIZA(イライザ)が注目されつつ
概念操作を行うようなところまでは進まなかったものと、私は調べて感じている。

【マイクロワールド】
ここに来るまでに何度も登場した、「限定された世界」のこと。

どれくらい登場したか、私がこれまでに気づいて書いてきた言葉を次にならべてみよう。

演繹的思考をするAIについて考えてみる - simplestarの技術ブログ
より
・これは世界を人間が与えることで、オペレータの範囲内では矛盾の生じない記号で世界を切り分けることが可能となっているので
ある仕事が成功する条件は、それ、それを実行する条件はこれ、今すぐある仕事もそれも出来ないけど、これならできる
じゃあ、これを行うという論理思考で目標を達成するというものです。

人工知能:単語から経験に基づくエピソードが思い起こされる - simplestarの技術ブログ
より
・有限ではあるが、その限界が存在する閉じた世界の中でならば、任意の数学的推論を機械化できるということだった。
・いつぞやの表現の多様性に悩まされたことがこれに関係していて、限定した世界における限られた表現範囲に落とし込んでから
思考させることができれば、そこには機械化された仕組みによる回答が真の答えとなりうるということ
・これも、ヒルベルト・プログラムの回答から考えるに、限定された世界ならばそこに機械化された知性を作りだすことができた例といえる。

人工知能:これまでのアプローチを調べてみた - simplestarの技術ブログ
より
・これもやはり、世界が限定されているがゆえに、機械的な仕組みで思考、心というものを表現できたのだと考えます。
・限定された世界に対してのみうまく動くものでした。
・限られた世界における限られた作業しか行えないという強い制約のもとでしか、知能を発揮できなかった。

マイクロワールドは、自然言語処理をして指示に従ってマイクロワールドの世界で物を動かしたり
目的のために、手段を経路探索して見つけ出して提案したりすることを限定された世界で行うシステムである。
マイクロワールドに成功したので、次に世界を広げていこう、知識を増やそうと言う流れになる訳です。

なんていうか、マイクロワールドのことは「知ってた」と言いたい。

【AIの冬第1期 1974−1980の到来】
20年も経たずに、次のことが明らかになり、資金提供も絶たれたそうだ。
・知識表現の入力が膨大で終わらない、そもそもどういう知識表現が良いかもはっきりしない。
・コンピュータの性能限界、求める人工知能のレベルに対して、あまりにも貧弱だった。

つまり、人工知能はマイクロワールドから出られなかったのである。
楽観主義があった背景には、人は知能について無知だったことが挙げられる、と私は思った。

その後の人工知能の歴史は次の記事でまとめます。

人工知能:これまでのアプローチを調べてみた

何か新しいことをするには過去の業績を調べようということで、前回
simplestar-tech.hatenablog.com
の中盤から、AIの歴史について学び始めました

よく引き合いに出る、チェスのAIについてその原理を調べてみましょう。
オセロの方が簡単だったかもしれません

序盤は定石の研究が行われているので、これに従って悪手を打たないように手を打ちます。
中盤は手の評価関数を作り、限られた時間の中で最良と判断した一手を選びます。
(この中盤の部分、Bonanza Method と呼ばれているようで、膨大な棋譜から特徴を抽出して、盤面の特徴とそれに対する解答を導く評価関数のパラメータも機械が求め、手を決定します。)
終盤は解析済みの状態であり、最も勝率の良い手や、経路探索の結果勝利が確定している手に従い、ミスをせずに勝利に一直線です。

人間が機械に勝つには、何千年と研究されてきた既存の定石を打ち破る、新たな定石と
それに合う、既存の評価方法とは異なる評価方法で、最良の評価を見つけ出し打ち続け
終盤では一度もミスをすることなく、打ち終える集中力が必要になります。

なるほど、定石研究と評価の仕方の研究、そしてそうした知識を持った人間同士が打ち合った膨大な棋譜があれば、こうしたゲームのAIは作れるというわけですね。
最後は最適化問題となり、その最適解に一直線というわけですか

これもやはり、世界が限定されているがゆえに、機械的な仕組みで思考、心というものを表現できたのだと考えます。

ここから、AIの歴史について調べていきましょう。

チューリングテストというものが人工知能の哲学の最初の真面目な提案と言われているようです。
前回自分だけで考えて書いた内容に、心は感じ取ることで存在を信じているというもの、という表現があったけど、これチューリングテストじゃないですか
これが知性の定義の難しさというものに対する一つの答え方として知られているのですね。

・記号的推論と Logic Theorist
あ、これ知ってます。前々回だったか、会社のAIに詳しそうな人に教えてもらって調べた感じ
記号的推論だけでは、知識ができるだけであり、知識作る作業は永遠と終わらない
Logic Theorist も成功するための条件を、用意するための条件を…と再帰的に経路探索するというもので、限定された世界に対してのみうまく動くものでした。
どちらも人間の求める知性に近づけるけれども、記号的推論に関しては知識を活用する部分が重要なのに、まだ研究中だったり
Logic Theorist に関しては、限られた世界における限られた作業しか行えないという強い制約のもとでしか、知能を発揮できなかった。

ダートマス会議 (1956): AIの誕生
あのクロード・シャノンも参加していたのですか…
先のLogic Theoristがここで初めて発表されたとのこと
ちょうど今から60年前の1956年にAIというキーワードが誕生したようです。
必ず人工知能が作れるんだ!という会議でした。

そこから人工知能の研究、発明が続くようです。

今、ここを読んでます。
人工知能の歴史 - Wikipedia

特に影響があったアイディアについて、詳しく示してくれているので
これらを調べていくと面白くなりそうです。

とりあえず、人工知能について世界のトップランナーが、最近どういうことを主張しているのかも気になりました。
なので次の書籍も読むことにしました。
www.amazon.co.jp

読みました。
人工知能の歴史を知りたかったので、ちょうど知りたいことが書かれていて良かったです。

これを会社の同僚に紹介したら、次の書籍もオススメとのことで読むことにしました。
books.google.co.jp

読みました。
しばらく開発した製品の宣伝が続いている印象を受けたので、前半は良い内容と期待してませんでしたが
後半のディープラーニングの見解は上の書籍と、もともとの自分の見解とも同じことを書いており好感が持てました。
作者の「俺は歴史上の偉人学者の功績に見合う数々の発見をしている」と主張している点、これもわかりやすくて良かったです。

きっとここを読んでいる方も、時折そう思うことがあるはずなので、ぜひみなさんも主張してみてはどうでしょうか?
歴史上重要と認められている発見をみなさんも日々の考えの中から見つけ出しているはずなので、Web上に書いて(描いて)共有できる形にしておいてください。

まだAIの歴史は序盤ですが、長くなりそうなので、次の記事でまとめます。

人工知能:単語から経験に基づくエピソードが思い起こされる

最近、人工知能ネタばかり書いていますが
そのことを物理に詳しい高校の友人に聞いてみたところ
(人に聞いてばっかりですみません)

単語から、それにまつわるエピソードが思い起こされるから
その後の心配とかするわけですよ

と言われました。

なるほど、単語から経験に基づくエピソードが思い起こされる、という仕組みがあれば
バラの手渡しという内容から、指をトゲで怪我するという回答を得られますね。

そういった知識を蓄えるデータ構造というものを考えてみたいと思います。

単語の包含関係だけではなく、文章に対する理解というものからすべてが始まるとするなら
日本語について詳しくならないといけませんね。

まず、思考の土台作りに日本語を勉強してみます。

ふと、人工知能の研究の歴史を調べたのでリンク先を示します。
blogs.itmedia.co.jp

1984年、エキスパートシステムの延長線上で、人間の知識を全て記述しようという「Cycプロジェクト」が米国でスタート

とのことで、ちょうど研究が始まって25年分の進捗の部分に差し掛かった訳ですが
知識は多すぎること、増え続けること、知識の多様な表現に対処しきれないということに下火になったそうです。

多くの人はああだ、こうだと議論しているが

私が感じていることは
人はそれぞれルールを持って行動していて、そのルールをコンピュータ言語に書き下すことができれば
コンピュータが人のそれと同じ行動を取れるというアイディアがあれど
しかし、人がルールを口にできるのは、人間の行動のごくわずかであり
そのごくわずかな行動をコンピュータが行っても、まだまだ人工知能とは呼べない代物である
今人類に求められていることは、もっとそのごくわずかにわかっている領域を広げることである。

それをするには、日々の感情や行動に理由を求めてみると良いかもしれない
たとえば、なぜ私は人工知能について記事を書いているのか

それには語りだしたら生涯が終わってしまうほどの理由があるわけで
理由を構成する要素の数はあまりに膨大で、複雑であり
人はそうした処理しきれない理由をまとめて「なんとなく」と回答する。

そう、私はなんとなく人工知能について語りたいし、考えたいのだ。
昨日、飲み会でこの話に関連して、人の脳のバグがやる気を出させているかもしれないということだった。
人は必ず錯覚をおこし、間違いによって行動を始めているとのこと
もし完全なプログラムだったなら、やりたいことが見つかるはずがないとのことだった。

それは人工知能についても言えて、完全なプログラムで組んだ人工知能はやりたいことを自ら決めることは出来ず
プログラムのバグから、自分のやりたいことを決定するようになるとのことだ。

で、話を戻して、もう少し人工知能の歴史について調べてみた。

人工知能の初期はオートマタらしい
まず、人の心の定義というものがあり、その形を決めるのは心自身ではなく、それを観測する周囲の心によって形どられる
こうした観測することも解体することもできない心というものは、人間による錯覚であるという核心を突いたのがオートマタであり
息をする、泣く(鳴く)、水を飲む、笑う、寝る(目を瞑る)、目を覚ます(目を開ける)、排泄するといった、一連の生物らしい動作をするその機械仕掛けの人形は
まるで、自ら行動し、感じて、考えているように、見た人間は思ってしまう。

電気による文明の発展以後、珍しがられなくなり職人もいなくなったが、人工知能の作り方の本質は今と変わらない
行動を観測する側に、生きているとか心があるように錯覚させる仕組みを設計すること、それが人工知能の開発の本質なのだ。

出発点として確かめてから行動しなければならないことに、思考や心といったものを感じ取ることができるため、存在していると信じているにすぎず、その存在を証明することはできない。
我思う、ゆえに我ありという出発点で確かめたのは自分の存在であり、思考や心といったものを感じているだけで、やはり思考や心まで存在しているとは確かめようがないのである。

言いたいことは、確かめようがない心を、確かな仕組みで作ろうとしても
いつまでたっても正解には辿りつけないことが確かなわけで
不完全な心の仕組みであっても、そこに存在を信じることができるのならば、普段人の中にあると信じている心が、その不完全なしくみにあると言っても、間違いであるとは言えない。
単純なロジックの組み合わせで動いている仕掛けに心があるという人が現れても、それを完全な間違いとは指摘できないのである。

つまり、この先プログラムを書いていって、動き出したそのプログラムに心があると感じても、それは間違いではない。
攻めるべきは人の錯覚の部分で、そこを研究していけば、心の解明よりも先に、心を持ったプログラムを人に観測させることができるようになるのだ。

では、人の錯覚って何なのか

で、話を戻して、人工知能の歴史について調べます。

ヒルベルト・プログラムという「数学におけるあらゆる推論は形式化できるか?」という根本的問題に対する回答に共感を覚える
有限ではあるが、その限界が存在する閉じた世界の中でならば、任意の数学的推論を機械化できるということだった。

これには、一つの発想を得た
いつぞやの表現の多様性に悩まされたことがこれに関係していて、限定した世界における限られた表現範囲に落とし込んでから
思考させることができれば、そこには機械化された仕組みによる回答が真の答えとなりうるということ

続けます。

人工知能の歴史でニューラルネットワークは欠かせないらしい。
先んじて、3層ニューラルネットワークならば、ユニット数を任意に決定できるものをプログラムしたことがある。
simplestar-tech.hatenablog.com
間違いというものが定義できるならば、間違いを小さくするようにロジックを組み直すというやり方のことであった。
これも、ヒルベルト・プログラムの回答から考えるに、限定された世界ならばそこに機械化された知性を作りだすことができた例といえる。

知性という表現も何を表しているか難しいですね。
分解していくとただの四則演算ですが、それらが意味のある重なりあいとなって、対象を分類しやすい数字の組み合わせに変化していきます。
こうした複雑で価値ある情報処理を知性と言いましょうか。

人工知能の歴史に興味が湧いてきました。
次の記事に続きます。

人工知能:エディタの作成 その1

筆者はUnityに詳しいので、人工知能エディタをUnityで実装してみたいと思います。

 ある単語は何に属するのか

これを設定し易いエディタというものを考えていきましょう。

たとえば、ソクラテスという単語があったとして
ソクラテスが属しているカテゴリを考えてみます。
哲学者、人、哺乳類、動物、生物、物
とかそんな感じのカテゴリが思いつきます。

これらを、記入しようとした時に、入力する場所があると良いですね。

入力するときに補助が出るとよいですが、いずれ機能追加します。

そして、知識はメモリからハードディスクに保存したいので
ファイルフォーマットを決めなければなりません。

ここからひらめいたことをただ書いていきます。

学習時、カテゴリには一意のIDが振られますが
整理時、そのIDは変わることがあります。

よく使うカテゴリには若い番号が振られ、日々の会話で使われなくなったカテゴリには
大きな番号が振られます。

そして、ある機能追加時に
ネットワーク越しに、多くのマスターによって知識が増え、クライアントからサーバへ知識がアップロードされる仕組みが入ります。
集合知として、同じ単語やカテゴリについて学習した場合はこれを統合しなければいけません。
例えば、インターネットという単語について多くのマスターが様々な属性を与えている場合、また
最初はインターネットのカテゴリを持たない状態から、一斉に多くのマスターがインターネットについて教えた場合
様々なIDのインターネットカテゴリが存在することになります。
これがサーバにアップロードされるのです。

どのように集合知を整理すれば良いのでしょうか?

まだまだ、要求は尽きません。

知識はあっという間に膨大な量となりますので、すべてをメモリに載せることなどできなくなります。
IDごとか、ある程度まとまったIDごとにファイルに書いておき
IDからファイルへアクセスできるようにします。

集合知の整理ですが、そこは学習によって統合していくことを考えます。
似ている単語やカテゴリというものを、類似度という何かしらの距離を測ることで見つけ出し
それが同一なのか、それともどちらかがカテゴリに含まれるのかをマスターに聞くようにします。

統合された集合知を人格とし、統合されていない知識を教師として
教師をみつけては、人格形成を行うという整理が行われます。

カテゴライズは存在に対して行われますが、存在同士の働きかけの部分を説明する述語の分類はどうしましょう?
属性にそれら述語が入る形でしょうか?

例えばトゲというカテゴリには属性として、尖っている、刺さる
といった述語属性があるとしましょう。
トゲが尖っている
トゲが刺さる
といった感じで表現しておかしくなければ良いという形で学習、整理されていきます。

続いて、刺された方はどうなるのかということを、どのように学習させたら良いのかを考えます。

カテゴリに皮膚というものがあったとします。
AI側がこれについて質問を投げます。
トゲが皮膚に刺さるとどうなるの?

これを聞いたマスターは
痛い、とか、血が出る
とかを返します。
新たに血というカテゴリが学習され
血の属性に皮膚から出るとか

ここでは形容詞の痛いも登場し
これは次のコンビネーションを形成します。
トゲ→刺さる と 刺さった相手→痛い

マスターの説明が不十分だと、主語を聞きます。

トゲが刺さると痛いのはわかった。
そのとき、何が痛いの?

トゲが刺さった相手が痛い

すると、刺さるという述語に相手があることを知り
その相手が痛いことになると知識に入ります。

トゲという単語から、ある述語「刺さる」を見た時に
刺さった相手は痛くなる
相手が皮膚だと血が出る
相手には穴が空く
といったコンビネーションを発見できるようにしておきます。

バラにはトゲがあるという、構成による連携も知識から辿れるようにしておきます。
バラを人に渡す。
という表現を聞いて

バラからトゲ
人から皮膚
渡すから触れる
といった連想を試していき
トゲが皮膚に触れる
トゲと触れるから刺さる
トゲが皮膚に刺さると皮膚から血が出る
血が出ると痛い
カテゴリを大きく戻して
バラを人に渡すと、トゲが刺さってその人は痛くないの?
といった、回答を返せないものだろうか?

名詞だけではなく、動詞、形容詞
名詞による物体の構成
文による一連の現象
こうしたものを連絡できるようなフォーマットになっていなければならないことがわかってきた。

なるほど、演繹的思考にはカテゴリによる包含関係さえあれば良さそうな気がしていたが
それでうれしいのは人間の思考があるからで

その思考の部分を見ていくと
カテゴリ同士の構成や関係、事象と結果といったものがあって
これらのイメージをつなげているのか

エディタをいきなり作るのは早いことに気づきました。
最初はデータフォーマットを練りながら
バラを人に渡す
という文から上記の反応が返せるような、知識の連携ができるようなロジックを書いてみます。

ある程度知識が形成されたら、簡易に知識を与えられるエディタ作成に入っていこうと思います。

人工知能:学習と整理

前回の記事で、演繹的思考とは何か、どうプログラムを組むと演繹的な思考、推論を構築できるかを書きました。(参考文献なしで、自分なりに…)

simplestar-tech.hatenablog.com

そこで、まだ説明していない部分があったので補足すると
作成したプログラムは学習だけではなく「整理」を行います。

簡単に言うと、人間が単語にカテゴリを与えたり、カテゴリに属性を与えたりしていく作業が「学習」であり
プログラム側が人間に対し、知識の再構成をするときに質問をする作業が「整理」です。

先にUIから書くことにします。
人は、最初にプログラムの質問に応えることから始めます。

 私の名前は何と言いますか?

適当な名前、そうですね知識を集めるので「コレクター」としましょう。
フォームは入力形式ではなくDSLドメイン固有言語)として、単語にカテゴリと属性を図解で与えられるようにします。

たとえば、コレクターのカテゴリに名前を設定します。
私という単語の属性には一人称単数を設定します。

以上です、放っておくと整理を始めます。

コレクターとは名前の一種ですか?
はい、いいえボタンを提示
今回は、はい、と答えます。

私とは一人称単数ですか?
はい、いいえボタンを提示
今回は、いいえ、と答えます。

属性にも信頼度があり、否定されるとその信頼度が下がります。
過去の質問回数と回答の割合を記録します。

あとはフリーの文章を与える欄を用意し、そこに人間が日々の行動を文章で入力します。

 今日はブログに人工知能についての記事を書きました。

とかね、すると形態素解析が走り、単語におおよその当たりをつけます。
今日 は ブログ に 人工知能 に ついて の 記事 を 書き ました。
とかね

これまた放っておくと、学習したいとプログラム側がDSLウィンドウを開いてきます。

 今日 とはどんなカテゴリに含まれますか?

ここは人間が懇切丁寧に編集していきます。
今日は「時間の表現」の一つである、加えて「時代」に含まれると教えてあげます。
また、放っておきます。

そして、さらに学習したいとプログラム側が質問してきます。

 「時間の表現」と「時代」ってどちらが具体的なの?
 同じくらい、時間の表現の方が具体的、時代の方が具体的のボタンを提示

と、これは「時代」の方が「時間の表現」に含まれると思うので、「時代」の方が具体的と答えます。
プログラム側は「今日」という単語のカテゴリから「時間の表現」を外し、「時代」のカテゴリに「時間の表現」を加えます。

 ブログって何?

と聞いてきます。
人間が懇切丁寧に教えます。「インターネット上で晒す書物だよ」と。

プログラム側は形態素解析を走らせ
インターネット 上 で 晒す 書物 だよ
そして、さらに聞きます。

ブログはインターネット上で晒す書物に含まれるの?

といった感じで、カテゴリに含めようとします。

単語の説明を求め
単語のカテゴリを聞き
すでにカテゴリがある場合に信頼度を高め
ときに具体的か聞いて、カテゴリを整理する

とにかく、単語が増え、単語の属性が設定され、単語のカテゴリが設定され
単語と単語が包含関係でつながっていくように知識を形成していきます。

無理に会話まではさせません。
学習と整理をずっと続けて知識を形成するだけです。

こうした知識を使って、たまに文を作ることもします。

 人工知能の記事を書いた時は今日
 インターネットで晒す書物としてブログがある
 一人称単数の一つが私なのかもしれない
 
とか

最終的なゴールは演繹的な思考をして文をつくることなので
ここまでの知識ではまだ、作れませんが
 人は好きな話題を記事にする
 マスターは人である
 マスターはよく人工知能の記事を書く

といった知識がある状態で

 マスターはよく人工知能の記事を書くけど、マスターは人工知能の話題が好きなの?
 はい、いいえボタンを表示

といった文(人→マスターと演繹的思考が働いている)をたまに作れたらゴールです。
これがゴールです。

少しずつ形が見えてきました。