[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 15:39 / Filesize : 284 KB / Number-of Response : 966
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 15:33:11 ]
できたらよろこんでやる。
前スレ
おまいら最強の将棋プログラムしてみろよ part5
pc11.2ch.net/test/read.cgi/tech/1109307327/

552 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:23:59 ]
おまいが弱いだけ

553 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:01:55 ]
前回のGA見てみろ。やる気沸くぞ。

554 名前:デフォルトの名無しさん [2008/01/17(木) 07:02:17 ]
もっとこのスレ盛りageようぜ

555 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:12:54 ]
【訃報】チェス元世界王者、ボビー・フィッシャーさん死去 64歳
mamono.2ch.net/test/read.cgi/newsplus/1200665136/

556 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 14:49:16 ]
C言語でやってる人いる?
C++の方がいいのかな?


557 名前:デフォルトの名無しさん [2008/01/20(日) 14:56:43 ]
C++の方がいい
部分的にC言語やアセンブラも使える

558 名前:デフォルトの名無しさん [2008/01/27(日) 14:07:14 ]
スレッド使ってますか?

559 名前:デフォルトの名無しさん [2008/01/28(月) 16:28:29 ]
使ってますがなにか?

560 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 17:11:16 ]
もう、ブルージーンで最強のチェスプログラムできちゃったので将棋プログラムは興味ないわ



561 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 18:20:44 ]
門外漢がよーいうわ

562 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 19:46:33 ]
作ってる人近況報告してよ

563 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 20:34:23 ]
強化学習してる。死にそう。

564 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 20:45:55 ]
いちから作り直してる。

565 名前:563 mailto:sage [2008/01/28(月) 21:01:55 ]
>>564
ばかやろう、俺なんてマイナスからの出発だぞ。

566 名前:564 mailto:sage [2008/01/28(月) 21:16:24 ]
>>565
なんだよ、マイナスってw

以下、マジレス。
おとといのUSIエンジンの登場でモチベーションがかなり上昇した。
弱くても、勝てなくても、笑われても、それでもいいからとにかく形にすることに決めたよ。

567 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 22:13:56 ]
>>566
ランダムざしに負けるのがマイナスじゃね?

568 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:16:28 ]
俺も強化学習やってる
俺よりは強いんだが・・・

569 名前:563 mailto:sage [2008/01/28(月) 23:20:41 ]
パソコンぶっ壊れたから修理するところから。
あと、部屋が汚くてどこに本があるか分からないから掃除するところから。

>>567
負けそうだから怖い。

570 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:21:31 ]
>>568
出現頻度の低いパラメータって学習が遅くね?
なんか対策考えないとなぁ。



571 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:32:52 ]
>>570
自分は出現頻度が低いパラメータは保持したまま
別のパラメータが変わるような局面に分岐させたりしてる
ちなみに効果の程は測ってないけど

572 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:45:18 ]
7五玉で投了

573 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:40:24 ]
>>571
なるほど、賢いなぁ。
俺は猿だから対局数でごまかそうかなっと。

574 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:51:11 ]
れさライブラリ使ってる人いる?

575 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:10:40 ]
あの! Delphiで将棋作るとC++より速度遅いですか?

576 名前:デフォルトの名無しさん [2008/02/07(木) 16:07:46 ]
ボーランド製品ならどう速度だろ

577 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:13:51 ]
あの! Delphiで将棋作るとVisual C++より速度遅いですか?

578 名前:デフォルトの名無しさん [2008/02/07(木) 16:16:26 ]
最適化や個人の技術によるが同程度ならVCの勝ち

579 名前:デフォルトの名無しさん [2008/02/09(土) 21:48:35 ]
あの! Delphiでインラインアセンブラだけで将棋作るとC++より速度遅いですか?

580 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:10:11 ]
並列化のことで何年か前にYSS掲示板で議論になってましたけど

すごく初歩的な話なんですがrootでsplit(分割)する/しないってのは
どういう意味だったんでしょうか?

最初の深さ1だけは読んで、そのそれぞれの(1手読みの)手を並列化するのが
「rootでsplitする」でいいのかな?

しない、ってのはどういうことなんでしょう?




581 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:43:52 ]
YSS掲示板で訊いた方がいいんじゃね?

582 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 09:44:18 ]
あまりに初歩的すぎかなとおもって・・・

583 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:46:16 ]
真面目に質問すれば大丈夫

584 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:48:45 ]
あ,ここより将棋板の方が人(実際に作ってる人)が多いから
そっちでもいい alternative だったか,開発者用のスレがある

585 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:40:49 ]
32bitパソコンを使ってますがintでなくcharを使うと
メモリの節約にはなるが速度は遅くなるのですか?

586 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 13:45:01 ]
メモリアクセスが減るから速くなるケースもあるかもしれません。
要は、一概には言えないのでテストケースを充分絞って実験してみることです。

587 名前:デフォルトの名無しさん [2008/02/11(月) 14:21:17 ]
char や floatが遅いというのはデマ
キャッストに時間がかかるというのはデマ

588 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:22:39 ]
へぇ〜今調べて自己解決しますたと言うところだったんですが
一概に言えないのですか。へぇ〜

589 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 15:06:51 ]
そりゃそうだろ。メモリ2GB程度のパソコンごときで1G件のデータを扱おうとしたら
charじゃないとswapしまくりで遅くてしゃぁない。

590 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 15:18:39 ]
将棋では1Gも使わないでしょう。
ところでYSSの人は配列は2のべき乗にすると速くなると言ってますが
みなさんそうしてるのですか?



591 名前:デフォルトの名無しさん [2008/02/11(月) 15:22:57 ]
それはデマ スワップが発生しないように最低限の確保が速い

592 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:05:18 ]
へぇ〜デマばっかりなんですね。
今のパソコンと将棋ソフトでスワップはないと思いますが。
でもそう言うには相応の理由があると思いますが、
実際に実験してないけど理論的には速いはず、というところでしょうか。

593 名前:デフォルトの名無しさん [2008/02/11(月) 16:07:36 ]
512や1024ならスワップ起こるよ
OS、ほかのプログラムが動いているとハッシュテーブルがメモリ外に出ることがある
するととても弱くなる
たとえばボナンザで実験するとわかる

594 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:13:57 ]
>>580
rootでA,B,Cと候補手があるとして
BやCの評価値の評価値を並列に探索して求める場合はrootでsplit。
Bの評価値が確定してからCを探索する場合はrootではsplitしていない。

595 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 20:56:25 ]
>592
デマというか、ハードウェアとかコンパイラに依存するので時代によって……

596 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:41:19 ]
>>594
ありがとうございます

>BやCの評価値の評価値を並列に探索して求める場合はrootでsplit。

というのは直観的に理解できそうです
rootでとりあえず指し手を列挙してみて
おらこれとこれとこれがあるから行ってこいやぁ、みたいなw

でも
>Bの評価値が確定してからCを探索する場合はrootではsplitしていない。

というのがよくわかりません
この場合、どこで並列処理(並列化)をしているのでしょうか?

597 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:35:35 ]
Bにも子供たちが…

598 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:46:07 ]
てことは……

深さ0(? 現局面のこと)で指し手を列挙して
おのおのの指し手について並列するのがrootでsplit

深さ0で指し手を列挙したあとその指し手の1つをまず取り出して
そこからの指し手(深さ1以下の指し手)について並列するのがrootでないsplit

ってことですか?

実際の方法論としては
たとえば候補手が50個並んでいて
CPU1が候補手aを、CPU2が候補手bを読んでいって
先に終わったほうが候補手cを読む……という「仕組み」自体はいっしょで
それをrootでやるかそうでないかだけが違う(というかYSS議論では違ってた)
ということでしょうか?

599 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:48:08 ]
>>598
深さ0で指し手がA0、B0、C0と3つあるとすると、今のプログラムは
A0の手を調べるのに全体の50%の時間を使ってしまいます。
そこで、A0の探索が終わった後に、B0、C0の2つの手を並列に探索します。
その方がA0の探索の結果を使えるので効率がいいためです。

A0の手の下にはA01、A02、A03の3つの手があるとすると、
A01の手を調べるのにこれまた50%の時間がかかります。
そこで、A01の探索が終わった後にA02、A03の探索を並列に行います。

こうやって延々続いていきます。
深さ0でも並列に探索するのが「rootでsplit」で
深さ0でのみ並列に探索しないのが「rootでsplitしない」です。
「rootでsplitしない」場合でも深さ1、深さ2、、、、ではsplitします。

600 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 10:33:34 ]
並列化ド素人の自分だが
Aspiration searchの真ん中の値で二分すれば
単純に二倍速くなりそうという感じは受ける。
ちょっと試せないので分からないけど。

ボナンザも歩の交換値2つぶんでAspiration searchをやってるらしいので。。

やっぱり問題はその次からの一回の探索を分ける方法だねえ。



601 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 11:08:15 ]
>>599
なるほど・・・
ありがとうございました

602 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:38:42 ]
>>600
お前コンピュータ将棋もど素人だろ。
ウィンドウを2分割すれば探索ノードもキレイに2分割できると思ってる?

603 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:47:26 ]
逆に他の手法はきれいに二分割できるの?やろうとしてるの?

604 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:43:40 ]
ただのPVS使ってるが少なくとも600のやり方よりは効率がいい。
ついでに書くと、MTD(f)の探索木みれば600がいかに効率悪いかわかる。
まぁ、俺は選手権の対局より強化学習の方を高速化したいから、並列探索は手抜きだがな。

605 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:49:22 ]
書き忘れてた。>>604のPVSはPV Splittingの方。

606 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:30:13 ]
あーなるほど、2つほど勘違いしてた。
600をやって他もできると思ってたら、できないねえ。
ノード数が二分できないのではなく、ノードが二分できないのか。
同じ局面を二回作ってるから二で割って一と。

607 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:44:07 ]
そーゆー事だ。

608 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:48:54 ]
>>599に補足すると、「rootでsplitする」場合だと、B0とC0を並列に探索するのでB0,C0の評価値が求まるまでの時間は長くなる。
「rootでsplitしない」場合だと、B0の子ノードOR孫ノードORもっと先のノードで並列化するので、B0の評価値は「rootでsplitする」場合より速くも止まる。
んで、仮にA0の評価値<B0の評価値だと、B0の探索終了時に「B0は(最善手ではないかもしれないが)少なくともA0よりは良い」と分かる。
なんで、「rootでsplitしない」場合は、「仮の最善手」が速く決まる可能性が高い(YSSの掲示板だと「見切り発車」とか表現してた)から、思考時間に制限がある場合にちょっとお得、と。

609 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:49:53 ]
すまん、二行目の「も止まる」は「求まる」だった。
死んできます。

610 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:58:06 ]
まあ、そんなに簡単なら話にも出てこないか。
でも並列化ってイメージしにくいような気がする。
頭を両手で同時に洗うのは並列化?



611 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:31:48 ]
もちろんそうだが,タスクの分割が自明な例だな

612 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:04:11 ]
例えばフライを揚げる時、衣付ける人と揚げる人の二人でやる事あるだろ?
そういうのが並列処理。

613 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:19:45 ]
その例えは誤解の元

614 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:52:42 ]
>>612
それはCPUのパイプラインだ。
並列処理なら、フライパンを二つ用意しなきゃ。

もっとも、将棋の場合は揚げなくてもいいものがあるから、
二つ用意しても倍は速くならないのだ。

615 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:54:02 ]
>613
どういう点が…と聞いてみようと考えたら分かった。
>612の例えは「並列処理」と言うより「パイプライン処理」だ。

616 名前:615 mailto:sage [2008/02/13(水) 19:54:54 ]
あ、先に言われてしまったw。

617 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:06:09 ]
パイプライン処理も並列処理みたいなもんでしょ。
依存関係があっても適用できるわけだし

そういう細粒度の並列処理を
ソフトウェアでうまく書く方法ってある?

手の生成→並べ替え→手を打つ
     手の生成→並べ替え→手を打つ
          手の生成→並べ替え→手を打つ

手を打たないと、次の手の生成ができないから無理か orz




618 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:22:52 ]
>パイプライン処理も並列処理みたいなもんでしょ。
ぷぎゃー

619 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:41:25 ]
いや、言いたいことはわかるよ

620 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:51:24 ]
>617
普通のPCハードウェア(CPU)じゃ無理だね。
パイプライン処理(それも将棋専用の)が可能なCPUじゃないと。

だから「A級リーグ指し手1号」と言う名前で専用プロセッサを
FPGA使って開発してる人が居るわけで。



621 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:28:27 ]
パイプラインによるオーバーラップさせた処理は並列処理の一種

622 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:31:21 ]
マルチコア環境ではハードでなきゃ無理ということはないと思う
例えばPS3/Cellにはそういう形(パイプライン)の並列処理の枠組みが用意されてる
もちろんアルゴリズムは自分で考えるのだが

623 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:07:21 ]
>622
へー、CellB.E.(SPU?)にそんな仕組みがあるの?
単なるSIMD演算器がさらに8個並列で存在するだけかと思ってた。

個々のSPU内の演算器を自分好みのパイプラインに仕立てられるのか?

624 名前:623 mailto:sage [2008/02/14(木) 19:37:44 ]
>622
もしそういう機能が本当にあれば非常に興味深い(使ってみたい)ので
どのドキュメントに載っていてどんな名前で呼ばれている機能か教えてくれ。

「Cell Broadband Engine アーキテクチャ」Ver1.01 (by ソニー)
をざっと眺めてみたが見つけられなかった。

625 名前:623 mailto:sage [2008/02/14(木) 20:06:15 ]
>622
もしかしてSIMD演算機能あるいはSPUを仮想化してマルチスレッド
ソフトウェアを走らせる機能を(ハードウェア)パイプライン機能と
混同してない?

普通の(IntelやAMDのx86)CPUもある種のパイプライン(スーパースカラー)
機能はあるけどプログラマが意識的(明示的)に操れるわけじゃないし。

626 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:11:56 ]
622じゃないけど、

PS3のCellで囲碁をパイプラインってこんなの?
www.geocities.jp/hideki_katoh/publications/gpw2007/gpw07-private.pdf

αβ探索じゃなくて、モンテカルロならパイプライン可能かもな
要はスレッド間の同期をとるだけじゃん


627 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:20:01 ]
>>625 スーパースカラーはパイプラインじゃないよ

フェッチ→デコード→演算→レジスタ書き出し
     フェッチ→デコード→演算→レジスタ書き出し
          フェッチ→デコード→演算→レジスタ書き出し
               フェッチ→デコード→演算→レジスタ書き出し

こういうのがパイプライン。
スーパースカラは複数の命令を同時に実行できる機能


628 名前:623 mailto:sage [2008/02/14(木) 21:20:17 ]
スレッド間同期とパイプライン処理は違うでしょ?

629 名前:623 mailto:sage [2008/02/14(木) 21:27:37 ]
>627
スーパースカラー=パイプラインじゃないけど、現在主流のCPUで言う
「スーパースカラー」はパイプライン処理が前提なんだけど。

すなわち複数命令を(同時実行できるものは)同時発行しておいて
さらにそれらをパイプライン化された処理装置に叩き込む。

詳細はWiki等を参照してくれ。

630 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:30:02 ]
どの命令が並列処理できないかコンパイル時点で分かるよね?



631 名前:623 mailto:sage [2008/02/14(木) 21:34:30 ]
>630
??? 何が言いたいの?
コンパイラに並列化を任せて明示的に(機械語レベルで)複数命令を
並列実行するならVLIWアーキテクチャだね。Itaniumみたいな。


632 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:59:56 ]
ちなみに普通の(VLIWでない)CPUはコンパイラが並列処理可能な
命令を見つけたとしてもそれをマシン(CPU)に伝える手段が無い。

633 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:37:59 ]
さらにちなみにベクタープロセッサ(ベクター型CPU)はひとつの
演算処理(たいていは積和算)そのものを複数のステージに細切れに
分けてパイプライン処理する。したがって同じタイプの演算命令が
次々と間を空けずに来る事が前提。

なのでベクター(行列)の処理に向くと言うか、それにしか向かない。

634 名前:622 mailto:sage [2008/02/15(金) 02:16:07 ]
およよ,思いっきり勘違いされた
>マルチコア環境ではハードでなきゃ無理ということはないと思う
と書いた時点でソフトの枠組みの話をしてることが分かると思ったのだが
分かり難くてスマソ

635 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:11:57 ]
>634
いいたいことは分かった。
スレッド同士のバケツリレー的なことを API でサポートしてるってことね。きっとイベントキューとかメッセージボックスとか使うんでしょ。
って >622の文脈であの書き方じゃわかるわけねーよ!

636 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 19:54:51 ]
俺は使ったことがないが,API より上のレベル,
フレームワークが提供されていると聞いている
>じゃわかるわけねーよ!
読み直してみると確かに分かり難い.改めてすまんかった

637 名前:623 mailto:sage [2008/02/15(金) 22:45:43 ]
やっぱりソフトウェア(開発ツール)レベルでパイプライン(的)
処理をサポートする枠組みがあると言う事だったのか。

>634を読んでしばらく考えてようやく意味が分かったよ。

確かにCellのSPUならマルチスレッド(マルチコア処理)で
パイプライン(的)処理をする仕組みを作りやすいかも知れないな。
キャッシュなしのローカルストレージのみで動くから
インストラクションの実行時間を確実に見積もれる。

そういう話を聞くと>617が書いてるようなパイプライン処理を
Cell(PS3)上で実現できないか、ちょっと考えてみたくなるな。
タスクをそれぞれ均等な実行時間を持つステージに分割できるか、
通信オーバーヘッドがどれくらいあるかが問題だけど。

638 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:00:36 ]
概要レベルだが
ttp://research.cesa.or.jp/pdf/shiryo6-2-2.pdf
にCellの並列化のPipelineモデルとかStreamingモデル等の話が載ってる
(日本IBMの東京基礎研の人の講演)

639 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:43:39 ]
>>638 THX 勉強になった

>>626 のPDFを見ても、cellってMBOXでSPUが通信できる仕組みみたいだねえ

ハードのパイプラインはクロック同期と思うが、
ソフトでも負荷の無い同期方法ってないもんか?
Stramingモデルってのが面白かった


640 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:16:34 ]
>負荷の無い
ってどういう意味?
libspe2 には mbox と signal しか用意されてないけど
自分で作るのもあり



641 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 11:30:35 ]
>>639
ハードウェアのクロック同期だって負荷があるだろ。
1クロックよりずっと短い処理だってクロック同期を待たなければならないんだから。
それでもCISCの頃よりは計算資源のアクティブ率は上がった。
ソフト側も同様にプロセッサの稼働率を上げていけばよい。

642 名前:デフォルトの名無しさん [2008/03/18(火) 10:22:07 ]
保守

643 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:05:55 ]
4/6(日)開催予定のオープン戦案内メールをもらった。
しかしソフトはまだ全然出来ていない。
将棋を指す骨組みと通信部分だけくらいは何とかその日までに
完成させて一回は通信対戦テストをしておきたいのだが。

このままじゃ、ぶっつけ本番になってしまいそうだ。

644 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:46:00 ]
オープン戦に間に合わなければ、
wdoorでテストしておけば?
CSAの対局サーバーとは細かい違いはあるようだが……

がんばれ



645 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:05:20 ]
あげ

646 名前:デフォルトの名無しさん [2008/03/23(日) 13:05:40 ]
てなかった

647 名前:デフォルトの名無しさん [2008/03/23(日) 15:10:42 ]
ボナンザについて解説してるサイトがあったら教えてください><

648 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:55:11 ]
>>647
作者のサイトの GPW 2006 発表資料 には目を通した?
あの説明で何かわからないことある?

649 名前:647 mailto:sage [2008/03/23(日) 17:44:26 ]
>>648
見てなかったです.
読んでみます.
サンクスです.

650 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 23:56:08 ]
>648
あれ読んでも具体的に何と何を入力パラメータとして
選んだのか今一良く分からないんだよね。

各駒種に対してその位置(升目)ごとに重み付けしていって、
それを2個以上の駒の位置関係にまで広げていったら、
あっと言う間にパラメータは1万個どころか百万個以上に
なりそうだし、学習を進めると結局、棋譜に現れたもしくは
探索済みの特定の局面に評価値を与えるだけになりそうな気が。

つまり一般化能力なんか全く無さそうな気がするんだが、
私が何か勘違いしてるのかね?
コンピュータ将棋に詳しくないために。



651 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:38:13 ]
>>650
その論文読んでないけど、テレビでやってたやつ見た限りだと
その発想そのままだと思う。

ボナンザの初期バージョンでは数手先まで読むように拡張してみたところ
うまく読み取れない局面があることがわかった。

そこで、ある程度(?)評価の悪い枝についても読むようにしたところ
かなりよくなった。

完全に総当りじゃなくて、ある程度評価がいい手の中でも
多少悪いぐらいでは枝狩をしない
また、相手の手版のときに、多少悪いぐらいの手をさしてくることを
考慮して読んでおくことで、時間を有効に使う

一般的にどうこうするっていうのではなくて
特定の場合に愚直な実装して、枝狩りの閾値さげたら
割とうまくいきました っていう感じだと思う。
他の検索系のやつもそうだけど
この手の総当りが必要そうなものについて、愚直に実装して
動かしてみたら案外うまくったってのが、最近の傾向じゃないかな
人間があーだこーだ考えるよりPCに考えさせたほうが
早いっていう。

だから一般化というより、ある特定のルールのときに
CPU時間を有効に使えるように変えてみたら
アルゴリズムは今までとほとんど同じだけど
勝率があがりました って思ってるけどこれも違うかな?
あくまで素人の意見なんですが。


652 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:16:23 ]
>>650
> それを2個以上の駒の位置関係にまで広げていったら、

広げない。

将棋は、自玉、敵玉に対する位置関係は重要だが、それ以外の2駒の相対的な位置関係は
あまり重要なゲームではないからだ。

例えば以下の記事が参考になるだろう。
d.hatena.ne.jp/yaneurao/20080406

ただし、銀の退路が歩で遮られていないかだとか、歩越しになっていないかだとかは重要なので、
Bonanzaでもそこは考慮に入れていたはず。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef