したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

Game全般

494名無しさん:2015/10/24(土) 11:01:39
>>493

将棋プログラムが強くなればなるほど、自分の直観から離れていく
── 将棋プログラムって、どうやると強くなるんですか?
プログラムというのは、基本的にモジュール化していく作業なんです。つまり、要素を必要な部品に分けていくイメージです。部品がきれいに分かれて整然と並んでいるのがいいコードです。会社で言えば、部署ごとにきっちり分かれた縦割り組織がある感じ。でも、何かのプロジェクトを遂行するのに、縦割り組織が一番いいかというと、そうではないですよね?
── 縦割り組織を横断したチームを組んだほうが、仕事が成功しやすい場合もあるかもしれません。
そうすると、今度は、例外的な措置をとったり情報伝達の流れが変わったりすることで、生産性が低下する。
人間の組織でもありがちな、こうしたトレードオフが、将棋のプログラムの開発でも起こるんです。
将棋のプログラムは、ひたすら速く動くことを求められています。1秒間に何百万手も読まないといけないから。一方で、速さを追求しすぎるとモジュール化に反することが出てくる。
探索した結果が予想もつかない結論になることも多い。バグによるものなのか、正しい計算によるものなのかが判断がつかない。
とにかく目を皿のようにしてコードを見て、できるだけバグをなくし、かつ高速化を実現できるようにした。
そうしているうちに、少しずつ強くなったんですよね。王道は、なし、です。
── 自分でプログラミングをしていても、「予想もつかない結果」が出てくるんですか?
将棋の探索は、最初から出てくる手が僕の直観から離れていたんです。とにかくプログラムの挙動がぜんぜん理解できない。え、なんでそんな手を指すの、って。そして、ponanzaが強くなればなるほど遠ざかって、こちらの人間的な直観とずれていく。
もちろん、一つひとつのコードの内容は知ってるんですけど、それらが合わさって出す結論は、どうしてそうなったのかわからない。
絶対うまくいくだろうと思った改良が、だいたいうまくいかない。
旧バージョンと改良バージョンで1000局くらい対局させて、勝率が80%を超えることなんて、めったにない。改良だと思ってやったことで、弱くなってしまうこともしばしばあります。 なんというか、宝くじを引いているような気持ちになりますね。
── コンピュータ将棋が強くなるプロセスは、人間が将棋が強くなったり、何かのスポーツ競技がうまくなったりするプロセスとはずいぶん違うようですね。コンピュータ将棋を開発すればするほど、人間の考え方や習熟の仕方とは違うことが鮮明になってきたんでしょうか?
コンピュータ将棋を開発し始めた当初からそう感じていました。自分の将棋の知識を入れても、まったく強くならなかったので。
コンピュータと人間では、「考える」ことに関して得意分野が違うんですよ。
コンピュータはひたすら「探索」して最善手を見つけ出すのが得意。一方、人間はいろんなところに「意味を発見する」のが得意。
コンピュータって、特に駒を取るでもない、守るでもない、攻めるでもない、そんな手を指すことがあります。一見「え、何それ?」という手。でも計算した結果、それが最良だと判断したんです。だから指す。
こういう手は、人間はほぼ指しません。指さないというか、指せない。
人間はかならず手の意味を考えてしまうからです。その意味にとらわれて最善の手を指せなかったりもしますが、特定の場面ではすごく強かったりもします。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板