10年前に私が気づいた問題を深掘りする前に、まず基本知識を確認しましょう。そもそもコンピュータやプログラミングとは、なんなのか? ということです。
現代社会において、コンピュータはなくてはならないものです。
皆さんが持っているスマートフォンから、飛行機の制御装置まで、社会には無数のコンピュータがあります。さまざまな活動を支え、多様な機能を持つように見えるコンピュータなのですが、本質的に言えば、できることは2つだけです。
1つは、「とても簡単な計算」です。
足し算、引き算、掛け算、割り算、それと同じようなレベルの計算を、コンピュータは恐ろしい速さで計算することができます。わかりやすく言えば、電卓ですね。しくみはとてもシンプルですが、これだけでできることもたくさんあります。
そしてもう1つは、「覚える」ことです。
コンピュータがたくさんのことを記憶できるのは、皆さんもよくご存知ですよね。膨大な記憶力のおかげで解決したこともたくさんあります。たとえば、電子辞書は英単語に関するあらゆることを覚えておくだけのものですが、紙の辞書よりも何倍も効率よく調べることができます。
「簡単な計算」と「記憶」。繰り返しますが、コンピュータは基本的に、この2つ以外のことはできません。コンピュータがそれ以外のことができるように見えたとしても、それは「簡単な計算」と「記憶」を使っていろいろな問題を上手に解決できるよう、プログラマと呼ばれる人たちが、コンピュータに指令を与えるプログラムを書くことで解決しているのです。
そうした特徴を持つコンピュータは、将棋というゲームにどう立ち向かえばよいのでしょうか?
記録として残っている、すべてのプロ棋士の対局を覚えれば強くなれるのでしょうか?
残念ながら、答えはNOです。
10年前のコンピュータの将棋は、今に比べてとても弱いものです。しかしプロ棋士の対局の経過をすべて覚えることは、10年前のコンピュータにとってもとくに難しいことではありませんでした。でも、どれだけ過去の棋譜を記憶しても、コンピュータは将棋で人間に勝てなかったのです。
いくら過去の場面を覚えたとしても、将棋のような複雑なゲームでは、対局するなかで必ず未知の場面が出てきます。そうなると、いくら記憶力があっても役に立ちません。その場に即した適切な判断ができる知能が必要なのです。 (少し話題を先取りしますが、記憶力さえあれば解決するような課題は、現代において人工知能の課題ではなくなっている、ということを覚えておいてください。)
でも、現在のポナンザは人間を超えました。将棋のトッププロたちに実力で勝てるレベルにまで到達しています。 10年前、泣きたくなるほど弱かったポナンザは、なぜここまで強くなったのか。ポナンザのプログラマである私は、どのような工夫を凝らして、簡単な計算と記憶しかできないコンピュータに、将棋で人間に勝てるような知能を獲得させていったのか。少しずつ秘密を解き明かしていきましょう。
将棋を指すプログラムは、どう作るのか
cakesは定額読み放題のコンテンツ配信サイトです。簡単なお手続きで、サイト内のすべての記事を読むことができます。cakesには他にも以下のような記事があります。
cakesは定額読み放題のコンテンツ配信サイトです。簡単なお手続きで、サイト内のすべての記事を読むことができます。cakesには他にも以下のような記事があります。