- 01: 名前:みや投稿日:2002/11/01(金) 16:48
- 始めまして。最近、将棋研究室のページを発見しました。よろしくお願いします。
私は、10数年前からの将棋ソフトファンです。将棋は弱く、プログラムもできませんが、 将棋ソフトに対する興味は並々ではありません。 この素晴らしいホームページに書かせていただいて、とても光栄です。
コンピュータ将棋議論のページに書かれている定跡についての内容は特に有益でした。 私は定跡ファイルを作成していて、時々自分のやっている作業が意味があるのか わからなくなるときがあったのですが、可能な限り多くの定跡を入力することも、 無意味だとは限らないと言うことがわかりました。 多くの定跡を入力するとき、その定跡がコンピュータの思考と相性が悪い場合、かえって 入れないほうがいいという問題を緩和するために、私の考えたアイディアがあります。 以前に山下宏氏の運営する掲示板に書いたときは、将棋プログラマの方から、簡潔にですが、 「いいアイディアですね」という意見をいただけました。 その方法とは、まず、コンピュータ将棋にとって得意な局面だけを集めた、数千から数万手 くらいの定跡を作ります。これを定跡Aとします。次に、可能な限り多くの定跡を入力した 100万手以上の定跡を作ります。これを定跡Bとします。現在の局面のデータがAにあるときは Aのみから指し、AにはなくBにはデータがあるときはBから指すというものです。 この方法で、少なくとも、定跡B1つを使用したときよりは、確実に強くなると、私は考えています。 しかし、2つの定跡ファイルを同時に持てる将棋ソフトはありませんし、将棋が弱い私は定跡Aを作る ことができません。私のアイディアは、どの程度将棋ソフトの棋力を上げることができるかについて、 ぜひ皆さんのご意見をお聞かせください。 現在市販されている将棋ソフトの100万手以上級の定跡は、プロが指した手をとにかく多く入力して いるらしいのですが、この方法では200万手くらいが限度でしょう。それ以上に多くの、例えば 500万手といった定跡を作るには、コンピュータに定跡ファイルを生成させるしかないと思いますが、 そのときは、上記のアイディアを応用し、500万手かそれ以上の定跡Cを作り、AにあるときはAから、 AになくBにあるときはBから、AにもBにもなくCにあるときはCから指し手を選ぶというのは どうでしょうか。
話は変わりますが、ホームページ中のFAQ13の答えの中で、「コンピュータ将棋は頭打ちの状態 でもある」という意見には反論させていただきます。 『コンピュータ将棋の進歩』という本の146ページに、ソフトの進化を考えず、ハードの進化のみ を考えた場合、「計算速度が10倍速くなるとレーティングが200上がる」と書かれています。 これを言いかえると「計算速度が3.162・・・倍速くなるとレーティングが100上がる」 ということになります。 2年前と今では、将棋ソフトのレーティングは100は確実に上がっています。CPUの計算速度は、 ここ2年では2倍程度にしかなっていません。 この計算から、私は将棋ソフトは現在も進化していると思っています。ご意見お聞かせください。
- 07: 名前:うさぴょんの育ての親投稿日:2002/11/02(土) 11:47
- うさぴょんの定跡の差し替えは実際には、結構複雑なことをやっていて、例えば大会では優先順位順に、
77桂→32金戦法(力戦中飛車)→ひねり飛車+立石流→20万手定跡
なんて感じでやってました。角道を空けてくれないときは、力戦中飛車を試みて、それもうまく誘導できないようなら、77桂に失敗した中途半端な局面からひねり飛車や立石流の定跡の類似局面を真似してみて、それもうまく行かないなら、でかい定跡をみる、ということになってたんですね。
でも、相手が二手目に42銀とか24歩とかやってくると、もう定跡としてはある意味無意味です(--;
それから、20万手定跡も、かなり適当に作ったものなので、今はもう「先手必勝」「後手必勝」とかいうように結論の出ているものが入ってるんですよねー。定跡の整備は、私みたいな実際の将棋のレベルの低いプログラマには頭痛いです。
うさぴょんに自動学習して欲しい(^^;
- 08: 名前:うさぴょんの育ての親投稿日:2002/11/02(土) 12:13
- 最初の投稿では、ちょっと過激に煽ってみたのですが、今度はもうちょっと本音ベースで書きます(^^;
「でっかいアイディア」とか「ブレークスルー」っていったい何?というのが気になります。
αβが変わってないとか言われると、チェスも含めて40年以上前から何にもブレークスルーがないことになっちゃうし(笑)
例えば、DeepBlueは一般に思われているよう(に私には思える…)な全幅探索を化け物のような高速ハードで行っただけのものではなく、選択的に読みを深くして間違いを犯しにくくするSingularExtensionというアイディアを使っていました。 「ブレークスルー」と呼ぶには小さいアイディアだったかも知れませんが、その効果はあって、カスパロフの勝負手を見抜いて正しいプレイをした(と言われている)わけですし。
YSSの手生成の手法のアイディアとか守備的な手を指すために一手パスして相手の最善手順と応手を考えてみるというアイディアだって、「ブレークスルー」と呼ぶには小さいアイディアだったかも知れませんが、YSSの初優勝(しかも全勝で)に結び付いたわけです。 #もっとも、あれも全勝の一因にはハードウェアの威力もあったと思いますが(^^;
「ブレークスルー」がないとかそんなに悲観的に見ないでも、今も地道に強くなってるんだなーと私は思ってます。 小さな小さなアイディアの積み重ねに見えるかも知れませんけど。
ほんとは、私みたいな時間のあまり使えない将棋プログラマは、自分でブレークスルーを起こすことを夢見ないと優勝なんか出来ないんですけどね(^^;;;;;;
- 09: 名前:白砂 青松投稿日:2002/11/02(土) 14:33
- うーん、なんだろ(<をい)。
白砂も本音ベースで言っちゃうと(笑)、
>αβが変わってないとか言われると、チェスも含めて40年以上前から何にもブレークスルーがないことになっちゃうし(笑) >YSSの手生成の手法のアイディアとか守備的な手を指すために一手パスして相手の最善手順と応手を考えてみるというアイディアだって
という2つのアイディアを比べると、実は後者の方が凄いかなぁ……なんて思うんですよ。いや、「凄い」ってのとは違うか。なんて言えばいいのかなぁ。 今まではある程度でたらめ読みだったわけじゃないですか。それを前向き枝刈りして、αβ法でもってもっと時間を省略して……みたいな。 その中で、単純に静的関数の大小だけで刈るんじゃなくて、そもそもコンピュータに判りそうもない手は読むのやめようぜとか、将棋のゲームシステムを考えればパスを読む手は有効だとか、そういうアイディアって凄いと思うんですよ。 森田将棋が強かったのって、多分「厚み」の概念を持ち込んだからじゃないかと白砂は思ってます。というか、それ以外ってそんなに変わんないんじゃないかなと(当人が聞いたら怒るだろーなぁ)。柿木みたいに知識ベースで勝負しようとか、そういうアイディアって、ちっちゃいんですけど「でっかい」と思うんですよ。
なんか変だな。よく判んなくなってきちゃった。
>「ブレークスルー」がないとかそんなに悲観的に見ないでも、今も地道に強くなってるんだなーと私は思ってます。 >小さな小さなアイディアの積み重ねに見えるかも知れませんけど。
というのには同感です。 ただ、「観客」の側としては、やっぱ派手なこと言って欲しいんですよねー。 ディープブルーだって、いろいろ細っかいことしてると思いますよ。でも、やっぱインパクトがあるのは「ばけもんコンピュータ」ですから(笑)。『背尾詰』にしても、かなりいろいろ工夫をしている、みたいなことは書かれていましたけど、みんな言うのは「共謀数」ですし(爆)。 やっぱかなり無責任な発想ですけどね(笑)。
p.s. とりあえず『激指2』、予約してしまいました(爆)。いいんか自分。
- 10: 名前:みや投稿日:2002/11/02(土) 15:50
- 白砂さん、丸電ユキオさん、うさぴょんの育ての親さん、お答えありがとうございました。
私の考えたアイディアは、もう実行した人がおられたんですね。考えついたときは 「ひょっとしたら画期的なアイディアなのでは?」と思い、山下氏の掲示板に書き込んだことが、 今はお恥ずかしいです。(笑) 定跡Aにコンピュータが得意な手を、定跡Bにプロ棋士が指した手を入れて、Aを優先的に指す という方法は、対コンピュータではほとんど効果がなかったとしても、人間のアマチュア5段以上 と対戦するようなときには、効果が大きいと思うのですがどうでしょうか。このことについては、 特にうさぴょんの育ての親さんに答えていただけたらうれしいです。
「ブレークスルー」があるのかないのかが議論になっていますが、私はあれだけ多くのプログラムが 参加している選手権で「激指」が数年で優勝を達成したのには、それなりに新しい技術があったので はないかと考えています。
- 11: 名前:うさぴょんの育ての親投稿日:2002/11/02(土) 21:34
- 好き放題書きます(…後で関係諸氏に頭を下げて回らないといけないかも知れませんが…)
森田将棋が強かったのって、評価関数に厚みの概念を持ち込んだことと、それによって速度を犠牲にしなかったこと、かなと思います。手の生成や局面の評価は、執念のアセンブラコードの塊と聞いた記憶があります。
YSSで行われているような前向き枝刈は、ハードウェアが貧弱だったころにはほとんど全てのチェスプログラムで行われていた方法だと思います。 ただ、YSSの「パスに対する応手」は新しいんじゃないかと思います。それから、YSSの0.5手延長は、アイディア自体は山下さんが独自に思いついたものだと思いますが、チェスの方面ではYSS以前に類似のものがあったような気がします…。でも、実は本当に山下さんがすごいのは、「0.5手延長を使い物になるようにしたこと」のような気がします。 ちなみに、今のチェスプログラムは、(基本的には全部の手を生成・評価するんですけど)選択的に浅い読みで打ち切りを行ったり、選択的に深い読みを行ったりするので、これも厳密には前向き枝刈と言えますね。
激指に関しては、激指のホームページに書いてある通り、局面の実現確率に応じた枝刈、というのが新しいアイディアですね。でも、そのアドバンテージって絶対的なものではない、というのはこの前のコンピュータ将棋王者決定戦の結果通り、かな。
細かい技術まで含めれば、上位のプログラムって、なんらかの新しい技術を大会ごとに持ち込んでると思いますよ。 その技術自体は、うまく行ったり行かなかったり、効果がとってもあったりあんまりうまく行かなかったり、いろいろだと思いますけど。 もしかして、実は、その年に一番うまくいくアイディアを思いついた人が優勝する?(笑)
p.s. 今、ふと思ったんですけど、チェスでブレークスルーを起こしたすごいアイディアって、実は終盤データベースなんじゃないかなぁ…。
- 12: 名前:うさぴょんの育ての親投稿日:2002/11/02(土) 21:40
- さて、定跡の話ですが、正直に言って、効果のほどは分かりません(^^;ごめんなさい。
ただ、実戦金沢将棋が筋違い角で乱戦模様にするのって、やっぱり人間の上級者相手に一発入れやすいからなんでしょうね。 もちろん、それだけで勝てるってもんではないですけど。
- 13: 名前:丸電ユキオ投稿日:2002/11/03(日) 09:52
- > とりあえず、自分に対する罰として、『東大将棋5』と『AI2003』と『激指2』と『銀
> 星将棋3』を買うつもりなんで許して下さい。
ぜひ対戦レビュー、お願いします。
> チェスでブレークスルーを起こしたすごいアイディアって、実は > 終盤データベースなんじゃないかなぁ…。
私は「反復進化」ってすごいなぁ、と思いました。人間棋士は絶対にあんな思考は しないし、ちょっと考えても「ええっ、そんな無駄なことすんの」と思うのに結果は単 純なαβより早いなんて。そしてどんなに強い人間棋士でも真似できない思考で すよね。他の技法については人間棋士の思考の模倣の域を出ていないという 印象です。終盤データベースは程度の差こそあれ人間のチェスプレイヤーなら誰で も持っているし。どれだけ棋力向上に貢献したかっていうことになると別だとは思い ます。確かに終盤データベースの威力は圧倒的。
> みやさんへ 定跡データベースについて。 現状の定跡データベースって膨大な「データベース」から現在局面を「キーワード」に して検索しヒットしたものを何らかの意味づけで評価し、最善手を決定するっていうこ とですよね。実は身近なところでは大手検索サイトでのキーワード検索なんかが似 たようなシステムだと思うのです。
たとえばGoogleで「コンピュータ将棋」をキーワードに検索すると 2,469,940,685ウェブページから検索して2,280ページにヒットして、「コンピュータ将 棋協会」のページを最有力関連ページとして提示してきます。この間0.2秒余り。 データベースの分割が検索サイトでされているかどうかわかりませんが、仮にあった としても最有力ページの決定には貢献していないように思います。
> 定跡Aにコンピュータが得意な手を、定跡Bにプロ棋士が指した手を入れて、Aを > 優先的に指すという方法は
先の定跡Aのデータすべての評価値を+100点、Bのデータすべての評価値を+50点 とかあらかじめつけてAとBを組み合わせたデータベースでも(サイズが大きくなりま すが)同じ結果を得ることができます。 これは先の白砂さんの書き込みと同じことを言っています。
これならば多くの将棋プログラムは採用していると思います。つまりある局面で 定跡にそった複数の有力手が存在する場合どちらを選択するかをあらかじめ評価 点をつけることによって決定する、ということです。
たとえば初手。 [データベースA] ▲7六歩 [データベースB] ▲2六歩
というのは [統一データベース] ▲7六歩 130点 ▲2六歩 120点
と同じことですよね。まあ、この場合初手7六歩ばかりをさすので実際は乱数をつか って或程度バラけるようにしないと「このソフトは毎回同じ手ばかりを指しやがる」とい われてしまいますが。
それにしても将棋の定跡のほうは総数せいぜい数百万、最終的に提示する 最善手はたかが数百手の中の一手。先の検索サイトの例をみる限り仮に定跡デ ータベースが数億以上になったとしても現在のマシン性能で十分短時間に解答は 出せるような気がします。 じゃ何でだれもそれをやらないんだっていうとそれだけのデータベースを作るために かかった時間と労力にみあった棋力向上が得られないと考えているからだと思いま す(やろうとしている人はいるようですが、それだけではだめですし)。
定跡データベースを分割しているプログラムは「うさぴょん」以外にもいくつかあるかと 思いますが、いまのところそのほうが「機械にとって」ではなく「人間にとって」管理 しやすいからだと思います。あるいはメモリの効率的運用のためとか。ちなみにわた しは登録しているデータベースが小さいので一つで済ましています。
将来的には将棋プログラムの思考において重要さがもっと序盤のほうにスライドして いって定跡データベースの研究が進むと思います。いまから優秀な定跡データベー スについて考えをめぐらせることは必要なことだとは思います。
うさぴょんの育ての親さん(このHN、長い^_^;)に、ということでしたが、ちょっと横槍入 れさせてもらいました。
- 14: 名前:白砂 青松投稿日:2002/11/05(火) 10:03
- 少しでっかい話になっちゃうんですけど、
「なんでコンピュータ将棋界全体でなんかしないのかなぁ」
というのは、よく考えるんです。 例えば棋譜形式1つ取ってみても、共通なのはcsa形式くらいで、事実上の標準であるkif形式に未対応のソフトもかなりあります。定跡データベースに至ってはほとんど全てのソフトでバラバラですよね。なんでこう、「全体で1つのものを作る」というプロジェクトが発動しないのかなぁ……と思っちゃうんです。 有効性はさておき、みやさんの提示している分割データベース方式については、将棋連盟と組めれば(れば、ですけど(笑))将棋が指された次の日には登録可能ですよね。提供とのからみがあるのであれば多少伸ばしてもいいですけど、そのへんは「自動化」が可能なはずです。市販のソフトでかしましい「定跡○万手」ってのも、データベース形式が統一されていれば意味のないことですよね。
現在のコンピュータ将棋界ってのは一枚岩というよりは同好会みたいな感じで、将棋界うんぬんというよりは個人の好きなことを特化させたい、という方向なんだと思います。それはそれでいいんですけど(そういうところからアイディアが生まれたりするわけですし)、もう少し、舵取りをしてくれてもいいんじゃないかなぁ……とは思います。 例えば、定跡データベースはもう柿木形式に統一! とかしちゃえば、インターネット上にそこそこいる「シコシコ手を登録している人」の苦労が報われる可能性は今より格段に上がりますよね。統一、でなくてもコンバーターでもいいです。とにかく、1つの○○に入れることにより、全てのソフトでその恩恵が受けられる、という形にして欲しいと思います。
まぁ、ユーザーの勝手な意見なんですけど。 開発者の方、もし見てたとしても、聞き流して下さって結構です。ホントに。すいませんマジで(←低姿勢(笑))。
- 15: 名前:あぼーん投稿日:2011/10/23(日) 17:46
- あぼーん
-
-
■トップに戻る リロード 全レスを表示
|