• ベストアンサー

将棋ソフトの進歩

カテゴリー的には、「コンピュータ[技術者向け]」のほうに、質問するべきことかもしれないのですが、まずはこちらのカテゴリーに質問掲載させて頂きます。近年の将棋のソフトの進歩はまだプロには及ばないものの一昔前に比べたら、目を見張るものがあり、格段に強くなったと思います。お聞きしたいのは素朴な疑問があるのですが、かなり初期段階の将棋ソフトではいくらコンピュータ側が定石を豊富に持っていたとしても、例えば人間側が、わざと妙なタイミングで端歩をつくなどして、対応したらたちまちコンピュータは定跡どおりにはさせなくなって、定跡から外れたおかしな駒組みを連発していました。しかし、ある時期からの将棋プログラムでは、このようなことはなくなり、人間がどこかで定跡からわざと外したような手をさしても、きちんと大枠の流れの定跡に沿って駒組みをしてたり、戦い方をしてきます。これが非常に不思議なのです。いったいどういうプログラミングの仕方をすれば、こうした柔軟なさし方をコンピュータ側にさせることができるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • moritan2
  • ベストアンサー率25% (168/670)
回答No.3

> moritan2さんは専門家の方ということですが、技術者の仕事をされているのですか。 > こうした将棋ソフト関連にもお詳しいのでしょうか。 私は本格的な将棋のソフト開発をいまから20年ほど前に最初に作った人間です。 最近は新しい思考を作っていないので、正確には「元専門家」です。 ご質問の > かなり初期段階の将棋ソフトではいくらコンピュータ側が定石を豊富に持っていたとしても、 > 例えば人間側が、わざと妙なタイミングで端歩をつくなどして、対応したらたちまち > コンピュータは定跡どおりにはさせなくなって、定跡から外れたおかしな駒組みを連発していました。 これがまさに私の昔のソフトのことか? という気がして耳がいたいです。 > 序盤用の思考ルーチンから、中盤用に切り替えるためにはうまいタイミングで > やらないとだめだと思いますが、こうした判断はどのようになされるのでしょうか。 これは、特にうまいタイミングということではなく、もっと単純なことです。将棋のソフトの思考は最初は定跡の完全一致を調べます。マッチしない時に駒組みデータベースを使った序盤の思考をおこない、これでもマッチする駒組みが見つからない時に次に進みます。意外かもしれませんが、次に動くのは中盤の思考ルーチンではなく、終盤の詰みの探索です。詰みがみつからなければ、それ以外の終盤の処理(相手の玉、自分の玉に寄せがあるか)を考え、そのどれでも手が決まらなかった時にはじめて中盤の思考ルーチンが呼び出されます。 > また、さまざまな将棋プログラムが開発されていますが、このプログラムの中身 > というのは、完全に企業秘密のようなもので、誰かが、自分も将棋ソフトを開発 > したいと思っても、一から自分で組み上げていかなくてはならないのでしょうか。 松原さんらが書いている「コンピュータ将棋の進歩1,2,3,4」を読まれたらどうでしょうか? 私などよりもっと最新の将棋の思考の作者がノウハウを公開しています。

nobulin
質問者

お礼

たびたびの回答ありがとうございました。回答者様のネームを見て、今、気がついたのですが、実名を掲げるのは控えさせて頂きますが、あの1980年代に最初の将棋ソフト「○○○○の将棋」作ったあの方でしょうか。現在の将棋ソフトまでに至る源流を形作ったのはすばらしいですね。前例がない分、手探りで最初に開拓していくのはたいへんなことであると思います。昨年、「ボナンザ」というソフトがコンピュータ将棋が注目されましたが、これも、独特の手法を取り入れているようですね。ご推薦の松原さん著「コンピュータ将棋の進歩3」は以前読んだことがあります。「1,2,4」も探して読んでみようかと思います。

その他の回答 (4)

  • toyomimi
  • ベストアンサー率32% (9/28)
回答No.5

再度の質問にお答えします。 基本的にはCで十分です。特定のOSに依存しないほうが良いですね。 ユーザインターフェースの部分はC++またはJAVAが書きやすくて宜しいかと思います。 クリティカルな部分はアセンブラで1nsでも速くと、カリカリにチューンアップすることはあり得ますね。(笑) この場合もCで書いておいて、それをコメントとして保存しておいたほうが良いでしょう。 データベースの設計はC++や特定のデータベースに依存しないで、Cで書いた方が柔軟ですが、まともなものを作ろうとすると数人年のプロジェクトになってしまうので、最初は余所から出している程度の簡便なサブセットを作られるほうが良いでしょう。 後発が追いつけるのは、先発のほとんどがほぼ同じ程度のデータベースを作っているので、その程度のものの設計だけなら1ヶ月もかからないことと、詰アルゴリズムは論文になっていることと、中盤はまだまだ弱いと言うことからですね。

nobulin
質問者

お礼

たびたびの回答ありがとうございました。非常に勉強になりました。後発の開発者が先発のソフトになぜ追いつけるのかという理由について頂いた回答が特に感銘を受けました。まだまだ中盤は技術深化の可能性が大いにあるようですね。競争してよいソフトが作られるといいです。再度の回答感謝致します。

  • toyomimi
  • ベストアンサー率32% (9/28)
回答No.4

序盤に関して言えば、定跡データベースと、そのエンジンをどのように設計するかによって強さが大きく変わります。 ちなみに、私どもでは平手の場合は5種類のデータベースを用意していますが、それらの組み合わせによって、初段クラスから五段クラスまでの序盤力を発揮できます。 また、エンジンの動作も指定できますので、それで強さを制御しています。 序盤定跡での完全一致から外れた時の対応は各社それぞれですが、序盤データベースが尽きかけているということは分かっていますから、 一致したものに戻るように努力する。 局面が収まるように努力する。 類似局面からの手も候補手として抽出できるようにする。 など、いきなり中盤に行かないような工夫もあります。 これらは、デーテベースの拡充により自動的に強くなってくれるのが嬉しいですし、私どもでも1GBもディスク容量が有れば、圧縮しないで楽に持っていることができます。 詰探索も数手の詰みならともかく、数十手の詰みを苦にしないものができていますので、数手でしか実用でなかった昔とは様変わりです。 私どもではミクロコスモス(1525手)がノートで15分程度で解けてしまう詰めエンジンも提供しています。 今は2つ以上のCPUを駆使できる時代ですから、並行に走らせることができるようになり、強力になりました。 中盤も確率統計処理+読みの併用という新しい手法が優勝クラスでは常識になっています。 細かい例外処理を手で書くだけでは、もうついて行けないでしょう。 おもちゃみたいなものなら、コンピュータ将棋協会がライブラリ化をしたいと思っているようですから、動くだけなら動く程度のものなら、そのライブラリを利用すればよいと言うことになるかも知れませんが、強いものを作ろうとした時に役立つかどうかは、まあやってみてください。 指定局面からの指し手という形にすれば、中盤の強いものを作ることは可能だと思います。 さすがに超多忙なmoritan2さんも正月休みのようですね。 お元気そうで何よりです。

nobulin
質問者

補足

御礼が遅くなりすいませんでした。長文で回答たいへんありがとうございます。また、専門家の方からの詳しい回答を頂いて感謝しております。[toyomimi]さんも将棋ソフトの開発にたずさわっているかたのようですね。現在では百万手以上の定跡を搭載したそふともあるようですし、あの「ミクロコスモス」がわずか15分で解けてしまうなど神技的です。最終盤での正確さ速さではプロ棋士以上の能力を具えていますね。コンピュータ将棋選手権では蓄積された技術・知識などのノウハウが重要で、後発者はなかなか勇勝クラスのソフトには追いつけないと思いきや、突然、新種のプログラムが登場し、優勝をさらっていく場合もあるのでおもしろいです。基本的に対局ソフトの開発は「C++」言語で作成するのがふさわしいのでしょうか。お忙しいところ、たびたびお尋ねしてすいませんが、よければよろしくお願い致します。

  • moritan2
  • ベストアンサー率25% (168/670)
回答No.2

まず昔のソフトの定跡の処理は完全一致が基本でした。そのため、端歩を突くタイミングによって定跡と一致しない局面になると定跡は役に立たず、中盤用の思考ルーチンが動いていました。 一方、最近の将棋ソフトはほとんどのもので、完全一致の定跡ももちろん持っていますが、定跡データベースの完全一致が終わった後は、現在の相手の駒組みを認識しそれに対し自分はどのような駒組みを目指せばよいかという序盤の思考ルーチンが動いて手を決めています。序盤用の思考ルーチンは中盤用と違い、探索ではなく知識によって手を決定します。

nobulin
質問者

補足

回答たいへんありがとうございました。まさにわたしが知りたかった内容の回答を頂きました。感謝いたします。長年疑問に思っていましたので、もやもやが解消した気がしました。なるほど、序盤用の思考ルーチンというものがあるのですね。これはまったく想像もしなかった答えです。探索ではなく、知識によって手を決めているというのも納得です。今までずっと、コンピュータ側の序盤の指し方の進歩を見てきて、定跡から外れてもどうしてこんな弾力的な対応ができるのだろうとAIのすごさを感じていましたが、こうした技術を開発した人たちってすごいですね。moritan2さんは専門家の方ということですが、技術者の仕事をされているのですか。こうした将棋ソフト関連にもお詳しいのでしょうか。序盤用の思考ルーチンから、中盤用に切り替えるためにはうまいタイミングでやらないとだめだと思いますが、こうした判断はどのようになされるのでしょうか。また、さまざまな将棋プログラムが開発されていますが、このプログラムの中身というのは、完全に企業秘密のようなもので、誰かが、自分も将棋ソフトを開発したいと思っても、一から自分で組み上げていかなくてはならないのでしょうか。たびたび申し訳ありませんが、見解をお伺いできたらと思いまして、再度、お尋ねさせて頂きました。よろしくお願い致します。

noname#227760
noname#227760
回答No.1

こんばんは。 将棋に限らず、チェスでもいえるのですが、 コンピュータ側は、考えられる手を先読みします。 その場合、プログラムの内容はさておき、 コンピュータのハードウェアの性能がよくないと結果を返すまでに 時間がかかることになるため、人間との対戦を考えると、 ある程度まで先読みをしたら処理を終了させないと、 対戦用には使えなかったわけです。 そのため、変な手を連発したのかもしれません。 しかしながら、近年CPUの演算速度の向上や メモリ容量の増大により、この問題はクリアされているのだと思います。 また、定石のようなものはデータとしてコンピュータ内部に 蓄積をする必要がありますが、これにも膨大な容量を必要とするため、 ハードディスクの容量が大きくないと、あまり多くの定石を 覚えさせることが出来なかったのでしょう。 これもCPUやメモリの発達と同じく、 近年のハードディスクの容量の増大によってクリアされたのだと思います。 また、どのようなプログラムなのかということですが、 基本的には、ある盤面の状態から、ルール上打つことの出来るすべての 手をためし、それらの状態を様々な方法で数値化を行います。 チェスの場合、平均すると1つの局面で打てる手は30程度あるといわれていますので、 2手先を読むためには、30×30=900の局面を評価するということです。 # 将棋とチェスでは手の数え方が違ったはずですが、 # どちらの場合、どのように数えるのか忘れてしまいました。 たとえば、王の守りが手薄ではないかどうかや、 取られてしまう駒がないか、取り合ったときに損をしないか、 チェスの場合ですと、ポーンチェーン # ポーン(将棋でいう歩)のつながりが強く、 # 相手を寄せ付けないかどうか なども評価基準にします。 将棋の場合はわかりませんが、 チェスの場合は(多少間違っているかもしれませんが)、 ポーン(歩):100 ナイト(桂馬):300 ビショップ(角):300 ルーク(香車が立て横一直線に動ける):500 クイーン(縦横斜めに一直線に動ける):900 のように数値化を行い、様々な盤面を評価する場合の基礎データとします。 将棋も同じような値があるはずです。 単純に言えば、それぞれの数値に、 盤上に存在するそれぞれの駒の数を掛け合わせて 自分の駒についてはプラスし、 相手の駒についてはマイナスを行い、 算出された値がマイナスなら自分がフリ、 プラスなら自分が有利であるということです。 これに、先ほど出したような盤の状態によって 数値をプラスマイナスします。 また、この評価方法についても様々な研究が行われているようですので、 今ではより人間の感覚に近い評価ができるのだと思います。 蛇足ではありますが、コンピュータの基礎的な仕組みを考えた一人である アランチューリングという方は、 programming a computer for playing chess # チェスをするコンピュータプログラムについて という論文の中で コンピュータにチェスをさせることがコンピュータそのものの発展につながるといい、 1942年にチェスをさせるための仮想プログラムを作成しています。 このあたりの歴史は意外と古いのですね。

nobulin
質問者

お礼

長文で回答ありがとうございました。ソフト面のみならず、ハード面の進歩があったので、高度なプログラムを実際の対局に、はしらせることも可能になったということがあるのですね。たしかに10数年前にNECがPC98を出していたころと比べたら、コンピュータの性能は比べようもなく見違えています。

関連するQ&A

  • 将棋ソフトの強さについて・・・・・

    同、哲学カテの別スレッドで、次のような主張があった。 「将棋は、駒の動きが決まっており、プログラミングできる。組み合わせも有限なので、コンピューターソフトが、将棋の名人に勝つ。」 しかし、実際の将棋ソフトは、現実の名人に歯が立たない。 この主張と、現実の食い違いの原因は何だろうか?  

  • 初心者でも楽しめるコンピュータ将棋

    最近将棋をはじめました。 まだ初心者なので対人で将棋を打つとボコボコにされるのでコンピュータ将棋のソフトを使ってみようと思ったのですが、上級者向けのものばかりでコンピュータにもボコボコにされてしまいます。 そこでなるべく定跡?通りに動いてくれて初心者でも楽しめる(Lvが低い)将棋ソフトが落とせるサイトを紹介していただけると嬉しいです。

  • 将棋ソフト、CPUが1つならどれぐらい強い?

     先日の電王戦でプロに勝ち越したGPS将棋が、将棋ソフト(将棋コンピュータの概念も含む)どうしの競技会で約800台のマシンをつないで臨んだという話をききました。(電王戦では約680台)  ということはCPU800個で闘ったということですよね。ちがうのかな?  電王戦については、「そもそもこのルールは不公平(人間に不利)ではないか」という指摘があり、そういう質問もこのカテにありました。「じゃ、どうすれば公平か」については (1) マシンの体積を人体なみに制限する (2) マシンの消費エネルギーを人体なみに制限する (3) マシンが駒の操作も行う などの意見がありました。  それら意見も興味深いですが、「マシンのCPUを1つにする」が、将棋のしろうとにもコンピュータのしろうとにもシンプルで分かりやすい“公平条件”だと私は思います。人間の頭脳(CPU)は1つなので、マシンも同じ条件ということです。  そこで質問ですが、現在の将棋ソフト/将棋コンピュータは、CPUが1つならどれぐらい強いのでしょうか。パソコン(CPUが1つ)用将棋ソフトよりかなり強いのでしょうか。たとえば、奨励会有段レベルとか?

  • 将棋ソフトの定跡の数*疑問

    最近の将棋ソフトをこの前ビッグカメラでみました。 するとパッケージに定跡120万手と書いてあるではありませんか。 本当にそんなに入っているのでしょうか。 それって本当でしたらどうやって検証できますか。 聞くところによると過去のプロの対局の手はほとんど が定跡として入っているとか。 またそれって動いているときに局面のパターンとして 常に検索しているのでしょうか、81のマスに40程度の駒のオリナスパターンてすごいカズだなと思うけど どのようにデータベース弾くのか仕組みのヒントだけでも教えていただければと思いますが、 これはソフトの製作者でないと答えられないのでしょうか。 よろしくお願いいたします。

  • 囲碁将棋の楽しみ

    こんにちは。囲碁・将棋の愛好者は大変多ございますね。夢中になっている方々を拝見すると羨ましく思います。少々、恥ずかしい質問ですが、50代も半ばを過ぎた人間が、今から駒の動かし方を学んで、本などを読んでも、まったく楽しめないでしょうね。それなりに楽しめるものでしょうか? 「定石」、「戦略」などの蓄積が大切でしょうから、そういう勉強をかなりしないと楽しめないでしょうね。 やるとなると、環境的に、PCゲームソフトでやることになります。 「そんなこと自分で考えろ」という御回答は勘弁して下さい。「他に楽しいことがあるよ」というご意見には耳を傾けたいのですが。 詰め将棋などは、やはり、今からでは楽しめないでしょうかね。 お考えお聞かせください。

  • ボナンザ(将棋 フリーソフト)のついて

    ボナンザと言う将棋のフリーソフトをダウンロードしたのですが、対局は出来るのですが更にバージョンアップさせたいのですが出来ません。此処のホームページに「他のフリーソフトと併せてお使い頂くと Bonanza の使い勝手が格段に良くなります. RaumNaum の部屋 CSA 将棋改良版の CSA Shogi XT がダウンロード可能 CSA / Bona Unofficial File Uploader CSA 改,定跡エディタ,駒音,駒画像等がダウンロード可能 」となっているのですがどうしても駄目です。盤の反転や駒の書体など色々と試したいです。分かる方初歩から教えて下さい。宜しく御願い致します。

  • 将棋の上達法

    子供のころに親から将棋を教えてもらい、時々指していました。子供レベルではそこそこ強かったと思いますが、指さなくなって20年ほどの年月が過ぎました。 最近時々指す機会がありますが、駒組みの手順や定跡などすっかり忘れてしまいました。強くなるにはこれらが必須かと思うのですが、みなさんどのように力をつけておられるのでしょうか?お勧めの本などありましたら教えて下さい。 そこそこ指せるレベルになれば楽しく指せると思うので、チャレンジしたいのですが・・・よろしくお願い致します。

  • 定跡ソフト、「激指定跡道場」と「東大将棋 定跡道場 完結編」

    定跡を覚えるために、ソフトを購入しようと思ってます。 候補はあるのですが、3つ程疑問があり、購入を迷ってます。 プレステ2の「MYCOM BEST 東大将棋 定跡道場 完結編」 2005年12月8日と、 PCソフトの「東大将棋 定跡道場 完結編」2004年3月25日は、 全く同じ内容ですか?  定跡の収録数や機能のことです。 値段の開きがかなりあるのは何故でしょうか? 違いがあるのでしたら、プレステ2のほうの短所などを教えてください。 もう一つの質問は、 同じく最近発売された、「激指 定跡道場 」2007/4/20というPCソフトのことです。 これと、「東大将棋 定跡道場 完結編」2004年3月25日は、どっちがお勧めでしょうか? 長所・短所など教えていただけませんか? 目的は、勿論、定跡を覚えることと、自分の指した手がどう悪かったか、最善手などを教えてもらえるかどうか・・です。 この3つの定跡ソフト、どれが一番お勧めでしょうか?  今は、一番新しい、「激指 定跡道場」が良さそうな気もしてますが、激指スペシャルを購入した人のレビューに、「まさか、コンピュータが打ち歩詰めをしてくるなんて・・・」というのがあったので、、「激指定跡道場、大丈夫かな(・_・;)?」と思ってしまいます。 また、書籍で、東大将棋ブックス(所司和晴 著)を数冊(これから、少しづつ全部買う予定)と、仕掛け大全(所司和晴 著)全3巻を所持してるのですが、仕掛け大全の著者のお勧めでは、『「激指 定跡道場」が、この本のとおりに指してくれる』とあったので、「やっぱり激指定跡道場かな?」と思ったりもしましたが、これは裏を返せば、『「東大将棋 定跡道場 完結編」や「MYCOM BEST 東大将棋 定跡道場 完結編」は、本の通りに指してくれない』ということですか? 本もソフトも、皆同じMYCOMさんから出てるのに・・ というか、激指シリーズと東大将棋シリーズは、同じMYCOMさんから出てるものですよね? どう違うんですか?これが一番、不思議な疑問です。 過去の質問を検索してたら、定跡ものではありませんが、スペシャル系のソフトで対戦させたら、東大将棋のほうが強かったという回答も見かけました。(それなら、やっぱり「東大将棋 定跡道場 完結編」がいいかも?) ややこしくてすみませんが、本気で強くなりたいので、将棋のPCソフトやプレステ2の将棋ソフトに詳しい方、回答宜しくお願いいたします。

  • 将棋に勝てません

    父親が将棋好きで相手をしたいのですが、私は将棋などやったことがなく、勉強がてら1ヶ月ほどコンピュータ同士の棋譜を参考に300戦くらい鑑賞しました。 しかし、実際にやってみると6枚落ち相手のコンピュータ、しかも一番弱い設定相手に負ける始末です。 駒の動かし方は分かるのですが、どうしても勝てません。 図書館とかで将棋の入門書を読んでなんとなく、理解はしているのですが、余りの体たらくさにうんざりしています。 使用したのはk-shogiというフリーソフトです。 抽象的な質問で申し訳ありませんが、コンピュータの一番弱い設定の手落ちなし相手に勝てるくらいにならないと、とても父親の相手なんかできないので、どうにか上達するアドバイスください。 お願いします。

  • 頭のトレーニングとしての将棋・激指

    集中力養成にいいからといって将棋ソフト(激指)を女友達の兄さんにすすめられました。駒の動かし方やルールはだいたい知っているのですが、十手くらいで劣勢になってしまいます。有名なソフトらしいですが、コンピュータ側の実力は調整できないのですか。 あと、決まった戦法は覚える必要があるのですよね。 将棋に詳しい方、初心者のステップアップの方法を教えて下さい。お願いします。