コンピュータ将棋
目次
- まず用意するもの
- データ構造を決める
- 駒の表示
- インタフェース
- ルールを教える
- 質問集
- 「丸電将棋」開発履歴
- 「丸電将棋」の仕様
- 対市販将棋プログラム戦
- 公式大会
- 「読まない」将棋プログラムを望む
- コンピュータ将棋は何の役に立つか
- アトムの憂鬱
- 将棋の将来
- 未来へ渡すバトン
- 自然界最速は地上最速ではない
- コンピュータと人間
- コンピュータ将棋は谷川竜王・名人(98年3月現在)に勝てるか
コンピュータ将棋とは
コンピュータの性能向上にともない、コンピュータもいろいろな事が出来るようになってきました。かつては人間にしか出来ないといわれていた事も次第にコンピュータが能力を発揮しはじめています。その中のひとつが「将棋」です。すばやい演算能力と記憶力を駆使して、コンピュータは「将棋を指す」ようになりました。つい10年ほど前には弱くて話にもならなかったのですが、近年はアマチュアの3段に到達したといわれています。
一口にコンピュータ将棋といっても皆さんが巷で目にしているものはさまざまだと思います。家庭用ゲーム機、パソコンゲーム、ゲームセンターなどで将棋を指すコンピュータをみる事が出来ます。基本的にこれらはみな同じ物と考えてよいと思います。コンピュータ将棋とは、将棋専用のプログラムとそれを実行するコンピュータ本体で成り立っています。このプログラムとコンピュータ本体の善し悪しでコンピュータ将棋の強さが決まります。したがってプログラムが違えば同じ局面でも(当然の一着をのぞけば)全く別の指し方をするのが普通です。
さてコンピュータ将棋にはコンピュータチェスという先輩がいました。ご存知の通り、コンピュータチェスはすでに人間名人の強さまで到達しました。人類のほとんどが、この「最強のチェスプレイヤ」には手も足も出ないのが現実です。かつてはコンピュータチェスも弱くてどうしようもありませんでした。しかし多くのプログラム手法の研究の成果と、コンピュータの機械の能力の向上によりついにひとつの頂上制覇となったわけです。実はコンピュータ将棋はこのコンピュータチェスの研究の成果を流用する事で進歩をしてきました。今は日本を初めとした世界中のプログラマを中心に更なる棋力向上を目指しているというのが現状です。
まだ今の段階では、将棋プログラムはひとつの優れたアイデアひとつで格段の進歩を遂げることが可能だと思います。皆さんも独自のアイデアで将棋プログラムbPを目指し、人間名人に挑戦してみませんか。
(2000/09)
コンピュータ将棋の魅力
一つは「勝ち負け」はすべて自分の責任であること。これほど公平な勝負もないと思います。勝負は作者のアイデアと努力と用意したマシンで100パーセント決まります。そこには「運」の介在する要素はありません。最近の上位プログラム同士では勝ち負けに「運」の要素もあるという話もあるようですが、それでもその割合はほかの勝負ごとに比べ極端に低いです。はっきりいって「より優秀な頭脳と技能をもったプラグラマに勝利の女神は微笑む」ということです。負ければすごく悔しいし、勝てばうれしい。人間同士の対決より悔しさと嬉しさははるかに大きいです。
マシン性能も強さを決定する重要なポイントになっているため、CSA主催の「コンピュータ将棋選手権」のようにマシン制限のない大会の場合、演算処理速度の早いマシンと遅いマシンとの対局は不公平といえるかも知れません。しかし「コンピュータ将棋王者決定戦」のようにマシンを統一する大会もありますし、なにより、マシン性能の差は勝負の面白さを倍増させてくれます。演算処理速度の速いマシンを使用している側は、遅いマシンにおいそれと負けるわけにはいきませんから必死です。逆に遅いマシンを使っているほうは、負けたときのいいわけがたつことと、なにより勝ったときの喜びが倍増するということ間違いありません。
(2000/09)
コンピュータはどのように考えているか
コンピュータの思考についてよく聞かれるのが「すべての手をデータベース化しているのだろう?」という内容の質問なのですが、これは間違っています。将棋プログラムで手をデータベース化出来ているのはせいぜい序盤の20手くらいまでだけです。考えてもみて下さい。普通、将棋のある局面でさせる手は役100手強といわれています。先手の指し方が100通りでそれに対する後手の指し方が100通りとするとそれだけで1万通り(100×100 =10,000)。さらにそれに対する先手の指し手を加えると10,000×100で百万通りになります。たった3手で百万ですから、5手6手先読みすることがどれほど大変かがわかって頂けると思います。
実際にはプログラム上の工夫を加えることで十数手まで先読みできるようにしています。その際の先読みを進める手の選択などはプログラムそれぞれで手法が全く異なります。それでもどのプログラムにも共通していえるのが「強い人間の将棋プレイヤの思考を真似ている」ということです。それが一番私たちにとってはわかりやすいからでしょう。しかしその手法の延長だけでは人間名人を破るのは無理ではないかというのが私の個人的な意見です(おそらくほかの将棋プログラマの方達も同意見と思います)。もっと機械(コンピュータ)独自の手法が編み出されることで人間名人を超えるものと想像しています。そしておそらくその手法とは人間サイドから見て非常に「ずるい」と思われるものではないかと思っています。しかしその方法はまだ誰も見つけていないわけで、それを見つけた方は賞賛に値するものと思っています。
終盤の「詰み」の段階になってくるとはっきりと人間よりコンピュータのほうが勝ってきています。たとえ数十手の長手数の詰みであってもコンピュータはいともあっさりと短時間に見つけてしまうのです。すでのその能力はプロ棋士をも凌駕しています。江戸時代の長手数の詰将棋「寿」(611手詰)ですら36.8秒 (マシンUltraSparcII 360MHz ハッシュ 28Mb プログラム「長井詰」)で解いてしまうことが報告されています。
人間サイドとしては序盤にコンピュータに差をつけ、優位を失わないように中盤を乗り切り、王手がかかりにくい局面のまま勝負を決するというのが戦い方の目安になるのではないかと思います。コンピュータ将棋サイドとしてはその逆の戦い方になるでしょう。
(2000/09)
将棋プログラムの製作
一応パソコン、プログラムのある程度の知識のある方を対象に説明していくつもりですが、よく分からない点についてはメールにて問い合わせてくださっても結構です。ただ、可能な限りお返事していくつもりですが確約するものではないことをあらかじめご了承ください。あと私自身プログラム歴4年程度(C言語は1年程度。将棋ソフト以外作ったことはありません)なので間違いの個所もあるかもしれないことをご了解ください。皆さんが将棋ソフトを作る時の一助になればと思っています。
まず用意するもの
- ソフト開発用アプリケーション(Visual C++ / Visual Basic等)。処理速度等の理由からコンピュータ将棋ソフトを制作している人はC言語を使用する人が圧倒的に多く、ここでもC言語を使用して説明していきます。値段は大体3万円くらいから。コンピュータ将棋プログラムの解説はC言語が比較的多いし処理速度も早い事からやはりC言語がお勧めです。
- 機械本体はなるべくスペックの上のマシンを使用しましょう。制作時間に大きな差が出ます。古いマシンを使っていたときは一回コンパイルすると結構長い時間待たされることにいらいらしました。一行直してはコンパイル、また一行直してはコンパイル、という状況は頻繁に起こり得る(私だけかも(^_^))のでマシンスペックは重要です。
- 使用言語の基礎知識の習得。駒をグラフィック表示させたいと思ったらC++の知識もあったほうがよいです。とりあえず画面にこだわらない将棋ソフトなら、Cの知識だけでよいと思います。(C言語のみで駒グラフィック表示、マウスでの駒移動をさせようと思うとms-dosベースのソフトならいざ知らず、Windowsソフトとして作成するのは結構大変です)私はC++のオブジェクト指向なるものを理解できず、1年間駒の表示はテキストのままで作成していました。まあ、これはこれで一見質実剛健、強そうなソフトには見えるかもしれません。あとCのみの場合コンパイル時間、思考時間ともに早くなることをつけくわえておきます。
(C言語のみで作った将棋ソフト「乾IIver.1.8」)

(C++とMFCを使った将棋ソフト「乾IIver2.0」)

(画面インタフェースに凝ったタイプ)

データ構造を決める
とりあえず使用言語はCのみということで話を進めていきます。
データ構造をどうするかという問題は非常に重要です。ただ将棋ソフトとして動くようにするためだけならあまり問題になりませんが、あとあと棋力がアップしてきて処理速度が問題になってきたときに、データ構造が悪いと、思うように最適化が行えません。またいろいろいいアイデアが浮かんでもそれを導入できないようなデータ構造では宝の持ち腐れになってしまいます。よく考えたい部分ですが初めての人にはどんなデータ構造がよいかなど想像もつかないと思います。そこでまずは自分にとって一番わかりやすいデータ構造にして一度制作した後、もう一度データ構造について考え直すという順序で進めていくのがよいかと思います。一見回り道のようですが、ほとんどのプログラマはデータ構造を作り替えているようです。特に上位進出プログラムは宿命ともいえるかもしれません。
最低必要なデータとしては盤面、指し手、手番などで、「乾U」では以下のようにデータ構造になっています。
- 盤面
- 駒の種類(歩、香、桂、銀、金、角、飛、と、成香、成桂、成銀、馬、竜、玉)歩から順に1、2、3、と続き、玉が15となる。成金はなし。成ったときに駒の種類の数字に7をプラスすることで成りごまを表現できる。
- 先手の駒か、後手の駒かの区分(先手;1、後手;2、駒なし;0)
- 持ち駒(歩、香、桂、銀、金、角、飛の先手後手それぞれの枚数)
- x座標、y座標。2次元配列ではなく、1次元にする方法もあり。「乾U」では2次元配列にしている。
- 指し手
- 移動前のX座標、Y座標、移動後のX座標、Y座標、成・不成区分、打つ場合は駒の種類
- 手番
構造体は以下の通り
struct BAN {
ks[9][9];//駒の種類(x座標、y座標)
sg[9][9];//先手の駒か後手の駒か(x座標、y座標)
ms[3][8];//持ち駒の枚数(先手後手区分、駒の種類)
}
struct KIF {
x1;//移動前のx座標
y1;//移動前のy座標
x2;//移動後のx座標
y2;//移動後のy座標
n;//成・不成区分
u;//打った場合の駒の種類、移動する手の場合この値は0になる
}
で、実際には指し手に点数をつけることになるので指し手構造体は
struct SASITE {
struct KIF st;//上記のKIF構造体を入れ子にした
int hk;//指し手の評価点
}
のようにしました。構造体KIFを入れ子にしたのは失敗だったかも知れません。記述が長くなってしまいます。
あとはゲームツリーの構造体、駒の利き情報を持った構造体が必要ですが、ひとまずそれは後回しということで話を進めましょう。
駒の表示
表示されればどんな記述でもよいと思って以下のようにしました。参考程度にご覧ください。
/* 盤面を表示する */
void disp(short te_d){
short x;
char *dsp_koma[3][16] ={" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," ",
" ","歩","香","桂","銀","金","角","飛","と","杏","圭","全"," ","馬","龍","玉",
" ","■","■","■","■","■","■","■","■","■","■","■"," ","■","■","■", //ここは後手の駒を外字ファイルで作成します。
};
system("cls");
printf(" 9 8 7 6 5 4 3 2 1 \n");
printf(" +−+−+−+−+−+−+−+−+−+ \n");
dsp_mt(com,7,te_d);
if (ban[te_d].ms[com][7] > 0)printf("%s |",dsp_koma[2][7]);
else
printf(" |");
for (x = 0 ; x < 9 ; x++){
printf("%s|",dsp_koma[ban[te_d].sg[x][0]][ban[te_d].ks[x][0]]);
}
printf("一 ");
printf("\n");
printf(" +−+−+−+−+−+−+−+−+−+ \n");
dsp_mt(com,6,te_d);
if (ban[te_d].ms[com][6] > 0)printf("%s |",dsp_koma[2][6]);
else
printf(" |");
for (x = 0 ; x < 9 ; x++){
printf("%s|",dsp_koma[ban[te_d].sg[x][1]][ban[te_d].ks[x][1]]);
}
printf("二 ");
printf("\n");・
・
(途中略)
・
・
printf("九 ");
dsp_mt(man,7,te_d);if (ban[te_d].ms[man][7] > 0)
printf("%s\n",dsp_koma[1][7]);
else
printf("\n");
printf(" +−+−+−+−+−+−+−+−+−+ \n\n");
}
/* 持駒の表示 */
void dsp_mt(short a,short b,short te_dd){
char dp[11] = " 123456789";
if (ban[te_dd].ms[a][b] >= 10){printf("%d ",ban[te_dd].ms[a][b]);
}
else{printf(" ");
printf("%c ",dp[ban[te_dd].ms[a][b]]);
}
}
以上、わかりにくいと思いますが、こんな感じです。このリストで表示される内容はこのページの一番上の盤面の画像のようなものになります。
インタフェース
ここでいう「インタフェース」とはつまり、駒をつまんでマスの上に置く動作の実現です。この実現方法にはいろいろあって、テキストベースのコマンドライン入力にするか、GUIベースのドラッグドロップにするかは迷うところ。もしこれから将棋ソフトを作ろうと考えている方であまりプログラムに自信がないのならテキストベースのコマンドライン入力のほうをお勧めします。GUIプログラムは学ぶべき事項がたくさんありすぎて、肝心の思考ルーチンの製作にたどり着くまでが大変であるのがその理由。「綺麗な画面で作りたい」を第一義に考えておられるなら、頑張ってGUIプログラミングを勉強してください。
char key_in[20];
printf(" set point xyxyn ? "); //入力を促すメッセージ表示
scanf("%s",key_in); //キーボードからの入力データを受け取る入力データを文字配列にしているのは、駒を打つ場合「77HU」という書式で入力するため。
これでx1,y1,x2,y2,n,uにデータを取り込む。データの正当性をチェックして、あとは盤面データの更新をかけます。
- 移動先に駒があった場合は取った駒を駒台に移動
- 駒を移動(もとあった場所の駒データをクリア、移動先のマスに駒データを書き込む)
- 成る場合には駒の種類を変更
更新した盤面データを盤面表示ルーチンに渡して更新された盤面が画面に表示されれば終わりとなります。
ルールを教える
最初の難関といえるのがこのルールチェックの部分だと思います。記述はどうしても長くなるし、ここにバグがあっても見つけにくいし。。。私のばあい、先手後手それぞれに指し手を生成するルーチンがあります。与えられた局面で指し得る手をすべて一旦生成します。で、入力された手と一致するデータがあればOK、なければ駄目という判定をおこなってルールチェックを行っています。コンピュータ側のルーチンとしては生成された指し手の中からよさそうな手を選択する、という思考方法になるはずです。
この「指し手を生成する」ルーチンは後々重要になってきます。思考速度の優劣はここで決まるといっても過言ではなく、「利き情報の持たせ方」とともにプログラマが頭を悩ませ、アイデアを注ぐ部分でもあります。みなさんもすばらしいアイデアを思い付いて下さい。
質問集
私の言語の知識は 「Basic」が少しできる程度です。パソコンの環境は「PC9821V13S5D3」です。あと、OFFICE97もあります。この環境でJAVAやヴィジュアルベ−シックとか いろいろ言語がありますが、どの言語が使えるのでしょうか。そして、私みたいな初心者でも将棋ソフトを作ることのできる言語と、そのために必要な本を教えてください。よろしくお願いします。
OFFICE97のようなソフトだと作成はできないと思います。頑張ってエクセルで作れないこともないかもしれませんが作業量、速さの点でとんでもないことになりそうです。とりあえずC、C++、JAVA、Basic辺りが無難と思います。本もたくさん出ているし。Windowsが動いている環境なら開発はとりあえずできると思います。書籍についてはCSAのホームページ等に紹介されているので参考にしてみてください。
盤面の表示において、対柿木2の時、たしかDOSプロンプトの画面で、表示してたけど文字の反転した(後手の駒表示)は、どうやって行うのでしょうか。
外字を使用しました。Windowsに標準でついてくる外字エディタでまずさかさま文字の作成をして、外字ファイル(eudc.tte)を差し替えると表示できます。MFCでも文字の回転ができるようですが、こちらについては知識がありません。
開発ツールはC++だと箱田さんが言われるように難しすぎるし、VBだとできることがかぎられてきます。 そこで、delphi3を買おうと思いますが、delphi3で将棋ソフトは作れるのでしょうか?
delphi3についてはよく知りませんがおそらくできると思います。
ソフトを作る上で、よいアドバイスはありますか。
途中投げ出さずに続けることだと思います。これ、すごく難しいですよね。私の場合、まず駒の表示、駒の動きのルールをプログラムする。ここまでは一気に作りました。2週間ぐらいかけたと思います。ここまでやってしまえばあとは強くしていく作業だけなので。。。そこは楽しみながらゆっくりやれると思っていました。
この一番つまらない駒の表示、駒の動きのルールの部分をさっさと終わらせるために駒の表示はテキストで作成しました。
まず盤面を表現するのに9×9の配列を作ります。先手の駒があるか後手の駒があるかをあらわす変数と、駒の種類はなにかという変数の2つが必要と思います。後は持ち駒。先手後手でそれぞれ歩香。。。飛の枚数をあらわす変数です。これらの変数からディスプレイに盤面を表示する部分を作成します。
はじめからここの部分で凝ったものを作ろうとすると時間ばかりかかるのでごくごく簡単に作ります。まずは将棋プログラムとして動作させることです。ルールを教えるところ(つまり駒をつまんでおく、持ち駒にするなどの動作を実現する)までが難関です。頑張ってください。
「丸電将棋」開発履歴
下に行くに従い新しい記事です。
| date | version | |
| 1997/02/03 | 0.1 | 最後まで差し続けるようになる。大変うれしい。 |
| 1997/02/10 | 0.2 | 柿木将棋と初対戦。勝ち負けより最期まで将棋になっているのがすごい。 |
| 1997/02/10 | 0.4 | 対柿木将棋戦85手で負け。 |
| 1997/02/13 | 0.4a | アルファベータ法導入。思考時間大幅に短縮。 |
| 1997/02/16 | 0.6 | 評価関数に大駒自由度評価追加。 候補手生成に駒取をねらう手を追加。 |
| 1997/02/17 | 0.7 | 評価関数に駒位置評価追加。 |
| 1997/02/19 | 0.8 | 先読み手数を最大16×12×8×6×4とした。 |
| 1997/03/12 | 1.0a | 玉の状態を評価関数に取り入れた。かなりそれらしい手を指すようになる。 |
| 1997/04/02 | 1.1 | 候補手生成ルーチンを改善。 |
| 1997/04/09 | 1.2 | 1.1のバグフィクス版。 合駒、利きをつける手を暫定で導入。 |
| 1997/04/10 | 1.2a | 1.2のバグフィクス版。 最大先読み手数を24×14×8×6×4とした。 |
| 1997/5/14 | 1.3a | 最大先読み手数(深さ)を7手までとした。 |
| 1997/05/14 | 1.3c | 柿木将棋2のlevel1に勝ち。しかし思考時間はまだ長いため(2時間)負けとする。 この時の棋譜は紛失。 キラー手導入。思考時間大幅に短縮。 |
| 1997/05/28 | 1.6 | 限界を感じ、指し手生成ルーチン全面改訂。 合駒、利きをつける手を追加。 |
| 1997/06/12 | 1.8 | 「乾II(けんじ)」と命名。 |
| 1997/06/12 | 1.8a | バグフィクス版。 レベル変更、ヒント、ビープ音、棋譜保存機能を追加。 |
| 1997/07/23 | 1.8c | 柿木将棋IIのレベル1に初勝利。 |
| 1997/09/08 | 1.8d | 対戦相手の詰みを調べるルーチン追加。 |
| 1997/10 | 将棋プログラマ金沢伸一郎氏と対局。負け。 | |
| 1998/01/20 | 1.9c | マウス対応・高速化。記述をCからC++に変更。 インタフェイス一新。 シェアウエアとして公開。 |
| 1998/02/04 | 2.0 | 詰み探索を5手まで延長。 AI将棋レベル1に先手、後手両方で勝利。 |
| 1998/02/12,13 | 第8回コンピュータ将棋選手権に参加。下位グループで4勝3敗。 | |
| 1998/04/10 | 2.1 | 飛び駒の利き情報変更。バグ修正。 評価関数変更・アタリ駒判定追加。 |
| 1998/05/22 | 2.3 | 飛び駒の利きのバグ修正。 |
| 1998/07/02 | 2.4 | 成りを狙う手追加。 |
| 1998/09/20 | 「金沢将棋98」の入門レベルに勝ち。 これで主な市販将棋プログラムのすべての最弱レベルに勝利。 吉村氏(「永世名人」「吉村将棋」作者)より「強くなりましたね」とお褒めの言葉を頂く。 |
|
| 1999/03/18,19 | 第9回コンピュータ将棋選手権に参加。上位グループで1勝6敗。 | |
| 1999/07/16 | 「対局将棋 乾(けん)」としてMSD Japanより市販される。 | |
| 2000/02/15 | 3.0 | 相手の思考中にも予測手による読みの継続を出来るようにした。 インタフェイス一新。 プログラム名を「乾III」から「丸電将棋」に変更。 |
| 2000/03/02 | 3.1 | 序盤向け指し手生成ルーチン追加。 |
| 2000/03/08〜10 | 第10回コンピュータ将棋選手権に参加。上位グループで2勝7敗。 | |
| 2002/06 | ダイソーより PCゲーム「将棋」として発売される。 「対局将棋 乾(けん)」の機能制限版 | |
| 2003/11 | ソニー・ミュージック・ディストリビューション社よりPCゲーム 「将棋」 として発売される。 | |
| 2004/12 | FIX社 ロムディアシリーズPCゲーム「将棋 3丁目棋士列伝」として発売。 | |
| 2005/12 | ダイソーよりPCゲーム「ネオ将棋 将棋高校」 として発売。 | |
「丸電将棋」の仕様
2000年9月12日(火)現在の最新バージョンの「丸電将棋」の仕様です。
| 丸電将棋 | |
| バージョン | 4.0 |
| 製作ツール | VisualC++ ver.5.0(pro) |
| 使用言語 | C++ 思考部分約17000ステップ |
| 思考方法 | 先細前向枝刈 アルファ・ベータ法 最大6手まで先読み |
| 探索局面 | 毎秒500局面(Pentium 133MHzの場合) |
| 定跡 | あり(500手) |
| 詰探索 | 最大7手詰まで。必至ルーチンなし。 |
| 特徴 | 戦型は定跡から外れたときに決定するようにした。定跡ファイルに戦型情報をもたせた。 高速化の為、利き情報の獲得方法、保持方法を変更。プログラムのステップ数増加のほとんどはこのため。 先読みの末端で、あたっている駒があれば評価に加えるようにした。 持時間節約のため相手の手を予測し、相手の思考中に先読みを進めるルーチンを追加。 若干指し手生成ルーチンを改良。 |
| 勝ったことのあるプログラム 思考時間20分以内 (Pentium 133MHz) |
柿木将棋IIのレベル2 金沢将棋98の入門レベル 東大将棋のレベル0 AI将棋IIのレベル1 AI将棋(初代)の最強レベル 森田将棋97のレベル1 吉村将棋のレベル2 お父さんのための将棋2のレベル1 ショックプライス500将棋の最強レベル |
| 最終参加公式戦 | 第10回コンピュータ将棋選手権 上位クラスで2勝7敗 使用マシンAptiva(K6-2 400MHz) |
対市販将棋プログラム戦
公式大会
「読まない」将棋プログラムを望む
将棋においては「読み」が深く正確な者にこそ勝利の女神は微笑む。相手より読みが深ければ勝敗の結果はおのずと明らかだ。しかし、「読みの深さ正確さ」は本当に「棋力」とイコールなのだろうか。「読みの深さ正確さ」が「棋力」とあまりに近似であるために私達は錯覚していないだろうか。こと人間棋士に関しては読みの深さ正確さが棋力そのものだと思うが、それがすべてではないという可能性があると私は思う。
私は「現在最も強い棋士」を「最も速く地上を駆けるもの」に置き換えて考える。
現在「走る生き物」で最速なのは(短距離では)チーターだ。最強の棋士の将棋同様、その走る姿は誰の目にも美しく、芸術的ですらある。
そこで私達は地上を最も速く走る機械を考えるとき、こう思うだろうか。
「速く走るには少しでも広い歩幅で脚の回転をはやくすることが問題だ。できればチーターのように」と。
今の将棋プログラマはこのチーターを模したロボットを目指しているといえると思う。
「少しでも読みを深く正確に。できれば名人のように」。
しかし、私達現代人はすでにチーターを模したのではダメだということを知っている。優れた先人の発明により「最も速く走るのは車」なのは明らかだからだ。しかもそれはチーターとは全く違う(自然界ではあり得ない)方法で走る。同じように人間棋士とは全く違う思考方法で機械(コンピュータ)は人間棋士を追い越せるのではないか、と私は考えている。
私達人間棋士はやはり「深い正確な読み」が棋力に関わってくると思うが、機械に関しては他の(例えば上記の例での車のようにほとんど反則といえるような)アプローチがあるかもしれない。それがどんなものかは私にはわからないし、将棋プログラムでは最後までその答えは得られないかもしれない。でも坂道を転がる岩に車のヒントがあるように、わたしたちは大いなるヒントを今、見過ごしているかもしれない。目的は「先に相手の玉を詰める」であって「深い正確な読み」ではないのだから、発見の可能性はあると思う。
空を飛ぶ鳥が翼をはためかせる姿をみてその動きを模すのはかつて誰もがやったことだった。しかしその優雅な美しい「翼のはためき」は鳥には必要不可欠でも、実は空飛ぶ機械にとっては「あってはならないもの」だ。同じように「深い正確な読みの探求」は機械にとってはただの足かせなのかもしれない。「読まずに強くできるわけがない」と思うのは当然だが、「飛ぶ」といえば鳥しか思いつかない人にヘリコプターが飛ぶ原理は発見できないと思うのだ。
私達の「強い電脳棋士」の地道な探求の中からすばらしいアイデアが出てくることを願う。
と、言うのは簡単だけどね(笑。私も頑張って考えたいと思います(と前にも書いたな〜(笑)。
2002年3月22日(金)
コンピュータ将棋は何の役に立つか
思いつくまま何に役立ちそうかを挙げていくと、下記のようなものがあると思います。
- 遠い将来実現されるであろう人型ロボットへのプログラム搭載。
- 研究の成果を他分野にフィードバック。
- 将棋の一般普及あるいは海外への普及。
1.については夢のような話ですが、遠い将来、確実に実現されるでしょう。ロボットの需要は老人介護などに期待できると思いますが、将棋ファンの私としては介護ロボットには接待将棋くらい指せるようになっていてほしいですね。まぁ、まだまだ先の話でしょうが。2.はちょっと想像しがたいですが、チェスプログラムの研究においてすでにその研究成果が他分野に役だっているそうなので、将棋においても同様のことは可能なはずと考えています。が、いまのところ目だったものはないようです。現段階ではチェスにおける研究成果を将棋に活かしている、という程度でまだ将棋独自の研究成果はあまりないということです。3.は一番現実的でしょう。最近の将棋人口は減少の一途をたどっています。圧倒的なテレビゲームの普及により将棋をしらない子供たちが増えてきています。彼等が親の立場になっていくにつれ、さらに減少の傾向が強くなりそうです。核家族化によって祖父に習うことも減ってきているでしょう。将棋は人と人が向かい合って指すもの、という考えもあるでしょうが、それもあくまで将棋をしっているという前提があってのこと。ルールを学ぶ。基本的な戦法を学ぶという点ではコンピュータ将棋はおおいに役立ってくれるはずです。また、海外への普及にも役立ってくれるはずなのです。
アトムの憂鬱
鉄腕アトムは7つの力を持つという。空を飛べる、十万馬力のパワーをもつ、などはご存知の通り.。彼は21世紀の技術の粋を結集して作られた世界一優秀なロボット。そして、そのスペック表には記載されていないだろうが、間違いなく持っていると思われる能力、すなわち「思考ゲームがとてつもなく強い」。彼を世界一たらしめたのはそのパワーでなく優秀な頭脳だったのだから当然だろう。
アトムは人間と同じ小学校に通う。当然その人並みはずれた能力のため、他の子供達からからかわれ、たびたびいじめを受ける。時には「化け物」といわれショックを受け、ロボットでありながら涙をこぼす。運動会には当然出させてもらえない。そもそも人間に「奉仕」するために生まれてきたのであって、「競う」ためではないのだから。そして、作中ではそのパワーにばかり目が行きがちだったが、おそらく将棋を指せば学校でナンバーワンどころか世界中で彼に勝てるものなどいなかったろう。彼をはじめ、ありとあらゆるロボットは将棋大会に参加できない。そのことをアトムはどう思うのだろうか。適当に強さを人間に合わせて昼休みにクラスメイトの相手をして上手に負けて相手を喜ばすことくらいはするかもしれない。そうやって人間に奉仕することで喜びを感じるかもしれない。しかし、アトムというロボットを実現できる時代、思考ゲームで人間はロボットに全く太刀打ちできないのは間違いない。そんな時代、人間はどんな優位性をロボットに対して持てるのだろうか。結局人に残されたものは「それでもスイッチを入れるのはオレだ」なのだろうか。
アトムはビルの鉄骨の上でひとり涙するとき、強すぎる自分の棋力を嘆くことはないだろうか。
アトムを知った当時、私は子供心にこの作品をみて思った。「人間はひどい」。ひどい目に遭わせる人間にせっせと奉仕するアトムの姿をあわれと思った。でもこうも思った。人間はそこまで非情ではない。遠い未来、きっと人間はアトムを仲間として受け入れてくれる、と。そして今「アトム今昔物語」にあったように次々と人間の職人的技能を機械・電脳は身につけ、追い越してきている。そして今後さらにそのスピードは速くなる。人間は新しいパートナーの出現として歓迎するのか、排斥するのか。
マンガとして誇張された部分はないにせよ、アトム並のロボットは将来確実に実現されるだろう。機械工学によるものかバイオテクノロジーによるものかわからないが、彼は必ず人間の前に登場する。そしてそのとき彼に生きる喜びはあるのか。
現状のコンピュータ将棋の置かれている立場と重ね合わせる。私が申し込んだコンピュータ将棋プログラムによる大会への参加は「人間ではないから」という理由でことごとく断られた。その一方ファンの拡大に多大な貢献をしているコンピュータ将棋。私はそこにアトムの憂鬱をみる。
2002年2月28日(木)
将棋の将来]
2002年2月17日(日)の日記より
今日は残念なことがあった。県内のアマチュアの将棋大会に参加を申し込もうとした。いままでにも何度かあった事だが、今回も参加を断られた。つまりコンピュータ将棋の参加は認められない、ということなのだ。「将棋は人と人がお互い向き合って指すもので、そこで親睦を深めることが大会の目的だから」というのが理由である。つまり私の将棋プログラムが参加できないのは「人間ではない」からだ。それはそうなのかも知れないが。。。。残念だ。
今まで何度も同じ目に遭った私は「自分が苦労して作ったプログラムです。どうして参加できないのですか。どうして対局を通じて親睦を深められないと言われるのでしょう」と今回ばかりは粘った。しかし「あなたの考えはそうかもしらんが私達のほうの考えは違う」と一方的だった。結局現在でも将棋プログラムについての理解は全くといっていいほど得られていないためだろうと思う。将棋プログラムなんて、なんだか店で売っているものと同じに捕らえているきらいがある。同じく将棋プログラマなんて、エクセルやワードを使っているパソコンユーザー位にしか思われていないのだ。あるいはデータベース的な誰にでも作れるのが将棋プログラムだと。
しかし、違う。自作のプログラムといえば、巷にあふれる将棋プログラムとはわけが違う。世界に一つしかないのはもちろんだし、将棋プログラマといえば他の一般の将棋ファンに負けなくらい将棋が好きなのだ。たしかに対局中は目の前で行われている対局に対して作者は一切手出しせず、無関係だ。しかし日夜目に見えない対局者を相手に机の上でそれこそ何百時間も将棋のことを考えているのだ。将棋プログラムはその努力と情熱と将棋に対する限りない愛着の産物なのだ。そんなことをする将棋プログラマを将棋好きといわずになんというのか。そして全国でもその数は多くない。将棋ソフトはいまや全国に数百万本が出まわっているそうだが、プログラムを作ったのはほんの数十人のプログラマである。アマチュアの将棋プログラマを含めても百人程度だろう。新潟県にはおそらく今の時点で将棋プログラマは私しかいないと思われる。私は将棋は優れた頭脳ゲームだと思う。同時に優れた日本の文化であると思う。これからも将棋界がずっと発展していってほしい。しかし将棋人口はどんどん減ってきている。子供達はテレビゲームに夢中になり、将棋をやる子は年々減ってきている。将棋の将来は暗い。このためには将棋プログラムの進歩もまた不可欠だと思っている。もはや子供に将棋を教えることは、いまの親達にはできない。核家族化でおじいちゃんから学ぶこともなくなった。いったいだれが子供達に将棋を教えるのだろう。将棋を通じて親睦を深めるなど将棋のルールを知らないほとんどの人達にはどうでもいいことであり、理解できないことである。「将棋が強い」ことはどんどん意味をなさなくなっていく。名人などただの過去の産物の長にすぎなくなっていく。
また、将棋のプログラムの研究は将棋以外にも応用される可能性を秘めている。「人工知能」の研究分野の一つとしてゲームを研究する機運は年々高まっているそうである。また以前、わたしの将棋プログラムを手紙で原田泰夫九段に紹介したとき、原田九段はその返事の中で「日本の先端技術の進歩のため頑張ってください」と激励して下さった。私自身にはそこまでの能力はないと思うがコンピュータ将棋界の発展に微力ながら寄与することはできると感じ、いままで続けてきた。そうすることによってわれわれの将来のためになっていくと信じた。
それだけに今回のことは残念だった。将棋プログラムに対して理解があり、そのうえで参加を断られたのであれば納得はいく。しかし将棋プログラムにたいする理解はないといわざるを得ない。私も電話でもつい興奮した口調になってしまった。電話を切ったあとはくやしくて涙がこぼれた。正直、「人間棋士なんてみんなコンピュータに負ければいい」「将棋なんか廃れてなくなってしまえ」とすら思った。以前描いた「こすもす81」というマンガは将棋プログラマの立場で描いた。今描いている将棋のマンガはぜひとも人間棋士の側の視点で描いていこうと思っていた。どちらの視点で描いてもいずれも将棋と人間棋士はすばらしいということを読んでいる人に感じてもらえるような作品にしたいと思っていた。今日はそんなことをするのはばかばかしいと思った。将棋界の発展のために頑張るなどごめんだと思った。「何もかもやめてしまいたい」と。。。妻もさすがにたびたび同じ目に遭い毎回落胆している私を気の毒がっていた。
しかし落ち着いてからこうも考えた。今ここで努力を止めてしまっては、それこそいままでのことは全部無駄になる。将棋界がすべて「コンピュータ将棋と将棋プログラマ」を排斥しようとしているわけではない。私の「コンピュータ将棋プログラマ」としての立場もまたすくなからず先人の努力のうえに成り立っているものである。今回は果たせなかったが、(大会に参加できれば実現できたであろう)私の将棋プログラムとの指導対局を快く引き受けてくださった原田九段にも恩を感じている。自作のマンガについてもわたしのような拙い作品を心待ちにしてくださる読者の方がすくなからずいらっしゃる。今回の件はコンピュータ将棋に対する無理解が原因だと思う。わたしはこれからも「布教」さながらに将棋界発展のためひいては日本の将来のために頑張らなければならないのだ、とそう思いつづけたい。
未来へ渡すバトン
コンピュータ将棋は人間棋士を真似ているだけではダメだということをことあるごとに発言してきた。先日週間将棋紙にも「読まない将棋プログラムを」という内容で記事を掲載させてもらった。今回は「何かこれからコンピュータ将棋を作ってみようという人にアドバイス的な話を」ということで、いままで一番自分のいいたかったことを書いた。改めて掲載された記事を見て、これを機にすこし自分で考え直してみた。
******
よくよく考えると、実は手を読まないのは人間の方で暴力的に手を読み進めるのが得意なのがコンピュータ、という気がする。とにかくムダだろうが何だろうが疲れを知らずに読むのはコンピュータの方だ。そうやって一手でも深く読むことこそがよりコンピュータらしい思考方法なのかもしれない。非常に優秀な評価関数の人間と、拙い評価関数ではあるがやたら深く読むコンピュータ。これが将棋における人間対機械の対決の図式なのか。
確かに私なら相手に50手も60手も先を読まれたのでは最初から対決する気になれない。勝負はついている(5、6手で充分)。
ならばコンピュータ将棋の果たした役割ってなんだろう。単純な計算を膨大に処理することによってあたかもコンピュータは知能を持っているかのように振舞うことができるということはチェスをはじめ思考ゲームの研究ですでに指摘されたことだ。これを再認識させたことだろうか。だとしたら正直言ってつまらない。人工知能というSFじみた、まるで夢のような科学技術が実は自分の想像の範囲内で実現できることになる。単純な計算の積み重ねでアトムのようなロボットが出来ることになってしまう。 しかしそんなことはない、と断言できる。確かに膨大な計算を繰り返すことで様々な能力をコンピュータは身につけていくだろう。が、どこかで必ず限界がくる。それがどんな段階なのかは想像もつかないが、いずれ全宇宙の物質をつかって一台のコンピュータを作ったとしても計算しきれない問題に直面するだろう(将棋の解析もそうなのだが)。遠い未来の子孫は何らかの解決策をみつけるに違いない。そのどうしようもなくなる段階に達する前に画期的な発見があるのだろうと思う。その発見がコンピュータによる将棋の思考の研究の課程でされないとしたら、これは悔しい。その発見はコンピュータ囲碁以降の研究からされることになる。
昔読んだアシモフ博士のエッセイ「どんなトラックだって?」は ご存知だろうか。 ざっと紹介すると、 昔優れた科学者がいて、「人類は月に行けるか」について考察した。高層建築、砲弾、 などなど当時考え得る全ての方法を挙げていく。そのあとその方法について科学的に そして論理的によどみなく検証していき「全部ムリ」と結論付ける。それこそ誰もが 納得いくような論理で。しかし今の科学者がみるとそこにただ一点の見落としがある。実に簡単な。。。そして当時すでにロケットも実現していたのにそれには当時の科 学者達はまったく気付いていない。 同じミスを私達もしていると思う、絶対。 未来の科学者、技術者からみると「こいつ等こんなことも見落としている」と笑 われているんじゃないかと。
すばらしいアイデアの実現があってこそ人間棋士をうち破るべきだと私は考えている。それほど人間棋士、とりわけプロ棋士やその頂点である名人の位にたどり着く棋士はすばらしい。単に「博識な愚者」(もちろんこれさえ膨大な努力と研究の成果ではあるが)のようなもので負かしてしまっては私もすごく悲しい。
次第にコンピュータ将棋の研究は一つの最終段階に入っていく。どんな形でコンピュータ囲碁以降の研究へとバトンを渡すことになるのか。
2003年8月
自然界最速は地上最速ではない
将棋プログラムを強くするための一つの方策として「直線的に深くよむ」、がよく言われる。これは将棋の強い人の思考方法に似せることで強くなるというとても明快な考えだ。「将棋とはいかに読むかではなく、いかに読まないか」という言葉も同じことといえる。たしかにこれ(「直線的に深く読む」こと)を実現すれば強い将棋プログラムが作れそうである。しかし、果たしてそうだろうか。
考えてほしい。たとえば原始時代、地上を早く移動する機械をあなたが発明する立場だとしてどんなものを目指すだろう。答えは明快だ。車、である。内燃機関ならもっとよいし、可能ならリニアモーターも実現したいところだ。そう、誰もけっして「チーターのように走る機械」と答えないのである。ご存知チーターは地上を走る獣(人間も含めて)では最速だ。だがチーターを目指したのでは地上をもっとも早く移動することはのぞめない。自然界において自動車のように地上を移動する生物はいない。しかし車が最速なのだ。
この世で最強の将棋指しは人間である。しかし「人間のように思考する機械」は最強を目指せないのではないか。車のアイデアは単純であるがすばらしい。こんなアイデアが将棋プログラムに存在し、まだ未発見のままであるのかもしれない。
(2000年4月)
コンピュータと人間
以前私は自分のホームページで将棋はいずれ人間はコンピュータに勝てなくなる、と断言した。その考えは今も変わっていない。しかしだからといってそのことを歓迎しているわけでもない。わたしは趣味でコンピュータ将棋を開発している。だから聞いている人は、私のいっていることとやっていることに矛盾があるとお思いになるかもしれない。私にとって、いまのところ将棋ソフトの制作はあくまで趣味であり、個人的な楽しみ以外の何ものでもない。私のしていることとはかなり離れた世界でコンピュータ将棋は進化していくものと思う。
将棋ソフト制作に取り掛かったきっかけは些細なことで、ほとんど偶然に近かった。もともと高校生くらいのとき、私は漫画家になりたかった。だから将棋ソフトが人間名人を負かすような実力を持ったところで「へえ、すごいな」程度ですむはずだった。しかし、自分で将棋ソフトを制作するようになり、次第にその実力もあがってくるにしたがってわたしは恐くなってきた。いずれは自分の一番得意な分野、すなわちマンガの制作をもコンピュータに追い越されてしまうのだろうか、と。マンガの制作で機械に追い越されるとは私の人生の否定に匹敵するようなことだ。
現在、詰め将棋の世界では詰め将棋を解くことにおいては完全にコンピュータが人間を凌駕している。そしてコンピュータが詰め将棋を創作する段階にまできている。この「創作」という言葉を使うことに異論をお持ちの方もいらっしゃると思うが、私は「創作」と「発見」は大差ないと思っている。結果としてできた作品が人間に好感を抱かせることができるかどうかが問題なのであり、その過程はさして重要でないと思っている。詰め将棋の解図、作図を何よりの楽しみにしている人にとってコンピュータを脅威に感じていることは想像にかたくない。将棋のプロ棋士にしても、年々向上するコンピュータ将棋の実力も「まだまだ」とはいいながら「私の生きているうちには負けたくない」という思いは年々切実になっていくだろう。
遅かれ早かれ、マンガの世界も同じだ。すでにゲームの世界では3Dモデルを使ったキャラクタが登場しているが、あれは脅威だ。どんなに画力のある漫画家でも一人のキャラクタを360度方向いずれの方向からも正確に描けるなんで無理な話だ。これがコンピュータにとっては朝飯前の話なのだ。これからは表情やデフォルメも簡単にこなすようになっていくだろう。さらにその先には限りなくそのキャラクタを人間に近づけていく技術が開発され、実現されていくだろう。こうなっては私の出番はなくなるように思える。「これはコンピュータには無理だろう」と思えることを次々と実現していくと思う。おそらくそこまで進歩したとしてもまだ紙の上にマンガを描くことができるのは人間だけかもしれない。しかしそんな時代に紙の上のマンガにどれだけ人は魅力を感じるだろうか。ほとんど現実に近い存在感のキャラクタと比較にならないだろう。
チェス名人のカスパロフ氏がDeep Blueに負けたとき、「果たして機械の勝利か、(開発に携わったすべての)人間の勝利か」というのが話題になった。しかしマンガで私が負けたときは「誰の勝利だろうと私の負け」である。
いったい人はコンピュータに負けない「何か」を持っているのだろうか。コンピュータとはどのように付き合っていけばよいのだろうか。
(1999/05)
コンピュータ将棋は谷川竜王・名人(98年3月現在)に勝てるか
コンピュータ将棋は人間名人に勝てるか、という質問に私の考えを述べてみたい。
結論から言って「絶対にコンピュータ将棋が勝つ」と思う。コンピュータのハードは年々進歩している、「約5年でCPU性能は10倍」という性能アップのテンポは今後もほとんど変わりないだろう。これによりプログラムの進歩がまったくなくても、コンピュータのハードの性能アップだけで5年で1段ずつ確実に強くなる。10倍の処理スピードがあれば1手深く先読みを行えるため、というのが根拠である。この確実さは人間が上達する確実さの比ではない。開発プログラマは5年ごとにプログラムの「#define MAX_DEPTH = nn」のnnの個所を1づつ増やしていくだけでよい。後は新しいCPUを勝ってくれば昼寝をしていても強くなる。たったこれだけで単純計算で500年で100手(!)先読みができることになる。これだと駒がぶつかったころ、勝負は決するということか。話はこんな単純ではなかろうが、コンピュータ将棋は確実に少しずつ強くなるのは明らかだ。
ここで「ただ先読みすれば将棋に勝てるというものではない。大局観が問題」というよく言われる考えがあるかもしれない。しかしこれはコンピュータ将棋にとってあまり問題ではない。この事がいえるのはお互いの棋力が接近しているときにいえることである。人間のトップ棋士の先読みはおそらくは10数手だろうと思われる。10数手先読みする能力の棋士同士が対局したとき、大局観の優れているものが勝つといえる。が、将棋の勝負はせいぜい100手から200手。そんな中で10数手しか先読みできないから「大局観」という言葉が存在する。もはやオセロ、チェス(特にオセロ)に「大局観」という言葉は消えつつあると思う。あるのは「データベース」、「読み切り」である。「大局観」にあたる局面の評価関数はあるものの正直なところ少々いいかげんな評価関数でも先読みが広く深ければ(全幅探索ならもっとよい)充分強くなるのだ。
これに加えてプログラムは年々進歩している。人間のように「調子を落とす」「下手になる」なんて事は絶対にない。今コンピュータ将棋といい勝負をするアマチュアの2段程度の人は数年後にはコンピュータ将棋に確実に勝てなくなるだろう。私自身はすでに勝てない。
「絶対にコンピュータ将棋が勝つ」のが動かすことのできない結論なら、問題はそれがいつのことか、という点だ。私は20年後くらいではないかと思っている。だから今自分の子供を谷川名人や羽生4冠王に勝たせたいと考えている親がいたら将棋プログラムを作らせたほうが近道といえるのかもしれない。。。人間名人がコンピュータ将棋に負けてしまう時代、そんな世の中がすばらしいとはとてもおもえないが。。。私がこのように考えるのは極端に思われる方もいるだろう。しかし考えてほしい。つい10年前、コンピュータがチェスの名人に勝てると真剣に思っていた人が何人いたろうか。まして将棋を指すなどとわたしは思っても見なかった。しかし私はこうして自分で数ヶ月で将棋ソフトを作り、そして自分の作ったソフトにだんだん勝てなくなってきている。
ちなみに私は谷川名人のファンである。「絶対に負けてほしくない」と思う反面、名人を負かすプログラムを見てみたい、という気持ちもある。しかし、私はコンピュータプログラムを作る立場にいながらも人間棋士の応援をしていくつもりである。コンピュータには立ち入ることのできない聖域を人間は持っている、という確信をもったままこの世を去りたいとおもっているのだ。まさに谷川名人はその聖域を持っている一人だと確信している。頑張ってほしい。
私が生きているうちは囲碁の世界では確実に人間がナンバーワンを維持いていることと思う。試しに囲碁ソフトも制作しているが将棋と違って大変難しい。将棋も難しいが更にその上をいっていると思う。
チェスでは「全幅探索」という、可能な手をブルドーザ式に全て探索する手法を用いたプログラムが人間名人に勝ってしまった。今回人間名人にに勝ったチェスプログラムDeepBlueはプログラム技法、論理的な裏付け、その他人間の英知と呼べるものが沢山つぎ込まれている。しかし今現在、三目ならべ(TicTacToe)の最強の全幅探索プログラムをプログラムをする人ならなんの特別な技法も使わずに誰でもたやすく作れてしまう。未来においてはチェス、将棋、そして囲碁のプログラムでも同じたやすさで作ることができるようになるかもしれない。
電卓は優れた計算機能を持つがこれを知能と見る人はいない。ただハードの力のみ頼ってしらみつぶしに可能な手を全部ただ探索するプログラムははこれと同じだ。将来はただハードの力だけに頼って可能な手をただ端から順番に何十手も先まで探索するプログラムが人間に勝つようになるだろう。そこには知能などない。これを人工知能と呼ぶなら、人間ははじめから知能など持っていないような気がする。ただ膨大な量の単純な処理を繰り返しているにすぎないのだ。ただ膨大な量の単純な処理を繰り返す能力を人工知能と呼ぶのかもしれないが。。。。そうは思いたくない。
チェスで人間が敗れてしまった今、今度こそプロの将棋の棋士の方々に「将棋でコンピュータにストップをかけてほしい」と切に願っている。ゲームの世界、人間が勝てるのはもう将棋と囲碁しかない。
**************
いろんなところでプロ棋士の方たちがコンピュータ将棋について発言している。しかし、そのほとんどが弱気とも取れるものが多いのだ。生きているうちにはわたしは負けません、とはっきり言い切っている棋士はわたしの見聞きした範囲では羽生4冠王だけだった。しかし確実に羽生4冠王は真剣にコンピュータ将棋を研究しなければならない時期がやってくる。真剣に研究することによりコンピュータ将棋が人間に勝つ時期は大きく遅れるだろう。 運がよければ生きているうちには負けないかもしれない。それでも人間名人はいつかは負ける。最強の棋士がコンピュータ将棋になったら、「人間とは必ず間違えるもの、間違いを多く犯したものが負けるのが将棋」とした大山名人は絶対に間違いを犯さないコンピュータ将棋をなんと思われるだろうか。盤上、最善手を指し続けたものが勝つとした升田幸三実力制名人はその理想主義を体現できるものが唯一コンピュータだけだと知ったらどう思われるだろうか。
将棋で機械(プログラム)が人間以上なら他のことすべては程度の問題である。膨大な順列組み合わせの中から優れたものを選び出す能力で人間は機械以下になる可能性があるということだ。文学、絵画、音楽とて、いってみれば超天文学的な順列組み合わせの中から作者が選び出したものが作品になっているに過ぎない。それが順列組み合わせである以上、機械はいつかは人間より優れたものを作り出す可能性がある。機械がモーツァルト以上の曲を1分間に10曲作り、パガニーニ以上の技術でバイオリンを奏でる。。。
しかしそんなことがあってよいのだろうか!いいわけがない。少なくともわたしが生きているうちにそんなことはあってほしくないし、そんな可能性があるという思いも抱きたくない。しかし現実にはその方向に進んでいる。
手塚治虫氏のマンガに登場するアトムは何をやっても人間以上のことができてしまうことを悲しみ、悩んだ。そんなコンピュータの姿を私たちは見ることになるのだろうか。
(1998/4/18 補筆)
「いつコンピュータ将棋は人間名人に勝つか」アンケート集計結果
[2000年12月8日 18時16分]から[2001年04月22日 06時40分]までの期間上記の問いでアンケートを実施しました。その集計結果です。どのような対局条件になるかは流動的なので回答された方の主観にお任せしていますが、10秒将棋でいきなり名人が対局したり、逆に7番勝負で対局することも考えにくいと指摘させてもらっていました。回答してくださった方々、ありがとうございました。
回答総数:146
選択回答名
回答数 割合 割合の目安 2001年〜2005年 17 11.6% +++++++++++ 2006年〜2010年 24 16.4% ++++++++++++++++ 2011年〜2015年 24 16.4% ++++++++++++++++ 2016年〜2020年
20 13.7% ++++++++++++++ 2021年〜2025年 16 10.9% +++++++++++ 2026年〜2030年 6 4.1% ++++ 2031年〜2040年 5 3.4% +++ 2041年〜 16 10.9% +++++++++++ 永遠に人間名人には勝てない 18 12.3% ++++++++++++
Ta283 さん(ルールを知ってる程度)
お久しぶりです。Ta283です。
私、将棋に関しましてはルールを知ってる程度の人間(ほぼ初心者)ですがコンピューターは、いつ名人に勝てるかという質問ですが私は2030年以降だと思います。
その結論に達した理由を以下に列記したいと思います。
1.チェスとの違い。
a.コマの数と升目の量
8×8と9×9の違いは大きいと思います。そしてコマ数36と40の違い。
もっと気になるのはチェスはゲームが進むにつれ減っていきますが将棋は減りません。とったコマも使えますもんね。
b.「成る」の存在と取ったコマが使えると言うこと。
以上の二つの点を考えればチェスに比べて将棋は数桁高い計算数が必要だと思われます。しかし、現在のコンピューター・ハードの進歩を考えれば10年もあれば解決すると思われます。
2.将棋の特殊性と「名人」の特殊性
将棋は単純に数理学的計算のみで勝負がつくとは思えません「対局の流れ」と言った全体的な図形的また感覚的なものをプログラムを作るのは簡単とは思えません。また名人の持つ「ひらめき」と言ったものはプログラムで表現するのは、10年程度では出来るとは思えません。
次に以上の事が可能となったとしても名人に勝てるプログラムは簡単では無いのでしょうか?プログラムを作るのは所詮、人間なのです。そのプログラマーが「名人」に勝てるアルゴリズムを作るのは失礼ながら容易だと思えません。
もしコンピューターが「名人」に勝てるプログラムが作られるとすれば「名人」級のテクニックを持つプログラマーが出現するか、もしくは「名人」級の棋士が自分の脳の中にあるアルゴリズムを簡易にプログラム化出来るようになるかのどちらかと思います。
それを考えると2030年ぐらいかなと思います。
以上、ど素人の稚拙な考えですが、いかがでしょうか?(2001/1/10)
丸電 Ta283さん、お久しぶりです。今は将棋については初心者の方といえどもいろいろなことを既に知っておられて感心します。ご意見、どうもありがとうございました。
特にいろいろなひとの意見を比較して違いが顕著になるのがTa283さんがいわれる、「名人」の特殊性の部分ではないかと思います。人間の能力のうち、「直感」「ヒラメキ」「大局観」をコンピュータに備えることが可能なのかどうかという点ですね。比較的将棋プログラマの方に「複雑、かつ高度であるかも知れないが、コンピュータ上でも実現可能」という意見が多いように感じます。また反対に一般の将棋ファンのかたには「名人と同レベルの直感、ヒラメキ、大局観は実質実現不可能」という意見のかたが割と多いように感じます。私もコンピュータに人間と同じような「直感」「ヒラメキ」「大局観」の実装は無理かもしれない思っています。ただ名人の指す最善手を全く違うアプローチで同じように指すようになる(もしくはそれ以上の手を指す)ことは可能だと思っています。たぶんその際にはだれもが「コンピュータが直感・ヒラメキで指した」とはいわないと思います(当たり前ですね)。2者の解答にいたるアプローチの違いは電卓とそろばん、車とマラソンランナーくらいアプローチの方法が異なるだろうと思われます。
将棋が全く初心者の将棋プログラマがアマチュア有段者を打ち負かすコンピュータ将棋界の現状から、プログラマに高い棋力が必要かどうかは関係ないと見る向きもあるようです。池さん 「将棋の特殊性と「名人」の特殊性についてですが、カスパロフが負けてしまうまでは、チェスファンの多くが、チェスの特殊性と「世界チャンピオン」の特殊性があると思っていました(あるいは今でも思っています)」
木村 さん(将棋2級)(将棋2級)
木村といいます。将棋は2級ぐらいです。AI将棋2、AI将棋2000と東大将棋3のユーザーです。
コンピュータ将棋のユーザからみて、ソフトの進歩はめざましく、驚くばかりです。
コンピュータのハードの進歩とアルゴリズム、将棋自体の研究の進歩からみてあと十年に投票しました。
人間の方も進歩しなければいつか名人はコンピュータに負けます。
コンピュータ将棋は人間の将棋を進化させるでしょうか?名人戦などでもコンピュータを補助として使って対戦するような時代がくるような気がしてます。
終盤の詰め将棋はコンピュータの助けを借りて対戦、序盤、中盤の別れなど人間的な部分を人間が分担すれば最強のコンビになるのかも。どのコンビが強いかを競う時代がくるのでは。
中盤などでの、形勢判断という人間的な評価をいかにプログラムしていくか?がこれからの将棋プログラムの課題でしょうか?
(2001/1/10)丸電 木村さん、はじめまして。投稿、ありがとうございました。
チェスの世界ではすでに人間とコンピュータがタッグを組んで対局に臨むというのはカスパロフ氏をはじめ「アドバンスドチェス」として提唱されていますね。将棋の場合もいずれはそうなっていくのでしょうけど、どうも古式ゆかしい将棋の対局の雰囲気にあわないと嫌う人も出てきそうですね。でも最強コンビが生み出す棋譜というのも見てみたい気もしますし。。。興味は尽きないですね。GETYOU さん
はじめまして
将棋はほとんどやりませんが、コンピューターが人間に勝てるか、という話題には昔からとても興味を持っていて、関連の記事や情報があると食い入るように読んでいます。ホームページも以前から拝見させていただいています。
ここ数年での情報技術の進化と相重なり、コンピューター将棋の強さは一般人には届かないレベルですね。この調子だとあと15年ぐらいで名人打倒も現実味を帯びてくると思います。
私が危惧するのは、そのときにプロの棋士や名人が勝負を受けてくれるかということです。プロにとってはあまりメリットがないですからね。コンピューター将棋のレベルがプロのレベルに近づいたとしたらコンピューターに初めて負けるプロ、として世間に認知・報道されてしまってはあまりに立つ瀬がありませんから。まして名人ともなるとその背負っているものは我々一般人には想像もつきませんから安請け合いするとは思えないのです。メインの仕事(対局)が忙しいから、といって実現しないように思えます。
また、チェスでのIBMのように、コンピューター将棋も有力なスポンサーがついてくれないかと思います。そうすることによりと、研究開発も飛躍的に進化していくのではないでしょうか。コンピューター将棋プログラマー一同がチームを組んで一つの将棋プログラムを作る。プロとコンピューターの差が一気に縮まること間違いなし!?
昔のファミコンのゲームでも1〜2人で作ってたものが、今は数十人でチームを組んで一本のゲームを作っています。現実、無理があるとは思いますが本気でプロを負かそうと思ったら企業の力が必要になってくるでしょう。
お忙しい中とは思いますが、丸電さんの第11回コンピューター将棋大会を期待してます。開発頑張ってください。(2000/12/26)
丸電 GETYOUさん、はじめまして。ご来訪、ありがとうございます。励ましの言葉までかけていただき、感激です(^。^)/。ありがとうございます。
確かにスポンサーの問題は大きいとおもいます。開発・研究者が金銭的な苦労を一切しなくともよい状況ができれば、「X−DAY」は格段に短縮されることになるでしょう。しかしなかなか。。。○士通さんとか日本○気さんとか、バックについて下されば。。。(^。^)。いずれバラバラになっている開発者の方々がもっと協力していくような状況に変わっていくかもしれませんが、そうなったらなったでいろいろ開発上難しい問題が出てきそうですね。プログラムのなかみはすでに「開発者自身もよくわからない状況」は周知のとおりですし。。。(^_^;)。池 さん (将棋プログラム開発者)
はじめまして、池と申します。
「公式に名人が受けた勝負すべて」ということですので、おもいっきりコンピュータに有利だけど名人が受けてくれそうな条件として、NHK杯に準じたルールを条件として考えたいと思います。
私は、2010年〜2015年ぐらいには、上記のルールでコンピュータが名人に勝つことは十分可能だと思います。
#でも、山下さんの2006年は早すぎるような(^^;;
私は、いまのところ、2010年までに、
・必至を含めた終盤の能力が名人にほぼ追いつく
・中盤のひねり合いはアマ4〜5段から県代表クラス程度になる
・序盤はアマ初段〜二段の域を出ない(--;;;良くても三段?
のではないかと推測(期待?)しています。
この条件では、まともにやったら名人に勝てないのですが(^^;;、初めての対決では、名人も普通に定跡形で戦ってくれるのではないかというように期待しています。普通に戦ってくれる分には、プロの棋戦のデータをまじめに入力しておく&定跡データを充実させておく、ことでなんとかやや不利なぐらいで乗り切ってくれるのではないかなぁ、と思います。
あとは、(NHK杯ルールなら)中終盤で名人がちょっとしたミスをしてくれれば、なんとか逆転して勝てるんじゃないでしょうか。
序盤から名人に形勢を離されないで指せるようになるのは、2020〜30年ごろになるのかなぁ。CPUは、2020年ごろには今の1000倍くらい速くなっていると思いますが、そのCPUでαβを実行しても、多分20手先くらいしか読めないと思います。この程度の読みだと、序盤の仕掛けを理解することができない(と思います)ので、序盤専用に何かを開発する必要があるでしょう。
そうなってくれば、まともな持ち時間での5番勝負にも勝てるようになると思います。
p.s.
神吉さんみたいな、容赦のない人が名人だと、2010年には勝てないかも…。(2000/12/18)
丸電 池さん、はじめまして。山下さんのところの掲示板では、よくお名前を拝見しております。ご意見、どうもありがとうございました。池さんのご意見にあるように、将棋プログラマの共通とも言える対名人戦の認識は
- 終盤は名人並み(あるいはそれ以上)に強くすることは比較的容易に実現できるだろう。
- 中盤は処理速度の向上と、いま一歩のアイデアが必要。
- 序盤から中盤にかけてはまだ全然ダメ。
というところのようですね。あと対人戦に共通のことですが、「初手合いならなんとかいい勝負」というのもたしかにありますよね。あと「定跡無用の容赦ない序盤はニガテ」も(^_^;)。初勝利から、実力にはっきり差が出るまでかなりの時間がかかるだろうというのもうなずけます。
最後の一文、笑ってしまいました(^。^)。永森 修 さん (コンピュータ囲碁)
はじめまして、永森と申します。
コンピュータ囲碁のほうに興味を持っています。
コンピュータ将棋は、書籍から現状を推測させていただいております。
私は、単純な探索効率の向上と処理速度の高速化だけでは、永久に人間名人に勝てないのではないかと思います。
手の意味ないし作戦をプログラムで表現してどうかといったところではないでしょうか。
この辺りをブレークスルーとおっしゃっているのではないかと考えています。
最大の問題はプログラムで表現ないしは実現したときの、プログラムの構造(あるいはデータ構造とデータ)を、人間が組み立てることができるのか?ではないでしょうか。
「コンピュータ将棋の進歩」を拝見した限りではその方向での探求は見受けられませんでした。
10年位高速化に頼りつづける。
次の10年で意味の実装が始まる。
有効になるのにさらに10年として、計30年後でいかがでしょう。
コンピュータ囲碁だとおそらく意味の処理が必須で、しかも2次元パターンの意味を扱わないといけない。
逆に必須なので、研究が進んで、コンピュータ囲碁が人間名人に勝つほうが将棋より先になるかも。(2000/12/13)
丸電 永森さん、はじめまして。うわぁっ、コンピュータ囲碁方面からのご意見!ありがとうございます!!とても嬉しいです。ずっとコンピュータ将棋関係者の方々の意見を伺う機会はあっても他の方面の方からのご意見はなかなか聞けませんから。ご意見の内容もすごく新鮮に感じます。しかし、私が注目したいのは永森さんがコンピュータ囲碁が先に人間名人をやぶるかもしれないと指摘された点です。これが本当だったら、世の中には「将棋の人間名人強し」の声もあがるかもしれませんが、おそらくは「将棋プログラマ、ふがいなし」の声もありそう(^_^;)。。。コンピュータ将棋界のみなさま、頑張りましょうね。
私は囲碁は生きているうちにはむりかなと考えておりましたので、永森さんはコンピュータからみて悲観派のようで実は楽観派かなと考えたりもしました(^。^)。うーん。ここらで一発、「人間には絶対勝てない」のご意見もあると嬉しいのですが。。。どなたかお願いします(^_^)。
山下 宏 さん (YSS(商品名「AI将棋」)開発者)
私はずばり2010年です。
2006年ぐらいにはプロ棋士に初めて勝つプログラムが出現して2010年に名人を7番勝負で破る、という感じですね。
もう少し先の話になるかもしれませんが、あまり遅いと生きてこの目で確認できませんから希望+努力目標、という意味も入っていますが。(2000/12/12)
丸電 山下さんは比較的楽観派とは思っていましたが。。。。な、なんと6年後にはプロ棋士をやぶる??ええっ?10年後には7番勝負で名人を!!??す、、すごいです。山下さんの場合、発言に無責任でいられるはずがなく、この勝負には当然、みずからが深く関わっていかれるわけですから、その意気込みたるやすごいものを感じます。おおむね将棋プログラム開発者は棚瀬さんの指摘された数字に納得がいくかたが多いと思いますが、さらに10年短縮を宣言(?)された山下さんに拍手です。ぱちぱち。
棚瀬 寧 さん (IS将棋(商品名「東大将棋」)開発者)
一応前提としては名人に勝つというのは、本当の人間の名人戦のような条件で勝つということだと理解させてもらいます。
昔は悲観的だったんですけど、今は2020年くらいまでにはって思ってます。
序盤をある程度の差で乗り切れるかどうかがかなり重要だと思いますが、それなりに出来るようになるでしょう。
今までは、僕のプログラムも他のプログラムも序盤にそれほど知恵が絞られてないと思います。
みんなが真剣に取り組むようになれば、色々とコンピュータ将棋の序盤技術の進歩が出てくると思います。
中盤は基本深さ15くらいで重要な変化は30から50手くらい読むくらいの速度が実現できれば(今のパソコンの百万倍くらいでしょうか)、名人の仕掛けをくらってもそう簡単にはつぶされないでしょうし、逆に相手が小さいすきを見せればつけこんでいくことがそれなりに出来ると思います。
そのくらいの段階になっていれば終盤は手をつけられないくらい強いでしょう。
そんな感じで2020年には、2年で2倍の法則からいくと1000倍のコンピュータがあるわけで、それの超並列で上記速度も実現可能だと思います。
(2000/12/11)丸電 棚瀬さんには「IS将棋」が初優勝した年にもご意見を伺ったことがあります。たしかその時にはもう少し悲観的なご意見だったのを記憶していたので、今回のご意見にはすこし驚きました。やはり棚瀬さんもかなり早い時機に「その日」はくると予想されているのですね。。。細かい数字を挙げられての、具体的な指摘はこのページをご覧になっている方にもかなり説得力のあるものになっているのではないでしょうか。
かんちょ さん (将棋初心者)
まず、永遠に人間に勝てないというのはないと思います。
将棋のことはまったくの素人ですが、ある局面において最善の一手を考えるという一種のデータベース的機能が重要である以上、人間が敗れる日が来るでしょう。
わたしは、2011〜2015年に投票しました。
2010年までにAI関連で画期的な進化があると思うんですよね。
それに余裕を加えて2015年まで。(2000/12/10)
丸電 「AI関連で画期的な進化」がコンピュータ将棋のもとで実現されなければコンピュータ将棋はコンピュータチェスの亜流といわれ続けててもしかたありませんよね。いまのところ世界のチェスプログラマのほとんどは囲碁プログラムに転じようとしているようですし、わたしたち将棋プログラマの頑張りどころですね。
丸電ユキオ (将棋プログラム開発者、当WEB管理者)
まずハードの進歩(演算処理速度向上、並列処理)だけで、2045年くらいにコンピュータ将棋が勝ちそうな気がします。プラスソフトウエアの進歩で2025年くらい。あと何らかの技術的なブレイクスルーで2015年前後まで期間短縮が出来るかと思います。もちろん個人的希望としてはもっと長い期間、人間名人には最強の棋士の座を守ってほしいと願っています。現在のトップ棋士がコンピュータ将棋に頭を下げるなど、想像もしたくないというのが本音です。
(2000/12/8)
ホームページへ戻る