栄光への道
〜〜〜 コンピュータ将棋6 〜〜〜

--- Victory road will appear if you hope. ---

平成3年入学 山下 宏


 
 第7回コンピュータ将棋選手権において YSS は予選、本戦併せて14連勝を飾り、文句なしの全勝優勝を果たした。6年前の初参加の時から、この時のことばかり考え続け、ようやく日本一の称号を手にするに到った。近いようで遠かった最初のマイルストーンに、今、たどり着いたのである。
 

1.挫折と栄光と。

 昨年の第6回選手権で金沢将棋に敗れて以来、頭をかすめるのは、どうやったらあれほどのプログラムを作れるのか、そして、この程度が自分の限界なのか、という思いであった。
 そして、昨年の6月、1年間勤めた富士通を退社、フリーとなりプログラムの作成に専念する。優勝できるかどうかは分からない。ただ、確実に言えることは、やってみなければその可能性は限りなく0に近いままだ、ということである。

 金沢将棋を破るには、最低でも彼以上の時間をかけ、なおかつ、彼のプログラム以上に深く、正確に読まなければならない。評価関数を微調整し、ある局面で生成する指し手を吟味する。その作業を時間をかけて繰り返せば、確かに強くはなる。だが、超えることはできない。
 漠然と浮かんでいたアイデアが形になったのは10月であった。探索の延長に0.5手、という小数点を導入し、重要な変化のみを深く探索するアルゴリズムである。基本的に深さn、の探索をした場合に、最大2n-1、の深さまで探索し、なおかつ、かかる時間を2倍から3倍程度に押さえることができる。この最後が特に重要な点である。直感的にうまくいくと思った。後はアルゴリズムを形にする作業である。

 2ヶ月以上にわたって、自宅のパソコンの前で、起きてから眠るまでキーボードを叩く日々が続いた。昼と夜は事実上、意味をなさなかった。
 大会2週間前、PentiumPro200MHz の約1.8〜1.9倍の性能を持つ Alpha500MHz のマシンが届く。値段は7桁に達した。利用できるものは全て利用する。新車を購入すると思えば安いものだ。
 Alpha上で動き出した YSS は練習相手の金沢、柿木に連勝しはじめた。中終盤の殴り合いは強い。2段以上の棋力はあるであろう。勝負は序盤、いかに自玉を固く囲えるか、で決まる。後は微調整を続け、確率を少しでも上げる作業にかかる。

 そして、予選当日を迎えた。前日は徹夜だったにもかかわらず、一睡もできなかった。今回、プロとして参加する予選では、趣味で参加しているアマチュアのプログラムには1敗たりとも許されない。そして YSS は全勝で予選を抜けた。翌日、飯田5段と昼食を共にして共感できた点は、プロとアマチュアとでは気合がちがうよ、という点においてである。
 本戦、YSS は順調に勝ち上がり、4戦目に柿木将棋と対戦した。勝つ自信はあった。勝算は7割はあった。そして勝った。ほぼ予想していた戦型、展開であった。YSS の客観的な棋力の判定にミスはないはずだ。
 6戦目にして4連覇中の金沢将棋と対戦した。こればかりは分からない。彼の強さ、特に将棋プログラムにかける執念の強さには、敬服すべきものがある。TOPの座を4年間にわたり守り続け、なおかつ群を抜いた強さを保ってきたのだ。勝負は私の手を離れた。後は女神の気まぐれで決まるだろう。気まぐれは文字どおり気まぐれなのだ。女神は最初少しはにかみ、最後にちらりとこちらに微笑んだ。YSSは勝った。運だけでは全勝優勝などできないのも確かである。

 

2.優勝記、雑感。

 第7回コンピュータ将棋選手権は、1997年2月8、9日の両日、昨年同様シェラトン・ホテルにて行われた。会場の側では教会のチャペルが鳴り続け、ウエディングドレスを着た花嫁さん達が幸せそうに歩いていた。来年こそはコンピュータと一緒ではなく、女の子と一緒にこのホテルに泊まりたいものだ、と毎回考えてはいるが、こっちの方は優勝するより難しいかもしれない。

第1図
題名:第55手、△8二飛に▲6一角成です。
後手:S1.2
後手の持駒:角 歩


先手:YSS7.0
先手の持駒:なし

 予選5局目。電通大の野下研の S1.2 との全勝同士の1局である。
 第1図で YSS は馬を作ったが、人間ならこの馬が死んでいることにすぐ気づくだろう。4三にある後手の金を4二、4一と引いてきて▽5一金、まででしとめるのだが、コンピュータには、この一連の金の動きを読むことは非常に難しい。特に、▽42金▽41金が具体的な意味のない手なので私はまず殺しに来ないだろう、とたかをくくっていた。しかし S1.2 の次の指し手は▽42金引!。これは S1.2 が全幅探索に近い方法で深さ3手目まで読んでいることを示している。可能な指し手を力任せに読ませれば読み抜けはなくなるが、同時に計算量が増大し、深くまで読めなくなる。このバランスは難しいところである。

第2図
題名:第106手、▲1二龍に△1四銀打です。
後手:S1.2
後手の持駒:角 桂 歩 


先手:YSS7.0
先手の持駒:銀 桂 香二 歩


 相手の疑問手もあって、有利に終盤に持ち込んだのが第2図。ここで YSS は1秒で23手詰!を宣言して▲13銀を指す。単純な追い詰めだが、反復深化法を利用した詰将棋でもこの程度の問題なら短時間で解けるようになっている。なお、YSS が実戦で使用している詰ルーチンは、捨て駒を制限し、中合を無視した簡略版である。

 予選には海外からの参加(3チーム)や、重さ200Kgを超えるコンピュータを持ち込んだチーム、親子で参加したチーム、などバラエティに富んだ顔ぶれが出そろった。S1.2 は2台のマシンを繋いで1台に常に詰将棋を解かせる、といったこともさせており、私も機会があれば全てをハードウェア化したマシンで参加してみたい、と考えている。

 本戦6戦目に4連覇中の金沢将棋と互いに全勝でぶつかった。戦型は、先手を握ったら3手目角交換で角換わりの将棋に持ち込むつもりであった。しかし、前日の懇親会での振り駒の結果、あいにく後手番。前回までの YSS は振飛車には居飛穴に組むようにしていたが、今回は調整が間に合わず、居飛車矢倉のみ、となっており、この時点で振飛車をされたら作戦負けに陥るな、と覚悟を決めていた。しかし、5回戦で金沢−森田戦を見た私は愕然とした。森田さんも金沢将棋に振飛車をさせては面白くない、と思っていらしたようで、YSS 同様、3手目角交換を選んでいた。しかし、金沢将棋は明らかにそれを予期しており、なんと角交換4間飛車、という某振飛車将棋マシーンが指しそうな戦法を指している。
 が、金沢氏いわく「いやぁ、居飛穴はいやなんで」とのことで、初手▲48銀から角換わりに。金沢将棋が飛車を振らなかったのは対 YSS 戦だけで、ライバル?と思われていたことは少しうれしかった。

第3図
題名:第29手、△4四歩に▲5五銀です。
後手:YSS7.0
後手の持駒:角 

先手:金沢将棋2
先手の持駒:角 

 まだまだ、駒組の途中だと思っていたが、第3図のいきなりの▲55銀には驚いた。単なる歩取りなので▽63銀で簡単に受かり、その後▽45歩の銀ばさみで殺す筋があるだけに、1手損だと思っていたが・・・。当然の▽63銀に、なんと先手は悠々と▲88玉!。よく読んでみると▽45歩から▽54歩で銀を殺すのは▲44銀!のただ捨てが強烈で、以下▽同銀は▲71角でしびれる。今や、こんな深淵な手をコンピュータは指せるのである。
 YSSもしばらくは辛抱していたが誘惑に耐えきれず▽45歩を決行。以下、強烈に攻め込まれ、先に攻めたい、と考えていた望みはあっさりと消えた。途中▲86銀と逃げずに▲45桂から一気に寄せにこられれば将棋は終わっていたが・・・。まだチャンスはある。

第4図
題名:第63手、△5二銀に▲7五歩です。
後手:YSS7.0
後手の持駒:角 銀 桂 

先手:金沢将棋2
先手の持駒:金 歩 

 ここでの▲75歩が金沢将棋の最初の疑問手で、ここから YSS も▽同歩▲同銀▽74歩▲同銀▽75桂▲76金▽67銀▲75金▽39角▲67金▽28角成と駒損しながら飛車を取る。成立しているかどうかは微妙なところ。

第5図
題名:第87手、△4一飛に▲4二金打です。
後手:YSS7.0
後手の持駒:飛 桂 歩二 

先手:金沢将棋2
先手の持駒:歩二


 そして、大局を決定的にしたのが第5図の▲42金からの手順であった。以下、▽19馬▲52金▽28飛▲78銀▽26飛成▲41金▽35龍。銀と飛車を見捨てて上部を厚くし、入玉模様にしたのが大きく、先手は金と銀の遊び駒が響いている。  以前から金沢将棋は若干、遊び駒の評価が甘い、と感じていたが、ここにきてその欠点がでた。「失敗する可能性のあるものは失敗する」である。 第6図(投了図)
題名:第148手、▲5八金打に△同 龍です。
後手:YSS7.0
後手の持駒:飛 金二 桂 香 歩六 

先手:金沢将棋2
先手の持駒:歩 

 以下、入玉含みで指して安全か、と思っていたが金沢将棋もあらゆる手段を使って怪しく指してくる。いつノータイムで指されるか(詰まされるか)と、緊張しながら操作していたが、134手目、後手の王様が打ち歩詰の形になった瞬間、YSS は13手詰を宣言した。この瞬間の感激は忘れられないだろう。
 投了図、1九にある駒が香車ではなく桂馬なのが激戦を感じさせる。ぎりぎりの1手違いであった。
 優勝を決めたこの将棋は、今までのコンピュータ将棋の中で最高の棋譜ができたと思っている。全棋譜を掲載するので、是非1度、盤に並べて、現在のコンピュータのレベルを感じて欲しい。
 最後に忙しい中を応援に来ていただいたOBの藤田さん、矢部さんには心から感謝したい。

 

3.青写真を広げて。

 今の YSS には私が将棋を指す上で考えている情報の8割を含んでいる。位取りの概念、遊び駒、相手の駒をはがす、上から押さえる、嫌みをつける、入玉する、飛車を下ろす、といった雰囲気、感覚を数値化している。残りの2割は序盤の駒組に関するもので、ここを一般化できれば、棋力はさらに飛躍的に伸び、3、4段の壁を破るだろう。
 YSS 7.0 には OBの藤田氏(4段以上)ですら、2枚落ちで苦杯をなめている。OBの星野氏にいたっては4年間のブランクがあったにせよなんと平手で敗れている。仮にも東北大学将棋部A級に在籍していた人物である。
 どこまで強くなるのだろうか。すでにコンピュータは初中級者に将棋を教える、という役割を終え、人間の有段者をいかに確実に負かすか、というレベルに達している。
 あなたは、まず6枚落ちで挑戦を試み、敗れ、何度戦っても敗れ、そして勝てないことをようやく悟るだろう。次に図々しくも2枚落ちで負かしてやろうとするかもしれない。そして勝てない枚数は年を重ねるごとに少なくなっていく。平手で敗れたとき、こう思うだろう「こんなのは将棋じゃない、冷たい暗い指し回しが得意で面白味も何にもない。力まかせに機械に読まれたら、勝てないのは当たり前だ」、と。
 その時こそが敗北の瞬間であり、それは永遠に続く。駒を握るのをためらうかもしれない。初心者に対して「ここは、こう指すんだよ」と教えれば、彼の目はこう語るだろう「でも、あなただってコンピュータには勝てないんでしょ」と。

 1997年4月、アスキーサムシンググッドより YSS 7.0 が「AI将棋2」として発売される。思考ルーチンは時間による打ち切りを行っているので(最高レベルのL7で60秒)高速なマシンを使えば使うほど強くなる。大会に参加したプログラムと戦おうと思えば、秋頃には出荷されるだろう PentiumPro 433MHz のCPUを搭載したマシンで L7 と対戦すればいい。
 YSS 7.0 の詳細については青葉譜では書ききれない。来年初頭に出版される「コンピュータ将棋の進歩2、共立出版」に技術的な情報を書くつもりである。コンピュータを使った詰将棋の自動生成、など面白そうな話題も多いので、興味のある方は読んでみていただきたい。

 現在、コンピュータが一番弱いのは序盤である。3、4級程度しかない。最近は私もこう思っている。早く終盤になればいい、と。

P.S.
 青葉譜8号の予告はいまだ健在である。弘前大OBの伊東公輔氏は残念ながら結果を見ることなく逝ってしまわれた。謹んで哀悼の意を表すると共に、多くの人に長生きして、この予告を確かめてもらいたい。


 
YSS 7.0 (推定棋力2段)
ソース C言語 33891行(966,714Byte)
実行ファイルサイズ 557Kbyte(Alpha) 他にハッシュテーブルで64MBを使用。
毎秒4万局面を探索(静的評価関数を呼んだ回数)。
(Alpha500MHz上で。整数演算のみ使用。PentiumPro 200MHzの1.8〜1.9倍)
150万局面をハッシュテーブルに記憶して詰将棋、探索で利用する。
選手権では基本8手の反復深化法で探索し、40秒で(20分以上は25秒)打ち切っている。

 
先手:金沢将棋2
後手:YSS7.0

▲4八銀 ▽3四歩 ▲2六歩 ▽3二金 ▲7六歩 ▽8八角成
▲同 銀 ▽2二銀 ▲7七銀 ▽3三銀 ▲6六歩 ▽6二銀
▲7八金 ▽5二金 ▲6九玉 ▽4一玉 ▲5八金 ▽3一玉
▲7九玉 ▽4二金右 ▲5六歩 ▽6四歩 ▲5七銀 ▽8四歩
▲2五歩 ▽2二玉 ▲4六銀 ▽4四歩 ▲5五銀 (第3図)
▽6三銀  ▲8八玉 ▽7四歩 ▲6七金右 ▽7三桂 ▲3六歩
▽4五歩 ▲3七桂 ▽3五歩 ▲同 歩 ▽5四歩 ▲4四銀
▽8五桂 ▲3三銀成 ▽同金右 ▲8六銀 ▽3六銀 ▲4八銀
▽9二飛 ▲1八角 ▽3七銀成 ▲同 銀 ▽4二桂 ▲2六銀
▽4四金 ▲5三銀 ▽4三金引 ▲4二銀不成▽同 飛 ▲3四桂
▽同 金 ▲同 歩 ▽5二銀 ▲7五歩 (第4図)  ▽同 歩
▲同 銀 ▽7四歩 ▲同 銀 ▽7五桂 ▲7六金 ▽6七銀
▲7五金 ▽3九角 ▲6七金 ▽2八角成 ▲5一銀 ▽4三飛
▲3五桂 ▽4四飛 ▲2四歩 ▽同 歩 ▲2三歩 ▽同 金
▲同桂成 ▽同 玉 ▲3五金 ▽4一飛 ▲4二金 (第5図)
▽1九馬 ▲5二金 ▽2八飛 ▲7八銀 ▽2六飛成 ▲4一金
▽3五龍 ▲2七角 ▽2八馬 ▲1六角 ▽1四玉 ▲3三歩成
▽2五銀 ▲2六歩 ▽1七馬 ▲2五角 ▽同 歩 ▲3四飛
▽同 龍 ▲同 と ▽1五玉 ▲8五銀 ▽同 歩 ▲2九桂
▽2七馬 ▲2二飛 ▽2六玉 ▲2一飛成 ▽3九飛 ▲1九桂
▽1八馬 ▲3七銀 ▽1五玉 ▲2四龍 ▽1六玉 ▲1七歩
▽同 馬 ▲2五龍 ▽同 玉 ▲1七桂 ▽1六玉 ▲2八銀
▽2九飛成 ▲2五角 ▽1五玉 ▲2七銀 ▽7九銀 ▲7七玉
▽5九角 ▲6八金 ▽同角成 ▲7六玉 ▽8六金 ▲同 歩
▽同 馬 ▲6七玉 ▽6八銀成 ▲5七玉 ▽5九龍 ▲5八金
▽同 龍 (投了図)

まで148手で後手の勝ち

金沢将棋の消費時間:24:49
YSS  の消費時間:26:02

開発者プログラム名機種(CPU/クロック)使用言語
1.*金沢 伸一郎 金沢将棋2 VT-Alpha(Alpha/500MHz) C
2.*柿木 義一   柿木将棋 PowerMac8500(PPC604e/225MHz) C
3.*森田 和郎   森田将棋6 Poly(Alpha/500MHz) C
4.*山下 宏    YSS 7.0   VT-Alpha(Alpha/500MHz) C
5. 矢埜 雅俊  矢埜将棋3    PC-9821Ra20(Pent-Pro/200MHz) ASM
6. 電通大、野下研 S1.2  IBM-PC(PentiumPro/200MHz)*2 C
7. 上甲 尚生   J III PC-9821Xa(Pentium/120MHz) ASM,BASIC
8. 小泉 健 宗銀Win vividy TOWER(Pentium/200MHz) C++
9.*SPEC.(株) 丹頂under励棋 NECノート(P5/133MHz) C,C++
10. 黒田 久泰 スーパー将棋 SR2201(HARP-1E/150MHz * 8) C++
11. 高田 淳一   高田将棋 Ver.3.0 Java,C
12. 天野 兼一   天野将棋V1 DOS/V(PentiumPro/200MHz) C++
13.*吉村信弘(招待) 永世名人 Win95 FMV(Pentium/133MHz)   C
15. 東京農工大 shouchan Gateway(PentiumPro/200MHz) C
16. 若林 茂樹 ハイパー将棋1.8 PC-9821Ra(PentiumPro/200MHz) PASCAL
17. 橋本 知弘   スーパー橋本将棋 X68K(68000/10MHz) ASM
18.*関田 修由 関田将棋3 DOS/V(Pentium/133MHz) C++
19. 丸山 徹 丸山将棋Ver0.2 FMV-475NU/S(486DX4/75MHz) C++
20. 菊池 尚    菊池 900     IBM-PC365(PentiumPro/200MHz) C
21. 森博、大崎正幸 OM-1 Version1.2 PC-9801NA/C(486SX/20MHz) C
23. 森 伸幸 棋苑 Ver. 1.1 PC-9821Na12(Pentium/120MHz) C++
24. 吉川 創 H将棋 FMV BIBLO(Pentium/100MHz) C
25. 山田 泰広 山田将棋 Ver. 1.5 AT互換機(Pentium/200MHz) C
--. 安藤 正博 安藤将棋 ジェイソン-I DOS/V(Pentium/120MHz) C
--. A.Pearce (豪) Shogi Gold DOS/V(Pentium/133MHz) C++,ASM
--. 脊尾 昌宏 脊尾将棋under励棋 DOS/V(Pentium/90MHz) C
--. 阪下 真弘 阪下将棋 Ver 0.7 GATEWAY G6-200(P6/200MHz) C
--. J.Rollason(英) SHOTEST v1.0 IBM-PC(PentiumPro/200MHz) C
--. 棚瀬 寧、他 IS将棋 (Alpha/266MHz) C
--. Grimbergen(蘭) 兵進駒(へいしんく)AKIA Microbook(Pent./200MHz) C++
--.*増本 智宣 隠岐 PC-9821Na12(Pentium/120MHz) C++,ASM
--. 天野 兼太   天野将棋Jr PC-9821Xa(Pentium/90MHz) BASIC
--. 高橋 優仁   謎的電棋 PC-9821Xt(Pentium/90MHz) C


33チーム(招待を含む)


1.本戦結果(○:勝ち、×:負け、=:千日手)
順位プログラム勝負引
1位YSS 7.0 7-0-0
2位金沢将棋2× 6-1-0
3位柿木将棋 ×× 5-2-0
4位森田将棋6××× 4-3-0
5位矢埜将棋3×××× 3-4-0
6位S1.2 ××××× 2-5-0
7位関田将棋3×××××× 0-6-1
8位J III ×××××× 0-6-1

2.予選結果

順位プログラムISSHJrshOM
1位YSS 7.0
2位S1.2 ×
3位矢埜将棋3×
4位関田将棋3××
5位J III ×
6位IS将棋 ××
7位高田将棋 ××
8位隠岐 ××
9位永世名人 ××
10位SHOTEST  ××
11位宗銀Win ××
12位ハイパー将×××
13位山田将棋 ×××
14位阪下将棋 ×××
15位橋本将棋 ××
16位丹頂 ××××
17位天野将棋V1××××
18位丸山将棋 ××××
19位脊尾将棋 ×××
20位兵進駒 ××××
21位謎的電棋 ×××
22位天野将棋Jr××××
23位Shogi Gold××××
24位スーパー将×××××
25位shouchan ×××××
26位菊池 900 ×××××
27位安藤将棋 ×××××
28位棋苑 ××××××
29位OM-1 ××××××
30位H将棋 ××××××


解説

 表組みの作成に精根尽き果てましたが、青葉譜が出てしまうと”先行掲載”の予告が反古になってしまうのでなんとかやりぬきました。
 せっかく作った表組みですが、かなり高い解像度のマシンでないと正常表示できないかも知れませんのでお気をつけください。

 文中に私の名前が出て来ますが、2枚落ちで勝てないというのはまぎれもなく本当です。製品版(マシンは新調したMMX Pentium 200MHZ)で何度試しましたが、飛車落ちも苦しいです。(たぶん、弱点をつけば勝つ方法はあると思いますが、それでは実力で勝ったとはいえません。)星野君が負けたというのは当てにならないと思う人は多いでしょうが(^^;、序盤の弱さに目が眩んで油断すれば誰でも負けかねません。


前のページへ