述語論理で書くということ(2)
例2)手書き文字認識と述語論理での記述
現実世界について述語論理で何かを書こうとするとき、数学とは違って「真である」かどうかを判定する基準や方法を決めておく必要がある。「好き」という関係について「真である」かどうかを判定できないのは、そういう基準がないからと言えるだろう。
世界に対する観察や実験の結果、測定結果などは「真」だとみなせるだろう。実験方法が間違っていたり測定装置が壊れていたりすれば結果は妥当ではないが、それが現実というものだ。そして、新たな事実が発見されればその結果は「真」とはみなされなくなるかもしれない。このように、真であるとみなされる言明の集合(命題論理の例ではΣと書いていた)が変わっていく世界もいずれ考えてみたいと思う。
世界に対する観察や実験から真であると判定された表現(言明)を「事実(fact)」と呼ぶことにする。Σには、事実とそれ以外の「真」とみなされる言明が含まれる。たとえば「ルール」や「仮説」のようなものが含まれるだろう。ルールは「真」というよりは「人間がこう決めた」もので、そうなるように作った世界を考えていることになるし、「仮説」とは人間がこうなるはず、つまり真になるはずだと考える言明のことである。「仮説」を作るのは人間だけでなく、機械学習のようなものによっても作られるだろう。
「事実(fact)」「ルール」「仮説」は、一つの証明の間では「真」とみなすと考える。
私は、人工知能の「なんとか認識(*1)」によって得られた知識は「真」であるとみなすことで、論理の世界とつなげられるのではないかと思う。「画像認識」や「音声認識」などで、データをクラスタに分類するとき、それから命題や述語の言明を作れる。
たとえば、手書き文字認識を考えよう。手書きの郵便番号を判別する機械が郵便局にあるがそこで使われている技術のことだ。私は「手書き文字認識」について詳しくないので実装の詳細には触れないが、その判定結果を「事実」として述語論理のFactを作るいろいろな方法が考えられることを示したい。
いま、一文字分の範囲をスキャンして0から9の文字を判別する「スキャナー」を考えてみる。
このスキャナーは「1」を書いたと思われる手書き文字を、1を表す数値に変換すると考える。
このとき、述語論理の表現で書く方法にはいろいろなものが考えられる。
(a) is1(x), is2(x),...,is9(x)
xは書かれた手書き文字を表す変数(画像そのものでもよいが、番号をつけていればその番号)とする。xが1と判定されるなら+is1(x)が真になる。スキャナーの出力からこのような式に変換することは簡単にできるだろう。
(b) スキャナーが判定した数をnとするとき、
+S(n)
で、スキャナーが読み取った文字を数字nだと判断していることを示す。
スキャナーが一台しかないので、a)のように画像や番号を引数に取らない書き方にしてみた。もしも郵便番号のように7桁の数字を判別するのであれば、スキャナーを7台用意し、それぞれについて述語S1からS7を考えればよいだろう。
(c) スキャナーを関数かプログラムscanner(x)と考えて、手書き文字Wを数字に変換するとみなすと
1 = scanner(W), 2=scanner(W),...,9=scanner(W)
などで、判定された文字を区別できる。=が述語である。
これは述語を使って表現するというよりもスキャナーの機能が関数/プログラムなので、プログラムのインターフェースと考えられるかもしれない。
他にも方法はあるので、すぐに思いついた例だけを示した。
手書き文字認識の誤変換/誤認識はあるだろう。数学との違いはそこで、数学ではある理論の定義に基づいた仮定のもとで定理を証明するので仮定するものが真でしかない(笑)。
しかし、現実の世界を書こうとすると「真とみなす」ということはつまり「実は真ではなかった」という場合がありうる。それについてはまた改めて考えることになるだろう、
*まとめ
機械学習による「なんとか認識」は人間が介在しないという点で「事実」としてみなしてもよいかもしれない。「認識」する時点では、人間が介入できないというのが「事実」っぽい。
ただし、人間と同様に間違っている可能性はあるので、そのときどうするかを考えなくてはならない。