5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

おまいら最強の将棋プログラムしてみろよ part7

1 : ◆pOLJNwccDs :2008/08/21(木) 14:38:37
できたらよろこんでやる。
前スレ
おまいら最強の将棋プログラムしてみろよ part6
http://pc11.2ch.net/test/read.cgi/tech/1175841191/

2 : ◆pOLJNwccDs :2008/08/21(木) 14:40:52
過去スレ
おまいら最強の将棋プログラムしてみろよ part5
http://pc11.2ch.net/test/read.cgi/tech/1109307327/
おまいら最強の将棋プログラムしてみろよ part4
http://pc5.2ch.net/test/read.cgi/tech/1086678961/
おまいら最強の将棋プログラムしてみろよ part3
http://pc5.2ch.net/test/read.cgi/tech/1064984089/l50
おまいら最強の将棋プログラムしてみろよ part2
http://pc2.2ch.net/test/read.cgi/tech/1043246252/
おまえら最強の将棋プログラムしてみろよ!!
http://pc2.2ch.net/tech/kako/1004/10043/1004395614.html

関連スレ
▲コンピュータ将棋スレッド35▽
コンピューター将棋番外編5・オルターナティブ
http://game14.2ch.net/test/read.cgi/bgame/1200409739/
▲コンピュータ将棋スレッド46▽
http://game14.2ch.net/test/read.cgi/bgame/1215223761/

3 :デフォルトの名無しさん:2008/08/21(木) 14:40:58
     *      *
  *  無理です   +  
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *


4 : ◆pOLJNwccDs :2008/08/21(木) 14:45:46
TCP/IP通信プロトコル(コンピュータ将棋協会)
http://www.computer-shogi.org/protocol/
アップローダ (Part3 929氏提供)
http://gm.a-ark.net/~shogi/clip/clip.cgi
CSAサーバ (Part3 773氏作、Part3 783氏提供)
アドレス wdoor.c.u-tokyo.ac.jp 4081
棋譜など http://wdoor.c.u-tokyo.ac.jp/shogi/LATEST/

MTD(F)
http://www.cs.vu.nl/~aske/mtdf.html
ゲーム木の探索問題
http://ray.sakura.ne.jp/search_problem/index.html
反復深化
http://ray.sakura.ne.jp/search_problem/i_deepening.html
最良優先探索
http://scl.m-kb.net/ai-3.shtml

遷移確率、激指
http://www.logos.t.u-tokyo.ac.jp/~gekisashi/algorithm/abstract.html
GNU shogi
http://www.cs.caltech.edu/~mvanier/hacking/gnushogi/gnushogi.html
福将棋
http://touch-mi.hp.infoseek.co.jp/csa2001/prog.htm

5 :デフォルトの名無しさん:2008/08/21(木) 14:59:26

前スレ終盤の話題の要約:

少量のめちゃくちゃ強い棋譜に大量のそこそこ強い棋譜を加えて学習しても効果は無いのではないか?
むしろ弱くなるのではないか?


6 :デフォルトの名無しさん:2008/08/22(金) 18:23:21
floodgateに5五将棋を実装してくれないかな…
参加する人少ないか…

7 :デフォルトの名無しさん:2008/08/24(日) 04:33:20
55将棋ってやったことないけどつまんなそう、
いかにも先に仕掛けたほうが負けそうで、じっと相手の攻めを待ちつづけるしかできなさそう

8 :デフォルトの名無しさん:2008/08/24(日) 15:24:11
新スレ乙

9 :デフォルトの名無しさん:2008/08/25(月) 14:06:26
>5
8月の学会誌の棚瀬の記事では、
「エキスパートの深い読みの入った手は学習に適さない」みたいなこと書いてあるな。

あとBonanzaの使った6万局にしても、半分はアマチュアの入玉の棋譜。
書いてないけど、レーティングとかは無視しないと3万局も無いと思う。
それでも収束してない例として入玉関係のパラメータが載ってるくらいだから、
こんなのをこのままにしておくよりは、
弱い棋譜でも使ってそれなりの値にした方がいいだろ。
収束してない値の弊害についても棚瀬の記事とかにあるとおり。

例えば入玉時に、初期位置の香車が取られそうだとして、
死守するか否かってのならプロでもアマでもほとんど変わらんでしょ。

10 :デフォルトの名無しさん:2008/08/28(木) 15:16:22
8月の学会誌に影響されて将棋プログラム開発始めたんだけど、
早速、盤面・持ち駒をあらわす変数名を何にするかでつまずいた

ban はなんとなく嫌なので英語の board にした。
そうすると 持ち駒は英語で何というんだ?


11 :デフォルトの名無しさん:2008/08/28(木) 16:27:11
>>10
pieces in hand

持ち駒の枚数管理に hand[] を使っても誤解されることはない思う。

12 :デフォルトの名無しさん:2008/08/28(木) 16:41:48
ふとした疑問なんだけど将棋プログラム作ってる奴らって、当人は将棋強いもんなの?


13 :デフォルトの名無しさん:2008/08/28(木) 17:09:54
>>11
ありがと hand にするよ
んで、先手と後手の持ち駒の2つがいるんだが

int hand[2][SIZE];

とするか、先手と後手の2つの配列にするかで悩んでいる
先手、後手って first, second でいいの?

int firstHand[Size], secondHand[SIZE];

14 :デフォルトの名無しさん:2008/08/28(木) 17:21:09
>>12
ピンキリ。保木氏(Bonanzaの作者)が強くないのは有名。

15 :デフォルトの名無しさん:2008/08/28(木) 18:02:50
>>13
人それぞれだけど、自分は前者。

手番は sente gote が多いかな?

※将棋用語の日本語→英語
ttp://www.shogi.net/shogivocab/vocabhtml.html


16 :デフォルトの名無しさん:2008/08/28(木) 18:36:26
>>15
おおっ、いいサイト教えてくれてありがとう

んで、今度は 盤面+持ち駒 情報を保持する 局面クラスの名前で悩んでる。
さっきのサイトを見ると 局面=position って書いてある
CPosition
{
char m_board[BD_SIZE];
uchar m_hand[2][HAND_SIZE];
.....
};

でおk?

17 :デフォルトの名無しさん:2008/08/28(木) 19:03:55
>>16
英語表記を多用するのならチェスのプログラムソースを見るのがいいと思う。
Crafty、Fruit、Glaurung 辺りがお薦め。

18 :デフォルトの名無しさん:2008/08/28(木) 20:45:35
いろいろあんがと>みんな

おかげさまで、局面クラスを宣言・実装して、初期化、盤面表示、すべての着手の生成ができるようになったよ
(初期状態での可能着手数は 30であってる?)

まだまだ先は長いな


19 :デフォルトの名無しさん:2008/08/28(木) 22:30:43
着手の実行・戻し、局面の先後反転も実装し、三手先の局面をすべて生成できるようになった(ぽい)

(同一局面を考慮しない)三手先の局面数は 25,380 だったけど、合ってるのかな?


20 :デフォルトの名無しさん:2008/08/28(木) 22:40:12
初期値での可能着手数が 30 だったら、三手先の局面は 30^3 = 27,000 以上あるような気がしたんだけど、
飛車の横ききを止める手がたくさんあるので、それより少なくなるのかもしれない

21 :デフォルトの名無しさん:2008/08/29(金) 04:17:36
まぁ合法手が30個程度なら読めるだろうけど、もっと多くなると大変
それに3手読みじゃ浅過ぎてダメな手しか見つからない
どうやって計算量を減らすか、ムダな手を捨てるかの壁にぶつかるだろう

22 :デフォルトの名無しさん:2008/08/29(金) 10:04:49
将棋ソフト同士の対局をしてくれるツールってありますか?
例えば、ボナンザと激指を起動して、手動でしているのですが、結構たいへんなので・・・。


23 :デフォルトの名無しさん:2008/09/02(火) 22:21:15
>16
わたしは駒をSFU〜EHIでenumで定義しておいて、
持ち駒はhand[SFU〜EHI]と一次元配列にしてます。

boardも単純に9x9にする案もあるし、16x9にする方法もありますね
わたしは16x13にしてます
(垂直方向でx16で済むのと、縦は桂馬の利き考えて10)


24 :デフォルトの名無しさん:2008/09/03(水) 10:01:33
先手の桂馬は1段目に置けないんだから、16x11 でよくね?

25 :デフォルトの名無しさん:2008/09/03(水) 11:06:19
>>24
「桂馬だから」という条件式をできるだけ省きたいから。

26 :デフォルトの名無しさん:2008/09/03(水) 23:22:24
>>20
次はNULLMOVE枝狩りを入れてみたら?
ハッシュもうまく動くまでは時間かかる

27 :デフォルトの名無しさん:2008/09/04(木) 09:25:35
囲碁やオセロだったら、評価関数が返す値は双方最善に打った場合の石数差と定義できるけど、
将棋だと 勝ち・負け・引き分け しかない
将棋の評価関数って厳密には何を意味しているんでしょうか?

有利さを(たとえば +10000〜-10000の)数字にしたもの、って言う人もいるけど
有利さの定義が厳密でない気がする。

手番側が勝つ確率っていう人もいるけど、ある局面から手番側が勝つ確率は
(先後の棋力が同じでも)プレイヤーの棋力で異なってくると思うんだよね




28 :デフォルトの名無しさん:2008/09/04(木) 10:17:39
>>27
囲碁やオセロでも勝ち・負け・引き分けしかないじゃん。
それを言うなら将棋だって、詰むまでの手数とか、詰んだときの駒割などで評価関数にできる。

将棋に関してはあなたの考えてる通りだと思うよ。
実際のところ、将棋の神様にとっては勝ち・負け・引き分けしかない。
あと意味があるとすれば、
その評価関数を採用したソフトが(トップ棋士に対して)最も強くなるようなものが、
理想的な評価関数だね。

余談だが、最近俺は自分で将棋を指すときの評価関数を、
「プロが勝つ確率」から「自分が勝つ確率」に改めるよう心がけている。
いくらカッコつけて勝ちのある局面にしても、自分が勝てなきゃ意味ないんですよw

29 :デフォルトの名無しさん:2008/09/04(木) 10:26:56
> 将棋の評価関数って厳密には何を意味しているんでしょうか?

何か新しいことを思いついたつもりなのかもしれないが
いくつもある将棋ソフトは実質的にはまさにそれを競っているんだし

調べればそれなりに分かることを
一から十までこのスレで相談するだけで簡単に作ろうとしている奴がいるな

30 :デフォルトの名無しさん:2008/09/04(木) 12:39:53
オセロの試合は通常スイストーナメントで、勝ち数が同じならば石差の合計で順位が決まる。
したがって、オセロは 勝ち・負け・引き分 じゃなくて、双方最善に指した場合の
石数差を評価関数の値にするのが普通

31 :デフォルトの名無しさん:2008/09/04(木) 14:44:58
>27
そのソフト(あるいは人間)が想定しうる(真似できる)限りの
強いプレーヤー集団(集団内メンバーの棋力は揃っていると仮定)の
メンバー同士が対局した際に先手あるいは後手がそれぞれ勝つ確率。

当然、真似する対象が強ければ強いほど正確(一般性がある)。

>29
意味不明。 と言うか >27の疑問を曲解しとるな。
彼は純粋に理論的あるいは原理的な疑問を口にしてるんだよ。
多分、コンピュータ将棋スレでの最近のやりとりに触発されて。

32 :27:2008/09/04(木) 16:26:05
>>31
やはりそうだよね。>(たくさん略)先手あるいは後手がそれぞれ勝つ確率
(勝つ確率は 0〜1.0 の範囲なので、それを単純に ±10000 とかに線形変換したものじゃなくて、
0.5 の付近は少しの差も重要なので、0.5付近の差を強調した整数にするのが、
ソフト的には扱いやすそうだ)

あたり>コンピュータ将棋スレでの最近のやりとりに触発
するどいね


33 :デフォルトの名無しさん:2008/09/04(木) 16:43:02
読みにくいレスだな

34 :31:2008/09/04(木) 17:25:21
>32
さっきは「先手or後手が勝つ確率」と書いたが実際には
手番を含めた局面同士の比較(順序関係)さえ正しければ
値(比率)そのものはどうでも良いな。

探索後、末端局面の評価値を比較するわけだから。
書いた後で気が付いた。

だから正確には「勝つ可能性の順序関係を数値化したもの」か。

35 :デフォルトの名無しさん:2008/09/04(木) 18:34:45
>>34
そのとおりなんだけど、評価値からウィンドウサーチするときなどは、
評価値の厳密な意味が明確でないと、どの程度の幅をとるべきかが
理論的にははっきりしない
ってことがあるかも

36 :34:2008/09/04(木) 23:52:54
>35
ああ、サーチウィンドウの幅の意味までは考えなかったな。

ところでモンテカルロ囲碁登場以前から、囲碁の評価値には
石数(何目差)と勝つ確率の二種類有りうると言う風に
考えられていたのかな?

つまりその二種類の評価は必ずしも一致しないと。

37 :デフォルトの名無しさん:2008/09/04(木) 23:56:19
うん

38 :デフォルトの名無しさん:2008/09/05(金) 03:57:19
黒と白の地の差(スコア)を評価関数にするのが普通だったと思う
でないと最善手を打たなくなるし
そもそも古典的な囲碁の評価関数で勝率なんて求める方法があるのか
勝率が使えるのはモンテカルロ碁が本質的に確率的(多数回の試行に基づく)だからだろ

39 :デフォルトの名無しさん:2008/09/05(金) 09:37:12
>>36
囲碁はよく知らないがオセロではそうだった
(歴史的には石差を評価値とするのばかりだったはずだが、ロジステロ(だったかな?)が
勝つ確率を評価値にして成功した)

モンテカルロ法も最初はプレイアウト後の地の平均を取っていたが、GNU囲碁より弱かった。
あるとき開発者がソースを1行変更して、地の平均 → 勝つ確率 に変えたところ
GNU囲碁より強くなったそうだ

40 :デフォルトの名無しさん:2008/09/05(金) 17:50:17
>>39
Logistelloの成功の主因は、従来の盤面1マスずつに対し手動で価値を設定していたような古典的な評価関数ではなぃ、
(例:4隅に置いた石1個につきxxx点、その隣のマスなら-xx点、着手可能な場所1箇所につきx点etc.)
隅・辺・斜め方向などの複数マスの範囲における駒の配置パターン1つ1つに対して価値を与える評価関数を用い、
(例:辺の石が●○●●○○○●と並んでいたらx点etc.)
かつその膨大なパターンの評価の設定をコンピュータの学習によって行った事にあるようですが?
石差ではなく勝率を評価値にして成功したというのは恐らく斜め上の主張ではないかと。

http://www.cs.ualberta.ca/~mburo/log.html

41 :デフォルトの名無しさん:2008/09/05(金) 18:15:41
辺やコーナーのパターンに点数を割り振っておいて
それを参照するのはもっと前のプログラムから利用されてる

42 :デフォルトの名無しさん:2008/09/05(金) 19:11:58
>>39
局面の相対的な善し悪しが判断できればいいのだから
評価値が石差を表そうが確率を表そうが本質的な違いは無いんだよ


43 :デフォルトの名無しさん:2008/09/05(金) 19:16:08
俺の頭脳がコンピュータなんだぉ!!! 


44 :デフォルトの名無しさん:2008/09/05(金) 19:21:09
いや、つまんないから。

45 :デフォルトの名無しさん:2008/09/06(土) 01:05:17
>本質的な違いは無い
何を以て本質的と称しているかは知らんが
実際に作る時には全く異なるし学習などを考えると理論的にも違ってくる

46 :デフォルトの名無しさん:2008/09/06(土) 05:09:46
フハハハハ・・・石差に意味などない!!
意味があるのは勝敗のみ!! 勝者は常に一人よ!!

47 :デフォルトの名無しさん:2008/09/06(土) 06:21:28
>>45
>局面の相対的な善し悪しが判断


48 :デフォルトの名無しさん:2008/09/06(土) 07:15:17
>42 >47
「ヒカルの碁」での佐為 対 塔矢行洋 戦を例に考えてみよう。
ネット対局ではなく新初段シリーズで佐為がヒカルの体を借りて打った奴。

盤面で二十目以上の大差を付けようとして打った対局がいったいどうなったか?


49 :48:2008/09/06(土) 07:29:00
別の言い方で説明してみようか?

石差がそのまま評価値なら一目差で何とか勝てる手と何十目もの
大差を付けて勝てる手のどちらをプログラムは選ぶだろうか?

当然、後者だよな。勝つ確率で評価値すると違うんだよ。

50 :49:2008/09/06(土) 07:32:20
あ、一目差じゃなくて半目差か。

51 :デフォルトの名無しさん:2008/09/06(土) 09:24:15
>>49
>局面の相対的な善し悪し


52 :デフォルトの名無しさん:2008/09/06(土) 17:56:36
石差による評価と勝つ確率による評価に違いが無いと
思っている人はある錯覚をしてるんだよ。

盤面で大差を付けられる(可能性が高い)手を
選べば少しくらいの読み間違いが有っても
差がつまるだけでやはり勝てる可能性は依然、
高いはずだと。

つまり実際には存在しない線形性と言うか
単調増加性を無意識に仮定している。

だが実際の囲碁やオセロ、将棋は
とんでもなく非線形性の強いゲームだ。

53 :デフォルトの名無しさん:2008/09/06(土) 18:05:49
人間が、「自分が大差で勝つ」可能性に賭けるようなプレイングは、
相手の癖のモデリングなどによって「相手が弱い」と理解しているからこそ
可能になるんだよ。

相手が囲碁の初心者なのか段位持ちなのか判断できない囲碁プログラムが
「自分が大差で勝てる」可能性があると信じて石差を評価基準として使い、
リスキーな手を連発すれば、当然段位持ちに負ける可能性は高くなっていくでしょう。

これをもっと簡単に言うと、石差を使うプログラムは(プロに)弱い、となる。


54 :デフォルトの名無しさん:2008/09/06(土) 18:28:04
>囲碁やオセロ、将棋はとんでもなく非線形性の強いゲーム
ここ嘘

55 :デフォルトの名無しさん:2008/09/06(土) 18:45:48
と言うか人間のプレーヤーの場合、現局面で既に大差をつけて勝っている
(可能性が高い)と思えば、そのまま大差を保って勝とうとするだろう。
わざわざ差を減らしてまで確実に勝とうとはしない。

また、大差で負けている時はその差をひっくり返すために大きく荒そうとする。

ところがモンテカルロ囲碁は常に勝つ可能性が少しでも高い手を選ぶから、
はっきり勝ってる時は勝ち(石差)を維持しようとしないし、
大きく負けている時でもリスクの大きな手を打たないのでやる気が
無さそうな打ちかたになる。

実力を発揮して強そうにみえるのは接戦の時だけと言う不思議な代物。

56 :52:2008/09/06(土) 19:13:18
>54
私が言う線形性があると言うのはわずかな優位を
積み上げればそのまま勝てるゲームだと言う事。

非線形性が強いと言うのはたった一手で
大逆転が起きる可能性も大きいと言う事。

で、嘘だと考える理由は何?

57 :デフォルトの名無しさん:2008/09/06(土) 19:20:09
優位を積み上げる?


58 :56:2008/09/06(土) 19:43:32
別の言い方をすると「線形」的なゲームでは
情勢が一手だけでは大きく動かない。

少しずつ有利になり少しずつ不利になる。
だから積みあげたもの(石差)がそのまま
勝つ可能性に比例する。

59 :デフォルトの名無しさん:2008/09/06(土) 20:24:45
サッカーはそれか
野球は違うわけだ

60 :デフォルトの名無しさん:2008/09/06(土) 20:42:08
関係ないよ

61 :デフォルトの名無しさん:2008/09/06(土) 21:25:17
>相手が囲碁の初心者なのか段位持ちなのか判断できない囲碁プログラム
 通常のゲーム理論では、評価関数は相手も自分も同じなので、
 敵は自分と同じ強さと仮定しているわけだけど、

 対戦中に評価値の上昇・下降の傾きで、相手が自分より強いか弱いかは
 認識できる。
 これを利用して、強い探索を行う方法はできるでしょうか?


62 :デフォルトの名無しさん:2008/09/07(日) 00:57:13
>>61
一言で説明するのは難しいけど・・・
たとえばモンテカルロ法の場合、石差と勝率が探索結果として出るわけでしょ?

おいらの思いついたアイデアをそのまま垂れ流すと・・・

・相手の強さに応じて石差と勝率の優先度合を変化させていく
 (これはもう誰かがやってそうだ・・・)

・勝ったときの石差の平均と負けた時の石差の平均を使って
 PF(プロフィットファクターまたは調整プロフィットファクター)を求める

 平均勝ち石数 / 平均負け石差 = 勝ちやすさ、みたいな概念だぁね

・石差を区切って、勝率のヒストグラムを作れるのでは?
 大勝と辛勝の確率に大差が無いか、十分に大勝の確率が高いのなら
 そちらを狙わせてみるとかかなー。

63 :デフォルトの名無しさん:2008/09/07(日) 01:01:55
PFと勝率は似ているようで違う概念だから、2次元の分布図を描いてみると
2個以上のクラスターというかピークというか、まあ単純な分布ではないんだろうな、と
直感的に天啓を得る。

そうすると、勝率が多少低くてもPFが高い攻撃的な作戦でいこう!とか、
勝率最優先でPFなんか無視無視!とか、いろいろ人工知能的な幅が出てくると思うんだな。

とまあ、ちょっと別分野をかじった程度の人の戯言。

64 :デフォルトの名無しさん:2008/09/07(日) 01:11:21
http://uproda.2ch-library.com/src/lib051455.bmp.shtml

かんたんに図を描いてみた。
これで囲碁プログラムは10年進んだNE☆(それはない

65 :デフォルトの名無しさん:2008/09/07(日) 01:14:54
囲碁はもともと20年遅れてるから

66 :デフォルトの名無しさん:2008/09/07(日) 16:21:50
最初は普通のソフトの評価値についての話だったのが、
モンテカルロや非MinMaxな探索が入り乱れて混ざってないか。

MinMaxなゲーム木探索の場合、評価値の値の大小とかは関係無く、
相手がどんな手を指してきても評価値が一番マシになる手を探して進めていく事になるが、
ヒカ碁のは、単に最善な手では勝てない条件だから、
相手のミスを誘発して差をひっくり返そうとする話。根本的に違う。

ボナンザVS勝負脳に「ボナンザは相手が嫌がる手を指せる」って話が書いてたが、
これはBonanza Methodが「有利になる手」「最善手」という指標ではなく、
「人間の指し手を真似る」という指標で評価関数をチューニングする手法だったが故だよな。

詰みまで読み切った後なら、無駄合い・無駄王手を考えなければ手数でいいんだろうけど。

67 :デフォルトの名無しさん:2008/09/07(日) 18:16:29
完全読みの場合とそうでない場合の話も混ざってる気がするなあ

68 :デフォルトの名無しさん:2008/09/07(日) 23:50:00
それは俺も思った

69 :デフォルトの名無しさん:2008/09/08(月) 01:06:17
概要を知っただけで実際にプログラムを書いたことが無い奴にはよくある事。

70 :デフォルトの名無しさん:2008/09/08(月) 07:27:18
論文・書籍・雑誌・web site を読んで、(簡単に)強いプログラムが作れそうな気がして
実際にプログラム書いてみると、なかなか強くならないのはよくある事。

って、おいらのことか orz

71 :デフォルトの名無しさん:2008/09/08(月) 09:17:17
実際やってみると意外とドロドロした世界なんだよなw
もっときれいにコーディングできるのかと。
(能力のある人ならきれいに書けるのだろうか?)

72 :デフォルトの名無しさん:2008/09/08(月) 21:24:29
ランダム、モンテカルロ、ニューラルネットワーク、MINーMAX法、評価関数、パターン認識……

やり方はたくさんあるけど、そんなにドロドロしない書き方もあると思うよ。
個人的には、手法違いを6パターンくらい、評価関数違いを10パターンくらい作って、
総当たりで100戦くらいさせつつ徐々に進化させていくのがいいと思う。
特にランダムな指し手は役に立つよ。

73 :デフォルトの名無しさん:2008/09/08(月) 21:41:38
自分が将棋をしていてよくやるのは、まずざっと浅く読んでみて、
数手以内にありうる形とありえない形を把握すること。
いくら打ち込みがあるとはいえ、現状からぶっとんだ変化は無いから。
もし大きな変化がありうるなら、記憶しておくけど。

次に、その総和を取って、全体の重要性を把握する。
たとえば棒銀なら、銀が取るか取られるかが一番重要だとわかるよね。だからそこだけものすごく深く読むわけ。
そしていよいよあと数手で銀の生死が決まるとわかったら、もう、そこに「届かない」駒の動きなんかは読まない。
それは「遅い」ってことだからね。読むだけ無意味。

だいたいこんな感じかな。

74 :デフォルトの名無しさん:2008/09/08(月) 21:59:46
もっと簡単に言うと、ある盤面から、全ての駒が同時に、可能な全ての方向にN手動いたと
仮定して、領域の重なり具合を元にイベントの発生の有無をチェックするわけ。
もし重なってないなら読むだけ無駄。そんな枝は刈れ。
結局、ターンなんて概念は邪魔なだけなんだよね。どうせ何かしらのイベントが起こり得ると
思われるターンまでターンを進ませなきゃ、意味無いんだからさ。

んでイベントを検知したら、それが合法手のみから成り立つか、相手の自殺手など自分に
都合の良い仮定を含まないかを洗うわけ。
先にあり得る全ての重ね合わせをアバウトに書き出してから、あり得ない組み合わせを
潰していくのよ。これは手単位や時間方向の深い読みじゃなくて、
領域と領域の平坦な食い合いとして実装するの。深さは過ちの元だからね。

75 :デフォルトの名無しさん:2008/09/08(月) 22:05:09
プログラミングもできない奴がなんでこの板に居るの?

76 :デフォルトの名無しさん:2008/09/08(月) 22:32:58
プログラム書けるからヒント出してやってるんだろ……。
1手ごとに枝刈り、得点付けしてるから弱いんだよ。
まず最初にごっそり読んで(というか枝を作らない単なるパターンの重ね合わせなんだが)、
妄想みたいな手順も含めて何が可能で何が不可能なのかを調べる。
これで王手が可能か否かなどがある程度事前にわかる。
次に、評価が高いほうから(ほぼ確実に王に向かって特攻する手だろう)実現可能性を探っていく。
自駒を乗り越えるには一手以上必要だし、相手の駒の範囲に飛び込んだら、普通は取られる。
こうして有望だが無謀な手から刈り込んでゆく。そのうち有望で無謀ではない手が見つかる。

77 :デフォルトの名無しさん:2008/09/08(月) 22:45:17
ありがたいヒントですね

78 :デフォルトの名無しさん:2008/09/08(月) 22:49:46
>まず最初にごっそり読んで(というか枝を作らない単なるパターンの重ね合わせなんだが)、

量子コンピュータか?


79 :デフォルトの名無しさん:2008/09/08(月) 23:03:27
プログラミングができる気にまでなってるのか

80 :デフォルトの名無しさん:2008/09/08(月) 23:04:08
>>78
いや普通に9×九×駒種(×N手)の配列。
王が2手動くとでかい正方形になるでしょ。3手だとさらにでかくなるでしょ。
それを
1 1 1
1 1 1
1 1 1
みたいなパターンとして、盤面に重ねて、画像の濃度のように扱う。
するとN手以内にここに金は絶対に来ないとか、銀は来るかもしれないとかが分かる。
N手をN1手とN2手に分ければ、2枚以上の駒がある場所に揃うか揃わないかもわかる。

81 :デフォルトの名無しさん:2008/09/08(月) 23:11:58
>76
既存のアルゴリズムを否定して、それより良いアルゴリズムがあるのだと主張するなら、
まずは自分で動くもの作ってみろ。
どうせ滅多な事で既存の手法を超えるものなんか出来んから。

とりあえずぱっと見、曖昧な条件が多すぎて上手く行かない
(コード化出来なかったりコストがかさんだり)と思う。

82 :デフォルトの名無しさん:2008/09/08(月) 23:17:10
>>80
その重ね合わせの情報からどの程度有益な情報を抽出できるか甚だ疑問だが。
重ね合わせのアイディア自体はたいしたことないが、
そこから本当に有益な情報を取り出すアイディアがあるならそれはすごいとおもう。



83 :デフォルトの名無しさん:2008/09/09(火) 00:37:26
>80
例えば5手先ではいろんなところで
駒がぶつかる事が分かったとする。

で、それからどうするの?
改めて関係する駒だけ動かしてみて読むのか?

二度手間だし勝手読みになりそうな。
将棋は駒をぶつけりゃ良いってもんじゃないからな。

84 :デフォルトの名無しさん:2008/09/09(火) 00:50:14
それに本当に良いアイデアだと思ったら、黙って実現した方が良いよ。
この世界は実現してみせて何ぼの世界だから。

実現しておいてから論文か何かで発表するのが正当な方法。
アイデアだけをいくら語っても全く尊敬も尊重もされない。

85 :デフォルトの名無しさん:2008/09/09(火) 00:53:11
うん。

86 :デフォルトの名無しさん:2008/09/09(火) 17:53:03
>>72
>あると思うよ
思ってるだけで、断言できないんですね。
ましてや、ドロドロしないように実際に書いた経験は無いわけですね。

素人の妄想っぽくていいですね

87 :デフォルトの名無しさん:2008/09/09(火) 17:59:20
>>76
プログラミング言語でおk

88 :デフォルトの名無しさん:2008/09/09(火) 21:07:54
確かに将棋PG始めた日曜PGですが、普通に駒と盤の動きを数字で表すだけでも
大変です。やるのと組むのでは全然違う。

89 :デフォルトの名無しさん:2008/09/10(水) 02:29:09
またヒント出すぜ? ほら、手筋ってあるじゃん。
歩で釣って桂馬打ちとかさ。これは関数言語での制約プログラミングに似ているんだな。

普通の人間は、歩で釣る前から、桂馬を打ちたいマスには駒利きなんか無いのが
わかっているわけだ(話が面倒になるから飛び道具は省く)。
a) まず、盤面の配置があり、
b) そこに桂馬を使える形があり、
c) 事実上駒利きが無いことが分かり、
d) 桂馬を打ったときの駒得があるので、
e) マスにいる敵駒をどかすための手筋が有効になるわけ。
(他の手筋と競合しない限り、この種の手筋はいくらでも長くなり得るため、
minーmax的な盤面単位の再帰には向かない。駒利き単位での再帰が必要)

90 :デフォルトの名無しさん:2008/09/10(水) 02:37:27
人間の読みの各部分は、このように全て結末ありきの詰め将棋もどきなんだよ。
敵の守り(敵駒自信への利きの総和)が薄いから、金と銀があれば詰められる?
→じゃあ金と銀取る方法を探そう→駒利きをぶつけたら右辺が有利
→右辺を深読み→あの歩と銀が邪魔だ→あれをどかすためには(以下再帰

他の駒は、この一連の推理に関与していれば考慮されるけど、そうでないなら関係ない。
目的達成に必要な駒の利きがあり、それを実現するための捨て駒や事前準備があり、
それゆえに手順は長く伸び、序盤の陣組み中の歩突きにまで意味が出てくる。
しかし始まりは単純で、単にある駒を取るための手段にそれが含まれていたということだ。

91 :デフォルトの名無しさん:2008/09/10(水) 02:55:12
懐かしいアイディアだな

92 :デフォルトの名無しさん:2008/09/10(水) 09:05:38
妄想乙

93 :デフォルトの名無しさん:2008/09/10(水) 16:31:48
>minーmax的な盤面単位の再帰には向かない。駒利き単位での再帰が必要
minmaxを全く理解してない無い事が分かる

94 :デフォルトの名無しさん:2008/09/10(水) 18:01:24
>93
いや、>89の言ってる意味は何となく分かるんだよ。
min-maxによる盤面全体の評価関数値が最大になるものを
探す手法ではなく、特定の駒の利きあるいはあるマス目に
対する利きに注目して手を探索したいと。

しかし有望そうな箇所を見つける手法がまったく
言及されてないのがなんともハヤ。

人間のように盤面を見てパッと「こういう事ができそうだ」と
思いつかせるとかソフトに目的意識を持たせる事ができれば
簡単なのかも知れないけどね。

95 :デフォルトの名無しさん:2008/09/10(水) 18:12:21
要するに盤面の局所的な特徴を
どうやって人間みたいにパターン認識し、
有望な手筋を見つけだして行くのか?

「言うは易く行うは難し」の典型。

96 :デフォルトの名無しさん:2008/09/10(水) 18:28:57
ヒント:モンテカルロ法で生成した数万局面の総和

97 :デフォルトの名無しさん:2008/09/10(水) 18:40:41
同種の駒であっても区別できるよう、駒にはユニークなラベルをつけておく。
打ち込みは種類別に何回目なのかわかるように別のラベルをふって管理する。

モンテカルロ法で詰み状態の盤面に達したら、そこまでに動かした駒をラベル別にカウント。
これを数万回繰り返し、動かすと確率的に詰みやすい駒、すなわち候補駒を求める。

あとは普通に、候補駒を優先して深く読むだけ。

モンテカルロする際の評価関数は賢さより速さが重要で、むしろ最低限の常識的な動きに
偏りをつけるのを除けば、完全にランダムであったほうがよい。

98 :デフォルトの名無しさん:2008/09/10(水) 19:05:56
モンテカルロ法を使うための前提は、速度。
先読みは一切せず、経験則を元に静的評価をざっくりアバウトに作り込む。

基本はランダムでなければならないので、「ほぼ禁じ手」「やるのは馬鹿だけ」「手数の無駄」などの手を
あまり指さないようにすることが重要になる。たとえば、駒に対する利きの変化も何も無く、
ただ相手に喰われるだけの動きはちょっとだけ指しにくくしてもいいだろう。
(歩の突き捨てや、敵の歩頭への打ち込みはminmaxでも探索の邪魔になる)

逆に、一番良い手はこれだ!というのはあまり作り込まないほうがよい。
将棋では、明らかな駒得の手が、のちのち負けの理由になっていることが多いためだ。
わざわざ罠にはまるように性格付けする必要は無い。(初心者AIを作りたいなら別)

たぶんそんなに数を読まないうちに、候補駒は絞れると思う。
局面によっては、奇跡が起きないと玉に辿り着けない駒というのもあるからだ。
たとえば初期盤面の香車。こいつで玉を殺すのはかなり大変だと思う。

99 :デフォルトの名無しさん:2008/09/10(水) 19:23:51
ついでに書いておくと、各駒のラベルごとに集計しているわけだから、
「相手の駒aを取った(自分の持ち駒にした or さらに後で打ち込んで利用した)場合の
勝率」みたいな値もすぐに出せるはず。条件付き確率だね。

また、勝ちパターンに共通する動きを抽出すれば、使えそうな手筋の特定もできるかな。

あとはこれらを考慮して読んでいく。

100 :デフォルトの名無しさん:2008/09/10(水) 21:20:07
うだうだ言ってねーで作ってみろよド素人が

101 :デフォルトの名無しさん:2008/09/10(水) 22:47:47
自分で言った事が何か重要なように思えて来た。
「盤面の局所的な特徴を認識して、
それに対して有望そうな手に絞って探索する」

これはもしかすると…ムム。

102 :デフォルトの名無しさん:2008/09/10(水) 22:57:15
>>101
理屈はあってるとは思うんだが、「局所的な特徴」「有望そうな手」
これをプログラム言語まで落とすのがどれだけ難しいと思ってるんだぜ?



103 :デフォルトの名無しさん:2008/09/10(水) 23:01:24
>102
いや、ここから先はしゃべるつもり無い。
そこが重要なんで。

104 :デフォルトの名無しさん:2008/09/10(水) 23:10:12
プッ

105 :host1.n061-114-249-000.pri.iprevolution.ne.jp :2008/09/11(木) 01:14:06
はいはい激指の実現確率実現確率。


106 :デフォルトの名無しさん:2008/09/11(木) 07:24:17
せめてコンピュータ将棋選手権決勝8チームに入るくらいの実績を上げないとね

107 :デフォルトの名無しさん:2008/09/11(木) 08:24:10
>106
初出場でいきなりそこまでは望まない。
目標はまあ、一次予選突破くらいか。

108 :デフォルトの名無しさん:2008/09/11(木) 21:57:02
まんま前向き枝狩りの概念だろ

109 :デフォルトの名無しさん:2008/09/11(木) 23:00:01
>>75
プログラミングできる馬鹿は掃いて捨てるほど居るが、
発想をできる天才はごく少数しか居ないため。

おまえは死んでも支障ないから死んで良し!

110 :デフォルトの名無しさん:2008/09/11(木) 23:17:47
他人の発想を理解できずに一人相撲する間抜けなんですね、判ります。

111 :デフォルトの名無しさん:2008/09/11(木) 23:30:52
>>109
なんでまだ死んでないの?

112 :デフォルトの名無しさん:2008/09/12(金) 09:30:04
自分を「発想をできる天才」と勘違いしている馬鹿は掃いて捨てるほど居るが、
コンピュータ将棋選手権で優勝できるほどの実績を残せる本当の天才はごく少数しか居ない

せめて決勝リーグに残れるくらいの実績をあげてからにしようね

113 :デフォルトの名無しさん:2008/09/12(金) 22:35:10
誰が天才だとか天才じゃないとかクダラネ。
そんなものは後世の人間が評価する事だろ。

114 :デフォルトの名無しさん:2008/09/13(土) 11:56:59
>>20
4手先まで考えりゃ重複局面だらけ

115 :デフォルトの名無しさん:2008/09/14(日) 08:48:00
ルークよ、ハッシュを使うのだ

116 :デフォルトの名無しさん:2008/09/14(日) 11:06:33
ハッシュテーブルでどれぐらい効率化できるの? 具体的な数字ある?

117 :デフォルトの名無しさん:2008/09/14(日) 12:18:02
以前コンピュータ将棋の本で具体的な数字を見た覚えがあるけど忘れた


118 :デフォルトの名無しさん:2008/09/14(日) 12:39:23
使わなければ強いのは作れない。 

119 :デフォルトの名無しさん:2008/09/14(日) 13:10:32
>80の手法は既出。漏れは既にやってる。


120 :デフォルトの名無しさん:2008/09/14(日) 22:50:37
>119
おお、どんな風に使っているのかできたら教えてくれ。
あるいは既に何かの文献に出ている?


121 :デフォルトの名無しさん:2008/09/17(水) 18:41:42
http://d.hatena.ne.jp/yos92/20080219
「ちなみに遠見(MC)ではSEEを使用しています」

と書いてありますが、SEE って何ですか?


122 :デフォルトの名無しさん:2008/09/17(水) 18:45:04
>>121

Static Exchange Evaluation

http://chessprogramming.wikispaces.com/Static+Exchange+Evaluation


123 :デフォルトの名無しさん:2008/09/17(水) 19:04:58
>>122
ありがと

日本語の解説はないのね・・・
がんがって読みます。

124 :デフォルトの名無しさん:2008/09/17(水) 20:38:21
まだあったんだこのスレ…

まだ、あいついるの?

125 :デフォルトの名無しさん:2008/09/18(木) 14:51:43
>>123
駒を取る手の仮評価として取り返しを含めた駒の損得を計算すること。

▲同〜、△同〜、▲同〜、△同〜、と続く限り駒を取り合ってみて
駒得なら優先的に、駒損なら後回しに、探索させる。

126 :デフォルトの名無しさん:2008/09/20(土) 00:06:17
>>123
http://www32.ocn.ne.jp/~yss/book.html#SEC2
つ「2.2 仮評価」

127 :デフォルトの名無しさん:2008/09/24(水) 19:13:57
>>114
遅ればせながらハッシュを実装して、初期状態から3手先、4手先局面の重複数を数えてみた

ユニーク局面数/総局面数:
3手先 13,530/25,440 (53.184%)
4手先 203,194/718,565(28.2777%)

3手先では約半分が重複局面、4手先では70%以上が重複局面だった

128 :デフォルトの名無しさん:2008/09/25(木) 14:48:32
今人工知能採用して効率的なアルゴリズム(関数)などをコンピューター自らに考えて生成させている
人間がコツコツ局面に沿った振る舞いを書き込む条件反射のAIより強くなりそうな感じがする
今現在はBonanzaに勝つ状態

129 :デフォルトの名無しさん:2008/09/25(木) 15:24:07
もうちょっと説明すると
局面を片っ端から覚えていくわけではないのでデータ容量は少なくて済みます
簡単に言えば、考え方を覚えさせていくわけです
なので人工知能の特長とも言えるけれども、局面に対する理解力は曖昧です
その曖昧さが失敗する場合もあれば、ひらめきに転ずる場合もあります
強い相手と対戦すれば、相手の思考の流れを取得し、データから類似する
考え方があるかどうか検索します。

130 :デフォルトの名無しさん:2008/09/25(木) 20:58:57
素人っぽい書き込み乙

131 :デフォルトの名無しさん:2008/09/26(金) 13:15:48
と言うか釣り乙
>今現在はBonanzaに勝つ状態

132 :デフォルトの名無しさん:2008/09/26(金) 14:46:55
必死で考えて書いた文章がこの程度かと思うと可哀そうに思えてくるよ

133 :デフォルトの名無しさん:2008/09/26(金) 15:21:37
ボナンザメッソドを使わずにボナンザ以上に強くできたら
どれほど画期的な事なのか分かっていないと思われ。

134 :デフォルトの名無しさん:2008/09/26(金) 15:30:58
>>130-133
自演乙

135 :デフォルトの名無しさん:2008/09/26(金) 15:32:01
バカにわかりやすく言ったつもりだけど理解できなかったみたいだな

136 :デフォルトの名無しさん:2008/09/26(金) 15:54:15
>>128-129が検証性を確保すればいいだけのこと。


137 :デフォルトの名無しさん:2008/09/26(金) 18:40:00
そうそう、大層な事言うのなら
証拠を見せてくれないと話にならない。

ボナンザ側から見た棋譜とか
そこをあなたのソフトから見た読み筋とか。

138 :デフォルトの名無しさん:2008/09/28(日) 18:05:44
class Habu{
}

ここまで書いた。

139 :デフォルトの名無しさん:2008/09/28(日) 18:45:24
セミコロンが抜けている
デフォルトコンストラクタが定義されていない
代入演算子が定義されていない

140 :デフォルトの名無しさん:2008/09/28(日) 19:17:21
そこまで書いてない
だから「ここまで書いた。」

141 :デフォルトの名無しさん:2008/09/28(日) 19:22:16
Syntax Error : ここまで書いた。

142 :デフォルトの名無しさん:2008/09/28(日) 22:38:25
main(){
   int Moriuchi = HABU;

}

ここまで書きました。


143 :デフォルトの名無しさん:2008/09/29(月) 01:32:35
ボナンザはソースコード少ないのに強いよなぁ
それに比べて他の糞フリーソフトはソース長ったらしいのにバカだしw
低学歴プログラマ丸出しw

144 :デフォルトの名無しさん:2008/09/29(月) 02:15:05
>>142

int型は整数をいれるのでわ?

145 :デフォルトの名無しさん:2008/09/29(月) 02:17:52
int 型を使っているけど意味的にはポインタだろう

146 :デフォルトの名無しさん:2008/09/29(月) 03:54:41
え?

147 :デフォルトの名無しさん:2008/09/29(月) 04:08:03
picture?

148 :デフォルトの名無しさん:2008/09/29(月) 20:31:54
const int KON_YASUJIRO = 1;
const int KIMURA_YOSHIO = 2;
...
const int HABU_YOSHIHARU = 175;
...
const int MORUICHI_TOSHIYUKI = 183;
...

149 :デフォルトの名無しさん:2008/09/29(月) 21:40:55
>143
ボナンザのソースコードは公開されてないだろ?
もしかしてsikou.c(sikou.dllのソース)を思考ルーチン本体だと思った?

私も最初、sikou.cを本体のソースコードかと勘違いして一生懸命読んで
みて気がついたよw。実はCsa.exeから呼び出されるインターフェース用
dllでそれがBonanza.exe(思考ルーチン本体)を呼び出してるだけだって。

それにボナンザは例え、実際に動作するexeのソースが小さいとしても
全体として小さいとは限らんからなぁ。学習用ルーチンがその肝だが
別ソースかも知れないし、サイズなんかさっぱり分からないし。

それともただの釣りか?

150 :デフォルトの名無しさん:2008/09/29(月) 22:00:49
いや、ただの馬鹿

151 :デフォルトの名無しさん:2008/09/30(火) 23:03:15
>143はある意味間違いじゃない

前向き枝狩りソフトは、大量のヒューリスティックを実装しているので
ソースがかなり長い
(数千のIF文が並ぶソフトもあるらしい)

全幅探索は探索して自分で判断するからソースはシンプルで短い


152 :デフォルトの名無しさん:2008/09/30(火) 23:13:43
いや、ただの馬鹿

153 :デフォルトの名無しさん:2008/10/01(水) 01:41:45
ステップ数はどれぐらいの規模なんだろ ボナとか激指とか

154 :デフォルトの名無しさん:2008/10/02(木) 00:10:07
ヒント
>>143
はこのスレに常駐してボナンザの評価を非常に気にしてます&断言

155 :デフォルトの名無しさん:2008/10/02(木) 08:18:17
>>143
行方八段乙

156 :デフォルトの名無しさん:2008/10/29(水) 20:06:32
age

157 :デフォルトの名無しさん:2008/10/29(水) 20:20:05
ボナンザの解説を読んでいたら、評価因子として「王周囲25枡の利きの配置」があげられていたのですが、
これは具体的にはどういう評価を行っていたのかよくわかりません。

双方の利きがあるかないかだけでも1枡3値だし、壁を入れると4値になります。そうなると全部で50ビットにもなり、
その値全部に対してテーブルを持つのは非現実的だし、ボナンザの説明には「パラメータの個数は約1万個」とあります。

どなたがわかる人いたら教えてください。


158 :デフォルトの名無しさん:2008/10/31(金) 04:50:46
今日から、作り始めるぜ。 共通して使える公開ルーチンを作る

159 :デフォルトの名無しさん:2008/10/31(金) 15:37:31
>>157
正直、それだけじゃ全然わかんね。ただの妄想だと思って聞いてみてくれ。

たぶん、前の所に書かれてる「王の周囲25マスの利き」については
単純に王が移動できない枡(移動したら取られるのも含め)のことだけじゃないかな?
で、下の方の「パラメータの個数は約一万個」ってのは、
自玉と相手の王との距離とか、手駒の負の数や飛車の利き枡数・角と飛車の距離とか
果ては、王が動いた回数とか
そういった細々したパラメータが約一万個ほどあるって話だと思う。

160 :デフォルトの名無しさん:2008/10/31(金) 21:03:28
パラメータが一万個とかww
正気の沙汰とは思えないwwww


161 :デフォルトの名無しさん:2008/11/01(土) 08:44:20
>157
「王周囲25枡の利きの配置」
自分もよくわからん

利きありなし、手番、壁を2bitで表現したとして
たしかに50bitいる。圧縮してるのかもしれん

パラメーター数1万個は、よく考えると
特徴の種類の数なのか、それぞれの要素の数なのか謎
と金、成桂とかをまとめて、駒を10種として
10x2x81x81=13万
王と駒の2駒配置だけでも要素数が13万行くので、とても1万には収まらないので
特徴の種類が1万個って話かも試練


162 :デフォルトの名無しさん:2008/11/01(土) 22:06:21
>>161
・玉とその他の駒の相対位置

に関しては、対象形を考えれば、玉の位置は 5*9 = 45
もうひとつの駒は 玉の位置以外の80箇所だけど、テーブルを引くことを考えれば81要素必要
駒の種類は 歩香桂銀飛角竜馬、金とその他の成り駒は同種とすれば9種類
なので 45*81*9 = 32,805

うーん、やっぱり特徴の種類の数が1万なのかぁ・・・

163 :デフォルトの名無しさん:2008/11/02(日) 07:34:38
特徴の種類の数が一万だとすると、それはそれで評価関数の軽量化が難しそうだ

164 :デフォルトの名無しさん:2008/11/17(月) 10:58:33
証明駒って、詰みの局面の持ち駒を0にして上位の局面に戻せば良いんですか?
そしたら後手が、持ち駒を多く使わせるような局面へ誘導したら詰まなくなると思うのですが。

165 :デフォルトの名無しさん:2008/11/17(月) 11:01:58
最も多く駒を使わせる最終局面を特定しないと、最小の証明駒は求まりませんか?

166 :デフォルトの名無しさん:2008/11/17(月) 15:00:03
評価する数を増やしても無駄な事はあきらか。 
多くの局面で影響を与える項目が100ほどでそれらで全体の95%の評価を表せているなら
残りの数万個の項目は計算するだけ遅くなる。

167 :デフォルトの名無しさん:2008/11/17(月) 15:20:48
(・∀・)クスクス

168 :デフォルトの名無しさん:2008/11/17(月) 15:22:44
なに? ほとんど影響のない項目まで計算するのは無駄だろ。 主要な項目さえ抽出して使えば十分だ。

169 :デフォルトの名無しさん:2008/11/17(月) 17:55:44
んで、主要な項目って何よ?

170 :デフォルトの名無しさん:2008/11/17(月) 17:58:05
たとえば、a+b+c+・・・・=1をウェイトとしてax+by+cz+・・・・が評価関数とすると
ウェイトの小さいものは無視するって事だ

171 :デフォルトの名無しさん:2008/11/17(月) 19:23:49
アタマワルイヤツバッカリ

172 :デフォルトの名無しさん:2008/11/17(月) 20:27:43
頭悪い奴ばっかり…とは思わないけど、
お互いにお互いの想定とかが大きく食い違ってそうで、話にならないな。

とりあえず、166についてはなんか問題を勘違いしてそうな気がする。
将棋のばあいは、どうしても評価関数に目が行きがちだけど、
結局は、局面・局面の優劣や勢いとかじゃなくて、”最終的に詰むか詰まざるか?”のゲームだから
主要要素がどんだけ占める%高くても、正しく評価しきれるものじゃない。
特に、読みと言う作業が累積されていくので余計に予測が外れていくだろう

さらに、もう一個言うならば将棋の主要要素なんて多めに見積もっても
40の駒の位置や利き程度 (ざっとみて、350項目ぐらいか)
それ以外は、本質的に計算速度を・計算精度を上げるために利用してるようなモノ。


173 :デフォルトの名無しさん:2008/11/18(火) 13:09:15
一手を一万パラメータで評価したときに一万回のループが必要だよね
三手読んだらどれだけ爆発すんの

174 :デフォルトの名無しさん:2008/11/18(火) 13:14:08
アタマワルイヤツバッカリ

175 :デフォルトの名無しさん:2008/11/18(火) 22:20:25
非常にたくさんのパラメータを候補として用意しておいて、学習が進むにつれ
主要なパラメータのみに絞り込んでいくと言う手法は有り得るだろうね。

ニューラルネットでもニューロンを必要に応じて増やしたり減らしたり
する手法があるし。

統計学習の理論的支えが無いと訳が分からない事になりそうだが。

176 :デフォルトの名無しさん:2008/11/18(火) 23:52:44
パラメータが多すぎる事の問題点は学習および対局の実行時に
時間が余分に掛かると言う事もあるが、本質的に問題なのは
やはりオーバーフィッティング(過学習)だろうな。

学習した局面「だけ」正しい答えを出したのでは役に立たない。

177 :デフォルトの名無しさん:2008/11/19(水) 07:16:01
まぁブログから影響されている話題だと思うけど、その試みには直感的に可能性を感じる。

178 :デフォルトの名無しさん:2008/11/20(木) 08:16:12
おまいら最強の囲碁プログラムしてみろよ
http://pc11.2ch.net/test/read.cgi/tech/1226792541/

179 :デフォルトの名無しさん:2008/11/21(金) 04:16:05
>>166
この書き方だと主成分分析みたいなのを連想するけど

将棋の評価の成分が

駒割、大駒の自由度、王の脅威
としても、その割合が、局面で変化する

進行度を求めるにしても、そもそも正しい値を計算する方法が無い
推定するしかない
Bonanzaは進行度をつかってない



180 :デフォルトの名無しさん:2008/12/03(水) 23:25:28
>>162
棋譜中に出現しないパターンまで無理に補完しない方針なんじゃないのと予想。
たとえば表が3分の1しか埋まっていなくてハッシュで引いてるとすれば何もおかしいことはない。

181 :デフォルトの名無しさん:2008/12/25(木) 10:23:54
hosyu

182 :デフォルトの名無しさん:2008/12/25(木) 20:01:47


誰の名言か忘れたけど


最強のチェスプログラムは人工的に作れるんだと


でも将棋は無理なんだと


少なくとも上級者には勝てないんだと



なんでかというと


持ち駒を再び盤上に出せるのならば
無限の手数を考えなきゃならないからなんだと



というわけでやめた方がいいぞ^^>>1-1000




183 :デフォルトの名無しさん:2008/12/25(木) 21:45:57
>182
ウーム、何と言ったら良いか良く分からんが
難しいからこそ挑戦する価値があるのだよ、君。

184 :デフォルトの名無しさん:2008/12/26(金) 02:40:18
>>182
無限にはならないけどね
チェスより多いだけで

185 :デフォルトの名無しさん:2008/12/29(月) 09:02:12
チェスの平均合法着手数(b)は30程度、将棋は80程度
探索時間はおおむね N^(b/2) に比例するので、たいした違いではない (Nは探索深さ)

186 :デフォルトの名無しさん:2008/12/29(月) 09:11:16
15乗と40乗で大した違いじゃないのか。きっとNは1なんだろうな。

187 :デフォルトの名無しさん:2008/12/29(月) 09:50:15
>>185
(b/2)^Nだよ

188 :デフォルトの名無しさん:2008/12/29(月) 15:19:35
それでもNが5で千倍になるね……

189 :デフォルトの名無しさん:2008/12/29(月) 16:31:18
b^(N/2)だろ
ふざけてるのか知らんけど

190 :デフォルトの名無しさん:2008/12/29(月) 16:41:17
なんじゃそりゃ
もう一度考えてごらん

191 :デフォルトの名無しさん:2008/12/29(月) 16:57:23
>>190
泣いて謝ることになると思うが一応
http://en.wikipedia.org/wiki/Alpha-beta_pruning

192 :デフォルトの名無しさん:2008/12/29(月) 17:09:07
それはベストケース

193 :デフォルトの名無しさん:2008/12/29(月) 17:15:05
普通の実装をすれば大抵ベストケースを更に下回る

194 :デフォルトの名無しさん:2008/12/30(火) 03:40:06
iterative deepening

195 :デフォルトの名無しさん:2009/01/01(木) 13:01:09
http://headlines.yahoo.co.jp/hl?a=20081231-00000000-isd-game

アルゼ傘下のセタは、12月24日開催の取締役会にて、会社の解散と清算について決議し、
親会社であるアルゼも本件について承認する旨の決議を行ったことを明らかにしました。
かつては『スーパーリアル麻雀』や『森田将棋』といったゲームで知られた老舗メーカーですが、
約25年の歴史に幕を閉じることになります。

セタは1985年に設立。
処女作として同年にファミコン向け『本将棋内藤九段将棋秘伝』をリリースしたのを皮切りに
87年には人気シリーズとなった『スーパーリアル麻雀』シリーズの第一作目を発売しました。
技術力のあるメーカーとして知られ、プレイステーションやNINTENDO64で積極的に展開、
ネットワークで通信対局ができる『森田将棋64』(N64)やN64互換のアーケード基盤「Aleck64」
などを発売しました。

1999年にアルゼの資本参加を受けてからは軸足をゲームソフト開発から遊技機向けの機器製造に移し、
ホール向けのカードシステムや紙幣読み取り機などを販売していました。
ゲームでは2004年6月に任天堂より発売されたゲームキューブ向け『レジェンドオブゴルファー』が
最後の作品となりました。

解散の理由は「経済情勢の悪化により独自での事業継続が困難になったため」としています。
2月9日の臨時株主総会で正式に解散が決議される見込みです。
近年はゲーム事業を行っていなかったとはいえ、老舗メーカーの解散に寂しい思いをされる方も
多いのではないでしょうか? 


196 :デフォルトの名無しさん:2009/01/02(金) 15:46:15
>185
チェスより将棋の探索が厄介なのは合法な着手数の多さよりむしろ
取った駒を打てる事により終盤になってもなかなか決着が着かずに
一局がやたら長くなる可能性があるからじゃなかろうかと最近思う。

197 :デフォルトの名無しさん:2009/01/02(金) 15:55:49
着手数の多さも駒を好きなところに打ち放題ってのに起因してる気がする

198 :デフォルトの名無しさん:2009/01/03(土) 03:07:58
すべての手を考えるプログラムを前提にすると、
一つの持ち駒を持った場合、それが歩以外であれば、
空いているところ全てに打てることになるから、
その中から最もいい場所に打つようにプログラムしなければならない。

もう一つ持ち駒が増えると、単純計算でその倍の手数に加えて、
増えた持ち駒が置いてあった場所が空いたところに打てるかどうかの
検討もさせなければならない。

そうやって持ち駒が増えるたびに倍、倍、と、考える手数が増えていく。
さらに、複雑になった盤面が一つ動くごとに、
その持ち駒の使い方が全く違ってくる。

持ち駒以外にもチェスと異なる部分がある。
相手陣内に入ると持ち駒を成らせるかどうかの判断も加わる。
そうすると手数は無限に増えていく。

199 :デフォルトの名無しさん:2009/01/03(土) 03:29:40
まぁ前提が無意味だから何の意味もない考察だよな

200 :デフォルトの名無しさん:2009/01/03(土) 03:56:41
>>199
逆に、どうやって考える手を削るのか判断させんのか?

201 :200:2009/01/03(土) 04:01:20
眠くて文章が変になった。

>>199
考える手を減らすのにもプログラムがいる。

202 :デフォルトの名無しさん:2009/01/04(日) 10:23:19
そもそも削る必要が無いだろう。ひたすらに考えさせればいい。
もちろん、削ることを考える人がいてもいいが、
そういうのは後から組み込めばいいだけで、
全体の流れで考えたときには、ひたすらに読む手を増やしていけばいい。
その意味ではソフトウェアよりもハードウェアに頼る。

203 :デフォルトの名無しさん:2009/01/04(日) 15:40:13
>>202
削らないでひたすら読ませてると
5手ぐらいしか読めないよ。
同じハードでうまく削って20手読まれたら勝てない。
将来ハードの性能が上がっても、削ってる奴はもっと先を読むので
永遠に勝てない

204 :デフォルトの名無しさん:2009/01/05(月) 02:01:08
20手読ませるとすると、20手目の目的が何なのか設定しなきゃならん。
王までたどり着かないということはないと思うが。

205 :デフォルトの名無しさん:2009/01/07(水) 22:04:25
なんでそんな基本的な話延々としてんの?w

206 :デフォルトの名無しさん:2009/01/08(木) 02:24:32
作った事が無い奴だからだよ

207 :デフォルトの名無しさん:2009/01/08(木) 22:29:47
新年早々飛ばしてますね

208 :デフォルトの名無しさん:2009/01/09(金) 17:13:54
>203
5手ぐらいではないぞ。それに「まったく削らない」ではない。
削る部分に関しては既存で、他の部分により力を入れたらと言っている。
暇があるなら削ることを考えてもいいが、
最初から考えるほど重要なことではない。

あと、削る奴は、読む手数が多くなると同時に見落としのリスクも増え、
また、形勢判断にも制限がかかる。それらができればあんたのいうとおりだが、
それができるとなれば、それは人工知能の領域に近い。
現時点のプログラミングではやや持て余す方法だ。

209 :デフォルトの名無しさん:2009/01/09(金) 22:52:53
つまんにゃいよ

210 :デフォルトの名無しさん:2009/01/10(土) 08:38:06
>>208
それだと速くするしかないね。ある意味当たり前の話。
リスクを増やさずに削る方法を考えるという方向しかないんでは?

間違った探索延長をしない
間違った探索削減をしても気がつくようにする
本当に必要なときに探索延長する

211 :デフォルトの名無しさん:2009/01/10(土) 21:47:15
枝刈りぐらいは常識にしる!

212 :デフォルトの名無しさん:2009/01/11(日) 01:39:17
前向き枝刈りと後ろ向き枝刈りくらいは知っておいて欲しいね。

213 :デフォルトの名無しさん:2009/01/11(日) 01:44:24
なんでそんな基本的な話延々としてんの?w

214 :デフォルトの名無しさん:2009/01/11(日) 20:39:53
もっとフルーティで前向きな話をしようぜ

215 :デフォルトの名無しさん:2009/01/11(日) 21:30:28
枝狩りに意味が無いってことは棚瀬さんが実験で示してる
重要なのは探索深さ削減だよ
(延長と削減は相対的な差しかないので同じ)
横型探索すべきところを縦型探索で代用しているんだから、
いかに近似度を上げていくかだよ。
dfpnが成したように

216 :デフォルトの名無しさん:2009/01/14(水) 19:13:34
16bit時代に強い将棋作った森田氏が一番すごくね

217 :デフォルトの名無しさん:2009/01/14(水) 22:18:13
凄いね、体型と態度が。

218 :デフォルトの名無しさん:2009/01/14(水) 23:18:23
turboPascalで作ったのかな

219 :デフォルトの名無しさん:2009/01/16(金) 13:23:42
アセンブラ

220 :デフォルトの名無しさん:2009/01/16(金) 23:41:09
>>216
16bit時代にBonanzaがあったら森田将棋より強いよ

221 :デフォルトの名無しさん:2009/01/17(土) 14:45:41
>220
16ビット時代ではメモリに入りきらないよ。
ボナンザがいくらコンパクトとは言っても
本体のサイズが数十メガバイトはある。

仮想記憶で無理矢理動かしたら動作が
無茶苦茶に遅くなるだろう。

222 :デフォルトの名無しさん:2009/01/17(土) 21:37:42
あの頃は全幅探索だと 3,4手先まで読むのがやっとだった
それにボナンザの評価関数パラメータ学習は計算機で3ヶ月かかったそうだが、
100倍の時間がかかるとすると25年もかかる計算になる。

223 :デフォルトの名無しさん:2009/01/18(日) 22:03:19
100台並列処理するだけじゃん

224 :デフォルトの名無しさん:2009/01/18(日) 23:43:46
>223
当時のコンピュータを100台並べると幾らかかるか?
1台30万円として3000万円。(当時のコンピュータは高かった)
物価のレートも違うから今の価値に換算すると
5000万円くらいにはなるか?

にも関わらずインターネット機能どころか
LAN(イーサネット)すら付いてなかった。

当時、普通に通信に使ってたインターフェースは
RS-232-Cかセントロニクス・パラレルかGP-IBくらい。
イーサネットはゼロックス製のAltoなどの一台1000万円はする
高級ワークステーションが持つのみだった。

たくさんのPCをつないでコミュニケーションする方法は
モデム経由でサーバーに繋いでパソコン通信するくらい。

データの持ち運びは2MBも入らないフロッピーディスク経由が基本。

この状況で100台のパソコンをどうやってひとつの目的に利用するか?
大学や企業の研究所でもほとんど不可能な話だった。

当時のパソコンは基本的にスタンド・アローンな存在だったんだよ。
そう言えばMacintoshだけはAppleTalkとか言う
今から思えば超スローなLANを持っていたな。

225 :デフォルトの名無しさん:2009/01/18(日) 23:56:34
いくら仮定の話をしたところで
当時作れなかったお前らの負けは変わらない

226 :デフォルトの名無しさん:2009/01/19(月) 00:00:46
メインメモリが最大数メガバイト程度、
ハードディスク容量も最大数十メガバイト程度で
うまくジョブデータを各PCに割り振れるかどうかは
なお、一層難しい問題であっただろう。

227 :デフォルトの名無しさん:2009/01/19(月) 00:07:48
>225
そりゃそうだ。
あの頃の森田さんには誰もかなわなかった。

なにしろアセンブラでガジガジに書いて
ハードウェアの性能を極限まで引き出したのだから。

あの時、あれがあったならなんて仮定の話は無意味だ。

228 :デフォルトの名無しさん:2009/01/21(水) 01:21:03
既出かもしれんが、デバッガーが相当頑張らないとこういうことになる。

http://jp.youtube.com/watch?v=3m06TYlFaFg&feature=related

229 :デフォルトの名無しさん:2009/01/21(水) 01:22:01
おまけ

http://jp.youtube.com/watch?v=ct1fk8GFubA&NR=1

230 :デフォルトの名無しさん:2009/01/30(金) 03:50:04
ボナ4のソースを読んで書き込むスレ
http://anchorage.2ch.net/test/read.cgi/bgame/1233229938/

231 :デフォルトの名無しさん:2009/02/18(水) 15:01:06
 “最強ランク”とも評される将棋ソフト「Bonanza」。このソフトのソースコードが1月28日 
に公開された。該当部分には思考ルーチンも含まれており、これにより思考部分の詳細 
が明らかになることになる。 

http://v.japan.cnet.com/news/article/story/0,2000067548,20388330,00.htm


232 :デフォルトの名無しさん:2009/02/18(水) 15:40:33
>>231
オプソ化ワロタw

233 :デフォルトの名無しさん:2009/02/18(水) 17:27:11
>231
この記事を書いた人、ソフト開発関係者のブログは元より
2chのコンピュータ将棋関連スレも読んでるようだなw。

>中には「Bonanzaクローンが蔓延するのではないか」と危惧する声もある。

234 :デフォルトの名無しさん:2009/02/18(水) 17:48:38
>「Bonanzaクローンが蔓延するのではないか」
アホすぎ

235 :デフォルトの名無しさん:2009/02/21(土) 21:10:08
【石川】コンピュータ将棋最強は? 北陸先端科学技術大で4強対決
http://mamono.2ch.net/test/read.cgi/newsplus/1235194430/

236 :デフォルトの名無しさん:2009/02/21(土) 21:15:18
>>234
アホが大した努力もなしに作ったクローンが蔓延すると
トーナメントでそれ以下のものが締め出されちゃうわけで
そうなったら問題かもな。そこまでの恥知らずはいないと思いたいが。
ソース参考にして全体としての底上げにはつながりそう。

237 :デフォルトの名無しさん:2009/02/22(日) 19:48:14
>>236
その考え自体がアホだろ

238 :デフォルトの名無しさん:2009/02/22(日) 22:51:03
>>237
アホって言うやつがアホだろ

239 :デフォルトの名無しさん:2009/02/23(月) 01:16:53
>>238
いやいや俺がアホだろ

240 :デフォルトの名無しさん:2009/02/23(月) 01:24:37
うん

241 :デフォルトの名無しさん:2009/02/24(火) 00:24:49
こんなアホアホ言ってるスレ初めてw。

242 :デフォルトの名無しさん:2009/02/26(木) 10:51:07
初めてのアホ きっとアホ アホアホオールナイロン

243 :デフォルトの名無しさん:2009/02/28(土) 10:19:37
よーし
この休みでボナのソース読みまくるぞー

244 :デフォルトの名無しさん:2009/02/28(土) 21:53:03
ボナ4のソースを読んで書き込むスレ
http://anchorage.2ch.net/test/read.cgi/bgame/1233229938/

読んだら↑に書き込んでね
なんか最近違う話が多くて・・・

245 :デフォルトの名無しさん:2009/03/09(月) 18:08:43
 

246 :デフォルトの名無しさん:2009/03/12(木) 02:10:16
>>245
オヤスミ…
  <⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄


247 :デフォルトの名無しさん:2009/03/18(水) 10:18:49
評価関数改良したら全体で5〜10%くらい速くなった


62 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)