当事者のIT技術者に見えにくい「リンク」

【 当事者のIT技術者に見えにくい「リンク」】

先に、”Proof as Program プログラムとしての証明” という認識が、Curry-Howard対応の発見や従属型理論の登場の中で、生まれてきたことを述べてきました。

それは、論理的=数学的証明は機械のプログラムで実行できるということ、ひるがえって言えば、機械は論理的=数学的推論能力を持つという認識に他なりません。

この認識は、人工知能論にとって本質的に重要な認識であると、僕は考えています。

このセッションでは、改めて、「計算」=「証明」=「プログラム」という認識がどのように形成されてきたのかを、 振り返りたいと思います。

「計算」「証明」「プログラム」という三つの言葉は、もともと別の意味を持っています。それは今でも同じです。そして それぞれがそれぞれの歴史を持っています。

この三つの言葉の中で、「計算」の起源が一番古いものです。4000年以上前の古代バビロニアでは、2の平方根の値も知っていたし、ピタゴラスの定理で直角三角形の斜辺の長さを計算する「計算表」も持っていたといいます。人間は、具体的な「計算」を通じて数学の世界の扉を開きました。

「証明」の概念の起源は、2300年前のユークリッドに帰してもいいと思います。古代ギリシャ人は、具体的な数の「計算」とは異なる数学の世界があることに気づきました。プラトンは彼のアカデミアの門に、「幾何学を知らざるものこの門入るべからず」と掲げたと言われています。彼らにとって、「数学的証明」は「真理」に到達する、重要な方法だと認識されていたと思います。残念なことに、ギリシャ数学の伝統は中世ヨーロッパでは途絶します。

この中で、「プログラム」という概念が一番新しいものです。その起源は、コンピュータが登場した1950年代を遡ることはないのは明らかですので。

このセッションは、機械の能力を人間がどう認識してきたかを、「計算」「証明」「プログラム」という三つの概念の関係の認識の歴史をメイン・ストーリーにして述べたものです。

さきに、概略を述べておきましょう。(以前のセッションと内容的には重なっています。)

まず、「計算」と「証明」が、本質的には同じものであるという認識が生まれます。1930年代のことです。

それから40年ほど経って、「プログラム」は「証明」とみなせるという認識が生まれます。1970年代のことです。

理論的には、この二つの発見で、三項の関係は明確になりました。「コンピュータは、プログラムの実行という形で、証明を計算する」ものなのです。

「計算」=「証明」=「プログラム」というテーゼの中では、IT技術者には、「プログラム」=「計算」というのが、一番わかりやすいように思います。 「プログラム」=「アルゴリズム」=「計算」と考えればいいのですから。

この認識は、コンピュータの普及と、ITビジネスがコンシューマ中心にシフトして成功する中で、また、多くの人がIT技術者になる中で自然に拡大しました。

ただ、こんな問題もあります。 

現代では、誰もが「コンピュータはプログラムで動く」ことを知っています。ただ、コンピュータは、万能の「情報処理機械」とみなされていて、それが「計算する機械」であることを意識する人は少ないのです。

インターネットにしろYoutubeにしろFacebookにしろ、そのサービスを実現するソフトウェアが存在することを、多くの人は知っています。ただ、その基礎が、足し算や掛け算、電卓と同じ「計算」であることに、思いはいたっていません。

サービスを開発するIT技術者自身、数値計算でもしない限り、自分たちの仕事が「計算」の領域に属するという意識は薄いように思います。

「プログラム」=「計算」という、IT技術者にはわかりやすいはずのリンクにしても、こうした状況がありますので、「計算」=「証明」、「証明」=「プログラム」というリンクは、見えにくい「リンク」なのかもしれません。

「チャーチ=チューリングのテーゼ」や「カリー=ハワード対応」に言及することなく、これらのリンクを理解することは可能でしょうか?

僕は、「プログラムの行っていることは、基本的には、計算である」ということが腑に落ちれば、十分可能だと思っています。

なぜなら、ラムダ計算もチューリング・マシンも、人間が行う計算の、プリミティブだが忠実なモデルに他ならないからです。それは、コンピュータが行なっている計算と同じものです。計算に関して言えば、人間とコンピュータに違いはないのです。

そうしたプリミティブな機械の働きが、「証明」とつながることを実感するには、いまなら、Coqなどの「証明支援システム」の経験は、とても役に立つと考えています。

それは、「計算」=「証明」、「証明」=「プログラム」という、多くのIT技術者にとっての「ミッシング・リング」を埋めてくれるでしょう。 僕が、IT技術者にCoqの学習を勧める理由は、そこにあります。

 「プロンプト・エンジニアリング知らざるもの、人工知能の門に入るべからず」

冗談です。

-------------------------------------


「 Proof as Program 」を公開しました。
https://youtu.be/VqYlwlDjSjo?list=PLQIrJ0f9gMcMMwP2zBgMe3LbaDnKGG_zw

資料pdf
https://drive.google.com/file/d/12O7lf1-H3KTYVL6JKaAzOgru9VZySuAe/view?usp=sharing

blog:「当事者のIT技術者に見えにくい「リンク」 」
https://maruyama097.blogspot.com/2023/03/it.html

「人工知能と数学」まとめページ
https://www.marulabo.net/docs/aimath/

セミナーの申し込み
https://ai-math.peatix.com/

コメント

このブログの人気の投稿

マルレク・ネット「エントロピーと情報理論」公開しました。

初めにことばありき

人間は、善と悪との重ね合わせというモデルの失敗について