俺主催囲碁プログラミングコンテスト

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
NGNG
俺に勝てたら、賞金が出ます
0218デフォルトの名無しさん
垢版 |
NGNG
>>216
興味を広げる事はいいことだ。
囲碁のルールをまず覚えよう。

ところで、ニューラルネットは専門的じゃない?
俺も勉強しないとな。
0220ikuoに「変な奴」いわれましたけど
垢版 |
NGNG
ikuo タンか shigekiタン て、それ目指してなかったっけ
0221ikuoに「変な奴」いわれましたけど
垢版 |
NGNG
toshioタンも囲碁好きだったとか聞いたな
0222207
垢版 |
NGNG
>ここで粘着な議論して論破するかい? >>207
論破したいけど、なんの議論する?
粘着とか言ってるびびり君が多くて
最近議論してないからな。

>>202
>文面からして本人なのがミエミエなんだけど。
負け犬の遠吠えかぁ・・・・
しかも、俺197になってるし(嘲笑
0223202
垢版 |
NGNG
>>217
なにそれ?

>>218
>>219のサイトで囲碁覚えてみようかな。
ニューラルネットって脳のシステムをコンピュータで再現するんだっけ?
専門的だし、面白そう。

>>222
違っているとしたら、全く同じ性格の人が2人いるってことか?
だいたい、ちょっとした雑談に勝ち負けなんてないだろ。
自分に否定的なレスをした人は即負けということか?
普段から自分にレスした人全てにそうしてるの?

釣り師ならともかく、違うならそういうけんか腰のレスはやめようよ。
俺は囲碁知らないからあなたに役立つレスはできないけど。

それと、>>202の発言訂正するけど、何のアドバイスが欲しいかきちんと書いてたね。
0224デフォルトの名無しさん
垢版 |
NGNG
>>222
おいおい、議論という狭い世界に引き籠って勝ったとか負けたとか騒いでるの
はごく一部の人間だということにまだ気付かないのか?
0225デフォルトの名無しさん
垢版 |
NGNG
誰も専門的なことを話してないのに、どうやって知識の差なんてわかるんだ?


0226デフォルトの名無しさん
垢版 |
NGNG
厨房晒しageして面白いか?
0227202
垢版 |
NGNG
>>225
なぜ>>215が何度もニューラルネットとかいっているのかと思ってたんだけど、
もしかしてその部分を>>197に対してのものだと思ったから?
そうじゃなくて、あのスレの164-207ではってことだよ。

そう思っているんならはっきりと言ってくれればいいのに。
俺、鈍感だったな(w
0228デフォルトの名無しさん
垢版 |
NGNG
なんだ202がアホなんだね
俺、鈍感だったな(w
0229202
垢版 |
NGNG
>>228
オウム返ししかできないの?
0230デフォルトの名無しさん
垢版 |
NGNG
煽りにマジレスですか?
論破された厨房は粘着ですた、と。
0231デフォルトの名無しさん
垢版 |
NGNG
>文面からして本人なのがミエミエなんだけど。
本人って誰?
0232202
垢版 |
NGNG
>>230
それは煽ってるの?
0234デフォルトの名無しさん
垢版 |
NGNG
反応はや(藁
0235デフォルトの名無しさん
垢版 |
NGNG
なんで202は164にコンプレックス持ってるんだ?
0236デフォルトの名無しさん
垢版 |
NGNG
論破(プ
0238202
垢版 |
NGNG
>>234
テレビと実況スレ見ながら、ちょくちょくこのスレを確認しているから(w
0239202
垢版 |
NGNG
>>235
別にコンプレックスなんて持ってないよ。
持ちようがないし。
0240202
垢版 |
NGNG
>>237
なんだかんだいって、楽しんでいる面もあるし
0242デフォルトの名無しさん
垢版 |
NGNG
>そう思っているんならはっきりと言ってくれればいいのに。
言語障害?
0243202
垢版 |
NGNG
>>241
囲碁プログラミングスレらしいけど(w
0247デフォルトの名無しさん
垢版 |
NGNG
おまえバカだろ?
どう読んでも、失礼な態度でせまって行ったのは
お前だと思うが。
最後に囲碁わかりませんと、ネタか?
なんでそんなに反応してるんだ?
やっぱり、コンプレックスか論破なのか?
0248202
垢版 |
NGNG
>>247
テレビと実況スレ見ながらちょくちょく確認して、俺にレスがあれば返しているだけだよ。
それに>>202は失礼だとは思わないけど。
0249デフォルトの名無しさん
垢版 |
NGNG
コンプレックスアゲ
0250デフォルトの名無しさん
垢版 |
NGNG
202あげ
0251デフォルトの名無しさん
垢版 |
NGNG
だれか囲碁作ってみてよ
0252デフォルトの名無しさん
垢版 |
NGNG
保守
0253プロの逝って良しの1 ◆MvRbZL6NeQ
垢版 |
NGNG
評価関数難し過ぎ
0254デフォルトの名無しさん
垢版 |
NGNG
難しいというより、無理
0255デフォルトの名無しさん
垢版 |
NGNG
ようするに手を全部データベース化して1手づつ検索かければ必勝なんだろ。
全部の手をデータベースにすんのって何バイト必要なんだろ?
20*20*〜〜〜〜〜〜???わかんね
0256デフォルトの名無しさん
垢版 |
NGNG
3^(19*19) > 2^400 = 1024^390 > 10^(3*390)
単純計算すると
0が1000個くらいつくのかな?
0257デフォルトの名無しさん
垢版 |
NGNG
囲碁ってルールの実装がめちゃムズ
コウが組み込めない。
0259デフォルトの名無しさん
垢版 |
NGNG
全部記録しておけばいいの?
それって非効率的な気がして。
0262minikat
垢版 |
NGNG
コウは日本ルールとスーパーコウルールなら読む深さが違うし、
スピードアップにどんなアルゴリズムを使うかで議論があるでしょう。
AI囲碁のDavid Fotlandはシンプルコウルール判断(日本/韓国?)で充分といっていますが。
普通はHashで保存した局面をさかのぼり同一局面をチェックかな?
場所とか1個取ったとかの条件判断はこんがらがりますね。


0263デフォルトの名無しさん
垢版 |
NGNG
>>262
ハッシュ関数はどんなのを使えばいいの?
0264デフォルトの名無しさん
垢版 |
NGNG
スピードアップにどんな意味があるんだろうか・・・・
0266デフォルトの名無しさん
垢版 |
NGNG
評価関数+αβ探索だけでやっても
ほとんど何も上手くいかない・・・

なんで?
評価関数がダメなのかな。
0267デフォルトの名無しさん
垢版 |
NGNG
日本ルールに限定するなら、
抜いた石が一個の時にコウフラグを立てて位置を記憶すればいいのでは。
0269デフォルトの名無しさん
垢版 |
NGNG
1.最初にランダム数(32ビットか64ビット)を決め、着手(整数)とXOR
で次局面、戻るにはまたXORで戻る。チェスプログラマーの良くやる手です。
コウフラグ等よりも早いでしょう。コンピュータ囲碁の初期にZobristが
提唱しました。英文が各所にあります。検索はzobrisy keyで。
ただし、私は使っていませんが。
局所的にαβ探索、例えば詰め碁をやれば1命令でも早くしたいものです。
局面記憶もXORで簡単ですね。グラフィックの重ね合わせと同じでしょう。
私も10数年ぶりに囲碁プログラム再開しましたのでよろしく。
0270minikat
垢版 |
NGNG
269です。書き忘れましたが、5*5は完全読みで黒25目勝ちが読みきれたそうです。
次は7*7か?もちろん枝はうまく刈りますが。
0271minikat
垢版 |
NGNG
すみません。タイプミスです。
Zobristが正解。
0272デフォルトの名無しさん
垢版 |
NGNG
>>269
なんかできそうな、できなさそうな。
少し考えないと理解できなさそうです。

何も打たれていない状態のハッシュコードをSとして、
次局面のハッシュコードS'を、打たれた手をAとして
S' = S xor A
とするわけですね。

でも、石の配置が同じ局面でも
異なったハッシュコードを持ちそうな気がするのですが、
どうでしょうか?

石が一度も取られなければ、
S→A→S'→A'→S''
S''=S xor A xor A'=S xor A' xor A
という事は理解できますが。
0273minikat
垢版 |
NGNG
自分は使っていないが、コードの衝突は起こらないはず。
同一ゲームなら同じコードになります。あくまでそのゲーム
のチェック用ということで、新たなゲームでは最初の乱数が違うから
コードももちろん違う。3コウでも6手さかのぼるだけかな?
とにかくコウの場所、フラグ等は先読みからの手戻りで単純化できないから
不利と思います。
ボクもルールは自殺手などややこしいので日本ルールのみ考えています。
それから配列は1次元がたやすいですね。
0274デフォルトの名無しさん
垢版 |
NGNG
>>273
とりあえず勘違いしてるかも。
そのやり方で作るのはハッシュコード。

使い方は、
ある時点までの局面をすべて保存しておく際に
ハッシュコードで区別しながら保存する。
history[board.getHashcode()%HASHSIZE].add(board)
で、次の一手を指した後の局面のハッシュコードを計算して
そこの配列?の中に同一局面があるかどうかを調べる。
あれば同型反復禁止で、そこには置けない。

xorは a xor b xor c.... = b xor a xor c....
なので
おそらく
石を取り除く時もxorをするのだと思う。
そうするると
同じ盤面であれば同じハッシュコードが作れる。
まあ、要するに
int getHashcode(int board[][]){
int start=0;
for(int i=0;i<board.length;i++){
for(int j=0;j<board[i].length;j++){
if(board[i][j]==black)start=start xor (i*j);
else if(board[i][j]==white)start = start xor (-i*j);
}
}
return start;
}
って事なんだけどね。
i*jの部分は工夫して作らないとだめだけど。
0275minikat
垢版 |
NGNG
コードと書いてあるので別に勘違いはしていません、と思います。
その後比較するのは当然。焦点はコードの出し方。
テーブルの保存方法やルールで後戻りが違ってくるのはプログラムで
変わる。言いたいのは別にXOR使わなくても局面を表現できる
整数値が違えばいいということ。もっといい方法があるかもね。
自分も最初は1個取ったとか場所がどうとか考えたがこれが最速で
簡単。自分はパターン照合の関係でつかっていない。
XORといえば 手番=手番 XOR 3ででる。黒1白2の場合。
手番=3−手番でも可だが。
もっといろいろ話しましょう。

0276minikat
垢版 |
NGNG
追加です。
274のコ−ドで気が付いたがgetHashcodeは盤面を全走査
していますが、現局面と現着手のXORだけでいいのでは?
最初に配列の位置に乱数を割り当てて1手(位置、石)のみXORをとる。
もう一度着手(位置、石)XORで前局面に戻る。
アゲ石処理でXOR消去はもちろん必要だが。XOR 1命令で再走査がいらないところに
値打ちがあるように思います。
コード書いていないだけに間違っていたらスマン。


0277デフォルトの名無しさん
垢版 |
NGNG
>コードと書いてあるので別に勘違いはしていません、と思います。
了解

>>274のコ−ドで気が付いたがgetHashcodeは盤面を全走査
結局のところは全走査する事で実現できる=手順によらない
という事を言いたかった。
実際は、
すべての局面を記録していくわけだけど、
その際、同時にhashcodeを生成してしまえばいいわけだよね。
石がとられたら、その分もxorで。

自分のは今のところ速度にこだわっていないので
これを実装するかどうかは未定かな。

今、考えてる事は、
探索の打ち切りとか、もっと深く読むとか。
0278デフォルトの名無しさん
垢版 |
NGNG
囲碁のプログラムをやっとの事で完成させて
19*19で動かしてみると
その大きさに愕然とする。
そして、ほとんどの人がやめていく。
0279デフォルトの名無しさん
垢版 |
NGNG
局地戦ならともかく、布石とかは相当厄介だと思われ。
0280デフォルトの名無しさん
垢版 |
NGNG
布石ぐらいだったらデータベースで何とかできそうな気はするけど。
やっぱり死活でしょう。
攻め合いとかコウとか。
0282デフォルトの名無しさん
垢版 |
NGNG
>>281
それはかなり高度な部類に入るかと・・・。
実際、それを生かすだけの棋力を持つプログラムは存在しないと思われ。
0283278
垢版 |
NGNG
定石データベース+αβ探索だけで囲碁を作って見て思ったんだけど、
人間の脳ってなんであんなにすごいんだ?
0284デフォルトの名無しさん
垢版 |
NGNG
囲碁は特に画面認識とか、人間の脳に向いている作業が多いからね。
しかし、αβということはまともに探索してるの?
それはすごいね。
0285デフォルトの名無しさん
垢版 |
NGNG
学習して、自ら改善するっていうプログラムじゃないんだよねぇ。
なら、実際に打ってみて足りない点を逐一カバーしていくってのが
いいと思うよ。
つーわけで、遊ばせてくださイ。ちゃんと報告するから。
            よろしく。
0286278
垢版 |
NGNG
2chネラーだという事がばれると
なんか恥ずかしいのでそれは勘弁して>>285

それに、弱すぎてやっても意味ない。

αβに関してだけど、現状の評価関数だとほとんどやっても意味ないかも。
コンピューター同士で対戦させて
どのくらい読みが的中するのかを調べたところ
打つ場所の残りが10箇所くらいになって
当たりだすくらい。

それに19*19だと
最初の幅優先探索がえらく時間がかかる。

それをふまえて、自分がどうやっているのか
検証してみたんだけど・・・・
0287デフォルトの名無しさん
垢版 |
NGNG
無料の囲碁のフレームワークってないですかねぇ。
ルールを組み込むのがすごく大変で。
0289デフォルトの名無しさん
垢版 |
NGNG
>>288
ありがと。
これでAI作りに専念できそうです。

まずは探索から実装してみます。
0290minikat
垢版 |
NGNG
ルールは狭義には、コウと自殺手判断ぐらい。厳密には終局計算を含む。
昔アップルIIの囲碁ソフトはウッテガエシが打てなかったよ。
返品しようとおもったがそれ以外なかった。
どのルールも1石の自殺手はできないがSSTルールやニュージーランドルール
は認めている。
日本ルールではセキは地にならないが、中国ルールではなる。
とにかく市販ソフトでもセキ判断は完全でないのでルールが完璧とは
いえないのでこちらまかせ。 
でもルール作りのハードルが高いならシチョウ、ゲタなんてもっと大変よ。
がんばってください。

0291minikat
垢版 |
NGNG
>>どのルールも1石の自殺手はできないがSSTルールやニュージーランドルール
は認めている。
スマン。表現がおかしい。
多石の自殺手を認めているという意味。
0292デフォルトの名無しさん
垢版 |
NGNG
ルールなんか 日本ルールに 決まってるだろ
0293デフォルトの名無しさん
垢版 |
NGNG
とりあえず五路地盤のを作ってみたら?
0295デフォルトの名無しさん
垢版 |
NGNG
もう少しにぎやかにならないかな。
0296デフォルトの名無しさん
垢版 |
NGNG
着手生成アルゴリズムってどんなのがあるの?
0298デフォルトの名無しさん
垢版 |
NGNG
候補手列挙を学習する方法ってない?
例えば、パターンだったら
探索した結果良いものを集めてデータベース化していくと。

でも、パターンだとマッチングが大変じゃない?
ある点が候補としてあげられるかは
その点の付近のパターンを、データベースで比較しなくてはならない。
ハッシュを使えばいいのかな。
0299デフォルトの名無しさん
垢版 |
NGNG
学習だったらプロ棋士の棋譜を使えばいいんじゃない?
たしか公開されてたはずだしね。

パターンマッチングの高速化はどうするんだろうね。
データベースをハッシュでまとめてしまえば高速で可能なような気もする。
完全一致から似ている形まで、とかなると難しそうだけど。

あと、単純なパターンだとうまくいかないかもね。
この石はシチョウで取られる、とか、ダメが2以上ある、とか
色々な情報をパターンの中に組み込む必要があるかも。
ここに打った場合の手順とかも。
0300デフォルトの名無しさん
垢版 |
NGNG
データがあっても、アルゴリズムがないとね(藁

似ている物まで探してくるのは無理だと思うなぁ。
似ているの基準から定義しないとわからんけど。

>あと、単純なパターンだとうまくいかないかもね。
候補を列挙するだけだからいいんじゃない?
あとは、それを探索するだけ。
0301minikat
垢版 |
NGNG
ハッシュよりも実プログラムでは2分木探索が速いという報告もありムヅ。
普通に照合するよりは何十倍か早いだろうけど。
パターンは骨格と肉付けがあり、20年前の同級生で様子が違ってもある程度
認識できるのと似ている。黒、白、空点と、黒白空点どちらでもいいというのが厄介。
rotationで8種類、反転で16種類ある。広さの問題もあるなあ。
人間は碁をやって入ればますます、パターン認識は早くなるが、機械は照合に
ドンドン時間が食われる。ここに根本的な問題ありだろ。
AI囲碁で2000くらい。最初手入力してたらしいが途中からBITMAPにして
グラフィックエディターで入力したらしい。うまいね。

0302デフォルトの名無しさん
垢版 |
NGNG
学習のアルゴリズムかぁ。
分からんね(w
完全一致で出現した回数とかなら簡単だけど。

大量の棋譜から学習で楽をしよう、というのは誰もが誘われる麻薬みたいな
もの?だが実際は少数のパターンを人間が自分で判断して打ち込んだほうが
精度の高いものが出来そうな気もする。
何より、プログラムがその手をなぜ打ったかを推理できるからね。
0303デフォルトの名無しさん
垢版 |
NGNG
>ハッシュよりも実プログラムでは2分木探索が速いという報告もありムヅ。
2分木にする時のキーとして、何を使うの?
それがハッシュコードなら
ハッシュテーブルの大きさによると思うよ。

似てる物を集めてくるのはちょっとつらいよね。

>だが実際は少数のパターンを人間が自分で判断して打ち込んだほうが
>精度の高いものが出来そうな気もする。
おそらくそうだと思う。
だから、外からのデータを与えるんじゃなくて
自分でデータを生成検証して、候補手を生成するアルゴリズムを
学習するようなものがいいね。
0304デフォルトの名無しさん
垢版 |
NGNG
あらかじめ、全ての手を計算しておいて、データベース化しておく。
データベースの構築には、膨大な計算力とディスクスペースが必要なので、
SETIのように分散処理で解決。
データベースができた後は、最善手のみが打てる。

一度プロジェクト起こしてみては?
それなりに金になると思うぞ。
あと、首謀者は地位と名誉も得られる。
0305デフォルトの名無しさん
垢版 |
NGNG
もし、それで碁の必勝法がみつかれば、歴史に名が残るね。
少ない資金で多大な効果が得られる、数少ないプロジェクト。
早い者勝ちだぞ。
0309デフォルトの名無しさん
垢版 |
NGNG
3^19^2 = 1350851717672992089 ≒ 10^18
1千万台(10^7台)のコンピュータを使えば、10^11回の演算で済む。
1台のコンピュータが1秒に3170回の演算が行えるとして、10年間。
現行の性能では難しいが、将来は可能になるかもしれない。
可能になった時点で、誰が先に演算を終えるか?
先に演算を始めた者に決まってる。
0310デフォルトの名無しさん
垢版 |
NGNG
オセロならもっと早く演算が終了する。
早い者勝ちだぞ。
ゲームを消滅させろ。
0311minikat
垢版 |
NGNG
>>2分木にする時のキーとして、何を使うの?
パターンをbit化すればいいのと違うかな?
>>ハッシュテーブルの大きさによると思うよ。
そうだね。やって見ないとわからない。ハッシュの計算や衝突の際の探索も時間がかかるし。
でも2,3千のパターンではアマ初段には間に合わない。
瀬越の手筋辞典や官子譜見たらとんでもない筋やパターンがでている。
NHK囲碁の解説聞いていても「これは筋ですねえ」といわれても、知らない、わからない
のが結構多い。筋の定義もムズだが、パターンとも共通性があるし。
コスミ自体は1種類しかないが、周りの状況でヨセからワタリ等等役目はゴマンと
ある。要するにパターンは目的を入れないと絵に描いたモチ。

0312デフォルトの名無しさん
垢版 |
NGNG
分散処理で計算する方法は考えたんだけどさ、
黒(自分)が最善手を常に打つとして、
白(敵)が最善かどうかわからない手を打つとすると
19*19では
(19*19-1)*(19*19-3)*(19*19-5)....となる。

これを300*300*300......(19*19-100)
と近似しても激しい値になる。
コレをどこへ保存すればいいのだろうか?
地球上のコンピューターをすべて集めてきても
保存できない。

>3^19^2 = 1350851717672992089 ≒ 10^18
コレ間違ってるよ。
3^(19*19) > 2^400
log10 2^10=3
log10 2^400 =120
まあ120桁はあるな。
0314デフォルトの名無しさん
垢版 |
NGNG
賞金 100円
みんな ガンバレ〜〜
0315デフォルトの名無しさん
垢版 |
NGNG
>>311
候補手といっても、いろいろなレベルがあると思う。
例えば、どの手を選んでも悪手にはならない
候補手の列挙から
どの手を選んでも良い手であるような
候補手の列挙から・・・

あるいは攻撃的な手だけを列挙できるようになるのも
有効だし
守備的な手だけを列挙できるようになるのも有効だね。

候補手が列挙できたら、あとは探索するのみ。
0316デフォルトの名無しさん
垢版 |
NGNG
今考えてるのは
精度の粗い候補手列挙システム
(つまり、悪手は切り捨てるけど良手は絶対に切り捨ててはいけない。
判定不能の物は残す)

高機能なαβサーチの組み合わせでの
アルゴリズムを作ろうと思ってる。

候補手列挙は、やっぱり周辺パターンのデータベースしか
ないのかな。

候補手列挙で一つ思いついたのは、
応手作成アルゴリズム。
相手の手を、どんな手なのか予測分類して
(2つに分類するなら、攻撃的か守備的か)
候補手を列挙する。

まあ、まだアイディアを練ってる段階だけど
0317デフォルトの名無しさん
垢版 |
NGNG
絶妙手をも切り落とさないシステムだと大変かもね。
そういう手は弱いレベルには悪手だから。
プログラムの棋力にふさわしい普通の手が10手から20手程度抽出できれば
十分じゃないかな。

囲碁はまだそれほど深く読めないので(シチョウは除いて)
探索手法自体の重要性は低いと思われ。

やはり最大の難関は評価関数かと。
地の判定から、石の連絡、強弱、空間の支配力、
この辺を適当に数値化しないといけないからね。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況