人間に勝つコンピュータ将棋の作り方
人間に勝つコンピュータ将棋の作り方瀧澤武信、著・編集松原仁,古作登,橋本剛,小谷善行,鶴岡慶雅,山下宏,金子知適,保木邦仁,伊藤毅志,竹内章,篠田正人,コンピュータ将棋協会(監修)技術評論社2012年刊 「第2回 将棋電王戦 第3局 船江恒平五段 vs ツツカナ」・・熱戦継続中。 チェスの分岐数(ルール上指すことのできる数)は、約35で、 一局の手数はの平均は85なので、 場合の数は、35の80乗=10の120乗。 将棋の場合、分岐数は、約80で、 平均手数は約115なので、 80の115乗=10の220乗。 将棋を指すにあたって大切なのは「読み」と「形勢判断」である。 前者が「探索」、後者が「評価関数」というものに対応する。 ある局面から手を読んでいく際は、ゲーム木の評価関数の助けを借りながら探索していく。 以前は、可能な手のうちから重要なものだけを一定数だけを読むようにし、 それ以外は読まないようにするという前向き枝刈りというやり方をとっていた。 または、木の根本では広く読み、末端に行くほど狭く読むようにコントロールする 先細り検索が主流であった。 しかし、これでは読み落としが発生するため、現在では、 すべての可能な手を読む全幅探索が主流となっている。、 最大最小戦略、ネガマックス法、αβ木探索などを組み合わせることで、 最大最小戦略だけだと毎回枝分かれは平均80くらいあるが、 αβ法を組み合わせることで、枝分かれは平均的にその平方根かそれより 少し多いくらい、つまり10くらいまで絞り込むことができる。 さらに大事な手だけに絞ると、3~5くらいになる。 一方、人間は、局面を読む速度は、コンピュータに比べてとても遅いが、 直感・・さまざまな思考・感覚を使って、枝分かれを絞り込んでいる。 つまり、1または2程度、平均すると1.3とか1.5と思われる。 いずれにせよ、コンピュータ将棋は、力ずく探索、力ずくの計算法。 昨年は、1秒間に1800万手だったそうですが、 今年は、1秒間に3000万手を読むといいます。 また、局面の判断、「勝ち負け」の度合いを考えることを、評価関数と呼ぶ。 大量の棋譜から、駒そのものの評価や位置関係の評価など、 関数のパラメータの自動学習をするようになっている。 Bonanzaのパラメータ数は、なんと「5000万程度」になっている。 一方、人間の評価判断は、対比という手法を使っている。 一度考えた局面と似た局面になったとき、その両方の違うところを見て差を調べる。 そして、良い方にいく手順を選ぶ。 コンピュータとの戦い方・・ コンピュータの長所は、圧倒的な終盤力。 詰みのあるなしが読みに入ってくる終盤や、 一直線に深く読む必要のある中盤、 定跡データベースの整理されている序盤も、 ミスの少ないコンピュータを人間が圧倒することは難しい。 そのため、 ・序盤からの超急戦、大乱戦は避ける ・定跡が整備されていない、駒組みで優位に立てる戦形に誘導する 力戦型 ・有利になったら、局面を単純化させる ・寄せにくい中段玉の形を作るだけで勝つ確率はアップする ・不利になっても入玉を狙える時は、あきらめず上部脱出路確保に注力する ・コンピュータは駒得重視なので、大駒や金銀を囮にして、 入玉を狙う≪将棋プログラムの開発は地道な作業の積み重ねである。 ・・新しい手法を何か思いついて、それによって棋力が飛躍的に伸びるという 場面もないことはないのだが、それ以上に、細かいロジックの改良や 地道な速度向上の積み重ねが開発の時間の大部分を占める。≫(鶴岡慶雅「激指」)≪強い将棋プログラムを作るコツは楽しく開発を続けることであり、 そのためには、まず何よりもプログラムを小規模に保つことである。≫(金子知適「GPS将棋」) 合議を行うためには、計算機クラスタで探索を分担するために、 プロトコルによるプログラム同士の会話が必要となる。≪もし通信やメッセージの解釈で失敗すると、いくら将棋が強くてもシステムは 動作しないため、この部分での不良は許されない。≫≪コンピュータ対人間も人間対人間の熱い勝負であり、 コンピュータが勝ったらぜひ「偉大な、人間の勝利」だと思っていただきたい。≫(橋本剛)<目次>負け続けた35年の歴史コンピュータ将棋のアルゴリズム激指の誕生YSSの誕生GPS将棋の誕生数の暴力で人間に挑戦!Bonanzaの誕生文殊の誕生、あから2010の人間への挑戦習甦の誕生プログラムの主戦場Floodgateの切磋琢磨コンピュータ将棋の弱点を探る女流王将戦一番勝負