AIについて思うこと

この半年の中で、AIについての知識を
INPUTしていく中で、自分の中での
AIの定義に対する認識に変化ありました。

具体的に言うと、半年前までは
現在仕事で行っている数理最適化などは
AIとは呼べない。
また、AIはディープラーニングなどを
言うのであって、機械学習の中でも
統計学よりの多変量解析や単に平均値をとる様な
回帰などはAIでは無いと考えていました。

こう考えていた理由は、下記に出てくる
(定義その１)が有ったからかもしれません。
こんな風に考えるのは、視野を狭くするだけで
つまらない考え方に思えてきたので
以下、考察したいと思います。

ところで、人工知能の定義は
世の中にいろいろとあります。

ここでは、面倒なので、
哲学的な考察には立ち寄らずに
ものづくり寄りの話をします。
(実装ではなく、お話になってしまいました。)

(定義その１)
　人工知能とは
　まだ、確立できていないもので
　人間の知能を模倣できる、人工物をいう。

これは、研究者には、良いだろうが
実際にモノづくりをする人間からすると
意味の薄い定義である。

この定義では、例えば
数式処理や定理の自動証明、あるいは
ルールに基づいて質疑応答するプログラム
(人工無能という)は人工知能でないことになる。
しかも実際そういう扱いを受けている。

数式処理や定理の自動証明は、十分に知的な
行いであり、小中学生では、まだ十分にできない
思考であるので、これを知能のふるまいではないと
するのは、すこし了見が狭いと思う。

この定義を採用してしまうと、例えば
最近はやりのディープラーニングも
確立されていまうと人工知能ではなくなってしまう。
(3年くらい先か ?)
囲碁ソフトも、将棋ソフトも、もちろん
人工知能でないということになる。

これでは、永遠の逃げ水である。
人工知能の領域が、いつも空っぽの
洞窟になってしまう。

研究者なら良いが、研究者以外の立場では
この定義では、あまりにもヒドく
使えない言葉になっしまう。
実務者にとっては、この定義の
「人工知能」は、存在価値がない。

ただし、この定義にも利点がある。
たとえば、電卓や事務処理計算が
人間の能力を遥かに超えていたとしても
これらを人工知能とは呼ばない。
この点に関しては、理に適っている。

もう少し、単語の字面上で意味を考えると
単に機能面から、捉えた方が実務者にとって
意味がある定義になる。

(定義その２)
　人工知能とは
　人間の行う思考を、機械上で再現したものである。

この定義なら、そこまで難しく考える必要がなくなるが
さらに「思考」とは何かを考える必要がある。

ここで、現状では人の感情を再現するのは
難しそうなので、感情についての議論は無視して
定義の詳細をさらに考えてみる。

(定義その２の更に詳細)
　思考には、以下の３つの要素があると言われている。
　(A)演繹
　(B)帰納
　(C)アブダクション

ABCの具体例を挙げていく
(A)
　演繹とは、例えば、下記のようなものが挙げられる。
　　大前提、小前提 ⇒ 結論
　　「人は死ぬ存在である」、「ソクラテスは人である」 ⇒「ソクラテスは死ぬ」

　　大前提：人は死ぬ存在である
　　小前提：ソクラテスは人である
　　　　　　(「デカルトは人である」でも良い)
　　結果　：ソクラテスは死ぬ

演繹推論は、正しい前提からは、常に正しい結果が得られる。
間違う事が、無い推論である。

これに対して、帰納やアブダクションは、いつも正しいとは限らない。

(B)
　帰納とは、例えば、下記のようなものが挙げられる。
　　{小前提 ⇒ 結論}の集合　⇒　大前提
　　「ハトは空を飛ぶ」「アヒルは空を飛ぶ」「カモメは空を飛ぶ」　⇒　「鳥は空を飛ぶ」

　　{小前提　⇒　結論}：{「ハトは鳥ならば空を飛ぶ」,「アヒルならば空を飛ぶ」,「カモメならば空を飛ぶ」}
　　結果　　　　　　：「鳥は空を飛ぶ」

　これは必ずしも正しくない。
　なぜなら、ペンギン、キウイ、ダチョウあたりは、飛べない鳥だからである。

(C)
　アブダクションとは、例えば、下記のようなものが挙げられる。
　　大前提、結論　⇒　小前提
　　「すべての鳥は空を飛ぶ」、「ツバメは空を飛ぶ」　⇒　「ツバメは鳥はである」

　　大前提：すべての鳥は空を飛ぶ
　　結果　：ツバメは空を飛ぶ
　　小前提：ツバメは鳥はである

　　これも必ずしも正しくない。
　　例として次が挙げる
　　「すべての鳥は空を飛ぶ」、「トンボは空を飛ぶ」　⇒　「トンボは鳥はである」

　　また、この推論は、デバッグ時によく行う推論である。
　　演繹推論なら
　　「アリバイがある容疑者は犯人ではない」「Aにはアリバイがある」　⇒ 「Aは犯人ではない」
　　だが、いつも使える前提がそろっているとは限らない。
　　たとえば、次のような場合である。
　　「アリバイがある容疑者は犯人ではない」「Aにはアリバイがない」　⇒ 「Aは犯人であるか不明」
　　ここから、アブダクションなら、状況証拠を積み上げて推論していく
　　(アブダクション推論その1)
　　「犯人のものとおもわれる血痕の血液型とAの血液型が一致する」　⇒ 「Aは犯人である」
　　これで、犯人にされたら溜まったもんではない。
　　だが、Aが犯人である確信度は少し上がった。
　　(アブダクション推論その2)
　　「凶器に付着した指紋とAの指紋が一致した」　⇒ 「Aは犯人である」
　　Aが犯人であることは、動かし難くなった
　　だが、本当に犯行時に付いた指紋なのだろうか ?

　　(デバッグ時も、この様な状況証拠から
　　バグの原因を割り出していく。
　　デバッグの場合、まちがって推論しても
　　大したことではないので、いくぶん雑に推論していると思う。)

(上記ABCに対して)
AIブームの1期目は、この演繹のみが、AIの対象と考えられていたようである。

AIブームの2期目は、演繹と帰納と、ニューラルネットワークなどの
統計的、近似的な方法論が入ってくる。

(今回の)AIブームの3期目は、論理ベースの演繹はAI範疇に入れない
かつ、帰納の部分でも論理ベースの物もAIではないとされ
ニューラルネットワークや、統計的機械学習がAIなんだと喧伝されている。

この3期目の態度は、おかしいことに見える。

人間は、論理的に考えていないと言う話も
よく聞くが、その意味は人間は常に論理のみで考えて
いる訳ではないという意味で、論理的に考えることも
人間の思考の内であるのは間違いない。
この意味で、ルールベースのAIを
すべて外すのは間違いだと考えられる。

何度も例に出しますが、定理証明系で
出た定理の証明結果に本当に
知性を感じられませんか ?

チェスプログラムの出した、名人を負かす
手を見ても、知性を感じられませんか ?

何も、電卓に知性を感じろと言う
話ではありません。

その意味で、やはり(定義その1)は
極端すぎる定義だと考えなおしました。


(上記とは別次元の抽象化の話)
単に、帰納やアブダクションの区分けでは
捉えきれない重要な観点がある。

ここで、例を考えてみる
偉大な位、頭の良い人の特徴は、何かと考えると
抽象化・一般化の能力が高い人が、そうだと考えられる
例えば、ニュートン大先生は、なにも無い所から
　　　f　=　ma
を思いついた。
fは力で、mは重さ、aは加速度であり
mの重量の物体に、力fを加えた時には、力の方向に
aの分だけ加速する。

さらに、加速度などを定義するのに必要な
微分の考え方を、発明しているのである。

これで、森羅万象のモノの動きを記述する
言葉(力学)が誕生し、森羅万象のモノの動きを
管理し、予測できるようになった。
(細かいことを言うと
　原子半径以下の微細な世界や光速に
　近い世界は記述できないが
　今回の議論とは無関係なので省略)

ニュートン大先生は、無から有を生んでいる天才である。

このニュートンの行為は、思考の内
帰納に属し、一般化・抽象化(捨象)といわれる。

一般化・抽象化は、上記の通り重要だが
帰納ならば、一般化・抽象化だとは言えない。
それに対して、帰納に属するものとして
別にディープラーニング等の統計を用いた機会学習がある。

大まかに考えると、ディープラーニングなどは
抽象化・一般化とは言えない。
なぜならCNNの結果を、ルールとして演繹の前提条件に
使用することなど、到底無理で考えられないことである。

つまり、ディープラーニングは何も一般化していない。
ただ単に、光によって青写真に風景が写しこまれるのと同じで
青写真での光の役割を、学習データが担っているだけである。
ディープラーニングで得られた事実を
演繹の前提条件に使用することは不可能である。

ディープラーニングは、現実をそのままコピーしているだけである。
ディープラーニングで、特定の因果律内の予測はできるが
何も一般化していないので、特定の目的にしか使用できない
上で挙げた「f = ma」とは大違いである。

一方、抽象化・一般化されたルールならば
それを使用して、さらに思考を深化させることが可能となる。
いわゆるニュートンの巨人の肩に乗ると言う話である。

そうだとしたら、抽象化・一般化を
機械上に実現する方法はないのだろうか ?

調べた範囲では、全く無い訳ではないものの
現在、抽象化・一般化の方向の人工知能研究は
行われてはいるが、初歩的なもの以外
あまり成果が出ているとはいえない。

演繹に使用可能な前提条件と成り得る
ルールを抽出する処理を作る方法は
今後の課題と見られる。

この「抽象化・一般化」は難しいとすると
帰納と演繹を組み合わせて
シームレスに実行可能なAIプログラムを
考られないだろうか ?

ここで話を脱線させる。
帰納のディープラーニングの使用例で考える。

人間は、ディープラーニングのような
当てずっぽう、山勘のみで行動している訳では無い。
ディープラーニングでは、どうなっているのか見てみる。
(あえて、ダメな部分に着目する。
ダメダメだと言うつもりは無い。)

現状の機械学習で言うと、google翻訳のように
RNNを使用した機械翻訳では次のようなことが起こる。
(a)訳せない部分を何も言わずに、すっ飛ばすことがある。
　　(たぶん、学習データにヒットするパターンが無い。)
(b)一見正しそうな流暢な日本語だが、文章を読んでみると意味不明。
　　(たぶん、翻訳対象の分野がニッチで、学習データに現れない分野。)
(c)中学生でも間違えようがないisとisn'tを混同して
　　文意を逆の意味で訳す
　　(たぶん、「is=isn't」とすると、学習データにヒットするから
　　　それで近似した。
　　　ただし、簡単な構造の文で、この現象が起きる事は無い。
　　　だから、「中学生でも出来る」は、少しウソがあります。)

まだ、このレベルでは知能と呼べない。

十分な学習データと計算量が有るならば
上記問題は起きないかもしれない。

しかし、そんな誰が用意できるのか分からない理想のデータと
有り余る計算パワーが有る理想世界は、空想上、机上の
世界であり要求する方が無理である。
(そもそも、人間の歴代の大学受験生を
含む英語学習者は極わずかな
学習データで機械学習を上回る訳を出力する。)

さらに、ディープラーニングでは
itとかhe、she、theyなどの
照応関係を捉えられない。
仕組み上、根本的に無理があると思われる。

たとえば、単語の数個前までしか見ない
RNNのアテンションでそれを捉えろという
方が無理である。

しかし照応関係は、部分的には
小学生の国語でも出るレベルの問題である。
それが、RNNのようなディープラーニングでは
根本的にできない課題になる。

以上から考えると
googleの人が言っているように
現状の仕組みだけでシンギュラリティが
可能になるとは、到底考えられない。
(個人の意見なので、絶対正しいとは言えないです。
googleの人と、この部分の意見は一致します。
ただ、その対策では見方が違います。)

上記を踏まえて話を戻すと
現状では、下記(X)(Y)(Z)のように考えられる。

(X)今流行の人工知能といわれる、機械学習(ディープラーラング等)は
　　人間の思考の一部のみしかシミュレートしていない。
(Y)機械学習(ディープラーラング等)は、特定目的でしか
　　人間を超える存在になっていない。
　　⇒いわゆる、弱いAIと言うやつで、足の代わりをする
　　　車や自転車の別用途版になるので、どうということは無い。
　　　電卓のように、人間の機能の一部を補助するものである。
　　　上記(定義その1)を採用すれば、そのうちAIでなくなる分野に見える。
(Z)高度な思考は、統計データで予測するだけの
　　山勘シミュレータでは、無理があるとおもわれるが
　　現在のコンピューターも、人間を超える能力で補佐してくれているのと同様に
　　今流行の人工知能も、新たな便利な機能を提供してくれるばずである。
　　(経験と勘の、職人芸は、すべて模倣可能かもしれない。)

話を戻し、上記を踏まえて
以下の問題を考える。

帰納と演繹を組み合わせて
シームレスに実行可能な
AIプログラムの具体策を考える。

その場合、下記の性質を利用したい。
(1)演繹には、正しい前提があれば
　　間違いの無い推論が出来る。
(2)機械学習では、近似を行い桁を落とすことにより
　　計算量を落として、大雑把な解を出すことができる。

この時、(1)の演繹は、大体において
木探索問題になり、計算量の爆発に結びつき易い。
いわゆる、np問題になってしまう。
AIでの典型例で言うと、フレーム問題になる。

それに対し、機械学習系の数値計算では
例えば、単に精度を落とす、データ量を絞り込む等をして
計算量は端折り、とりあえずの予測値を、時間内に出せる。

これを利用し、演繹時の木探索問題の枝刈りをする等の
方法が考えられる。

今は、具体例を挙げられないが
これから工夫して、事例を挙げていく
予定である。