好きをブチ抜く

「好き」をブチ抜く

本、映画、科学、哲学、心理、すごい人の考え方など。あらゆる情報を編集したい。

【コンピュータは数学者になれるのか?】 人工知能は数学できるか?「証明すること」を深ぼる

この記事の問いと内容

 

この記事では、「コンピュータは数学者になれるのか 数学基礎論から証明とプログラムの理論へ」という本を紹介したい。数学、論理学、人工知能、プログラムをまたぐ、とんでもなくエキサイティングな本になっている。

 

 

 

・数学するという行為は、記号、形式に還元可能なのか?

・数学者の数学という行為を、どうやってコンピュータで再現させるのか?

・再現できるとするなら、人工知能は人間知性を超えたと言っていいのか?

・数学の本質、プログラムの本質、またそれらの間の関係の本質とはなにか?

 

 

こんな問いに興味がある人には、ぴったりな本だと思う。これらテーマのもと、数学基礎論という抽象的な議論を追うことになる。そこには、あの不完全性定理も、もちろん登場する。

 

数学するとはなにか。それは、「証明とはなにか?」を考えることへ向かう。

 

そして、人工知能の中身であるプログラムと数学、証明の関係を丁寧にひも解いていく。人工知能を数学から理解したい人にも欠かせない一冊になるはずだ。

 

この記事ではざっくりとした紹介になってしまう。前提知識がない人にはかなり読みづらいと思う。雰囲気をつかんでみてほしい。

 

 

 

コンピュータは数学者になれるか 照井一成

 

「計算」や「論理」がいかにして現実を変革するのか? ヒルベルト、ゲーデル、チューリング、ゲンツェンら天才たちの挑戦は、いまコンピュータ科学を経由して、世界に大転換をもたらしつつある。「不完全性定理」「P対NP問題」などの論争の歴史を最新アップデートし、「人工知能」の未来にまで架橋する数理論理学の決定版!

 

個人的に何度も読み返している超おすすめ本。

この記事では、主要な論点、流れをまとめてみたい。

 

 

 

 

 

数学者を作りたい! 数学の形式化

 

数学すること、推論することを形式化する。「意味」をすて、形式的な記号で表現する。

 

数学を形式的な記号で表すことにより、「数学すること」を数学できるようになる。それは、数理論理学や数学基礎論として研究されてきた。そこには、次のような目標があった。

 

「自分に似せて数学者を作ろう、そして彼・彼女が無矛盾なことを証明しよう」

 

完全かつ無矛盾であるという性質が数学をやるうえで重要になる。だから、それを証明したい。

 

しかし、その形式的体系にはある限界が見つかる。あのゲーデルの不完全性定理だ。

 

形式的理論には、数学を完全に写し出す力がない

 

自己完結的な確実性は、不可能になった。

 

不完全性定理についてさらに知りたい人は、次の記事は進んでみてほしい。

interaction.hatenadiary.jp

 

本書のおもしろいところは、不完全性定理のような「できない」に注目するだけではなく、「どこまでできるのか」まで紹介してくれるところだ。それが、ゲンツェンの存在である。そして、証明とプログラミングの関係へと話は進んでいく。

 

 

 

計算の停止と無矛盾性

 

「計算の停止」という概念は、証明図の書き換え、つまり、証明することと結びついていく。

その帰結が、ゲンツェンの無矛盾性証明だ。

 

 

整列集合

 
計算が止まるかどうかは、日常のソフトウェアの使用を考えてみても重要な問題。永遠に計算が止まらなかったら、ソフトウェアを信頼できない。
 
しっかりと停止することを示したい。それなら、数学的に証明してやるのが一番確実。
 
停止性証明のために、「整列集合」が使える。たとえば、自然数は無限に小さくなることはない。自然数の集合は整列集合になる。この整列性を利用して、計算が止まることを示すことができる。

 

 

 

超限順序数

 
数の拡大のために、「無限の向こう側」を認める!!!
順序数とは、ざっくりいうと、無限大よりも大きい数をどんどん構成していくことを認めて作り出した数。
 
この順序数をもちいて、いくらでも大きな整列集合を作ることができる!
 
ここで、「順序同型」という性質に注目する。2つの集合が、順序関係についてそっくりであることだ。そして、ある条件を満たす、整列集合と順序数の集合は、順序同型になる。さらに、順序数の集合そのものも、整列集合といえる。
 
何度も無限の向こう側へジャンプしたはずなのに、下方向へは有限になる!
「まるでお釈迦様の手の上の孫悟空のよう」という著者の比喩は、とても興味深い。
 
 
 
 

ペアノ算術の無矛盾性証明

カントールの順序数が武器になる。
 
順序数は整列しており無限下降列を持たない。証明図に順序数を割り当てる。証明図を書き換えていった時に、順序数が小さくなるなら書き換えは停止する。
 
さらに、ある順序数に注目することで、PAという形式系の無矛盾性は有限の立場で証明できる。これが、ゲンツェンの無矛盾性証明だ。
 
しかし、その「ある順序数の整列性」をPAは証明できない!
 
ゲーデルの第二不完全性定理は、「自分の無矛盾性を証明できない」と言っているにすぎない。ゲンツェンの証明は「自分の無矛盾性を証明させようとすると、具体的に何でつまずくのか」をあきらかにしてくれる。
 
ここに注目し、第二不完全性定理を無矛盾性証明とともに使うという方向性がみえてくる。
 
「形式系の無矛盾性」と「計算の停止」には共通点が多い!!
どちらも、書き換えが有限回で終わることを示すのが目標になる。
 
 
 
 
 

NPという壁

 
「しらみつぶしに探せば解ける問題は、常に素早く解けるか」これが、P対NP問題である。
 
しらみつぶしを克服する方法の一つが、うまい定理を見つけることだ。法則が見つかれば、ぐっと計算を効率化できる。つまり、「知性によりしらみつぶし的状況は克服できるか」が本質になる。
 
現状、P =NPは否定的である。ある問題に対しては、素早く解けるような定理は見つかるはずがない、と考えられている。
 
このNPの壁は、人工数学者における証明をどう見つけるかということに関わる。証明図を見つける理論的な解法の存在は否定されてしまう。
 
 
 
 
 

ラムダ計算

つづいて、「計算すること」の本質に迫る。
 
・ラムダ計算
・BHK解釈

・カリーハワード対応

カリー=ハワード同型対応(カリー=ハワードどうけいたいおう、英語: Curry-Howard correspondence)とは、プログラミング言語理論証明論において、計算機プログラムと証明との間の直接的な対応関係のことである。「プログラム=証明」(proofs-as-programs)・「型=命題」(formulae-as-types)などとしても知られる。これはアメリカの数学者ハスケル・カリー論理学者ウィリアム・アルヴィン・ハワードにより最初に発見された形式論理の体系とある種の計算の体系との構文論的なアナロジーを一般化した概念である。通常はこの論理と計算の関連性はカリーとハワードに帰属される。しかしながら、このアイデアはブラウワーハイティングコルモゴロフらが定式化した直観主義論理の操作的解釈の一種と関係している。

カリー=ハワード同型対応 - Wikipedia

 
 
ラムダ計算では、数学的対象をすべて関数だとする。
 
ラムダ計算でも、真偽、論理演算子、関数の合成、自然数、足し算などの基本演算を表現できる。さらに、再帰的プログラミングまでできる。よって、ラムダ計算はチューリング機械と同等のパワーをもつ。
 
証明図の構成要素である論理式を、ラムダ項であらわせる。しかし、背理法の規則だけはラムダ項を割り当てることができない。
 
背理法を取り除いた論理システムを直観主義論理という。
 
こうして、証明図を与えられたら、順にラムダ項で解釈していける。BHK解釈。ということは、「証明はプログラムである」というテーゼが出てくる!!!!
 
証明はプログラムと対応し、証明の書き換えはプログラムの実行と対応し、論理式は型とみなせる。→カリーハワード対応
 
ラムダ計算は、関数型言語のもと。
 
さらに、証明がプログラムであるならば、証明からプログラムを抽出することができる。証明図からプログラムを抽出する方法を、構成的プログラミングという。
 
人間が証明図を作成するのをサポートする目的をもつのが証明支援系だ。
論理主義、形式主義、直観主義の融合ともいえるパラダイムをベースにしているCoqなどがある。
 
 
カリーハワード同型対応については、次の記事でもまとめている。
 
 
 

真理条件と検証条件

 

・直感主義論理

interaction.hatenadiary.jp

直感主義論理では、背理法、排中律、二重否定律は同値である。
 
よって、構成的証明ではこれらは使えない。「Aでなくない」から「A」を導くことはできない!!
 
古典論理では、「どんな文も真か偽である」という2値解釈をもとに、「どのような条件のもと文は真になれるか」という真理条件を考える。
 
一方、直感主義論理では、文の意味は、「何をもって文の検証とみなすか」という検証条件として与えられる。つまり、文の意味とは「構成」「手続き」という操作によって定義される。
 
ある古典論理を、直感主義論理へ翻訳することもできる!これは、非構成的な証明から構成的情報を取り出そうという動きになる。
 
 
 
 
 
 

証明の意味って?

証明は、連続写像(切れ目のないグラフのイメージ)とみなせる。
計算可能であるならば、連続といえる。
 
「証明=プログラム」には、圏論的な見方も応用できる。
 
そもそも、プログラミング言語は記号に過ぎない。だから、どう解釈すべきか厳密に定めたい。記号、プログラム、証明に意味を与えよ、となる。
 
 
自動定理証明システムは、証明から意味をはく奪する。
一方、定理証明支援系は、構成的な意味を使う。「活き活きした証明」と著者は強調している。
これらは、カラーハワード対応を土台とする「証明とプログラムの理論」の真髄といえる。
 
 
 
 
 

今後の展望

 
「数学基礎論に端を発する証明とプログラムの理論は、いわばゲーデルを横軸とし、ゲンツェンを縦軸としつつ、対角線方向に発展してきたといってよいのではないかと思う。」
 
 
「コンピュータは数学者になれるのか」という問いには、証明支援系、自動定理証明、機械学習のさらなる融合が必要になる。
 
数学者の勘と経験では難なく行われてきた行為が次だ。しかし、人工知能には難しい。
 
・帰納法をまわすためにうまい文を見つけること
・包括原理を用いてうまい集合をつくること
 
 
そして、人間とコンピュータの協調の鍵となるのが証明の意味だ!
 
「活き活きとした意味を持つ」構成的証明が重要になるだろう、と著者は述べる。
 
行き着くところは、「意味」の謎か...難しい...
 
 
さらに詳しくは、ぜひ本書へ進んでほしい。
数学的に、とても濃い議論を楽しめるはずだ。
 
 
 
 
 
 
他にもおすすめな本を紹介しておきたい。
 
 
 
 
 
 
 
 
 
 
こちらの記事でおすすめ本を詳しくまとめている。
 
 
 
 
 
 

関連記事

論理学、人工知能についての記事を紹介する。

 

 

interaction.hatenadiary.jp

 

interaction.hatenadiary.jp

 

interaction.hatenadiary.jp

 

interaction.hatenadiary.jp

 

interaction.hatenadiary.jp

interaction.hatenadiary.jp

interaction.hatenadiary.jp