比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス
みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの
作り方がわからなくてつっかえているレベルです。
探検
【オセロ,将棋】ボードゲーム【囲碁,War】
レス数が1000を超えています。これ以上書き込みはできません。
1名前は開発中のものです。
03/07/10 00:10ID:6FQp6G+O03/07/10 00:46ID:c+Tl/JM7
03/07/10 00:48ID:c+Tl/JM7
もうひとつ逝っておくと、「私は云々」みたいなことは、>>1に書くべきではないな。
単発質問スレだとおもわれるぞ?(もし真性単発質問スレだったらスマソw)
単発質問スレだとおもわれるぞ?(もし真性単発質問スレだったらスマソw)
4名前は開発中のものです。
03/07/10 06:47ID:ZYbxAUmJ ありがとうございます。単発というわけでなく話題提供のつもりでしたが
まぎらわしかったですね。すみません。ボードゲームに関するいかなる
話題でも参考になるのでそういう風に解釈してください。
あと2でいわれたテキストベースというのは具体的にどのようなことを
すればいいのかもう少し詳しく教えてくださいませんか。当方c言語を
はじめて一ヶ月。BCCだけでとりあえず思考ルーチンだけはめどが
たってきた程度で表示はまったくの素人なのです。
まぎらわしかったですね。すみません。ボードゲームに関するいかなる
話題でも参考になるのでそういう風に解釈してください。
あと2でいわれたテキストベースというのは具体的にどのようなことを
すればいいのかもう少し詳しく教えてくださいませんか。当方c言語を
はじめて一ヶ月。BCCだけでとりあえず思考ルーチンだけはめどが
たってきた程度で表示はまったくの素人なのです。
5名前は開発中のものです。
03/07/10 21:54ID:661ntdMC6直リン
03/07/10 22:12ID:NVbp/PY17_
03/07/10 22:44ID:MmlDAKc103/07/10 23:37ID:c+Tl/JM7
>>4
盤面の状態はどうやって持ってるの?
盤面の状態はどうやって持ってるの?
91
03/07/11 02:32ID:tBkU7GoV ミニゲームなのであらゆる可能なポジションに対しそれが最善で
何手で詰むかまたは引き分け(ドロー)かの情報を得ることができますので
それを一度作ってデータベースとしてそれを参照しながら(数MBになる予定)
次の一手を考えるようにしたいと思ってます。まだ途中ですが。
何手で詰むかまたは引き分け(ドロー)かの情報を得ることができますので
それを一度作ってデータベースとしてそれを参照しながら(数MBになる予定)
次の一手を考えるようにしたいと思ってます。まだ途中ですが。
03/07/11 03:08ID:h6ee7c7G
>>1
Cのコンソールでやるなら、オセロ、囲碁なら、●〇+で
将棋は歩v等か外字エディタとか。僕は今時間が空いているので、
コンソール×外字エディタの将棋をウインアプリに作り直している。
Win32APIにCreateFont関数があるから、それで逆の文字も表示できる。
一番良いのはやっぱりビットマップを用意して表示する。
参考に7行プログラミングで作られたもの。Cコンソール。
http://pc.2ch.net/test/read.cgi/tech/984182993/372
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
>>2さんが言っているような感じ。思考ルーチンができるなら、
めちゃ強いのを作ってから、グラフィカルなのに入っても遅くない。
Cのコンソールでやるなら、オセロ、囲碁なら、●〇+で
将棋は歩v等か外字エディタとか。僕は今時間が空いているので、
コンソール×外字エディタの将棋をウインアプリに作り直している。
Win32APIにCreateFont関数があるから、それで逆の文字も表示できる。
一番良いのはやっぱりビットマップを用意して表示する。
参考に7行プログラミングで作られたもの。Cコンソール。
http://pc.2ch.net/test/read.cgi/tech/984182993/372
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
>>2さんが言っているような感じ。思考ルーチンができるなら、
めちゃ強いのを作ってから、グラフィカルなのに入っても遅くない。
03/07/11 11:04ID:JYguR8yG
いきなり7行オセロかよ!初心者にはつらそう。
まぁ、適当にサンプルを書いておこう。
syouhai_hantei()
cpu_no_sikou_routine()
の二つの関数さえ書けば、完璧な囲碁ソフトだぜ!
ちなみに、↓は囲碁だけどbanmen,koma,syohaiを変えれば、将棋でもチェスでも同じ。
------------------
int banmen[19][19] = {{0}}; /* ←グローバル変数 */
char *koma[] = {"+", "●", "○"};
char *syohai[] = {"", "●の勝ちです", "○の勝ちです", "引き分けです"};
int i, j, r;
while (1) {
for (i = 0; i < 19; i++) {
for (j = 0; j < 19; j++) {
printf("%s", koma[banmen[i][j]]);
}
printf("\n");
}
まぁ、適当にサンプルを書いておこう。
syouhai_hantei()
cpu_no_sikou_routine()
の二つの関数さえ書けば、完璧な囲碁ソフトだぜ!
ちなみに、↓は囲碁だけどbanmen,koma,syohaiを変えれば、将棋でもチェスでも同じ。
------------------
int banmen[19][19] = {{0}}; /* ←グローバル変数 */
char *koma[] = {"+", "●", "○"};
char *syohai[] = {"", "●の勝ちです", "○の勝ちです", "引き分けです"};
int i, j, r;
while (1) {
for (i = 0; i < 19; i++) {
for (j = 0; j < 19; j++) {
printf("%s", koma[banmen[i][j]]);
}
printf("\n");
}
12続き
03/07/11 11:05ID:JYguR8yG do {
printf("縦?\n");
scanf("%d", &i);
printf("横?\n");
scanf("%d", &j);
} while(i < 0 || i >= 19 || j < 0 || j >= 19);
banmen[i][j] = 1;
r = syouhai_hantei();
if (r != 0)
break;
cpu_no_sikou_routine(&i, &j);
banmen[i][j] = 1;
r = syouhai_hantei();
if (r != 0)
break;
}
printf("%sの勝ちです。", syohai[r]);
printf("縦?\n");
scanf("%d", &i);
printf("横?\n");
scanf("%d", &j);
} while(i < 0 || i >= 19 || j < 0 || j >= 19);
banmen[i][j] = 1;
r = syouhai_hantei();
if (r != 0)
break;
cpu_no_sikou_routine(&i, &j);
banmen[i][j] = 1;
r = syouhai_hantei();
if (r != 0)
break;
}
printf("%sの勝ちです。", syohai[r]);
13間違い
03/07/11 11:06ID:JYguR8yG ↑
cpu_no_sikou_routine(&i, &j);
banmen[i][j] = 2;
だった。ごめ。
cpu_no_sikou_routine(&i, &j);
banmen[i][j] = 2;
だった。ごめ。
14名前は開発中のものです。
03/07/16 10:39ID:/YDbp02a 話題もないですし対戦でもしてみます?
一応プラットフォームとしては
リバーシ
http://dahlia.xrea.jp:8080/hikky/index.php?%5B%5B%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%BB%A8%C3%CC%2FReversi%5D%5D
もありますしプラットフォームから作るのもおもしろいんじゃないかと
一応プラットフォームとしては
リバーシ
http://dahlia.xrea.jp:8080/hikky/index.php?%5B%5B%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%BB%A8%C3%CC%2FReversi%5D%5D
もありますしプラットフォームから作るのもおもしろいんじゃないかと
03/07/24 15:23ID:WvOHnIpg
放置されてるスレなんで上げてみた。
いいんじゃね、東大将棋とかがどうかしましたかって言うのは無理だけど
なんか作りたいね。
いいんじゃね、東大将棋とかがどうかしましたかって言うのは無理だけど
なんか作りたいね。
16名前は開発中のものです。
03/07/24 15:31ID:KoHs+Voy http://www.k-514.com/sample/sample.html
_、_ 癒し系か・・・
( ,_ノ` )y━・~~~ 見たらどうだ・・・
_、_ 癒し系か・・・
( ,_ノ` )y━・~~~ 見たらどうだ・・・
17名前は開発中のものです。
03/07/24 16:03ID:xMvniY6D http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=ookazujp
http://www.39001.com/cgi-bin/cpc/welcome.cgi?id=ookazujp
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000002&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000003&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000017&pid=p000000244
http://www.adultshoping.com/index.cgi?id=1057809839
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000008&pid=p000000244
!!!!! ━━━━━━(゚∀゚)b━━━━━━ グッジョブ!!!!!
http://www.39001.com/cgi-bin/cpc/welcome.cgi?id=ookazujp
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000002&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000003&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000017&pid=p000000244
http://www.adultshoping.com/index.cgi?id=1057809839
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000008&pid=p000000244
!!!!! ━━━━━━(゚∀゚)b━━━━━━ グッジョブ!!!!!
03/07/25 00:23ID:fakPmJ3A
結局>>1はどうなったの?
19名前は開発中のものです。
03/07/29 07:57ID:g9GIpNGm 1より森田さんはどうなったの?
2020
03/09/27 13:02ID:BQIe1Jzq JAVA、将棋、行ってみます。
方針は、1億局指す、すべての局面の勝率を記憶する。
public class example3{
public static void main(String arg[]){
//
int banmen[][] = new int[9][9];
char koma[] = {'+','F','O','+','f','o'};
String syohai[] = {" ","先手の勝ちです","後手の勝ちです","引き分けです"};
int i, j, r;
banmen[0][4]=5;banmen[2][4]=4;
banmen[6][4]=1;
banmen[8][4]=2;
{
for (i = 0; i < 9; i=i+1) {
for (j = 0; j < 9; j=j+1) {
System.out.print(koma[banmen[i][j]]);
}
System.out.print("\n");
}
}
}
}
方針は、1億局指す、すべての局面の勝率を記憶する。
public class example3{
public static void main(String arg[]){
//
int banmen[][] = new int[9][9];
char koma[] = {'+','F','O','+','f','o'};
String syohai[] = {" ","先手の勝ちです","後手の勝ちです","引き分けです"};
int i, j, r;
banmen[0][4]=5;banmen[2][4]=4;
banmen[6][4]=1;
banmen[8][4]=2;
{
for (i = 0; i < 9; i=i+1) {
for (j = 0; j < 9; j=j+1) {
System.out.print(koma[banmen[i][j]]);
}
System.out.print("\n");
}
}
}
}
21あぼーん
03/09/27 13:19ID:V9CFc5A8 あぼーん
2220
03/09/27 14:53ID:BQIe1Jzq 歩、香車、桂馬、銀、金、角、飛車、王、と金、成り香、成り桂、成り銀、竜馬、竜
pawn,lance,night,silver,gold,bishop,rook,oh,Tokin,yari,narikeiMa,argent,dragonHorse,dragon
で行く。
lnsgogsnl
.r.....b.
ppppppppp
.........
.........
.........
PPPPPPPPP
.B.....R.
LNSGOGSNL
pawn,lance,night,silver,gold,bishop,rook,oh,Tokin,yari,narikeiMa,argent,dragonHorse,dragon
で行く。
lnsgogsnl
.r.....b.
ppppppppp
.........
.........
.........
PPPPPPPPP
.B.....R.
LNSGOGSNL
03/09/27 15:33ID:GI1kgLEP
囲碁や将棋で一番アツいところは、コンピュータの思考ルーチンだと思う。
24_
03/09/27 15:38ID:8HTp6N1L ∋8ノノハ.∩ http://endou2.kir.jp/hankaku11.html#.2ch.net
川o・-・)ノ <先生!こんなのがありました!
http://endou2.kir.jp/hankaku04.html#.2ch.net
http://endou2.kir.jp/hankaku03.html#.2ch.net
http://endou2.kir.jp/hankaku10.html#.2ch.net
http://endou2.kir.jp/hankaku05.html#.2ch.net
http://endou2.kir.jp/hankaku08.html#.2ch.net
http://endou2.kir.jp/hankaku07.html#.2ch.net
http://endou2.kir.jp/hankaku01.html#.2ch.net
http://endou2.kir.jp/hankaku06.html#.2ch.net
http://endou2.kir.jp/hankaku02.html#.2ch.net
http://endou2.kir.jp/hankaku09.html#.2ch.net
川o・-・)ノ <先生!こんなのがありました!
http://endou2.kir.jp/hankaku04.html#.2ch.net
http://endou2.kir.jp/hankaku03.html#.2ch.net
http://endou2.kir.jp/hankaku10.html#.2ch.net
http://endou2.kir.jp/hankaku05.html#.2ch.net
http://endou2.kir.jp/hankaku08.html#.2ch.net
http://endou2.kir.jp/hankaku07.html#.2ch.net
http://endou2.kir.jp/hankaku01.html#.2ch.net
http://endou2.kir.jp/hankaku06.html#.2ch.net
http://endou2.kir.jp/hankaku02.html#.2ch.net
http://endou2.kir.jp/hankaku09.html#.2ch.net
2520
03/09/27 15:56ID:BQIe1Jzq >>23
もち、ろん、です。
名人が最善手と次善手しか指さないと仮定すれば、1兆局面を用意
すれば、80手まではOKになる。あとは森田将棋に頼む。
よもや3善手を指すような事はあるまいが、そのときは灯台将棋に引き継ぐ。
もち、ろん、です。
名人が最善手と次善手しか指さないと仮定すれば、1兆局面を用意
すれば、80手まではOKになる。あとは森田将棋に頼む。
よもや3善手を指すような事はあるまいが、そのときは灯台将棋に引き継ぐ。
26直リン
03/09/27 18:56ID:rs35jAW+2720
03/09/27 20:58ID:BQIe1Jzq public class example3{
public static void main(String arg[]){
int banmen[][] = {
{2,3,4,5,8,5,4,3,2},
{0,7,0,0,0,0,0,6,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{10,10,10,10,10,10,10,10,10},
{0,15,0,0,0,0,0,16,0},
{11,12,13,14,17,14,13,12,11}};
char koma[] = {'.','f','y','m','s','g','k','h','o',
'.','P','Y','M','S','G','K','H','O'};
String syohai[] = {" ","先手の勝ちです","後手の勝ちです","引き分けです"};
int i, j, r;
{
for (i = 0; i < 9; i=i+1) {
for (j = 0; j < 9; j=j+1) {
System.out.print(koma[banmen[i][j]]);
}
System.out.print("\n");
}}}}
public static void main(String arg[]){
int banmen[][] = {
{2,3,4,5,8,5,4,3,2},
{0,7,0,0,0,0,0,6,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{10,10,10,10,10,10,10,10,10},
{0,15,0,0,0,0,0,16,0},
{11,12,13,14,17,14,13,12,11}};
char koma[] = {'.','f','y','m','s','g','k','h','o',
'.','P','Y','M','S','G','K','H','O'};
String syohai[] = {" ","先手の勝ちです","後手の勝ちです","引き分けです"};
int i, j, r;
{
for (i = 0; i < 9; i=i+1) {
for (j = 0; j < 9; j=j+1) {
System.out.print(koma[banmen[i][j]]);
}
System.out.print("\n");
}}}}
03/09/28 11:11ID:yU8F/DmP
>>20さん
22の見ると、なんか将棋は素人っぽくてワロタ(悪い意味ではないです)
駒をテキスト表示するなら一文字で下記を使うと良いかも(下段は成り駒)
飛、角、歩、香、桂、銀、金、玉
竜、馬、个、仝、今、全
22の見ると、なんか将棋は素人っぽくてワロタ(悪い意味ではないです)
駒をテキスト表示するなら一文字で下記を使うと良いかも(下段は成り駒)
飛、角、歩、香、桂、銀、金、玉
竜、馬、个、仝、今、全
2920
03/09/28 12:58ID:JqB40bUM >>28
はじめて見るアイディアで参考になります。色携帯、アジアスタンダードには良いかもしれない。
敵方表現で4バイトは必要?
当方、敵駒含めても1バイトで表現したいので、大文字先手、小文字後手、
日本語成らず、英語(フランス語)成り、で。 改定版は
fymsgokh,plnagobr
チェス屋含めてインターナショナル。
はじめて見るアイディアで参考になります。色携帯、アジアスタンダードには良いかもしれない。
敵方表現で4バイトは必要?
当方、敵駒含めても1バイトで表現したいので、大文字先手、小文字後手、
日本語成らず、英語(フランス語)成り、で。 改定版は
fymsgokh,plnagobr
チェス屋含めてインターナショナル。
3020
03/09/28 14:42ID:JqB40bUM 試しに76歩、77歩を10億回まわして見た。P4、2.4Gで約10秒。
結構速いね。秒速100万手も夢ではない。 (劇刺で数十万手らしい)
'fymsgokh'は「フィムスゴコホ」と読む。タバコを吸うとスゴく咳き込む。
public class example3{
public static void main(String arg[]){
int banmen[][] = {
{2,3,4,5,8,5,4,3,2},
{0,7,0,0,0,0,0,6,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{17,17,17,17,17,17,17,17,17},
{0,22,0,0,0,0,0,23,0},
{18,19,20,21,24,21,20,19,18}};
char koma[] = {'.','f','y','m','s','g','k','h','o','p','l','n','a','g','b','r',
'.','F','Y','M','S','G','K','H','O','P','L','N','A','G','B','R'};
long i, j, r;
for (i=0;i<1000000000;i=i+1){
banmen[6][2]=0;
banmen[7][2]=17;
banmen[7][2]=0;
banmen[6][2]=17;
}
}}
結構速いね。秒速100万手も夢ではない。 (劇刺で数十万手らしい)
'fymsgokh'は「フィムスゴコホ」と読む。タバコを吸うとスゴく咳き込む。
public class example3{
public static void main(String arg[]){
int banmen[][] = {
{2,3,4,5,8,5,4,3,2},
{0,7,0,0,0,0,0,6,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{17,17,17,17,17,17,17,17,17},
{0,22,0,0,0,0,0,23,0},
{18,19,20,21,24,21,20,19,18}};
char koma[] = {'.','f','y','m','s','g','k','h','o','p','l','n','a','g','b','r',
'.','F','Y','M','S','G','K','H','O','P','L','N','A','G','B','R'};
long i, j, r;
for (i=0;i<1000000000;i=i+1){
banmen[6][2]=0;
banmen[7][2]=17;
banmen[7][2]=0;
banmen[6][2]=17;
}
}}
31局面表示
03/09/28 21:45ID:JqB40bUM 初期面:
's00000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
この派板にチェスはなかったのか。
's00000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
この派板にチェスはなかったのか。
03/09/28 21:52ID:JqB40bUM
'S0000000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
03/09/30 21:30ID:gZv5839q
困らないか、盤上の駒数を計算すれば、足りないものが持ち駒。
0S5210y4o1my1y2gs1g1f4f1ff4s1f4bm2F3F2FS3F2G1F2F2S3H2YMOG3MY
0:平手
S:つぎ、先手番
5:先手持ち歩5
2:後手持ち歩2
1:先手持ち角1
0:後手持ち角0
任意の局面から、100万分の1秒以内で合法的な手を指したい。
200行から400行のプログラムで達成できればなんとかなるか。
9一に自分の駒があるか
8一に、、、、、
3五に自駒あるか、yes
自駒は前にひとつ進めるか、yes
進む先は盤内空枡または敵駒か、yes
候補手決定、return
0S5210y4o1my1y2gs1g1f4f1ff4s1f4bm2F3F2FS3F2G1F2F2S3H2YMOG3MY
0:平手
S:つぎ、先手番
5:先手持ち歩5
2:後手持ち歩2
1:先手持ち角1
0:後手持ち角0
任意の局面から、100万分の1秒以内で合法的な手を指したい。
200行から400行のプログラムで達成できればなんとかなるか。
9一に自分の駒があるか
8一に、、、、、
3五に自駒あるか、yes
自駒は前にひとつ進めるか、yes
進む先は盤内空枡または敵駒か、yes
候補手決定、return
03/10/01 02:23ID:06jconaO
>>31-33
>'S0000000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
この暗号みたいな文字列が何を表わすのか教えて栗
>'S0000000000000000ymsgogsmy1h5k1fffffffff999FFFFFFFFF1K5H1YMSGOGSMY'
この暗号みたいな文字列が何を表わすのか教えて栗
35名前は開発中のものです。
03/10/01 02:39ID:JUQLzkMt >>34
まあ、なんとなく"ymsgogsmy"は"香桂銀金王金銀桂香"であろうことはわかるのだが。
まあ、なんとなく"ymsgogsmy"は"香桂銀金王金銀桂香"であろうことはわかるのだが。
36旧版
03/10/01 05:29ID:BGyx/9fV >>34
2日古い旧版ですが、
"S0000000000000000"
S:次の手番、先手
00:先手持ち歩
000000:先手その他持ち駒の数
00:後手持ち歩
000000:後手持ち駒
小文字英字:後手盤上駒
大文字英字:先手盤上駒
数字:連続空枡の数
のつもりでしたが、持ち駒については、盤上に足りないものだけを
表示すればよいことにした。
「何手目まで指したか」の情報も入れたほうが良いかな。
チェスプログラマからのアイディアですが、あちらは持ち駒がない。
2日古い旧版ですが、
"S0000000000000000"
S:次の手番、先手
00:先手持ち歩
000000:先手その他持ち駒の数
00:後手持ち歩
000000:後手持ち駒
小文字英字:後手盤上駒
大文字英字:先手盤上駒
数字:連続空枡の数
のつもりでしたが、持ち駒については、盤上に足りないものだけを
表示すればよいことにした。
「何手目まで指したか」の情報も入れたほうが良いかな。
チェスプログラマからのアイディアですが、あちらは持ち駒がない。
3734
03/10/01 20:24ID:IcaM+bMd >36
なるほどあの文字列はそういう風にゲームの状態を表していたんですね。
当方将棋やチェスのプログラムを組んだことがないのでよくわかりませんが
初期状態としてプログラムを実行するときの引数などに与えれば、テストを
行ったり詰将棋を解かせたりするときに便利そうですね。
ただちょっと人間が読むにはちょっと読みにくい形式なので、例えば次のような
感じにセパレータをいれてみたりして読みやすくしてはどうでしょうか?
先手番:00000000:00000000:ymsgogsmy/1h5k1/fffffffff/9/9/9/FFFFFFFFF/1K5H1/YMSGOGSMY
なるほどあの文字列はそういう風にゲームの状態を表していたんですね。
当方将棋やチェスのプログラムを組んだことがないのでよくわかりませんが
初期状態としてプログラムを実行するときの引数などに与えれば、テストを
行ったり詰将棋を解かせたりするときに便利そうですね。
ただちょっと人間が読むにはちょっと読みにくい形式なので、例えば次のような
感じにセパレータをいれてみたりして読みやすくしてはどうでしょうか?
先手番:00000000:00000000:ymsgogsmy/1h5k1/fffffffff/9/9/9/FFFFFFFFF/1K5H1/YMSGOGSMY
3820ふたまた
03/10/01 21:22ID:BGyx/9fV3920うまく出ない
03/10/01 21:49ID:BGyx/9fV ∨香 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨王 ̄ ̄∨桂∨香 後手:歩2
 ̄ ̄∨香 ̄ ̄ ̄ ̄∨金∨銀 ̄ ̄∨金 ̄ ̄
∨歩 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨歩 ̄ ̄∨歩∨歩
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨銀 ̄ ̄∨歩 ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄∨馬∨桂 ̄ ̄ ̄ ̄∧歩 ̄ ̄ ̄ ̄
 ̄ ̄∧歩 ̄ ̄ ̄ ̄∧歩∧銀 ̄ ̄ ̄ ̄ ̄ ̄
∧歩 ̄ ̄ ̄ ̄∧金 ̄ ̄∧歩 ̄ ̄ ̄ ̄∧歩
 ̄ ̄ ̄ ̄∧銀 ̄ ̄ ̄ ̄ ̄ ̄∧飛 ̄ ̄ ̄ ̄
∧香∧桂∧王∧金 ̄ ̄ ̄ ̄ ̄ ̄∧桂∧香 先手:角歩2
 ̄ ̄∨香 ̄ ̄ ̄ ̄∨金∨銀 ̄ ̄∨金 ̄ ̄
∨歩 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨歩 ̄ ̄∨歩∨歩
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨銀 ̄ ̄∨歩 ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄∨馬∨桂 ̄ ̄ ̄ ̄∧歩 ̄ ̄ ̄ ̄
 ̄ ̄∧歩 ̄ ̄ ̄ ̄∧歩∧銀 ̄ ̄ ̄ ̄ ̄ ̄
∧歩 ̄ ̄ ̄ ̄∧金 ̄ ̄∧歩 ̄ ̄ ̄ ̄∧歩
 ̄ ̄ ̄ ̄∧銀 ̄ ̄ ̄ ̄ ̄ ̄∧飛 ̄ ̄ ̄ ̄
∧香∧桂∧王∧金 ̄ ̄ ̄ ̄ ̄ ̄∧桂∧香 先手:角歩2
03/10/02 20:04ID:cBMmv4Dp
1人頑張ってる奴がいるな
コンピューター将棋スレッド11
http://game.2ch.net/test/read.cgi/bgame/1064575087/
おまいら最強の将棋プログラムしてみろよ part2
http://pc2.2ch.net/test/read.cgi/tech/1043246252/
コンピューター将棋スレッド11
http://game.2ch.net/test/read.cgi/bgame/1064575087/
おまいら最強の将棋プログラムしてみろよ part2
http://pc2.2ch.net/test/read.cgi/tech/1043246252/
41向こうはプロ
03/10/02 21:42ID:ud54yjB9 だれか、Cで10億回まわして。
42 ◆R/rLuLKeEI
03/10/03 22:14ID:6g0/L3Ad >>40
頑張ってますよ。
頑張ってますよ。
43データーベース
03/10/05 23:34ID:WQ0kK/U9 >>1
>c言語で作ったデータベースを使って人間と対戦できる将棋かチェス
データーベースはC,JAVA無関係なので、作りましょう。
まずは先手、機械、19手まで。
1:76歩
3:
14歩:xxx;24歩:xxx;34歩:xxx;44歩:xxx;
54歩:xxx;64歩:xxx;74歩:xxx;84歩:xxx;
94歩:xxx;32銀:xxx;42銀:xxx;32金:xxx;
42金:xxx;52金左:xxx;42玉:xxx;52玉:xxx;
......
>c言語で作ったデータベースを使って人間と対戦できる将棋かチェス
データーベースはC,JAVA無関係なので、作りましょう。
まずは先手、機械、19手まで。
1:76歩
3:
14歩:xxx;24歩:xxx;34歩:xxx;44歩:xxx;
54歩:xxx;64歩:xxx;74歩:xxx;84歩:xxx;
94歩:xxx;32銀:xxx;42銀:xxx;32金:xxx;
42金:xxx;52金左:xxx;42玉:xxx;52玉:xxx;
......
44データーベース
03/10/06 21:37ID:u0x9oIcm 1手目は76歩:77760
3手目は後手指手にかかわらず26歩:27260
13140:27260
23240:27260
33340:27260
...
91920:27260
5手目
13140,14150:26250
...
33340,53540:39480
33340,41320:69780
...
3手目は後手指手にかかわらず26歩:27260
13140:27260
23240:27260
33340:27260
...
91920:27260
5手目
13140,14150:26250
...
33340,53540:39480
33340,41320:69780
...
45データーベース
03/10/07 20:56ID:ViuviOpc 1手目、3手目、コンピュータがいつも同じ手では面白くない。
1手目:30
2手目:30
3手目:8
4手目:26
5手目:4
6手目:16
7手目:2
8手目:12
9手目:2
10手目:8
.....
位が適当か、
1手目:30
2手目:30
3手目:8
4手目:26
5手目:4
6手目:16
7手目:2
8手目:12
9手目:2
10手目:8
.....
位が適当か、
46データーベース
03/10/07 21:19ID:ViuviOpc 30*30*8*26*4*16*2*12*2*8=40,0062,7200 すでに46億か、無理だ。
30*30*4*16*2*8*2*4*1*2=1474,5600 15百万、この程度か。
あと50手を先手1手、後手2手で、32百万、掛けると、
472兆、ちょっと苦しい。
8*30*2*16*1*8*1*4*1*2=491520 、30分の一になった。
16兆。 これで60手までOK
機械でうまくはじき出せるか。
30*30*4*16*2*8*2*4*1*2=1474,5600 15百万、この程度か。
あと50手を先手1手、後手2手で、32百万、掛けると、
472兆、ちょっと苦しい。
8*30*2*16*1*8*1*4*1*2=491520 、30分の一になった。
16兆。 これで60手までOK
機械でうまくはじき出せるか。
47無理
03/10/09 03:57ID:G6zbUIk0 相手の手を2手用意したのでは、すぐに定跡から外れて役に立たないか。
4手まで用意で、40手までで、1兆。
4手まで用意で、40手までで、1兆。
03/10/09 10:04ID:RyMlJxaL
コンピューターの将棋は、終盤はプロ並の寄せをするようになったが
序盤から中盤はイマイチだからねぇ。
序盤から中盤はイマイチだからねぇ。
03/10/09 21:34ID:LCLj7mCa
40手目まで先手後手5分の将棋を、コンピュータと強い人間が引き継いで指せば、人間勝利は当然。
では、130手で終局した互角の名勝負を、現在の最強ソフトと最強人間で指し継ぐとすれば、何手目くらいからが、良い勝負になるでしょう。
では、130手で終局した互角の名勝負を、現在の最強ソフトと最強人間で指し継ぐとすれば、何手目くらいからが、良い勝負になるでしょう。
03/10/11 01:31ID:KnVdGg3r
>>49
ま、言いたい事は大体分かるけど、もっと分かりやすい日本語使おうな(5分→互角)
ってか文章の最後のほうなんて、とても日本人とは思えんぞ。
あんまり将棋が指せない(棋力が低い)人なんだろうけど、
「40手目まで指し終わり、その状況がほぼ互角」ってのは、そうそうないと思うし、
お互いにプロ並の棋力があっても、なかなか互角だと断言できないだろうから難しいよ。
130手というと終盤の状況だろうし、その時点でもマァマァ長手数の部類になるから
「優劣なし、互角」と断言ができずに無理っぽい。
(矛盾してるっぽいが、もし本当に互角の状況なら手番があるほうが有利になる場合が多いのでは)
ま、言いたい事は大体分かるけど、もっと分かりやすい日本語使おうな(5分→互角)
ってか文章の最後のほうなんて、とても日本人とは思えんぞ。
あんまり将棋が指せない(棋力が低い)人なんだろうけど、
「40手目まで指し終わり、その状況がほぼ互角」ってのは、そうそうないと思うし、
お互いにプロ並の棋力があっても、なかなか互角だと断言できないだろうから難しいよ。
130手というと終盤の状況だろうし、その時点でもマァマァ長手数の部類になるから
「優劣なし、互角」と断言ができずに無理っぽい。
(矛盾してるっぽいが、もし本当に互角の状況なら手番があるほうが有利になる場合が多いのでは)
03/10/11 11:00ID:K9b3BQSh
//www.colina.demon.co.uk/chu.html.
中将棋のソースがあった。
if timeRemaining == 60000 then do -- byo yomi
basicTime=sp.getByoYomiTime() -- 13 seconds - cautious
maximumTime=55 -- leaves 5 seconds in which to actually make the move
end
if abbrev.equals(String "P") then return "Pawn"
else if abbrev.equals("+P") then return "Tokin"
else if abbrev.equals(String "K") then return "King"
else if abbrev.equals(String "L") then return "Lance"
else if abbrev.equals(String "S") then return "Silver General"
else if abbrev.equals(String "G") then return "Gold General"
else if abbrev.equals(String "B") then return "Bishop"
else if abbrev.equals(String "R") then return "Rook"
中将棋のソースがあった。
if timeRemaining == 60000 then do -- byo yomi
basicTime=sp.getByoYomiTime() -- 13 seconds - cautious
maximumTime=55 -- leaves 5 seconds in which to actually make the move
end
if abbrev.equals(String "P") then return "Pawn"
else if abbrev.equals("+P") then return "Tokin"
else if abbrev.equals(String "K") then return "King"
else if abbrev.equals(String "L") then return "Lance"
else if abbrev.equals(String "S") then return "Silver General"
else if abbrev.equals(String "G") then return "Gold General"
else if abbrev.equals(String "B") then return "Bishop"
else if abbrev.equals(String "R") then return "Rook"
52BitSet
03/10/12 16:55ID:vJq46n+e JavaにBitSetクラスというものがあるのを偶然見つけた。
81枡での駒の存非をビットで表現するのに便利そう。
81枡での駒の存非をビットで表現するのに便利そう。
53名前は開発中のものです。
03/10/18 00:28ID:fl0E31RS やさしいチェスプログラムがあった。
これを焼きなおして見よう。
//build start position
int [] org = {
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99,124, 22, 23, 25,126, 23, 22,124, 99,
99, 21, 21, 21, 21, 21, 21, 21, 21, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 11, 11, 11, 11, 11, 11, 11, 11, 99,
99,114, 12, 13, 15,116, 13, 12,114, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99 };
for (int i=0; i < 120; i++)
board [i] = org [i];
//update screen
repaint ();
これを焼きなおして見よう。
//build start position
int [] org = {
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99,124, 22, 23, 25,126, 23, 22,124, 99,
99, 21, 21, 21, 21, 21, 21, 21, 21, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 00, 00, 00, 00, 00, 00, 00, 00, 99,
99, 11, 11, 11, 11, 11, 11, 11, 11, 99,
99,114, 12, 13, 15,116, 13, 12,114, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99 };
for (int i=0; i < 120; i++)
board [i] = org [i];
//update screen
repaint ();
03/10/24 13:59ID:B1JCysav
>>36
後手盤上駒、先手盤上駒の順に分けると:
'0S:lnsgkgsnl/1r5b1/ppppppppp/108/ppppppppp/1b5r1/lnsgkgsnl'
'0S5210:l4k1nl/1r2gs1g1/p4p1pp4s1p/4Bn/83/p3p2ps3/p2g1p2p/2s3r2/lnkg3nl'
左上隅から順に81枡で後手駒終わり、次先手駒。大文字は成り。
文字の種類が少なくなってすっきりした。
>>38、39 8二香は誤り、8二飛
>>30 banmen[7][2]=17;は誤り、banmen[5][2]=17;
後手盤上駒、先手盤上駒の順に分けると:
'0S:lnsgkgsnl/1r5b1/ppppppppp/108/ppppppppp/1b5r1/lnsgkgsnl'
'0S5210:l4k1nl/1r2gs1g1/p4p1pp4s1p/4Bn/83/p3p2ps3/p2g1p2p/2s3r2/lnkg3nl'
左上隅から順に81枡で後手駒終わり、次先手駒。大文字は成り。
文字の種類が少なくなってすっきりした。
>>38、39 8二香は誤り、8二飛
>>30 banmen[7][2]=17;は誤り、banmen[5][2]=17;
03/10/24 14:22ID:B1JCysav
大文字と小文字を逆にして見た。
'0S5210:L4K1Nl/1R2GS1G1/F4F1FF/4S1F4bN/83/F3F2FS3/F2G1F2F/2S3R2/LNKG3NL'
「0S5210:香4王1桂香/1飛2金銀1金1/歩4歩1歩歩/4銀1歩2/2馬桂
/83/歩2/1歩2歩銀3/歩2金1歩2歩/2銀3飛2/香桂王金3桂香」
'0S5210:L4K1Nl/1R2GS1G1/F4F1FF/4S1F4bN/83/F3F2FS3/F2G1F2F/2S3R2/LNKG3NL'
「0S5210:香4王1桂香/1飛2金銀1金1/歩4歩1歩歩/4銀1歩2/2馬桂
/83/歩2/1歩2歩銀3/歩2金1歩2歩/2銀3飛2/香桂王金3桂香」
03/10/25 21:28ID:X5VuBDRK
一兆と一口に言っても1秒で1局面を評価結論出して行って3万年かかる。
10000,0000,0000/60/60/24/365.25=31688.08781
10000,0000,0000/60/60/24/365.25=31688.08781
03/10/27 23:32ID:94uElLdI
まずは盤が必要。
9x9
11x11
16x16
どれが良いか。9x10を延長して13x10+1にしよう。
なぜプラス1か?
99,99,99,99,99,99,99,99,99,99,
99,99,99,99,99,99,99,99,99,99,
99,18,19,20,21,24,21,20,19,18,
99,00,23,00,00,00,00,00,22,00,
99,17,17,17,17,17,17,17,17,17,
....
....
99,99,99,99,99,99,99,99,99,99,
99,99,99,99,99,99,99,99,99,99,99
のような感じ。99より48が良いか。
11x11の採用者は1列無駄だよね。チェスじゃないから
桂馬は横に飛ばないのに。
9x9
11x11
16x16
どれが良いか。9x10を延長して13x10+1にしよう。
なぜプラス1か?
99,99,99,99,99,99,99,99,99,99,
99,99,99,99,99,99,99,99,99,99,
99,18,19,20,21,24,21,20,19,18,
99,00,23,00,00,00,00,00,22,00,
99,17,17,17,17,17,17,17,17,17,
....
....
99,99,99,99,99,99,99,99,99,99,
99,99,99,99,99,99,99,99,99,99,99
のような感じ。99より48が良いか。
11x11の採用者は1列無駄だよね。チェスじゃないから
桂馬は横に飛ばないのに。
03/10/31 15:46ID:X+ZKdv/s
発見!! 64JAVA
J2SE Itanium v 1.4.2_02 のダウンロード
でも、ハードとOSの値段は?? あ、OSはRedHatでも良いか。
J2SE Itanium v 1.4.2_02 のダウンロード
でも、ハードとOSの値段は?? あ、OSはRedHatでも良いか。
03/10/31 20:32ID:X+ZKdv/s
Itanium2はサーバー用か。Athlon64用だと良かった。
03/12/10 04:37ID:Sw46xuo+
案1:
人間とプログラムが対戦する際、
人間側の選択肢を「2択」データベースで用意する。
例えば人間初手なら:
1:76歩
2:26歩
3:投了
その他の手は選択不可とする。
プログラム側の対応手を1手用意する。
初手より70手までで320億応手。
70手終了時点で、
歩:1点、小駒:2点、大駒:10点で集計。得点多いほうが勝ち。
これなら全ての手をゼロ秒で送り出せる。 遊べると思います?
人間とプログラムが対戦する際、
人間側の選択肢を「2択」データベースで用意する。
例えば人間初手なら:
1:76歩
2:26歩
3:投了
その他の手は選択不可とする。
プログラム側の対応手を1手用意する。
初手より70手までで320億応手。
70手終了時点で、
歩:1点、小駒:2点、大駒:10点で集計。得点多いほうが勝ち。
これなら全ての手をゼロ秒で送り出せる。 遊べると思います?
03/12/10 10:56ID:a8St1G3J
ストレスが溜まると思う
03/12/12 19:34ID:0lTC0Jam
中盤以降、どうやって2手に絞り込むのだ?
03/12/12 21:25ID:fBTD6+Y3
申し訳ない。へぼプログラムの考える最善2手だから、ロクな手では無いとおもわれ、
まずは携帯用ストレス解消用。ナズケテ「ストレス将棋」
まずは携帯用ストレス解消用。ナズケテ「ストレス将棋」
03/12/12 21:58ID:fBTD6+Y3
序盤34手まで、13万通り、は過去局CDROMから頻出手を選ぶ。
以降は1局面あたり、プログラムで1000秒思考した結果最善2手を保存する。
PC1台で1314.9局面/年。1000台のPCにお願いして、131万局面。
約40手先、合計で74手まで用意できる。
コンピュータの考えた次善手をたどると実は人間側の勝ちになったりする?。
以降は1局面あたり、プログラムで1000秒思考した結果最善2手を保存する。
PC1台で1314.9局面/年。1000台のPCにお願いして、131万局面。
約40手先、合計で74手まで用意できる。
コンピュータの考えた次善手をたどると実は人間側の勝ちになったりする?。
03/12/12 22:09ID:fBTD6+Y3
計算違いだ。34手目までは、過去の名局ただ1局のみをベースにする必要がある。
もしくは、最新の流行1局。こちらだと1年先の保証がない
もしくは、最新の流行1局。こちらだと1年先の保証がない
03/12/13 04:48ID:FZIp2nQw
計算バグ
PC1台で31557.6局面/年 (24倍を忘れた)
40台程度の協力者でよい
PC1台で31557.6局面/年 (24倍を忘れた)
40台程度の協力者でよい
03/12/13 04:54ID:FZIp2nQw
40手までの「2ちゃんボードゲーム板標準手順」を将棋の強い方に上げてもらおう。
その後の30手をDB作成する。まずは1秒思考版で。
その後の30手をDB作成する。まずは1秒思考版で。
03/12/20 07:51ID:cJscYprH
1. 盤、Bang、 は取りあえず 9x9=81の一次元配列にしよう。
あとで変更するかも知れない。
2. 駒、 こちらも適当に、
先手歩:16、先手香車:17、後手歩:32、、
3. generateArandomMove()
乱数で合法手を1手作成して返す。
4.何局か指して、勝率の良いもの選ぶ。
計画
1.詰め将棋、1手詰め
2.詰め将棋、3手詰め
3.詰め将棋、5手詰め
4、次の一手問題
5、2日制将棋1日目終了後指し継ぎ
6、序盤データベース
あとで変更するかも知れない。
2. 駒、 こちらも適当に、
先手歩:16、先手香車:17、後手歩:32、、
3. generateArandomMove()
乱数で合法手を1手作成して返す。
4.何局か指して、勝率の良いもの選ぶ。
計画
1.詰め将棋、1手詰め
2.詰め将棋、3手詰め
3.詰め将棋、5手詰め
4、次の一手問題
5、2日制将棋1日目終了後指し継ぎ
6、序盤データベース
03/12/20 13:55ID:cJscYprH
944422200
....K....
.........
....g....
.........
.........
.........
.........
.........
.........
000010000
1手詰め、持ち駒、金
ランダムに3手指し終了した時点で駒台に敵玉がのっていれば
勝ち、その他は負け。
....K....
.........
....g....
.........
.........
.........
.........
.........
.........
000010000
1手詰め、持ち駒、金
ランダムに3手指し終了した時点で駒台に敵玉がのっていれば
勝ち、その他は負け。
03/12/21 01:05ID:45Mhtaty
50万回試行した。結果は、、、、、、
41金:702
61金:727
42金:540
52金:663
62金:588
ちょっと予想と違う結果になった。
61金、62王、のあと9分の2の確率で王を取る。
52金、61王、のあと10分の1の確率で王が駒台にのる。
とりあえず理屈には合って居そう。
「逃げる」「取る」手を覚えさせれば、なんとかなりそう。
次の1手詰めをやってみよう
844322100
.........
......G..
.........
......dsK
........G
.........
.........
.........
.........
000000000
持ち駒無し
41金:702
61金:727
42金:540
52金:663
62金:588
ちょっと予想と違う結果になった。
61金、62王、のあと9分の2の確率で王を取る。
52金、61王、のあと10分の1の確率で王が駒台にのる。
とりあえず理屈には合って居そう。
「逃げる」「取る」手を覚えさせれば、なんとかなりそう。
次の1手詰めをやってみよう
844322100
.........
......G..
.........
......dsK
........G
.........
.........
.........
.........
000000000
持ち駒無し
03/12/21 05:05ID:45Mhtaty
>>70
61金で41王に逃げる確率は5百数十分の一、
王が移動しなければ、9分の一で、王確保。
52金後、王が移動しないと10分の一で王捕獲される。
「取る」プログラムが「逃げる」よりは簡単そう。
あと何を工夫するか。
王手をチェックすれば、大幅に高速になるのは「見え」てるが、指し将棋の
強化には約に立たないから後回し。
次の1手詰めは50万回では差が出ない、500万回、朝までかかる。
61金で41王に逃げる確率は5百数十分の一、
王が移動しなければ、9分の一で、王確保。
52金後、王が移動しないと10分の一で王捕獲される。
「取る」プログラムが「逃げる」よりは簡単そう。
あと何を工夫するか。
王手をチェックすれば、大幅に高速になるのは「見え」てるが、指し将棋の
強化には約に立たないから後回し。
次の1手詰めは50万回では差が出ない、500万回、朝までかかる。
03/12/21 07:48ID:45Mhtaty
>>70
10万回で
23銀不成り:468
23銀成り:341
35銀:245
少しはずしているが、まあ、近い。敵玉が逃げない場合も含めての敵玉捕獲確率のようなもの。
一気に次の1手問題。
601000000
LKS.....L
..S.r....
....B..PP
.PpG.....
P.P....p.
p.Nng.p.p
kpn..p.r.
..g......
l....B..l
000012000 持ち駒金銀2、(95歩まで) 500万回
先手生駒:plnsgbrk 先手成り駒:tycagmd
英語圏でも将棋プログラムを開発しているから、あまり外れないほうが良いか。(少なくとも生駒)
桂馬の「桂」は何の意味があるのだろう。金銀さんご、、、、、、などの言葉があるから、「珊瑚」に関係ないのかなーー。それで、 coral にしてみた。大外れかもしれない。
10万回で
23銀不成り:468
23銀成り:341
35銀:245
少しはずしているが、まあ、近い。敵玉が逃げない場合も含めての敵玉捕獲確率のようなもの。
一気に次の1手問題。
601000000
LKS.....L
..S.r....
....B..PP
.PpG.....
P.P....p.
p.Nng.p.p
kpn..p.r.
..g......
l....B..l
000012000 持ち駒金銀2、(95歩まで) 500万回
先手生駒:plnsgbrk 先手成り駒:tycagmd
英語圏でも将棋プログラムを開発しているから、あまり外れないほうが良いか。(少なくとも生駒)
桂馬の「桂」は何の意味があるのだろう。金銀さんご、、、、、、などの言葉があるから、「珊瑚」に関係ないのかなーー。それで、 coral にしてみた。大外れかもしれない。
03/12/21 13:28ID:45Mhtaty
500万回で最頻手は92銀:5883回。
お目当ての手は第16位で1739回。 約150の可能手の内。
終盤なので、玉の防御をすれば、もう少し良くなるか。
お目当ての手は第16位で1739回。 約150の可能手の内。
終盤なので、玉の防御をすれば、もう少し良くなるか。
03/12/21 13:46ID:45Mhtaty
中盤の問題。 100万回。
400100000
LN...G.NL
......SK.
P........
..PBPR.P.
.P.P..P.P
p.pN.p...
.pb.pg.rp
......s..
ln...g.kl
000011000
400100000
LN...G.NL
......SK.
P........
..PBPR.P.
.P.P..P.P
p.pN.p...
.pb.pg.rp
......s..
ln...g.kl
000011000
03/12/26 09:11ID:HKWQqeik
初手48玉、第3手59玉と出た。
03/12/26 09:45ID:HKWQqeik
中盤問題は本の正解とは異なる66角。それでも某ソフトと同じ。
もっと序盤問題から:
000000000
LN・GKGSNL
・R・S・・・B・
P・PPPP・PP
・P・・・・P・・
・・・・・・・・・
・・歩歩・・・・・
歩歩・・歩歩歩歩歩
・角・・・・・飛・
香桂銀金玉金銀桂香
000000000
先後逆
先生の正解は68飛だが、、、
とりあえず、王の防御だけは入れた。20回に1回防御しない、そのとき駒台に上げられる。つみ判定しなくて良いから省力
もっと序盤問題から:
000000000
LN・GKGSNL
・R・S・・・B・
P・PPPP・PP
・P・・・・P・・
・・・・・・・・・
・・歩歩・・・・・
歩歩・・歩歩歩歩歩
・角・・・・・飛・
香桂銀金玉金銀桂香
000000000
先後逆
先生の正解は68飛だが、、、
とりあえず、王の防御だけは入れた。20回に1回防御しない、そのとき駒台に上げられる。つみ判定しなくて良いから省力
03/12/26 22:57ID:Wb6uSPOT
ほう、なんか面白いことやってる人がいますな。
1手指すのにものすごい時間かかりそうだが。
1手指すのにものすごい時間かかりそうだが。
03/12/27 09:22ID:7bL+N0Ad
将棋ソフトの探索速度、秒速数十万手だそう。
DeepBlue の速度は秒速: 200Million moves だそうです。
DeepBlue の速度は秒速: 200Million moves だそうです。
03/12/27 13:03ID:7bL+N0Ad
>>76
あまり序盤すぎて、どうにもならない。65歩と68飛が嫌われた手。
王が動くのが好まれて居る、が、
可能な局面の数と、乱数そのものの数に圧倒的な差があるので、乱数の偏りを見ているのかもしれない。
もう少し局面を進めて見よう。
000000000
LN・・・GBNL
・R・・G・S・・
P・・P・・SK・
・・P・PPPP・
・P・歩・・・・P
歩・歩・銀歩歩歩・
・歩角・歩・桂・歩
・・・飛金・銀玉・
香桂・・・金・・香
000000000
200万回、嫌われた手:75歩:−236点
推奨手:25歩:1189点、45銀:637点、29玉:532点
どうなんでしょうか。先生推薦手は別の手。
あまり序盤すぎて、どうにもならない。65歩と68飛が嫌われた手。
王が動くのが好まれて居る、が、
可能な局面の数と、乱数そのものの数に圧倒的な差があるので、乱数の偏りを見ているのかもしれない。
もう少し局面を進めて見よう。
000000000
LN・・・GBNL
・R・・G・S・・
P・・P・・SK・
・・P・PPPP・
・P・歩・・・・P
歩・歩・銀歩歩歩・
・歩角・歩・桂・歩
・・・飛金・銀玉・
香桂・・・金・・香
000000000
200万回、嫌われた手:75歩:−236点
推奨手:25歩:1189点、45銀:637点、29玉:532点
どうなんでしょうか。先生推薦手は別の手。
03/12/28 08:37ID:Yv24cf1G
全然駄目だ。25歩は確率的に取って来ない、24歩、20回に1回逃げない、敵玉捕獲確率が高い。
45銀も同じ、34銀、高確率敵玉捕獲。
相手が悪い手を指してこちらが勝ったとき、相手が良い手を指してこちらが勝ったときで、同じ1勝ではdame.
改善!
45銀も同じ、34銀、高確率敵玉捕獲。
相手が悪い手を指してこちらが勝ったとき、相手が良い手を指してこちらが勝ったときで、同じ1勝ではdame.
改善!
03/12/28 14:04ID:Yv24cf1G
先手第1手目が10000勝10000敗とする。
第2手目が後手側100勝1敗の手で、この対局に先手が勝った場合:
100点与える。
負けた場合:1点引く。 やってみよう。
第2手目が後手側100勝1敗の手で、この対局に先手が勝った場合:
100点与える。
負けた場合:1点引く。 やってみよう。
03/12/30 10:00ID:aCmAyHVi
うーん、バグフルだ
04/01/01 14:44ID:TYfOIMXq
正月の休みに虫と戦えり
新年にバグ取れぬ間は目出もせず
新年にバグの取れたるめでたさや
新年にバグ取れぬ間は目出もせず
新年にバグの取れたるめでたさや
04/01/04 21:35ID:03xOK9CB
休みは終わり、バグとりまずまず、局面で勝った手を再使用。
秒速約5000手。1000倍速必要。次の課題はキラー手の採用。
特定手の生成、王手、取る手、逃げる手、成る手、を高速に生成したい。
秒速約5000手。1000倍速必要。次の課題はキラー手の採用。
特定手の生成、王手、取る手、逃げる手、成る手、を高速に生成したい。
04/01/06 08:44ID:IKcYlSoc
詰め将棋に限って言えば、詰んだ王将の位置を想定して
その逆順で手を考えるってパターンもありかもしれないと想像。
完全に詰んだ形でしかも持ち駒無しっていうかなり限定された状況だし
自分が詰め将棋考えるときにそうしてるから。
その逆順で手を考えるってパターンもありかもしれないと想像。
完全に詰んだ形でしかも持ち駒無しっていうかなり限定された状況だし
自分が詰め将棋考えるときにそうしてるから。
04/01/06 22:37ID:wn4SZTXn
「想定」はコンピュータの不得意科目だから難しそう。
詰め将棋に関しては、現在ソフトは人間を超えてる模様。後発組はなかなか追いつけない。
序盤はすごく弱いとの評判だから、、、なんとか、、、 序盤で差をつけてそのまま、、、
詰め将棋に関しては、現在ソフトは人間を超えてる模様。後発組はなかなか追いつけない。
序盤はすごく弱いとの評判だから、、、なんとか、、、 序盤で差をつけてそのまま、、、
04/01/24 12:15ID:65yd+7L7
いまのところ、あまりうまくいってない。バグなのか、、
ある新出局面が与えられる: 可能な指し手は200.そのうち190手以上が凡手。
全手試すと時間が足りない。如何に良い候補手を選ぶか、、 取る成るとか言っているとまた時間がかかる。
局面から何手目かの別に成功(killer)手を集積しようか。
手目別キラー勝率順、、、 どう?
みんな、序盤がだめって言ってる、、、
ある新出局面が与えられる: 可能な指し手は200.そのうち190手以上が凡手。
全手試すと時間が足りない。如何に良い候補手を選ぶか、、 取る成るとか言っているとまた時間がかかる。
局面から何手目かの別に成功(killer)手を集積しようか。
手目別キラー勝率順、、、 どう?
みんな、序盤がだめって言ってる、、、
04/01/24 19:03ID:2SXMZCrl
8920
04/01/25 11:27ID:4RpPXlNl おーっ援護だー、有り難い。100まで行くのに半年、1000までいけるかな、新スレッドの立て方知らないし、心配ないか。
90ボドゲー20
04/01/26 05:16ID:ev0kjgo0 負けてるくせに、手を変えないバグ発見。ゆっくりなおそう。
乱数将棋の強さをゼロとして、C将棋の強さ標準を作成することが可能。
2枚落ちで勝率5割なら600点、それにまた2枚落ち5割で1200点、、、、
絶対零度のようなもの、、、ケルビンじゃなく、ボドゲー8000点とかで呼んでください。
うちの特許じゃよ!
【香 落】100点
【角 落】250点
【飛 落】350点
【飛香落】450点
【二枚落】600点
乱数将棋の強さをゼロとして、C将棋の強さ標準を作成することが可能。
2枚落ちで勝率5割なら600点、それにまた2枚落ち5割で1200点、、、、
絶対零度のようなもの、、、ケルビンじゃなく、ボドゲー8000点とかで呼んでください。
うちの特許じゃよ!
【香 落】100点
【角 落】250点
【飛 落】350点
【飛香落】450点
【二枚落】600点
04/01/30 10:12ID:LC61jD25
6手まで指し終った段階で一歩でも取られていれば負け。
76、34、26,84、66は66同角で先手負け。
76、34、26,84、66は66同角で先手負け。
04/01/30 11:08ID:LC61jD25
n手まで将棋:n手まで指し終わり駒損の方が負け。
n=6:
76,14,56,13角、78銀、
n=8:
n=6:
76,14,56,13角、78銀、
n=8:
04/01/30 12:35ID:LC61jD25
データベース:
第1手目76歩、第3手目26歩として、第5手目を準備しよう。
約900手くらい。第7手目は3万手以上か。後手の全手に対応。
第1手目76歩、第3手目26歩として、第5手目を準備しよう。
約900手くらい。第7手目は3万手以上か。後手の全手に対応。
04/01/30 22:16ID:LC61jD25
グッドニュース:ひと月ぶりのバグ取りでやっと3手詰めが解けた。
5万局あまりの試行で発見。攻め手は王手に限ってないので、もち駒ありだとどこでも打って試す。29飛車とか
30万手程度だから、高速プログラムなら1秒以内か。とりあえず、というとこか。
30分程度かかった。秒速200手、デバッグ付きだから。
000000000
・・・・・・・・・
・・・・S・・・・
・・・N・銀K・P
・・・飛・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
001010000
飛金
5万局あまりの試行で発見。攻め手は王手に限ってないので、もち駒ありだとどこでも打って試す。29飛車とか
30万手程度だから、高速プログラムなら1秒以内か。とりあえず、というとこか。
30分程度かかった。秒速200手、デバッグ付きだから。
000000000
・・・・・・・・・
・・・・S・・・・
・・・N・銀K・P
・・・飛・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
001010000
飛金
04/01/30 23:24ID:LC61jD25
32金、
43玉、
33飛車、
31桂馬:20分の1の確率で王手を無視して自由に指す。それにしても玉を取り返す気か。
20分の19はギブアップして決着する。
74飛車:王手を逃げないからと言って直ぐに取るとは限らない。あくまでも自由に。
95歩:玉将健在で後手の勝ち
次の問題
000000000
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・竜歩・
・・・・・歩歩・b b=後手馬
・・・・・銀K・・
・・・・・・・桂香
001010000
飛金
43玉、
33飛車、
31桂馬:20分の1の確率で王手を無視して自由に指す。それにしても玉を取り返す気か。
20分の19はギブアップして決着する。
74飛車:王手を逃げないからと言って直ぐに取るとは限らない。あくまでも自由に。
95歩:玉将健在で後手の勝ち
次の問題
000000000
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・・・・
・・・・・・竜歩・
・・・・・歩歩・b b=後手馬
・・・・・銀K・・
・・・・・・・桂香
001010000
飛金
04/01/31 00:24ID:SCQw2gFE
04/02/01 20:27ID:AoEuxQTZ
コチコチコッチン、ボドゲーさん
................、動いてる
にーにの角と、はーちはちの角が
こんにちは、さようなら
ちくたくコッチン角交換
「最強」もり上がっているな、、、わが道を行く、、、
................、動いてる
にーにの角と、はーちはちの角が
こんにちは、さようなら
ちくたくコッチン角交換
「最強」もり上がっているな、、、わが道を行く、、、
98 ◆R/rLuLKeEI
04/02/03 08:20ID:Oi0TsbpK まずは頑張れー。
あまり盛り上がるとあちらでは板違いなりそう。
まだゲーム関連ではおまいら最強の2スレッドだけなんでいいが…
あまり盛り上がるとあちらでは板違いなりそう。
まだゲーム関連ではおまいら最強の2スレッドだけなんでいいが…
04/02/03 21:03ID:TlBtJ5Aq
お、訪問者だ。誰も来ないと思って、のんきに替え歌なぞ歌って失礼しました。
ちらかっていますが、、
ちらかっていますが、、
100 ◆R/rLuLKeEI
04/02/03 21:57ID:Oi0TsbpK やっ、どもども、お構いなく。
いつもは読み込み専門でしたが、陽気な替え歌に誘われてつい。
また不意にお邪魔します。
いつもは読み込み専門でしたが、陽気な替え歌に誘われてつい。
また不意にお邪魔します。
101名前は開発中のものです。
04/02/06 12:46ID:Kma2T1Ri 表示実験。
MSゴシックでOKだが、MSP(Proportional)だと表示がずれる。
<font color=red/>L
LNSGKGSNL
◇◇◇◇◇◇◇◇◇
PPPPPPPPP
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
歩歩歩歩歩歩歩歩歩
◇角◇◇◇◇◇飛◇
香桂銀金王金銀桂香
MSゴシックでOKだが、MSP(Proportional)だと表示がずれる。
<font color=red/>L
LNSGKGSNL
◇◇◇◇◇◇◇◇◇
PPPPPPPPP
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
歩歩歩歩歩歩歩歩歩
◇角◇◇◇◇◇飛◇
香桂銀金王金銀桂香
102名前は開発中のものです。
04/02/06 12:50ID:Kma2T1Ri やはり英字はうまくいかない。「ツール、インターネットオプション、フォント、MSゴシック」
でお願いします。
でお願いします。
103名前は開発中のものです。
04/02/07 01:39ID:ye7xTN7i >>95 の5手詰めがまだ解けない。バグを数個直した。このバグありでよく3手詰めが解けたものだ、と再度解かせてみたら7万回試行で解決。
5手を解くには、1,3,5,7手目が正答である必要がある。確率で行けば、1手目正解が160分の一、3手目が100分の一、5手目80、7手目、10として
1280万回に1回正解が出る。 現在、100分、42万局、秒速492手で進行中。
持ち駒のない問題が簡単か。 postが100を超えた。
5手を解くには、1,3,5,7手目が正答である必要がある。確率で行けば、1手目正解が160分の一、3手目が100分の一、5手目80、7手目、10として
1280万回に1回正解が出る。 現在、100分、42万局、秒速492手で進行中。
持ち駒のない問題が簡単か。 postが100を超えた。
104名前は開発中のものです。
04/02/08 00:36ID:ZAi8NB51 相手の手の場合の数もあるので、正解に遭遇する確率はもっと小さい。
持ち駒が多い、飛車角が多いと難問となるので、新問題に変更。
000000000
◇◇◇◇◇角◇◇L
◇◇◇◇飛◇と◇◇
◇◇◇◇◇R◇K◇
◇◇◇B◇◇◇PP
◇◇◇◇◇◇歩◇◇
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
持ち駒なし
持ち駒が多い、飛車角が多いと難問となるので、新問題に変更。
000000000
◇◇◇◇◇角◇◇L
◇◇◇◇飛◇と◇◇
◇◇◇◇◇R◇K◇
◇◇◇B◇◇◇PP
◇◇◇◇◇◇歩◇◇
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
◇◇◇◇◇◇◇◇◇
持ち駒なし
105名前は開発中のものです。
04/02/08 14:27ID:BX3nFD2B ふらりと寄ってみた。なんか色々頑張ってますな。
ここを見てふと思った。
詰め将棋って王の側の選択肢をどんどん少なくしていくゲームなんだよな。
最終的に選択肢が0で詰み。
つまり王が動く時に選択肢が少ない手を優先させれば
余計な探索は減るだろうと思った。
でもここのやり方とは違うから参考にはならんね。スマソ。
ここを見てふと思った。
詰め将棋って王の側の選択肢をどんどん少なくしていくゲームなんだよな。
最終的に選択肢が0で詰み。
つまり王が動く時に選択肢が少ない手を優先させれば
余計な探索は減るだろうと思った。
でもここのやり方とは違うから参考にはならんね。スマソ。
106名前は開発中のものです。
04/02/08 14:53ID:ZAi8NB51 お立ちよりありがとうございます。といっても私のスレというわけではないが。
詰め将棋特化ならそれがいいらしい。今のところ、序盤プログラムのデバッグに詰め将棋を利用している。
そろそろ16時間になるが、100万局以上で結論が出ない。今夜半までには何とかなって欲しい。
それとは別に高速化と序盤DBでも考えよう。
詰め将棋特化ならそれがいいらしい。今のところ、序盤プログラムのデバッグに詰め将棋を利用している。
そろそろ16時間になるが、100万局以上で結論が出ない。今夜半までには何とかなって欲しい。
それとは別に高速化と序盤DBでも考えよう。
107 ◆R/rLuLKeEI
04/02/08 16:14ID:t2AC4xnx >>105
それは証明数による探索。脊尾詰。
それは証明数による探索。脊尾詰。
108名前は開発中のものです。
04/02/08 16:52ID:ZAi8NB51 なんだか「最強」の序盤DB、考えがこちらと似て来た。急がないと。
109名前は開発中のものです。
04/02/08 16:54ID:ZAi8NB51 以前、七行プログラムで将棋がありましたよね。駒打ちはなかったようですが。今見つからない。
110名前は開発中のものです。
04/02/08 17:45ID:ZAi8NB51 21と、キタ−−,108万局疾走中。まだ勝率5割以下だが、あと11万局勝てば5割超。玉方の手がめまぐるしく変わる、、バタバタしている。
やったね。
やったね。
111名前は開発中のものです。
04/02/10 15:17ID:xmQGU8oL RedHat9に付属の Iagno 2.2.0 なんだけど、レベル3でやると猛烈に時間が
かかる。(5手目辺り)3分くらい待っても打たないから終了させたけど、
せめて時間だけでもカウントして欲しい。PC側も思考中にカウントしてな
いとハングしたと思ってしまう。(もしかしてマジでハングか?) メール
しようと思ったけど英語できねーからここでちょっとグチ。。。
かかる。(5手目辺り)3分くらい待っても打たないから終了させたけど、
せめて時間だけでもカウントして欲しい。PC側も思考中にカウントしてな
いとハングしたと思ってしまう。(もしかしてマジでハングか?) メール
しようと思ったけど英語できねーからここでちょっとグチ。。。
112名前は開発中のものです。
04/02/10 15:49ID:TtDOLwre >>111
ソースハック汁
ソースハック汁
113名前は開発中のものです。
04/07/28 16:27ID:r+zgac5E 史上初!!!
対局可能な大局将棋ソフトができました。
世界最大の将棋がプレーできます。
今どんどんアップデートされてます。
コンピューター同士の対局も可能。(数分で決着がつくw)
詳しくはここで
大局将棋を指しましょう2《第1局第2譜》
http://game6.2ch.net/test/read.cgi/bgame/1073993361/
対局可能な大局将棋ソフトができました。
世界最大の将棋がプレーできます。
今どんどんアップデートされてます。
コンピューター同士の対局も可能。(数分で決着がつくw)
詳しくはここで
大局将棋を指しましょう2《第1局第2譜》
http://game6.2ch.net/test/read.cgi/bgame/1073993361/
114名前は開発中のものです。
04/08/19 01:53ID:7LEsf4i7 Linuxで逆さの漢字を表示しようとすると地獄なんですけど、皆さんどうしてますか?
Xlib を使って強引に表示するという手もありますけど・・・・・・。
Xlib を使って強引に表示するという手もありますけど・・・・・・。
115名前は開発中のものです。
04/08/19 02:50ID:k6q2f/Vl >>114
ttp://www.logos.ic.i.u-tokyo.ac.jp/~gekisashi/download.html
ttp://www.logos.ic.i.u-tokyo.ac.jp/~gekisashi/download.html
116名前は開発中のものです。
04/08/19 03:18ID:7LEsf4i7 >>115
教えて頂いてありがたいのですが、残念ながらアドミンじゃないのでインストール出来ません・・・。
教えて頂いてありがたいのですが、残念ながらアドミンじゃないのでインストール出来ません・・・。
117名前は開発中のものです。
04/08/19 03:42ID:k6q2f/Vl118名前は開発中のものです。
04/08/19 04:01ID:7LEsf4i7 >>117
Windowsに移植したいのではなくて、Linux環境(の麻疹)のほうで実行・表示したいのですが・・・。
逆さ文字が駄目ならせめて、画像ファイル(データ)を読み込んで、
その画像をWindow上の任意の場所に表示できるだけでもいいです。
たったこれだけのことですが、表示するだけの方法ならいくらでもあるのですが、
Window領域(グラフィック領域)の任意の場所に表示となると、途端に方法が見つからなくなってしまいます。
思考ルーチンをCPUの速度で実行したいので、出来ればC言語でやりたいです。
こうなると、やはりX Windowを使うしかないのでしょうか・・・。
出来ないことはないですが・・・。
Windowsに移植したいのではなくて、Linux環境(の麻疹)のほうで実行・表示したいのですが・・・。
逆さ文字が駄目ならせめて、画像ファイル(データ)を読み込んで、
その画像をWindow上の任意の場所に表示できるだけでもいいです。
たったこれだけのことですが、表示するだけの方法ならいくらでもあるのですが、
Window領域(グラフィック領域)の任意の場所に表示となると、途端に方法が見つからなくなってしまいます。
思考ルーチンをCPUの速度で実行したいので、出来ればC言語でやりたいです。
こうなると、やはりX Windowを使うしかないのでしょうか・・・。
出来ないことはないですが・・・。
119名前は開発中のものです。
04/08/19 04:16ID:k6q2f/Vl >>118
移植とは関係ないよ。
LinuxとかXとかの理解に誤解があるんだろうけど、
勉強していけばそのうちわかるだろうからいいや。
画像なら画像で、Javaとパイプでつなぐもよし、Tcl/Tkを呼ぶもよし、
QtかwxWidgetsで少し本気にGUIプログラミングするもよし、好きにしたら。
移植とは関係ないよ。
LinuxとかXとかの理解に誤解があるんだろうけど、
勉強していけばそのうちわかるだろうからいいや。
画像なら画像で、Javaとパイプでつなぐもよし、Tcl/Tkを呼ぶもよし、
QtかwxWidgetsで少し本気にGUIプログラミングするもよし、好きにしたら。
120名前は開発中のものです。
04/08/19 05:20ID:/5OBYfND >>118
SDLじゃダメなの?
SDLじゃダメなの?
121名前は開発中のものです。
04/08/21 17:37ID:+7pTN+59 ttp://up.isp.2ch.net/up/79ab1d38086e.c
オセロゲームを作ってみました。C言語です。
テキストベースなので、どの環境でもコンパイル出来ると思います。
Windows環境のコマンドプロンプトで開発したので、漢字コードはS-JISになっています。
unixなどだと文字化けするかも知れません。
結構強いです。
オセロゲームを作ってみました。C言語です。
テキストベースなので、どの環境でもコンパイル出来ると思います。
Windows環境のコマンドプロンプトで開発したので、漢字コードはS-JISになっています。
unixなどだと文字化けするかも知れません。
結構強いです。
122名前は開発中のものです。
04/08/22 01:01ID:5qCfTtge そのアップローダーは流れが速いからもう落ちてるぽい。
123名前は開発中のものです。
04/09/24 16:30:21ID:Wb26arGV 皆さん世界で一番強いチェスのAIを作り上げましょう。
typedef enum {B_KING = -6,B_QUEEN = -5,B_ROOK = -4,B_BISHOP = -3,
B_KNIGHT = -2,B_PAWN = -1,NONE=0,
PAWN=1, KNIGHT=2, BISHOP=3, ROOK=4, QUEEN=5, KING=6} PieceT;
typedef enum {A1=0, A2, A3, A4, A5, A6, A7, A8,
B1, B2, B3, B4, B5, B6, B7, B8,
C1, C2, C3, C4, C5, C6, C7, C8,
D1, D2, D3, D4, D5, D6, D7, D8,
E1, E2, E3, E4, E5, E6, E7, E8,
F1, F2, F3, F4, F5, F6, F7, F8,
G1, G2, G3, G4, G5, G6, G7, G8,
H1, H2, H3, H4, H5, H6, H7, H8} SquareT;
皆様どうな手法・探索方法でも構いません。
ありとあらゆるやり方でレスポンスの早くて弱いAIからレスポンスが早くて強い
AI。ありとあらゆるやり方でAIの部分だけ考えていきましょう。
とりあえず上のに基礎的な部分をつけるんでそこからは皆さんの力をお借りしながら
地道に強くて早いAIから弱くて遅いAIも作ル予定です。
皆様の案やアルゴリズムの知識をお借りして作り上げていく所存でございます。
では失礼します。
typedef enum {B_KING = -6,B_QUEEN = -5,B_ROOK = -4,B_BISHOP = -3,
B_KNIGHT = -2,B_PAWN = -1,NONE=0,
PAWN=1, KNIGHT=2, BISHOP=3, ROOK=4, QUEEN=5, KING=6} PieceT;
typedef enum {A1=0, A2, A3, A4, A5, A6, A7, A8,
B1, B2, B3, B4, B5, B6, B7, B8,
C1, C2, C3, C4, C5, C6, C7, C8,
D1, D2, D3, D4, D5, D6, D7, D8,
E1, E2, E3, E4, E5, E6, E7, E8,
F1, F2, F3, F4, F5, F6, F7, F8,
G1, G2, G3, G4, G5, G6, G7, G8,
H1, H2, H3, H4, H5, H6, H7, H8} SquareT;
皆様どうな手法・探索方法でも構いません。
ありとあらゆるやり方でレスポンスの早くて弱いAIからレスポンスが早くて強い
AI。ありとあらゆるやり方でAIの部分だけ考えていきましょう。
とりあえず上のに基礎的な部分をつけるんでそこからは皆さんの力をお借りしながら
地道に強くて早いAIから弱くて遅いAIも作ル予定です。
皆様の案やアルゴリズムの知識をお借りして作り上げていく所存でございます。
では失礼します。
124名前は開発中のものです。
04/09/26 00:22:15ID:uMKqZE6G これ使ってリバーシ作って誰か対戦してみない?
http://www.vector.co.jp/games/soft/win95/game/se301574.html
GUI部分は作る必要ないらしい。C#みたい。
.NET Framework SDK(無料)で作れると書いてある。
http://www.vector.co.jp/games/soft/win95/game/se301574.html
GUI部分は作る必要ないらしい。C#みたい。
.NET Framework SDK(無料)で作れると書いてある。
125名前は開発中のものです。
04/09/26 16:21:00ID:QXyfGRQz126124
04/09/26 19:13:56ID:uMKqZE6G 対戦きぼんぬ!
127名前は開発中のものです。
04/09/28 21:45:55ID:SANJ/ziE 将棋・オセロ・囲碁・チェス・その他ボードゲームでソースが公開されている
サイトなど知っておられる方おりましたら教えて頂けますか。
よろしくお願いします。
サイトなど知っておられる方おりましたら教えて頂けますか。
よろしくお願いします。
128名前は開発中のものです。
04/09/29 00:22:22ID:pXLmLT1B129124
04/10/02 15:29:45ID:vOgyK91B 思考ルーチン作りました。対戦きぼんぬ!
http://www.geocities.jp/team8bit/AIReversi/ai_place.htm
EasyAI
AIリバーシ
リバーシ(オセロ)のフレームワーク。
UI等やルール等のプログラミングを必要なくして、
オセロの人工知能の作成ができます。作成した人工知能で
コンピュータ同士の対戦や人間との対戦ができます。
http://www.geocities.jp/team8bit/
http://www.geocities.jp/team8bit/AIReversi/ai_place.htm
EasyAI
AIリバーシ
リバーシ(オセロ)のフレームワーク。
UI等やルール等のプログラミングを必要なくして、
オセロの人工知能の作成ができます。作成した人工知能で
コンピュータ同士の対戦や人間との対戦ができます。
http://www.geocities.jp/team8bit/
130124
04/10/18 00:05:09ID:6lxdirBj age
131名前は開発中のものです。
04/10/26 01:24:57ID:NJ6dRo97132sage
04/10/30 20:37:51ID:/7gGlUhq >>>>>>123
なんでチェスなん、しょうぎにしなはれ、てつだうよ
なんでチェスなん、しょうぎにしなはれ、てつだうよ
133名前は開発中のものです。
04/10/30 20:43:19ID:CPBb4xe5 >>124
.NET系しか無理なの?ネイティブな言語を使えるならちょっと興味あるんだけど。
.NET系しか無理なの?ネイティブな言語を使えるならちょっと興味あるんだけど。
134124
04/11/22 20:25:43ID:0ypaIRpp137名前は開発中のものです。
04/11/23 21:21:50ID:0Xmb1bTq138131
04/11/23 23:49:20ID:U7/P+cw3139名前は開発中のものです。
04/11/24 12:17:58ID:jlHl4NEJ >>138
パスワードは?
パスワードは?
140名前は開発中のものです。
04/11/24 13:13:46ID:LYnq6hZ4141名前は開発中のものです。
04/11/24 17:18:44ID:jlHl4NEJ 初期配置が変
正式には左上が白
これはダメ
●○
○●
これが正解
○●
●○
正式には左上が白
これはダメ
●○
○●
これが正解
○●
●○
142名前は開発中のものです。
04/11/25 04:29:24ID:hR6jlIJZ143131
04/11/26 01:36:53ID:CO1qZ58U >>139
すまーん、昔パスワード設定してたのがそのまま
残ってた。パスワードも忘れちゃった。。。
というわけで、再あっぷ。パスワードはありません。
ttp://up.isp.2ch.net/up/a5e050cbaeeb.zip
すまーん、昔パスワード設定してたのがそのまま
残ってた。パスワードも忘れちゃった。。。
というわけで、再あっぷ。パスワードはありません。
ttp://up.isp.2ch.net/up/a5e050cbaeeb.zip
144名前は開発中のものです。
04/11/26 19:28:22ID:nwd/oqGi AIリバーシの開発者です。
いろいろ修正箇所があるみたいなので、
近いうちに修正します。
リーグ戦モードとかもほしいですね。
選択した、複数のdllを対戦させて結果を集計する。
いろいろ修正箇所があるみたいなので、
近いうちに修正します。
リーグ戦モードとかもほしいですね。
選択した、複数のdllを対戦させて結果を集計する。
145124
04/12/04 14:49:42ID:gQgEz/b/ 保守あげ
146名前は開発中のものです。
04/12/04 16:32:58ID:ufQlLsO/147名前は開発中のものです。
04/12/05 01:49:20ID:hcIz+0Iu >>146
各国(アメリカ,オランダ,ドイツ,イタリア,フランス,イギリス)のオセロサイト@日本オセロ連盟
http://www.othello.gr.jp/link/link.html
ここからリンクされてる解説では左下が黒
Y!USA以外にも左下が白になってるゲームをいくつか見つけたけど
Y!USAですらロゴは左下が黒
ttp://us.i1.yimg.com/us.yimg.com/i/us/ga/sl/rv.gif
ロジステロ、WZebraなど有名ソフトは左下が黒
(オプションで逆にできるソフトもあった)
などから考えてY!USAがあまり深く考えて無かっただけだと思った
各国(アメリカ,オランダ,ドイツ,イタリア,フランス,イギリス)のオセロサイト@日本オセロ連盟
http://www.othello.gr.jp/link/link.html
ここからリンクされてる解説では左下が黒
Y!USA以外にも左下が白になってるゲームをいくつか見つけたけど
Y!USAですらロゴは左下が黒
ttp://us.i1.yimg.com/us.yimg.com/i/us/ga/sl/rv.gif
ロジステロ、WZebraなど有名ソフトは左下が黒
(オプションで逆にできるソフトもあった)
などから考えてY!USAがあまり深く考えて無かっただけだと思った
148名前は開発中のものです。
04/12/05 11:38:36ID:dP98iOtv 観戦する人が真横から見た状態と考えてみる
149124
04/12/05 19:25:57ID:WZALd2Lv150名前は開発中のものです。
04/12/08 16:54:42ID:Gi0qtPED >>149
ただの総当りで順位とかは考えてないです。
わかりやすいようにwikiに勝敗数を書き加えておきました。
先手後手を入れ替えて同じ相手と二度戦います。
基本的には一発勝負ですが時間切れなどは再試合となります。
強さの目安とAI作成のやる気に繋がればと思い表を作成しました。
このスレでアップされたAIは全て戦わせていこうと思っています。
>>左下に白or黒?
他のソフトにあわせていただけると対戦させるときに楽ができていいなぁ・・・なんて。
ただの総当りで順位とかは考えてないです。
わかりやすいようにwikiに勝敗数を書き加えておきました。
先手後手を入れ替えて同じ相手と二度戦います。
基本的には一発勝負ですが時間切れなどは再試合となります。
強さの目安とAI作成のやる気に繋がればと思い表を作成しました。
このスレでアップされたAIは全て戦わせていこうと思っています。
>>左下に白or黒?
他のソフトにあわせていただけると対戦させるときに楽ができていいなぁ・・・なんて。
151名前は開発中のものです。
04/12/09 05:28:48ID:xa3u+hyT AIリバーシ1.4キタ━━━━━━(゚∀゚)━━━━━━ !!
http://www.geocities.jp/team8bit/index.html
http://www.geocities.jp/team8bit/index.html
152124
04/12/15 20:48:32ID:JZjqhTry153名前は開発中のものです。
04/12/18 21:05:52ID:NINQi9jk 漏れもオセロ作り始めました。まだ思考ルーチン書いてない&Javaだけどよろ。
ttp://f57.aaa.livedoor.jp/~javagame/#othello
ttp://f57.aaa.livedoor.jp/~javagame/#othello
154名前は開発中のものです。
04/12/25 14:40:20ID:jC/sMZiw155名前は開発中のものです。
05/02/20 21:45:02ID:zGNXUfDk 簡単な盤面評価のみでCPUの手を決定するリバーシ作ってみました。
http://www.sm.rim.or.jp/~shishido/rev.html
さすがに「先」のこと何も考えないプログラムだとCPUに負ける方が難しい(^^;。
CPU同士の対戦は爆笑物w
http://www.sm.rim.or.jp/~shishido/rev.html
さすがに「先」のこと何も考えないプログラムだとCPUに負ける方が難しい(^^;。
CPU同士の対戦は爆笑物w
156名前は開発中のものです。
05/02/28 20:23:06ID:IrM267L5 nage
157名前は開発中のものです。
05/02/28 20:37:12ID:Q8GR8m6a 角周りは取らないぐらいしとけよ・・・
158名前は開発中のものです。
05/03/13 20:07:31ID:7O+hOcCJ とりあえずRPGツクール製オセロに負けるな
ttp://suppy1632.hp.infoseek.co.jp/game/index.html
ttp://suppy1632.hp.infoseek.co.jp/game/index.html
159名前は開発中のものです。
05/03/13 20:45:59ID:CKuTZdWW AIはLispが開発効率が良いと聞いた
160名前は開発中のものです。
05/03/13 20:51:47ID:DBlp8sdp161名前は開発中のものです。
05/03/13 20:53:17ID:DBlp8sdp あと、リストを効率良く扱える言語。
162名前は開発中のものです。
2005/03/26(土) 16:30:53ID:6d63TAHh 最近の型推論のある関数型言語に触っちゃうとLispは不便に感じる
163名前は開発中のものです。
2005/03/27(日) 18:24:39ID:e0q37bi0 将棋,チェスでの詰みの判定ってどうやるんだ?
俺にはまったくわからん(;´Д`)
俺にはまったくわからん(;´Д`)
164名前は開発中のものです。
2005/03/27(日) 21:48:57ID:4lT2WEWr 王を取る手の評価を評価できる値の最大値として
王を取られる手の評価を最小値とする。
指すことができる手がどれも最小値なら詰み。
王を取られる手の評価を最小値とする。
指すことができる手がどれも最小値なら詰み。
165名前は開発中のものです。
2005/03/29(火) 12:08:43ID:iomZmKZn 手番側に御飯がなかったら詰み
166名前は開発中のものです。
2005/03/29(火) 12:09:56ID:iomZmKZn 間違えた、
手番側に合法手がなかったら詰み
手番側に合法手がなかったら詰み
167名無し名人
2005/04/03(日) 02:08:06ID:NgV9szJO ゲ製技板のみなさん、こんばんわ
現在囲碁将棋板では百人組み手なるイベントを開催してます
開発したアルゴリズムを人間相手に試してみませんか?
興味あるかたは是非遊びにきてください
∧_∧ パチ!
( ´∀`) < 王手! 2次でもやります
(_⊃__)__ ∧_∧
(_|\キキキ(∀`; ) 【 百 人 組 み 手 】
“ヾ | ̄ ̄゛と __)
“ ̄ ̄ (__)_) 目指せ全板交流!
プレ開催 2日(土) 3日(日)
本開催 8日(金) 9日(土)
4/2(土)から Yahoo!GAMESにて開催!
囲碁・将棋・チェス・オセロに腕の覚えのある奴、ない奴、
今すぐ http://igoshogi2.hp.infoseek.co.jp/kumite.html に来たれ!!!
詳しい時間、受け手の有無などは当日下記のスレをご覧ください。
第2回2ch人気トーナメント特別対局【百人組み手】
http://game9.2ch.net/test/read.cgi/bgame/1110773385/
現在囲碁将棋板では百人組み手なるイベントを開催してます
開発したアルゴリズムを人間相手に試してみませんか?
興味あるかたは是非遊びにきてください
∧_∧ パチ!
( ´∀`) < 王手! 2次でもやります
(_⊃__)__ ∧_∧
(_|\キキキ(∀`; ) 【 百 人 組 み 手 】
“ヾ | ̄ ̄゛と __)
“ ̄ ̄ (__)_) 目指せ全板交流!
プレ開催 2日(土) 3日(日)
本開催 8日(金) 9日(土)
4/2(土)から Yahoo!GAMESにて開催!
囲碁・将棋・チェス・オセロに腕の覚えのある奴、ない奴、
今すぐ http://igoshogi2.hp.infoseek.co.jp/kumite.html に来たれ!!!
詳しい時間、受け手の有無などは当日下記のスレをご覧ください。
第2回2ch人気トーナメント特別対局【百人組み手】
http://game9.2ch.net/test/read.cgi/bgame/1110773385/
168名前は開発中のものです。
2005/06/09(木) 22:13:50ID:ZSMa8wY6 Bonanza?
169名前は開発中のものです。
2005/06/10(金) 18:51:50ID:Qn2POV14 http://www2.odn.ne.jp/yourswow/uku/gallery/sai.gif
そこに打つのでおじゃる。
そこに打つのでおじゃる。
170名前は開発中のものです。
2005/10/12(水) 15:15:38ID:WI1zqV2M 四通八達図式を自動的に導き出すプログラムをC言語を使って作りたいんです
が、参考になるサイト、または本があったら教えてください。
が、参考になるサイト、または本があったら教えてください。
171名前は開発中のものです。
2005/10/15(土) 22:23:30ID:1G3vaMgQ ここの「囲碁プログラムの作り方[基本編]〜[上級編]」は参考になるよ
ttp://homepage1.nifty.com/Ike/katsunari/
ttp://homepage1.nifty.com/Ike/katsunari/
172名前は開発中のものです。
2005/10/16(日) 10:19:01ID:4Acp8/ip 【人間】対局禁止令【ソフト】
http://game9.2ch.net/test/read.cgi/bgame/1129306415/l50
http://game9.2ch.net/test/read.cgi/bgame/1129306415/l50
173名前は開発中のものです。
2005/11/16(水) 09:57:51ID:f06QVQmN 489 :デフォルトの名無しさん [age] :2005/11/16(水) 09:16:51
「コンピュータ囲碁の入門」出た
ttp://www.kyoritsu-pub.co.jp/shinkan/shin0511_02.html
「コンピュータ囲碁の入門」出た
ttp://www.kyoritsu-pub.co.jp/shinkan/shin0511_02.html
174名前は開発中のものです。
2006/03/16(木) 00:41:18ID:yzRgxseK あ
175名前は開発中のものです。
2006/03/22(水) 23:42:04ID:vkTXhv7l 六角形オセロ
ttp://www.forest.impress.co.jp/article/2006/03/16/hexalreversi.html
つまらん。('A`)
というか、普通のオセロの方が奥深い気がする…
ttp://www.forest.impress.co.jp/article/2006/03/16/hexalreversi.html
つまらん。('A`)
というか、普通のオセロの方が奥深い気がする…
176名前は開発中のものです。
2006/04/19(水) 23:08:29ID:DffBqyLp 円形オセロ
177名前は開発中のものです。
2006/05/17(水) 16:17:21ID:zNRWs9Vk 誰か囲連星の強いプログラムを作ってくれ。
http://irensei.com/
http://irensei.com/
178名前は開発中のものです。
2006/05/24(水) 02:42:18ID:uUkE2Sm7 >>177
たしかに弱い
たしかに弱い
179名前は開発中のものです。
2006/08/24(木) 00:30:07ID:KoWjUKap 保守
180名前は開発中のものです。
2006/09/11(月) 07:47:50ID:53++tl6w オセロの簡単な裏返し判定の仕方がわからん!
思いつくのはめんどくさいものばかり・・・。
5行ぐらいで書けんものかね
思いつくのはめんどくさいものばかり・・・。
5行ぐらいで書けんものかね
181名前は開発中のものです。
2006/09/11(月) 08:28:06ID:Z0AEurxf 普通に書いても5行くらいじゃないかね。
}だけの行とかを省けば。
}だけの行とかを省けば。
182名前は開発中のものです。
2006/09/11(月) 17:01:08ID:53++tl6w それをぜひ教えてもらいたい
183王
2006/10/03(火) 19:48:14ID:ssSQFQDH 皆さん:
私はc言語を勉強し始めたばかりなので、何方が教えて欲しいんですが、”typedef”って何ですか。分かっている方に説明して頂く、もしくは適当なホームページを教えてください。
メールアドレス:ou-gain@hotmail.co.jp
私はc言語を勉強し始めたばかりなので、何方が教えて欲しいんですが、”typedef”って何ですか。分かっている方に説明して頂く、もしくは適当なホームページを教えてください。
メールアドレス:ou-gain@hotmail.co.jp
184名前は開発中のものです。
2006/10/06(金) 08:32:50ID:H6NBItu/ 型名の定義
185名前は開発中のものです。
2006/10/06(金) 15:20:30ID:BZAZHA4r 構造体をつくるのに typedef struct 型名{〜} って書く以外に使った事がないな。
他に使い方あるの?
他に使い方あるの?
186名前は開発中のものです。
2006/10/09(月) 15:22:36ID:t31lpLSa 関数ポインタ
187名前は開発中のものです。
2006/10/19(木) 22:25:50ID:JdYr9qe3 ボイーンた
188名前は開発中のものです。
2006/12/23(土) 12:04:02ID:Hiyjpqfb189名前は開発中のものです。
2006/12/23(土) 15:06:44ID:uBKqEo7O190名前は開発中のものです。
2007/08/15(水) 14:23:59ID:eTu4t7jm 最近囲碁にハマってるからなんか作ってよ
191名前は開発中のものです。
2007/10/11(木) 18:25:21ID:WcPq61Rp 盲人がキーボードだけで出来る将棋ソフトなんてないでしょうか
http://siva.cc.hirosaki-u.ac.jp/usr/koyama/syogi/
今これを使ってみているんだけど、不具合が多くてなかなか進まない
http://siva.cc.hirosaki-u.ac.jp/usr/koyama/syogi/
今これを使ってみているんだけど、不具合が多くてなかなか進まない
192名前は開発中のものです。
2007/10/12(金) 13:14:09ID:PIfwULpF >>191
ここは、作る人の板なので、板違いですよ
ここは、作る人の板なので、板違いですよ
193名前は開発中のものです。
2007/11/12(月) 15:20:03ID:FN67Ysmj http://e.x0.com/~i-mode/iothello/game/
194名前は開発中のものです。
2008/02/16(土) 09:58:58ID:KtZWjP5k CUDAなどを使ってGPUで計算させると面白そうだ。
195名前は開発中のものです。
2008/04/30(水) 15:20:28ID:4Fbo/hMM コンピューターの読みを出力させるにはどうすればいいの?
196名前は開発中のものです。
2008/05/10(土) 23:17:40ID:UE0xWEqz 実際の音声で単語を録音して、組み合わせるしかない
197名前は開発中のものです。
2008/05/12(月) 14:49:54ID:mBwB2m7O やはり女性の声がいいですよね、探してみます
198名前は開発中のものです。
2008/05/25(日) 12:52:24ID:v7y4T+jh199名前は開発中のものです。
2008/06/03(火) 17:09:36ID:bT9imSji オセロはとりあえず、全検索で獲得枚数で重み付け出来れば形にはなる。
環境によって5〜6手読めればそこそこ強いんじゃないか?オレはその時点で勝てない。
定跡は難しいね。そもそも定跡あるかも知らん
環境によって5〜6手読めればそこそこ強いんじゃないか?オレはその時点で勝てない。
定跡は難しいね。そもそも定跡あるかも知らん
200名前は開発中のものです。
2008/06/04(水) 14:37:57ID:FeKBeHI/ 200
201名前は開発中のものです。
2008/06/04(水) 14:45:10ID:FeKBeHI/ 201
202名前は開発中のものです。
2008/06/08(日) 10:45:03ID:37N7/8Py203名前は開発中のものです。
2008/06/11(水) 11:49:01ID:vU6TibJg204名前は開発中のものです。
2008/08/11(月) 16:47:59ID:LInsAIev 室内ゲームのオリンピックとかあったら面白そうだよね(´・ω・`)下は主な種目
バックギャモン等の勝敗が運という不確定要素で変わるものは除外
囲碁
将棋
麻雀
チェス
チェッカー
ダイヤモンドゲーム
オセロ
バックギャモン等の勝敗が運という不確定要素で変わるものは除外
囲碁
将棋
麻雀
チェス
チェッカー
ダイヤモンドゲーム
オセロ
205名前は開発中のものです。
2008/08/11(月) 18:44:31ID:ke9AzWI1206名前は開発中のものです。
2008/08/12(火) 00:01:54ID:SwJzMxYu >>204
バックギャモンより麻雀のほうが運の要素が高い気がする
バックギャモンより麻雀のほうが運の要素が高い気がする
207名前は開発中のものです。
2008/08/13(水) 23:24:32ID:K0IzuDEe 麻雀は非公開の不確定でしかも通常4人だろ
208206
2008/08/14(木) 04:14:09ID:pnoBoDTH 確かに不確定要素除外なら
二人零和有限確定完全情報ゲーム限定になってしまうね。
バックギャモンは上手い人には勝てないし
覚えたての人には絶対負けなさそうだけど
麻雀は半荘だとルールを知っただけのその日に
トップを取れることもあるから
麻雀のほうが運の要素が高いと考えてるんだけど。
確かに麻雀は研究が進んでないから
勝負になるのかもしれないけどね。
二人零和有限確定完全情報ゲーム限定になってしまうね。
バックギャモンは上手い人には勝てないし
覚えたての人には絶対負けなさそうだけど
麻雀は半荘だとルールを知っただけのその日に
トップを取れることもあるから
麻雀のほうが運の要素が高いと考えてるんだけど。
確かに麻雀は研究が進んでないから
勝負になるのかもしれないけどね。
209名前は開発中のものです。
2008/08/14(木) 04:30:00ID:oqQ4XHlW 伏せてある要素を知らない限り運だろ
210名前は開発中のものです。
2008/08/14(木) 09:45:11ID:3T//7uKC 配牌要素のある麻雀がありなら、UNOもありになるな。
不確定要素もありにして、数回勝負にするほうがよくね?
あと、個人的にはジェンガなんかの手先系も欲しい。
不確定要素もありにして、数回勝負にするほうがよくね?
あと、個人的にはジェンガなんかの手先系も欲しい。
211名前は開発中のものです。
2008/08/14(木) 22:31:56ID:G3UBgpZ/ >208
207だが、だから運の要素が強いんだよな?
207だが、だから運の要素が強いんだよな?
212名前は開発中のものです。
2008/08/14(木) 22:57:48ID:B7Wd7jtf うん
伏せられてる要素を知っちゃったらプレイしてるとは言えないから
伏せられてる要素を知っちゃったらプレイしてるとは言えないから
213名前は開発中のものです。
2008/08/22(金) 11:28:16ID:xIm9fthD 麻雀って研究進んでない?
最善手の検索自体は頭打ちのようなキガスルが。
最善手の検索自体は頭打ちのようなキガスルが。
214名前は開発中のものです。
2008/09/18(木) 02:41:51ID:WM6ksVHC 今将棋ソフトをC#で作ってます
ベースの将棋プログラムがあって
AI部分はそれぞれのプログラマがdllで書いて、みんなでdllファイルをうpし合って対戦
みたいなのがあればなと思っています
.
ベースの将棋プログラムがあって
AI部分はそれぞれのプログラマがdllで書いて、みんなでdllファイルをうpし合って対戦
みたいなのがあればなと思っています
.
215名前は開発中のものです。
2008/09/18(木) 23:14:01ID:FjpYuFhq つ 将棋所
216名前は開発中のものです。
2008/09/19(金) 00:06:28ID:vSliV0Hi217名前は開発中のものです。
2008/09/19(金) 01:57:06ID:oNQY3VeL これから何かを学ぼうとする人間の態度じゃないな、この雑魚
218名前は開発中のものです。
2008/09/19(金) 03:02:49ID:jhprjtul219名前は開発中のものです。
2008/10/02(木) 14:32:26ID:BqcJEAH9 思考エンジンを>>218がうpしてくれるのwktkしてまってる
220名前は開発中のものです。
2008/10/03(金) 00:40:55ID:1JgFthiv まず将棋の駒なんだがダサい。
もっとチェスみたいにセンス良いのに変えて。
それと動かし方も特殊なの作って。
もっとチェスみたいにセンス良いのに変えて。
それと動かし方も特殊なの作って。
221名前は開発中のものです。
2008/10/03(金) 11:29:32ID:w2DAyZcd そう思うなら自分が作れば良いのに
222名前は開発中のものです。
2008/10/04(土) 04:35:51ID:TRmXkKzz チェスの駒なんて幼稚でダサイ
223名前は開発中のものです。
2008/10/04(土) 13:01:40ID:VpyxnnCf 古いチェスソフトだがBattleChess
コマが甲冑着た兵士で、動かすとそのマスまで歩いていって敵のコマを斬りつけて倒すのが衝撃的だった
コマが甲冑着た兵士で、動かすとそのマスまで歩いていって敵のコマを斬りつけて倒すのが衝撃的だった
224218
2008/10/06(月) 03:50:43ID:1QX8X5Nt225名前は開発中のものです。
2008/10/06(月) 16:53:13ID:swcT6QuF226名前は開発中のものです。
2008/10/06(月) 19:18:36ID:BsYoDmVL >>225
ビジュアル的に衝撃的という意味だ、馬鹿がw
ビジュアル的に衝撃的という意味だ、馬鹿がw
227名前は開発中のものです。
2008/10/07(火) 22:15:10ID:myhHSj3x 衝撃的でもなんでもない。
元が兵士だの王様だのの戦いだろが。
そういうのをゲームにしたのがチェスだろ。
元が兵士だの王様だのの戦いだろが。
そういうのをゲームにしたのがチェスだろ。
228名前は開発中のものです。
2008/10/14(火) 11:55:17ID:8vvv4eB8 ビジュアル的とか一切言ってない>>223が悪い
229名前は開発中のものです。
2008/10/14(火) 15:31:10ID:Av4ni/WQ 将棋もチェスも元が兵士だの王様だのの戦いなのは今さら口に出して言うことが恥ずかしいほどの常識
明言してないからと言ってそれを汲み取れない>>223が馬鹿
明言してないからと言ってそれを汲み取れない>>223が馬鹿
230名前は開発中のものです。
2008/10/14(火) 20:15:57ID:OYNkgCVY これだからチェス厨は┐(´〜`;)┌
231名前は開発中のものです。
2008/10/15(水) 22:56:17ID:GHJkid7K ん、斬新な解釈じゃなくて、アニメーション効果に衝撃を受けたんじゃないのかと思ったんだが、
なんで古代の戦争を模したという常識を知らないという前提で叩いてるの?
なんで古代の戦争を模したという常識を知らないという前提で叩いてるの?
232名前は開発中のものです。
2009/02/11(水) 10:31:05ID:s/ghzSCn233名前は開発中のものです。
2009/03/13(金) 03:22:31ID:B9n5WX1A ハゲタカのえじきとかなら、さっくりさくさく作れないかなあ
234名前は開発中のものです。
2009/06/13(土) 07:41:09ID:2+1LYKG9 あげ
235名前は開発中のものです。
2009/06/16(火) 02:11:21ID:1CAlzcIC 習作のため、一番簡単なゲームってなんだろ?
236名前は開発中のものです。
2009/06/16(火) 10:40:56ID:f0RK5lBp ┌─┬─┬─┐
│ │ │ │
├─┼─┼─┤
│ │○│ │
├─┼─┼─┤
│ │ │×│
└─┴─┴─┘
│ │ │ │
├─┼─┼─┤
│ │○│ │
├─┼─┼─┤
│ │ │×│
└─┴─┴─┘
237名前は開発中のものです。
2009/06/16(火) 10:46:24ID:1CAlzcIC 言われてみれば確かにッ!
238名前は開発中のものです。
2009/06/25(木) 22:18:37ID:5GUe6Bd4 オセロ完全解析してゲ製作板大勝利しようぜ
239名前は開発中のものです。
2009/06/25(木) 22:47:31ID:DQSdZSpu うむ
240名前は開発中のものです。
2009/08/03(月) 22:14:14ID:f4vLj/hM 例えばポーカーなんかで、
1枚ドローするところを、内部的に2枚引いておいて強い方を採用する…
っていうのは、プレイヤーにバレちゃうものだろうか。
1枚ドローするところを、内部的に2枚引いておいて強い方を採用する…
っていうのは、プレイヤーにバレちゃうものだろうか。
241名前は開発中のものです。
2009/08/03(月) 23:35:10ID:2X7HBGWU 採用しなかったほうを引く山に戻すならばれにくい。
捨て札にしたら、最後に山の数が合わなくなってばれる。
捨て札にしたら、最後に山の数が合わなくなってばれる。
242名前は開発中のものです。
2009/08/07(金) 18:27:28ID:R45zmvwz 山札に戻すのは、当然として。
戻すときに一番上/下に戻すのと、ランダムな位置に戻すのとでは、また変わってきそうね。
対戦相手となるキャラ(コンピュータ)ごとに特殊能力が設定してあって、
ドロー運がとんでもなく高いキャラとかなら、十分に使える方法かなとは思ってるけれど。
戻すときに一番上/下に戻すのと、ランダムな位置に戻すのとでは、また変わってきそうね。
対戦相手となるキャラ(コンピュータ)ごとに特殊能力が設定してあって、
ドロー運がとんでもなく高いキャラとかなら、十分に使える方法かなとは思ってるけれど。
243242
2009/08/07(金) 18:30:04ID:R45zmvwz 失礼。
>242の1段落目は>241へのレス、2段落目は2枚ドローの話題全体へのレス。
んー、確率計算をちゃんとするプレイヤーには評判悪そうだなあ。
>242の1段落目は>241へのレス、2段落目は2枚ドローの話題全体へのレス。
んー、確率計算をちゃんとするプレイヤーには評判悪そうだなあ。
244名前は開発中のものです。
2009/10/17(土) 17:43:31ID:71MZbNWZ 別所でコピペされてたヤツだけど、面白そうではあるな。
ttp://uecda.nishino-lab.jp/2009/
ttp://uecda.nishino-lab.jp/2009/
245名前は開発中のものです。
2011/10/31(月) 17:57:13.54ID:pGv+tMRbttp://jbbs.livedoor.jp/bbs/read.cgi/game/6486/1055326755/231n-
246名前は開発中のものです。
2011/11/01(火) 08:52:13.81ID:GguZlPOT 将棋モドキなら昔から誰もがいくつも考えて出してる。
そのどれもが将棋を超えられなかった。
なぜなら新しくルールを覚えるのが面倒だから。
なので将棋型対戦ゲームは、面白くてプレイ人口が多いものに収束していってしまう。
新作側がそれを乗り越えるには、作り手がよほど苦労して広めるしかない。
ドラクエは実は構想時にはすでにドラクエ3の要素まで考えられていた。
ただ、いきなり3を出してしまうとプレイヤーがルールについていけない。
なので、ポートピア殺人事件というコマンド選択型ゲームをまず出し
次にドラクエ1でRPGの基本的要素を広め
続いて2で仲間を一人づつ増やしてパーティープレイ型を定着させ
それが出来てからやっとドラクエ3を出した。
どんなに面白いものでも、段階的に簡単なものから広めないとうまくいかない。
斬新ルールだが基本的な要素のみに特化した簡易バージョンが必要だ。
そのどれもが将棋を超えられなかった。
なぜなら新しくルールを覚えるのが面倒だから。
なので将棋型対戦ゲームは、面白くてプレイ人口が多いものに収束していってしまう。
新作側がそれを乗り越えるには、作り手がよほど苦労して広めるしかない。
ドラクエは実は構想時にはすでにドラクエ3の要素まで考えられていた。
ただ、いきなり3を出してしまうとプレイヤーがルールについていけない。
なので、ポートピア殺人事件というコマンド選択型ゲームをまず出し
次にドラクエ1でRPGの基本的要素を広め
続いて2で仲間を一人づつ増やしてパーティープレイ型を定着させ
それが出来てからやっとドラクエ3を出した。
どんなに面白いものでも、段階的に簡単なものから広めないとうまくいかない。
斬新ルールだが基本的な要素のみに特化した簡易バージョンが必要だ。
247名前は開発中のものです。
2011/11/02(水) 12:02:01.50ID:w8/vJaN3 >>246
駒二種類減らした4面体(占領、武士、巫女、怨霊)ではどうです?
実際に作ったら、とても手が出せない見積もりを頂きましたので、
没にして6面体に戻しましたけど。
パソコン上で動かすだけなら、負担は減るはずです。
あと駒数を減らすのはOKです。
2個づつから試して慣れるごとに駒数を増やしていってください。
盤面を「5×5」にして試してもいいと思います。
あと「段階的に簡単なもの」があれば、お願いします。
ただ、以上のことを段階的に教えるのはともかく、
各段階のをつくれとかいわれるのは無意味だし経費的にも無理ですね。
駒二種類減らした4面体(占領、武士、巫女、怨霊)ではどうです?
実際に作ったら、とても手が出せない見積もりを頂きましたので、
没にして6面体に戻しましたけど。
パソコン上で動かすだけなら、負担は減るはずです。
あと駒数を減らすのはOKです。
2個づつから試して慣れるごとに駒数を増やしていってください。
盤面を「5×5」にして試してもいいと思います。
あと「段階的に簡単なもの」があれば、お願いします。
ただ、以上のことを段階的に教えるのはともかく、
各段階のをつくれとかいわれるのは無意味だし経費的にも無理ですね。
248名前は開発中のものです。
2011/11/04(金) 11:16:01.70ID:2Ept5nIz そういう問題じゃねぇって。遊ぶ側に苦労を押しつけんなって言ってんの。
テキストでルールとだいたいの遊び方が説明してあるだけの
面白さがわからないゲームで、しかも二人必要だから相手にもルールを覚えさせて
なおかつコマやらボードやらも用意しないといけない、なんて今じゃ誰も手を出さない。
面白さの中心部のみを抽出してすぐに覚えられるゲームにして
フラッシュですぐに遊べるようにして、しかもそこそこ強いCPUが相手してくれる
ぐらいじゃないと、今は客が寄り付かないの。
本気で遊んで欲しいなら、あちこちコピペ貼り付ける苦労をするんじゃなくて
プログラム覚えて自分で完成させるぐらいの苦労をしろ。
俺は自分が遊びたいゲームを作るためにプログラムを覚えた。
テキストでルールとだいたいの遊び方が説明してあるだけの
面白さがわからないゲームで、しかも二人必要だから相手にもルールを覚えさせて
なおかつコマやらボードやらも用意しないといけない、なんて今じゃ誰も手を出さない。
面白さの中心部のみを抽出してすぐに覚えられるゲームにして
フラッシュですぐに遊べるようにして、しかもそこそこ強いCPUが相手してくれる
ぐらいじゃないと、今は客が寄り付かないの。
本気で遊んで欲しいなら、あちこちコピペ貼り付ける苦労をするんじゃなくて
プログラム覚えて自分で完成させるぐらいの苦労をしろ。
俺は自分が遊びたいゲームを作るためにプログラムを覚えた。
249名前は開発中のものです。
2011/11/05(土) 10:41:52.88ID:cjBsr1SG250名前は開発中のものです。
2011/11/07(月) 19:51:57.88ID:zjfEWUd+ だからそういう問題じゃねぇって。
>面白さの中心部のみを抽出してすぐに覚えられるゲームにして
>フラッシュですぐに遊べるようにして、しかもそこそこ強いCPUが相手してくれる
のは、やってるゲームはあるけど
>例えは悪いけど勇者の手を引いて代わりにモンスター倒して
>魔王のところにつれてってて言うくらいの親切さがないと
なんてゲームはないだろうが。例えが悪すぎる。
>面白さの中心部のみを抽出してすぐに覚えられるゲームにして
>フラッシュですぐに遊べるようにして、しかもそこそこ強いCPUが相手してくれる
のは、やってるゲームはあるけど
>例えは悪いけど勇者の手を引いて代わりにモンスター倒して
>魔王のところにつれてってて言うくらいの親切さがないと
なんてゲームはないだろうが。例えが悪すぎる。
251名前は開発中のものです。
2011/11/07(月) 19:59:20.54ID:zjfEWUd+ ゲーム中の楽しい苦労と、ゲーム始めるまでの煩わしい準備の苦労を
同一視するから変な例えになるんだよ。
例えるならハイキングのちょっとした山登りだ。
山のふもとに行くまでに普通の市街地や住宅地を何十キロも歩くのは苦痛。
だから山のふもとまで行くバスが必要だ。ってのが俺の言いたいこと。
お前はそれを「だったら頂上までバスで行けないとダメかもしれませんね」
って言うから話がおかしくなる。
山登りの途中は景色楽しみながらの苦労だからいいんだよ。
同一視するから変な例えになるんだよ。
例えるならハイキングのちょっとした山登りだ。
山のふもとに行くまでに普通の市街地や住宅地を何十キロも歩くのは苦痛。
だから山のふもとまで行くバスが必要だ。ってのが俺の言いたいこと。
お前はそれを「だったら頂上までバスで行けないとダメかもしれませんね」
って言うから話がおかしくなる。
山登りの途中は景色楽しみながらの苦労だからいいんだよ。
252名前は開発中のものです。
2011/11/09(水) 18:31:40.10ID:Gt0xi7Pn コネクト6(六目並べ)
http://www.connect6.org/
http://www.connect6.org/
253名前は開発中のものです。
2011/11/10(木) 22:08:34.35ID:lXNjDaXU >>248
ご指摘ありがとう。
俺はおもちゃ屋で将棋やオセロの隣に並べるのが目標だったから、
プログラム組むとかそういうのは考えてなかった。
ていうか、そんな技術持ってないし。
でも、おっしゃることはごもっともです。
どこかプログラムを替わりにつくってくれるところを検索して探してみます。
ご指摘ありがとう。
俺はおもちゃ屋で将棋やオセロの隣に並べるのが目標だったから、
プログラム組むとかそういうのは考えてなかった。
ていうか、そんな技術持ってないし。
でも、おっしゃることはごもっともです。
どこかプログラムを替わりにつくってくれるところを検索して探してみます。
254名前は開発中のものです。
2011/11/14(月) 19:50:52.02ID:SMI23/ZQ ああ、そっちの方で目指してるのか。なるほど。
でも、それもかなりの茨の道だぞ。
おもちゃ屋で定番になって対戦思考ボードゲームなんて
ホントその将棋やオセロか囲碁ぐらいしかないし。
その他のゲームは出ては消えていくだけの存在だ。
目指すとしたら、ドイツボードゲームの系統かな。
基本的にはサイコロやシャッフルカードを使うものだけど
まれに運要素無しのガチ思考ゲーもあったりするし。
でもその場合、最初に覚える要素が凄く単純なものしか残れないし、ウケない。
でも、それもかなりの茨の道だぞ。
おもちゃ屋で定番になって対戦思考ボードゲームなんて
ホントその将棋やオセロか囲碁ぐらいしかないし。
その他のゲームは出ては消えていくだけの存在だ。
目指すとしたら、ドイツボードゲームの系統かな。
基本的にはサイコロやシャッフルカードを使うものだけど
まれに運要素無しのガチ思考ゲーもあったりするし。
でもその場合、最初に覚える要素が凄く単純なものしか残れないし、ウケない。
255名前は開発中のものです。
2011/11/14(月) 20:00:08.65ID:SMI23/ZQ あと、プログラムを替わりにってのは、金出さないとまず無理だと思う。
ゲームを本気で広めたいなら、プログラムしてでも自分で作るべき。
それが出来ないなら、その程度の本気度でその程度のゲームだったって事だ。
ゲームを本気で広めたいなら、プログラムしてでも自分で作るべき。
それが出来ないなら、その程度の本気度でその程度のゲームだったって事だ。
256名前は開発中のものです。
2012/07/10(火) 15:38:41.19ID:tT32jGKh 将棋プログラムできるサイトない?
257名前は開発中のものです。
2012/07/10(火) 15:40:08.27ID:tT32jGKh 過疎ってるし質問とりやめます
258通りすがりの妖術僧
2012/07/27(金) 16:18:03.62ID:GFEdOn68以下のような本もあるしサイトも結構ありますね。
アマゾンで取扱い
「コンピュータ将棋のアルゴリズム―最強アルゴリズムの探求とプログラミング-I・O-BOOKS-池-泰弘」
259名前は開発中のものです。
2012/10/17(水) 06:16:37.40ID:uzozAJ35 将棋
260名前は開発中のものです。
2012/10/17(水) 07:42:20.83ID:9gtPUv5X261難しいね
2013/01/24(木) 19:30:18.98ID:Kycj3XA0 最近覚えたけど、ぜんぜん勝てない
262名前は開発中のものです。
2013/02/06(水) 18:16:09.27ID:wjeuu1Tw 将棋は頭が良くないと強くなれないのか
http://gogono.net/archives/52047142.html
http://gogono.net/archives/52047142.html
263名前は開発中のものです。
2013/03/06(水) 12:40:47.06ID:W+jOiTz2264名前は開発中のものです。
2013/04/23(火) 07:05:31.51ID:6N0ZI5Zs265 ◆taka1B7CEQ
2013/04/26(金) 18:31:25.31ID:CXgUOPi8 ▽持ち駒:
┌──┐
│▽王│一 最終手
├──┤ には
│▽歩│二 ★☆を
├──┤ 付けて
│▲歩│三 下さい
├──┤
│▲王│四
└──┘
▲持ち駒:
┌──┐
│▽王│一 最終手
├──┤ には
│▽歩│二 ★☆を
├──┤ 付けて
│▲歩│三 下さい
├──┤
│▲王│四
└──┘
▲持ち駒:
266名前は開発中のものです。
2013/05/11(土) 22:28:05.03ID:5yfnRn37 友達と将棋盤に、自分は将棋、相手はチェスを並べて戦っている
(チェスは1列足りないので、キングを中央にくるように、端列は開ける)
取った駒は再利用不可で、昇格は昇格する駒に応じて、チェスは相手の最前線、将棋は相手の3段目で昇格
チェス側が強くて勝てないよ・・・
(チェスは1列足りないので、キングを中央にくるように、端列は開ける)
取った駒は再利用不可で、昇格は昇格する駒に応じて、チェスは相手の最前線、将棋は相手の3段目で昇格
チェス側が強くて勝てないよ・・・
267名前は開発中のものです。
2013/05/12(日) 13:24:34.46ID:9mOVMO8z 将棋側は、あまり動かずに、金・銀を密に連携させて防御陣形をとるべし
チェス側は、ポーン以外はすべて大駒だから、機動力が大きいが、多方向に利くのはクイーンとキングのみだから、そこを狙うべし
クイーンもキングも取られるわけにはいかないから、玉と金2枚で支援して銀2枚を捨てられる将棋側は有利
チェス側はポーンで斜めスクラムを組んで防御前線を張れるが、正面の駒を取れないのが痛い
チェス側は、ポーン以外はすべて大駒だから、機動力が大きいが、多方向に利くのはクイーンとキングのみだから、そこを狙うべし
クイーンもキングも取られるわけにはいかないから、玉と金2枚で支援して銀2枚を捨てられる将棋側は有利
チェス側はポーンで斜めスクラムを組んで防御前線を張れるが、正面の駒を取れないのが痛い
268名前は開発中のものです。
2013/05/13(月) 17:58:19.66ID:be264q5E Zillions of Gamesをインストールすれば、自作ゲームがすぐに作れるよ
http://www.zillions-of-games.com/
Zillions Rules File (ZRF)というルールファイルを、テキストエディタで構文に従って書き換えるだけ
http://www.nakajim.net/index.php?%E3%82%A2%E3%83%96%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%83%88%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC
もとのゲームファイルの修正で済むようなもの(駒数変更,駒の移動範囲の変更,盤の升目数の変更など)はとても簡単
他の人がアレンジしたボードゲームのZRFも、ダウンロードして参照すると使用可能
http://www.zillions-of-games.com/games/index.html
http://www.zillions-of-games.com/
Zillions Rules File (ZRF)というルールファイルを、テキストエディタで構文に従って書き換えるだけ
http://www.nakajim.net/index.php?%E3%82%A2%E3%83%96%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%83%88%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC
もとのゲームファイルの修正で済むようなもの(駒数変更,駒の移動範囲の変更,盤の升目数の変更など)はとても簡単
他の人がアレンジしたボードゲームのZRFも、ダウンロードして参照すると使用可能
http://www.zillions-of-games.com/games/index.html
269名前は開発中のものです。
2013/05/18(土) 09:32:23.57ID:CiGW0TGT 将棋対チェスのゲームって売ってるのかな?
270名前は開発中のものです。
2013/05/18(土) 23:16:41.04ID:3YHAJpG/ わざわざそれだけのために買うやつなんていないだろ
271名前は開発中のものです。
2013/05/20(月) 20:20:47.74ID:Jmw0rbja ZoGの中将棋AIは最強らしいから、やってみたいな
有料だから残念か
将棋対チェスは、ggると調整されたルールが出てくる
有料だから残念か
将棋対チェスは、ggると調整されたルールが出てくる
272名前は開発中のものです。
2013/05/24(金) 18:09:30.06ID:35JPsAxI >>271
調整ルールの詳細希望!
調整ルールの詳細希望!
274名前は開発中のものです。
2013/05/24(金) 22:15:10.72ID:kIYPN4Ka275名前は開発中のものです。
2013/05/24(金) 23:20:25.94ID:o/L4nan1 6手にて変化の余地なくスティールメイト負け。
276名前は開発中のものです。
2013/05/26(日) 02:43:56.90ID:Px4RuB9Z >>273
サンクスです
確かに大駒中心のチェス側は、高い機動力を生かして序盤は優勢だけど、
終盤は取り合いになると、守備範囲が狭いチェス側は守りきれなくて死ぬ
ある程度、駒をとってから打てるようになるわけね・・・
将棋側はチェス駒を打つわけだけど、チェス駒はナイト以外は向きが分かりにくいから、相手に使用されると嫌だな
サンクスです
確かに大駒中心のチェス側は、高い機動力を生かして序盤は優勢だけど、
終盤は取り合いになると、守備範囲が狭いチェス側は守りきれなくて死ぬ
ある程度、駒をとってから打てるようになるわけね・・・
将棋側はチェス駒を打つわけだけど、チェス駒はナイト以外は向きが分かりにくいから、相手に使用されると嫌だな
リアでやる時は色反転させるからおk
これでもチェス側が勝つとなれば、一気に決める必要があったりして。(w
将棋が金銀で固めてしまうと手がでないヨ。。。
将棋対シャンチーもあるかな
これでもチェス側が勝つとなれば、一気に決める必要があったりして。(w
将棋が金銀で固めてしまうと手がでないヨ。。。
将棋対シャンチーもあるかな
278名前は開発中のものです。
2013/05/26(日) 12:06:35.03ID:KdBMZZS6 米韓戦:チャンギ(韓国将棋) VS チェスなら、あるよ
http://www.zillions-of-games.com/cgi-bin/zilligames/submissions.cgi/55557?do=show;id=553
日中戦:シャンチー VS 将棋とか、誰か作ってくれないかな・・・
4人プレイで、チェス VS 将棋 VS シャンチー VS チャンギのバトルロワイヤルとか面白そう
http://www.zillions-of-games.com/cgi-bin/zilligames/submissions.cgi/55557?do=show;id=553
日中戦:シャンチー VS 将棋とか、誰か作ってくれないかな・・・
4人プレイで、チェス VS 将棋 VS シャンチー VS チャンギのバトルロワイヤルとか面白そう
279名前は開発中のものです。
2013/05/26(日) 12:11:22.32ID:KdBMZZS6 日米戦:チェス VS 将棋は、すでにHSPで専用ソフトが存在していてビックリ!
http://hsp.tv/contest2010/entry.php?id=23
ルールをもっと可変式にして欲しいな・・・
昇格線の位置、駒の再利用の有無、チェス側が空ける列の変更とか・・・
http://hsp.tv/contest2010/entry.php?id=23
ルールをもっと可変式にして欲しいな・・・
昇格線の位置、駒の再利用の有無、チェス側が空ける列の変更とか・・・
280名前は開発中のものです。
2013/05/26(日) 20:14:44.85ID:eRYu9esk281名前は開発中のものです。
2013/05/27(月) 19:39:26.72ID:9pbfjPhK まずはHPでソフト(体験版:無料)をダウンロード
これで、デフォルトの48種類のゲームが可能(将棋,チェス,チャンギ,シャンチー,マックルックなど)
使用期限はないけど、機能制限(自作ルールが使用不能)あり
次に、Help>Unlock Full Versionを開いて、NameとCodeに数字を入力すると、機能制限が解除されるよ
これで、OpenRuleGamesから参照することで、ダウンロードサイトの亜種ゲームや変則ゲームも使用可能になる
間違っても、「Zillions of Games」,「keycode」,「serial number」,「passward」などでググってはいかん!
(倫理的にね・・・)
これで、デフォルトの48種類のゲームが可能(将棋,チェス,チャンギ,シャンチー,マックルックなど)
使用期限はないけど、機能制限(自作ルールが使用不能)あり
次に、Help>Unlock Full Versionを開いて、NameとCodeに数字を入力すると、機能制限が解除されるよ
これで、OpenRuleGamesから参照することで、ダウンロードサイトの亜種ゲームや変則ゲームも使用可能になる
間違っても、「Zillions of Games」,「keycode」,「serial number」,「passward」などでググってはいかん!
(倫理的にね・・・)
282名前は開発中のものです。
2013/05/27(月) 19:44:10.89ID:9pbfjPhK >277
そうか、将棋側は、使っていない相手(チェス側と逆の色)のチェス駒を使えば良いのか・・・
チェスの駒は、打ち詰めたり、合い駒を打ったりするのに向いていない・・・
でも、チェス側が手に入れるのは将棋側の駒だから良いのか
相手に取られたチェス駒を、さらに取り返して打てるとなると、チェス側はチェス駒を打てるわけで、新感覚だな
そうか、将棋側は、使っていない相手(チェス側と逆の色)のチェス駒を使えば良いのか・・・
チェスの駒は、打ち詰めたり、合い駒を打ったりするのに向いていない・・・
でも、チェス側が手に入れるのは将棋側の駒だから良いのか
相手に取られたチェス駒を、さらに取り返して打てるとなると、チェス側はチェス駒を打てるわけで、新感覚だな
283名前は開発中のものです。
2013/05/28(火) 18:33:34.08ID:E62L+nG5284名前は開発中のものです。
2013/05/31(金) 23:01:31.34ID:/iCd6FrU 3Dチェスのソフトを作るスレに乗っ取り!
285名前は開発中のものです。
2013/06/07(金) 06:49:37.26ID:22I90z1d286名前は開発中のものです。
2013/06/08(土) 19:23:27.40ID:NBTDQ+RS 立体チェスとか、円形チェスとか、六角形チェスとか、チェス系はバリエーションがスゴイ!
287 ◆ZSCoFl63NY
2013/06/09(日) 17:15:43.33ID:R+TCfNWQ 他スレでなかなかレスがつかずにこちらにカキコしました。
ループオセロを作りました。exeファイルなどはトラブル防止のため、あえて添付していません。
動作環境はWindowsです。Cコンパイラがない方は、同梱のreadme.txtを参照してください。
コンパイル方法はreadme.txtに全て記述してあります。
↓にうpしてあります。
http://soft186.e-whs.jp/cgi-bin/up2/img/55.zip
少々強引なコーディングですが、何とか形になりました。
率直な感想を聞きたいので、どうかダウンロード&コンパイル&プレイしてやって下さい。
私のスペックですが、C/C++がそこそこ使えて、フリーソフトを公開した実績がありますが
プログラマとしての実務経験はほぼゼロです。
ループオセロを作りました。exeファイルなどはトラブル防止のため、あえて添付していません。
動作環境はWindowsです。Cコンパイラがない方は、同梱のreadme.txtを参照してください。
コンパイル方法はreadme.txtに全て記述してあります。
↓にうpしてあります。
http://soft186.e-whs.jp/cgi-bin/up2/img/55.zip
少々強引なコーディングですが、何とか形になりました。
率直な感想を聞きたいので、どうかダウンロード&コンパイル&プレイしてやって下さい。
私のスペックですが、C/C++がそこそこ使えて、フリーソフトを公開した実績がありますが
プログラマとしての実務経験はほぼゼロです。
288名前は開発中のものです。
2013/06/13(木) 18:55:25.55ID:8V7u006/ なんかドラクエの世界地図みたいですね
東西ループ+南北ループ
もはや角や端は意味を持たない
最後までどんでん返しがあり得るが、盤のマスは有限と
なかなか面白いのでは?
メール希望者には、exeで送っても良いのでは?
できれば、その技術で、「チェスVS将棋」のインターフェイスを作って欲しい
AIなしの対人対戦専用ソフトで
東西ループ+南北ループ
もはや角や端は意味を持たない
最後までどんでん返しがあり得るが、盤のマスは有限と
なかなか面白いのでは?
メール希望者には、exeで送っても良いのでは?
できれば、その技術で、「チェスVS将棋」のインターフェイスを作って欲しい
AIなしの対人対戦専用ソフトで
289名前は開発中のものです。
2013/06/13(木) 19:04:52.78ID:3uTeAlkg ドーナツオセロか
290名前は開発中のものです。
2013/06/14(金) 17:56:33.48ID:4WX+Y1yW 正確には、平坦トーラス(曲率0の円環円筒)です
291名前は開発中のものです。
2013/06/15(土) 21:26:29.87ID:Yvu65IEz >>287
がんばれ!!
がんばれ!!
292名前は開発中のものです。
2013/06/16(日) 12:19:37.51ID:THgmSpSn 縦列が一周ごとに下にずれたり
横列が一周ごとに右にずれたりすると
更にややこしくなる。
ていうか残り1枚から大逆転が可能になる
横列が一周ごとに右にずれたりすると
更にややこしくなる。
ていうか残り1枚から大逆転が可能になる
293名前は開発中のものです。
2013/06/16(日) 12:26:37.95ID:HJz6eymc 赤・白・黒の3色オセロは既出?
294名前は開発中のものです。
2013/06/19(水) 00:32:19.46ID:KWgkgQFb 4色でやってるTV番組があるぜ
295名前は開発中のものです。
2013/06/20(木) 19:25:37.41ID:utbSzndH >>294
何色?
赤・青・白・黒??
何色?
赤・青・白・黒??
296名前は開発中のものです。
2013/06/25(火) 20:10:45.63ID:8VH9PpPP ほ
297名前は開発中のものです。
2013/06/30(日) 12:35:57.68ID:epiVBrxw リアルタイムストラテジー型のチェスとか、HP制の将棋とか、おもしろいかも?
298名前は開発中のものです。
2013/06/30(日) 20:09:35.38ID:CusNUCHO その昔、バトルチェスってのがあってな・・・
299名前は開発中のものです。
2013/07/01(月) NY:AN:NY.ANID:lOCkd1Ri Battle chessでggると、駒を1手で1回ずつ全部動かせるらしい
300名前は開発中のものです。
2013/07/02(火) NY:AN:NY.ANID:bfbryvu1 FFみたいなアクティブタイムバトル(ATB)制とか、
タクティクス・オウガみたいなウエイトターン(WT)制は?
タクティクス・オウガみたいなウエイトターン(WT)制は?
301名前は開発中のものです。
2013/07/03(水) NY:AN:NY.ANID:wkoZZDOw ハンターハンターの軍棋をゲーム化するとかね。
つうか軍棋って同じ名前で実在するんだな。日本にも軍人将棋ってのがあるが。
ここで色々案も挙がってるが、すでにPCもない時代からこういう考えはあったわけだ。
つうか軍棋って同じ名前で実在するんだな。日本にも軍人将棋ってのがあるが。
ここで色々案も挙がってるが、すでにPCもない時代からこういう考えはあったわけだ。
302名前は開発中のものです。
2013/07/07(日) NY:AN:NY.ANID:1jzG+TM2 軍蟻は良いかも!
著作権が難しいが・・・
軍人将棋はバリエーションとローカルルールがありすぎて対応が大変
ZoGにも欲しいな
西洋軍人将棋(ストラテゴ)は、PCでも割と見かけるが
著作権が難しいが・・・
軍人将棋はバリエーションとローカルルールがありすぎて対応が大変
ZoGにも欲しいな
西洋軍人将棋(ストラテゴ)は、PCでも割と見かけるが
303名前は開発中のものです。
2013/07/07(日) NY:AN:NY.ANID:0lzHS3C/ ハンターのあれってちゃっとルール公開されてたの?
コマが3つまで重ねられるって事しか解んないわw
コマが3つまで重ねられるって事しか解んないわw
304名前は開発中のものです。
2013/07/07(日) NY:AN:NY.ANID:lXyODQZR ルールなんて自分でこさえちゃえばいいよ。
コマを重ねるってのは、要するに馬にのせたり方天画戟といった装備だったり
名声や決意・覚悟といった精神的なものの加点要素なんじゃないのか?
あるいは倒れた仲間を回収して回復ポイントまで運べるとか。逆に補給物資を運んでいるか。
将棋やチェスなら、味方のコマと重なると2倍の能力になり、一回とられても相打ちで敵も倒せて、自分はそこに残れる、的なシステム。
コマを重ねるってのは、要するに馬にのせたり方天画戟といった装備だったり
名声や決意・覚悟といった精神的なものの加点要素なんじゃないのか?
あるいは倒れた仲間を回収して回復ポイントまで運べるとか。逆に補給物資を運んでいるか。
将棋やチェスなら、味方のコマと重なると2倍の能力になり、一回とられても相打ちで敵も倒せて、自分はそこに残れる、的なシステム。
305名前は開発中のものです。
2013/07/07(日) NY:AN:NY.ANID:tapz/Poj306名前は開発中のものです。
2013/07/08(月) NY:AN:NY.ANID:VxgBNd3t なるほど、高さ=三次元的なゲームだったのか。
二段や三段のコマは一段のコマには抜けれず壁の役割になれる。
壁構築で地形みたいな要素にもなる感じかな?
二段や三段のコマは一段のコマには抜けれず壁の役割になれる。
壁構築で地形みたいな要素にもなる感じかな?
307名前は開発中のものです。
2013/07/09(火) NY:AN:NY.ANID:PWW1vFJn 高さを考慮したSLGといえば、タクティクスオウガ系のゲーム画面(盤面)になりそう・・・
308名前は開発中のものです。
2013/08/03(土) NY:AN:NY.ANID:gVJOFEFN age
309名前は開発中のものです。
2014/09/08(月) 16:59:53.68ID:67y2qr+m 教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上層部24時間パトロール義務上野飲み会マックさむらいニューヨーク森林火災チェック問題ヤーフォー確定申告不足ラーメンスーパーポイントdビデオデッキ破壊タイピングGTX860MIGOZ
教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上層部24時間パトロール義務上野飲み会マックさむらいニューヨーク森林火災グリーにんにく牡丹黒家宝ラーメン
教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上昇部24時間パトロール義務セコム強盗マックさむらいニューヨーク森林火災グリーにんにく牡丹黒家宝ラーメン
築地TPP偏食中国人勧誘マナー憤怒北京オリンピックパブ立橋フロアWHO経済制裁代協議会飲み食い代官僚日テレ漏洩ボーリングITC問題調査福岡駐車近代道廃人画税幕張銀行ググール無断決裁広告料寒孫ゼリー失調栄養士指的フィルム不毛ハンバーグースラーメン
糞箱弐個弐個沖縄ランド近年ペット原発難民船頭100万円コミックコラムシフト廃品鉄工業プラチナ小スモ再販問題WHO光金アナ雪エネルギーソーシャル決裁ニッカン奮闘鬼記者サービスカ米ラマン露店捜査キセルストアアイダホ会長農家不動産工場感激息子
教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上層部24時間パトロール義務上野飲み会マックさむらいニューヨーク森林火災グリーにんにく牡丹黒家宝ラーメン
教京サーバアビエ無戸籍交際薬剤消毒介護職利権ローション羽田帝国上昇部24時間パトロール義務セコム強盗マックさむらいニューヨーク森林火災グリーにんにく牡丹黒家宝ラーメン
築地TPP偏食中国人勧誘マナー憤怒北京オリンピックパブ立橋フロアWHO経済制裁代協議会飲み食い代官僚日テレ漏洩ボーリングITC問題調査福岡駐車近代道廃人画税幕張銀行ググール無断決裁広告料寒孫ゼリー失調栄養士指的フィルム不毛ハンバーグースラーメン
糞箱弐個弐個沖縄ランド近年ペット原発難民船頭100万円コミックコラムシフト廃品鉄工業プラチナ小スモ再販問題WHO光金アナ雪エネルギーソーシャル決裁ニッカン奮闘鬼記者サービスカ米ラマン露店捜査キセルストアアイダホ会長農家不動産工場感激息子
310名前は開発中のものです。
2015/08/18(火) 16:59:55.72ID:QcCJSSMl どなたか教えていただけますか?
最近、オセロAIのプログラミングをCで行っています。
今は、探索ロジックの勉強のため、終盤の完全読みを作っています。
置換表付negaMax、置換表付PVSは通常の探索ではきちんと動作しています。
現在MTD(f)にとりかかりました。MTD(f)では、ドライバは擬似コードそのまま。
テスト関数は置換表付negaMaxを流用していますが、そのままだとFail-LowとminMax値
の区別がつかずに、Fail-Lowの指し手を返してしまうので、初段のみαを-1する事で、
内部的に区別できるようにしています。
動作確認にいくつかテストケースでテストしましたが、FFO#40の時におかしな事がおきます。
(FFO:http://www.radagast.se/othello/ffotest.html)
問題)本来の評価値は+38(A2B1C1…)なのに、+30が返る。
以下、判明している状況です。
1)置換表を使用せずにMTD(f)を動作させる。 −>正解
2)単体でNull Window Searchを行う。 −>正解
3)置換表を使用してMTD(f)を動作させる。 −>少なくともFFO#40では誤答する
4)FFO#40で失敗する条件は、fにminMAX値より幾分小さい値(黒+30未満)を設定したとき。
5)negaMax初段でαを-1するロジックを入れなくても、同じ事になります。
デバッグで確認したところ、Fail-Highになるべき条件(黒+30や黒+36の時)で、下限値を
返しています。同一条件で、下限をさらに-1してテストしたところ、α<g<βである事が確認
できましたので、minMax値として間違った値が返っていることになります。
どうも原因は置換表にあり、Null Window Searchの中で、何回も再利用していることに
あるように思います。とはいえ、MTD(f)といえば置換法を再利用する事が前提です。
どこかに誤りがあるのではないかと思います。
同じような問題に遭遇した人はいますか?
最近、オセロAIのプログラミングをCで行っています。
今は、探索ロジックの勉強のため、終盤の完全読みを作っています。
置換表付negaMax、置換表付PVSは通常の探索ではきちんと動作しています。
現在MTD(f)にとりかかりました。MTD(f)では、ドライバは擬似コードそのまま。
テスト関数は置換表付negaMaxを流用していますが、そのままだとFail-LowとminMax値
の区別がつかずに、Fail-Lowの指し手を返してしまうので、初段のみαを-1する事で、
内部的に区別できるようにしています。
動作確認にいくつかテストケースでテストしましたが、FFO#40の時におかしな事がおきます。
(FFO:http://www.radagast.se/othello/ffotest.html)
問題)本来の評価値は+38(A2B1C1…)なのに、+30が返る。
以下、判明している状況です。
1)置換表を使用せずにMTD(f)を動作させる。 −>正解
2)単体でNull Window Searchを行う。 −>正解
3)置換表を使用してMTD(f)を動作させる。 −>少なくともFFO#40では誤答する
4)FFO#40で失敗する条件は、fにminMAX値より幾分小さい値(黒+30未満)を設定したとき。
5)negaMax初段でαを-1するロジックを入れなくても、同じ事になります。
デバッグで確認したところ、Fail-Highになるべき条件(黒+30や黒+36の時)で、下限値を
返しています。同一条件で、下限をさらに-1してテストしたところ、α<g<βである事が確認
できましたので、minMax値として間違った値が返っていることになります。
どうも原因は置換表にあり、Null Window Searchの中で、何回も再利用していることに
あるように思います。とはいえ、MTD(f)といえば置換法を再利用する事が前提です。
どこかに誤りがあるのではないかと思います。
同じような問題に遭遇した人はいますか?
311310
2015/08/18(火) 17:06:51.32ID:QcCJSSMl ちなみに、置換表のキーは、盤面と手番です。
ハッシュ値を使用し、衝突した場合は、チェーンで下につなげています。
今のところ、メモリーの上限等は設定しておらず、領域も足りています。
ハッシュ値を使用し、衝突した場合は、チェーンで下につなげています。
今のところ、メモリーの上限等は設定しておらず、領域も足りています。
312名前は開発中のものです。
2015/08/18(火) 21:27:38.25ID:ZHAQ4NnD 正気か?
313310
2015/08/18(火) 23:21:46.36ID:5wjtKO2B 何がですか?
314名前は開発中のものです。
2015/08/18(火) 23:27:30.51ID:ZHAQ4NnD その質問に答えられる人間が2chにいると?
315310
2015/08/19(水) 09:33:45.34ID:DdofkXsp いなければ仕方ないですね。
テスト関数を置換表付negascoutにしたら、ちゃんと答えが返ってくるようになりました。
けど、なんか気持ち悪い。置換表の扱い方は一緒なので、たまたま上手く行ってるだけ
ではないかと思います。むむむ。
MTD(f)にこだわり続けてもあんまり意味が無いので、評価関数づくりに入ります。
3層パーセプトロン型にするか、普通の線形回帰にするか。
パーセプトロンタイプは、パターン学習のタイプを作ってみましたが、学習データ340万
棋譜に対して、1回回すのに3日がかりという状態で、検証サイクルが回しづらい状況な
ので、簡略化をするか、線形回帰を試すか思案中です。最終的には、両方作って対戦
させてみるかと思っています。いつになる事やら。
テスト関数を置換表付negascoutにしたら、ちゃんと答えが返ってくるようになりました。
けど、なんか気持ち悪い。置換表の扱い方は一緒なので、たまたま上手く行ってるだけ
ではないかと思います。むむむ。
MTD(f)にこだわり続けてもあんまり意味が無いので、評価関数づくりに入ります。
3層パーセプトロン型にするか、普通の線形回帰にするか。
パーセプトロンタイプは、パターン学習のタイプを作ってみましたが、学習データ340万
棋譜に対して、1回回すのに3日がかりという状態で、検証サイクルが回しづらい状況な
ので、簡略化をするか、線形回帰を試すか思案中です。最終的には、両方作って対戦
させてみるかと思っています。いつになる事やら。
316310
2015/08/24(月) 09:51:00.08ID:Y8Lk5h3w BITBOARDで確定石をそこそこ正確に求める方法を考えました。
思いっきり脱線中w
ただ、斜め方向に「列すべてに石が置かれている」状態を検出する方法と、
その時に、斜め方向の列すべてに確定ビット(仮)を建てる良い方法が見つ
からずに、斜め方向のAND用の定数配列を用意してループを15回回してる。
縦横は、分割統治でそこそこなロジックになったんだけど。
45度回転を使っても、そんなに高速化できそうにないなぁ。
もちろん、完璧な確定石ではありません。
拾った石は確実に確定石ですが、確定石なのに拾えない石が若干あります。
思いっきり脱線中w
ただ、斜め方向に「列すべてに石が置かれている」状態を検出する方法と、
その時に、斜め方向の列すべてに確定ビット(仮)を建てる良い方法が見つ
からずに、斜め方向のAND用の定数配列を用意してループを15回回してる。
縦横は、分割統治でそこそこなロジックになったんだけど。
45度回転を使っても、そんなに高速化できそうにないなぁ。
もちろん、完璧な確定石ではありません。
拾った石は確実に確定石ですが、確定石なのに拾えない石が若干あります。
317310
2015/09/02(水) 11:43:34.50ID:s0BtWfox ぬぬぬ。パターンによる線形回帰の石差予想。
最急降下法は収束してるんだけど平均2乗誤差が480とかになる。
1σでいうと1局面あたり22石(黒石の数では11石)もの誤差。
これでは使い物にならない。
ステージ分割しているんだけど、ステージが進んでも誤差はほぼ一緒。
ウェイトがオールゼロでも似たような数字になるレベル。
テストデータで局面評価させると、それなりに石差は計算しているっぽいが、
最善手で終局まで打ったデータ入れるとステージによって評価値が全く違う。
初期値をゼロからスタートすると、この辺なんだけど、1とかからスタートすると
もっと誤差が大きいところで収束してしまう。初期値を乱数にしたら、更に大きな
誤差で収束してしまう。
ローカルミニマムに捕まってるのかなぁ。
いくつかミスは見つけたけど、本質的な場所じゃないので、結果も変わらず。
むむむむ。
最急降下法は収束してるんだけど平均2乗誤差が480とかになる。
1σでいうと1局面あたり22石(黒石の数では11石)もの誤差。
これでは使い物にならない。
ステージ分割しているんだけど、ステージが進んでも誤差はほぼ一緒。
ウェイトがオールゼロでも似たような数字になるレベル。
テストデータで局面評価させると、それなりに石差は計算しているっぽいが、
最善手で終局まで打ったデータ入れるとステージによって評価値が全く違う。
初期値をゼロからスタートすると、この辺なんだけど、1とかからスタートすると
もっと誤差が大きいところで収束してしまう。初期値を乱数にしたら、更に大きな
誤差で収束してしまう。
ローカルミニマムに捕まってるのかなぁ。
いくつかミスは見つけたけど、本質的な場所じゃないので、結果も変わらず。
むむむむ。
318名前は開発中のものです。
2015/09/02(水) 16:33:21.80ID:6FNrQBf/ 正規化をミスってる
319310
2015/09/02(水) 21:57:59.44ID:5gNGVEfH 正規化というと、thellさんのlearning.pdfで言うところの、αの設定ですか?
当初はmin(β/100,β/Nj)の正規化型で作ってましたが、上手くいかないので
収束を早めるのは後回にして、今は単純にステージ毎の局面データ件数α=β/Nの
形にしてます。
が、発散を避けようとすると、βをあまりに小さくしなければならないのが、なんか変な
気がしています。今は10の-7〜-8乗くらいの値です。やっぱり変ですよね。
最急降下法のコードどこか間違えてるんだろうなぁ。
当初はmin(β/100,β/Nj)の正規化型で作ってましたが、上手くいかないので
収束を早めるのは後回にして、今は単純にステージ毎の局面データ件数α=β/Nの
形にしてます。
が、発散を避けようとすると、βをあまりに小さくしなければならないのが、なんか変な
気がしています。今は10の-7〜-8乗くらいの値です。やっぱり変ですよね。
最急降下法のコードどこか間違えてるんだろうなぁ。
320名前は開発中のものです。
2015/09/03(木) 04:25:48.28ID:CNXgxM7O でもオセロだったら最終数手で11石くらいひっくり返ってぶれるのは普通じゃない?
321名前は開発中のものです。
2015/09/03(木) 04:36:35.33ID:CNXgxM7O あ、オセロのAIにはぜんぜん詳しくないんだけど
対局を見てたらクルクル石差が入れ替わるので
読み切らずに局面から石差を判断すると
どうなるんかなと思って
対局を見てたらクルクル石差が入れ替わるので
読み切らずに局面から石差を判断すると
どうなるんかなと思って
322310
2015/09/03(木) 10:19:29.05ID:Fd8XT4rV 色々と失礼しました。
もう一度、よーく上記pdfを読み返していたところ、原因らしきものが見つかりました。
記載にあいまいというか、ちょっとおかしいところがあって、式の変形をしっかり追って
確認すれば良かったのですが、思い込みで解釈をして変な計算をしていました。
そこをとりあえずざっと修正したところ、遅々としつつも収束に向かっている模様ですが、
まだまだ完全ではないようです。ある程度二乗誤差が減ったところで、また増え始めたり
しています。正規化も試したけど、やはり同じ。
もう少し、検討してみます。
もう一度、よーく上記pdfを読み返していたところ、原因らしきものが見つかりました。
記載にあいまいというか、ちょっとおかしいところがあって、式の変形をしっかり追って
確認すれば良かったのですが、思い込みで解釈をして変な計算をしていました。
そこをとりあえずざっと修正したところ、遅々としつつも収束に向かっている模様ですが、
まだまだ完全ではないようです。ある程度二乗誤差が減ったところで、また増え始めたり
しています。正規化も試したけど、やはり同じ。
もう少し、検討してみます。
323310
2015/09/03(木) 10:38:17.33ID:Fd8XT4rV >>320
もともとひっくり返しあった後の終局を予測するのが目的なので、教師データは最終局面
の石差です。盤面の特徴(パターン)から、最終石差を予想するための重回帰計算なので、
その時点の石数は、説明変数に入れてません。なので、パターンの選択が適切なら、
最善手の応酬において1手毎にどれだけ石数が入れ替わろうと、影響を受けずに、
二乗誤差が終局に近づくほど減っていくと予想されます。
というか、そうなるように説明変数であるところのパターンを模索していくと理解しています。
手元にあるwzebraなんかは、評価値と称して最終石差予想が表示されているのですが、
やはり、ある程度の誤差を含みつつも、大きくぶれているようには見えません。
評価関数の使い道を考えると、実は絶対値はそれほど重要ではありません。
中盤探索のn手読みの時の盤面評価と、ムーブオーダリングに使うので、ある局面から
派生したn手先の局面における相対的な関係が保たれていればOKです。
また、MTD(f)法などを使う時の、fの初期値設定にも使います。この時は絶対値で正確な
方が良いはずですが、外れはすぐにカットされて次に行くので、トータルの時間に対する
影響は小さいように感じます。
とはいえ、相対的な関係が保たれているのかをチェックするのは難しいですから、
結局のところ出来上がった評価関数の評価は、教師データとの二乗誤差の小ささに
するしかないかなと。
もともとひっくり返しあった後の終局を予測するのが目的なので、教師データは最終局面
の石差です。盤面の特徴(パターン)から、最終石差を予想するための重回帰計算なので、
その時点の石数は、説明変数に入れてません。なので、パターンの選択が適切なら、
最善手の応酬において1手毎にどれだけ石数が入れ替わろうと、影響を受けずに、
二乗誤差が終局に近づくほど減っていくと予想されます。
というか、そうなるように説明変数であるところのパターンを模索していくと理解しています。
手元にあるwzebraなんかは、評価値と称して最終石差予想が表示されているのですが、
やはり、ある程度の誤差を含みつつも、大きくぶれているようには見えません。
評価関数の使い道を考えると、実は絶対値はそれほど重要ではありません。
中盤探索のn手読みの時の盤面評価と、ムーブオーダリングに使うので、ある局面から
派生したn手先の局面における相対的な関係が保たれていればOKです。
また、MTD(f)法などを使う時の、fの初期値設定にも使います。この時は絶対値で正確な
方が良いはずですが、外れはすぐにカットされて次に行くので、トータルの時間に対する
影響は小さいように感じます。
とはいえ、相対的な関係が保たれているのかをチェックするのは難しいですから、
結局のところ出来上がった評価関数の評価は、教師データとの二乗誤差の小ささに
するしかないかなと。
324310
2015/09/07(月) 01:11:39.28ID:OHPpdG+6 収束しかかった二乗誤差がまた増え始める原因はまだわかりません。
増え始めるまでは収束方向には向かっているのは確かなのでβの初期設定を
いって誤魔化す方向で。最急降下法ってこんなものなのかなぁ。
一通り納得したので、パターンをLogistelloと同一のものにまで拡充してスムージングも
入れてみましたが、新たなバグを仕込んでしまった模様で、一部計算がぐちゃぐちゃorz
バグ探しの旅に出ます。
裏で、Solverの速度アップを検討。
CountBitとPOPCountを組み込み関数にしてみました。FFO#40で30%ほど改善。
続いてFlip関数を64個のポインタ関数にしてみましたが、時間はほぼ変わらず。
ポインタ関数内の処理が非効率なのか。
Flipのデバッグ中に確定石計算でバグっぽいものを見つけましたが、回帰が落ち着く
まで見なかった事にします。
増え始めるまでは収束方向には向かっているのは確かなのでβの初期設定を
いって誤魔化す方向で。最急降下法ってこんなものなのかなぁ。
一通り納得したので、パターンをLogistelloと同一のものにまで拡充してスムージングも
入れてみましたが、新たなバグを仕込んでしまった模様で、一部計算がぐちゃぐちゃorz
バグ探しの旅に出ます。
裏で、Solverの速度アップを検討。
CountBitとPOPCountを組み込み関数にしてみました。FFO#40で30%ほど改善。
続いてFlip関数を64個のポインタ関数にしてみましたが、時間はほぼ変わらず。
ポインタ関数内の処理が非効率なのか。
Flipのデバッグ中に確定石計算でバグっぽいものを見つけましたが、回帰が落ち着く
まで見なかった事にします。
325名前は開発中のものです。
2015/09/10(木) 17:45:51.81ID:R9JX9LJx 将棋の全駒にユニークなIDを振り、局面を将棋盤に見立てたkoma[9,9]にIDを入れることで表現しようと思っています
その場合、駒のIDから座標を取得するいい方法ってないんでしょうか?
IF文、Case文のオンパレードになってしまうのは仕方ないのでしょうか・・・・
言語C#
その場合、駒のIDから座標を取得するいい方法ってないんでしょうか?
IF文、Case文のオンパレードになってしまうのは仕方ないのでしょうか・・・・
言語C#
326名前は開発中のものです。
2015/09/13(日) 16:22:10.24ID:5eWB08IT 駒側にも座標を持っちゃえば?
327310
2015/09/14(月) 09:33:29.38ID:Rx5y2/Cc 線形回帰で相変わらず時間食ってます。
一応、バグらしきものはそれなりに解消されましたが、やはりいかんせん収束が遅い。
一晩かけて50〜100試行して、途中で止めてやり直しなんてのやってる間に1週間は
あっという間に経ってしまうものです。まだ誤差が大きい。1000回程度回して、どこまで
収束するか見てみようかなと。またぞろ3層パーセプトロンが気になる今日この頃。
確定石計算もバグ取りはできたと思いますが、その分計算が1.5倍ほどに膨れてしまい
ました。しばらく思考実験していたら、確定石なのに確定していると評価できない確実な
パターンも思いついてしまって、どうせその程度のものなら重い確定石計算しないで普通
に準確定石程度にしとくのが良いかと悩み中。
Solverの速度アップですが、前からやろうと思っていた事を少しづつやっていますが、
統計とってきちんとやっていないので10%くらいの差だと良くわからない状況です。
コードのメンテナンス性が下がるのがネック。negaMAXが思いの他高速化してしまい
ましたが、MTD(f)が低速化しているかも(謎)。
それなりに評価関数が動きだしたので、置換表2枚にして反復深化も試してますが、
信じられないくらい劇遅状態です。これ本当にコストに見合うのかなぁ。評価関数の
計算が、というか、その中の確定石計算が重いんだと思うけど・・・。
一応、バグらしきものはそれなりに解消されましたが、やはりいかんせん収束が遅い。
一晩かけて50〜100試行して、途中で止めてやり直しなんてのやってる間に1週間は
あっという間に経ってしまうものです。まだ誤差が大きい。1000回程度回して、どこまで
収束するか見てみようかなと。またぞろ3層パーセプトロンが気になる今日この頃。
確定石計算もバグ取りはできたと思いますが、その分計算が1.5倍ほどに膨れてしまい
ました。しばらく思考実験していたら、確定石なのに確定していると評価できない確実な
パターンも思いついてしまって、どうせその程度のものなら重い確定石計算しないで普通
に準確定石程度にしとくのが良いかと悩み中。
Solverの速度アップですが、前からやろうと思っていた事を少しづつやっていますが、
統計とってきちんとやっていないので10%くらいの差だと良くわからない状況です。
コードのメンテナンス性が下がるのがネック。negaMAXが思いの他高速化してしまい
ましたが、MTD(f)が低速化しているかも(謎)。
それなりに評価関数が動きだしたので、置換表2枚にして反復深化も試してますが、
信じられないくらい劇遅状態です。これ本当にコストに見合うのかなぁ。評価関数の
計算が、というか、その中の確定石計算が重いんだと思うけど・・・。
328310
2015/09/14(月) 17:35:45.53ID:Rx5y2/Cc 反復深化が劇遅なのは、使い方を誤っていました。
リーフのところまで使うとコストアップなのは考えれば当然でした。
まあ、おバカなバグもありましたが。
negaMaxに対して反復深化を試すと、1割程度の高速化となりましたが、
negaScoutに対してやると多少低速化して、negaMaxの反復深化と変わらない速度に。
scout missが3倍近く増えているので、評価関数の精度があまり良くないためかなと。
move orderには、通常はmobilityとコーナー着手を使用しているのですが、これ、
何故か(少なくともFFO#40に対しては)scout missが恐ろしく少ないのです・・・。
MTD(f)が遅いのも、最初に設定するfを評価関数の値にして、それが結構外れで、
探索範囲が広がったのが原因です。scout missと同様に、結局のところ、途中で評価関数
を求めるタイプの高速化は、評価関数の精度次第という当たり前の結果に。
評価関数入れるとノード探索時間が1/10になるので、やはり評価関数用の確定石計算は
準確定石にレベルダウンしようかと思います。中盤AIでの話ですが。
今FFO#40が9秒台なので、あと3〜5倍高速化したい。
リーフのところまで使うとコストアップなのは考えれば当然でした。
まあ、おバカなバグもありましたが。
negaMaxに対して反復深化を試すと、1割程度の高速化となりましたが、
negaScoutに対してやると多少低速化して、negaMaxの反復深化と変わらない速度に。
scout missが3倍近く増えているので、評価関数の精度があまり良くないためかなと。
move orderには、通常はmobilityとコーナー着手を使用しているのですが、これ、
何故か(少なくともFFO#40に対しては)scout missが恐ろしく少ないのです・・・。
MTD(f)が遅いのも、最初に設定するfを評価関数の値にして、それが結構外れで、
探索範囲が広がったのが原因です。scout missと同様に、結局のところ、途中で評価関数
を求めるタイプの高速化は、評価関数の精度次第という当たり前の結果に。
評価関数入れるとノード探索時間が1/10になるので、やはり評価関数用の確定石計算は
準確定石にレベルダウンしようかと思います。中盤AIでの話ですが。
今FFO#40が9秒台なので、あと3〜5倍高速化したい。
329名前は開発中のものです。
2015/09/14(月) 21:42:06.86ID:1S1dymvg その情熱がうらやましい
330310
2015/09/15(火) 20:18:36.71ID:egtjjW0V 準確定石の計算って実は思ったよりコストフルかもと気づいてしまい、
急きょコーディングして比較してみる事にしました。
releaseモードだと、自分の計算方法では跡形も残らないため、時間計測不可能。
debugモードでも、数十倍速いと言う結果になりましたので、今の確定石計算ロジック
は、悪いモノではないと自分に言い聞かせる事にしました。
それより、回帰の学習で、少しずつ少しずつ250回くらいまで学習進めていたのですが、
バグを見つけてしまい、またやり直しです。むむむ。しかも、なおした事で計算時間が
2〜3倍になってしまうという。
急きょコーディングして比較してみる事にしました。
releaseモードだと、自分の計算方法では跡形も残らないため、時間計測不可能。
debugモードでも、数十倍速いと言う結果になりましたので、今の確定石計算ロジック
は、悪いモノではないと自分に言い聞かせる事にしました。
それより、回帰の学習で、少しずつ少しずつ250回くらいまで学習進めていたのですが、
バグを見つけてしまい、またやり直しです。むむむ。しかも、なおした事で計算時間が
2〜3倍になってしまうという。
331名前は開発中のものです。
2015/09/19(土) 00:46:12.58ID:OgvQcqwn 回帰がやっとまともっぽいところまで収束するようになりました。
今、250回学習で、最終ステージが1σ=7.5程度です。
このペースだと、もっと学習させても、たいして変わらない気もしますが、
もう少し学習を進めてみようかと思います。
この評価関数を元に、反復深化+MTDF+negaScoutなsolverを動かして
FFO#40で8秒程度になります。インライン関数化とか、最終2手展開とか
やるべき事はある程度やっちゃったので、自分の力だとこの辺が限度かも。
今、250回学習で、最終ステージが1σ=7.5程度です。
このペースだと、もっと学習させても、たいして変わらない気もしますが、
もう少し学習を進めてみようかと思います。
この評価関数を元に、反復深化+MTDF+negaScoutなsolverを動かして
FFO#40で8秒程度になります。インライン関数化とか、最終2手展開とか
やるべき事はある程度やっちゃったので、自分の力だとこの辺が限度かも。
332310
2015/09/22(火) 22:15:30.40ID:70n8Fwqa 回帰は地道に学習中。もう少しやってみるって感じだけど、収束状態の誤差が大きいのは
ステージ分割でオリジナルな変な事をしているからじゃないかと気になりだした。
あと数百回学習を回したら、通常のステージ分割版も作ってみるかなと。
色々いじってるうちに、FFO#40が6.2秒まで来た。何が良かったのか良くわからない。
反復深化をターゲットに改良しているんだけど、negaScoutも同じ時間。
FFO#41を試したら、反復深化で45秒弱、negaScoutで30秒弱という結果に。
探索ノード数がすごい事になってるので、反復深化のmoveorderのどこかがおかしい
気がしている。
ステージ分割でオリジナルな変な事をしているからじゃないかと気になりだした。
あと数百回学習を回したら、通常のステージ分割版も作ってみるかなと。
色々いじってるうちに、FFO#40が6.2秒まで来た。何が良かったのか良くわからない。
反復深化をターゲットに改良しているんだけど、negaScoutも同じ時間。
FFO#41を試したら、反復深化で45秒弱、negaScoutで30秒弱という結果に。
探索ノード数がすごい事になってるので、反復深化のmoveorderのどこかがおかしい
気がしている。
333310
2015/09/25(金) 16:54:56.15ID:9OkLc3+M 回帰のステージ分割というかスムージングを、ネット上でノウハウ公開されてるみなさん
と同じようにしたら、1σで6を切ってきた。やっぱ、スムージングやり過ぎて、精度が
落ちていたのね。同一ステージ内でも値がばらついているので本当に必要なのか、
気になるので、落ち着いたら両方試そうかと。先に方向性見ちゃったから本来とは
逆順になっちゃうけど。
色々頑張ったら、FFO#40が5.1秒、#41が20秒、#42が18秒となりました。
ソースとにらめっこしてれば、ネタはそれなりに出てくるものだなぁと。
しかし、10年前のCPU使ってるThellにようやく勝てた程度。
Zebraの速さは何なんだと。こちらはcore i7だというのに。
目下の悩みは、_mm_popcnt_u64とBitScanFoward64が使えずに、それぞれ32ビット版を
使っている事。外部依存のところで関数の存在は確認しているんだけど、「そんな名前ない」
と出てくる。Cは趣味のAVRで小さいプログラムしか作った事がなかったけど、VC++くらい
巨大になると、どーもよーわからん。
と同じようにしたら、1σで6を切ってきた。やっぱ、スムージングやり過ぎて、精度が
落ちていたのね。同一ステージ内でも値がばらついているので本当に必要なのか、
気になるので、落ち着いたら両方試そうかと。先に方向性見ちゃったから本来とは
逆順になっちゃうけど。
色々頑張ったら、FFO#40が5.1秒、#41が20秒、#42が18秒となりました。
ソースとにらめっこしてれば、ネタはそれなりに出てくるものだなぁと。
しかし、10年前のCPU使ってるThellにようやく勝てた程度。
Zebraの速さは何なんだと。こちらはcore i7だというのに。
目下の悩みは、_mm_popcnt_u64とBitScanFoward64が使えずに、それぞれ32ビット版を
使っている事。外部依存のところで関数の存在は確認しているんだけど、「そんな名前ない」
と出てくる。Cは趣味のAVRで小さいプログラムしか作った事がなかったけど、VC++くらい
巨大になると、どーもよーわからん。
334310
2015/10/04(日) 01:12:59.97ID:+bDErzEp 色々やって、FFO#40でnegaScoutで3.4秒まで来ました。
反復深化は異なる方法で2種類作ってみたけど、FFO#40程度の深さだとnegaScoutとの
差が出てこない。22手とか24手とかまで行くと、差が出てくるように感じるけど、後回し。
どうしても気になって、Zebraのソース解説(日本語)を見つけて、そこに出てるソースを
見ました。自分なりにロジック面で工夫した事はほぼ同じ事をやっている。流石。
あとマクロを多用してる。僕はインライン指定でコンパイラ任せ。
マクロにするとデバッグが極端に大変になるので、マクロ化するのは最後。
そしてaspiration windowと称しているWindowの取り方が独特で、ここに高速化の
秘密があるとみた。早速真似してみると、また>>310のような問題が・・・
今回は前より理解が進んでいたため、2点修正して解消。
副次的に>>310の問題も、直ったと思う。
が、もう一つ答えを間違うケースを見つけてしまった。
今まではルートノードに問題があったけど、こちらはもっと下位ノードで戻り値がコンタミ
してる感じ。デバッグが難しく、重症っぽい。むむむ。
反復深化は異なる方法で2種類作ってみたけど、FFO#40程度の深さだとnegaScoutとの
差が出てこない。22手とか24手とかまで行くと、差が出てくるように感じるけど、後回し。
どうしても気になって、Zebraのソース解説(日本語)を見つけて、そこに出てるソースを
見ました。自分なりにロジック面で工夫した事はほぼ同じ事をやっている。流石。
あとマクロを多用してる。僕はインライン指定でコンパイラ任せ。
マクロにするとデバッグが極端に大変になるので、マクロ化するのは最後。
そしてaspiration windowと称しているWindowの取り方が独特で、ここに高速化の
秘密があるとみた。早速真似してみると、また>>310のような問題が・・・
今回は前より理解が進んでいたため、2点修正して解消。
副次的に>>310の問題も、直ったと思う。
が、もう一つ答えを間違うケースを見つけてしまった。
今まではルートノードに問題があったけど、こちらはもっと下位ノードで戻り値がコンタミ
してる感じ。デバッグが難しく、重症っぽい。むむむ。
335310
2015/10/07(水) 17:10:37.74ID:i7/9rua6 デバッグで試しに変えた箇所を戻し忘れたりして、二次災害三次災害を出して、
相当混乱したけど、やっぱり境界問題だった。これmoveorderの順によって出ない
可能性もあるので厄介。自分は開き直って、探索の幅に-1つけてるけど、皆さんは
どう回避しているのかなぁ。
zebraのwindowの取り方は、基本的にMTD(f)みたいに置換表利用を前提とした、
固定分割サーチだけど、negaScout(MTD(f)やzebra方式の中で使用している)と
速度的には同等な感じ。最初の探索で勝敗がわかるという点がメリットなのか。
MTD(f)は評価関数が正しくないと、検索時間が伸びる可能性があって、以前から
negaScout単体でも十分な気がしてる。
FFO#40は後述の静的評価関数を判明しているパラメータで最適化すると、
negaMaxで5秒台。negaScoutで3.4秒前後。MTD(f)で2.6秒前後。
ThellさんのHP記載よりは高速化したけど、zebraにはまだ勝てないというか、テストした
FFO#41〜#43ではzebraの高速度合(ノード数の少なさ)が突出している。
ノード削減はmvorder用の静的評価関数に掛かっている。静的評価関数のパラメーター
をいじってるけど、FFO#40最速のパラメータとFFO#43最速のパラメータが違い、#43用は
#43ではノード数を半減できるのに、#40では増えて遅くなってしまう。negaMaxで初段の
評価順見てると、まだまだなので、何か別の発想で並び替えが必要な感じ。
評価関数は1000回くらい回してようやく良い感じになってきたけど、まだ収束しては
いない感じ。学習係数はもっと大胆に大きくしても良かったかな。ここまでやると、
スムージング無しを試すのが億劫になってくる。
反復深化は、ソースのメンテが追い付いていないので、一回破棄。
相当混乱したけど、やっぱり境界問題だった。これmoveorderの順によって出ない
可能性もあるので厄介。自分は開き直って、探索の幅に-1つけてるけど、皆さんは
どう回避しているのかなぁ。
zebraのwindowの取り方は、基本的にMTD(f)みたいに置換表利用を前提とした、
固定分割サーチだけど、negaScout(MTD(f)やzebra方式の中で使用している)と
速度的には同等な感じ。最初の探索で勝敗がわかるという点がメリットなのか。
MTD(f)は評価関数が正しくないと、検索時間が伸びる可能性があって、以前から
negaScout単体でも十分な気がしてる。
FFO#40は後述の静的評価関数を判明しているパラメータで最適化すると、
negaMaxで5秒台。negaScoutで3.4秒前後。MTD(f)で2.6秒前後。
ThellさんのHP記載よりは高速化したけど、zebraにはまだ勝てないというか、テストした
FFO#41〜#43ではzebraの高速度合(ノード数の少なさ)が突出している。
ノード削減はmvorder用の静的評価関数に掛かっている。静的評価関数のパラメーター
をいじってるけど、FFO#40最速のパラメータとFFO#43最速のパラメータが違い、#43用は
#43ではノード数を半減できるのに、#40では増えて遅くなってしまう。negaMaxで初段の
評価順見てると、まだまだなので、何か別の発想で並び替えが必要な感じ。
評価関数は1000回くらい回してようやく良い感じになってきたけど、まだ収束しては
いない感じ。学習係数はもっと大胆に大きくしても良かったかな。ここまでやると、
スムージング無しを試すのが億劫になってくる。
反復深化は、ソースのメンテが追い付いていないので、一回破棄。
336310
2015/10/12(月) 23:43:49.17ID:ZTwsIi7y 色々やってるけど、FFO#40では速度向上はほとんどなし。
置換表のサイズが見えて来たので、1件ごとにmallocしていたのを、配列にして一括で
領域確保するように変更(当初の形)したら、速度のバラツキがだいぶ減ったように思う。
NPSが変動すると、何か悪いことしかたと悩んでしまい、修正して二次災害を起こすので
地味に大事かな。
FFO#43は多少高速化してて、パラメータ最適化するとMTD(f)で12秒台くらい。置換表
適用範囲の指定を下(葉)からしていたのを、上(ルート)からに変えた。あと、MTD(f)
などでは何回も置換表を読むので、2回目からはmoveorderに置換表の評価を使うよう
にした。
BITBOARDだと開放度の計算が簡単だという事に気づいて、静的評価関数に使ってみた
けど、現在使用中の次手mobility+αの順序より劣る感じ。+αが角とか×とかなので、
序盤から中盤用なのかなぁ。
negaScoutに加えた修正をnegaMaxに適用していたら、negaMaxがおかしくなった。
直して計測したらFFO#40が40秒程度に。冷静に考えると、これが常識的な速度だと思う。
前回の5秒台がどこから出て来たのか、今となってはわからない。前段の+α箇所も
結構変えていて、negaMaxはmoveorderで露骨にノードが増減するので、奇跡的な順序
が実現できていたのか。それともバグやオペミス勘違いかも。
そろそろ本格的にネタ切れ。この辺が限界かなぁ。
後回しにしていた修正箇所を直して綺麗になったら、中盤に行くかな。
置換表のサイズが見えて来たので、1件ごとにmallocしていたのを、配列にして一括で
領域確保するように変更(当初の形)したら、速度のバラツキがだいぶ減ったように思う。
NPSが変動すると、何か悪いことしかたと悩んでしまい、修正して二次災害を起こすので
地味に大事かな。
FFO#43は多少高速化してて、パラメータ最適化するとMTD(f)で12秒台くらい。置換表
適用範囲の指定を下(葉)からしていたのを、上(ルート)からに変えた。あと、MTD(f)
などでは何回も置換表を読むので、2回目からはmoveorderに置換表の評価を使うよう
にした。
BITBOARDだと開放度の計算が簡単だという事に気づいて、静的評価関数に使ってみた
けど、現在使用中の次手mobility+αの順序より劣る感じ。+αが角とか×とかなので、
序盤から中盤用なのかなぁ。
negaScoutに加えた修正をnegaMaxに適用していたら、negaMaxがおかしくなった。
直して計測したらFFO#40が40秒程度に。冷静に考えると、これが常識的な速度だと思う。
前回の5秒台がどこから出て来たのか、今となってはわからない。前段の+α箇所も
結構変えていて、negaMaxはmoveorderで露骨にノードが増減するので、奇跡的な順序
が実現できていたのか。それともバグやオペミス勘違いかも。
そろそろ本格的にネタ切れ。この辺が限界かなぁ。
後回しにしていた修正箇所を直して綺麗になったら、中盤に行くかな。
337310
2015/10/14(水) 23:51:46.51ID:V3YF/mde negaMaxはmoveorderの修正漏れでバグってて、直したらやはりFFO#40で5.4秒でした。
MTD(f)は2.4秒でzebra並になったけど、#41以後は3〜4倍時間がかかる。
その差は探索ノード数に比例してる。前向き枝刈使うわけにはいかないし、#41以降の
差を詰めるにはmoveorderしかないと思う。
とはいえ主だった事は一通り試してしまった。むむむ。
偶数理論で思いついた方法が純粋に面白そうなので組んでみる。
想定では、速度が結構遅くなるはずなんだけど、まあ面白そうという事で。
MTD(f)は2.4秒でzebra並になったけど、#41以後は3〜4倍時間がかかる。
その差は探索ノード数に比例してる。前向き枝刈使うわけにはいかないし、#41以降の
差を詰めるにはmoveorderしかないと思う。
とはいえ主だった事は一通り試してしまった。むむむ。
偶数理論で思いついた方法が純粋に面白そうなので組んでみる。
想定では、速度が結構遅くなるはずなんだけど、まあ面白そうという事で。
338310
2015/10/16(金) 10:24:07.38ID:Q2afyb0d 偶数理論の関数は思いのほか軽くできて、オーバーヘッドの心配が少ないです。
BITBOARDの空マスを、囲まれて独立している塊ごとに分離してBITBOARD配列にして
返す関数を作りました。これをPOPCountで数えて着手した場所が偶数空エリアなのか
奇数空エリアなのかを判定します。
最初にテストしたFFO#43のMTD(f)でいきなり30%近く高速化して「やった!」と思った
のもつかの間。実はミスで判定を逆にしてまして、偶数マスに打って奇数を相手に渡すと
加点になってました。で、いろいろテストした結果、最初にやったケースではたまたま
良かっただけみたい。例えばnegaScoutやnegaMaxでテストすると、係数変えたり判定
方法に工夫を加えたりいろいろしてみても、何をやっても探索ノードが増えてしまう。
自分はオセロ弱いので、必勝法みたいに言われているものが、アバウト的に最善手に
近い手を選んでくれるんなら、並び順の優先順位計算に、あるウェイトで入れてみようか
的に考えるだけでした。意味とか深く考えるよりやってみるという感じでした。が、最後に
残った2つの空所が偶数と奇数とかの例ならわかりやすいけど、空所が4〜5か所ある
ような状況で偶数理論を当てはめようというのが間違いなのかなぁと。
あと、薄々思っているんだけど、テストケースとしてFFOは良くないんじゃないかと(汗
FFOに最適化してると、もっと出現頻度が高い例題でより高速化できる可能性を放棄
しちゃっている事にならないかと。
BITBOARDの空マスを、囲まれて独立している塊ごとに分離してBITBOARD配列にして
返す関数を作りました。これをPOPCountで数えて着手した場所が偶数空エリアなのか
奇数空エリアなのかを判定します。
最初にテストしたFFO#43のMTD(f)でいきなり30%近く高速化して「やった!」と思った
のもつかの間。実はミスで判定を逆にしてまして、偶数マスに打って奇数を相手に渡すと
加点になってました。で、いろいろテストした結果、最初にやったケースではたまたま
良かっただけみたい。例えばnegaScoutやnegaMaxでテストすると、係数変えたり判定
方法に工夫を加えたりいろいろしてみても、何をやっても探索ノードが増えてしまう。
自分はオセロ弱いので、必勝法みたいに言われているものが、アバウト的に最善手に
近い手を選んでくれるんなら、並び順の優先順位計算に、あるウェイトで入れてみようか
的に考えるだけでした。意味とか深く考えるよりやってみるという感じでした。が、最後に
残った2つの空所が偶数と奇数とかの例ならわかりやすいけど、空所が4〜5か所ある
ような状況で偶数理論を当てはめようというのが間違いなのかなぁと。
あと、薄々思っているんだけど、テストケースとしてFFOは良くないんじゃないかと(汗
FFOに最適化してると、もっと出現頻度が高い例題でより高速化できる可能性を放棄
しちゃっている事にならないかと。
339310
2015/10/17(土) 09:29:41.90ID:uZH1KzRS 最終2手高速化したあたりから、ノード数が過小になっていたので、それを直しました。
自分のと比較すればよいかと思って放置していましたが、そろそろちゃんと比較しようかなと。
結果、探索ノードが思っていた以上に多かった事、そしてNPSは9〜11K出てるので、
NPSを落としてノード削減する余地があるという結果に。
あまりテストしていなかったFFO#41と42ではzebra方式と呼んでいた(後述)方法が、自分の
中では最速で、MTD(f)の結果があまり思わしくない事も。MTD(f)の#40は初期条件が良か
ったからの模様。
ここらへんでもう一度、zebraサイトのFFOテストページにあるcomplete logなるものを見て
みると、全然違う。バージョン違いなのか、やってる事が全く違う。
浅い探索をしてfを決めてNull window search(正確には幅3なので正解が判別できる)
を繰り返しているように見える。けど、ログ上に%が出てきて、98%、99%、%無しみたい
になっているので、何らかの方法で前向き枝刈しながら、評価値を求めていき、最後まで
幅3の探索しかしていないのかな。こういうのをPVSって言うのかな。
浅い読みとか、前向き枝刈とか絡んでくるんなら、中盤探索をやってから戻ってきた方が
よいのかな。。
自分のと比較すればよいかと思って放置していましたが、そろそろちゃんと比較しようかなと。
結果、探索ノードが思っていた以上に多かった事、そしてNPSは9〜11K出てるので、
NPSを落としてノード削減する余地があるという結果に。
あまりテストしていなかったFFO#41と42ではzebra方式と呼んでいた(後述)方法が、自分の
中では最速で、MTD(f)の結果があまり思わしくない事も。MTD(f)の#40は初期条件が良か
ったからの模様。
ここらへんでもう一度、zebraサイトのFFOテストページにあるcomplete logなるものを見て
みると、全然違う。バージョン違いなのか、やってる事が全く違う。
浅い探索をしてfを決めてNull window search(正確には幅3なので正解が判別できる)
を繰り返しているように見える。けど、ログ上に%が出てきて、98%、99%、%無しみたい
になっているので、何らかの方法で前向き枝刈しながら、評価値を求めていき、最後まで
幅3の探索しかしていないのかな。こういうのをPVSって言うのかな。
浅い読みとか、前向き枝刈とか絡んでくるんなら、中盤探索をやってから戻ってきた方が
よいのかな。。
340名前は開発中のものです。
2015/10/19(月) 09:50:52.09ID:BMJ9Bhec とりあえず、ざっくり中盤探索のnegaScoutを組んでみた。
素の状態で10手読みくらいなら1手10秒以内に終わりそうな感じ。
だけど、いろいろと気になる点が。
とり同一局面から着手可能な手の評価値の順番は、あまりくるっては
いないように見える。ただ、評価値事態は結構ずれている。
そして、黒番白番で精度が全く違うように見える。
言われてみれば、同一局面でも手番が逆転すると評価は全く変わるからなぁ。
今は、手番も一つのパラメータにしちゃってるから、その差異は埋められない。
パラメーターとか評価関数の区分とか再考の余地があるんじゃないかと。
前向き枝刈するにしても、評価関数がフィックスしないとダメじゃないかと。
というわけで、しばらく評価関数方面で時間つぶしかなぁ。
素の状態で10手読みくらいなら1手10秒以内に終わりそうな感じ。
だけど、いろいろと気になる点が。
とり同一局面から着手可能な手の評価値の順番は、あまりくるっては
いないように見える。ただ、評価値事態は結構ずれている。
そして、黒番白番で精度が全く違うように見える。
言われてみれば、同一局面でも手番が逆転すると評価は全く変わるからなぁ。
今は、手番も一つのパラメータにしちゃってるから、その差異は埋められない。
パラメーターとか評価関数の区分とか再考の余地があるんじゃないかと。
前向き枝刈するにしても、評価関数がフィックスしないとダメじゃないかと。
というわけで、しばらく評価関数方面で時間つぶしかなぁ。
341名前は開発中のものです。
2015/10/26(月) 09:44:35.41ID:uWG/Yjb0 中盤探索に入るにあたって、評価関数の計算の試作をいろいろしているんだけど、
いまいちぱっとしない。100回学習で1晩かかるし、300回試行くらいしないと傾向が
見えてこないので、時間がかかる。
で、仕方ないので、裏で序盤定石を作り始めてしまった。
こちらも棋譜ベースで作ろうと考えている。
そこまで来た時に、データベースのどういうデータが使いたいのかが、逆にはっきりして
来て、今使ってる360万件棋譜の中のデータを選別しようかという方向に傾きつつあります。
が、やっつけで作って中身が思い出せないフォーマット変換のプログラムから直さなきゃならん。
開き直って、もう1度、データ変換から作り直そうかなと・・・
いまいちぱっとしない。100回学習で1晩かかるし、300回試行くらいしないと傾向が
見えてこないので、時間がかかる。
で、仕方ないので、裏で序盤定石を作り始めてしまった。
こちらも棋譜ベースで作ろうと考えている。
そこまで来た時に、データベースのどういうデータが使いたいのかが、逆にはっきりして
来て、今使ってる360万件棋譜の中のデータを選別しようかという方向に傾きつつあります。
が、やっつけで作って中身が思い出せないフォーマット変換のプログラムから直さなきゃならん。
開き直って、もう1度、データ変換から作り直そうかなと・・・
342310
2015/10/30(金) 17:31:41.23ID:uxyAnbEX 棋譜ベースで序盤20手の定石DB作った。
定石DBは置換表をベースに作ったので、検索は速いけど、容量が大きい・・・。
簡単にαβで20手探索してみた。
ネットで調べた定石集に載っていない手筋が出てきてしまった。むむむ。
5手目までエビ系で、しかも石差+2で黒勝ち。棋譜が偏っているのかな。
棋譜は例の50万棋譜計画の奴で10手目、20手目以降を訂正したというデータ。
明らかに壊れたデータが入っていたりと、何かと使いにくい箇所があるデータだけど、
定石DB作るにはこの量でも足りないのかも。
定石探索用の簡易版minMaxを作りながらつらつら考えていたら、終盤探索の
moveorderをもっと良くする方法を思いついた。評価関数の精度次第だけど。
新評価関数は、途中でうっかり仕込んだバグで遅延。ようやく原因が見つかって、300回
試行まで来た。もうちょい収束させたいけど、テストに使える程度にはなってると思う。
定石DBは置換表をベースに作ったので、検索は速いけど、容量が大きい・・・。
簡単にαβで20手探索してみた。
ネットで調べた定石集に載っていない手筋が出てきてしまった。むむむ。
5手目までエビ系で、しかも石差+2で黒勝ち。棋譜が偏っているのかな。
棋譜は例の50万棋譜計画の奴で10手目、20手目以降を訂正したというデータ。
明らかに壊れたデータが入っていたりと、何かと使いにくい箇所があるデータだけど、
定石DB作るにはこの量でも足りないのかも。
定石探索用の簡易版minMaxを作りながらつらつら考えていたら、終盤探索の
moveorderをもっと良くする方法を思いついた。評価関数の精度次第だけど。
新評価関数は、途中でうっかり仕込んだバグで遅延。ようやく原因が見つかって、300回
試行まで来た。もうちょい収束させたいけど、テストに使える程度にはなってると思う。
343310
2015/11/08(日) 00:32:40.41ID:LMw8+3qF moveorderを早くする方法というのは、事前に軽く探索した手順を保存し、その手順から
優先して探索するというもの。理論的にはscout missがゼロになる。
探索した手順を取り出す仕組みが必要になるので、その辺を改造しようと思ったところで、
悪い癖が出てしまいました。Cベースのソースを一旦棚上げして、C++ベースのクラスを
利用した形で一から作り直してしまいました。
moveorderの配列をvectorに変えたり、unordered_mapを見つけたので置換表に使って
みたり。置換表は、システム任せにして動的にメモリ確保に行かすと、探索ノードの減少
以上に速度低下して使えない。最初からある程度メモリ確保させようとしているんだけど、
いまいち設定がわからない。動的にメモリ確保するので、速度のバラツキも大きい。
そもそもC++は初めてなので、目的がオセロからC++というかunordered_mapの習得に
なりかかっていたので、一旦棚上げして、配列ベースの自作ハッシュの置換表に戻る
方向にしました。
とはいえ置換表を外してもnode/secが5kくらいしか出ていないので、実装が悪いところもありそう。
というわけで完全に寄り道しちゃってます。
優先して探索するというもの。理論的にはscout missがゼロになる。
探索した手順を取り出す仕組みが必要になるので、その辺を改造しようと思ったところで、
悪い癖が出てしまいました。Cベースのソースを一旦棚上げして、C++ベースのクラスを
利用した形で一から作り直してしまいました。
moveorderの配列をvectorに変えたり、unordered_mapを見つけたので置換表に使って
みたり。置換表は、システム任せにして動的にメモリ確保に行かすと、探索ノードの減少
以上に速度低下して使えない。最初からある程度メモリ確保させようとしているんだけど、
いまいち設定がわからない。動的にメモリ確保するので、速度のバラツキも大きい。
そもそもC++は初めてなので、目的がオセロからC++というかunordered_mapの習得に
なりかかっていたので、一旦棚上げして、配列ベースの自作ハッシュの置換表に戻る
方向にしました。
とはいえ置換表を外してもnode/secが5kくらいしか出ていないので、実装が悪いところもありそう。
というわけで完全に寄り道しちゃってます。
344310
2015/11/12(木) 16:56:19.10ID:4hPfHY6k ようやく、C++ベースの終盤探索(negaScout)が、Cベースより若干速くなりました。
・unordered_mapの速度のバラツキはデバッガー上限定。
実行ファイルでも多少ばらつくけど、メモリ効率&メンテナンス性からunordered_mapを採用。
・探索した確定手順を返す方法の検討で苦戦。
negaScout+置換表では原理的に無理と認識するのに時間を要しただけでしたorz
置換表無しnegaScoutかnegaMax+置換表では、後者の方が高速。
・確定手順を元にmoveorderする改造の効果は限定的。
moveorderで先頭にする処理が重い模様。適用範囲を狭めて行くと1〜3手で同等の速度。
・ハッシュキー生成簡素化で若干速度アップ。
・その他、細かいスピードアップ。
確定手順の導入で50%以上速度アップを目論んでいたのですが、無駄な努力でありました。
一応、与える確定手順の数はマクロ定義で可変できるようにしてあります。
評価関数も修正を加えたいので、データ変換部からまた作り直しです。
目標も無しに同じ事2回やるのは面倒だなぁ。
・unordered_mapの速度のバラツキはデバッガー上限定。
実行ファイルでも多少ばらつくけど、メモリ効率&メンテナンス性からunordered_mapを採用。
・探索した確定手順を返す方法の検討で苦戦。
negaScout+置換表では原理的に無理と認識するのに時間を要しただけでしたorz
置換表無しnegaScoutかnegaMax+置換表では、後者の方が高速。
・確定手順を元にmoveorderする改造の効果は限定的。
moveorderで先頭にする処理が重い模様。適用範囲を狭めて行くと1〜3手で同等の速度。
・ハッシュキー生成簡素化で若干速度アップ。
・その他、細かいスピードアップ。
確定手順の導入で50%以上速度アップを目論んでいたのですが、無駄な努力でありました。
一応、与える確定手順の数はマクロ定義で可変できるようにしてあります。
評価関数も修正を加えたいので、データ変換部からまた作り直しです。
目標も無しに同じ事2回やるのは面倒だなぁ。
345310
2015/11/19(木) 14:23:44.03ID:W/V+CKXD 定石部分もクラス化が終わりました。クラスなんての扱うの初めてなので、もうちょっと
綺麗にできたかなと思う面もありますが、C++習得が目的ではないので。
終盤確定読みは0.05秒刻みで速度アップ。FFO#40で2.3秒になりました。
今まで、速いプログラムでは30手目くらいから勝敗判定を始めると言う記述を読んで、
なんて速いんだと思いつつ、何に使うんだろうと思っていましたが、ようやく腑に落ちました。
オセロというゲームは勝敗だけが問題で、勝つんなら2石差で十分。「少なくとも負けない
手」というなら、(-1,0)のNull windowで探索してβカットされた手を選べば良い。評価値は
不定(これより良いという値)でも負けない手であるという点では「確定」手順です。moveorder
が正確なら、極端に石差を減らす手も選ばない。これなら現状でも25手ちょいくらいは行けそう。
ただ、これは勝勢の時の話で、敗勢の時の評価値は「これより悪い」という数字だし、
逆転は相手のミスに期待するしかなく、相手も同等のロジックのAI相手だと必敗となる。
結局定石段階で勝負がつく事になります。
今、定石DBは30手を前提に組んでいますが、31手目から勝敗判定ができるんなら、定石
を外れない限り中盤探索が不要になり、定石から外れた時にのみ中盤探索が必要になる。
つまり中盤探索は対PC戦では重要度が低く、定石が切れたら、即、終盤探索が始まる。
そもそも評価関数が良ければ、中盤もあまり深く探索する必要がないわけで。
深く読む意味って、なるべく評価が正確なステージを使いたいからなんだなぁと。
というわけで、次はそろそろ中盤探索です。Multi Prob Cutの英語論文を読まねばならぬ・・・。
綺麗にできたかなと思う面もありますが、C++習得が目的ではないので。
終盤確定読みは0.05秒刻みで速度アップ。FFO#40で2.3秒になりました。
今まで、速いプログラムでは30手目くらいから勝敗判定を始めると言う記述を読んで、
なんて速いんだと思いつつ、何に使うんだろうと思っていましたが、ようやく腑に落ちました。
オセロというゲームは勝敗だけが問題で、勝つんなら2石差で十分。「少なくとも負けない
手」というなら、(-1,0)のNull windowで探索してβカットされた手を選べば良い。評価値は
不定(これより良いという値)でも負けない手であるという点では「確定」手順です。moveorder
が正確なら、極端に石差を減らす手も選ばない。これなら現状でも25手ちょいくらいは行けそう。
ただ、これは勝勢の時の話で、敗勢の時の評価値は「これより悪い」という数字だし、
逆転は相手のミスに期待するしかなく、相手も同等のロジックのAI相手だと必敗となる。
結局定石段階で勝負がつく事になります。
今、定石DBは30手を前提に組んでいますが、31手目から勝敗判定ができるんなら、定石
を外れない限り中盤探索が不要になり、定石から外れた時にのみ中盤探索が必要になる。
つまり中盤探索は対PC戦では重要度が低く、定石が切れたら、即、終盤探索が始まる。
そもそも評価関数が良ければ、中盤もあまり深く探索する必要がないわけで。
深く読む意味って、なるべく評価が正確なステージを使いたいからなんだなぁと。
というわけで、次はそろそろ中盤探索です。Multi Prob Cutの英語論文を読まねばならぬ・・・。
346310
2015/11/21(土) 00:05:47.02ID:WWzrsUCT 定石DBを使って30手目まで着手した盤面の予想石差が2で勝ち判定だったので、
試しに31手目から勝敗判定をしてみました。
(-1,0)のNull windowで7分30秒ほどで解けました。
(参考)勝ちと引き分けを区別するために(-1,1)で計算すると9分30秒ほど。
探索ノード数がintではオーバーフローしてしまった・・・。
これから、33〜4手目(残り26〜7手)くらいで、10秒程度で解けると予想されます。
勝勢ならこれで良いのですが、敗勢の時は、初段がβカットされないので10倍程度
時間がかかる。そうすると、残り25〜6手目くらいが勝敗読みの限度かなと。
もっと高速化が必要なのか。それとも、何か発想の転換ができるのか。
試しに31手目から勝敗判定をしてみました。
(-1,0)のNull windowで7分30秒ほどで解けました。
(参考)勝ちと引き分けを区別するために(-1,1)で計算すると9分30秒ほど。
探索ノード数がintではオーバーフローしてしまった・・・。
これから、33〜4手目(残り26〜7手)くらいで、10秒程度で解けると予想されます。
勝勢ならこれで良いのですが、敗勢の時は、初段がβカットされないので10倍程度
時間がかかる。そうすると、残り25〜6手目くらいが勝敗読みの限度かなと。
もっと高速化が必要なのか。それとも、何か発想の転換ができるのか。
347310
2015/11/23(月) 21:01:42.47ID:24rahmZ0 ProbCutとMultiProbCutのBUROさんの論文あらかた読み終えました。
最初、MPCの方から読んでちんぷんかんぷんだったので、ProbCutを読んで、
戻って来て、ようやく実装のイメージが湧くところまで来ました。
というか、この発想に至る道具立てや考え方は、既に揃ってた感じ。例えば>>323とか。
これ>>345-346の勝敗判定の高速化に使える気がする。相手側の手番では
前向きカットしないようにすれば、相手の反駁手を見逃さないからいけるんかなと。
あまり深い読みで使用するとパラメータ作りでしばらくPCを占有しそうだけど。
カットペアは結構アドホックに決めているのかな。各組合せを総当たりで調べても、
σにそんな差があるとは思えないし、特異的に良い組み合わせがあるとも思えないし、
むしろ読む深さの差が増えるにつれてダラダラとσが大きくなって行くだけじゃないか
と思う。毎深さごとにMPCしてもオーバーヘッド負けになるだろうし、再帰的に使う事を
考えたら、2^n+αで4,8,12,16,20,24ってな感じで良いのかな。
最初、MPCの方から読んでちんぷんかんぷんだったので、ProbCutを読んで、
戻って来て、ようやく実装のイメージが湧くところまで来ました。
というか、この発想に至る道具立てや考え方は、既に揃ってた感じ。例えば>>323とか。
これ>>345-346の勝敗判定の高速化に使える気がする。相手側の手番では
前向きカットしないようにすれば、相手の反駁手を見逃さないからいけるんかなと。
あまり深い読みで使用するとパラメータ作りでしばらくPCを占有しそうだけど。
カットペアは結構アドホックに決めているのかな。各組合せを総当たりで調べても、
σにそんな差があるとは思えないし、特異的に良い組み合わせがあるとも思えないし、
むしろ読む深さの差が増えるにつれてダラダラとσが大きくなって行くだけじゃないか
と思う。毎深さごとにMPCしてもオーバーヘッド負けになるだろうし、再帰的に使う事を
考えたら、2^n+αで4,8,12,16,20,24ってな感じで良いのかな。
348310
2015/11/25(水) 22:32:57.73ID:APRE5Y1F 条件を決めて簡単にMPCパラメータの計算プログラムを作って検証してみました。
30手目の時点(深さ30)の時の浅い探索0〜10手でMPCパラメータを計算してみました。
例の300万件棋譜の30手目以後完全読み(らしい)190万件ほどのデータからランダム
に200件ほど抽出して使用。
結論)δが10石、R-2が0.7未満という状態で、とても使えたものではないという事に。
ただ、35、40、45手目時点からのカットを試す価値はあるかも知れない。
一方、30手目の時点で、深さ10の探索に対して、浅い探索6までで計算すると、
浅い探索4手でδが2石、R-2が0.931、浅い探索6手でσが1.5石、R-2が0.962
程度と、まずまずの結果に。これが、論文通りの使い方。
当たり前だけど、こちらは十分使えそう。ただ、結局深い探索に対して浅い探索の深さを
決めるのに、全パターン試すしか無いという。まあ、BUROさんのマネしちゃえば良いけど。
あと、中盤読みのプログラム、やっつけで、終盤探索の手順作成用の浅い読みプログラム
転用したんだけど、これnegaMaxなのよね。negaScout+MTD(f)にするなり、もう少し、
素の高速化をしないとパラメータ計算が大変。
30手目の時点(深さ30)の時の浅い探索0〜10手でMPCパラメータを計算してみました。
例の300万件棋譜の30手目以後完全読み(らしい)190万件ほどのデータからランダム
に200件ほど抽出して使用。
結論)δが10石、R-2が0.7未満という状態で、とても使えたものではないという事に。
ただ、35、40、45手目時点からのカットを試す価値はあるかも知れない。
一方、30手目の時点で、深さ10の探索に対して、浅い探索6までで計算すると、
浅い探索4手でδが2石、R-2が0.931、浅い探索6手でσが1.5石、R-2が0.962
程度と、まずまずの結果に。これが、論文通りの使い方。
当たり前だけど、こちらは十分使えそう。ただ、結局深い探索に対して浅い探索の深さを
決めるのに、全パターン試すしか無いという。まあ、BUROさんのマネしちゃえば良いけど。
あと、中盤読みのプログラム、やっつけで、終盤探索の手順作成用の浅い読みプログラム
転用したんだけど、これnegaMaxなのよね。negaScout+MTD(f)にするなり、もう少し、
素の高速化をしないとパラメータ計算が大変。
349名前は開発中のものです。
2015/11/29(日) 22:05:16.61ID:gx8DmdDE googleとかfbが囲碁のAI作ってるが、どんなもんなの
350310
2015/12/02(水) 23:21:25.70ID:Xp/MZwxE とりあえずMPCの仕組と終盤探索用のパラメータだけ作り、終盤探索と勝敗判定に
適用してみました。
勝敗判定は31手目から。浅い探索は残り手数の1/3。T=1.5で時間短縮が微妙な感じ。
終盤探索はFFO#40でテストしたところ、T=1.5だと途中で正解着手がカットされている
模様で、T=2.0で正解。T=2.0だと時間変わらずみたいな微妙な結果に。
もう一度、MPCの論文を良く読んでみましたが、どちらかというと評価関数の精度の差
の方が大きい様子で、もともと標準偏差が倍近いので、そこを何とかしなきゃならんと。
論文を良く読むと・・・評価関数に確定石はおろか、mobilityも使っていない。使っている
のは、パリティー(手番)だけで、ここは自分の方が精度が良い方法のはず。という事で、
急きょ評価関数の説明変数をパターンだけにして再計算に着手しました。
とはいえ、書いてある学習係数があまりに違いすぎるので、自分がバグってる可能性も。
また、ネットでBUROさんのパワポ資料(2002年)みたいなのを見つけて読んでみると、
「selective endgame search」と称して、MPCの終盤探索への応用がサラっと書かれて
いて、「いまどきの強いオセロプログラムはみんなやってる」との事。iterative deepingを
前提にしているのでmoveorder作成で使ってるのかなぁ。正解着手だけ与えても速度アップ
は限界があり、正解以外着手のnull window searchの時間がバカにならないので。
あと、中盤探索は(17,5)というカットペアの記載あり。zebraのFFOのログでは中盤探索が
2.5kNPSなのに対して、僕のは250MPSと、速度が1/10なので・・・深さ17はしんどいかなと。
ちょっと期待しているのは、前述のとおり確定石計算を評価関数で使用しなくなったので
その分は速度アップしていないかなぁと。
評価関数の再計算を始めてしまったので、しばらくは中盤探索が動かせません。
というか、本当にLRの計算があっているのか、バグは無いのか、不安になる…
適用してみました。
勝敗判定は31手目から。浅い探索は残り手数の1/3。T=1.5で時間短縮が微妙な感じ。
終盤探索はFFO#40でテストしたところ、T=1.5だと途中で正解着手がカットされている
模様で、T=2.0で正解。T=2.0だと時間変わらずみたいな微妙な結果に。
もう一度、MPCの論文を良く読んでみましたが、どちらかというと評価関数の精度の差
の方が大きい様子で、もともと標準偏差が倍近いので、そこを何とかしなきゃならんと。
論文を良く読むと・・・評価関数に確定石はおろか、mobilityも使っていない。使っている
のは、パリティー(手番)だけで、ここは自分の方が精度が良い方法のはず。という事で、
急きょ評価関数の説明変数をパターンだけにして再計算に着手しました。
とはいえ、書いてある学習係数があまりに違いすぎるので、自分がバグってる可能性も。
また、ネットでBUROさんのパワポ資料(2002年)みたいなのを見つけて読んでみると、
「selective endgame search」と称して、MPCの終盤探索への応用がサラっと書かれて
いて、「いまどきの強いオセロプログラムはみんなやってる」との事。iterative deepingを
前提にしているのでmoveorder作成で使ってるのかなぁ。正解着手だけ与えても速度アップ
は限界があり、正解以外着手のnull window searchの時間がバカにならないので。
あと、中盤探索は(17,5)というカットペアの記載あり。zebraのFFOのログでは中盤探索が
2.5kNPSなのに対して、僕のは250MPSと、速度が1/10なので・・・深さ17はしんどいかなと。
ちょっと期待しているのは、前述のとおり確定石計算を評価関数で使用しなくなったので
その分は速度アップしていないかなぁと。
評価関数の再計算を始めてしまったので、しばらくは中盤探索が動かせません。
というか、本当にLRの計算があっているのか、バグは無いのか、不安になる…
351名前は開発中のものです。
2015/12/02(水) 23:37:59.26ID:Xp/MZwxE >>349
囲碁オセロ板の該当スレで聞いた方が良いかなと。
コンピューター囲碁ソフトについて語るスレ30 [転載禁止]©2ch.net
http://kanae.2ch.net/test/read.cgi/gamestones/1447640768/
囲碁オセロ板の該当スレで聞いた方が良いかなと。
コンピューター囲碁ソフトについて語るスレ30 [転載禁止]©2ch.net
http://kanae.2ch.net/test/read.cgi/gamestones/1447640768/
352310
2015/12/04(金) 23:35:12.62ID:DNSRUk3b 結局、確定石が評価関数の誤差の大きさと、収束性の悪さの原因だったみたいです。
前半から中盤はmobilityのウェイトが大きそうなので、とりあえず復活させてみました。
あと、スムージングは、あるステージで出現しなかったパターンが隣接ステージにある
可能性も考慮し、ウェイトがゼロのパターンを減らす目的もあるようです。
実際、200試行ちょっとでかなり誤差が減ったのですが、FFO#40で試すと途中の評価値
のバラツキというか、極端に0に近い局面が現れて、2σ以上の差異が簡単に出てしまい
ます。そこで、ちょっとだけスムージングを入れて、かつデバッグ段階ではウェイトゼロの
出現をアラームできるように改造しようかと思っています。
評価関数の重要性を痛感しています。しばらくは、ここで悩む事になるのかなぁ。
最低でも300試行するとなると3日かかる。
前半から中盤はmobilityのウェイトが大きそうなので、とりあえず復活させてみました。
あと、スムージングは、あるステージで出現しなかったパターンが隣接ステージにある
可能性も考慮し、ウェイトがゼロのパターンを減らす目的もあるようです。
実際、200試行ちょっとでかなり誤差が減ったのですが、FFO#40で試すと途中の評価値
のバラツキというか、極端に0に近い局面が現れて、2σ以上の差異が簡単に出てしまい
ます。そこで、ちょっとだけスムージングを入れて、かつデバッグ段階ではウェイトゼロの
出現をアラームできるように改造しようかと思っています。
評価関数の重要性を痛感しています。しばらくは、ここで悩む事になるのかなぁ。
最低でも300試行するとなると3日かかる。
353310
2015/12/05(土) 23:27:03.86ID:VLRyPTJJ モビリティーも収束悪化の原因でした。
確定石の数にしても、モビリティにしても、ある程度大きな数字が出るものがダメっぽいです。
評価パターンとウェイトを確認できるようにして、FFO#40〜41の完全読みに登場する盤面を
チェックしましたが、ウェイトゼロのパターンは出現していないようです。
評価値が大きくぶれるところがありますので、スムージングを入れてみて計算開始です。
確定石の数にしても、モビリティにしても、ある程度大きな数字が出るものがダメっぽいです。
評価パターンとウェイトを確認できるようにして、FFO#40〜41の完全読みに登場する盤面を
チェックしましたが、ウェイトゼロのパターンは出現していないようです。
評価値が大きくぶれるところがありますので、スムージングを入れてみて計算開始です。
354310
2015/12/07(月) 10:00:41.29ID:JSVZKjkd スムージングも外してみたら、Buroさんの論文なみ(か、それ以下)のσが出そうな
感じになってきました。収束が良いのでβも大きくできたし、その後の計算でも工夫を
入れたので、Buroさん論文みたいに300回試行で十分なレベルになりそうです。
ウェイトゼロのパターンはありました。FFO#40の50手目のCORN2x5に1つ現れます。
現在selective endgame searchがどんなものなのか、想像を膨らませています。
iterative widening endcutのイメージがなんとなくつかめてきました。
ソースを探して見ちゃえば早いんだろうけど、面倒だし、想像だけで頑張る。
MPCが動いたら、solver改造して、本当に速くなるのか確認する。
感じになってきました。収束が良いのでβも大きくできたし、その後の計算でも工夫を
入れたので、Buroさん論文みたいに300回試行で十分なレベルになりそうです。
ウェイトゼロのパターンはありました。FFO#40の50手目のCORN2x5に1つ現れます。
現在selective endgame searchがどんなものなのか、想像を膨らませています。
iterative widening endcutのイメージがなんとなくつかめてきました。
ソースを探して見ちゃえば早いんだろうけど、面倒だし、想像だけで頑張る。
MPCが動いたら、solver改造して、本当に速くなるのか確認する。
355310
2015/12/10(木) 23:16:49.62ID:lQAJMVKx 結局、評価関数は1000回試行までやってます。
β・1/Nでやってるけど、それだと収束が遅いので、100回試行ごとにβを倍々に。
1000試行目で発散するステージが出たので、βを下げて最後の100試行を実行中。
その間、反復深化などで使えるように、置換表を改造。前回評価範囲をmoveorderで
再利用します。いちいち消しているとメモリ解放で時間がかかるし、全データを入れたまま
用途をキーで区別すると、使用時に選択する事になりオーバーヘッドが気になるので、
一番新しい評価値をひたすら上書きし、置換表として使用する時のみ、今回探索か
区別するようにしました。moveorderで若干割り切った作りです。
同時に中盤探索(MPCなし、反復深化)をちゃんと作ってみました。MPC計算で、結構深い
深さまで探索する予定なので、反復深化が上手く機能するようなMPC計算ロジックを考え
ようと思っています。
それができたらiterative wideningのテストをしてみようと思います。
β・1/Nでやってるけど、それだと収束が遅いので、100回試行ごとにβを倍々に。
1000試行目で発散するステージが出たので、βを下げて最後の100試行を実行中。
その間、反復深化などで使えるように、置換表を改造。前回評価範囲をmoveorderで
再利用します。いちいち消しているとメモリ解放で時間がかかるし、全データを入れたまま
用途をキーで区別すると、使用時に選択する事になりオーバーヘッドが気になるので、
一番新しい評価値をひたすら上書きし、置換表として使用する時のみ、今回探索か
区別するようにしました。moveorderで若干割り切った作りです。
同時に中盤探索(MPCなし、反復深化)をちゃんと作ってみました。MPC計算で、結構深い
深さまで探索する予定なので、反復深化が上手く機能するようなMPC計算ロジックを考え
ようと思っています。
それができたらiterative wideningのテストをしてみようと思います。
356310
2015/12/11(金) 22:32:36.55ID:c1YdnEjo あちゃ。ウィンドウ幅1でiterative wideningやると、正解着手もβカットされた手も
置換表の値が全部同じになって、次の探索でmoveorderが意味なしになって、
速度が大幅低下する事が発覚。
仕組み考えないと・・・。
置換表の値が全部同じになって、次の探索でmoveorderが意味なしになって、
速度が大幅低下する事が発覚。
仕組み考えないと・・・。
357310
2015/12/13(日) 23:14:55.34ID:RUGsIY6w 一応回避したけど、MPCの速度向上は限定的。
中盤探索というか評価関数が驚くほど遅いのだろうという結論に。
放置していた中盤探索の素の高速化に入ります。
1か所ネタはあるんだけど。
中盤探索というか評価関数が驚くほど遅いのだろうという結論に。
放置していた中盤探索の素の高速化に入ります。
1か所ネタはあるんだけど。
358名前は開発中のものです。
2015/12/18(金) 00:28:56.19ID:ht2BaviT 中盤探索で2か所改良して、速度は2倍にアップ。まだzebraの6掛け程度の速度です。
終盤探索のiterative wideningを想像しながらテストするも、いまいち速度向上が望めない。
MPCのカット基準を緩めながら(widening)、置換表にmoveorderを貯めていく事でβカット
をどんどん起こさせて、最後の完全読み時点ではほぼ完ぺきな順序に並び変える事で
高速化を実現する方法だと想像しているんだけど、違うのかなぁ。
そんなこんなでやけくそ気味に、浅い探索(11手読み)+negaScout(-∞,+∞)を試したら
FFO#40で1.93秒という最速タイムが出てしまった。MPCもMTD(f)も意味なしorz
#41,#42もこの方法でかなり高速化したけど、それでもまだzebraの方が速い。
終盤探索のiterative wideningを想像しながらテストするも、いまいち速度向上が望めない。
MPCのカット基準を緩めながら(widening)、置換表にmoveorderを貯めていく事でβカット
をどんどん起こさせて、最後の完全読み時点ではほぼ完ぺきな順序に並び変える事で
高速化を実現する方法だと想像しているんだけど、違うのかなぁ。
そんなこんなでやけくそ気味に、浅い探索(11手読み)+negaScout(-∞,+∞)を試したら
FFO#40で1.93秒という最速タイムが出てしまった。MPCもMTD(f)も意味なしorz
#41,#42もこの方法でかなり高速化したけど、それでもまだzebraの方が速い。
359310
2015/12/20(日) 17:21:06.88ID:UpZkem/K 中盤探索で改良をしたらかえって遅くなるを繰り返してます。
で、やけくそ気味にmoveorderの「置換表がない時」の計算値を、簡素化してみたら
中盤探索の速度そのままに、終盤探索部分の探索ノードが減少して高速化。
終盤探索部分も同様に簡素化したら、FFO#40で1.75秒以下になりました。
それでも相変わらず#41/42はzebraがずーっと早い。
で、MPC使うと遅くなる理由を考えていたら、いま使っているMPCのセットは終盤探索用に、
残り手数と浅い読みのセットを独自パターンにして計算した奴だと言う事を思い出した。
深い探索のスコア=終局のスコアとなり、深い探索が不要になるので。
中盤の高速化するネタももう出てきそうにないし、先に進むか・・・
で、やけくそ気味にmoveorderの「置換表がない時」の計算値を、簡素化してみたら
中盤探索の速度そのままに、終盤探索部分の探索ノードが減少して高速化。
終盤探索部分も同様に簡素化したら、FFO#40で1.75秒以下になりました。
それでも相変わらず#41/42はzebraがずーっと早い。
で、MPC使うと遅くなる理由を考えていたら、いま使っているMPCのセットは終盤探索用に、
残り手数と浅い読みのセットを独自パターンにして計算した奴だと言う事を思い出した。
深い探索のスコア=終局のスコアとなり、深い探索が不要になるので。
中盤の高速化するネタももう出てきそうにないし、先に進むか・・・
360名前は開発中のものです。
2015/12/23(水) 11:41:36.91ID:Acs4Om0o iterative wideningって詰め碁用のアルゴリズムっぽいけど違うの?
310の言ってるのってただのAspiration Searchか何かに見えるけど
てか置換表にmoveorderを溜めるとはどういう意味だ
310の言ってるのってただのAspiration Searchか何かに見えるけど
てか置換表にmoveorderを溜めるとはどういう意味だ
361310
2015/12/23(水) 16:26:13.00ID:MLtsaD3t どもです。
Buroさんのパワポっぽい資料に名前しか書いてないので中身がわかりません。
わかっているのはMPCと併用するらしいことくらいです。
iterative wideningで検索すると確かに碁の関連の英語論文がヒットしますね。
関係なさそうだと思って放置していましたが、ちょっと見てみようかなぁ。
置換表云々は、僕の想像です。
αβを前提にしたアルゴリズムで高速化するネタの一つに、moveorderを工夫して
βカットが起きやすくするってのがあると思います。
反復試行する際、置換表には前回の評価の範囲が入っています。
それを今回探索のmoveorderの並べ替えに利用しようというものです。
反復深化なんかと同じ考え方です。
逆に言うと、反復を前提としたアルゴリズムで高速化するネタが、それくらいしか
思い浮かばないのです。
Buroさんのパワポっぽい資料に名前しか書いてないので中身がわかりません。
わかっているのはMPCと併用するらしいことくらいです。
iterative wideningで検索すると確かに碁の関連の英語論文がヒットしますね。
関係なさそうだと思って放置していましたが、ちょっと見てみようかなぁ。
置換表云々は、僕の想像です。
αβを前提にしたアルゴリズムで高速化するネタの一つに、moveorderを工夫して
βカットが起きやすくするってのがあると思います。
反復試行する際、置換表には前回の評価の範囲が入っています。
それを今回探索のmoveorderの並べ替えに利用しようというものです。
反復深化なんかと同じ考え方です。
逆に言うと、反復を前提としたアルゴリズムで高速化するネタが、それくらいしか
思い浮かばないのです。
362名前は開発中のものです。
2015/12/23(水) 20:37:25.92ID:Acs4Om0o ああ、オーダリングに以前の探索の結果を置換表から引いて使うってことか
置換表に順列か何かを放り込んでいくのかな?とか思ってしまった
bitboard + NegaScout + 置換表 + MPC + 評価関数とマージンの学習
をやってるっぽいのはわかったけど、とりあえず定番どころは全部入れてるのかな
NegaScoutで最初のノードを探索するときに、
探索窓を(-inf, inf)で探索せずに、前回の評価値eを使って
(e - d, e + d)で探索して、失敗したときに限り窓を広げて再探索するのがAspiration Searchだけど
もうやってるかな
あとCPUのSIMD命令使ったり、並列化したりとかはめちゃ効果でかいよ
置換表に順列か何かを放り込んでいくのかな?とか思ってしまった
bitboard + NegaScout + 置換表 + MPC + 評価関数とマージンの学習
をやってるっぽいのはわかったけど、とりあえず定番どころは全部入れてるのかな
NegaScoutで最初のノードを探索するときに、
探索窓を(-inf, inf)で探索せずに、前回の評価値eを使って
(e - d, e + d)で探索して、失敗したときに限り窓を広げて再探索するのがAspiration Searchだけど
もうやってるかな
あとCPUのSIMD命令使ったり、並列化したりとかはめちゃ効果でかいよ
363310
2015/12/23(水) 22:38:37.71ID:MLtsaD3t >>362
ご助言ありがとうございます。
MPCはまだ途中ですが、そんな感じです。
終盤n手高速化の類もしています。中盤探索だと葉に近いところで置換表外すと、
著しく速度が低下するので、最後まで置換表を使っています。
で、中盤の速度がいまいちで12手読みくらいが実用範囲って感じです。
MPCでd計算に100棋譜くらい試して一晩で計算できる範囲は13〜14手くらいが
限界な感じです。そろそろMPC計算しちゃおうかと思いつつ、まだ悶々と中盤探索で
どこか高速化できないかトライ中です。
SIMD命令はコンパイルオプションでそれらしい場所があったので、設定してみましたが、
速度変わらずで放置しています。どうやって使うものなのでしょうか?
そもそも、組込関数のpopcountとかbitscanで64ビット版が使えずに放置してる状況です。
並列化はMPCが終わって、一通りオセロの形にしてから、次ステップで勉強しようかと
思っています。
アスピレーションサーチは、1σは±7〜8手なので試しに±8の幅にしてテストしてみた
ところ、確かに若干高速化できている様子です。mtd(f)は下から寄っていく時はβカットが
効くのですが上から寄っていく時は遅いので、一発目で探索できる確率を上げつつ、
ある程度幅を絞るには、このくらいがちょうど良い感じですね。
ご助言ありがとうございます。
MPCはまだ途中ですが、そんな感じです。
終盤n手高速化の類もしています。中盤探索だと葉に近いところで置換表外すと、
著しく速度が低下するので、最後まで置換表を使っています。
で、中盤の速度がいまいちで12手読みくらいが実用範囲って感じです。
MPCでd計算に100棋譜くらい試して一晩で計算できる範囲は13〜14手くらいが
限界な感じです。そろそろMPC計算しちゃおうかと思いつつ、まだ悶々と中盤探索で
どこか高速化できないかトライ中です。
SIMD命令はコンパイルオプションでそれらしい場所があったので、設定してみましたが、
速度変わらずで放置しています。どうやって使うものなのでしょうか?
そもそも、組込関数のpopcountとかbitscanで64ビット版が使えずに放置してる状況です。
並列化はMPCが終わって、一通りオセロの形にしてから、次ステップで勉強しようかと
思っています。
アスピレーションサーチは、1σは±7〜8手なので試しに±8の幅にしてテストしてみた
ところ、確かに若干高速化できている様子です。mtd(f)は下から寄っていく時はβカットが
効くのですが上から寄っていく時は遅いので、一発目で探索できる確率を上げつつ、
ある程度幅を絞るには、このくらいがちょうど良い感じですね。
364310
2015/12/24(木) 20:33:24.09ID:zDiJT168 ちと調べてみました。SIMD命令はx64でコンパイルしている時は、設定しなくても自動的に
使うようになっているみたいな説明を見つけました。
並列化とかベクター化とかもコンパイラが自動でやってくれるみたいですが、レポート出し
たら確かに一つも対象になっていませんでした。評価値算出とmobilityの2関数は、なんか
効きそうな気がしますので、少し悶々とトライしてみます。
また、_mm_popcnt_u64と_BitscanFoward64は、今やってみたら、何故か使えました。
色々とコンパイラのオプションをいじったのが原因かなぁ。謎。
多少速度アップした模様です。
アスピレーションウィンドウはdの計算しなきゃと思っていましたが、よくよく考えたら、
評価関数の計算時の誤差ログが残っていますので、そいつでパラメータ作成してみます。
と、久々にFFO#43まで時間計測したところ、#43で答えが違ってる。
数か月前に最終2手高速化をいじった時にバグを仕込んだ模様です。
調べようとdebugモードにしたら64ビット組込関数が使えない。
やっぱりコンパイルオプションのどこかみたいですが、わからない。
だんだん問題が発散してきて、頭の切り替えが追い付かなくなってますorz
使うようになっているみたいな説明を見つけました。
並列化とかベクター化とかもコンパイラが自動でやってくれるみたいですが、レポート出し
たら確かに一つも対象になっていませんでした。評価値算出とmobilityの2関数は、なんか
効きそうな気がしますので、少し悶々とトライしてみます。
また、_mm_popcnt_u64と_BitscanFoward64は、今やってみたら、何故か使えました。
色々とコンパイラのオプションをいじったのが原因かなぁ。謎。
多少速度アップした模様です。
アスピレーションウィンドウはdの計算しなきゃと思っていましたが、よくよく考えたら、
評価関数の計算時の誤差ログが残っていますので、そいつでパラメータ作成してみます。
と、久々にFFO#43まで時間計測したところ、#43で答えが違ってる。
数か月前に最終2手高速化をいじった時にバグを仕込んだ模様です。
調べようとdebugモードにしたら64ビット組込関数が使えない。
やっぱりコンパイルオプションのどこかみたいですが、わからない。
だんだん問題が発散してきて、頭の切り替えが追い付かなくなってますorz
365名前は開発中のものです。
2015/12/24(木) 20:53:24.01ID:DG4HDn4P pop_cntはめちゃめちゃ速度上がった経験あるが(三割アップ)
オセロだとそうでもないのかな。
オセロだとそうでもないのかな。
366310
2015/12/24(木) 22:56:29.36ID:zDiJT168 _mm_popcnt_u32()はすでに使っていました。u64が使えなかっただけです。
u32→u64で3〜5%くらいの高速化になっています。
困った事に、debugビルドの側では、まだ64bit版が使えていません。
debugを使いたい時は32bitに直さないといけない。
コンパイルオプションをいろいろ見比べていますが、どこなのかいまだにわかりません。
#43は最終2手なのか1手なのか、どちらにバグがあるのか切り分けようとして
ソースいじっているうちに直ってしまいました(汗)。
u32→u64で3〜5%くらいの高速化になっています。
困った事に、debugビルドの側では、まだ64bit版が使えていません。
debugを使いたい時は32bitに直さないといけない。
コンパイルオプションをいろいろ見比べていますが、どこなのかいまだにわかりません。
#43は最終2手なのか1手なのか、どちらにバグがあるのか切り分けようとして
ソースいじっているうちに直ってしまいました(汗)。
367名前は開発中のものです。
2015/12/25(金) 15:25:23.28ID:skIhqDAd >>364
コンパイラの自動ループ展開(あんま賢くない)に限らず、
手動でAVXだのSSE命令だの使えるところは使ったらという話
あとMPCは本質的に前向き枝刈りなので、過激に刈りすぎると答えがずれる可能性はあると思うけど
(バグの原因は当たりがついているようなので関係ない気がするが
コンパイラの自動ループ展開(あんま賢くない)に限らず、
手動でAVXだのSSE命令だの使えるところは使ったらという話
あとMPCは本質的に前向き枝刈りなので、過激に刈りすぎると答えがずれる可能性はあると思うけど
(バグの原因は当たりがついているようなので関係ない気がするが
368310
2015/12/26(土) 11:23:54.66ID:2a5cp76f どもです。バグったところはMPC使って無い箇所でした。
コンパイラの自動ループ展開は上記2か所で試してますが、なかなかうまく行きません。
なんとか依存関係を解消してループ展開強制すると劇的に速度低下する状態です。
その代り、いろいろググっていたら、BMI命令を見つけて、BLSIとPEXTを使ってみました。
速度バランスが変わったのでパラメータで置換表適用範囲を狭めるなどもしましたが、
FFO#40で1.55秒前後まで高速化できました。中盤探索も高速化はしているはずですが、
数%程度の改善というところでしょうか。まだ50%は高速化したい状態です。
色々アドバイスいただいたお蔭で、ようやくSIMDまわりの使い方がわかってきました。
ここまで来ると、BITBOARD操作の関数の見直しをしたくなりますね。
中盤探索の一番重い部分なので。
コンパイラの自動ループ展開は上記2か所で試してますが、なかなかうまく行きません。
なんとか依存関係を解消してループ展開強制すると劇的に速度低下する状態です。
その代り、いろいろググっていたら、BMI命令を見つけて、BLSIとPEXTを使ってみました。
速度バランスが変わったのでパラメータで置換表適用範囲を狭めるなどもしましたが、
FFO#40で1.55秒前後まで高速化できました。中盤探索も高速化はしているはずですが、
数%程度の改善というところでしょうか。まだ50%は高速化したい状態です。
色々アドバイスいただいたお蔭で、ようやくSIMDまわりの使い方がわかってきました。
ここまで来ると、BITBOARD操作の関数の見直しをしたくなりますね。
中盤探索の一番重い部分なので。
369310
2015/12/28(月) 10:45:49.88ID:i0yT273K デバッグモードでu64系の関数が使えない件、解消しました。
MTD(f)に代えてアスピレーションウィンドウを採用しました。
中盤探索は、隣の評価値をたどっていくと、かえって遅くなるのでnegaScoutだけで
探索していましたが、これでMPC計算が多少高速化できそうです。
MPC計算はまだしていません。反復深化でどのくらいの深さの探索で、どのくらいの
件数なら実用的に計算できるか試行しています。14手読みまでは行けそうですが、
15手だと厳しいかなぁという状態。20手付近では盤面によっては、探索ノードが爆発的
に増えて、時間のバラツキも大きいです。
また、FFO#40-44の完全読みを計測しました。zebra比で#40は圧勝、#41-42は引き分け
ですが、#43-44は完敗。理由は#43-44は正解となる初手が2つあるためで、#43は10秒
以上かかってます。むむむ。
MTD(f)に代えてアスピレーションウィンドウを採用しました。
中盤探索は、隣の評価値をたどっていくと、かえって遅くなるのでnegaScoutだけで
探索していましたが、これでMPC計算が多少高速化できそうです。
MPC計算はまだしていません。反復深化でどのくらいの深さの探索で、どのくらいの
件数なら実用的に計算できるか試行しています。14手読みまでは行けそうですが、
15手だと厳しいかなぁという状態。20手付近では盤面によっては、探索ノードが爆発的
に増えて、時間のバラツキも大きいです。
また、FFO#40-44の完全読みを計測しました。zebra比で#40は圧勝、#41-42は引き分け
ですが、#43-44は完敗。理由は#43-44は正解となる初手が2つあるためで、#43は10秒
以上かかってます。むむむ。
370名前は開発中のものです。
2015/12/28(月) 21:28:38.25ID:kMgyHY3u オセロ完全解析は何年後くらいになりそうですか?
371310
2015/12/29(火) 02:31:09.04ID:F/Ba7yoX ちょっと一括変換操作を誤って大変な事になっていました。一通り直していたところ、
FFO#40で1.45秒程度が出るようになってしまいました。多分、修復がてら置換表登録・
検索関数の変数の並びを、整列したのが効いたのだと思っていますが、びっくりポンです。
前回課題の正解着手が複数あるケースですが、MTD(f)のような評価値決め打ち系の
探索では、ぴったりの答えが見つかった時点で、ほかの手を探索する必要が無い事に
気づき、直してみたところ、FFO#44は速度アップしました。が、#43はまだ駄目です。
とはいえ、#43は浅い探索の評価値が外れすぎて時間がかかっているような感じなので、
浅い探索の深さを残り手数で調整すると直りそうな気がしています。
あと、FFOテストの全データをテストできるように登録しましたが、#59を見て、はたと、
途中全滅時のスコア計算が違う事に気づきました。自分のは一番単純なアメリカルール
です。ここを直すと、確実に時間が遅くなるような気がしますが、明日直してみます。
てな事をやって、一晩に0.1秒(比率にして7%前後)も短縮していると、まだなんか
やる事があるんじゃないかと・・・。
FFO#40で1.45秒程度が出るようになってしまいました。多分、修復がてら置換表登録・
検索関数の変数の並びを、整列したのが効いたのだと思っていますが、びっくりポンです。
前回課題の正解着手が複数あるケースですが、MTD(f)のような評価値決め打ち系の
探索では、ぴったりの答えが見つかった時点で、ほかの手を探索する必要が無い事に
気づき、直してみたところ、FFO#44は速度アップしました。が、#43はまだ駄目です。
とはいえ、#43は浅い探索の評価値が外れすぎて時間がかかっているような感じなので、
浅い探索の深さを残り手数で調整すると直りそうな気がしています。
あと、FFOテストの全データをテストできるように登録しましたが、#59を見て、はたと、
途中全滅時のスコア計算が違う事に気づきました。自分のは一番単純なアメリカルール
です。ここを直すと、確実に時間が遅くなるような気がしますが、明日直してみます。
てな事をやって、一晩に0.1秒(比率にして7%前後)も短縮していると、まだなんか
やる事があるんじゃないかと・・・。
372名前は開発中のものです。
2015/12/29(火) 03:05:56.17ID:rs+91GZQ 結局MTD(f)をやってるのかやってないのか意味わからんな
373310
2015/12/29(火) 10:25:40.74ID:F/Ba7yoX って、βカットしない事を確認しなきゃきゃいけないから、ぴったりの答えがあっても
全手を探索しないとダメじゃん。すんません。
全手を探索しないとダメじゃん。すんません。
374310
2015/12/29(火) 10:52:28.77ID:F/Ba7yoX >>372
やったりやらなかったりで、いろいろ比較して試してます。
MTD(f)では、ワーストケースではウィンドウ中心が評価値の最少単位で動く関係で、
1石以下の少数計算をする中盤探索では、よけいに時間がかかる事が多いです。
そのため、アスピレーションウィンドウ導入前はただのnegaScoutにしてました。
終盤探索は、最少単位が1石になりますので、許容範囲です。
MTD(f)もアスピレーションウィンドウも、所詮本チャンのnegaScoutを呼び出すための
ドライバーにすぎないので、どちらも用意して、何かの折に速度比較しています。
今回は、ボツりましたが、ぴったりの値が見つかったら後の探索を省略する際には、
MTD(f)の方がマッチングが良かったので、そうしました。
ボツになりましたので、またアスピレーションウィンドウに戻りましたが。
#40ではzebraよりはるかに高速化できましたが、#43など遅いケースでは、数倍の時間が
かかります。こういうタイプの時間差は、単純な高速化じゃなくて、何らかのアルゴリズム
の違いがあるのかなと想像しています。
やったりやらなかったりで、いろいろ比較して試してます。
MTD(f)では、ワーストケースではウィンドウ中心が評価値の最少単位で動く関係で、
1石以下の少数計算をする中盤探索では、よけいに時間がかかる事が多いです。
そのため、アスピレーションウィンドウ導入前はただのnegaScoutにしてました。
終盤探索は、最少単位が1石になりますので、許容範囲です。
MTD(f)もアスピレーションウィンドウも、所詮本チャンのnegaScoutを呼び出すための
ドライバーにすぎないので、どちらも用意して、何かの折に速度比較しています。
今回は、ボツりましたが、ぴったりの値が見つかったら後の探索を省略する際には、
MTD(f)の方がマッチングが良かったので、そうしました。
ボツになりましたので、またアスピレーションウィンドウに戻りましたが。
#40ではzebraよりはるかに高速化できましたが、#43など遅いケースでは、数倍の時間が
かかります。こういうタイプの時間差は、単純な高速化じゃなくて、何らかのアルゴリズム
の違いがあるのかなと想像しています。
375310
2015/12/30(水) 00:01:33.75ID:lfikhn/D 結局、本日は探索速度アップばかりやってました。
中盤探索というか評価関数の計算でBMI2命令を徹底的に使ってみました。
また、ボードの回転操作系も見直しました。
10%程度は高速化できたと思います。でも、期待したほどではなかった。
あと、速度アップするなら、ボードの対角線転置かなぁ。あと効果は微妙だけど、180度
回転がビットオーダーの逆転なので、これも何か組み込み関数があったらうれしいなと。
終盤探索では、FFO#59問題に対処。
スコア計算の修正と、全滅など64石の差がついた時に、βカットと同様に後続の探索を
パスして時短。minMaxで言うところのα値の更新があり得なくなるからです。
浅い探索が11手だと3秒程度で解けるのに、15手だと60秒かかったりと、いまいち動き
に納得がいかないので、まだ何か問題があるかも知れません。
中盤探索をあと50%は高速化したいなぁ。というか、zebra見てるとできるはず。
中盤探索というか評価関数の計算でBMI2命令を徹底的に使ってみました。
また、ボードの回転操作系も見直しました。
10%程度は高速化できたと思います。でも、期待したほどではなかった。
あと、速度アップするなら、ボードの対角線転置かなぁ。あと効果は微妙だけど、180度
回転がビットオーダーの逆転なので、これも何か組み込み関数があったらうれしいなと。
終盤探索では、FFO#59問題に対処。
スコア計算の修正と、全滅など64石の差がついた時に、βカットと同様に後続の探索を
パスして時短。minMaxで言うところのα値の更新があり得なくなるからです。
浅い探索が11手だと3秒程度で解けるのに、15手だと60秒かかったりと、いまいち動き
に納得がいかないので、まだ何か問題があるかも知れません。
中盤探索をあと50%は高速化したいなぁ。というか、zebra見てるとできるはず。
376310
2015/12/31(木) 21:04:10.05ID:i5TR43+g 2015年の年の瀬は、MPC計算のメモリーリークの原因探しで更けていく・・・
置換表クラスあたりっぽいんだけど、デバッグの仕方が良くわからないという・・・
置換表クラスあたりっぽいんだけど、デバッグの仕方が良くわからないという・・・
377310
2015/12/31(木) 23:46:42.84ID:i5TR43+g ギリギリ12時前に直った。
メモリリークではなく、不正なアクセスでした。
多分直ったと思う・・・
来年の抱負は、MPCの計算をする事と、GUIを作る事です。
元々VBのGUIからDLLで呼び出すつもりでしたが、なんとなくC++でやってみようか
という気になってきています。
メモリリークではなく、不正なアクセスでした。
多分直ったと思う・・・
来年の抱負は、MPCの計算をする事と、GUIを作る事です。
元々VBのGUIからDLLで呼び出すつもりでしたが、なんとなくC++でやってみようか
という気になってきています。
378310
2016/01/03(日) 11:08:48.54ID:3YPfF+nL バグは解消してました。なんとも不可思議な事になっていました。
スタック領域を破壊していて、破壊された箇所がたまたまdepth(残り探索深さ)だったため、
探索深さがマチマチになってました。計算時間やメモリ使用量が異常になる以外は、そこそこ
それっぽい探索結果が出ていたため、メモリリークだと思ってしまったという。
中盤探索の置換表適用範囲も、ちゃんと効くようになって深さ11〜12まで置換表を使用
するのが効果的と出て、探索値のバラツキもそこそこ揃って、探索時間も予想できる範囲に。
メモリ使用量も安定しました。
ある棋譜に対し、20手目から終局まで順に、深さ1〜17の探索を、反復深化を活用しながら
探索値を求めるプログラムを用意して、14棋譜を対象に実行したところ凡そ7時間で完了。
速度的にはこんなものかなぁという感じ。もっとも、深さ17だと結構、探索時間・ノード数の
バラツキが大きいので、10件前後だと終了時刻もバラツクはず。
とりあえず、棋譜からランダムに10件程度を抽出し、この探索結果を貯めていくところまで
作りました。トータル100件程度集めれば、MPCパラメータ計算には十分だと思う。
探索結果を貯めてあるので、毎晩10件くらいづつ追加し、直説法で都度パラメータ再計算
して精度を上げていく事ができる。
スタック領域を破壊していて、破壊された箇所がたまたまdepth(残り探索深さ)だったため、
探索深さがマチマチになってました。計算時間やメモリ使用量が異常になる以外は、そこそこ
それっぽい探索結果が出ていたため、メモリリークだと思ってしまったという。
中盤探索の置換表適用範囲も、ちゃんと効くようになって深さ11〜12まで置換表を使用
するのが効果的と出て、探索値のバラツキもそこそこ揃って、探索時間も予想できる範囲に。
メモリ使用量も安定しました。
ある棋譜に対し、20手目から終局まで順に、深さ1〜17の探索を、反復深化を活用しながら
探索値を求めるプログラムを用意して、14棋譜を対象に実行したところ凡そ7時間で完了。
速度的にはこんなものかなぁという感じ。もっとも、深さ17だと結構、探索時間・ノード数の
バラツキが大きいので、10件前後だと終了時刻もバラツクはず。
とりあえず、棋譜からランダムに10件程度を抽出し、この探索結果を貯めていくところまで
作りました。トータル100件程度集めれば、MPCパラメータ計算には十分だと思う。
探索結果を貯めてあるので、毎晩10件くらいづつ追加し、直説法で都度パラメータ再計算
して精度を上げていく事ができる。
379310
2016/01/04(月) 22:22:10.63ID:1p46+Vgy MPCのための探索データ蓄積の間に、並列処理について調べてみました。
VC++だとopenMPとPPLってのが使えるみたいです。
?concurrent_unordered_mapが便利そうなので、PPLにしよううかなと。
で、脳内コーディングであれこれ考えていたら、AIの中でBoardクラスを参照渡しして、
差分型で盤面を進めたり戻したりしているのが、とても並列処理と相性が悪い事に
思い至りまして・・・。コピー型に戻して、何をクラス化するのかとか見直してみようかと
言う事に。
多分数日がかりになるかなと。
VC++だとopenMPとPPLってのが使えるみたいです。
?concurrent_unordered_mapが便利そうなので、PPLにしよううかなと。
で、脳内コーディングであれこれ考えていたら、AIの中でBoardクラスを参照渡しして、
差分型で盤面を進めたり戻したりしているのが、とても並列処理と相性が悪い事に
思い至りまして・・・。コピー型に戻して、何をクラス化するのかとか見直してみようかと
言う事に。
多分数日がかりになるかなと。
380名前は開発中のものです。
2016/01/04(月) 22:36:46.74ID:iMclxIQO Boardはスレッドごとに持てばいいんでない
スレッドを生成するときだけコピーすれば
スレッドを生成するときだけコピーすれば
381名前は開発中のものです。
2016/01/05(火) 01:07:47.45ID:UyX0E5Wd 自分の場合は将棋作ってて、並列にしたけどstockfishのソースとか参考になるよ
スレッド待機させてノードの終わりの方で判定して、OKなら分割させて
そこで上でも言われてるけど、盤の情報をコピーして走らせるの
自分は盤面作成とか更新巻き戻しなどを最初スレッドとか考えてなく直にアクセスしてて
全てポイントにからに変更するのが、かなりだるかった
スレッド待機させてノードの終わりの方で判定して、OKなら分割させて
そこで上でも言われてるけど、盤の情報をコピーして走らせるの
自分は盤面作成とか更新巻き戻しなどを最初スレッドとか考えてなく直にアクセスしてて
全てポイントにからに変更するのが、かなりだるかった
382名前は開発中のものです。
2016/01/05(火) 20:35:26.92ID:zrGyzNpa へーこのスレって意外と人いるんだなぁ
将棋作ってる人がいるとは驚き
将棋作ってる人がいるとは驚き
383310
2016/01/09(土) 02:12:28.10ID:GhyCVx1P どもです。
とりあえず、コピー方式に変えてましたが、変にバグを仕込んだりして、時間がかかって
ました。ようやくデバッグもあらかた終わったのですが、まだ原因不明・解釈不能な速度
差があって、終盤探索のみ速度が10%以上低下した状態です。
というか、コピー版を書きながら気づいた箇所を、ボードクラス版にも反映すると、ボード
クラス版が高速化して、差が広がるという。
で、クラス版がFFO#40で1.40〜1.42秒になりました。
>>380さん
おっしゃる通りですorz
プログラム直しながら、ネットでVC++の解説をつまみ読みしながらのコーディングに
限界を感じたので、オライリーさんの出番という事で、アマゾンに本を数冊注文しました。
到着待ちの間にやるなら、適当に作っていったクラスの整理統合かなぁ。
あと、openMPのお勉強。
とりあえず、コピー方式に変えてましたが、変にバグを仕込んだりして、時間がかかって
ました。ようやくデバッグもあらかた終わったのですが、まだ原因不明・解釈不能な速度
差があって、終盤探索のみ速度が10%以上低下した状態です。
というか、コピー版を書きながら気づいた箇所を、ボードクラス版にも反映すると、ボード
クラス版が高速化して、差が広がるという。
で、クラス版がFFO#40で1.40〜1.42秒になりました。
>>380さん
おっしゃる通りですorz
プログラム直しながら、ネットでVC++の解説をつまみ読みしながらのコーディングに
限界を感じたので、オライリーさんの出番という事で、アマゾンに本を数冊注文しました。
到着待ちの間にやるなら、適当に作っていったクラスの整理統合かなぁ。
あと、openMPのお勉強。
384名前は開発中のものです。
2016/01/09(土) 02:32:30.66ID:Uphigh+6 最近のvc++使ってるのなら普通にstd::threadでやるのもいいかも
385310
2016/01/10(日) 01:14:26.88ID:F6Uvkb4b うわ。色々やり方あるのね。
VC++だとPPL、openMP、std::threadか。
PPLについては、逐次処理のまま置換表で使っているunordered_mapをconcurrent版に
変えてみたところ、置換表付探索の速度がおおよそ半分になってしまったので、結構
微妙な印象を持っています。
とりあえずopenMPでどこまでできるか試してみて、気に入らなかったらstd::threadで
細かく制御できないか考えてみます。
先ほど、コピー版で置換表登録に影響するバグ発見。直したところ、FFO#40が1.26秒
とかになってしまいました(汗)。不可思議な速度差の原因はこれで間違いないと思います。
edaxまであと10倍の速度アップかぁ。並列化で3倍くらいまで詰められないかと期待。
一応、Boardクラスのポインタ渡し版(差分方式)も試してみましたが、今のところ、若干
速度低下しています。もともとの差分方式は、Boardクラスを継承したAIクラスのメンバ
関数として実装してます。
これらの一見無駄な作業も、バグ探し&逐次探索の速度アップに有効だったという事でorz
VC++だとPPL、openMP、std::threadか。
PPLについては、逐次処理のまま置換表で使っているunordered_mapをconcurrent版に
変えてみたところ、置換表付探索の速度がおおよそ半分になってしまったので、結構
微妙な印象を持っています。
とりあえずopenMPでどこまでできるか試してみて、気に入らなかったらstd::threadで
細かく制御できないか考えてみます。
先ほど、コピー版で置換表登録に影響するバグ発見。直したところ、FFO#40が1.26秒
とかになってしまいました(汗)。不可思議な速度差の原因はこれで間違いないと思います。
edaxまであと10倍の速度アップかぁ。並列化で3倍くらいまで詰められないかと期待。
一応、Boardクラスのポインタ渡し版(差分方式)も試してみましたが、今のところ、若干
速度低下しています。もともとの差分方式は、Boardクラスを継承したAIクラスのメンバ
関数として実装してます。
これらの一見無駄な作業も、バグ探し&逐次探索の速度アップに有効だったという事でorz
386310
2016/01/11(月) 20:31:40.39ID:IrhGHm3u とりあえずopenMPで並列化トライしてみましたが、コンパイル中に内部エラーになる。
ネットで見ると最適化オプションがらみらしいけど、なんかよくわからなかったのでパス。
PPLを使って、とりあえず並列化のテスト。オセロでは標準的と思われるn段YWBCに
してみました。forループみたいな特定の形ではPPLは結構簡単という印象。
バグは一通りとれた状態だと思いますが、FFO#40で1.25秒が0.85秒程度になり
30%強の高速化。あと少しだけソース修正するつもり。
使ってるパソコンは2コアでした。昨夜まで4コアのつもりでいましたが(汗)、2コアなら
こんなものなのかな。
ネットで見ると最適化オプションがらみらしいけど、なんかよくわからなかったのでパス。
PPLを使って、とりあえず並列化のテスト。オセロでは標準的と思われるn段YWBCに
してみました。forループみたいな特定の形ではPPLは結構簡単という印象。
バグは一通りとれた状態だと思いますが、FFO#40で1.25秒が0.85秒程度になり
30%強の高速化。あと少しだけソース修正するつもり。
使ってるパソコンは2コアでした。昨夜まで4コアのつもりでいましたが(汗)、2コアなら
こんなものなのかな。
387名前は開発中のものです。
2016/01/11(月) 21:53:26.50ID:oLh2eOse 2コアYBWCにしてはまあまあ並列化されてるような感じ
もちろんもっと効率化はできるけど
もちろんもっと効率化はできるけど
388310
2016/01/13(水) 13:02:44.01ID:Yd1pcfW8 どもです。
コア数2だと、理屈の上では2倍近くまでは速度アップできるのかなぁと思います。
一般的にはどのくらいの倍率をターゲットにしているのでしょうか。
YBWCの適用のパターンをいくつか試しましたが、タスクマネージャーで見たCPU使用率
は、ほぼ100%になってるので、単純にはスピードアップは難しい感じがしてます。
PPL自身のオーバーヘッドなのか。
PPLは楽ちんだけど、チューニング箇所がなさすぎな感じ。
あと、YBWCやってる以上、YBの着手をmove orderingする意味が無い感じなので、
sortが一つ省けるかなぁというところ。ルートに近いので、あまり効果は無いと思うけど。
ここまで来ると、8コアのパソコン持ってきたら・・・
SIMD拡張命令だBMI命令だを使っておきながら、コア数2で頑張るのもどうかみたいな。
コア数2だと、理屈の上では2倍近くまでは速度アップできるのかなぁと思います。
一般的にはどのくらいの倍率をターゲットにしているのでしょうか。
YBWCの適用のパターンをいくつか試しましたが、タスクマネージャーで見たCPU使用率
は、ほぼ100%になってるので、単純にはスピードアップは難しい感じがしてます。
PPL自身のオーバーヘッドなのか。
PPLは楽ちんだけど、チューニング箇所がなさすぎな感じ。
あと、YBWCやってる以上、YBの着手をmove orderingする意味が無い感じなので、
sortが一つ省けるかなぁというところ。ルートに近いので、あまり効果は無いと思うけど。
ここまで来ると、8コアのパソコン持ってきたら・・・
SIMD拡張命令だBMI命令だを使っておきながら、コア数2で頑張るのもどうかみたいな。
389310
2016/01/16(土) 09:10:45.76ID:mjTPCiWE PPLはMicrosoftのDeveloper Networkくらいしか情報が無いので、ひたすらリンクを
たどって情報収集してますが、ほとんど機械翻訳で、結局カーソルあてて英文読ま
ないと意味が分からないという・・・
で、排他制御とかいい加減にしていたノード数カウントなどをきちんとして、ソースの見易さ
と効率を上げようと色々と細かく修正。combinableとかcritical_sectionとかInterlockedとか。
と・・・思ったら・・・中盤探索で確率10%程度で違う答えが返ってくる・・・
並列探査のバグはわかりにくくて時間を食ったのですが、どうもcombinableの動作が変。
期待した動作をしていない。でも、情報が無さすぎで、どこを直せば良いのかわからず、
結局同等の機能を動的配列にしてしまった。
たどって情報収集してますが、ほとんど機械翻訳で、結局カーソルあてて英文読ま
ないと意味が分からないという・・・
で、排他制御とかいい加減にしていたノード数カウントなどをきちんとして、ソースの見易さ
と効率を上げようと色々と細かく修正。combinableとかcritical_sectionとかInterlockedとか。
と・・・思ったら・・・中盤探索で確率10%程度で違う答えが返ってくる・・・
並列探査のバグはわかりにくくて時間を食ったのですが、どうもcombinableの動作が変。
期待した動作をしていない。でも、情報が無さすぎで、どこを直せば良いのかわからず、
結局同等の機能を動的配列にしてしまった。
390310
2016/01/16(土) 11:37:48.70ID:mjTPCiWE 中盤探索を1万回程度回して、違った答えが返ってこない事を確認できました。
ノード数カウントはInterlockedIncrementを使っているんだけど、やはり排他待ちロスが
大きいようで、ノードカウントありだと0.8秒前後、無しだと0.7秒前後になる。
使えなかったcombinableみたいな形にして、一つの再帰関数内はローカル変数で加算
して、最後にまとめて1か所で排他加算するようにしてみようかな。
並列タスクの起動順で、探索ノード数が違ってくる関係で、実行時間のバラつきが±0.5
秒くらいになっている。
ノード数カウントはInterlockedIncrementを使っているんだけど、やはり排他待ちロスが
大きいようで、ノードカウントありだと0.8秒前後、無しだと0.7秒前後になる。
使えなかったcombinableみたいな形にして、一つの再帰関数内はローカル変数で加算
して、最後にまとめて1か所で排他加算するようにしてみようかな。
並列タスクの起動順で、探索ノード数が違ってくる関係で、実行時間のバラつきが±0.5
秒くらいになっている。
391310
2016/01/18(月) 09:54:27.64ID:ED4vwFCp 結局、ノード数・リーフ数カウントは、戻り値を構造体にして返す方向にて検討。
普段の探索には不要だけど、solverだと表示したいので。
これで完全にローカル変数になり、排他ロスを気にする必要がなくなる。
デバッグ用の置換表回りの統計は、所詮デバッグ用なので、一旦全削除。
必要になったら、こちらは#ifdefで囲って、排他加算する。
で、構造体の形であれこれ悩んでいたら、戻り値をクラスにできる事に気が付いて・・・
あらためてC++すげーと感心中。
けど、かなり全面的な修正になるので、時間食ってます。
まずは中盤探索を修正して、ノード数がおかしくない事を確認。
終盤探索の修正はこれから。探索を使う系の統計処理も変更しなきゃならないけど、
MPC以外は、次いつ使うかわからないw
普段の探索には不要だけど、solverだと表示したいので。
これで完全にローカル変数になり、排他ロスを気にする必要がなくなる。
デバッグ用の置換表回りの統計は、所詮デバッグ用なので、一旦全削除。
必要になったら、こちらは#ifdefで囲って、排他加算する。
で、構造体の形であれこれ悩んでいたら、戻り値をクラスにできる事に気が付いて・・・
あらためてC++すげーと感心中。
けど、かなり全面的な修正になるので、時間食ってます。
まずは中盤探索を修正して、ノード数がおかしくない事を確認。
終盤探索の修正はこれから。探索を使う系の統計処理も変更しなきゃならないけど、
MPC以外は、次いつ使うかわからないw
392310
2016/01/19(火) 00:13:53.27ID:Dh1WPUXC 終盤探索の修正完了。
0.8秒±0.05秒と、結局、Interlockedでグローバル変数のノード数を加算するのと、
大して時間が変わらないか、もしかしたら微妙に遅くなったかも。元に戻すのが面倒
なので、他で改良点を探すしかないかなと。
0.8秒±0.05秒と、結局、Interlockedでグローバル変数のノード数を加算するのと、
大して時間が変わらないか、もしかしたら微妙に遅くなったかも。元に戻すのが面倒
なので、他で改良点を探すしかないかなと。
393310
2016/01/21(木) 10:04:20.88ID:c00KCFqr YBWCでは、最適着手手順(PV)のラインで置換表でmoveorderする意味が無いという事
を突き詰めていくと、いちいち前回探索の置換表を引くループを回して、都度最善の着手
を求めるのではなく、前回探索で得たPVを渡せば、時間が短縮できそうな気がしてきま
した。ツリーの浅い部分なので、全体にどれくらい効くのかはわかりませんが。
また、浅い探索などで最適着手手順を取得する時、negaScout+置換表だと正しいscoutmiss
が発生した時に、nullサーチ時の置換表が適用されて、それ以後のPVが得られないという
事で、悩むところではあります。
まずは戻り値の構造体でPVを返すように改造して、効果を見たうえで、YBWCを適用する
深さでnegaScoutをやめてnegaMaxにするか、それともnullサーチは置換表適用外とするか
どれが良いか試してみようかなと思っています。
できるだけ高い位置で並列化した方が良いという指摘と、置換表もなるべく高い位置で
効かせた方が良いという指摘の、どちらを優先するのかですね。置換表はばっさり探索
をカットできるけど、並列化はカットせずに時短するので、置換表優先かなという気もして
いますが、高い位置でどれくらい置換表が効いているのかもわからないですし・・・。
を突き詰めていくと、いちいち前回探索の置換表を引くループを回して、都度最善の着手
を求めるのではなく、前回探索で得たPVを渡せば、時間が短縮できそうな気がしてきま
した。ツリーの浅い部分なので、全体にどれくらい効くのかはわかりませんが。
また、浅い探索などで最適着手手順を取得する時、negaScout+置換表だと正しいscoutmiss
が発生した時に、nullサーチ時の置換表が適用されて、それ以後のPVが得られないという
事で、悩むところではあります。
まずは戻り値の構造体でPVを返すように改造して、効果を見たうえで、YBWCを適用する
深さでnegaScoutをやめてnegaMaxにするか、それともnullサーチは置換表適用外とするか
どれが良いか試してみようかなと思っています。
できるだけ高い位置で並列化した方が良いという指摘と、置換表もなるべく高い位置で
効かせた方が良いという指摘の、どちらを優先するのかですね。置換表はばっさり探索
をカットできるけど、並列化はカットせずに時短するので、置換表優先かなという気もして
いますが、高い位置でどれくらい置換表が効いているのかもわからないですし・・・。
394310
2016/01/23(土) 01:31:00.95ID:0OQfWIYl パソコン再起動すると、何かのタスクがCPUを30%くらい占有してしまいます。
昨日まで快調に動いていたのが突然遅くなって、悩んでいましたが、これが原因のようです。
というわけで、本日は色々改変したソースの速度が計測できずに悶々としてました。
色々すったもんだ挙句、PVラインを渡す形にしましたが、効果があったかどうかは微妙。
色々付け足した事で生じた速度低下はペイしたかなぁという感じで、#40で0.78秒前後。
本格的にネタが尽きて来たので、ここから先は、MPCをきちんと実装してiterative widening
にかけるしかないかなぁという感じです。あと、定数で渡している置換表適用高さなどの
パラメータを、空マスや使用条件で作ると、実用的になるかな。
昨日まで快調に動いていたのが突然遅くなって、悩んでいましたが、これが原因のようです。
というわけで、本日は色々改変したソースの速度が計測できずに悶々としてました。
色々すったもんだ挙句、PVラインを渡す形にしましたが、効果があったかどうかは微妙。
色々付け足した事で生じた速度低下はペイしたかなぁという感じで、#40で0.78秒前後。
本格的にネタが尽きて来たので、ここから先は、MPCをきちんと実装してiterative widening
にかけるしかないかなぁという感じです。あと、定数で渡している置換表適用高さなどの
パラメータを、空マスや使用条件で作ると、実用的になるかな。
395310
2016/01/27(水) 01:18:29.98ID:IVwAw5rN オライリーの並列化本が来たので拾い読みしながら並列プログラミングの勉強。
PPLの各アルゴリズムが何を目的とするものなのかが、少しずつ分かってきました。
抽象化度が高いので、最初のとっかかりとしては良いかも。何故かcombinableが
上手く動かないとか、parallel_reduceの中身がよく分からないとかありますが。
で、並列化できるところを探して速度が上がるか試したり、同じ処理をより綺麗に書き
換えしたりして、微妙に速度アップし、0.70〜0.75秒くらい、ノード数が15M、NPSが21M
nps程度になりました。たまに0.68秒台が出ます。
Edax4.3のFFOベンチの結果を確認したところ、ノード数で1.5倍、NPSで4倍、計6倍の
差があります。NPSをコア・クロック換算しても1.5〜2倍の差があり、ノード数は別として、
まだ速度アップの余地があるのではないかという事で、単品速度アップに走ってます。
ノード数はMPC導入後のiterative wideningである程度追い付けるかなと淡い期待。
いくつか速度アップネタがありますが、サッカー日本代表見ながらでははかどらず。
続きは明日。
PPLの各アルゴリズムが何を目的とするものなのかが、少しずつ分かってきました。
抽象化度が高いので、最初のとっかかりとしては良いかも。何故かcombinableが
上手く動かないとか、parallel_reduceの中身がよく分からないとかありますが。
で、並列化できるところを探して速度が上がるか試したり、同じ処理をより綺麗に書き
換えしたりして、微妙に速度アップし、0.70〜0.75秒くらい、ノード数が15M、NPSが21M
nps程度になりました。たまに0.68秒台が出ます。
Edax4.3のFFOベンチの結果を確認したところ、ノード数で1.5倍、NPSで4倍、計6倍の
差があります。NPSをコア・クロック換算しても1.5〜2倍の差があり、ノード数は別として、
まだ速度アップの余地があるのではないかという事で、単品速度アップに走ってます。
ノード数はMPC導入後のiterative wideningである程度追い付けるかなと淡い期待。
いくつか速度アップネタがありますが、サッカー日本代表見ながらでははかどらず。
続きは明日。
396310
2016/01/29(金) 11:31:08.14ID:trvaxUQ+ 先日の速度アップネタはすべて不発でしたが、その際にノード数のカウント漏れを見つけ
て、修正したところ、ノード数は17〜8Mという感じでした。その際に、最終2手高速化の
箇所でもカウント漏れがあり、まずは正確なノード数を簡便に把握しようと外してみたところ、
意に反して速度低下しないところか、どうも微妙に高速化したように見えまして(汗。
最終3手高速化を試してみたり、最終1手高速化も外してみたり、moveorder適用とか、
そもそもmobilityを求めずに空マスを順に着手してみるとか、その辺の適用深さを変えて
みたりいろいろとやって現時点の最適パラメータにしてみたところ、0.63〜0.68秒、最速で
0.60秒が出るようになりました。
αβカットの効きが悪くなっているため、ノード数は24〜25Mとなりました。
その分NPSは37〜38Mと速くなっていますが、こんな方向で高速化してて良いのか?
というわけで、ノード数が違う段階でNPSを比較しても意味が無いという事に気が付きました。
て、修正したところ、ノード数は17〜8Mという感じでした。その際に、最終2手高速化の
箇所でもカウント漏れがあり、まずは正確なノード数を簡便に把握しようと外してみたところ、
意に反して速度低下しないところか、どうも微妙に高速化したように見えまして(汗。
最終3手高速化を試してみたり、最終1手高速化も外してみたり、moveorder適用とか、
そもそもmobilityを求めずに空マスを順に着手してみるとか、その辺の適用深さを変えて
みたりいろいろとやって現時点の最適パラメータにしてみたところ、0.63〜0.68秒、最速で
0.60秒が出るようになりました。
αβカットの効きが悪くなっているため、ノード数は24〜25Mとなりました。
その分NPSは37〜38Mと速くなっていますが、こんな方向で高速化してて良いのか?
というわけで、ノード数が違う段階でNPSを比較しても意味が無いという事に気が付きました。
397310
2016/01/30(土) 20:51:37.62ID:yCKBToEa 囲碁がすごい事になってますね。オセロで一通り勉強したら小さい盤の囲碁をやって
みようと思っていたので、モチベーション低下中。とはいえ、ああいうのをオセロに応用
しようとしたら、あそこまでマシンパワーいらないんじゃないかとか・・・。
ここのところ、もっぱらSTLやPPLの機能を綺麗に使う方向での改良ばかりしてました。
pararell_reduceの使い方もわかりました。negaScoutの繰り返しループが綺麗に並列化
できたんじゃないかと。ただ、MAPする件数がしれているので、parallel_reduceではなく
逐次版のaccumlateの方が速いという結果に。あと、時間計測が結構飛び飛びの値に
なるので時間計測関数を精度1msのものに変更。
色々やった結果、若干高速化したうえで、時間のバラつきが消えてくれました。
100回試行で計測すると610ms±15ms(1σ)となり、逐次処理のほぼ2倍の速度に。
ノード数は同程度で、NPSは40M超えて来ました。このNPSのままノードを半減できれば
良いのに。
みようと思っていたので、モチベーション低下中。とはいえ、ああいうのをオセロに応用
しようとしたら、あそこまでマシンパワーいらないんじゃないかとか・・・。
ここのところ、もっぱらSTLやPPLの機能を綺麗に使う方向での改良ばかりしてました。
pararell_reduceの使い方もわかりました。negaScoutの繰り返しループが綺麗に並列化
できたんじゃないかと。ただ、MAPする件数がしれているので、parallel_reduceではなく
逐次版のaccumlateの方が速いという結果に。あと、時間計測が結構飛び飛びの値に
なるので時間計測関数を精度1msのものに変更。
色々やった結果、若干高速化したうえで、時間のバラつきが消えてくれました。
100回試行で計測すると610ms±15ms(1σ)となり、逐次処理のほぼ2倍の速度に。
ノード数は同程度で、NPSは40M超えて来ました。このNPSのままノードを半減できれば
良いのに。
398310
2016/02/07(日) 21:48:19.14ID:xNqeS9Ve ここら辺で、EDAXとかとの速度差の原因を考えたところ、次の2点が考えられました。
1.評価関数の精度が悪い可能性
2.個々の関数で速度アップの余地がある可能性
という事で、1は熟考が必要なので後回しで、速度アップの対象として、flipとmobilityの
高速化を検討。とはいえ、良い知恵があるわけでもないので、ネット徘徊。
現在、ポインタ関数で分岐して処理しているflip関数を1発で処理するopenCLのソースを
発見。Master Othelloの作者のものでEDAX4.3のflip関数を参考にしているらしい。
中身を解読するとベクターを使っている。とりあえず処理を真似て逐次処理で組んでみたら
結構速度アップしました。
解読の過程で、ようやくベクタ化の意味がわかったので、mm256系の命令を使って、
ベクタ化してみましたが、若干速度低下。原因は恐らくlzcntで一回ベクタを抜けてしまう
所だと思うので、ハッカーのたしなみを読んでベクタ演算で組み直してみる予定。
合わせてmobility関数もベクタ化。若干速度アップしたかなという程度。
組み込み関数は使い方が面倒臭いので、演算子のオーバーロードしまくってみました。
flip関数は非ベクタの分岐無しバージョン、mobilityはベクタという状態で、500msを切る
数字が出るところまで来ました。flipのベクタ化ができて、パラメータ調整するともうちょい
良い数字が出るかなと期待。
1.評価関数の精度が悪い可能性
2.個々の関数で速度アップの余地がある可能性
という事で、1は熟考が必要なので後回しで、速度アップの対象として、flipとmobilityの
高速化を検討。とはいえ、良い知恵があるわけでもないので、ネット徘徊。
現在、ポインタ関数で分岐して処理しているflip関数を1発で処理するopenCLのソースを
発見。Master Othelloの作者のものでEDAX4.3のflip関数を参考にしているらしい。
中身を解読するとベクターを使っている。とりあえず処理を真似て逐次処理で組んでみたら
結構速度アップしました。
解読の過程で、ようやくベクタ化の意味がわかったので、mm256系の命令を使って、
ベクタ化してみましたが、若干速度低下。原因は恐らくlzcntで一回ベクタを抜けてしまう
所だと思うので、ハッカーのたしなみを読んでベクタ演算で組み直してみる予定。
合わせてmobility関数もベクタ化。若干速度アップしたかなという程度。
組み込み関数は使い方が面倒臭いので、演算子のオーバーロードしまくってみました。
flip関数は非ベクタの分岐無しバージョン、mobilityはベクタという状態で、500msを切る
数字が出るところまで来ました。flipのベクタ化ができて、パラメータ調整するともうちょい
良い数字が出るかなと期待。
399310
2016/02/09(火) 01:09:41.58ID:MeGl+gwc flip関数続き
・lzcntを自前で組んでみましたが、やはり処理が重く速度低下。ボツ。
・右方向と左方向で処理が違うので、片側+180度回転で、同じ処理にしてlzcnt不使用
にしてみたが、180度回転×4が重くて速度低下。ボツ。
・できるところまでベクタ化して、lzcnt以後はスカラ計算で、速度若干改善。
・上記からlzcnt後、再度ベクタ化してみたら、速度若干低下したのでボツ。
・64bit×4の値を代入する関数を変更したら、意に反して結構速度改善。
・闇雲に__declspec(align(32)) してみたら若干速度改善してバラツキ減少。
これらにより、450msくらいになりました。
ベクタ化はまだ何かありそう。
ちゃんと書いてなかったですが、途中からノート数カウントを外してます。入れると100ms
程度の速度低下になります。一応、デバッグ用に#ifで切り替えられるようになってます。
が、そんな状態なので、nps計算に意味が見いだせないという・・・。
続いて評価関数をベクタ化できないか考えましたが、BMI命令使っているので厳しい。
計算楽にするため、でかい配列を何回も引いているので、ここを何とかしたい気がする。
黒・白・空の3を基数とする3進数でナンバリングしているんだけど、高速で計算する方法
が見つからず。
平衡3進法を手早く計算する方法があると、黒を1、白を-1、空を0にして、定数足すとか
できるんだけど、どんなに調べても、基数変換に王道なしという言葉しか見つからない。
・lzcntを自前で組んでみましたが、やはり処理が重く速度低下。ボツ。
・右方向と左方向で処理が違うので、片側+180度回転で、同じ処理にしてlzcnt不使用
にしてみたが、180度回転×4が重くて速度低下。ボツ。
・できるところまでベクタ化して、lzcnt以後はスカラ計算で、速度若干改善。
・上記からlzcnt後、再度ベクタ化してみたら、速度若干低下したのでボツ。
・64bit×4の値を代入する関数を変更したら、意に反して結構速度改善。
・闇雲に__declspec(align(32)) してみたら若干速度改善してバラツキ減少。
これらにより、450msくらいになりました。
ベクタ化はまだ何かありそう。
ちゃんと書いてなかったですが、途中からノート数カウントを外してます。入れると100ms
程度の速度低下になります。一応、デバッグ用に#ifで切り替えられるようになってます。
が、そんな状態なので、nps計算に意味が見いだせないという・・・。
続いて評価関数をベクタ化できないか考えましたが、BMI命令使っているので厳しい。
計算楽にするため、でかい配列を何回も引いているので、ここを何とかしたい気がする。
黒・白・空の3を基数とする3進数でナンバリングしているんだけど、高速で計算する方法
が見つからず。
平衡3進法を手早く計算する方法があると、黒を1、白を-1、空を0にして、定数足すとか
できるんだけど、どんなに調べても、基数変換に王道なしという言葉しか見つからない。
400名前は開発中のものです。
2016/02/15(月) 00:14:34.50ID:2rfyeFpJ 高速化については一旦棚上げ。何やっても速度が上がらない。
ひたすらノード数カウントの速度低下を抑えて、カウントのバグ取りして。
色々発見はあったけど、結局ソースを綺麗にしただけだった。
後は、いずれゆっくり時間をかけて、評価関数を作り直すかな。
MPCを組みました。一応動作している模様。
これからしばらく、GUI作りに入ります。
MFCよくわからん。
ひたすらノード数カウントの速度低下を抑えて、カウントのバグ取りして。
色々発見はあったけど、結局ソースを綺麗にしただけだった。
後は、いずれゆっくり時間をかけて、評価関数を作り直すかな。
MPCを組みました。一応動作している模様。
これからしばらく、GUI作りに入ります。
MFCよくわからん。
401310
2016/02/20(土) 13:43:08.30ID:ZGi2V8ih GUIできた。昔作った序盤定石部分と合体。
中盤探索を反復深化にして、3秒を超えて新しい深さに入らないあたりで調整。
MPCで25手くらいまで読めるように調整。
終盤完全読みは38手から。36手からMPC付で完全読み(つまり完全ではない)。
こんな感じでできたので、早速プレイ。自分だと軽く全滅負けしてしまうので、zebra先生
にお越しいただきました。が、滅茶苦茶弱い。
良く見ると、定石が効いている段階で+16だったのが、中盤読みになった瞬間に一気に
−14くらいまで落ちて、そのまま挽回できない感じ。zebra先生は、その前に定石から外れ
て、既にzebraから見て+14程度の評価値を算出している。つまり、定石部分がおかしい。
それ以外は、評価値もzebraとは大きく違わないし、終盤探索もちゃんと機能している感じ。
中盤探索を反復深化にして、3秒を超えて新しい深さに入らないあたりで調整。
MPCで25手くらいまで読めるように調整。
終盤完全読みは38手から。36手からMPC付で完全読み(つまり完全ではない)。
こんな感じでできたので、早速プレイ。自分だと軽く全滅負けしてしまうので、zebra先生
にお越しいただきました。が、滅茶苦茶弱い。
良く見ると、定石が効いている段階で+16だったのが、中盤読みになった瞬間に一気に
−14くらいまで落ちて、そのまま挽回できない感じ。zebra先生は、その前に定石から外れ
て、既にzebraから見て+14程度の評価値を算出している。つまり、定石部分がおかしい。
それ以外は、評価値もzebraとは大きく違わないし、終盤探索もちゃんと機能している感じ。
402310
2016/02/20(土) 23:06:47.33ID:ZGi2V8ih zebra先生にならって定石の評価を表示するオプションをつけてみました。
ロジック的には間違いなさそうですが、定石DBがおかしいというか、定石に登録がない
手順に正しい変化があって、それを無視しているため、間違った判断をしているみたい。
一応、完全読みという触れ込みの棋譜を元にしているはずなので、使い方をどこかで
勘違いしているんだと思います。しばらく悩むしかなさそうです。
ロジック的には間違いなさそうですが、定石DBがおかしいというか、定石に登録がない
手順に正しい変化があって、それを無視しているため、間違った判断をしているみたい。
一応、完全読みという触れ込みの棋譜を元にしているはずなので、使い方をどこかで
勘違いしているんだと思います。しばらく悩むしかなさそうです。
403310
2016/02/21(日) 01:04:17.33ID:nPWuqcvw 試しに定石部分を外して、中盤探索で開始してみたら、zebraの20手読みに対して
2戦して1勝1分となりました。読みの深さは、こちらが上なので、こんな感じでしょうか。
序盤20手分は評価値が無いので、20手近い探索を反復無しで探索するため、MPCを
使っても最初の数手は1手あたり5分以上掛かってしまいます。
定石については、以前にウェブで見つけてテキストに起こした定石データがあるので、
それを評価0で登録してみようかなぁと思っています。
定石の自己学習とか、評価付けとか、どうやるんだろ。
2戦して1勝1分となりました。読みの深さは、こちらが上なので、こんな感じでしょうか。
序盤20手分は評価値が無いので、20手近い探索を反復無しで探索するため、MPCを
使っても最初の数手は1手あたり5分以上掛かってしまいます。
定石については、以前にウェブで見つけてテキストに起こした定石データがあるので、
それを評価0で登録してみようかなぁと思っています。
定石の自己学習とか、評価付けとか、どうやるんだろ。
404310
2016/02/25(木) 21:06:56.39ID:fXRsnvrs 定石データを、上記の手打ちデータで作り直しました。
当初は並び取りとかの極端な進行以外は評価0.0にしたため、mobility関数のビット列
の下から定石に従って着手する形となり、zebra先生のBookに誘導されるように、少しずつ
不利な定石に乗り換えていき、負けるという展開に(汗
悔しかったので別のソフトを拾い、戦ってみると、そちらには圧勝。決して弱くはないと思う。
また、zebraとの対戦時にBookで評価値がついているものは、それを参考に修正したところ、
時々勝てるような感じになりました。
EDAX先生+UnifiedBookなるものを拾って、そちらと戦ってみたところ、軽く惨敗。
fjt定石とかだと終盤近くまでBookがあるみたいで、Bookが続く限り紛れが無い。
こちらが中盤探索などでミスるたびに−2づつ落としていき、お話にならないレベル差を感じました。
しばし熟考の上、定石の拡張、評価付けを考えてみようかと思います。
あと、評価値が近い時には、何らかの確率で手を選択するようにもしてみたいと思います。
当初は並び取りとかの極端な進行以外は評価0.0にしたため、mobility関数のビット列
の下から定石に従って着手する形となり、zebra先生のBookに誘導されるように、少しずつ
不利な定石に乗り換えていき、負けるという展開に(汗
悔しかったので別のソフトを拾い、戦ってみると、そちらには圧勝。決して弱くはないと思う。
また、zebraとの対戦時にBookで評価値がついているものは、それを参考に修正したところ、
時々勝てるような感じになりました。
EDAX先生+UnifiedBookなるものを拾って、そちらと戦ってみたところ、軽く惨敗。
fjt定石とかだと終盤近くまでBookがあるみたいで、Bookが続く限り紛れが無い。
こちらが中盤探索などでミスるたびに−2づつ落としていき、お話にならないレベル差を感じました。
しばし熟考の上、定石の拡張、評価付けを考えてみようかと思います。
あと、評価値が近い時には、何らかの確率で手を選択するようにもしてみたいと思います。
405310
2016/02/28(日) 01:10:48.52ID:hQzoi2Tz 縦取り系は白番黒番試して、定石の評価値を修正してみました。
あと、AIの進行ごとのパラメータを試行錯誤して、なるべく負けないようにしてみました。
これにより、AIの読み時間が結構伸びて、1ゲームワーストケースで1手2分、トータル
5分くらい思考してしまいます。これは、反復深化などで、タイムアップをせずに、次の
ステップに入る制限時間だけ決めているためです。
EDAX+Unified Book先生はレベル21で、黒番白番ともに引き分けになります。
こちらは20手前に定石が切れていますが、その後も最善手が打てているという事になり
ます。こちらは何局打っても手を変えないので、EDAX先生のBookの進行に合わせた
だけですが。一方zebra先生は比較的手をいろいろ変えてくるので、勝ち負けが発生します
(もちろん、各アプリの設定次第ですが)。
序盤定石の評価値をそれなりにしたら、後は引き分け進行をひたすら登録していって、
相手が最善しか着手しないと信用すると負けないプログラムができちゃうのではないか
と、ふと思いましたが・・・。トップ同士の対局が引き分けばかりになるのは、こういう事
なんでしょうね。というか、完全解析ってこれが完成した状態なのか。
EDAX先生のUnified Bookは、いくつかの引き分け進行棋譜の集合体のようですが、
元データが幸い既知のWthor形式なので、それをもらってしまうと、トップレベルになる
のかなぁ。トップな人がBook構築に主眼を移したり、開発が止まったりする訳だと。
そろそろ、混とんとしているプログラムを綺麗に直して、パクリBook作って開発終了しちゃ
おうかと思い始めています。速度的には、まだまだ改善の余地はありそうですが。
あと、AIの進行ごとのパラメータを試行錯誤して、なるべく負けないようにしてみました。
これにより、AIの読み時間が結構伸びて、1ゲームワーストケースで1手2分、トータル
5分くらい思考してしまいます。これは、反復深化などで、タイムアップをせずに、次の
ステップに入る制限時間だけ決めているためです。
EDAX+Unified Book先生はレベル21で、黒番白番ともに引き分けになります。
こちらは20手前に定石が切れていますが、その後も最善手が打てているという事になり
ます。こちらは何局打っても手を変えないので、EDAX先生のBookの進行に合わせた
だけですが。一方zebra先生は比較的手をいろいろ変えてくるので、勝ち負けが発生します
(もちろん、各アプリの設定次第ですが)。
序盤定石の評価値をそれなりにしたら、後は引き分け進行をひたすら登録していって、
相手が最善しか着手しないと信用すると負けないプログラムができちゃうのではないか
と、ふと思いましたが・・・。トップ同士の対局が引き分けばかりになるのは、こういう事
なんでしょうね。というか、完全解析ってこれが完成した状態なのか。
EDAX先生のUnified Bookは、いくつかの引き分け進行棋譜の集合体のようですが、
元データが幸い既知のWthor形式なので、それをもらってしまうと、トップレベルになる
のかなぁ。トップな人がBook構築に主眼を移したり、開発が止まったりする訳だと。
そろそろ、混とんとしているプログラムを綺麗に直して、パクリBook作って開発終了しちゃ
おうかと思い始めています。速度的には、まだまだ改善の余地はありそうですが。
406じょげなら ◆kXDiHQuNQ2
2016/02/29(月) 19:18:07.19ID:etqtABZA ライフゲーム囲碁というゲームのネット対局場を作りたいです。
囲碁でいうKGSみたいなのが理想です。
プログラムはある程度わかりますが、ネット関連の知識が乏しいです。
何から始めればいいですか?
囲碁でいうKGSみたいなのが理想です。
プログラムはある程度わかりますが、ネット関連の知識が乏しいです。
何から始めればいいですか?
407名前は開発中のものです。
2016/02/29(月) 19:21:39.28ID:etqtABZA URLがNGワードに引っかかる…
408名前は開発中のものです。
2016/02/29(月) 19:34:26.59ID:etqtABZA 好きな言語
C++
C#
Ruby
嫌いな言語
Java
Python
Perl
C++
C#
Ruby
嫌いな言語
Java
Python
Perl
409406
2016/03/01(火) 20:52:33.32ID:6wFQeZGp とりあえずHTML5の本買ってきた
410406
2016/03/03(木) 19:44:49.47ID:Hi4nZgiL http://fast-uploader.com/file/7012557196681/
碁石をぽちぽち置けるところまで作った
碁石をぽちぽち置けるところまで作った
411310
2016/03/04(金) 10:15:09.55ID:Q4DtXsqP >>410
一晩考えてみた。
通信回りに興味を持って遊んだのは15年くらい前だし、Javaとかイメージしかないし。
あまり助言できる事はありませんが、一つ言えるのは、UIに凝ったりサービス内容を
考えたりするのは最後で良いと思います。
Rubyが好きなら、まずはCGIベースで、テキスト表示で対戦を実現する仕掛けを作る事
だと思います。次に複数のユーザーが接続するのであれば、身元確認のためのID/パス
ワード管理が必要になりますし、個々の対戦を区別するにはセッション管理が必要になり
ます。この辺は、スタンドアロンのアプリには無い、独特の世界なので、結構新しい技術、
テクニックの習得が必要になるかと思います。いまどきあるのかわかりませんが、チャット
のスクリプトとかあれば、参考になるかも。
その辺から入り込んで、いろいろ調べていくと、だんだんと必要な技術、知識が増えてくる
んじゃないかと思います。
一晩考えてみた。
通信回りに興味を持って遊んだのは15年くらい前だし、Javaとかイメージしかないし。
あまり助言できる事はありませんが、一つ言えるのは、UIに凝ったりサービス内容を
考えたりするのは最後で良いと思います。
Rubyが好きなら、まずはCGIベースで、テキスト表示で対戦を実現する仕掛けを作る事
だと思います。次に複数のユーザーが接続するのであれば、身元確認のためのID/パス
ワード管理が必要になりますし、個々の対戦を区別するにはセッション管理が必要になり
ます。この辺は、スタンドアロンのアプリには無い、独特の世界なので、結構新しい技術、
テクニックの習得が必要になるかと思います。いまどきあるのかわかりませんが、チャット
のスクリプトとかあれば、参考になるかも。
その辺から入り込んで、いろいろ調べていくと、だんだんと必要な技術、知識が増えてくる
んじゃないかと思います。
413406
2016/03/07(月) 21:05:27.22ID:NI+TTWmM RoRの本買ってきた。
チャットはまだ調べてない。
チャットはまだ調べてない。
414名前は開発中のものです。
2016/03/09(水) 19:45:29.94ID:Cf1/SDqU うおおおおセドルがああああぁぁぁ
415310
2016/03/10(木) 02:00:10.79ID:hvbQwbFh うむむ。
これにて、オセロができたら次は囲碁という目標が雲散霧消してしまいました。
どうしよう。
これにて、オセロができたら次は囲碁という目標が雲散霧消してしまいました。
どうしよう。
416310
2016/03/10(木) 18:05:03.79ID:b1SmaPOg AlphaGO強すぎ・・・orz
今夜は、囲碁関係者だけじゃなく、AI周りの人も、Google以外全員お通夜ですね。
今夜は、囲碁関係者だけじゃなく、AI周りの人も、Google以外全員お通夜ですね。
417名前は開発中のものです。
2016/03/10(木) 19:38:43.78ID:SphVvbk5 310氏もalpha碁注目してたか。
セドル一発入れてほしいなぁ
セドル一発入れてほしいなぁ
418名前は開発中のものです。
2016/03/11(金) 09:04:36.30ID:HTdTU0Fi 浮上
419名前は開発中のものです。
2016/03/12(土) 12:19:15.41ID:k2nAbsiz おお、このスレ生きてたんだ
なんで RoR なんか見てるのよスレ間違えたかと思った
なんで RoR なんか見てるのよスレ間違えたかと思った
420名前は開発中のものです。
2016/03/13(日) 18:01:59.50ID:X9umXTnK せどるううううッよくやったあああああぁっ
人類の勝利やあああぁぁっ
人類の勝利やあああぁぁっ
421名前は開発中のものです。
2016/03/13(日) 19:02:49.19ID:Gv0++KTh お、第四局はセドル勝ったか
422310
2016/03/13(日) 20:47:23.70ID:50OeMIN8 うむ。なんか期待を裏切られっぱなしw
この負けっぷりを見ると、囲碁もトライしたくなってくる希ガス。
この負けっぷりを見ると、囲碁もトライしたくなってくる希ガス。
423406
2016/03/15(火) 20:44:49.53ID:NF77F+OG RoRとjavascriptの連携がよくわからん。
でもちょっとづつだけど進んでる。
でもちょっとづつだけど進んでる。
424310
2016/03/16(水) 23:06:52.43ID:YEZK1fac アルファ碁ロスまっただ中ですw
オセロ作ったおかげで、一連の勝負をいままでとは違う視点で見れたかなぁ。
とりあえず、囲碁のモンテカルロ解説した本と、ディープラーニングの入門書を
買ってきた。さらっと読んだけど、ディープラーニングは理解に時間がかかりそうorz
オセロで3層パーセプトロンを試したときは、結局うまく動かなかった。
実装が悪いのもあるけど、学習にもすごく時間がかかった。
あれをディープにしたら、どうなっちゃうんだろうかは不安ではある。
こちとら、SurfacePro3しかないし(汗
オセロ作ったおかげで、一連の勝負をいままでとは違う視点で見れたかなぁ。
とりあえず、囲碁のモンテカルロ解説した本と、ディープラーニングの入門書を
買ってきた。さらっと読んだけど、ディープラーニングは理解に時間がかかりそうorz
オセロで3層パーセプトロンを試したときは、結局うまく動かなかった。
実装が悪いのもあるけど、学習にもすごく時間がかかった。
あれをディープにしたら、どうなっちゃうんだろうかは不安ではある。
こちとら、SurfacePro3しかないし(汗
425406
2016/03/19(土) 20:06:25.11ID:Ik15FlWh railsでdeviseとかいうgemをつかってユーザー認証機能実装したけど、
複数ユーザーがログインして対局させる方法がサッパリわからん。
複数ユーザーがログインして対局させる方法がサッパリわからん。
426406
2016/03/24(木) 20:20:54.97ID:C08ak5N3 ブラウザ閉じたときに自動ログアウトのやり方がわからん
427名前は開発中のものです。
2016/03/25(金) 13:51:48.34ID:9Ea9sx62 ブラウザは通信があった時にしかクライアントの消息が確認できない。
n分アクセスが無かったらサーバー側で勝手にログアウトさせちゃう
タイムアウト方式が普通かなと。その時間経過後にアクセスがあっても
ログインからやり直し。
このログインからタイムアウト(ログアウト)までの間をセッションと呼ぶ。
n分アクセスが無かったらサーバー側で勝手にログアウトさせちゃう
タイムアウト方式が普通かなと。その時間経過後にアクセスがあっても
ログインからやり直し。
このログインからタイムアウト(ログアウト)までの間をセッションと呼ぶ。
428名前は開発中のものです。
2016/03/25(金) 14:16:19.46ID:9Ea9sx62 1行目おかしかった。
>WEBサーバ、ブラウザという仕組みは、ブラウザから通信があった時にしか、
>サーバーはブラウザの消息を確認できない。
に修正。
1.初画面からログインする
2.サーバが、HTMLにセッションNoを埋め込んで、ブラウザに表示。
サーバでは、セッションIDを配列などで管理して、IDと最終アクセス時間をとっておく。
3.ブラウザ側からのCGIリクエストには、必ずセッションNoを入れて送信。
セッションNoで、相手がだれか(ID)を特定して、処理を行う。
つまり、個々の処理はセッションNoで管理されている。
4.ブラウザからCGIリクエストが来た時に、タイムアウトしていたら、ログアウト処理へ
あと、ゴミ掃除で1日1回くらいタイムアウトしているものを削除。
この辺が基本。対局型の場合。
5.2つのセッションが対局している事になるので、対局管理する配列を用意。
6.相手の着手待ちの時に、どうするのか?その辺が肝。
HTMLに細工して、1秒ごとにリロードさせる。リロードにより、着手が行われたか
それとも秒読み時間切れになったか?判断をサーバーに依頼する。
などなど。やり方は色々あるかと思う。
とにかく、肝は、情報がブツ切れで、あちこちにある事。これにより、サーバーで簡単に判断
ができない事があるので、いくつかの機能をブラウザスクリプトに依頼しなきゃならん。
それでも、相手が放置して逃げた時、ブラウザを閉じて逃げた時(回線切断やPCダウン)、
などなどの例外が起きるので、それらをタイムアウト検出などで拾わにゃならん。
どうするのかなどの、例外処理をリストアップして、一つずつ対応を決めていく事。
プログラムテクニックはどうとでもなるけど、例外事象の拾い上げの方が大変。
>WEBサーバ、ブラウザという仕組みは、ブラウザから通信があった時にしか、
>サーバーはブラウザの消息を確認できない。
に修正。
1.初画面からログインする
2.サーバが、HTMLにセッションNoを埋め込んで、ブラウザに表示。
サーバでは、セッションIDを配列などで管理して、IDと最終アクセス時間をとっておく。
3.ブラウザ側からのCGIリクエストには、必ずセッションNoを入れて送信。
セッションNoで、相手がだれか(ID)を特定して、処理を行う。
つまり、個々の処理はセッションNoで管理されている。
4.ブラウザからCGIリクエストが来た時に、タイムアウトしていたら、ログアウト処理へ
あと、ゴミ掃除で1日1回くらいタイムアウトしているものを削除。
この辺が基本。対局型の場合。
5.2つのセッションが対局している事になるので、対局管理する配列を用意。
6.相手の着手待ちの時に、どうするのか?その辺が肝。
HTMLに細工して、1秒ごとにリロードさせる。リロードにより、着手が行われたか
それとも秒読み時間切れになったか?判断をサーバーに依頼する。
などなど。やり方は色々あるかと思う。
とにかく、肝は、情報がブツ切れで、あちこちにある事。これにより、サーバーで簡単に判断
ができない事があるので、いくつかの機能をブラウザスクリプトに依頼しなきゃならん。
それでも、相手が放置して逃げた時、ブラウザを閉じて逃げた時(回線切断やPCダウン)、
などなどの例外が起きるので、それらをタイムアウト検出などで拾わにゃならん。
どうするのかなどの、例外処理をリストアップして、一つずつ対応を決めていく事。
プログラムテクニックはどうとでもなるけど、例外事象の拾い上げの方が大変。
429406
2016/03/25(金) 17:43:19.31ID:/V6G/Eic 丁寧にありがとうございます。
javascriptのwindow.oncloseからなんとかならないかといろいろ調べていましたが、無理筋なんでしょうか。
タイムアウト検討してみます。
javascriptのwindow.oncloseからなんとかならないかといろいろ調べていましたが、無理筋なんでしょうか。
タイムアウト検討してみます。
430名前は開発中のものです。
2016/03/26(土) 21:27:54.24ID:DUGO8n57431406
2016/03/30(水) 21:45:07.64ID:yYbYes7U すいません、教えてください。
4.ブラウザからCGIリクエストが来た時に、タイムアウトしていたら、ログアウト処理へ
あと、ゴミ掃除で1日1回くらいタイムアウトしているものを削除。
このゴミ掃除というのはサーバー側がクライアント側から何のアクションも受けずに
能動的にタイムアウトしているセッションをみつけ削除するということですか?
どうやって書けばいいのかわからないのですが…
4.ブラウザからCGIリクエストが来た時に、タイムアウトしていたら、ログアウト処理へ
あと、ゴミ掃除で1日1回くらいタイムアウトしているものを削除。
このゴミ掃除というのはサーバー側がクライアント側から何のアクションも受けずに
能動的にタイムアウトしているセッションをみつけ削除するということですか?
どうやって書けばいいのかわからないのですが…
432名前は開発中のものです。
2016/03/30(水) 23:26:15.10ID:DNbQONAE >>431
そうです。別にしなくても良いし、月1回手作業で削除しても良いけどね。
そうです。別にしなくても良いし、月1回手作業で削除しても良いけどね。
434名前は開発中のものです。
2016/04/01(金) 19:52:02.46ID:JLskKsZt 隠しコマンド受け付けるようにしておいて
管理者のクライアントから定期的にコマンドを投げればいい
管理者のクライアントから定期的にコマンドを投げればいい
435310
2016/04/05(火) 10:45:13.03ID:82XTVDoH 久々登場。アルファ碁ロスがでかすぎて、やる気がでないです。
とりあえず、BOOK上で乱数入れて手をばらけさせるようにしました。あとの課題は、
1.持ち時間制度
2.ステータスバーの更新
標準のStatusBarだとOnMouseMoveなどで更新されるとの事。
リアルタイムに更新させるためには、マウスくるくるさせてなければならん。
3.中盤探索の高速化
反復深化+置換表で高速化が効いていない懸念があるけど未確認。その他の高速化検討
4.同じ手順で負けないためのBOOKの自動学習
5.オフラインでの引分手順の自動生成
となります。けど・・・本当にモチベーション上がらない。
時々、気が向いた時に、Zebra先生やEDAX+UB師匠相手にポチポチ手打ちで対戦して、
相手のBOOKに登録されている引き分け手順を見つけて、手入力でBOOK更新してます。
Zebraは研究モードがあるので、ほぼ拾い終わりましたが、逆に引き分けだらけになりました。
EDAX+UB相手だと、こちらが定石から外れるケースでも、EDAX側は学習データで先が
見えていて打ってくるので、ほぼ負けになります。
たまに、EDAX+UBも中盤探索が走ってくれて、極まれに勝勢になる事がありますが・・・
何が腹が立つと言って、そういう時に限って完全読み時にEDAXがバグって、既に石がある
所に着手して逆転した事にされます。もちろん反則なので勝利は勝利ですが、すっきりと
勝たせてもらえないのが腹立たしい。をのれ。
というわけで。やはりオセロは、引き分け手順のリストアップが、強さの肝である事も再確認
してしまいまして。そこまでの根性は無いなぁというのも、モチベーション低下の原因。
とりあえず、BOOK上で乱数入れて手をばらけさせるようにしました。あとの課題は、
1.持ち時間制度
2.ステータスバーの更新
標準のStatusBarだとOnMouseMoveなどで更新されるとの事。
リアルタイムに更新させるためには、マウスくるくるさせてなければならん。
3.中盤探索の高速化
反復深化+置換表で高速化が効いていない懸念があるけど未確認。その他の高速化検討
4.同じ手順で負けないためのBOOKの自動学習
5.オフラインでの引分手順の自動生成
となります。けど・・・本当にモチベーション上がらない。
時々、気が向いた時に、Zebra先生やEDAX+UB師匠相手にポチポチ手打ちで対戦して、
相手のBOOKに登録されている引き分け手順を見つけて、手入力でBOOK更新してます。
Zebraは研究モードがあるので、ほぼ拾い終わりましたが、逆に引き分けだらけになりました。
EDAX+UB相手だと、こちらが定石から外れるケースでも、EDAX側は学習データで先が
見えていて打ってくるので、ほぼ負けになります。
たまに、EDAX+UBも中盤探索が走ってくれて、極まれに勝勢になる事がありますが・・・
何が腹が立つと言って、そういう時に限って完全読み時にEDAXがバグって、既に石がある
所に着手して逆転した事にされます。もちろん反則なので勝利は勝利ですが、すっきりと
勝たせてもらえないのが腹立たしい。をのれ。
というわけで。やはりオセロは、引き分け手順のリストアップが、強さの肝である事も再確認
してしまいまして。そこまでの根性は無いなぁというのも、モチベーション低下の原因。
436406
2016/04/06(水) 22:31:38.47ID:SXJnF3U3 ログインユーザー一覧表示できるようになりました。
RoRのコーディングは一休みして棋譜管理にとりかかろうと思ってます。
SGFをパクろうかとおもってますが、結構難しい orz.
RoRのコーディングは一休みして棋譜管理にとりかかろうと思ってます。
SGFをパクろうかとおもってますが、結構難しい orz.
437406
2016/04/08(金) 22:18:30.78ID:kkoRA2nm 棋譜ツリー表示すんの結構メンドクサイような希ガス
いいライブラリはないんか
いいライブラリはないんか
438406
2016/04/09(土) 23:59:42.58ID:SBv5rCvL KGSのレーティングシステム難しい。
まだそんなこと考える段階じゃないけど。
まだそんなこと考える段階じゃないけど。
439406
2016/04/11(月) 21:25:49.37ID:A4FL2sT8 javascriptでオブジェクトの比較ってjsonで変換してそれを比較しろとか某ページで見たけど
そんな事せにゃならんの?
そんな事せにゃならんの?
440406
2016/04/12(火) 23:02:53.74ID:xYnFmhAQ http://textuploader.com/5w3sq
棋譜ツリーだいぶ形になってきた。
棋譜ツリーだいぶ形になってきた。
441406
2016/04/16(土) 22:59:10.60ID:MXucFBba Rails側とjavascript側の連携がやっぱわからん。
色々めんどくさすぎ。
色々めんどくさすぎ。
442406
2016/04/23(土) 00:16:56.63ID:Gce7F8Ms エンコード間違えてて動かなかったわ。
railsがログ吐いてくれてなきゃ一生気づかなかっただろうな。
railsがログ吐いてくれてなきゃ一生気づかなかっただろうな。
443406
2016/04/27(水) 21:48:14.23ID:JGExYAi7 開発に使ってたノートのキーボードが一部効かなくなったわorz.
windowsにログインできなくて焦った。
アカウントでも乗っ取られたのかと思ったらソフトキーボード使ったらログインできた。
USBキーボードとかで代用できればいいんだがどうかな〜。
windowsにログインできなくて焦った。
アカウントでも乗っ取られたのかと思ったらソフトキーボード使ったらログインできた。
USBキーボードとかで代用できればいいんだがどうかな〜。
444406
2016/05/02(月) 21:58:59.67ID:i7WwatVD invalid multibyte character
とかってエラーが出るんだけど、どこに全角があるのかさっぱりわからん。
app/controllers/application_controller.rb:1にあるらしいんだけどいくら調べてもみつからん。
とかってエラーが出るんだけど、どこに全角があるのかさっぱりわからん。
app/controllers/application_controller.rb:1にあるらしいんだけどいくら調べてもみつからん。
445406
2016/05/02(月) 23:06:51.86ID:i7WwatVD 以下のログが出るんだけど、だれか原因わかる人いない?
Started GET "/" for ::1 at 2016-05-02 22:55:10 +0900
ActiveRecord::SchemaMigration Load (1.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
ArgumentError (invalid multibyte character):
app/controllers/application_controller.rb:3:in `<top (required)>'
app/controllers/home_controller.rb:5:in `<top (required)>'
Started GET "/" for ::1 at 2016-05-02 22:55:10 +0900
ActiveRecord::SchemaMigration Load (1.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
ArgumentError (invalid multibyte character):
app/controllers/application_controller.rb:3:in `<top (required)>'
app/controllers/home_controller.rb:5:in `<top (required)>'
446406
2016/05/03(火) 11:00:58.43ID:6pwgCgml すいません、解決しました。
447406
2016/05/13(金) 22:42:29.22ID:Zx20RSfa やはりポーリングだけでは限界があるか?
448310
2016/05/16(月) 21:32:31.63ID:KQ1qSDyb モチベーションダダ下がりだったけど、なんとなくソースの整理していたら、
直したいところがいろいろ出て来て、見直し中。
後ろ向き枝刈で探索時間は変わらないけど、探索ノード数が2/3になった。
この枝刈手法の速度アップできたら面白いかもと思いつつ、元々自分が
結構高速に書いていた処理(未使用)を流用しているから、これ以上速度アップ
できるかわからん。
でも、EDAXには勝てないんだろうなぁ・・・
EDAXの孫情報からインスピレーション得てるネタだし。
直したいところがいろいろ出て来て、見直し中。
後ろ向き枝刈で探索時間は変わらないけど、探索ノード数が2/3になった。
この枝刈手法の速度アップできたら面白いかもと思いつつ、元々自分が
結構高速に書いていた処理(未使用)を流用しているから、これ以上速度アップ
できるかわからん。
でも、EDAXには勝てないんだろうなぁ・・・
EDAXの孫情報からインスピレーション得てるネタだし。
449310
2016/05/26(木) 16:01:37.05ID:ZBCA70ec 遅々として進んでいます。
ソースを一から組みなおして、いろいろと綺麗にしてます。
並列探索を入れない段階で、FFO#40が結構速くなった。
いまさらながらに、FFOテストを40〜59まで実行して比較しようとしたところ、
前から薄々気づいていたけど、FFO#41以後が遅い。酷いケースになると
探索ノード数が10倍=時間も10倍になる(#51)。自分のは指数関数的に
比較的にきれいにノード数が増加している。同じようなノード数のものもあるので、
ZebraやEdaxはどこかで上手にばっさり刈り込んでいる感じ。#52以後は時間が
かかりすぎて、未検証ですが。
ZebraやEdaxもノード/秒が一定しているので、置換表みたいな重い方法では
なく、簡単な方法で刈り込んでいるっぽい。とすると、moveorderかなぁ。
一応、MPCの99%で評価値の並び順は置換表に残してあるので、そんなに
間違った順番でソートしていないと思うんだけど。
あと、mtd(f)だと最初から最後までNullサーチしかしない事に思い至り、そこで
処理の効率化できる箇所が無いかと考えてます。Nullしかやらないんなら、
アルファ越えの再探索でウィンドウを広げる必要もないわけで。逐次探索部分
では効果不明だけど並列探索だとYBWCでPVを検索し終わるまで待つ必要が
そもそもない(仮アルファを求める必要がない)ので、多少速度アップできない
かなぁと。
ソースを一から組みなおして、いろいろと綺麗にしてます。
並列探索を入れない段階で、FFO#40が結構速くなった。
いまさらながらに、FFOテストを40〜59まで実行して比較しようとしたところ、
前から薄々気づいていたけど、FFO#41以後が遅い。酷いケースになると
探索ノード数が10倍=時間も10倍になる(#51)。自分のは指数関数的に
比較的にきれいにノード数が増加している。同じようなノード数のものもあるので、
ZebraやEdaxはどこかで上手にばっさり刈り込んでいる感じ。#52以後は時間が
かかりすぎて、未検証ですが。
ZebraやEdaxもノード/秒が一定しているので、置換表みたいな重い方法では
なく、簡単な方法で刈り込んでいるっぽい。とすると、moveorderかなぁ。
一応、MPCの99%で評価値の並び順は置換表に残してあるので、そんなに
間違った順番でソートしていないと思うんだけど。
あと、mtd(f)だと最初から最後までNullサーチしかしない事に思い至り、そこで
処理の効率化できる箇所が無いかと考えてます。Nullしかやらないんなら、
アルファ越えの再探索でウィンドウを広げる必要もないわけで。逐次探索部分
では効果不明だけど並列探索だとYBWCでPVを検索し終わるまで待つ必要が
そもそもない(仮アルファを求める必要がない)ので、多少速度アップできない
かなぁと。
450310
2016/05/27(金) 00:36:10.52ID:gIFpjm1c 早々に状況が判明しました。ここに書くと進むんだよなぁ。
mtd(f)+negaScoutで繰り返し探索しながら、置換表に置換データを置いて、更に
それを並び替えに利用していたのですが、最初にPVを探索してしまうと、その後は
別の着手も評価値がαになってしまい、並び替えの意味が無くなっている感じです。
ちなみにPVだけは別ルートで必ず先頭に探索するようにしてあります。
というわけで、テスト的に初段のみ敢えて並び順を逆転させてmtd(f)を未使用にして
ただのnegaScoutで、mpc99%→全探索をしてみたところ、探索ノード数がかなり減り
ました。置換表使用の深さ全部で並び順を逆転させてみたら、mpcの99%ですら全く
終了する気配がなくなりました。
さて、どうやって実現しようかなと。
今のところ、mpcはかなり高速なので、これをnegaMaxにして。
いわゆる並び替え専用の浅い探査にしようかなと。
mtd(f)+negaScoutで繰り返し探索しながら、置換表に置換データを置いて、更に
それを並び替えに利用していたのですが、最初にPVを探索してしまうと、その後は
別の着手も評価値がαになってしまい、並び替えの意味が無くなっている感じです。
ちなみにPVだけは別ルートで必ず先頭に探索するようにしてあります。
というわけで、テスト的に初段のみ敢えて並び順を逆転させてmtd(f)を未使用にして
ただのnegaScoutで、mpc99%→全探索をしてみたところ、探索ノード数がかなり減り
ました。置換表使用の深さ全部で並び順を逆転させてみたら、mpcの99%ですら全く
終了する気配がなくなりました。
さて、どうやって実現しようかなと。
今のところ、mpcはかなり高速なので、これをnegaMaxにして。
いわゆる並び替え専用の浅い探査にしようかなと。
451406
2016/06/27(月) 22:12:32.72ID:rUgIsnK8 対局場は結構難しいorzので一旦横に置いておいて
手始めにもうすこし簡単な1人ゲームからPHPで作ろうと思ってます。
具体的にはこれ
http://www.vector.co.jp/soft/winnt/game/se513226.html
の一人プレー場とランキングを作りたいです。
元ネタはコンウェイの天使と悪魔という問題みたいですね〜。
手始めにもうすこし簡単な1人ゲームからPHPで作ろうと思ってます。
具体的にはこれ
http://www.vector.co.jp/soft/winnt/game/se513226.html
の一人プレー場とランキングを作りたいです。
元ネタはコンウェイの天使と悪魔という問題みたいですね〜。
452406
2016/07/02(土) 23:28:52.20ID:qo9Pciu3453406
2016/07/02(土) 23:40:37.16ID:qo9Pciu3 なんか文字化けしてんなぁ
なんでだ?
まあいいか
なんでだ?
まあいいか
454名前は開発中のものです。
2016/07/14(木) 21:31:20.75ID:GXGadAU3 必殺技が使えるリアルタイムアクションオセロまだですか
455名前は開発中のものです。
2016/07/17(日) 23:40:28.28ID:M3Q2Msci456455
2016/07/18(月) 00:05:57.51ID:Lx2YZiAH 455=406です。
457406
2016/07/21(木) 23:55:32.48ID:oilR8wYn うーんアクセスがないぜ。
検索エンジンにも引っかからないし。
SEOとかいうのに手を染めるしかないのか?
検索エンジンにも引っかからないし。
SEOとかいうのに手を染めるしかないのか?
458406
2016/07/27(水) 00:25:34.27ID:42/ungMS 結果を保存できるようにした。
459406
2016/07/27(水) 22:44:58.98ID:42/ungMS 棋譜を登録&閲覧&再生できるようにした。
そろそろ宣伝かな〜。
そろそろ宣伝かな〜。
460名前は開発中のものです。
2016/08/01(月) 12:39:59.89ID:BFi+UVWj このようなスレがあるとは…
自作でオセロソフトを作成している者です
現在は自己対局による学習中です
初手f5
以降ランダム7手〜8手、
中盤8手読み
中盤で次善手を85%の確率で一手のみ打つ
終盤20マス空き読み切り
で300万棋譜集めようかと
この設定であれば一局1〜3秒程度なので2ヶ月半くらいで達成できる予定です
まだ86万局程度ですが、今のところFFOはこんな感じです
FFO#40 (a2:+38) 1.36sec FFO#41 (h4: +0) 3.75sec
FFO#42 (G2: +6) 4.86sec FFO#43 (C7:-12) 6.33sec
FFO#44 (B8:-14) 9.46sec FFO#45 (b2: +6) 64.88sec
FFO#46 (b3: -8) 13.20sec FFO#47 (G2: +4) 5.66sec
FFO#48 (F6:+28) 67.74sec FFO#49 (e1:+16) 121.90sec
FFO#50 (d8:+10) 376.73sec FFO#51 (E2: +6) 86.08sec
FFO#52 (a3:+0) 132.61sec
自作でオセロソフトを作成している者です
現在は自己対局による学習中です
初手f5
以降ランダム7手〜8手、
中盤8手読み
中盤で次善手を85%の確率で一手のみ打つ
終盤20マス空き読み切り
で300万棋譜集めようかと
この設定であれば一局1〜3秒程度なので2ヶ月半くらいで達成できる予定です
まだ86万局程度ですが、今のところFFOはこんな感じです
FFO#40 (a2:+38) 1.36sec FFO#41 (h4: +0) 3.75sec
FFO#42 (G2: +6) 4.86sec FFO#43 (C7:-12) 6.33sec
FFO#44 (B8:-14) 9.46sec FFO#45 (b2: +6) 64.88sec
FFO#46 (b3: -8) 13.20sec FFO#47 (G2: +4) 5.66sec
FFO#48 (F6:+28) 67.74sec FFO#49 (e1:+16) 121.90sec
FFO#50 (d8:+10) 376.73sec FFO#51 (E2: +6) 86.08sec
FFO#52 (a3:+0) 132.61sec
461406
2016/08/02(火) 00:17:59.05ID:R38aaX9h だれかSEOのやりかた教えてくれ。
462460
2016/08/02(火) 09:44:26.07ID:/HFRnWj4 白の得点が微妙にマイナスに傾いているので9手目までランダムに固定しました。
初手はf5なので8手目までだと白の方がランダム手数多くなってしまうことに気づいて・・・
9手目ランダムだと7手目までの評価値はまともな値にならないのですが、そこはBOOKでどうにかしようかと。
まともな値にならないだけで、互角定石以外に進行したりとかはしないので、とりあえず無視します。
初手はf5なので8手目までだと白の方がランダム手数多くなってしまうことに気づいて・・・
9手目ランダムだと7手目までの評価値はまともな値にならないのですが、そこはBOOKでどうにかしようかと。
まともな値にならないだけで、互角定石以外に進行したりとかはしないので、とりあえず無視します。
463406
2016/08/02(火) 20:37:12.35ID:R38aaX9h Google検索で引っかかるようになったみたいです。
でもコンウェイの天使と悪魔なんてワード検索する人そんなにいないだろな。
でもコンウェイの天使と悪魔なんてワード検索する人そんなにいないだろな。
464310
2016/08/03(水) 14:35:23.97ID:WXOcEHjz ここしばらく、評価関数に新機軸をと、ディープラーニングにトライ中ですが、
囲碁のように、畳み込みの画像認識の応用では、なかなか上手くいかないと
言うか、自分のパソコンで手におえるくらいの規模のネットワークだと全く歯が
立たない感じです。
というわけで、色々と手はいっぱい動かしているのですが、何にも成果があら
われていない状況です。
囲碁のように、畳み込みの画像認識の応用では、なかなか上手くいかないと
言うか、自分のパソコンで手におえるくらいの規模のネットワークだと全く歯が
立たない感じです。
というわけで、色々と手はいっぱい動かしているのですが、何にも成果があら
われていない状況です。
465名前は開発中のものです。
2016/08/03(水) 22:36:32.67ID:u2EcbVrc466310
2016/08/04(木) 01:59:01.51ID:XH3ZGPYC >>465
最初はGitHUBのDeepLearningの参考プログラムを元に自家製でAutoEncoderにDropoutをつけ
たりしてました。
次にCNNで、GitHUBでtiny-cnnというライブラリを落として使用。技術的に凝りすぎライブラリで、
解読するのにC++の勉強が主になってしまいそうなので、改造はあきらめました。
そして、今は、行列ライブラリ(Eigen)落としてきて、自家製に戻りつつあります。Sparse正則化の
ために、ミニバッチ処理をしようかと思って(最初のは逐次処理のみ)、ついでにAVX2命令や
並列化対応を、この行列ライブラリに頼ろうかと思ってます。
Eigen使ったMLPでxor解くテストプログラムは、さきほどできましたが、本当にこれで良いのか、
結構不安です。多少間違っていても、収束しちゃうときがあるので。
明日はAdagradに対応させる予定。何とか2〜3層程度で収まらないかな。
パソコン環境が貧弱なので、あまり重い処理ができないのが最大の難点です。
もっとも、できあがった評価関数が重いと、探索深さが浅くなってしまうので、ある程度は妥協
しなきゃならんかなと思っています。
最初はGitHUBのDeepLearningの参考プログラムを元に自家製でAutoEncoderにDropoutをつけ
たりしてました。
次にCNNで、GitHUBでtiny-cnnというライブラリを落として使用。技術的に凝りすぎライブラリで、
解読するのにC++の勉強が主になってしまいそうなので、改造はあきらめました。
そして、今は、行列ライブラリ(Eigen)落としてきて、自家製に戻りつつあります。Sparse正則化の
ために、ミニバッチ処理をしようかと思って(最初のは逐次処理のみ)、ついでにAVX2命令や
並列化対応を、この行列ライブラリに頼ろうかと思ってます。
Eigen使ったMLPでxor解くテストプログラムは、さきほどできましたが、本当にこれで良いのか、
結構不安です。多少間違っていても、収束しちゃうときがあるので。
明日はAdagradに対応させる予定。何とか2〜3層程度で収まらないかな。
パソコン環境が貧弱なので、あまり重い処理ができないのが最大の難点です。
もっとも、できあがった評価関数が重いと、探索深さが浅くなってしまうので、ある程度は妥協
しなきゃならんかなと思っています。
467名前は開発中のものです。
2016/08/04(木) 22:03:08.50ID:5/KmfpOW 壮絶やな。
その情熱がうらやましいぜ。
その情熱がうらやましいぜ。
468310
2016/08/05(金) 20:44:21.05ID:sOgjr/Uz 楽しんでやってますので(笑
で、AdagradとSparse正則化ができました。Sparse正則化は思ったより時間がかかり
ませんでした。さすが行列ライブラリって感じです。AdagradとSparse正則化込みで、
結果も、正則化もちゃんと出来てますので、多分間違いはないでしょう。
今夜はオセロ関連ライブラリ持ってきて、学習データ作って、Sparse Auto Encoder
にしてテストです。全結合層クラスを積み重ねていくだけだし、データ作成は3回目
なので、後は簡単ですが、隠れ層のノード数と、目標とする活性ノード数を色々試す
のが面倒です。
まあ、ここまで全敗なので、あんまり期待していないけどさ(汗
やればやるほどBuroさんの評価関数の凄さがわかってきます。
で、AdagradとSparse正則化ができました。Sparse正則化は思ったより時間がかかり
ませんでした。さすが行列ライブラリって感じです。AdagradとSparse正則化込みで、
結果も、正則化もちゃんと出来てますので、多分間違いはないでしょう。
今夜はオセロ関連ライブラリ持ってきて、学習データ作って、Sparse Auto Encoder
にしてテストです。全結合層クラスを積み重ねていくだけだし、データ作成は3回目
なので、後は簡単ですが、隠れ層のノード数と、目標とする活性ノード数を色々試す
のが面倒です。
まあ、ここまで全敗なので、あんまり期待していないけどさ(汗
やればやるほどBuroさんの評価関数の凄さがわかってきます。
469460
2016/08/08(月) 01:32:00.53ID:1caSYJwt PV-LINE(最善の着手リスト)の表示を実装してみました。
PVノードの更新は非常にまれな事象ですが、あまり深い所で表示更新すると
やはり探索速度に影響与えてしまうので、6手目以下の浅いノードで表示更新しています。
あと自己対局棋譜が100万局集まったので、中盤MPCパラメータを作成中です。
現在20手読みのカットペアの計算に入ったところで、これが終われば終盤MPCの実装に入ろうと思います。
PVノードの更新は非常にまれな事象ですが、あまり深い所で表示更新すると
やはり探索速度に影響与えてしまうので、6手目以下の浅いノードで表示更新しています。
あと自己対局棋譜が100万局集まったので、中盤MPCパラメータを作成中です。
現在20手読みのカットペアの計算に入ったところで、これが終われば終盤MPCの実装に入ろうと思います。
470名前は開発中のものです。
2016/08/10(水) 01:12:31.39ID:BL+f+Yy5 310と460はホントに別人なのか?
ディープにオセロAIに取り組む人が2人も現れるとはにわかには信じがたいw
ディープにオセロAIに取り組む人が2人も現れるとはにわかには信じがたいw
471310
2016/08/10(水) 22:37:11.88ID:C09Nh62j >>470
他のスレで出会って、誘導させていただきました。
ほんと絶滅危惧種ですよね(汗
Auto EncoderにSparse正則化を加えましたが、やっぱり特徴抽出は
簡単ではないようです。Auto Encoderとしては申し分なく機能している
のですが・・・線形回帰をつけて評価値を算出してみたのですが、ただの
乱数返しているような状態になります。
なんか、微妙に恒等変換を学んでいる臭いんだよなぁ。むむむ。
他のスレで出会って、誘導させていただきました。
ほんと絶滅危惧種ですよね(汗
Auto EncoderにSparse正則化を加えましたが、やっぱり特徴抽出は
簡単ではないようです。Auto Encoderとしては申し分なく機能している
のですが・・・線形回帰をつけて評価値を算出してみたのですが、ただの
乱数返しているような状態になります。
なんか、微妙に恒等変換を学んでいる臭いんだよなぁ。むむむ。
472名前は開発中のものです。
2016/08/10(水) 22:53:03.62ID:BL+f+Yy5473310
2016/08/11(木) 23:18:44.20ID:M0iE7EXH474名前は開発中のものです。
2016/08/12(金) 00:22:58.37ID:+2V5AEwc ほほう
460さんも期待出来そうですな
460さんも期待出来そうですな
475460
2016/08/12(金) 02:42:42.36ID:mvQ0iJdF >>472
自分はディープランニングなどの人工知能系はさっぱりなので・・・
310さんはよく勉強されていると思います。
自作オセロですが、今まで32bitで開発していましたが
今ではもう32bitOSを使用する方が稀だと考えて思い切って64bitに移行しました。
探索ノード数がいきなり10〜20%程度上がってビックリしています・・・
自分はディープランニングなどの人工知能系はさっぱりなので・・・
310さんはよく勉強されていると思います。
自作オセロですが、今まで32bitで開発していましたが
今ではもう32bitOSを使用する方が稀だと考えて思い切って64bitに移行しました。
探索ノード数がいきなり10〜20%程度上がってビックリしています・・・
476460
2016/08/12(金) 04:26:50.73ID:mvQ0iJdF あ、探索ノード数ではなく探索速度ですw
終盤探索だと10000Knps〜15000Knps程度出せるようになりました。
自分の環境だとWZebraが20000Knpsなので、大幅に負けています・・・
そろそろチューニングも視野に入れつつやっていこうと思います。
まずは探索ノード数を終盤MPCで削減しなくては・・・
終盤探索だと10000Knps〜15000Knps程度出せるようになりました。
自分の環境だとWZebraが20000Knpsなので、大幅に負けています・・・
そろそろチューニングも視野に入れつつやっていこうと思います。
まずは探索ノード数を終盤MPCで削減しなくては・・・
477460
2016/08/12(金) 07:59:35.21ID:mvQ0iJdF 64ビット移行+120万局の学習でFFOテストの結果をまとめました。
32ビット+86万局の学習だと合計が17219.7sだったので36%ほど高速化しています。
シングルスレッド動作なので、将来的にはマルチに移行したいところ・・・
OS:Win10 CPU:i5-6500 キャッシュサイズ:128MB
FFO#40 (a2:+38) 1.04s FFO#41 (h4: +0) 3.22s
FFO#42 (G2: +6) 4.01s FFO#43 (G3:-12) 13.10s
FFO#44 (D2:-14) 3.22s FFO#45 (b2: +6) 58.63s
FFO#46 (b3: -8) 10.27s FFO#47 (G2: +4) 4.60s
FFO#48 (F6:+28) 36.09s FFO#49 (e1:+16) 50.33s
FFO#50 (d8:+10) 354.14s FFO#51 (E2: +6) 59.20s
FFO#52 (a3:+0) 142.79s FFO#53 (d8:-2) 656.87s
FFO#54 (c7:-2) 1718.85s FFO#55 (G6:+0) 5588.48s
FFO#56 (H2:+0) 314.27s FFO#57 (a6:-10) 1045.01s
FFO#58 (g1:+4) 973.58s FFO#59 (g8:+64) 0.25s
合計11037.95s(トッププログラムは合計で600秒台orz)
32ビット+86万局の学習だと合計が17219.7sだったので36%ほど高速化しています。
シングルスレッド動作なので、将来的にはマルチに移行したいところ・・・
OS:Win10 CPU:i5-6500 キャッシュサイズ:128MB
FFO#40 (a2:+38) 1.04s FFO#41 (h4: +0) 3.22s
FFO#42 (G2: +6) 4.01s FFO#43 (G3:-12) 13.10s
FFO#44 (D2:-14) 3.22s FFO#45 (b2: +6) 58.63s
FFO#46 (b3: -8) 10.27s FFO#47 (G2: +4) 4.60s
FFO#48 (F6:+28) 36.09s FFO#49 (e1:+16) 50.33s
FFO#50 (d8:+10) 354.14s FFO#51 (E2: +6) 59.20s
FFO#52 (a3:+0) 142.79s FFO#53 (d8:-2) 656.87s
FFO#54 (c7:-2) 1718.85s FFO#55 (G6:+0) 5588.48s
FFO#56 (H2:+0) 314.27s FFO#57 (a6:-10) 1045.01s
FFO#58 (g1:+4) 973.58s FFO#59 (g8:+64) 0.25s
合計11037.95s(トッププログラムは合計で600秒台orz)
479310
2016/08/12(金) 15:16:23.38ID:USoZXJIB がーん。今まで、こちらはノートPCだしと、密かに思っていましたが、32bitでしたか・・・。
完全に脱帽です。
だったら、僕もこのスレで教わったAVX2とかBMIとかの組込関数使って、あとPPLとか
OpenMPとかで並列化して4コアなら3倍強程度なので、トータル4倍以上に速度アップ
すると思いますよ。つまり、その辺やるだけでEdax並まで行くかなと(汗
ちなみに、DeepLearningはあきらめ方向にだいぶシフトしてきました。
完全に脱帽です。
だったら、僕もこのスレで教わったAVX2とかBMIとかの組込関数使って、あとPPLとか
OpenMPとかで並列化して4コアなら3倍強程度なので、トータル4倍以上に速度アップ
すると思いますよ。つまり、その辺やるだけでEdax並まで行くかなと(汗
ちなみに、DeepLearningはあきらめ方向にだいぶシフトしてきました。
480名前は開発中のものです。
2016/08/12(金) 16:41:11.53ID:8u/4Xx1J 仲間が出来ていいのう
481460
2016/08/12(金) 17:56:57.44ID:wDmYSTDl シングルスレッドだとトッププログラムですら合計2000秒台と限界があるので、マルチスレッド対応は必須ですよね
ただybwc等の並列化アルゴリズムの理解に時間がかかりそう…
ただybwc等の並列化アルゴリズムの理解に時間がかかりそう…
482310
2016/08/12(金) 20:50:39.55ID:USoZXJIB >>481
YBWCはnegascoutのnull window searchを並列化して一括処理する
ようなものだと解釈して実装しました。
この辺はゲーム計算メカニズムなる本で勉強したかな。
並列処理のフレームワーク何使うかが問題ですね。
自分はVC++なのでmsdnで情報が得やすいPPLを使いました。
インテルTBBとかOpenMPなんてのもあります。
PPLは結構使いやすかったですが、速度は不明。
まあ、ルートの方でしか使わないので、あまり影響ないと思っています。
手組でマルチスレッドなプログラム書ける人には不要かも知れません。
YBWCはnegascoutのnull window searchを並列化して一括処理する
ようなものだと解釈して実装しました。
この辺はゲーム計算メカニズムなる本で勉強したかな。
並列処理のフレームワーク何使うかが問題ですね。
自分はVC++なのでmsdnで情報が得やすいPPLを使いました。
インテルTBBとかOpenMPなんてのもあります。
PPLは結構使いやすかったですが、速度は不明。
まあ、ルートの方でしか使わないので、あまり影響ないと思っています。
手組でマルチスレッドなプログラム書ける人には不要かも知れません。
483310
2016/08/13(土) 14:18:44.65ID:D+1dBs0T あ、考え方がnegascoutみたいだという事で。
484名前は開発中のものです。
2016/08/13(土) 20:35:07.80ID:p7EbJiId avx2って256bitだよな
オセロだと128bitしか使えないような?
オセロだと128bitしか使えないような?
485310
2016/08/13(土) 20:47:52.09ID:D+1dBs0T 方向が8つあって、それぞれの処理を8回計算するとき、
右シフト方向が4つ、左シフト方向が4つ。
256bitは64bit×4。右シフトと左シフトで2回。
というわけで、mobilityとかflipとかで便利に使えます。
右シフト方向が4つ、左シフト方向が4つ。
256bitは64bit×4。右シフトと左シフトで2回。
というわけで、mobilityとかflipとかで便利に使えます。
486460
2016/08/14(日) 16:41:37.52ID:ALD5heTO 現在、終盤用MPCパラメータ作成中です。
23手完全読みのカットペアに入っています。24手読みの計算が終わったらいったん実装に入るつもりです。
>>310
YBWCに関して調べましたが、そうみたいですね。
MPCパラメータを作成している間に、なんとなくで適当に実装してみましたが
なぜかエラーで落ちまくりでしたw
排他がかかっていない致命的な箇所があるのか・・・置換表は排他をかけたのですが・・・
PVライン生成あたりも怪しい、とりあえずもう少し調べてみないとダメそう。
23手完全読みのカットペアに入っています。24手読みの計算が終わったらいったん実装に入るつもりです。
>>310
YBWCに関して調べましたが、そうみたいですね。
MPCパラメータを作成している間に、なんとなくで適当に実装してみましたが
なぜかエラーで落ちまくりでしたw
排他がかかっていない致命的な箇所があるのか・・・置換表は排他をかけたのですが・・・
PVライン生成あたりも怪しい、とりあえずもう少し調べてみないとダメそう。
488名前は開発中のものです。
2016/08/17(水) 21:19:58.40ID:Z2gXWq7v489310
2016/08/18(木) 15:43:08.07ID:7GnJQiSP >>488
まだ細々やってます(汗
Eigenの導入と、少しづつ進んでいくC++技術のおかげで、前よりは試行の
スピードはアップしていますが、なかなか成果は出ません。まだ、色々な
パターンを試しながらディープラーニングって何ぞやを体感しているところ
なんだと思います。
少なくとも「簡単に凄い事ができそう」という幻想は捨てる事ができました(汗
ボードゲームがターン制なら、基本はmin-Maxになると思います。
まずは、盤面の状態に(恣意的で構いません)点をつける評価関数作るところ
から始めたらどうでしょう?
次のステップで評価関数に統計(線形回帰)を持ち込むと、ディープラーニング
じゃなくても、プレイ譜がたくさん必要になります。
オセロの場合は、Buroさんという先人が、実用レベルの評価関数が線形回帰
で作れる事を示してくれています。
僕がディープラーニングを適用しようと思っているのは、ただの思いつきでして。
場合によっては、より軽くて正確評価関数が作れるかと思いましたが、実際に
始めてみると、なかなか評価関数として機能してくれないし、仮にできたとしても
重いものになっちゃいそうという感じです。
まだ細々やってます(汗
Eigenの導入と、少しづつ進んでいくC++技術のおかげで、前よりは試行の
スピードはアップしていますが、なかなか成果は出ません。まだ、色々な
パターンを試しながらディープラーニングって何ぞやを体感しているところ
なんだと思います。
少なくとも「簡単に凄い事ができそう」という幻想は捨てる事ができました(汗
ボードゲームがターン制なら、基本はmin-Maxになると思います。
まずは、盤面の状態に(恣意的で構いません)点をつける評価関数作るところ
から始めたらどうでしょう?
次のステップで評価関数に統計(線形回帰)を持ち込むと、ディープラーニング
じゃなくても、プレイ譜がたくさん必要になります。
オセロの場合は、Buroさんという先人が、実用レベルの評価関数が線形回帰
で作れる事を示してくれています。
僕がディープラーニングを適用しようと思っているのは、ただの思いつきでして。
場合によっては、より軽くて正確評価関数が作れるかと思いましたが、実際に
始めてみると、なかなか評価関数として機能してくれないし、仮にできたとしても
重いものになっちゃいそうという感じです。
490488
2016/08/19(金) 23:15:11.39ID:i9HkvHw2 >>489
手動評価関数はかなり昔五目並べで書いたことあります。
min-maxで思考時間が1手5分くらいかかったけど、
自分でプレーして負かされることもあるくらいの強さにはなりました。
そのBuroさんの線形回帰とやらはWebで論文とか見れたりしますか?
読んでも多分理解できないだろうけどちょっと興味あります。
手動評価関数はかなり昔五目並べで書いたことあります。
min-maxで思考時間が1手5分くらいかかったけど、
自分でプレーして負かされることもあるくらいの強さにはなりました。
そのBuroさんの線形回帰とやらはWebで論文とか見れたりしますか?
読んでも多分理解できないだろうけどちょっと興味あります。
491488
2016/08/19(金) 23:23:27.55ID:i9HkvHw2 ぐぐったらこんなのがあったけど多すぎ。
https://skatgame.net/mburo/publications.html
https://skatgame.net/mburo/publications.html
492310
2016/08/20(土) 16:51:13.03ID:m44rb9b4 >>490
Buroさんが作った伝説のオセロプログラムがLogistelloです。
Thellというオセロプログラムの作者の方が日本語で解説してくれています。
http://sealsoft.jp/thell/learning.pdf
5.2の計算の高速化のところの説明(P.8の冒頭)のところ。
自分なりに解釈したら、自分が解釈違いしたのか、説明がおかしいのか、
この通りではなかった記憶があります。
とはいえ、これはオセロの考え方であって、将棋なんかだとbonanzaなどを
参考にすべきだし、全く別のゲームであったら、別な事を考えなければなり
ませんね。当たり前ですが。
Buroさんが作った伝説のオセロプログラムがLogistelloです。
Thellというオセロプログラムの作者の方が日本語で解説してくれています。
http://sealsoft.jp/thell/learning.pdf
5.2の計算の高速化のところの説明(P.8の冒頭)のところ。
自分なりに解釈したら、自分が解釈違いしたのか、説明がおかしいのか、
この通りではなかった記憶があります。
とはいえ、これはオセロの考え方であって、将棋なんかだとbonanzaなどを
参考にすべきだし、全く別のゲームであったら、別な事を考えなければなり
ませんね。当たり前ですが。
493488
2016/08/20(土) 20:33:47.55ID:+7ONDgCM >>492
パターンの重みの線形和が評価関数になる的なことが書いてあるっぽいですけど、
パターンというのは人間が与えてやるわけですよね?
そのパターンすら学習で求めるというのがディープラーニングなのかと思ってますけど。
まあディープラーニングにはロマンがありますね。
パターンの重みの線形和が評価関数になる的なことが書いてあるっぽいですけど、
パターンというのは人間が与えてやるわけですよね?
そのパターンすら学習で求めるというのがディープラーニングなのかと思ってますけど。
まあディープラーニングにはロマンがありますね。
494310
2016/08/20(土) 21:29:23.21ID:m44rb9b4 >>493
ですです。
あと、Deepじゃなくても、2層以上のパーセプトロンだと、線形分離不可能問題の
分類ができるようになります。XORの学習が典型ですね。
ところが、パターンの部分まで学習で求めてくれるってのは、やっぱり幻想でして。
ある程度パターンを想定しながら、ネットワークを作らないといかんのではないか
という事に思い至っています。
例えば畳み込みニューラルネットワーク(CNN)で、何故畳み込みをするのかという
と、縦線横線などの隣接ドット同士もつながりを識別してもらうためですし。そもそも
畳み込みのフォワード計算自体が、画像に対して例えば輪郭線強調といったフィル
ターかけるのと、プログラム的に同じものだったりします。学習対象は、フィルターに
なります。
オセロは、囲碁とかと違って、石の色がコロコロ変わるので、隣同士の石のつながで
判断するCNN的なネットワークをそのまま適用できないよなぁというのが、最近の諦め
ポイントであります。
じゃあ、何に頼るかというと、自分はオセロ弱いので・・・No ideaだったりします。
あんな簡単な(DeepLearningと比較して)線形和でBuroさんの評価関数ができています
ので、パターンを活かして、まずはそこに点数を割り振るところをMLPなんかでできない
かなぁと思っています。
ですです。
あと、Deepじゃなくても、2層以上のパーセプトロンだと、線形分離不可能問題の
分類ができるようになります。XORの学習が典型ですね。
ところが、パターンの部分まで学習で求めてくれるってのは、やっぱり幻想でして。
ある程度パターンを想定しながら、ネットワークを作らないといかんのではないか
という事に思い至っています。
例えば畳み込みニューラルネットワーク(CNN)で、何故畳み込みをするのかという
と、縦線横線などの隣接ドット同士もつながりを識別してもらうためですし。そもそも
畳み込みのフォワード計算自体が、画像に対して例えば輪郭線強調といったフィル
ターかけるのと、プログラム的に同じものだったりします。学習対象は、フィルターに
なります。
オセロは、囲碁とかと違って、石の色がコロコロ変わるので、隣同士の石のつながで
判断するCNN的なネットワークをそのまま適用できないよなぁというのが、最近の諦め
ポイントであります。
じゃあ、何に頼るかというと、自分はオセロ弱いので・・・No ideaだったりします。
あんな簡単な(DeepLearningと比較して)線形和でBuroさんの評価関数ができています
ので、パターンを活かして、まずはそこに点数を割り振るところをMLPなんかでできない
かなぁと思っています。
495488
2016/08/21(日) 00:04:33.21ID:EnsCDbgT >>494
>ところが、パターンの部分まで学習で求めてくれるってのは、やっぱり幻想でして。
>ある程度パターンを想定しながら、ネットワークを作らないといかんのではないか
>という事に思い至っています。
ふーむそうなのか。残念。
聞きかじった知識だと夢のような技術なのかと思っちゃったけど、
実戦してみるとなかなか難しいのかぁ。
>ところが、パターンの部分まで学習で求めてくれるってのは、やっぱり幻想でして。
>ある程度パターンを想定しながら、ネットワークを作らないといかんのではないか
>という事に思い至っています。
ふーむそうなのか。残念。
聞きかじった知識だと夢のような技術なのかと思っちゃったけど、
実戦してみるとなかなか難しいのかぁ。
496名前は開発中のものです。
2016/08/21(日) 21:39:11.08ID:EnsCDbgT いくらオセロの盤面が小さいからってシングルスレッドで
10000Knps〜15000Knpsというのはとてつもなく速く感じるんだが。
どうやったらそんな速度がでるんだ?
オセロ業界じゃ普通なのか?
10000Knps〜15000Knpsというのはとてつもなく速く感じるんだが。
どうやったらそんな速度がでるんだ?
オセロ業界じゃ普通なのか?
497310
2016/08/22(月) 02:41:50.59ID:2ubnBUwd Kが余計で3桁間違えているんじゃないかと(汗
498310
2016/08/22(月) 02:46:41.58ID:2ubnBUwd あ、違った。自分が3桁間違えていた。
全然おかしくないです。自分の2コアで13000Kくらい出てます。
シングルで同等の速度ですから、かなり速いとは思いますが、
敢えて言うなら2倍程度なら縮められないとは思えない差です。
全然おかしくないです。自分の2コアで13000Kくらい出てます。
シングルで同等の速度ですから、かなり速いとは思いますが、
敢えて言うなら2倍程度なら縮められないとは思えない差です。
499460
2016/08/22(月) 08:13:03.66ID:yZES3OuI 終盤MPCを実装完了してFFOを測定してみました。。
残すのはFFO#57のみですが、この時点で9364秒と1万秒を割ってるので
10%程度の高速化は期待できそうです。(評価テーブルは64ビット移行+120万局から変更なし)
残すのはFFO#57のみですが、この時点で9364秒と1万秒を割ってるので
10%程度の高速化は期待できそうです。(評価テーブルは64ビット移行+120万局から変更なし)
500460
2016/08/22(月) 09:20:01.85ID:qlwiS2PE501496
2016/08/22(月) 21:10:28.52ID:WzxI/O2e 2000万ノード/sとかってsseやavx使って始めて可能になるレベル?
オセロの合法手の実装になにかすごい効率的なビット演算やってるとか?
オセロの合法手の実装になにかすごい効率的なビット演算やってるとか?
502460
2016/08/23(火) 11:44:32.28ID:sSUGbl7L >>501
終盤探索だと合法手生成は葉ノードの近くでは使わないので、ループや条件分岐を使ったコードでなければアセンブラでなくても速度はそれなりに出ますよ。
こことかが参考になります。
http://d.hatena.ne.jp/ainame/touch/20100426/1272236395
自分はこんな感じのコードをアセンブラに落として少し改変したものを使ってますー
終盤探索だと合法手生成は葉ノードの近くでは使わないので、ループや条件分岐を使ったコードでなければアセンブラでなくても速度はそれなりに出ますよ。
こことかが参考になります。
http://d.hatena.ne.jp/ainame/touch/20100426/1272236395
自分はこんな感じのコードをアセンブラに落として少し改変したものを使ってますー
503460
2016/08/23(火) 11:47:50.11ID:sSUGbl7L 置換表に超大バグがあることに気づき修正したらFFO45が32秒になりました…w
180万局の学習を朝に終えたので今晩再度FFOを測定しようと思います。
180万局の学習を朝に終えたので今晩再度FFOを測定しようと思います。
504310
2016/08/23(火) 13:54:12.88ID:LVh7XLe+ >>502
そのサイトは知りませんでしたが、同じことやっています。
自分の場合は、それをAVX2命令で1,7,8,9ビットシフトを4つ並列で動かす様にして、
右シフト左シフト2回の演算をC++で組んでます。並べて書くと混乱しそうだったので
演算オーバーライドしまくりで、バグ防止しました。
やっぱりアセンブラの方が速いんでしょうね。
ディープラーニングな評価関数の方ですが、突然収束を始めました。
まだ途中ですが、見た感じざっくりで、平均二乗誤差の平方根(σ)が0.6石程度に
収まりそうです。2σで1石、スコアは2づつ変わるので、評価逆転が起きる確率を
数%程度にするには、0.5石以下にしたい。
肝はミニバッチのサイズだった様です(謎)。ハイパーパラメータとしては考慮対象外
でしたが、テスト用に小さくすると収束が悪くなる感触があったので、思い切って大き
くしてみたところ…大きくすればするほど記録を更新していくという状態。ついに212640
件という特大バッチサイズにしてしまいました。メモリー的にはまだいけるかも。
今までの比較検討データは全てパーになったので、検討済のネットワークも、バッチ
サイズ変えて再評価です。今やってるのは、Buroさんパターンがベースのネットワーク
ですが、もしかしたら入力ベタ打ちで「勝手に特徴抽出してくれる。すげー!」に戻るかも(汗
そのサイトは知りませんでしたが、同じことやっています。
自分の場合は、それをAVX2命令で1,7,8,9ビットシフトを4つ並列で動かす様にして、
右シフト左シフト2回の演算をC++で組んでます。並べて書くと混乱しそうだったので
演算オーバーライドしまくりで、バグ防止しました。
やっぱりアセンブラの方が速いんでしょうね。
ディープラーニングな評価関数の方ですが、突然収束を始めました。
まだ途中ですが、見た感じざっくりで、平均二乗誤差の平方根(σ)が0.6石程度に
収まりそうです。2σで1石、スコアは2づつ変わるので、評価逆転が起きる確率を
数%程度にするには、0.5石以下にしたい。
肝はミニバッチのサイズだった様です(謎)。ハイパーパラメータとしては考慮対象外
でしたが、テスト用に小さくすると収束が悪くなる感触があったので、思い切って大き
くしてみたところ…大きくすればするほど記録を更新していくという状態。ついに212640
件という特大バッチサイズにしてしまいました。メモリー的にはまだいけるかも。
今までの比較検討データは全てパーになったので、検討済のネットワークも、バッチ
サイズ変えて再評価です。今やってるのは、Buroさんパターンがベースのネットワーク
ですが、もしかしたら入力ベタ打ちで「勝手に特徴抽出してくれる。すげー!」に戻るかも(汗
505名前は開発中のものです。
2016/08/23(火) 19:39:22.88ID:1+aieVpn506名前は開発中のものです。
2016/08/23(火) 21:26:59.10ID:KqeLXU8U 文系の俺には全然分からん。
もっと簡素な3目並べなら勝てるAIとか作れないかな(´;ω;`)
もっと簡素な3目並べなら勝てるAIとか作れないかな(´;ω;`)
507名前は開発中のものです。
2016/08/23(火) 21:47:29.66ID:1+aieVpn ちょっと興味が湧いたんでとあるオセロアプリ落としてやってみた。
弱設定AIが程よく負けてくれて嬉しいw
一方的にボコされたら詰まらんよな一般人は。
オセロAIはもう神の領域だし。
弱設定AIが程よく負けてくれて嬉しいw
一方的にボコされたら詰まらんよな一般人は。
オセロAIはもう神の領域だし。
508460
2016/08/24(水) 01:02:17.32ID:elb1k4A2 色々チューニングしてトライしましたが、FFO57を大きく落としてしまい、放心中ですw
FFO57以外は全体的に高速化しているのですが、合計としてはあまり変わらない結果に・・・
終盤MPC探索中にa6とg7でかなりふらつくので、置換表に次善手も入れておかないとダメかもしれません。
とりあえずEdaxとゼブラのオーダリングあたりのソースを見直す予定です。
name move time[s] node[Mn]
FFO#40 a2:+38 1.05 10.61
FFO#41 h4:+0 3.23 37.85
FFO#42 g2:+6 2.43 31.69
FFO#43 G3:-12 7.69 79.04
FFO#44 D2:-14 5.09 48.95
FFO#45 b2:+6 30.21 409.43
FFO#46 b3:-8 7.23 78.8
FFO#47 G2:+4 3.1 38.9
FFO#48 F6:+28 19.58 207.46
FFO#49 e1:+16 45.11 527.45
FFO#50 d8:+10 144.14 1330
FFO#51 E2:+6 39.91 502.74
FFO#52 a3:+0 52.56 687.22
FFO#53 d8:-2 617.63 8360
FFO#54 c7:-2 944.7 13410
FFO#55 G6:+0 測定中
FFO#56 H5:+2 262.85 3410
FFO#57 a6:-10 1523.67 19710
FFO#58 g1:+4 674.09 9760
FFO#59 g8:+64 1.08 5.57
合計4385.35[s](FFO55未測定) 合計ノード数:58645.71[Mn]
FFO57以外は全体的に高速化しているのですが、合計としてはあまり変わらない結果に・・・
終盤MPC探索中にa6とg7でかなりふらつくので、置換表に次善手も入れておかないとダメかもしれません。
とりあえずEdaxとゼブラのオーダリングあたりのソースを見直す予定です。
name move time[s] node[Mn]
FFO#40 a2:+38 1.05 10.61
FFO#41 h4:+0 3.23 37.85
FFO#42 g2:+6 2.43 31.69
FFO#43 G3:-12 7.69 79.04
FFO#44 D2:-14 5.09 48.95
FFO#45 b2:+6 30.21 409.43
FFO#46 b3:-8 7.23 78.8
FFO#47 G2:+4 3.1 38.9
FFO#48 F6:+28 19.58 207.46
FFO#49 e1:+16 45.11 527.45
FFO#50 d8:+10 144.14 1330
FFO#51 E2:+6 39.91 502.74
FFO#52 a3:+0 52.56 687.22
FFO#53 d8:-2 617.63 8360
FFO#54 c7:-2 944.7 13410
FFO#55 G6:+0 測定中
FFO#56 H5:+2 262.85 3410
FFO#57 a6:-10 1523.67 19710
FFO#58 g1:+4 674.09 9760
FFO#59 g8:+64 1.08 5.57
合計4385.35[s](FFO55未測定) 合計ノード数:58645.71[Mn]
509310
2016/08/24(水) 10:40:19.04ID:GpcelPIW こちらも大バグを見つけて放心中です(汗
ミニバッチサイズごときで収束具合が大きく変わるのがおかしい点。
ミニバッチサイズを大きくすると、収束点がかなり規則的に減少していくように見える点。
この2点から、寝ながらデバッグしてたんですが、テストデータの件数で平均を出すべき
ところで、ミニバッチサイズで割っていた事に思い当りました。
で、修正して、行列の列数で割るようにしたのですが、今度は列数がリセットされていない
事が判明。どうもポインタ渡しで行列を渡した時に行数・列数が正しく引き継がれないよう
な現象のようです。
というわけで、一瞬大喜びしましたが、全くのやり直しとなりました。
ミニバッチサイズごときで収束具合が大きく変わるのがおかしい点。
ミニバッチサイズを大きくすると、収束点がかなり規則的に減少していくように見える点。
この2点から、寝ながらデバッグしてたんですが、テストデータの件数で平均を出すべき
ところで、ミニバッチサイズで割っていた事に思い当りました。
で、修正して、行列の列数で割るようにしたのですが、今度は列数がリセットされていない
事が判明。どうもポインタ渡しで行列を渡した時に行数・列数が正しく引き継がれないよう
な現象のようです。
というわけで、一瞬大喜びしましたが、全くのやり直しとなりました。
510460
2016/08/24(水) 14:56:52.40ID:Kkx6VEyM511460
2016/08/24(水) 22:16:05.70ID:elb1k4A2 FFO57をどうにかしようとチューニングをして、なんとかFFO57が1200秒台に縮まりました。
ある程度縮まったので、期待せずにもう一度全部を測定してみると
全体がかなり高速化されていて、FFO55がまさかの3774秒までに縮まりました!(奇跡)
とりあえずこれをオーダリングの暫定最終結果として、次は並列化に手を出してみようと思います。
まずはYBWCアルゴリズムの実装方法の検討から・・・
FFO#40 (a2:+38) 1.05s FFO#41 (h4: +0) 3.19s
FFO#42 (G2: +6) 2.55s FFO#43 (G3:-12) 7.82s
FFO#44 (D2:-14) 4.18s FFO#45 (b2: +6) 29.77s
FFO#46 (b3: -8) 6.99s FFO#47 (G2: +4) 3.10s
FFO#48 (F6:+28) 19.49s FFO#49 (e1:+16) 36.63s
FFO#50 (d8:+10) 128.15s FFO#51 (E2: +6) 50.46s
FFO#52 (a3:+0) 36.88s FFO#53 (d8:-2) 427.77s
FFO#54 (c7:-2) 730.26s FFO#55 (G6:+0) 3774.07s
FFO#56 (H2:+0) 185.22s FFO#57 (a6:-10) 1281.31s
FFO#58 (g1:+4) 556.86s FFO#59 (g8:+64) 1.08s
合計:7286.83[s]
ある程度縮まったので、期待せずにもう一度全部を測定してみると
全体がかなり高速化されていて、FFO55がまさかの3774秒までに縮まりました!(奇跡)
とりあえずこれをオーダリングの暫定最終結果として、次は並列化に手を出してみようと思います。
まずはYBWCアルゴリズムの実装方法の検討から・・・
FFO#40 (a2:+38) 1.05s FFO#41 (h4: +0) 3.19s
FFO#42 (G2: +6) 2.55s FFO#43 (G3:-12) 7.82s
FFO#44 (D2:-14) 4.18s FFO#45 (b2: +6) 29.77s
FFO#46 (b3: -8) 6.99s FFO#47 (G2: +4) 3.10s
FFO#48 (F6:+28) 19.49s FFO#49 (e1:+16) 36.63s
FFO#50 (d8:+10) 128.15s FFO#51 (E2: +6) 50.46s
FFO#52 (a3:+0) 36.88s FFO#53 (d8:-2) 427.77s
FFO#54 (c7:-2) 730.26s FFO#55 (G6:+0) 3774.07s
FFO#56 (H2:+0) 185.22s FFO#57 (a6:-10) 1281.31s
FFO#58 (g1:+4) 556.86s FFO#59 (g8:+64) 1.08s
合計:7286.83[s]
512310
2016/08/25(木) 00:17:23.06ID:ZE8G6YuY >>510
Eigen導入前のプログラムみたいにFFOの盤面渡して評価値見るようにしていれ
ば良かったのですが、あまりに収束しないので、収束の兆しが見えてからやろう
なんて放置していたのが失敗でした。あまりに急速に状況が改善していったので、
0.5石切るか知りたくなって、確認が後回しになってました。反省orz
ちなみに、列数がリセットされない問題も、原因がわかりました。
これも自分のミスというか、Eigenの使い方間違ってました。
Eigen便利すぎて、少なくとも行列演算部分に関してはバグフリーで、簡単に先に
進めちゃうので、細かいところがなおざりになっていたような感じです。
Eigen導入前のプログラムみたいにFFOの盤面渡して評価値見るようにしていれ
ば良かったのですが、あまりに収束しないので、収束の兆しが見えてからやろう
なんて放置していたのが失敗でした。あまりに急速に状況が改善していったので、
0.5石切るか知りたくなって、確認が後回しになってました。反省orz
ちなみに、列数がリセットされない問題も、原因がわかりました。
これも自分のミスというか、Eigenの使い方間違ってました。
Eigen便利すぎて、少なくとも行列演算部分に関してはバグフリーで、簡単に先に
進めちゃうので、細かいところがなおざりになっていたような感じです。
513460
2016/08/25(木) 11:20:22.96ID:PNQVZmVa そういえばFFOに夢中すぎて中盤の強さ評価を忘れていました。
現在は180万局の学習が終わっていますが、ゼブラ(24手読みBookなし中盤誤差なし)と黒と白で戦い、
それぞれ+8と-2という結果になりました。
完全にBook無しだと、白黒両方とも虎定石からのe3酉定石に分岐するため、
金魚や大量取りなどの主要な引き分けオープニングからの勝率を測定しようと思います。
あとHTML5版のMasterReversiレベル3とも対戦してみましたが、白黒両方とも-2という結果に…orz
Book構築方法もそのうち考えようと思います。
現在は180万局の学習が終わっていますが、ゼブラ(24手読みBookなし中盤誤差なし)と黒と白で戦い、
それぞれ+8と-2という結果になりました。
完全にBook無しだと、白黒両方とも虎定石からのe3酉定石に分岐するため、
金魚や大量取りなどの主要な引き分けオープニングからの勝率を測定しようと思います。
あとHTML5版のMasterReversiレベル3とも対戦してみましたが、白黒両方とも-2という結果に…orz
Book構築方法もそのうち考えようと思います。
514460
2016/08/27(土) 00:02:49.98ID:ct+QEGYU 学習プログラムのバグが怖くなって見直してたら超大バグを見つけました・・・
パターンモデルのうち、triangle(Thellが用いているモデル)だけが
局面出現数のカウントリセットされておらず延々と増え続けていましたw
あと同じ棋譜が結構あり、ダブった棋譜を全て除去すると180万局よりも10%程度減りそうです。
とりあえず除去中の150万局の棋譜でもう一度再学習します・・・orz
パターンモデルのうち、triangle(Thellが用いているモデル)だけが
局面出現数のカウントリセットされておらず延々と増え続けていましたw
あと同じ棋譜が結構あり、ダブった棋譜を全て除去すると180万局よりも10%程度減りそうです。
とりあえず除去中の150万局の棋譜でもう一度再学習します・・・orz
515460
2016/08/27(土) 13:15:04.86ID:ct+QEGYU 学習プログラムのバグを直して再学習させたWZebraとの対局結果ですが、芳しくないです。。
棋譜生成で次善手を選ぶ時、打った後の7手読み(対局が8手読みなので)評価値で全ての手をソートしてから
2番目を選んでいるのですが、評価誤差を全く気にせずに選んでいました。
最善手が+10でも次善手が-4とかいう局面も結構あるので、そういった誤差が大きい手を選んでしまうと棋譜の質が低下します。
なので、最善手と次善手との誤差が-2以下の場合のみ次善手を打つようにしました。
その代わり85%で1回打つという処理を単に5%で打つように変えています。
これでなんとか中盤が強くなればいいですが・・・
棋譜生成で次善手を選ぶ時、打った後の7手読み(対局が8手読みなので)評価値で全ての手をソートしてから
2番目を選んでいるのですが、評価誤差を全く気にせずに選んでいました。
最善手が+10でも次善手が-4とかいう局面も結構あるので、そういった誤差が大きい手を選んでしまうと棋譜の質が低下します。
なので、最善手と次善手との誤差が-2以下の場合のみ次善手を打つようにしました。
その代わり85%で1回打つという処理を単に5%で打つように変えています。
これでなんとか中盤が強くなればいいですが・・・
516460
2016/08/27(土) 13:18:13.50ID:ct+QEGYU WZebra24手読みBOOK無し評価誤差なしとの対局結果
ゼブラは評価誤差がEdaxやMasterReversiに比べて大きいので、本来負けちゃいけないんですよね。。
実際50万棋譜計画のやつで学習させた場合はほとんど勝っていました。(負けても-8とかはありえない)
牛定石[f5f6d6]
黒持ち:+2
白持ち:+0
酉フック[f5d6c3d3c4f4c5b3c2e3]
黒持ち:+8
白持ち:-8
金魚[f5d6c3d3c4f4c5b3c2e6]
黒持ち:-2
白持ち:+4
FJT[f5d6c3d3c4f4c5b3c2e6]
黒持ち:-4
白持ち:+2
コンポス[f5d6c3d3c4f4f6]
黒持ち:-2
白持ち:-6
ゼブラは評価誤差がEdaxやMasterReversiに比べて大きいので、本来負けちゃいけないんですよね。。
実際50万棋譜計画のやつで学習させた場合はほとんど勝っていました。(負けても-8とかはありえない)
牛定石[f5f6d6]
黒持ち:+2
白持ち:+0
酉フック[f5d6c3d3c4f4c5b3c2e3]
黒持ち:+8
白持ち:-8
金魚[f5d6c3d3c4f4c5b3c2e6]
黒持ち:-2
白持ち:+4
FJT[f5d6c3d3c4f4c5b3c2e6]
黒持ち:-4
白持ち:+2
コンポス[f5d6c3d3c4f4f6]
黒持ち:-2
白持ち:-6
517名前は開発中のものです。
2016/09/01(木) 22:33:13.77ID:PkLGbL4G マイナーゲームで良質の棋譜が大量にない場合、どうやって学習させればいいんだろう?
518名前は開発中のものです。
2016/09/02(金) 09:47:35.76ID:+DjGOwAN 事前学習じゃなくて、強化学習な手法を試したら良いのではないかな。
何をどうすれば良いのか、俺はわからんけど。
何をどうすれば良いのか、俺はわからんけど。
519名前は開発中のものです。
2016/09/03(土) 00:54:14.21ID:lICUKSF2 うおお線形回帰とか最小二乗化とかわかんねぇぇ
520名前は開発中のものです。
2016/09/03(土) 20:21:58.46ID:lICUKSF2 とりあえず自己対戦棋譜が1000局集まりそう。
まだ足りないかな?
ここからどう学習させればいいのか…
まだ足りないかな?
ここからどう学習させればいいのか…
521名前は開発中のものです。
2016/09/03(土) 21:00:16.00ID:DJdWXbUx 自分も機械学習とか興味あって細々作ってるけど、とても難しい
学習以外の部分も難しくて辛かったけど、学習はなかなか思い通りにするのに苦労する
とりあえずオンライン学習ってので、自分なりに色々やってみたけど
やっとちょっと上手くいき始めたかなってところ
ミスって学習やり直しとか何回もしてしまった
学習以外の部分も難しくて辛かったけど、学習はなかなか思い通りにするのに苦労する
とりあえずオンライン学習ってので、自分なりに色々やってみたけど
やっとちょっと上手くいき始めたかなってところ
ミスって学習やり直しとか何回もしてしまった
522名前は開発中のものです。
2016/09/03(土) 22:28:55.42ID:lICUKSF2 今ブラッドリーテリーのモデルとやらを調べてる
数式ムズイT△T
数式ムズイT△T
523460
2016/09/04(日) 01:59:20.91ID:f4dqEnZp >>520
オセロは今でこそ強いソフト同士の棋譜が手に入りますが、
初期は人が対局した棋譜(ISOなど)を残り十数手のみ修正して学習させていたようです。
マイナーゲームが何かによりますが、オセロみたく終盤で神のような読み切りが出来る場合は
自己対局の教師あり学習で適当なモデルでもかなり強くすることはできるかと思います。
オセロは今でこそ強いソフト同士の棋譜が手に入りますが、
初期は人が対局した棋譜(ISOなど)を残り十数手のみ修正して学習させていたようです。
マイナーゲームが何かによりますが、オセロみたく終盤で神のような読み切りが出来る場合は
自己対局の教師あり学習で適当なモデルでもかなり強くすることはできるかと思います。
525460
2016/09/04(日) 02:14:06.21ID:f4dqEnZp 自己対局中は暇なので、GUIの拡大縮小対応に手を出してみようと思ってドツボにはまりました。。
C#って描画ほんと遅いですね。。フルスクリーンにするとリスケールも含めて150msecぐらいかかります。
1024x768くらいだと50msecなのでギリギリ許容範囲内かなぁ。
あとGUIの実装に合わせて定石の変化度をツールバーから選べるよう実装していたのですが、
変化度を上げると着手時になぜか頻繁に落ちることが判明。
調べると、定石の木構造を作る処理に壮大なバグがあり、
30万近くある定石のうち1万くらいしか読み込めておらず、
リストも頻繁に上書きされてめちゃめちゃ状態でした。バグというか実装になっていないレベル。。
変化度を弄った時の処理をほとんどテストしなかった数年前の自分を殴りたい。。
かなり昔のコードなので、もう修正をあきらめて再設計して一新しているところです。
C#って描画ほんと遅いですね。。フルスクリーンにするとリスケールも含めて150msecぐらいかかります。
1024x768くらいだと50msecなのでギリギリ許容範囲内かなぁ。
あとGUIの実装に合わせて定石の変化度をツールバーから選べるよう実装していたのですが、
変化度を上げると着手時になぜか頻繁に落ちることが判明。
調べると、定石の木構造を作る処理に壮大なバグがあり、
30万近くある定石のうち1万くらいしか読み込めておらず、
リストも頻繁に上書きされてめちゃめちゃ状態でした。バグというか実装になっていないレベル。。
変化度を弄った時の処理をほとんどテストしなかった数年前の自分を殴りたい。。
かなり昔のコードなので、もう修正をあきらめて再設計して一新しているところです。
526310
2016/09/04(日) 17:00:43.77ID:WEaBeSKk 実際、開発中ってアドレナリン出てるから、ほとんどノーテストで行けるところまで
行っちゃって後で何やってるの俺?って事がしばしば(汗
というかここ数日も、非常につまらない確認漏れというか、毎回間違うswitch文でバグ
出しているのに気づかずに、これはメモリーリークか?それとも計算式が間違ったのか?
みたいな状態になっていました・・・。
さて、今いじってるディープラーニングの仕組みは、かなり汎用性持たせて作ってます。
あまりに収束具合が悪いので、試しに、Buroさんモデルにしてみました。1層の活性化
関数無しにして、入力プログラムを流用するだけなので簡単です。でも、なかなか収束
しない。そこで、過去にどこまで収束したのか、残ってるログを探したところ・・・実際、
同じような感じ(1σ=約3.5石)でした・・・つまり、なんかできてると言えばできているし
これで満足かといえば満足ではなしと。また、なまじデバッグでまじまじ評価値を見ちゃっ
たため、これで本当に使えてるのか?状態です。
で、ミイラ取りがミイラになって、ディープラーニングの学習係数の最適化手法とか、
学習効率向上の方法を色々実装してました。勾配ノイズなる手法も入れてみました。
一体自分はどこに向かっているのだろうって状態です。
行っちゃって後で何やってるの俺?って事がしばしば(汗
というかここ数日も、非常につまらない確認漏れというか、毎回間違うswitch文でバグ
出しているのに気づかずに、これはメモリーリークか?それとも計算式が間違ったのか?
みたいな状態になっていました・・・。
さて、今いじってるディープラーニングの仕組みは、かなり汎用性持たせて作ってます。
あまりに収束具合が悪いので、試しに、Buroさんモデルにしてみました。1層の活性化
関数無しにして、入力プログラムを流用するだけなので簡単です。でも、なかなか収束
しない。そこで、過去にどこまで収束したのか、残ってるログを探したところ・・・実際、
同じような感じ(1σ=約3.5石)でした・・・つまり、なんかできてると言えばできているし
これで満足かといえば満足ではなしと。また、なまじデバッグでまじまじ評価値を見ちゃっ
たため、これで本当に使えてるのか?状態です。
で、ミイラ取りがミイラになって、ディープラーニングの学習係数の最適化手法とか、
学習効率向上の方法を色々実装してました。勾配ノイズなる手法も入れてみました。
一体自分はどこに向かっているのだろうって状態です。
527460
2016/09/05(月) 19:53:28.81ID:5Av5ahUz そういえば散々オセロソフトを開発しておきながらネット対戦のオセロを一回もやった事ないなと思い・・・
やってみると案外勝ててしまいました。
この形は有利不利とかイメージだけで打っていましたが、、人間のパターン認識も結構優秀ってことですかねw
やってみると案外勝ててしまいました。
この形は有利不利とかイメージだけで打っていましたが、、人間のパターン認識も結構優秀ってことですかねw
528460
2016/09/05(月) 20:11:21.05ID:5Av5ahUz >>526
ディープランニングはやはりなかなか曲者のようですな。
こちらも終盤の評価値が悪いところはよく見えて良いところは悪く見えるという平均化が起こっていてやばいです・・・
まずは次善手の割合を調整したのでどうなることやら。。
というかもうランダム数手をやめて、引き分けオープニングからの棋譜生成を重点的にやった方がいいのか考え中です。
ディープランニングはやはりなかなか曲者のようですな。
こちらも終盤の評価値が悪いところはよく見えて良いところは悪く見えるという平均化が起こっていてやばいです・・・
まずは次善手の割合を調整したのでどうなることやら。。
というかもうランダム数手をやめて、引き分けオープニングからの棋譜生成を重点的にやった方がいいのか考え中です。
529名前は開発中のものです。
2016/09/05(月) 20:52:57.56ID:A3E5Chzv 学習始めたら速いPCが欲しくなってしまった
結果が出るまで時間掛かるなあ
結果が出るまで時間掛かるなあ
530310
2016/09/05(月) 22:33:11.28ID:KkVISbKe 上に書いた通り、線形回帰はディープラーニングに内包される計算手法ですので
(実際に最急降下法とバックプロパゲーション部分以外の計算式はほぼ同じ)、
学習率の設定にディープラーニングの最新の手法が使えるんじゃないかと思います。
学習率を外から与えるのではなく、初期値だけ与えて、後は誤差の具合を管理して
動的に変える。しかも、各重み毎に個別に学習率を変える。という発想です。
参考)
http://postd.cc/optimizing-gradient-descent/#gradientdescentoptimizationalgorithms
http://qiita.com/skitaoka/items/e6afbe238cd69c899b2a
※)数式で、ただの変数のように書いてますが、行列だったりベクトルだったり解読が必要です
自分はこの中で一番新しいSMORMS3を使用してみたところ、モーメンタム法の10倍
以上の速さ(学習回数)で収束するようになったと感覚的に感じています。大体30〜
50回も回せば収束してしまう感じです。実装&テストだけして確認していませんが、
AdamやRMSpropでもそん色ない程度には速くなると思います。
でも、早いPCで解決できるんなら、それに越した事はありませんねorz
(実際に最急降下法とバックプロパゲーション部分以外の計算式はほぼ同じ)、
学習率の設定にディープラーニングの最新の手法が使えるんじゃないかと思います。
学習率を外から与えるのではなく、初期値だけ与えて、後は誤差の具合を管理して
動的に変える。しかも、各重み毎に個別に学習率を変える。という発想です。
参考)
http://postd.cc/optimizing-gradient-descent/#gradientdescentoptimizationalgorithms
http://qiita.com/skitaoka/items/e6afbe238cd69c899b2a
※)数式で、ただの変数のように書いてますが、行列だったりベクトルだったり解読が必要です
自分はこの中で一番新しいSMORMS3を使用してみたところ、モーメンタム法の10倍
以上の速さ(学習回数)で収束するようになったと感覚的に感じています。大体30〜
50回も回せば収束してしまう感じです。実装&テストだけして確認していませんが、
AdamやRMSpropでもそん色ない程度には速くなると思います。
でも、早いPCで解決できるんなら、それに越した事はありませんねorz
531名前は開発中のものです。
2016/09/05(月) 22:36:42.16ID:omFelghI remi coulomの書いたMM法のコード見つけたが難しくて読めないorzorzorz
頑張って読むか
頑張って読むか
532310
2016/09/05(月) 22:41:44.52ID:KkVISbKe いかなディープラーニングでも評価関数をいきなり作るのは厳しい気がしてきてます。
ここはアルファ碁の学習の仕方にならって、最初は次の1手を学習させてみようかと。
で、今までは頭でわかったつもりになっていた、多クラス分類問題を調べてみると、
Softmax関数の微分(バックプロパゲーションで必要)がわからない事にあらためて
気が付きました。
幸い、Softmax関数の定義があるひな形プログラムがあったので、これから解読です。
人さまのプログラムを見ると、自分がいかにC++を知らないのか、思い知らされますorz
ここはアルファ碁の学習の仕方にならって、最初は次の1手を学習させてみようかと。
で、今までは頭でわかったつもりになっていた、多クラス分類問題を調べてみると、
Softmax関数の微分(バックプロパゲーションで必要)がわからない事にあらためて
気が付きました。
幸い、Softmax関数の定義があるひな形プログラムがあったので、これから解読です。
人さまのプログラムを見ると、自分がいかにC++を知らないのか、思い知らされますorz
533460
2016/09/07(水) 01:48:41.72ID:UfwPrMcb 自己対局ですが、8手読みの20マス空き完全読み設定だと、2日で大体20万局終わることが分かりました。
ここまで速いと10手読みの22マス空き読みにランクアップしてみたいところ。。
体感だと1/3くらい遅くなっているのですが、22マス空き読みだと偏りもひどくて、
1〜2日やってみないとなんとも言えない感じです。
2日で7万局程度終えられるなら、それでのんびりやろうかと思います。
ここまで速いと10手読みの22マス空き読みにランクアップしてみたいところ。。
体感だと1/3くらい遅くなっているのですが、22マス空き読みだと偏りもひどくて、
1〜2日やってみないとなんとも言えない感じです。
2日で7万局程度終えられるなら、それでのんびりやろうかと思います。
534460
2016/09/07(水) 03:02:28.63ID:UfwPrMcb 今しがた動かし中ですが、400局完了まで16〜17分でした。
1時間で1400局程度できそうなので、1か月で100万局くらい行けそうです。
とりあえずこのまま100万局集めようと思いますw
あと、初手ラムダムをやめて最悪手が数%程度で打つよう、評価値によって着手確率を調整しました。
最悪手の絶対値の1.2倍をそれぞれの評価値に加算した後の総和を使って
それぞれ加算した評価値を除算という古典的な方法ですが・・・
この方法だと絶対値が0に近いと悲惨な事が起こるので、絶対値は>=4にしています。
1時間で1400局程度できそうなので、1か月で100万局くらい行けそうです。
とりあえずこのまま100万局集めようと思いますw
あと、初手ラムダムをやめて最悪手が数%程度で打つよう、評価値によって着手確率を調整しました。
最悪手の絶対値の1.2倍をそれぞれの評価値に加算した後の総和を使って
それぞれ加算した評価値を除算という古典的な方法ですが・・・
この方法だと絶対値が0に近いと悲惨な事が起こるので、絶対値は>=4にしています。
535名前は開発中のものです。
2016/09/07(水) 23:27:08.71ID:4MEE20eO 誰かヘルプ!
このページのmm.tar.bz2の使い方わかる人いない?
http://www.remi-coulom.fr/Amsterdam2007/
makeしてexe作るところまではできたんだけど
README通りにmm.exe < input.dat > output.dat
ってやってもoutput.datが空ファイルにしかならない。
このページのmm.tar.bz2の使い方わかる人いない?
http://www.remi-coulom.fr/Amsterdam2007/
makeしてexe作るところまではできたんだけど
README通りにmm.exe < input.dat > output.dat
ってやってもoutput.datが空ファイルにしかならない。
536460
2016/09/07(水) 23:57:41.97ID:UfwPrMcb >>535
とりあえずmm.exe < input.datでコンソールに何が出てきてるか見た方が良いかも。
Cygwinでやるとこんなの出てきました。
$ ./mm < input.dat
..
Games = 2
Feature1 -0.89588 2.44949 0.0285792
Feature2 -0.867301 2.38048 0.15838
Feature2 -0.708921 2.0318 0.0737065
Feature2 -0.635214 1.88743 0.0358307
Feature2 -0.599384 1.821 0.0187057
・・・(略)・・・
0 1.49416
1 1.21426
2 0.586193
3 0.668003
4 2.13451
outputは下5行だけが出力されるみたいです。
とりあえずmm.exe < input.datでコンソールに何が出てきてるか見た方が良いかも。
Cygwinでやるとこんなの出てきました。
$ ./mm < input.dat
..
Games = 2
Feature1 -0.89588 2.44949 0.0285792
Feature2 -0.867301 2.38048 0.15838
Feature2 -0.708921 2.0318 0.0737065
Feature2 -0.635214 1.88743 0.0358307
Feature2 -0.599384 1.821 0.0187057
・・・(略)・・・
0 1.49416
1 1.21426
2 0.586193
3 0.668003
4 2.13451
outputは下5行だけが出力されるみたいです。
537535
2016/09/08(木) 00:10:42.63ID:/oQCQhP8538535
2016/09/08(木) 00:16:47.92ID:/oQCQhP8 すいません。
makefileからコンパイルオプションを取り除いたところ結果が出力されました。
-O3がダメなのかなぁ。
ともかく、ありがとうございました。
makefileからコンパイルオプションを取り除いたところ結果が出力されました。
-O3がダメなのかなぁ。
ともかく、ありがとうございました。
539460
2016/09/08(木) 00:21:28.75ID:LcwQkLYi >>537
input.datは全く編集せずにやりました。
Cygwin64bitだと動くのですが、環境によっては動かないんですかね・・・
gcc-5.4.0でビルドしましたが、コンパイラのバージョンの差異も原因かもです。
input.datは全く編集せずにやりました。
Cygwin64bitだと動くのですが、環境によっては動かないんですかね・・・
gcc-5.4.0でビルドしましたが、コンパイラのバージョンの差異も原因かもです。
541460
2016/09/10(土) 21:06:28.42ID:FA2ccDEd >>534の読みを深くさせた自己対局棋譜ですが、15万程度集まったので
無理やり学習してWZebraと対局させてみたところ、黒持ちで+12、白持ちで+2でした!
次善手や序盤ランダムの考慮と読みを深くした効果が現れてて安心しました。。100万達成した時の結果が楽しみです。
無理やり学習してWZebraと対局させてみたところ、黒持ちで+12、白持ちで+2でした!
次善手や序盤ランダムの考慮と読みを深くした効果が現れてて安心しました。。100万達成した時の結果が楽しみです。
542460
2016/09/11(日) 09:03:13.98ID:UepiTkRD ついにBOOKの読み込みとアルファベータによる手の選択を実装できました。
まだ最善しか着手できないので、誤差率によるランダム着手も実装しようと思います。
ゼブラのExtra-Bookをそのまま使っているので、ゆくゆくは自力で構築できるシステムを
考えたいところ。。
まだ最善しか着手できないので、誤差率によるランダム着手も実装しようと思います。
ゼブラのExtra-Bookをそのまま使っているので、ゆくゆくは自力で構築できるシステムを
考えたいところ。。
543名前は開発中のものです。
2016/09/11(日) 11:41:57.36ID:dMHrH3w2 >>542
やっぱり最終目標は完全解析なんですか?
やっぱり最終目標は完全解析なんですか?
544460
2016/09/11(日) 15:25:12.97ID:UepiTkRD >>543
いえ、さすがにそこまでは・・・w
Edaxの作者が完全解析を先行してやってるみたいですし、そこは任せようかなと。
最終的にEdaxやMasterReversiと同等の評価関数やBOOKを作成できるレベルまで持っていきたいです。
いえ、さすがにそこまでは・・・w
Edaxの作者が完全解析を先行してやってるみたいですし、そこは任せようかなと。
最終的にEdaxやMasterReversiと同等の評価関数やBOOKを作成できるレベルまで持っていきたいです。
545535
2016/09/12(月) 21:36:16.05ID:vkOlNla9 >>535です。
<number of gammas for this feature>というのがよくわからん。
とりあえず1にしとけばOKみたいな?
input.dat色々いじってみたけど確かにそれっぽい値はに出る。
<number of gammas for this feature>というのがよくわからん。
とりあえず1にしとけばOKみたいな?
input.dat色々いじってみたけど確かにそれっぽい値はに出る。
546310
2016/09/12(月) 22:52:49.52ID:5hD0Gf9W547535
2016/09/12(月) 22:58:52.81ID:vkOlNla9548535
2016/09/14(水) 22:57:07.95ID:lQtAf6dT 本番のデータ使うと結果が表示されないorz
入力ファイルの形式なんか間違ってるんだろうけど
何間違ってるのかわからんorz
入力ファイルの形式なんか間違ってるんだろうけど
何間違ってるのかわからんorz
549535
2016/09/15(木) 21:47:58.41ID:NUOEmvbB もしかして万が一だけど同じフィーチャーに属するガンマは同じチームになれないとかあるのか?
550535
2016/09/15(木) 23:35:36.05ID:NUOEmvbB うお〜わかんねぇぇぇ
コード熟読しかないのか?
厳しいぃぃぃ
コード熟読しかないのか?
厳しいぃぃぃ
551310
2016/09/16(金) 00:03:09.94ID:44uFy3HE featureってコンピュータの世界では、機能を意味するよね。
あと、もう一度読み返すと、γが複数形になってるので、
γの数であってγの値ではなさそう。
「この機能で使用するγの数」となるけど・・・
これだけだと正直なんのこっちゃだねw
この機能が何を表すかどこかに書いてないの?
あと、もう一度読み返すと、γが複数形になってるので、
γの数であってγの値ではなさそう。
「この機能で使用するγの数」となるけど・・・
これだけだと正直なんのこっちゃだねw
この機能が何を表すかどこかに書いてないの?
552名前は開発中のものです。
2016/09/16(金) 07:31:01.43ID:mrye4Vvn もう一年くらい将棋をちまちま作ってるけど、なかなか強くならないな
最近ようやくアマ高段くらいには行った感じだ
ランダムでただ指すところから始めて、先人の歴史を全部なぞるようにプログラムして来た
みんなはゲームは違うだろうけど、もうその筋ではかなり強いレベルなの?
最近ようやくアマ高段くらいには行った感じだ
ランダムでただ指すところから始めて、先人の歴史を全部なぞるようにプログラムして来た
みんなはゲームは違うだろうけど、もうその筋ではかなり強いレベルなの?
553460
2016/09/16(金) 13:50:57.59ID:gJ0b6G2+ 自己対局での棋譜生成ですが、10手読みだとまだまだ精度が落ちるようで、思いきって中盤16手読みの24手読みにしてみたところ…10分で35局…w
今日は出勤時間がせまっていたのもありこのままで生成していますが、
中盤14手読みか12手読み、22マス空き完全読みにした方が良さそうです。
ああ、PC10台くらい並べて棋譜生成したい…
今日は出勤時間がせまっていたのもありこのままで生成していますが、
中盤14手読みか12手読み、22マス空き完全読みにした方が良さそうです。
ああ、PC10台くらい並べて棋譜生成したい…
555名前は開発中のものです。
2016/09/16(金) 21:22:13.05ID:l6ih+FVI556535
2016/09/16(金) 22:26:17.01ID:l6ih+FVI 囲碁の手の特徴にパス、トリ、伸び、自己当たり、当たり、
盤端との距離、直前の手との距離、2手前の手との距離、モンテカルロオーナー
などがあると書かれている。
feature=特徴?
盤端との距離、直前の手との距離、2手前の手との距離、モンテカルロオーナー
などがあると書かれている。
feature=特徴?
557名前は開発中のものです。
2016/09/17(土) 22:31:21.85ID:mQ7ypIPZ 下がりすぎ
上げるぜ
上げるぜ
558460
2016/09/18(日) 02:39:21.57ID:6855FAgd オセロオンラインというアプリに付属されている真・HAYABUSAと対戦してみました。
どうも定石がかなり充実しているようで、普通にやってると
こちら側が記憶していないドロー進行に分岐されて負けます。。
しょうがないので野兎とか序盤から不利な定石に分岐して評価関数の勝負に入らせると、案外勝てましたw
評価チューニングがEdaxなどに比べると結構甘いようです。
とはいえ国産アプリでここまでチューニングされているとは思わなかったので驚いています。
どうも定石がかなり充実しているようで、普通にやってると
こちら側が記憶していないドロー進行に分岐されて負けます。。
しょうがないので野兎とか序盤から不利な定石に分岐して評価関数の勝負に入らせると、案外勝てましたw
評価チューニングがEdaxなどに比べると結構甘いようです。
とはいえ国産アプリでここまでチューニングされているとは思わなかったので驚いています。
559名前は開発中のものです。
2016/09/18(日) 09:21:43.32ID:u+E0nELs おめでとうございます
ひょっとして物足りないと感じましたか?
それなら次は
PREMIUM・HAYABUSA に挑戦してみませんか?
いまなら特別キャンペーン中につき(ry
ひょっとして物足りないと感じましたか?
それなら次は
PREMIUM・HAYABUSA に挑戦してみませんか?
いまなら特別キャンペーン中につき(ry
560535
2016/09/21(水) 00:02:39.39ID:DjDR9tnr すいませんが誰か俺のデータを>>535のmm.exeにかけてみてくれませんか?
まじで何が悪いのかさっぱりわからん。
環境の問題かも?
http://thuploader.orz.hm/uploader/
のmy_input.zipが俺のデータです。
だれか親切な方よろしくお願いします。
まじで何が悪いのかさっぱりわからん。
環境の問題かも?
http://thuploader.orz.hm/uploader/
のmy_input.zipが俺のデータです。
だれか親切な方よろしくお願いします。
561310
2016/09/21(水) 01:01:30.09ID:CFP8O8Vn >>558
http://www.slideshare.net/uenokazu/20130906-hayabusa
これですね。色々AIの特徴を説明してますが、まあLogistelloの
日本語解説みたいな感じで、皆さんのAIもほぼ同じ構造かなと
思います。
テレビ番組企画でEdaxと良い勝負するAIを短期間で開発したという
のが開発経緯らしいので、恐らくEdaxをたたき台にして定石DBの
学習をしていると思います。
つまり、Edaxよりちょこっとだけ強ければよいと割り切った目標をたて、
目標がはっきりしている分、手間をかける箇所を、定石DBの対局学習に
集中したって感じだと思います。想像ですが。
で、これ読んだ時に、オセロAIの強さって結局は定石DBじゃんと、
結構真剣に思いまして・・・。まあ、それゆえ、オセロAIの開発者の多くが
ドロー進行のリストアップに走ってしまったのかなぁと。
http://www.slideshare.net/uenokazu/20130906-hayabusa
これですね。色々AIの特徴を説明してますが、まあLogistelloの
日本語解説みたいな感じで、皆さんのAIもほぼ同じ構造かなと
思います。
テレビ番組企画でEdaxと良い勝負するAIを短期間で開発したという
のが開発経緯らしいので、恐らくEdaxをたたき台にして定石DBの
学習をしていると思います。
つまり、Edaxよりちょこっとだけ強ければよいと割り切った目標をたて、
目標がはっきりしている分、手間をかける箇所を、定石DBの対局学習に
集中したって感じだと思います。想像ですが。
で、これ読んだ時に、オセロAIの強さって結局は定石DBじゃんと、
結構真剣に思いまして・・・。まあ、それゆえ、オセロAIの開発者の多くが
ドロー進行のリストアップに走ってしまったのかなぁと。
562535
2016/09/21(水) 20:18:28.81ID:DjDR9tnr 環境が悪いのかと思い押し入れからノートPCを引っ張り出して走らせてみたところ
計算結果がNaNになってるっぽい。
駄目なのか?うーむ。
計算結果がNaNになってるっぽい。
駄目なのか?うーむ。
563460
2016/09/22(木) 13:08:07.84ID:aLXK2a2e >>561
ほとんど考えずに打ってくるので、もしやと思い定石からわざと外してみたらいきなり10秒超の長考でした・・・w
本当にBOOKの精度がEdaxよりちょっと良いのでしょうね(逆に言うとそれだけ)
開発期間が短期間って制限があったらしいので、しょうがないのでしょうけどもったいない気もします。
ほとんど考えずに打ってくるので、もしやと思い定石からわざと外してみたらいきなり10秒超の長考でした・・・w
本当にBOOKの精度がEdaxよりちょっと良いのでしょうね(逆に言うとそれだけ)
開発期間が短期間って制限があったらしいので、しょうがないのでしょうけどもったいない気もします。
564310
2016/09/22(木) 20:43:51.38ID:esximYO0 BOOK学習ってあんまり実装例見ないので、その点は評価しても良いかなと。
Buroさんの論文はあるので、自分もいずれは実装しようと思っています。
が、BOOK学習で、別のオセロプログラムとひたすら対局学習させると、そのプログラム
相手限定ならほぼ負けないBOOKが得られるんです。
EdaxのBookは引き分け進行のリストアップで、そこに記載されていない分岐は、基本は
分岐した方が負けるはずなのですが、分岐後は純粋に評価関数の読みの勝負になるの
で、いかなEdaxでも間違える事があります。で、勝った手順、負けた手順をリストアップし
ていき、負けたら勝つ手順が見つかるまで、ランダムな手番で別の分岐を探していく。
Edax側がBOOK学習をオフにすれば、間違えた箇所は何度対局しても同じ間違いをする
ので、勝った手順になれば勝ちは確定し、負け手順は自分は打たないようになっていく。
要するに、そのプログラムの弱点を学習する事になるので、勝率が上がっていく。
EdaxのBookより精度が良いというのとはちょっと違う気がします。
とはいえ、Edaxとかの引分進行リストをパクっても意味が無いし、限られた時間で、パソコン
ぶん回して引分進行を発見していっても、間に合わないしで、これしかやりようがないんだ
とは思います。
実はこれに気が付いた時、BOOK学習+乱数着手(打たない箇所がない)で、自己対局を
延々と続けていくと、究極のBOOKができるんじゃないかと妄想してしまいましたが、よくよく
考えたら、それって全手順リストアップというか、完全解析大差ない事に気が付きました(汗
Buroさんの論文はあるので、自分もいずれは実装しようと思っています。
が、BOOK学習で、別のオセロプログラムとひたすら対局学習させると、そのプログラム
相手限定ならほぼ負けないBOOKが得られるんです。
EdaxのBookは引き分け進行のリストアップで、そこに記載されていない分岐は、基本は
分岐した方が負けるはずなのですが、分岐後は純粋に評価関数の読みの勝負になるの
で、いかなEdaxでも間違える事があります。で、勝った手順、負けた手順をリストアップし
ていき、負けたら勝つ手順が見つかるまで、ランダムな手番で別の分岐を探していく。
Edax側がBOOK学習をオフにすれば、間違えた箇所は何度対局しても同じ間違いをする
ので、勝った手順になれば勝ちは確定し、負け手順は自分は打たないようになっていく。
要するに、そのプログラムの弱点を学習する事になるので、勝率が上がっていく。
EdaxのBookより精度が良いというのとはちょっと違う気がします。
とはいえ、Edaxとかの引分進行リストをパクっても意味が無いし、限られた時間で、パソコン
ぶん回して引分進行を発見していっても、間に合わないしで、これしかやりようがないんだ
とは思います。
実はこれに気が付いた時、BOOK学習+乱数着手(打たない箇所がない)で、自己対局を
延々と続けていくと、究極のBOOKができるんじゃないかと妄想してしまいましたが、よくよく
考えたら、それって全手順リストアップというか、完全解析大差ない事に気が付きました(汗
565535
2016/09/22(木) 21:29:54.82ID:kzrJOomn RemiさんのMM法諦めるしかないのかなぁ
他の学習方法探すか…
他の学習方法探すか…
566535
2016/09/27(火) 23:07:26.38ID:AU3JIk+S いまいち手ごろな強化学習が見つからなかったので
モンテカルロ木探索をパターンに応用することにした。
モンテカルロ木探索をパターンに応用することにした。
567535
2016/09/28(水) 22:21:31.56ID:DgDU0GF3 とりあえずConnect 4のAI書いてるんだけどまあまあ強くなってきた。
Connect 4は完全ソルバが公開されてるので
先手でこれに一発入れるのが当面の目標。
Connect 4 完全ソルバ
http://connect4.gamesolver.org/?pos=
Connect 4は完全ソルバが公開されてるので
先手でこれに一発入れるのが当面の目標。
Connect 4 完全ソルバ
http://connect4.gamesolver.org/?pos=
568535
2016/09/29(木) 20:34:59.17ID:1GHOMTNV 評価関数の基になるパターンが悪いせいで
一生学習しても完全ソルバに勝てない気がしてきました。
一生学習しても完全ソルバに勝てない気がしてきました。
569535
2016/09/29(木) 21:12:02.15ID:1GHOMTNV まあ、Connect 4は習作なので一定の成果が確認できたということで一旦休止します。
これから本番のゲームに着手します。
できたConnect 4のexeをアップしてみます。
http://fast-uploader.com/file/7030706137212/
Connect 4の経験がない人にはかなり強く感じるはずです。
遊んでみてください。
これから本番のゲームに着手します。
できたConnect 4のexeをアップしてみます。
http://fast-uploader.com/file/7030706137212/
Connect 4の経験がない人にはかなり強く感じるはずです。
遊んでみてください。
570535
2016/09/30(金) 22:44:03.81ID:Ol1OvzoR 人為的なパターンを評価関数の基礎においてると
幾ら学習しても完全解析にたどり着かない可能性があるよね?
十分学習すれば完全解析にたどり着くと保証できる
出来るだけ効率の良いパターンセットてのは
なんとか数学的に割り出せないだろうか。
幾ら学習しても完全解析にたどり着かない可能性があるよね?
十分学習すれば完全解析にたどり着くと保証できる
出来るだけ効率の良いパターンセットてのは
なんとか数学的に割り出せないだろうか。
571460
2016/10/01(土) 15:19:39.34ID:NwASWJgd >>570
オセロしか開発したことがないのですが、connect4のノード数だと4兆程度だと聞きました。
オセロよりも合法手生成が簡単かつ常に7つなので、相当早い段階から完全読み出来そうです。
現在のAI同士を戦わせて数千から1万局程度の棋譜を作成すれば、
簡単なモデル(縦横斜めだけとか)でほぼ完ぺきな評価関数が線形回帰で
出来そうな気がするのですが、どうでしょうか。
オセロしか開発したことがないのですが、connect4のノード数だと4兆程度だと聞きました。
オセロよりも合法手生成が簡単かつ常に7つなので、相当早い段階から完全読み出来そうです。
現在のAI同士を戦わせて数千から1万局程度の棋譜を作成すれば、
簡単なモデル(縦横斜めだけとか)でほぼ完ぺきな評価関数が線形回帰で
出来そうな気がするのですが、どうでしょうか。
572535
2016/10/01(土) 16:21:13.92ID:UW3pMcrq573535
2016/10/01(土) 22:20:23.15ID:UW3pMcrq ちょっと思いついたんで、縦横斜めのパターンに加えて、
盤面の空マスの情報をパターンに加えて再学習させてみます。
もしかしてこれなら完全ソルバに一発入るかも?
盤面の空マスの情報をパターンに加えて再学習させてみます。
もしかしてこれなら完全ソルバに一発入るかも?
574460
2016/10/02(日) 00:33:37.72ID:jNeryq9p575535
2016/10/02(日) 00:38:22.45ID:8lzQrfNi レスありがとうございます。
オセロでも20手も読めるのか!
Connect 4ならもっと読めないとダメですね〜
線形回帰はちょっと調べてみます。
オセロでも20手も読めるのか!
Connect 4ならもっと読めないとダメですね〜
線形回帰はちょっと調べてみます。
576名前は開発中のものです。
2016/10/02(日) 01:27:36.48ID:8lzQrfNi 完全読みかなり厳しいorz
なぜオセロは20手も読めるんだろう?
よほど実装がいいのか?
なぜオセロは20手も読めるんだろう?
よほど実装がいいのか?
577460
2016/10/02(日) 04:03:56.40ID:jNeryq9p >>576
オーダリングはしてますか?オーダリング無しだと20手は厳しいと思います。
オセロは最後あたりだと数マスしか無くなるので合法手が1手しかないとかも頻出するのですが
connect4は最後まで7つあるので、20手はちょっと難しいかもですね。。
オーダリングはしてますか?オーダリング無しだと20手は厳しいと思います。
オセロは最後あたりだと数マスしか無くなるので合法手が1手しかないとかも頻出するのですが
connect4は最後まで7つあるので、20手はちょっと難しいかもですね。。
578名前は開発中のものです。
2016/10/02(日) 18:53:33.45ID:8lzQrfNi すいません。
オーダリングとはよさそうな枝を先に読むってことでしたっけ?
なぜそれで計算量が削減できるんでしたっけ?
最終的に全部読むなら結局同じのような…
素人考えですが。
オーダリングとはよさそうな枝を先に読むってことでしたっけ?
なぜそれで計算量が削減できるんでしたっけ?
最終的に全部読むなら結局同じのような…
素人考えですが。
579名前は開発中のものです。
2016/10/02(日) 19:09:19.16ID:8lzQrfNi 完全ソルバと対戦させると誤った学習をしてしまってるように見えます。
悪い手を良い手と思ってる。
うーん。
学習量が足りないだけなんだろうか?
悪い手を良い手と思ってる。
うーん。
学習量が足りないだけなんだろうか?
580310
2016/10/02(日) 20:32:53.90ID:n86BxDyi >>578
αβ刈りしているでしょ。
最初に読んだ手でα値が最高値になる。
次の手を1段読んだ時、それを超える手が出ないので、全ての手がβカットの対象となる。
本当に一番良い手を選べるんなら、そもそも読む必要がないけど、何らかのヒューリスティック
な基準でよさそうな手から読むと、それが正解だった時に、βカットが大量発生して、実際に
読む事になるノード数が激減する。
αβ刈りみたいな方法は、後ろ向き枝刈と言って、完全読み切りに必要が無い手を読まずに
済ます手法。
αβ刈りしているでしょ。
最初に読んだ手でα値が最高値になる。
次の手を1段読んだ時、それを超える手が出ないので、全ての手がβカットの対象となる。
本当に一番良い手を選べるんなら、そもそも読む必要がないけど、何らかのヒューリスティック
な基準でよさそうな手から読むと、それが正解だった時に、βカットが大量発生して、実際に
読む事になるノード数が激減する。
αβ刈りみたいな方法は、後ろ向き枝刈と言って、完全読み切りに必要が無い手を読まずに
済ます手法。
581名前は開発中のものです。
2016/10/02(日) 20:59:00.22ID:8lzQrfNi レスありがとうございます。
αβですか〜。
実はあれ、私、理解してないんですよね。
説明読むとなんとなくわかった気になるんですけど
いまだ実装できたことない。orz
MinMaxなら実装できるんですけどね。
αβですか〜。
実はあれ、私、理解してないんですよね。
説明読むとなんとなくわかった気になるんですけど
いまだ実装できたことない。orz
MinMaxなら実装できるんですけどね。
582名前は開発中のものです。
2016/10/02(日) 21:29:32.92ID:8lzQrfNi αβが最高に上手く働けばMinMaxの倍の深さ読めるんでしたっけ?
それなら20手行けそうですね。
それなら20手行けそうですね。
583535
2016/10/03(月) 00:03:31.42ID:5qtC3pHr 完全ソルバでいろいろ試してるんですが、
Connect 4って思ったよりずっと底の浅いゲームのような気がしてきましたw
□□□□□□□
□□□○□□□
□○□●□○□
□●□○□●□
□○□●□○□
□●□○□●□
この配石が必勝法の骨格のようです。
ここさえ押さえればあとは自動的に勝つる。
Connect 4って思ったよりずっと底の浅いゲームのような気がしてきましたw
□□□□□□□
□□□○□□□
□○□●□○□
□●□○□●□
□○□●□○□
□●□○□●□
この配石が必勝法の骨格のようです。
ここさえ押さえればあとは自動的に勝つる。
584310
2016/10/03(月) 01:55:16.80ID:alBluDZI >>582
深さはなんとも言えないけど、オセロで言えば、αβだけでノード数は1/100くらいに
なるってどこかのサイトに出ていたかな。1/100だとアバウト2〜4手くらい深く読めるはず。
置ける箇所が結構絞られるゲームなので置換表入れたら更にいけるかもしれない。
あとはビットマップの実装だね。
ゲームの規模的には(ネットチラ見だけど7兆パターンって書いてあった)完全解析を
ターゲットにしても良い気がする。軽はずみ発言だけど。
深さはなんとも言えないけど、オセロで言えば、αβだけでノード数は1/100くらいに
なるってどこかのサイトに出ていたかな。1/100だとアバウト2〜4手くらい深く読めるはず。
置ける箇所が結構絞られるゲームなので置換表入れたら更にいけるかもしれない。
あとはビットマップの実装だね。
ゲームの規模的には(ネットチラ見だけど7兆パターンって書いてあった)完全解析を
ターゲットにしても良い気がする。軽はずみ発言だけど。
585310
2016/10/03(月) 02:02:27.60ID:alBluDZI ちなみに。当方、Sparse正則化付AutoEncoderの実装に不安が付きまとった挙句、
MNISTという手書き数字認識のテストで動作確認をするという遠回りな事をしてます。
というか、何をしたら認識率改善するのかという事を考えて、色々といじって時間を
食ってました。
結果、オセロの方が盤面は狭いけど、良く現れる状態の数と、その特徴の複雑性が
圧倒的に違うので、やはり畳み込みのような、盤面の特徴の解釈の仕方を外から
与える方向に行く必要がありそうだという事になりました。
いままでも薄々気づいていたんですが。
ただ、画像解析や囲碁のように隣接するノードとの関係性からスタートしても意味がなさ
そうなので、その辺の工夫をしてみようと思っています。
MNISTという手書き数字認識のテストで動作確認をするという遠回りな事をしてます。
というか、何をしたら認識率改善するのかという事を考えて、色々といじって時間を
食ってました。
結果、オセロの方が盤面は狭いけど、良く現れる状態の数と、その特徴の複雑性が
圧倒的に違うので、やはり畳み込みのような、盤面の特徴の解釈の仕方を外から
与える方向に行く必要がありそうだという事になりました。
いままでも薄々気づいていたんですが。
ただ、画像解析や囲碁のように隣接するノードとの関係性からスタートしても意味がなさ
そうなので、その辺の工夫をしてみようと思っています。
586535
2016/10/03(月) 22:00:29.42ID:5qtC3pHr 完全解析はできるに越したことはないですが、
Connect 4やってるのは勉強の意味あいが強いので
Connect 4以外では通用しないようなヒューリスティックで強くなるのは
出来るだけ避けたいです。
理想的には汎用的な手法で完全解析レベルまでもっていきたいですね。
αβもそろそろ片づけなければいけない宿題ですね。
Connect 4やってるのは勉強の意味あいが強いので
Connect 4以外では通用しないようなヒューリスティックで強くなるのは
出来るだけ避けたいです。
理想的には汎用的な手法で完全解析レベルまでもっていきたいですね。
αβもそろそろ片づけなければいけない宿題ですね。
587460
2016/10/04(火) 00:53:57.08ID:OTRn7xTU コネクト4、軽く実装してみましたが(ほとんどオセロの流用)
単純アルファベータ、置換無しオーダリング無し、
評価関数が連続している数だけ考慮・・・だと8手涛ヌみは一瞬ですbェ、12手読みはbキでにきついでbキね。。
末セ日評価関数を給lめてみてとりbえず8手読みで535さんのAIと対戦してみる予定ですw
単純アルファベータ、置換無しオーダリング無し、
評価関数が連続している数だけ考慮・・・だと8手涛ヌみは一瞬ですbェ、12手読みはbキでにきついでbキね。。
末セ日評価関数を給lめてみてとりbえず8手読みで535さんのAIと対戦してみる予定ですw
588535
2016/10/04(火) 21:18:36.22ID:dRd+Ucp+ おお!楽しみですね。
ありがとうございます。
工夫無しの8手読みなら勝ちたいですねw
ちなみに私のAIは結構思考時間が長いのでw
統計といえるほどの試合数はこなせないと思いますが期待しちゃいます。
よろしくお願いします。
ありがとうございます。
工夫無しの8手読みなら勝ちたいですねw
ちなみに私のAIは結構思考時間が長いのでw
統計といえるほどの試合数はこなせないと思いますが期待しちゃいます。
よろしくお願いします。
590460
2016/10/05(水) 11:21:34.44ID:WWXbBFqc オセロは大体やることはやったので、そろそろ将棋か囲碁に着手してみようかと思っています。
ルールの実装が楽なのは囲碁なのかな…
自身が囲碁を打ったことがないのでルールから調べないとですがw
ルールの実装が楽なのは囲碁なのかな…
自身が囲碁を打ったことがないのでルールから調べないとですがw
591310
2016/10/05(水) 12:08:04.26ID:Iif/OHnc やっぱ囲碁行きたいですよね。
昔調べた感じでは、日本ルールと中国ルールで勝敗の判定が微妙に違って、日本
ルールだと曖昧なところがあるので、AI開発は中国ルールでしているみたいです。
ルールの実装は着手禁止点が少なくて拍子抜けするくらいですが、その先が・・・
色々と一筋縄ではいかないようです。
オセロの評価関数ですが、AutoEncoderの限界を感じ、DCNNの実装を始めていますが、
バックプロパゲーションがスパゲッティでわけわからん状態になっています。しばらくは
紙と鉛筆で考える必要がありそうです。DCNNがある程度できたら、僕も囲碁に行って
みようかな。
その前にConnect4に脱線してみたい気も(汗
昔調べた感じでは、日本ルールと中国ルールで勝敗の判定が微妙に違って、日本
ルールだと曖昧なところがあるので、AI開発は中国ルールでしているみたいです。
ルールの実装は着手禁止点が少なくて拍子抜けするくらいですが、その先が・・・
色々と一筋縄ではいかないようです。
オセロの評価関数ですが、AutoEncoderの限界を感じ、DCNNの実装を始めていますが、
バックプロパゲーションがスパゲッティでわけわからん状態になっています。しばらくは
紙と鉛筆で考える必要がありそうです。DCNNがある程度できたら、僕も囲碁に行って
みようかな。
その前にConnect4に脱線してみたい気も(汗
593535
2016/10/05(水) 19:48:59.89ID:KcSrUkxH596名前は開発中のものです。
2016/10/05(水) 22:05:36.36ID:KcSrUkxH まあ、こんな過疎スレでわざわざ嘘をついて騙るひともいない気もしますが…
597名前は開発中のものです。
2016/10/05(水) 22:31:22.88ID:KcSrUkxH598460
2016/10/06(木) 20:28:59.44ID:1mBat3Ee 460の名前があるものは偽物ではないので大丈夫です・・・
コテ付けた方がいいかもですけど、まぁこの人数ですし、そこまでする必要もないかなと思いますー
囲碁ですが、ネットから集めた棋譜をざっと見てみましたが、投了がほとんどなんですね・・・
中押し勝ち?はて・・・?となって調べるくらいルールを理解していないという;;
投了だとするとロジスティック回帰でないとあんまり良い精度は出なさそう・・・?
というより一般的な機械学習のアプローチで良いのかも微妙ですね。
やはりディープランニングなのでしょうか。。。腰が引けますw
コテ付けた方がいいかもですけど、まぁこの人数ですし、そこまでする必要もないかなと思いますー
囲碁ですが、ネットから集めた棋譜をざっと見てみましたが、投了がほとんどなんですね・・・
中押し勝ち?はて・・・?となって調べるくらいルールを理解していないという;;
投了だとするとロジスティック回帰でないとあんまり良い精度は出なさそう・・・?
というより一般的な機械学習のアプローチで良いのかも微妙ですね。
やはりディープランニングなのでしょうか。。。腰が引けますw
600310
2016/10/06(木) 22:11:43.15ID:2nbHwrUk >>598
投了は将棋用語で「参った」です。むしろ中押し勝ちと同じ意味です(汗
将棋の場合、詰まれるまで粘る事はみっともないこととされているので、
入玉とか千日手、反則負けなどの特殊なケースを除けば全て投了です。
囲碁は、逆に終局まで打つ事があって、「数え碁」と呼ぶみたいです。
この間のアルファ碁vsセドルの試合見て覚えました(笑)
オセロのように必ず最後まで打って、得点差がはっきりと出るゲームの
方が珍しいのかも知れません。
オセロみたいなmin-Max+評価関数は既にダメ認定されてます。
アルファ碁までは、MTCS(モンテカルロツリーサーチ)が主流で、
モンテカルロ系には評価関数はありません。着手順決定のための
ヒューリスティックが大事になります。
アルファ碁の登場で、一気にディープラーニングにシフトしていますが、
基本骨格はMTCSです。着手順のヒューリスティックに「次の1手を返す
DCNN」と、評価値たるモンテカルロの勝率に、補助的に「勝率を返す
評価関数としてのDCNN」を組み合わせているようです。
投了は将棋用語で「参った」です。むしろ中押し勝ちと同じ意味です(汗
将棋の場合、詰まれるまで粘る事はみっともないこととされているので、
入玉とか千日手、反則負けなどの特殊なケースを除けば全て投了です。
囲碁は、逆に終局まで打つ事があって、「数え碁」と呼ぶみたいです。
この間のアルファ碁vsセドルの試合見て覚えました(笑)
オセロのように必ず最後まで打って、得点差がはっきりと出るゲームの
方が珍しいのかも知れません。
オセロみたいなmin-Max+評価関数は既にダメ認定されてます。
アルファ碁までは、MTCS(モンテカルロツリーサーチ)が主流で、
モンテカルロ系には評価関数はありません。着手順決定のための
ヒューリスティックが大事になります。
アルファ碁の登場で、一気にディープラーニングにシフトしていますが、
基本骨格はMTCSです。着手順のヒューリスティックに「次の1手を返す
DCNN」と、評価値たるモンテカルロの勝率に、補助的に「勝率を返す
評価関数としてのDCNN」を組み合わせているようです。
601310
2016/10/08(土) 22:22:06.53ID:wBSLMo4h あ、MTCSじゃねー。MCTSだ。
>>600書きながら、Q-Learningなるものの存在を思い出して、調べ始めたら、
やっぱりDQN(ブロック崩しで有名になった奴)はQ-Learning+DeepLearning
だった。
興味津々だけど、どんどん発散しちゃうなぁ。
>>600書きながら、Q-Learningなるものの存在を思い出して、調べ始めたら、
やっぱりDQN(ブロック崩しで有名になった奴)はQ-Learning+DeepLearning
だった。
興味津々だけど、どんどん発散しちゃうなぁ。
602535
2016/10/10(月) 19:51:24.57ID:WonRpXhk なんかモチベーションあがらんなぁ
三連休まるまるさぼってしまった。
三連休まるまるさぼってしまった。
603名前は開発中のものです。
2016/10/10(月) 22:22:05.27ID:WonRpXhk 将棋電王戦あったみたいですね。
604名前は開発中のものです。
2016/10/10(月) 22:38:31.22ID:WonRpXhk 優勝はポナンザか。
一発勝負のトーナメントなのに強え。
一発勝負のトーナメントなのに強え。
605名前は開発中のものです。
2016/10/10(月) 23:10:57.87ID:WonRpXhk ん?
一発勝負じゃないのか?
一発勝負じゃないのか?
606310
2016/10/13(木) 11:06:43.08ID:f6Nd8WJL ここ数日、気分転換でConnect4やってました。
ビットマップ方式の置換表付αβのオーダリング無し。リーチ状態のみ後方枝刈。
完全解析ができそうか確認してました。
全42手でルートから30手くらい置換表適用すると、序盤はかなり良いペースで探索
してくれますが、数時間で置換表パンク。置換表を20手くらいまでにとどめると、びっくり
するほど速度低下。手順の前後で簡単に同形が生じるので、置換表が肝なのは確か。
というか、手順前後の同形を排除する仕組みが作れればメモリ節約可能になる。
けど、それを一般化した処理が置換表なので、全てカバーしなくても3手以内くらいで
排除すれば状況はかなり改善するかも知れない。
あと、パンク前も探索が進むにつれて徐々にnpsが低下していきます。原因不明。
書きながら気づいたのですが、置換表のハッシュ値はオセロのものを流用しています。
Connect4はビット数が少ないので、ハッシュ衝突が頻発して、格納効率が低下して
領域拡張が頻繁におきて、探索速度も落ちている可能性があります。
というわけで、現段階では置換表周りを工夫しないと完全解析は厳しそうです。
一方で、空26箇所くらいの終盤探索なら実用的な速度が出そうな感触です。
>>569の完全ソルバは、評価値表示機能があるけど、あの表示の仕方だと、証明数
探索みたいな手法を使っているのかなぁ。ほぼノータイムで最善手のみ着手してくる
ので。完全ソルバの出現で終わっちゃってるゲームなんでしょうね。
で、このゲームってMCTSの練習台にちょうど良いのではないか?とふと思いついて
しまいまして・・・。更に脱線しようかなと思います。Playout関数は作りましたが、ツリー
展開の仕方に疑問があり、まだ調べ中です。
ビットマップ方式の置換表付αβのオーダリング無し。リーチ状態のみ後方枝刈。
完全解析ができそうか確認してました。
全42手でルートから30手くらい置換表適用すると、序盤はかなり良いペースで探索
してくれますが、数時間で置換表パンク。置換表を20手くらいまでにとどめると、びっくり
するほど速度低下。手順の前後で簡単に同形が生じるので、置換表が肝なのは確か。
というか、手順前後の同形を排除する仕組みが作れればメモリ節約可能になる。
けど、それを一般化した処理が置換表なので、全てカバーしなくても3手以内くらいで
排除すれば状況はかなり改善するかも知れない。
あと、パンク前も探索が進むにつれて徐々にnpsが低下していきます。原因不明。
書きながら気づいたのですが、置換表のハッシュ値はオセロのものを流用しています。
Connect4はビット数が少ないので、ハッシュ衝突が頻発して、格納効率が低下して
領域拡張が頻繁におきて、探索速度も落ちている可能性があります。
というわけで、現段階では置換表周りを工夫しないと完全解析は厳しそうです。
一方で、空26箇所くらいの終盤探索なら実用的な速度が出そうな感触です。
>>569の完全ソルバは、評価値表示機能があるけど、あの表示の仕方だと、証明数
探索みたいな手法を使っているのかなぁ。ほぼノータイムで最善手のみ着手してくる
ので。完全ソルバの出現で終わっちゃってるゲームなんでしょうね。
で、このゲームってMCTSの練習台にちょうど良いのではないか?とふと思いついて
しまいまして・・・。更に脱線しようかなと思います。Playout関数は作りましたが、ツリー
展開の仕方に疑問があり、まだ調べ中です。
607名前は開発中のものです。
2016/10/13(木) 21:15:41.15ID:XMNeJMFS 310氏もConnect 4 参戦か〜
608535
2016/10/13(木) 21:53:14.86ID:XMNeJMFS 名前書き忘れた。
終盤26手読み行けそうというのは流石ですな。
完全解析ってConnect 4だと簡単そうに見えますがこれが意外と手強いんですよね〜
終盤26手読み行けそうというのは流石ですな。
完全解析ってConnect 4だと簡単そうに見えますがこれが意外と手強いんですよね〜
609310
2016/10/15(土) 13:58:53.52ID:iZ3eY/zy NPS低下問題はやはりハッシュ衝突のようで、ちょこっと直したら解消しました。
Connect4は手順前後しても同じ形になる事が多いゲーム(DAG問題多発)なので、
置換表を上手く使わないと、7兆種類あると言われている盤面を何度も重複探索して
しまう事になります。が、置換表探索と登録のオーバーヘッドは結構大きく、メモリ
パンクでスワップ多発の問題も起きます。
今の設定だと残り27手探索くらいなら難しい問題で1分程度で解けそうです。
NPSは20メガくらい。が、メモリパンクや重複探索の問題があるので、その速度を
もとに完全解析に要する期間を推計するのは無理っぽい感じです。
というわけで、完全解析はこの辺にして、MCTSの方に行きます。
Connect4は手順前後しても同じ形になる事が多いゲーム(DAG問題多発)なので、
置換表を上手く使わないと、7兆種類あると言われている盤面を何度も重複探索して
しまう事になります。が、置換表探索と登録のオーバーヘッドは結構大きく、メモリ
パンクでスワップ多発の問題も起きます。
今の設定だと残り27手探索くらいなら難しい問題で1分程度で解けそうです。
NPSは20メガくらい。が、メモリパンクや重複探索の問題があるので、その速度を
もとに完全解析に要する期間を推計するのは無理っぽい感じです。
というわけで、完全解析はこの辺にして、MCTSの方に行きます。
610535
2016/10/15(土) 20:55:10.85ID:jn3cHMWR >>609
多分純粋なMCTSだけではあまり強くならず、
プレイアウトになにがしかの工夫を入れる必要が出てくると見てます。
逆にプレイアウトさえ改良できればMCTSはびっくりするくらい強くなる。
しかしそれでも完全ソルバには届かない。みたいな感じだと思います。
多分純粋なMCTSだけではあまり強くならず、
プレイアウトになにがしかの工夫を入れる必要が出てくると見てます。
逆にプレイアウトさえ改良できればMCTSはびっくりするくらい強くなる。
しかしそれでも完全ソルバには届かない。みたいな感じだと思います。
611310
2016/10/15(土) 21:29:59.48ID:iZ3eY/zy MCTS(UCT)多分できました。STL様様です。
探索時間1秒で40万プレイアウト。
playout部をnegamax的に書いたので、ちょっと混乱しました。
まだ終局判定とかいい加減で、引分近辺で落ちる可能性あります。
オセロでも1秒で10万プレイアウト以上いけるんじゃないかなぁ。
探索時間固定できるのでオセロ序盤〜中盤で使えるかも。
>>535さんのプログラムはもうダウンロードできないですね。
探索時間1秒で40万プレイアウト。
playout部をnegamax的に書いたので、ちょっと混乱しました。
まだ終局判定とかいい加減で、引分近辺で落ちる可能性あります。
オセロでも1秒で10万プレイアウト以上いけるんじゃないかなぁ。
探索時間固定できるのでオセロ序盤〜中盤で使えるかも。
>>535さんのプログラムはもうダウンロードできないですね。
612535
2016/10/15(土) 21:54:42.38ID:jn3cHMWR 秒速40万プレイアウト!?すげぇぇぇぇ
1プレイアウト=1手てことですか?
1プレイアウト=1局てことですか?
1プレイアウト=1手てことですか?
1プレイアウト=1局てことですか?
613535
2016/10/15(土) 22:17:47.78ID:jn3cHMWR 460氏もオセロで10000Knps〜15000Knpsとか言ってるし、まじか〜
やっぱ本気でやってる人達は違うのかな…
やっぱ本気でやってる人達は違うのかな…
614535
2016/10/15(土) 23:46:45.43ID:jn3cHMWR NPSは20メガって書いてありますね…
すいません。
すいません。
615310
2016/10/16(日) 01:32:06.03ID:KTdXBWLt プレイアウトなので1局です。色々ごにょごにょはありますが、ランダム着手で、
とりあえず勝負がつくまで打ちます。これで1プレイアウト。
速度が出るのはビットマップとBMI命令などのX64命令を使ってるからだと思います。
が、Perfect Solverに先手で勝てません(汗。5手目に必ず間違えます。
評価値を眺めても、当たり前のように、正解(真ん中列)が最下位になります。
パラメータをそこそこいじってみましたが、状況は変わらないです。
一本道には弱いって事かなぁ。
とはいえ、自分がやると、さっくりと負けてしまいます(汗
とりあえず勝負がつくまで打ちます。これで1プレイアウト。
速度が出るのはビットマップとBMI命令などのX64命令を使ってるからだと思います。
が、Perfect Solverに先手で勝てません(汗。5手目に必ず間違えます。
評価値を眺めても、当たり前のように、正解(真ん中列)が最下位になります。
パラメータをそこそこいじってみましたが、状況は変わらないです。
一本道には弱いって事かなぁ。
とはいえ、自分がやると、さっくりと負けてしまいます(汗
616310
2016/10/16(日) 13:25:18.14ID:KTdXBWLt mobility周りにバグがあって直したところ、1秒読みでPerfect Solverに先手で勝ちました。
昨夜は120秒読みでも同じ手順で負けていました。
とはいえ、乱数が絡むので引き分ける事もあります。
まだ若干問題があります。1本道を交互に着手していくと自動的に勝ちが確定する盤面
なのに、評価が引き分けになっています。プレイアウトの終局判定で何かの条件が抜け
ていて、勝ちと判定されていない感じです。
直したらまた勝てなくなったりして(汗
C++の診断ツールを今回初めて使ってみました。
関数ごとの使用時間がわかるようで、速度アップの検討に重宝します。
が、どうもUCB1の計算で使うsqrtとlogを使ってる箇所でCPUを9割くらい使っている
感じです。見方が良くわからないけど、多分そういう状況。速度アップ難しい。
昨夜は120秒読みでも同じ手順で負けていました。
とはいえ、乱数が絡むので引き分ける事もあります。
まだ若干問題があります。1本道を交互に着手していくと自動的に勝ちが確定する盤面
なのに、評価が引き分けになっています。プレイアウトの終局判定で何かの条件が抜け
ていて、勝ちと判定されていない感じです。
直したらまた勝てなくなったりして(汗
C++の診断ツールを今回初めて使ってみました。
関数ごとの使用時間がわかるようで、速度アップの検討に重宝します。
が、どうもUCB1の計算で使うsqrtとlogを使ってる箇所でCPUを9割くらい使っている
感じです。見方が良くわからないけど、多分そういう状況。速度アップ難しい。
617535
2016/10/16(日) 16:43:19.50ID:Ts0NTtMt 一秒読みで完全ソルバに勝とかまじか〜
やっぱ積み上げてきた基礎力が違うんだろうな〜
やっぱ積み上げてきた基礎力が違うんだろうな〜
618310
2016/10/16(日) 17:19:15.26ID:KTdXBWLt どもです。評価値問題は治りました。
乱数じゃなくて、ある手順で引き分けな手を選んでしまう事が判明したので探索時間
を延ばしてみたら、逆に序盤で負け手順を選んでしまうようになりました(汗。
ツリー部の地平線臭い感じなのかなぁ。
というわけで、たまたま選んだ1秒が良かっただけかも知れませんorz
MCTSも理論的には探索回数を∞にすると、最善手を必ず導き出す事は保証されて
いるらしいのですが、中途半端な回数の時は保証されていないんですよね。
乱数じゃなくて、ある手順で引き分けな手を選んでしまう事が判明したので探索時間
を延ばしてみたら、逆に序盤で負け手順を選んでしまうようになりました(汗。
ツリー部の地平線臭い感じなのかなぁ。
というわけで、たまたま選んだ1秒が良かっただけかも知れませんorz
MCTSも理論的には探索回数を∞にすると、最善手を必ず導き出す事は保証されて
いるらしいのですが、中途半端な回数の時は保証されていないんですよね。
619535
2016/10/16(日) 21:36:30.64ID:Ts0NTtMt なんか将棋で評価値を深く探索した時の評価値に近づけるっていう学習方法があるみたいですね。
ちょっと興味あります。
ちょっと興味あります。
620310
2016/10/16(日) 22:45:31.89ID:KTdXBWLt なんか、デバッグ報告みたいな状況になってすみません。
地平線臭い状況を調べていたら、負ける寸前なのに評価値が勝ちになってます。
つまり負けを認識していない。
着手を間違えるのはこの辺も原因かも知れません。
ぱっと思いつく原因が見当たらないので、しばし長考します。
地平線臭い状況を調べていたら、負ける寸前なのに評価値が勝ちになってます。
つまり負けを認識していない。
着手を間違えるのはこの辺も原因かも知れません。
ぱっと思いつく原因が見当たらないので、しばし長考します。
621535
2016/10/17(月) 22:03:40.14ID:B9d5KHtX connect 4序盤ブック作ってみようかな。
完全ソルバ丸パクリでw
完全ソルバ丸パクリでw
622310
2016/10/18(火) 00:57:04.06ID:k8M1GDOc 色々直して、ほぼバグは取れたと思います。
で・・・強くなったはずですが・・・PerfectSolverに先手で勝てなくなりました。
かつて勝てたのはたまたま上手くバグっていたという事みたいです。
1秒設定は途中で間違えて引き分け、10秒設定は初手で負け確定(真ん中以外に着手)。
1秒設定で初手真ん中を選択するのはたまたまかもしれません。
初手だけ調べると150万プレイアウトくらいで間違えはじめ、15億プレイアウトまで確認
しましたが、雰囲気的には当分正しい答えに戻ってこないようです。
評価値の推移を見ると、一本道問題に引っかかっているように見えます。
DAG問題がやっぱり気になるので、ハッシュと組み合わせて合流できるようにしてみます。
多少は改善するかも知れないし、逆にもっと早く真ん中から外れるかも。
で・・・強くなったはずですが・・・PerfectSolverに先手で勝てなくなりました。
かつて勝てたのはたまたま上手くバグっていたという事みたいです。
1秒設定は途中で間違えて引き分け、10秒設定は初手で負け確定(真ん中以外に着手)。
1秒設定で初手真ん中を選択するのはたまたまかもしれません。
初手だけ調べると150万プレイアウトくらいで間違えはじめ、15億プレイアウトまで確認
しましたが、雰囲気的には当分正しい答えに戻ってこないようです。
評価値の推移を見ると、一本道問題に引っかかっているように見えます。
DAG問題がやっぱり気になるので、ハッシュと組み合わせて合流できるようにしてみます。
多少は改善するかも知れないし、逆にもっと早く真ん中から外れるかも。
623名前は開発中のものです。
2016/10/18(火) 17:50:18.00ID:7idTlLLA 読めば読むほど弱くなるとは不思議
ucbの計算間違えてるとかでは?
ucbの計算間違えてるとかでは?
624名前は開発中のものです。
2016/10/18(火) 19:31:31.87ID:4bRvdGb+ ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html
簡単に本格自作ボードゲームが作れる時代到来!!
http://jellyjellycafe.com/3869
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
自作ゲームをゲームマーケットで売って来た
http://portal.nifty.com/kiji/160418196277_1.htm
「街コロ」はカードゲームに興味ありな初心者の入門用に最適、サイコロを振って
カードを集めどんどん自分の街を発展させて勝利を目指せ
http://news.livedoor.com/article/detail/10962802/
ようこそ「男の世界」へ。『ダンジョン オブ マンダム』試されるカードゲーム
http://www.moguragames.com/entry/dungeon_of_mandum/
かわいいひつじを増やして増やして増やしまくれ! “一人用”カードゲーム『シェフィ』
http://www.moguragames.com/entry/shephy/
http://www.logygames.com/logy/ordermade.html
簡単に本格自作ボードゲームが作れる時代到来!!
http://jellyjellycafe.com/3869
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
自作ゲームをゲームマーケットで売って来た
http://portal.nifty.com/kiji/160418196277_1.htm
「街コロ」はカードゲームに興味ありな初心者の入門用に最適、サイコロを振って
カードを集めどんどん自分の街を発展させて勝利を目指せ
http://news.livedoor.com/article/detail/10962802/
ようこそ「男の世界」へ。『ダンジョン オブ マンダム』試されるカードゲーム
http://www.moguragames.com/entry/dungeon_of_mandum/
かわいいひつじを増やして増やして増やしまくれ! “一人用”カードゲーム『シェフィ』
http://www.moguragames.com/entry/shephy/
625535
2016/10/18(火) 22:30:42.36ID:5rT5zFZw 完全ソルバから定石パクるの意外とめんどくさいな。
クローラーみたいにして自動でパクれるようにしようかな。
でも迷惑かかるかな?
クローラーみたいにして自動でパクれるようにしようかな。
でも迷惑かかるかな?
626535
2016/10/18(火) 23:07:54.58ID:5rT5zFZw なんか本末転倒だからやめとくかw
627310
2016/10/19(水) 02:53:35.54ID:YWnebdEb まさかの場所にバグ発見。
プレイアウトでランダムに1手選ぶところがバグってました。
良く動いていたものだと思う反面、MCTSってそういう所がある事も薄々感じてます。
が、状況はほぼ変わらず。初手真ん中と、5手目真ん中。この2か所が鬼門。
まだバグがあるのかも知れない。やっぱり自分が一番信用できないですね。
DAG問題対策でノードの合流を実装しました。枝とノードを分離して、ノードをハッシュ
にして、ノードの下に次の枝をぶら下げました。同時に、ハッシュキーに細工して、
左右同形も合流させてます。あまり変化はない気が。
速度低下が酷いです。
プレイアウトでランダムに1手選ぶところがバグってました。
良く動いていたものだと思う反面、MCTSってそういう所がある事も薄々感じてます。
が、状況はほぼ変わらず。初手真ん中と、5手目真ん中。この2か所が鬼門。
まだバグがあるのかも知れない。やっぱり自分が一番信用できないですね。
DAG問題対策でノードの合流を実装しました。枝とノードを分離して、ノードをハッシュ
にして、ノードの下に次の枝をぶら下げました。同時に、ハッシュキーに細工して、
左右同形も合流させてます。あまり変化はない気が。
速度低下が酷いです。
628310
2016/10/20(木) 00:37:06.99ID:yz39woaL 5手目真ん中以後どうなるのか1秒探索検証。6手目2列目に対しては、勝利(全て
最善着手)。6手目1列目に対しては、5列目着手で引き分け進行に入り、引分終了。
この時の手順では、全箇所が最善手という盤面ばかり通っていくように感じています。
つまり、MCTS的に勝利期待値が最大になりやすい手です。という事で、まあ、そんな
に間違った手は打っていないかなと。
また、プレイアウトを繰り返して手がどう変遷するのか見ていくと、最善手である真ん中
は、ある一定数からほとんど選択されなくなっています。結果、その手で枝の分岐が起き
ない事から、いつまでたっても評価が更新されず正解に戻らないと推測できます。
そこで、試行回数に圧倒的な差ができても、下位の手も一定回数は試行されるように
できないかと、手の選択基準をucb1の大きい順から、ソフトマックス関数を通して確率
分布に変えて、乱数で選択してみました。
結果は・・・。expの計算がある事からか、速度が激減。PVに割り当てられる試行回数は
2/3程度になり、その時点の最悪手でもそれなりに試行されるようになりましたが、それ
でも手の選択は微妙な感じです。この程度の効果なら、他のパラメータいじった方が
速度低下も無く良かったかも(汗
というわけで、本日のトライアルも失敗。
気が進まなかったけど、やっぱりucb1計算の検算をしてみます。
あと、部分的にmin-Maxを適用するとか。
最善着手)。6手目1列目に対しては、5列目着手で引き分け進行に入り、引分終了。
この時の手順では、全箇所が最善手という盤面ばかり通っていくように感じています。
つまり、MCTS的に勝利期待値が最大になりやすい手です。という事で、まあ、そんな
に間違った手は打っていないかなと。
また、プレイアウトを繰り返して手がどう変遷するのか見ていくと、最善手である真ん中
は、ある一定数からほとんど選択されなくなっています。結果、その手で枝の分岐が起き
ない事から、いつまでたっても評価が更新されず正解に戻らないと推測できます。
そこで、試行回数に圧倒的な差ができても、下位の手も一定回数は試行されるように
できないかと、手の選択基準をucb1の大きい順から、ソフトマックス関数を通して確率
分布に変えて、乱数で選択してみました。
結果は・・・。expの計算がある事からか、速度が激減。PVに割り当てられる試行回数は
2/3程度になり、その時点の最悪手でもそれなりに試行されるようになりましたが、それ
でも手の選択は微妙な感じです。この程度の効果なら、他のパラメータいじった方が
速度低下も無く良かったかも(汗
というわけで、本日のトライアルも失敗。
気が進まなかったけど、やっぱりucb1計算の検算をしてみます。
あと、部分的にmin-Maxを適用するとか。
629310
2016/10/23(日) 09:58:44.72ID:qEEwIK82 UCB1の計算は合ってました。
プログラムがC++的に美しくない事が気になりだし始めて、全部書き直ししてました。
書いた端から美しくないのが気になりだしましたが(笑)
UCTで後方枝刈というか、小枝の勝敗が確定していたら、ツリーを縮小していく処理を
追加。一本道問題が多少緩和するかと期待。対戦はちゃんと動いているっぽい。
デバッグ情報をファイル出力する処理書いて確認。
間違え方はあまり変わっていないのが残念というか、安心というか(汗
モンテカルロで1手目から最善手順が確実にわかったら、それはそれでゲームが
簡単すぎるって事になっちゃうので、大きく間違えないんなら、それで仕方ないかな。
というわけで、COM1手目は真ん中に固定。
プレイアウト部を高速化できる気がしていますが、やってみないとわかりません。
プレイアウトの末端部分に完全読みを数段入れるのも良いかと思っています。
DAG問題対応と左右対称チェックを入れて毎秒20万プレイアウトくらい。
評価値の算出方法でちょっと悩み中。
そこそこ落ち着いたらオセロの中盤探索に応用してみます。
プログラムがC++的に美しくない事が気になりだし始めて、全部書き直ししてました。
書いた端から美しくないのが気になりだしましたが(笑)
UCTで後方枝刈というか、小枝の勝敗が確定していたら、ツリーを縮小していく処理を
追加。一本道問題が多少緩和するかと期待。対戦はちゃんと動いているっぽい。
デバッグ情報をファイル出力する処理書いて確認。
間違え方はあまり変わっていないのが残念というか、安心というか(汗
モンテカルロで1手目から最善手順が確実にわかったら、それはそれでゲームが
簡単すぎるって事になっちゃうので、大きく間違えないんなら、それで仕方ないかな。
というわけで、COM1手目は真ん中に固定。
プレイアウト部を高速化できる気がしていますが、やってみないとわかりません。
プレイアウトの末端部分に完全読みを数段入れるのも良いかと思っています。
DAG問題対応と左右対称チェックを入れて毎秒20万プレイアウトくらい。
評価値の算出方法でちょっと悩み中。
そこそこ落ち着いたらオセロの中盤探索に応用してみます。
630310
2016/10/26(水) 20:47:59.29ID:H5ji3apJ また美しくない病が出て、書き直したところ、びっくりするほど弱くなってしまった。
しばらくデバッグで悩みそうです。
しばらくデバッグで悩みそうです。
631535
2016/10/26(水) 20:59:11.78ID:+YpzcPTO Connect 4は一旦休止して別のゲームのAI書いてます。
マイナーゲームですが囲連星というゲームで囲碁と五目並べを混ぜたようなゲームです。
簡単に言うと、七目並べれば勝ち、囲った石は取れるというルールです。
ついさっき黒番で公式AIのLV0に1勝できました。
(;SZ[19]
;B[jj];W[kj];B[jl];W[ji];B[ik];W[km];B[kk];W[ki]
;B[ii];W[lj];B[ll];W[mm];B[hh];W[gg];B[im];W[ih]
;B[ig];W[jh];B[ij];W[in];B[lk];W[gi];B[hk];W[gk]
;B[mk];W[nk];B[hn];W[hl];B[jn];W[io];B[lm];W[jo]
;B[go];W[fp];B[gh];W[hi];B[fg];W[ko];B[gf];W[ln]
;B[hg];W[jg];B[ff];W[gj];B[gg])
囲連星AIはこちらで配布されてます。
http://www.vector.co.jp/soft/win95/game/se401975.html
マイナーゲームですが囲連星というゲームで囲碁と五目並べを混ぜたようなゲームです。
簡単に言うと、七目並べれば勝ち、囲った石は取れるというルールです。
ついさっき黒番で公式AIのLV0に1勝できました。
(;SZ[19]
;B[jj];W[kj];B[jl];W[ji];B[ik];W[km];B[kk];W[ki]
;B[ii];W[lj];B[ll];W[mm];B[hh];W[gg];B[im];W[ih]
;B[ig];W[jh];B[ij];W[in];B[lk];W[gi];B[hk];W[gk]
;B[mk];W[nk];B[hn];W[hl];B[jn];W[io];B[lm];W[jo]
;B[go];W[fp];B[gh];W[hi];B[fg];W[ko];B[gf];W[ln]
;B[hg];W[jg];B[ff];W[gj];B[gg])
囲連星AIはこちらで配布されてます。
http://www.vector.co.jp/soft/win95/game/se401975.html
632535
2016/10/27(木) 22:26:16.59ID:CgNWWTgQ LV2からも黒番で一本取りました。
キセキが起きたw
(;SZ[19]
;B[jj];W[ik];B[ji];W[hj];B[jh];W[jk];B[kk];W[jl]
;B[gi];W[il];B[ll];W[hm];B[ii];W[hh];B[hi];W[ki]
;B[mm];W[nn];B[li];W[in];B[kh];W[fi];B[mi];W[io]
;B[kj];W[lj];B[ki])
キセキが起きたw
(;SZ[19]
;B[jj];W[ik];B[ji];W[hj];B[jh];W[jk];B[kk];W[jl]
;B[gi];W[il];B[ll];W[hm];B[ii];W[hh];B[hi];W[ki]
;B[mm];W[nn];B[li];W[in];B[kh];W[fi];B[mi];W[io]
;B[kj];W[lj];B[ki])
633535
2016/10/27(木) 22:53:05.70ID:CgNWWTgQ 黒番でLV3からも一本取りました。
なかなかいい感じ。
ここからどう高めるか。
(;SZ[19]
;B[jj];W[ji];B[ij];W[kj];B[kk];W[ii];B[ki];W[lj]
;B[lk];W[jk];B[ik];W[kh];B[li];W[mj];B[lh];W[hl]
;B[mk];W[hj];B[jl];W[hk];B[ok];W[nk];B[nj];W[hh]
;B[nl];W[km];B[jk];W[lm];B[nk])
なかなかいい感じ。
ここからどう高めるか。
(;SZ[19]
;B[jj];W[ji];B[ij];W[kj];B[kk];W[ii];B[ki];W[lj]
;B[lk];W[jk];B[ik];W[kh];B[li];W[mj];B[lh];W[hl]
;B[mk];W[hj];B[jl];W[hk];B[ok];W[nk];B[nj];W[hh]
;B[nl];W[km];B[jk];W[lm];B[nk])
634310
2016/10/27(木) 23:41:56.56ID:KUg+LQ1A バグ取れました。わかればどうという事はないですねorz
左右対称はデバッグが面倒くさいので省きました。どうせ序盤でした
意味がありませんので。
初手真ん中は、多分モンテカルロでは答えを出すのが相当厳しいです。
5手目真ん中は、乱数次第みたいな感じで、100万プレイアウトくらいまでに
出るか、1億プレイアウトしても出ないかみたいな感じになります。
一応、DOS窓ベースでプレイできるようにして、途中でMTCSのツリーを
色々と確認したり、追加のプレイアウトをしたりできるようにしましたが、
本質的にモンテカルロなので、完全に近いけど完全じゃないし、乱数の
具合によって着手する手もバラつくという事で勝手に納得してしまいまして、
せっかく作ったデバッグルーチンも禄に活用していません。
高速化も、一時期は40万プレイアウト毎秒くらいまで出たように感じて
ましたが、最終的に20万くらいで落ち着いてしまいました。
次のステップでオセロに応用と思ったのですが、その前に並列処理化を
してみようかと思います。上手くやれば探索ノード数は3倍強(自分のPC
では)くらいにはなりますが・・・数段深く読んだとて、結論にはあんまり大差
が無いのかなと。まあ練習ですな。
というか、min-Maxとモンテカルロのノウハウ、仕事で使えそうだなぁ。
左右対称はデバッグが面倒くさいので省きました。どうせ序盤でした
意味がありませんので。
初手真ん中は、多分モンテカルロでは答えを出すのが相当厳しいです。
5手目真ん中は、乱数次第みたいな感じで、100万プレイアウトくらいまでに
出るか、1億プレイアウトしても出ないかみたいな感じになります。
一応、DOS窓ベースでプレイできるようにして、途中でMTCSのツリーを
色々と確認したり、追加のプレイアウトをしたりできるようにしましたが、
本質的にモンテカルロなので、完全に近いけど完全じゃないし、乱数の
具合によって着手する手もバラつくという事で勝手に納得してしまいまして、
せっかく作ったデバッグルーチンも禄に活用していません。
高速化も、一時期は40万プレイアウト毎秒くらいまで出たように感じて
ましたが、最終的に20万くらいで落ち着いてしまいました。
次のステップでオセロに応用と思ったのですが、その前に並列処理化を
してみようかと思います。上手くやれば探索ノード数は3倍強(自分のPC
では)くらいにはなりますが・・・数段深く読んだとて、結論にはあんまり大差
が無いのかなと。まあ練習ですな。
というか、min-Maxとモンテカルロのノウハウ、仕事で使えそうだなぁ。
635名前は開発中のものです。
2016/10/27(木) 23:46:29.29ID:CgNWWTgQ >>310氏はプロのプログラマなのか。
まあ納得。
まあ納得。
636310
2016/10/28(金) 10:50:00.21ID:/58y3Hfc いや。趣味の深夜プログラマです。
物流業務改善の会議で提案してみて、わからんと言われたら
ソース見せて動作検証してやろうかなと。
システム屋さんからすると、とてつもなく面倒くさいクライアント
だと自覚しておりまするorz
物流業務改善の会議で提案してみて、わからんと言われたら
ソース見せて動作検証してやろうかなと。
システム屋さんからすると、とてつもなく面倒くさいクライアント
だと自覚しておりまするorz
637535
2016/10/29(土) 21:09:01.77ID:4znFYNwN 囲連星、公式AIとガッツリ対戦してみました。
LV0はdll化されてないので対戦できませんでしたが。。。
結果はLV1には大きく勝ち越しましたがLV2,LV3には敵わなかったです。
airandom.dllが私のAIです。
50局目
黒(airandom.dll)の勝利回数: 44
白(ai-lv1.dll)の勝利回数: 6
50局目
黒(ai-lv1.dll)の勝利回数: 10
白(airandom.dll)の勝利回数: 40
50局目
黒(airandom.dll)の勝利回数: 20
白(ai-lv2.dll)の勝利回数: 30
50局目
黒(ai-lv2.dll)の勝利回数: 41
白(airandom.dll)の勝利回数: 9
50局目
黒(airandom.dll)の勝利回数: 15
白(ai-lv3.dll)の勝利回数: 35
50局目
黒(ai-lv3.dll)の勝利回数: 44
白(airandom.dll)の勝利回数: 6
私のAIが長考するのでこの対戦するのに丸一日以上かかってしまいましたw
LV0はdll化されてないので対戦できませんでしたが。。。
結果はLV1には大きく勝ち越しましたがLV2,LV3には敵わなかったです。
airandom.dllが私のAIです。
50局目
黒(airandom.dll)の勝利回数: 44
白(ai-lv1.dll)の勝利回数: 6
50局目
黒(ai-lv1.dll)の勝利回数: 10
白(airandom.dll)の勝利回数: 40
50局目
黒(airandom.dll)の勝利回数: 20
白(ai-lv2.dll)の勝利回数: 30
50局目
黒(ai-lv2.dll)の勝利回数: 41
白(airandom.dll)の勝利回数: 9
50局目
黒(airandom.dll)の勝利回数: 15
白(ai-lv3.dll)の勝利回数: 35
50局目
黒(ai-lv3.dll)の勝利回数: 44
白(airandom.dll)の勝利回数: 6
私のAIが長考するのでこの対戦するのに丸一日以上かかってしまいましたw
638310
2016/10/29(土) 21:13:21.87ID:hyv6QOjp 並列化してみました。
色々やり方ありますが、まあ順当なやり方という事で、ツリー単位の並列化です。
が、4コアに対して4並列でむしろ速度低下。排他で怪しいところを色々変えてみて
ようやく若干(10〜20%程度)の速度アップにしかなりません。並列数を減らすと
速度低下していくので、排他待ちが原因ではなく、並列化オーバーヘッドの模様。
ノード&ツリーの構造で複雑な分、オーバーヘッドが大きくなっているのか、オセロの
時の効果には大きくおよびません。
ルート単位の並列化で、一定時間ごとにツリー統合(合算)というやり方もあるような
ので、次はこちらを試してみます。
もしかしたら、一番効果が無さそうな、プレイアウトのみ並列化の方が効果出たりして。
色々やり方ありますが、まあ順当なやり方という事で、ツリー単位の並列化です。
が、4コアに対して4並列でむしろ速度低下。排他で怪しいところを色々変えてみて
ようやく若干(10〜20%程度)の速度アップにしかなりません。並列数を減らすと
速度低下していくので、排他待ちが原因ではなく、並列化オーバーヘッドの模様。
ノード&ツリーの構造で複雑な分、オーバーヘッドが大きくなっているのか、オセロの
時の効果には大きくおよびません。
ルート単位の並列化で、一定時間ごとにツリー統合(合算)というやり方もあるような
ので、次はこちらを試してみます。
もしかしたら、一番効果が無さそうな、プレイアウトのみ並列化の方が効果出たりして。
639310
2016/10/29(土) 21:14:51.22ID:hyv6QOjp MTCSは並列化と相性が良いとは思えないなぁ。
640535
2016/10/30(日) 23:47:35.70ID:11nwLD7b return文忘れててめちゃくちゃな値返してた。
この不可解なバグ潰すのに3時間かかったorz.
関数の終わりでreturn文無かったら警告だしてよコンパイラ(泣
まあコンパイラオプション付けてない俺が悪いんだがwww
この不可解なバグ潰すのに3時間かかったorz.
関数の終わりでreturn文無かったら警告だしてよコンパイラ(泣
まあコンパイラオプション付けてない俺が悪いんだがwww
641310
2016/10/30(日) 23:54:19.10ID:vT6Vi1L+ 結局ツリー部の並列化はやめてプレイアウトだけを並列化しました。
ツリー統合も気になりますが、とりあえずこれで末端の評価が正確になります。
プレイアウト部分は処理時間が短いので、プレイアウト回数は大幅に増えます。
MCTSは面倒でも、モンテカルロは並列化向きです。
100回プレイアウトして、そのスコアでまとめて更新。
ところが、バグを発見してしまいました。
勝ち手順で進めていたのに、最後の最後に1手間違えて引分。
もうプレイアウトではなくツリーの勝敗が確定している状態で、間違えるはずがない。
勝敗確定時のフラグ設定がおかしいようです。
そこから色々見直しを始めたら、negaMax的な処理の扱いに完全に混乱して
しまいまして…。これだと思って修正すると、おかしくなってしまいます。
どこか根本的に勘違いしているみたいなので、しばし長考に入りますorz
ツリー統合も気になりますが、とりあえずこれで末端の評価が正確になります。
プレイアウト部分は処理時間が短いので、プレイアウト回数は大幅に増えます。
MCTSは面倒でも、モンテカルロは並列化向きです。
100回プレイアウトして、そのスコアでまとめて更新。
ところが、バグを発見してしまいました。
勝ち手順で進めていたのに、最後の最後に1手間違えて引分。
もうプレイアウトではなくツリーの勝敗が確定している状態で、間違えるはずがない。
勝敗確定時のフラグ設定がおかしいようです。
そこから色々見直しを始めたら、negaMax的な処理の扱いに完全に混乱して
しまいまして…。これだと思って修正すると、おかしくなってしまいます。
どこか根本的に勘違いしているみたいなので、しばし長考に入りますorz
642535
2016/10/31(月) 00:37:25.82ID:KdjBytFw なかなかいい感じのルーチンが書けた。
まだ結果に結びついてないけどこれはあと一捻りいれればかなりいい線行くんじゃないか?
まだ結果に結びついてないけどこれはあと一捻りいれればかなりいい線行くんじゃないか?
643535
2016/10/31(月) 21:35:59.05ID:KdjBytFw おかしいな。
石の流れは良くなってるのになかなか勝利に結びつかない。
石の流れは良くなってるのになかなか勝利に結びつかない。
644535
2016/10/31(月) 22:47:38.80ID:KdjBytFw パラメータ微調整地獄w
機械学習に切り替えないと限界が…
機械学習に切り替えないと限界が…
645535
2016/11/01(火) 21:33:50.00ID:pQxzEPLf あかん。
完全にバランスを失った。
一から出直しだな。orz
完全にバランスを失った。
一から出直しだな。orz
646名前は開発中のものです。
2016/11/03(木) 03:15:09.64ID:x7yDYWU2 ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html
簡単に本格自作ボードゲームが作れる時代到来!!
http://jellyjellycafe.com/3869
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
http://www.logygames.com/logy/ordermade.html
簡単に本格自作ボードゲームが作れる時代到来!!
http://jellyjellycafe.com/3869
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
647310
2016/11/04(金) 15:36:30.74ID:zGiY9OSz 長考の結果、もう一度作り直し(笑)していたら、混乱の原因がわかりまして。
勝敗の持ち方を逆にしたらすっきりしました。
あと、終盤の手順の前後で、あと3手粘れるのに1手で負けるという現象を調べた
結果、ツリー部で負けと判定している以上、何手先に負けるか関係ないというプロ
グラムになっていた事も判明。バグじゃありませんでした。とはいえ気持ちが悪いので、
なるべく長く粘るようにしてみました。
そこでわかったのは、Perfect Solverの数字は、42手21ターン目の引分から何ターン
前に勝負がつくのかを表していて、プラスは勝ち、マイナスは負けという事です。先手で
+1と出たら最善を尽くせば41手目の自分の着手で勝つという事のようです。
つまりスコアを勝敗決定ターンにしたmin-Maxで、速度考えるとDB化してるんでしょう。
で、MCTSですが、まあやはりモンテカルロなので間違えます。試しに10手目程度
の間違えた局面から、シミュレーションを続行してみたところ、億単位の探索(プレイ
アウトとしては10倍)で、間違えた手が本当は悪かった事に気づいた様子で、そこから
正しい答えに向かって行きました。なので、まあプログラムは間違っていない模様です(汗。
DAG対応とか、自殺手禁止プレイアウトとか、色々やった結果、選択手のばらつきが
減って、「たまたま正解手順を引く」事がなくなって、自信満々に間違えるようになっ
た印象です。それでも、時間をかけて探索を続けると、いつかは正しい答えにたどり着くと。
今となってはあまり意味が無いですが、せっかくなので、ここまで積み上げて来た
ノウハウで、今一度Solver作ってみようかなと。
勝敗の持ち方を逆にしたらすっきりしました。
あと、終盤の手順の前後で、あと3手粘れるのに1手で負けるという現象を調べた
結果、ツリー部で負けと判定している以上、何手先に負けるか関係ないというプロ
グラムになっていた事も判明。バグじゃありませんでした。とはいえ気持ちが悪いので、
なるべく長く粘るようにしてみました。
そこでわかったのは、Perfect Solverの数字は、42手21ターン目の引分から何ターン
前に勝負がつくのかを表していて、プラスは勝ち、マイナスは負けという事です。先手で
+1と出たら最善を尽くせば41手目の自分の着手で勝つという事のようです。
つまりスコアを勝敗決定ターンにしたmin-Maxで、速度考えるとDB化してるんでしょう。
で、MCTSですが、まあやはりモンテカルロなので間違えます。試しに10手目程度
の間違えた局面から、シミュレーションを続行してみたところ、億単位の探索(プレイ
アウトとしては10倍)で、間違えた手が本当は悪かった事に気づいた様子で、そこから
正しい答えに向かって行きました。なので、まあプログラムは間違っていない模様です(汗。
DAG対応とか、自殺手禁止プレイアウトとか、色々やった結果、選択手のばらつきが
減って、「たまたま正解手順を引く」事がなくなって、自信満々に間違えるようになっ
た印象です。それでも、時間をかけて探索を続けると、いつかは正しい答えにたどり着くと。
今となってはあまり意味が無いですが、せっかくなので、ここまで積み上げて来た
ノウハウで、今一度Solver作ってみようかなと。
648535
2016/11/04(金) 23:52:18.01ID:lKhN7bKh 色々ぐちゃぐちゃやってたら計算時間がとてつもないことになってしまった。
649310
2016/11/06(日) 13:49:29.22ID:Z4kqE5wB Solver作りました。
PerfectSolverにならって評価値を、42手目から何手手前で勝敗がついたかにしました。
お蔭さまで、null window searchが使えるようになり、mtd(f)で高速化しました。
あと、初段のみ単純な並列して、残り28手で6秒強となりました。
そろそろオセロに戻ります。
PerfectSolverにならって評価値を、42手目から何手手前で勝敗がついたかにしました。
お蔭さまで、null window searchが使えるようになり、mtd(f)で高速化しました。
あと、初段のみ単純な並列して、残り28手で6秒強となりました。
そろそろオセロに戻ります。
650535
2016/11/06(日) 17:53:47.27ID:B23WCzGo 終盤28手読み6秒とか凄い
こっちはというとそろそろαβ刈りを習得しなければ…
こっちはというとそろそろαβ刈りを習得しなければ…
651535
2016/11/07(月) 00:12:13.27ID:vL8wkeAF αβできたっぽいです。
というかwikiの疑似コードを完コピしたらうごいたっぽい?という感じで
理解したとはいいがたいですが。
というかwikiの疑似コードを完コピしたらうごいたっぽい?という感じで
理解したとはいいがたいですが。
652535
2016/11/07(月) 22:06:07.74ID:vL8wkeAF え、もしかしてminmaxに比べてαβめちゃめちゃ速い?
なんか間違ってんのかな…
なんか間違ってんのかな…
653310
2016/11/08(火) 00:02:22.02ID:CUgV7Bvg 安心してください。めちゃ早いですよw
後ろ向き枝刈系のアルゴリズムはほとんどがαβを前提にしています。
自分の最初は擬似コードコピペしました。
すぐ忘れちゃいますが、1回は真剣に動作を追っておくと良いですよ。
後ろ向き枝刈系のアルゴリズムはほとんどがαβを前提にしています。
自分の最初は擬似コードコピペしました。
すぐ忘れちゃいますが、1回は真剣に動作を追っておくと良いですよ。
654535
2016/11/08(火) 22:35:11.27ID:BlAmLHY6 評価関数が致命的に狂ってる気がする。
手動で直すのは限界があるから機械学習したいがさてどうするか。
手動で直すのは限界があるから機械学習したいがさてどうするか。
655310
2016/11/10(木) 20:55:19.87ID:gpSCAC4W オセロでUCTをしてます。コピペでちょいちょいと思っていたらパスの処理が面倒で、
思った以上に動作速度が落ちてしまいました。
その後、デバッグしてたらおかしな現象を発見。探索ツリーでプラスになるべき数字が
マイナスに。しかも1か所だけ。発生条件を絞り込めず、なんだかんだと数日間。
原因は整数のオーバーフローでした。設定時間におけるプレイアウト回数でのスコア合計
がちょうど境目にきて、本当に微妙にオーバーフローしていたので、スコアの正負がひっく
りかえったように見えていたのでした。
俺の時間を返せorz
終盤5手読みくらいならすぐにUCTのツリーが終局まで達して、完全読み同等の答えを
返してくれるのですが、10手だと結構時間がかかり、20手だと全く歯が立たない。
評価関数を使った中盤探索の置き換えに使えないかと想定しているのですが、やはり
簡単に精度は出ない感じです。
プレイアウトでありがちな手を優先的に着手するように、ヒューリスティックな評価関数を
用意して、プレイアウトの精度を高められるか試してみたいと思います。あと、スピード
アップもしないと・・・。
思った以上に動作速度が落ちてしまいました。
その後、デバッグしてたらおかしな現象を発見。探索ツリーでプラスになるべき数字が
マイナスに。しかも1か所だけ。発生条件を絞り込めず、なんだかんだと数日間。
原因は整数のオーバーフローでした。設定時間におけるプレイアウト回数でのスコア合計
がちょうど境目にきて、本当に微妙にオーバーフローしていたので、スコアの正負がひっく
りかえったように見えていたのでした。
俺の時間を返せorz
終盤5手読みくらいならすぐにUCTのツリーが終局まで達して、完全読み同等の答えを
返してくれるのですが、10手だと結構時間がかかり、20手だと全く歯が立たない。
評価関数を使った中盤探索の置き換えに使えないかと想定しているのですが、やはり
簡単に精度は出ない感じです。
プレイアウトでありがちな手を優先的に着手するように、ヒューリスティックな評価関数を
用意して、プレイアウトの精度を高められるか試してみたいと思います。あと、スピード
アップもしないと・・・。
656535
2016/11/10(木) 23:14:15.10ID:4tjjzH07 Zenは治勲と三番勝負か〜
Zen勝ちそうw
Zen勝ちそうw
657535
2016/11/13(日) 00:19:43.02ID:otFLKKMJ doubleの有効桁数が足りなくておかしくなってたorz
評価値に差をつけようとして極端にデカい数値を設定してたら
小さい数値が無視されてた
評価値に差をつけようとして極端にデカい数値を設定してたら
小さい数値が無視されてた
658310
2016/11/13(日) 00:47:25.03ID:Be0ooFvL DeepZenGo楽しみですね。
ポストアルファ碁の今となってはZenが2勝できなかったらちょっと悲しいかな。
こちらはオセロのモンテカルロツリー探索がほぼできました。
当初かなり速度ダウンしていたのですが、何とか改良できました。vectorが遅かった。
数か所工夫して、テストデータで正解を早く導けるようにしてみましたが、調整が面倒そう。
とりあえずネタ切れなので、次は探索済ツリーを再利用できるようにして、対戦できるよう
にする予定です。で、今一度終盤読み切りルーチンと、序盤の定石DBつけて完成としたい。
しかし、相変わらず評価値をどう計算したら良いのかわからない。
単純に、着手する手の平均スコアだと、探索の進み具合によってあなりブレてしまい
意味がある数字になりそうにない。アルファ碁はDCNNの評価値を使ってるのかなぁ。
ポストアルファ碁の今となってはZenが2勝できなかったらちょっと悲しいかな。
こちらはオセロのモンテカルロツリー探索がほぼできました。
当初かなり速度ダウンしていたのですが、何とか改良できました。vectorが遅かった。
数か所工夫して、テストデータで正解を早く導けるようにしてみましたが、調整が面倒そう。
とりあえずネタ切れなので、次は探索済ツリーを再利用できるようにして、対戦できるよう
にする予定です。で、今一度終盤読み切りルーチンと、序盤の定石DBつけて完成としたい。
しかし、相変わらず評価値をどう計算したら良いのかわからない。
単純に、着手する手の平均スコアだと、探索の進み具合によってあなりブレてしまい
意味がある数字になりそうにない。アルファ碁はDCNNの評価値を使ってるのかなぁ。
659310
2016/11/13(日) 20:49:23.63ID:Be0ooFvL ちょっと疑念が湧いてきたので数か所工夫したところを全てコメントアウトしてみたところ
やらない方が遥かにマシという結論に(汗。下手な考え休むに至りでした。
全部外してしまうと一旦最善手から外れてまた戻ってくるような事もなくなり、探索時間が
長い方が良いと単純に言えるようになります。
また、評価値ですが、モンテカルロならやはり点差を考慮しない「勝率」であるべきでは
ないかと思い始めています。今は、「点差」を返しています。「勝率」で選ぶ手は、「もっと
良い手があった」となりますし、「点差」で選ぶ手は「欲張りすぎた」となりそうです。
探索済ツリーの再利用の仕組みができました。まだパスがらみのテストはしてませんが、
多分大丈夫でしょう。
ボード関連のクラスをかなり作り直してしまったので、終盤読み切りルーチンや序盤定石
処理を作り直さないといけません。というか、評価関数を持ってないので、終盤探索は
オーダリングの仕方を変えないといけません。
あと、人間側入力待ちの間も探索を継続できるようにしてみたいと思っています。
モンテカルロだと、いつでも停止したり再開できるので、ぜひとも導入したいものです。
やらない方が遥かにマシという結論に(汗。下手な考え休むに至りでした。
全部外してしまうと一旦最善手から外れてまた戻ってくるような事もなくなり、探索時間が
長い方が良いと単純に言えるようになります。
また、評価値ですが、モンテカルロならやはり点差を考慮しない「勝率」であるべきでは
ないかと思い始めています。今は、「点差」を返しています。「勝率」で選ぶ手は、「もっと
良い手があった」となりますし、「点差」で選ぶ手は「欲張りすぎた」となりそうです。
探索済ツリーの再利用の仕組みができました。まだパスがらみのテストはしてませんが、
多分大丈夫でしょう。
ボード関連のクラスをかなり作り直してしまったので、終盤読み切りルーチンや序盤定石
処理を作り直さないといけません。というか、評価関数を持ってないので、終盤探索は
オーダリングの仕方を変えないといけません。
あと、人間側入力待ちの間も探索を継続できるようにしてみたいと思っています。
モンテカルロだと、いつでも停止したり再開できるので、ぜひとも導入したいものです。
660310
2016/11/16(水) 01:01:14.01ID:2m1pjf8n 人間の入力待ちの時のバックグラウンド探索を実装しました。
並列処理はPPLを使ってるので、思いのほか簡単にできましたが、入力待ちのまま
放置されると、数時間でメモリーを食いつぶしてしまう事に気づきました。
パンクしそうになったらツリーをルートに近い順に削除するようにしましたが、メモリー
リークしてそうでちょっと怖いです。
コンピュータ同士で対戦させてみたところ、まあそれっぽくは打ちますが、序盤で定石
から外れてしまいます。終盤は結構正確に見えます。
評価値の件、独自ロジックを外したところ、それっぽい値を表示するようになりました。
並列処理はPPLを使ってるので、思いのほか簡単にできましたが、入力待ちのまま
放置されると、数時間でメモリーを食いつぶしてしまう事に気づきました。
パンクしそうになったらツリーをルートに近い順に削除するようにしましたが、メモリー
リークしてそうでちょっと怖いです。
コンピュータ同士で対戦させてみたところ、まあそれっぽくは打ちますが、序盤で定石
から外れてしまいます。終盤は結構正確に見えます。
評価値の件、独自ロジックを外したところ、それっぽい値を表示するようになりました。
661310
2016/11/16(水) 09:03:26.60ID:uZWbEwsE 自分のつたないオセロ力では、モンテカルロが着手した手が良いのか悪いのか
わからないので、どうしようかと寝ながら考えました。
まず考えたのは、完全読み切りルーチンを作って、終盤に限っては正解着手も
探索してみる事。でも、最終的には終盤は完全読み切り使った方が、正確で早い
ので、そちらを使用。中盤や序盤の具合がわからない以上、ほぼ意味なし。
続いて、WZebraにある「解析機能」を実現できないかと考えました。中身はわからない
ので想像。使用して感動した経験あり。
「後ろから解析」なら、αβを後ろから回し、自分が着手した手より良い手が無ければ
βカット、あればそれで生じたスコアの増減を記録という形で、中盤のある程度のところ
までは、遡りつつ誤着手を検出できるんじゃないかなと。棋譜にある着手はこのロジック
で評価が定まっているので、探索を省く事ができます。評価関数を持っていないので、
遡れても30〜35手目くらいまでかと思いますが、読み切りルーチンをいじれば作れ
そうなので、トライしてみようと思います。
誤着手率がわかっても、簡単に直らないのがモンテカルロですが…。
わからないので、どうしようかと寝ながら考えました。
まず考えたのは、完全読み切りルーチンを作って、終盤に限っては正解着手も
探索してみる事。でも、最終的には終盤は完全読み切り使った方が、正確で早い
ので、そちらを使用。中盤や序盤の具合がわからない以上、ほぼ意味なし。
続いて、WZebraにある「解析機能」を実現できないかと考えました。中身はわからない
ので想像。使用して感動した経験あり。
「後ろから解析」なら、αβを後ろから回し、自分が着手した手より良い手が無ければ
βカット、あればそれで生じたスコアの増減を記録という形で、中盤のある程度のところ
までは、遡りつつ誤着手を検出できるんじゃないかなと。棋譜にある着手はこのロジック
で評価が定まっているので、探索を省く事ができます。評価関数を持っていないので、
遡れても30〜35手目くらいまでかと思いますが、読み切りルーチンをいじれば作れ
そうなので、トライしてみようと思います。
誤着手率がわかっても、簡単に直らないのがモンテカルロですが…。
662535
2016/11/19(土) 18:30:11.32ID:X8ZFdPyh ん〜Zen負けちゃった。
期待してたんだが。
期待してたんだが。
663310
2016/11/19(土) 20:47:46.55ID:F+e1LSRb とりあえずWZebra相手に戦ってみたのですが、全滅しない程度に負けますw
評価値が全然違うというか、自分は有利なつもりで進んでいても、Zebra的には
+50とかになってます。40〜50手目付近で末端までツリーを展開してようやく
気づくみたいな。そこまで行くと、ほぼ間違えなくなる(当たり前)のですが、序盤
中盤があまりに酷いので、定石ルーチンで助けられないレベルかなと。
そもそも評価値が間違いまくりで、自分のAIは少し有利くらいの勝率になっている
のに、zebraは既に+30とか+50とか。形を見ても、素人目にも全く不利な形に。
ランダム着手で勝率や平均スコア求めても意味が無いかも、という本質的な
課題に突き当たってしまいました。
ツリー依存度を上げようと閾値を下げてツリー展開しやすくすると、あっという間に
メモリが溢れてしまいますので非現実的。本来はucb1の計算が機能して、変な
ツリーに手を回さないのですが、むしろ変な手にロックオンしてしまいがち。
囲碁みたいに、1手の価値や、最終的な形が同じなら着手する順番関係ないよう
なゲームじゃないと厳しいのかなと思い始めています。
相手の入力待ちの時のバックグラウンド探索では、敢えて初手についてのみ全て
の手に均等に割り振って、ツリー展開を進めさせてみたのですが、これもやりすぎ
ると簡単にパンクしてしまうので、ほどほどにという感じです。
アンドゥ機能を消して、終わったツリーをバサバサ消す仕様に変更です。
というわけで、解析とか後回しして、強さを上げられないか検討です。
ヒューリスティックな手法で、プレイアウトをもう少し現実的に。同様にUCB1に多少
細工して、よさそうな手の割り当てを増やせないか検討してみます。といっても、
相手の着手可能位置の数を減らすような手を優先するくらいしか、アイデアはあり
ませんが。
評価値が全然違うというか、自分は有利なつもりで進んでいても、Zebra的には
+50とかになってます。40〜50手目付近で末端までツリーを展開してようやく
気づくみたいな。そこまで行くと、ほぼ間違えなくなる(当たり前)のですが、序盤
中盤があまりに酷いので、定石ルーチンで助けられないレベルかなと。
そもそも評価値が間違いまくりで、自分のAIは少し有利くらいの勝率になっている
のに、zebraは既に+30とか+50とか。形を見ても、素人目にも全く不利な形に。
ランダム着手で勝率や平均スコア求めても意味が無いかも、という本質的な
課題に突き当たってしまいました。
ツリー依存度を上げようと閾値を下げてツリー展開しやすくすると、あっという間に
メモリが溢れてしまいますので非現実的。本来はucb1の計算が機能して、変な
ツリーに手を回さないのですが、むしろ変な手にロックオンしてしまいがち。
囲碁みたいに、1手の価値や、最終的な形が同じなら着手する順番関係ないよう
なゲームじゃないと厳しいのかなと思い始めています。
相手の入力待ちの時のバックグラウンド探索では、敢えて初手についてのみ全て
の手に均等に割り振って、ツリー展開を進めさせてみたのですが、これもやりすぎ
ると簡単にパンクしてしまうので、ほどほどにという感じです。
アンドゥ機能を消して、終わったツリーをバサバサ消す仕様に変更です。
というわけで、解析とか後回しして、強さを上げられないか検討です。
ヒューリスティックな手法で、プレイアウトをもう少し現実的に。同様にUCB1に多少
細工して、よさそうな手の割り当てを増やせないか検討してみます。といっても、
相手の着手可能位置の数を減らすような手を優先するくらいしか、アイデアはあり
ませんが。
664310
2016/11/20(日) 16:54:24.84ID:4i7ILKOH 「相手の打てる箇所が少ない手を確率的に増やす」程度では全くダメでした。むむむ。
脳内では、プレイアウトの次の1手を決めるのにDCNNでみたいな…本末転倒な対策が
渦巻いてきています(汗。手元にある囲碁のモンテカルロ本(彩の解説、技術的な種本)
でも、自分の石の周辺のパターンを統計的に処理して着手確率を計算みたいな事をして
いまして。オセロでいうと評価関数みたいな事をしていたりします。
オセロは、着手する石の価値が重すぎるので、モンテカルロが向かないって当たり前の
結論ではあるのですが。それにしても、あまりに弱い。
というわけで、ダメ元でプレイアウト時に開放度で着手確率を変える方法を試してみつつ、
技術的勉強で、もう一度、きちんとツリー並列で並列化を実装してみようかなと思ってます。
脳内では、プレイアウトの次の1手を決めるのにDCNNでみたいな…本末転倒な対策が
渦巻いてきています(汗。手元にある囲碁のモンテカルロ本(彩の解説、技術的な種本)
でも、自分の石の周辺のパターンを統計的に処理して着手確率を計算みたいな事をして
いまして。オセロでいうと評価関数みたいな事をしていたりします。
オセロは、着手する石の価値が重すぎるので、モンテカルロが向かないって当たり前の
結論ではあるのですが。それにしても、あまりに弱い。
というわけで、ダメ元でプレイアウト時に開放度で着手確率を変える方法を試してみつつ、
技術的勉強で、もう一度、きちんとツリー並列で並列化を実装してみようかなと思ってます。
665535
2016/11/20(日) 21:28:29.17ID:gm8FgHLO も〜インテルさん早く1ThzのCPU出してよ〜w
666535
2016/11/23(水) 19:46:23.65ID:/Z9U4oFa Zen負けちゃったか〜
でも一勝しただけでもすごい。
でも一勝しただけでもすごい。
667310
2016/11/23(水) 23:37:07.28ID:wq9OFZ+n うむぅ。アルファ碁があるから期待高いけど、互先で1勝したのは凄いよね。
まだ伸びしろありそうだから、次回に期待ですね。
こちらは、モンテカルロがあまりにダメダメで悩み中です。
煮詰まってしまったので、ツリー並列をきちんと実装したり、終盤探索作ったりしてました。
終盤探索は、ようやく>>460さん指摘の偶数理論を実装しました。どうやるのかなかなか
思いつかなかったけど、手を動かしだしたらわかるものですね。Zebraとかのソース見て
いないので、もっと良いやり方があるかも知れませんが。
まだ伸びしろありそうだから、次回に期待ですね。
こちらは、モンテカルロがあまりにダメダメで悩み中です。
煮詰まってしまったので、ツリー並列をきちんと実装したり、終盤探索作ったりしてました。
終盤探索は、ようやく>>460さん指摘の偶数理論を実装しました。どうやるのかなかなか
思いつかなかったけど、手を動かしだしたらわかるものですね。Zebraとかのソース見て
いないので、もっと良いやり方があるかも知れませんが。
668535
2016/11/25(金) 20:21:12.84ID:udjtSdAy 終盤の打ち方はまあまあいいんだが序盤が致命的すぎる。
思考時間もめちゃめちゃ長いし。
あと強化学習やりたいけどアイディア湧いてこないなぁ。
思考時間もめちゃめちゃ長いし。
あと強化学習やりたいけどアイディア湧いてこないなぁ。
669535
2016/11/26(土) 14:07:56.90ID:3TEfCPcy LV2が思考速くて強いからってLV2の棋譜大量に集めたら学習が偏りそう?
670310
2016/11/28(月) 13:44:46.30ID:moEHPVOW >>669
やってみないとわからないけど、棋譜は質が良くて偏らないってのが基本だからね。
間違えたら間違えたなりに、負けてくれる棋譜じゃないと、変な学習しちゃうかも。
この辺の兼ね合いが難しい。
ただ、スタートの棋譜をその辺にして、だんだん更新しつつ、強くしていくって方法も
あるかと思う。
こちらは、終盤探索に手こずっています。
AVX2命令をオペレーターオーバーロードして使っているのですが、グローバルなのが
気持ち悪くて、クラスに変更。ついでに見直しをしていたら、過去にどうしてもわからなくて
別の方法で逃げてしまったバグをようやく解消。速度には大した影響ないですが。
一番の問題は、評価関数を持っていないので、MPCが使えない事。MPCのスレッショルド
を広げながら置換表使って、moveorderを最適化していたので。他の方法で速度アップを
考えないといけない。逃げてを考えると、結局、NNなりなんなりで別の評価関数なり、次の
1手ヒューリスティックが欲しくなります。もともとNN方面に行ったのは、そこが目的だった
事を思い出しました(汗
モンテカルロは、プレイアウトを疑っているので、いずれきちっとやり直してみます。
やってみないとわからないけど、棋譜は質が良くて偏らないってのが基本だからね。
間違えたら間違えたなりに、負けてくれる棋譜じゃないと、変な学習しちゃうかも。
この辺の兼ね合いが難しい。
ただ、スタートの棋譜をその辺にして、だんだん更新しつつ、強くしていくって方法も
あるかと思う。
こちらは、終盤探索に手こずっています。
AVX2命令をオペレーターオーバーロードして使っているのですが、グローバルなのが
気持ち悪くて、クラスに変更。ついでに見直しをしていたら、過去にどうしてもわからなくて
別の方法で逃げてしまったバグをようやく解消。速度には大した影響ないですが。
一番の問題は、評価関数を持っていないので、MPCが使えない事。MPCのスレッショルド
を広げながら置換表使って、moveorderを最適化していたので。他の方法で速度アップを
考えないといけない。逃げてを考えると、結局、NNなりなんなりで別の評価関数なり、次の
1手ヒューリスティックが欲しくなります。もともとNN方面に行ったのは、そこが目的だった
事を思い出しました(汗
モンテカルロは、プレイアウトを疑っているので、いずれきちっとやり直してみます。
671535
2016/11/28(月) 22:46:28.36ID:nf8GSvVi NN興味ありますねぇ。
Zenチームの人とかがわかりやすい解説本書いてくれないかなぁ。
Zenチームの人とかがわかりやすい解説本書いてくれないかなぁ。
672535
2016/12/02(金) 21:41:56.73ID:Vv9WnV3F モンテカルロはやはりプレイアウトの質がカギか?
軽くて良いヒューリスティックが欲しいところだ。
軽くて良いヒューリスティックが欲しいところだ。
673535
2016/12/02(金) 22:02:53.36ID:Vv9WnV3F モンテカルロは良い枝をカットしないこともかなり重要とみた。
674310
2016/12/04(日) 20:20:17.67ID:E6FCgpFL うーん。モンテカルロはFFOなんかで残り20手くらいから戦うと、結構まともな着手を
するんだけど、10〜30手目付近がわざとじゃないかというくらい悪い手ばかり選択する。
残り10手くらいまで行けば完璧。
序盤は次の1手が多すぎるのと、プレイアウトで回す回数が単純に多いので、ツリー部が
なかなか深くならないし、あまり簡単に深くするとすぐにメモリーオーバーフローしちゃうし
で難しい。
>>673
UCTではカットはしません。単純にプレイアウトの割り当ての順番がなかなか回ってこなく
なるだけです。良い手に優先的に割り当てさせるためには、やはりプレイアウトで良い手は
良いと、悪い手は悪いと評価できなきゃならんわけで。それが難しいからモンテカルロだと
言う矛盾。
まあ、オセロの場合は、伝家の宝刀評価関数があるので、プレイアウトを20手くらいで
打ち切って、評価値を返すとか…MPCみたいな事をして無駄な着手を回避させるか…
と、本末転倒な妄想をしてます(汗。良くなる点は、時間管理が易しくなるくらいかな(涙。
するんだけど、10〜30手目付近がわざとじゃないかというくらい悪い手ばかり選択する。
残り10手くらいまで行けば完璧。
序盤は次の1手が多すぎるのと、プレイアウトで回す回数が単純に多いので、ツリー部が
なかなか深くならないし、あまり簡単に深くするとすぐにメモリーオーバーフローしちゃうし
で難しい。
>>673
UCTではカットはしません。単純にプレイアウトの割り当ての順番がなかなか回ってこなく
なるだけです。良い手に優先的に割り当てさせるためには、やはりプレイアウトで良い手は
良いと、悪い手は悪いと評価できなきゃならんわけで。それが難しいからモンテカルロだと
言う矛盾。
まあ、オセロの場合は、伝家の宝刀評価関数があるので、プレイアウトを20手くらいで
打ち切って、評価値を返すとか…MPCみたいな事をして無駄な着手を回避させるか…
と、本末転倒な妄想をしてます(汗。良くなる点は、時間管理が易しくなるくらいかな(涙。
675310
2016/12/06(火) 00:37:18.95ID:zUbz1knV モンテカルロが弱い理由を探ってます。
WZebraと対戦させると、一番顕著なのは、モンテカルロは辺に着手したがり、その結果
WZebraに内側に潜りこまれて選択肢が減っているという事です。流石に×とかCには
簡単には打ちませんが、序盤からあっさり中辺に出て行き、更にあっさり辺に打ちます。
相手もランダムに着手したとすると、辺の石は1方向からしか返せない(内側は4方向)
ので、プレイアウトでは残りやすくなると言う仮説を立ててみました。つまり全部で28石
ある辺の攻防が相対的に下手くそになるため、プレイアウトの結果が楽観的になりすぎ
ているのではないかと言う事です。
残り20手切ってくると、ツリー展開できているので、min-Max的に攻防できるけど、それ
より前の段階ではプレイアウトで、相手のミスを咎めるような手を打たないといけないと
言う事かなと思います。
これをどう次の1手の確率分布に表現するかですね。
WZebraと対戦させると、一番顕著なのは、モンテカルロは辺に着手したがり、その結果
WZebraに内側に潜りこまれて選択肢が減っているという事です。流石に×とかCには
簡単には打ちませんが、序盤からあっさり中辺に出て行き、更にあっさり辺に打ちます。
相手もランダムに着手したとすると、辺の石は1方向からしか返せない(内側は4方向)
ので、プレイアウトでは残りやすくなると言う仮説を立ててみました。つまり全部で28石
ある辺の攻防が相対的に下手くそになるため、プレイアウトの結果が楽観的になりすぎ
ているのではないかと言う事です。
残り20手切ってくると、ツリー展開できているので、min-Max的に攻防できるけど、それ
より前の段階ではプレイアウトで、相手のミスを咎めるような手を打たないといけないと
言う事かなと思います。
これをどう次の1手の確率分布に表現するかですね。
676310
2016/12/11(日) 01:06:32.29ID:8cq3+Gjk なんか袋小路に入ってます(汗
プレイアウトの改良は速度低下との戦いになり、効果が出ません。
結局、とにかく無駄をそぎ落とし、単純化してプレイアウト回数を稼いで、なおかつ
ツリー展開の閾値を下げて、ツリーに頼る形になりました。
が、ここでメモリーパンクとの戦いが始まります(涙
中盤の分岐が多い局面だと、あっという間にツリー部で8ギガくらい使ってしまいます。
更に処理を単純化してメモリー使用量削減に走る事に。
結局、40手目以後なら使えるけど、それ以前ではあまり精度が期待できないという、
当初やりたかった、少しマシな序盤・中盤探索という目論見は崩れてしまいました。
評価関数があるんだったらαβの方がマシという当たり前の結論に傾きつつあります(汗
プレイアウトの改良は速度低下との戦いになり、効果が出ません。
結局、とにかく無駄をそぎ落とし、単純化してプレイアウト回数を稼いで、なおかつ
ツリー展開の閾値を下げて、ツリーに頼る形になりました。
が、ここでメモリーパンクとの戦いが始まります(涙
中盤の分岐が多い局面だと、あっという間にツリー部で8ギガくらい使ってしまいます。
更に処理を単純化してメモリー使用量削減に走る事に。
結局、40手目以後なら使えるけど、それ以前ではあまり精度が期待できないという、
当初やりたかった、少しマシな序盤・中盤探索という目論見は崩れてしまいました。
評価関数があるんだったらαβの方がマシという当たり前の結論に傾きつつあります(汗
677310
2016/12/11(日) 23:57:52.07ID:8cq3+Gjk たった一晩で楽観してきました。
今までsoftmaxで確率分布を変えていましたが、あまり大きな差はついていないようだった
ので、この際、思いっきり割り切ってみました。1位に70%、2位に25%、残り5%で他の
手に均等割り。イメージとしては1σ、2σ、その他って感じです。ヒューリスティックは
αβのmoveorderのものを使用。
もちろんzebraにはぼろ負けですが、今までと違うのは、相手を囲んで着手可能位置を
減らしてしまう事が無くなりました。ちょっとした手ごたえを感じています。これをスタート
に、ヒューリスティックに終盤変化を組み込んだり、序盤は開放度にしてみたりして検証
しようかと思っています。プレイアウトの精度があがったら、無駄にツリー展開しなくて
済むので、メモリーにも優しくなれるかも。
また、敗勢での発狂モードや、勝勢での手抜きモードの原因は、勝敗が明らかになり、
手毎の勝率の差がなくなる事が原因です。プレイアウト回数が多いからか、評価値は
かなりデジタルに変化するので、25%、75%などを境目に、石差評価に変更すると、
ある程度回避できるんじゃないかと思います。
今までsoftmaxで確率分布を変えていましたが、あまり大きな差はついていないようだった
ので、この際、思いっきり割り切ってみました。1位に70%、2位に25%、残り5%で他の
手に均等割り。イメージとしては1σ、2σ、その他って感じです。ヒューリスティックは
αβのmoveorderのものを使用。
もちろんzebraにはぼろ負けですが、今までと違うのは、相手を囲んで着手可能位置を
減らしてしまう事が無くなりました。ちょっとした手ごたえを感じています。これをスタート
に、ヒューリスティックに終盤変化を組み込んだり、序盤は開放度にしてみたりして検証
しようかと思っています。プレイアウトの精度があがったら、無駄にツリー展開しなくて
済むので、メモリーにも優しくなれるかも。
また、敗勢での発狂モードや、勝勢での手抜きモードの原因は、勝敗が明らかになり、
手毎の勝率の差がなくなる事が原因です。プレイアウト回数が多いからか、評価値は
かなりデジタルに変化するので、25%、75%などを境目に、石差評価に変更すると、
ある程度回避できるんじゃないかと思います。
678310
2016/12/19(月) 00:57:35.60ID:V27xPT8O 地味に色々改良。素UCTに色々追加してます。
・uctの終盤にsolverを組み込んだ
・手の割り振りに全手均等な部分を作って読み抜けの可能性を減らした
の2点が主な追加点です
当初想定していたより結構強くなったと思います。
AI黒番30秒探索。zebra思考中にもMAX30秒探索で、zebraに対しては20石強負け
くらい。序盤1回間違えて、中盤ジワジワ差が広がって、40手前後で読み切りできず
に間違う感じ。序盤は定石で回避できると思いますが、中盤の間違いは2番手の手を
選んでしまいます。修正は難しい感じ。終盤はチューニングか、探索時間延長で対応
できないか検討。
テストで作った20手目で黒+12(zebra評価値)程度の盤面からは、zebraが間違える
のか、終盤に入るところまで、かなり押してまして、読み切りミスで22石差→16石差と
ぬるい手を打ちましたが、勝ち切る事ができるようになりました。
ここから先は、レーティングが欲しいなぁ。
オセロでAI使用OKなところないですかね?
・uctの終盤にsolverを組み込んだ
・手の割り振りに全手均等な部分を作って読み抜けの可能性を減らした
の2点が主な追加点です
当初想定していたより結構強くなったと思います。
AI黒番30秒探索。zebra思考中にもMAX30秒探索で、zebraに対しては20石強負け
くらい。序盤1回間違えて、中盤ジワジワ差が広がって、40手前後で読み切りできず
に間違う感じ。序盤は定石で回避できると思いますが、中盤の間違いは2番手の手を
選んでしまいます。修正は難しい感じ。終盤はチューニングか、探索時間延長で対応
できないか検討。
テストで作った20手目で黒+12(zebra評価値)程度の盤面からは、zebraが間違える
のか、終盤に入るところまで、かなり押してまして、読み切りミスで22石差→16石差と
ぬるい手を打ちましたが、勝ち切る事ができるようになりました。
ここから先は、レーティングが欲しいなぁ。
オセロでAI使用OKなところないですかね?
679310
2016/12/22(木) 01:29:32.37ID:4YVdXlZ1 地味に色々改良した結果、あらかたボツにしてます(汗
発狂モード対策でスコア最大化を図ろうとしていましたが、極端なスコアが悪さしている
ようなので、結局勝率のみに限定しました。この時点で終盤はsolver任せに方針転換。
で、勝敗のみにした事で、solverの探索範囲を+-1のシングルウィンドウにできて
スピードアップしたのでプレイアウトのラスト7手くらいでも使用する事にしました。
プレイアウトでは、moveorder順の下位はバッサリカットしました。酷い手が混入する
とスコアが散らかるので。
uctのif分ネストがスパゲッティ化したので、処理順を大幅に見直したら、時々落ちるように
なってしまった。並列化が原因かそれともshared_ptrの使い方が悪いのか、散々調べた
結果、ちゃんと全体をリビルドすれば回避できる事が判明。俺の時間を返せorz
テストで使用している引分手順30手目から開始すると、たいていは負けてしまうけど、
希にzebraが認識していない勝利手順を見つけて勝つようになった。乱数の具合なので
再現性は低いけど、zebraの評価値にも間違いがある事を実感した。
ここのところ30手目〜40手目をターゲットに改善していたけど、それなりに成果が出た。
40手目以後はsolverを使用し、対局開始は定石DBを20手分くらい用意したら、まあまあ
なAIになるかなぁと思い始めました。ただ、1手30秒考えるのは長すぎるなぁ。
あと、正しい手順を見つけ勝率も上回って来ているのに、探索時間が足りずにプレイアウト
回数で負けて最善手が選ばれないケースが散見されます。ものの本だと、そういう時は
探索時間を延長するとか書かれていますので、対応してみようかと思っています。
というわけで、なんか行けそうな気がしてきた。
発狂モード対策でスコア最大化を図ろうとしていましたが、極端なスコアが悪さしている
ようなので、結局勝率のみに限定しました。この時点で終盤はsolver任せに方針転換。
で、勝敗のみにした事で、solverの探索範囲を+-1のシングルウィンドウにできて
スピードアップしたのでプレイアウトのラスト7手くらいでも使用する事にしました。
プレイアウトでは、moveorder順の下位はバッサリカットしました。酷い手が混入する
とスコアが散らかるので。
uctのif分ネストがスパゲッティ化したので、処理順を大幅に見直したら、時々落ちるように
なってしまった。並列化が原因かそれともshared_ptrの使い方が悪いのか、散々調べた
結果、ちゃんと全体をリビルドすれば回避できる事が判明。俺の時間を返せorz
テストで使用している引分手順30手目から開始すると、たいていは負けてしまうけど、
希にzebraが認識していない勝利手順を見つけて勝つようになった。乱数の具合なので
再現性は低いけど、zebraの評価値にも間違いがある事を実感した。
ここのところ30手目〜40手目をターゲットに改善していたけど、それなりに成果が出た。
40手目以後はsolverを使用し、対局開始は定石DBを20手分くらい用意したら、まあまあ
なAIになるかなぁと思い始めました。ただ、1手30秒考えるのは長すぎるなぁ。
あと、正しい手順を見つけ勝率も上回って来ているのに、探索時間が足りずにプレイアウト
回数で負けて最善手が選ばれないケースが散見されます。ものの本だと、そういう時は
探索時間を延長するとか書かれていますので、対応してみようかと思っています。
というわけで、なんか行けそうな気がしてきた。
680310
2016/12/27(火) 01:58:53.16ID:lSRXuhfg uctの探索部分がある程度できたので、とりあえずDOS窓ベースでゲームとして成り立つ
ようにしました。edax-pvbook_2009.wtbから作った40手分の定石DBをつけて、終盤探索
は40手目からsolverで。multi probe cutできないので、FFO#40で1.3秒程度の性能です。
その他諸々。探索時間延長とか。タイマーを作り直してプログレスバーつけたり。
WZebraの20手読み、定石DB変化大相手に、まれに勝ちます。直接対決はまだして
ませんが、以前自分が作ったmin-Max版よりちょっと弱いくらいかなという感触です。
モンテカルロは乱数がらみで、ナチュラルに変化しちゃうので、5〜10手に1回程度は
ミスをしちゃう感じです。
プレイアウトはもう少し詰められそうだけど、まあこの辺が潮時かなぁ。
次は何しようかな。
ようにしました。edax-pvbook_2009.wtbから作った40手分の定石DBをつけて、終盤探索
は40手目からsolverで。multi probe cutできないので、FFO#40で1.3秒程度の性能です。
その他諸々。探索時間延長とか。タイマーを作り直してプログレスバーつけたり。
WZebraの20手読み、定石DB変化大相手に、まれに勝ちます。直接対決はまだして
ませんが、以前自分が作ったmin-Max版よりちょっと弱いくらいかなという感触です。
モンテカルロは乱数がらみで、ナチュラルに変化しちゃうので、5〜10手に1回程度は
ミスをしちゃう感じです。
プレイアウトはもう少し詰められそうだけど、まあこの辺が潮時かなぁ。
次は何しようかな。
681名前は開発中のものです。
2016/12/27(火) 06:12:54.86ID:A0w16iJG Vectorとかで配布しては?
682310
2016/12/28(水) 10:02:51.11ID:8e16q4EG vectorは考えてないですが、どこかでソース晒しても良いかなと思っています。
しばし検討。
なおUCT探索の探索時間は30秒にしてます。微妙な時は10秒づつ探索延長します。
また、人間が長考すると、その分だけバックグラウンドで探索が進んで強くなります。
気が長い人におすすめです。
しばし検討。
なおUCT探索の探索時間は30秒にしてます。微妙な時は10秒づつ探索延長します。
また、人間が長考すると、その分だけバックグラウンドで探索が進んで強くなります。
気が長い人におすすめです。
683名前は開発中のものです。
2016/12/29(木) 00:29:19.19ID:T+iok27x GGSってまだあるんだっけか
トッププログラムの開発者はみんなあそこで対戦しつつ改良してる
トッププログラムの開発者はみんなあそこで対戦しつつ改良してる
684310
2016/12/30(金) 02:11:45.43ID:iZpfxqhq >>683
GGS探したけど見つかりません。
オセロのAI自体、行き着くところまで行っちゃってるからなぁ。
コメントの整備をしていたら、細かいところが気になって、あちこち手を入れています。
手を入れながら、UCTの探索結果があるので、それでmoveorderすれば良い事に気が
つきまして。SOLVERが少し早くなったので、終盤探索は38手に格上げ。
しかし、テストプレイしていたら、SOLVERのバグ発見。終局まで打ち続けると、50手目
近辺で間違えます。並列探索部分で、negaScout的に再探索かかったあたりにバグが
ありそうという所まで絞り込みましたが、ちょっと厄介な感じ。
ソース晒す用に昔使ってたDTIのホームページを使えないか調べたら、サービスごと
終了してました(汗。
久々にオセロAIで検索したら、MLPでAIのテストをしている人がいました。評価関数では
なく、次の1手で使っているようです。比較的軽い構成なので、気が向いたらもう一度、
トライしてみようかと思います。
GGS探したけど見つかりません。
オセロのAI自体、行き着くところまで行っちゃってるからなぁ。
コメントの整備をしていたら、細かいところが気になって、あちこち手を入れています。
手を入れながら、UCTの探索結果があるので、それでmoveorderすれば良い事に気が
つきまして。SOLVERが少し早くなったので、終盤探索は38手に格上げ。
しかし、テストプレイしていたら、SOLVERのバグ発見。終局まで打ち続けると、50手目
近辺で間違えます。並列探索部分で、negaScout的に再探索かかったあたりにバグが
ありそうという所まで絞り込みましたが、ちょっと厄介な感じ。
ソース晒す用に昔使ってたDTIのホームページを使えないか調べたら、サービスごと
終了してました(汗。
久々にオセロAIで検索したら、MLPでAIのテストをしている人がいました。評価関数では
なく、次の1手で使っているようです。比較的軽い構成なので、気が向いたらもう一度、
トライしてみようかと思います。
685310
2016/12/30(金) 20:08:38.43ID:iZpfxqhq バグ直りました。数日前に速度アップできると思いつきで直したところでした。
直ったは良いけど、何故バグるのか理解できないorz
直ったは良いけど、何故バグるのか理解できないorz
686名前は開発中のものです。
2017/01/01(日) 01:33:49.09ID:AXNNcWXn 個人的にはディープラーニングやって欲しい
687310
2017/01/02(月) 09:01:41.61ID:YMPtqKka いま、Bloogerにサイトを作ってやっつけで解説文を作ってます。
あらかたできたら公開します。
が、解説していると細かいバグを見つけて、直して確認が必要になるという…。
やっぱ次はディープラーニングですよね。Eigen使ったMLPで次の1手をやってみます。
DCNNももう一度トライしたいと思っていますが、貧弱なパソコン環境ではどうにもならない
かも知れない。
あらかたできたら公開します。
が、解説していると細かいバグを見つけて、直して確認が必要になるという…。
やっぱ次はディープラーニングですよね。Eigen使ったMLPで次の1手をやってみます。
DCNNももう一度トライしたいと思っていますが、貧弱なパソコン環境ではどうにもならない
かも知れない。
688535
2017/01/06(金) 21:06:02.45ID:/dmWmgCn ネット碁でアルファ碁が無双してるみたいですね。
60連勝?とか凄すぎw
60連勝?とか凄すぎw
689310
2017/01/09(月) 14:10:27.74ID:kUxHCmxW 60連勝の相手が、マジトップ棋士だってんだから、あきれるしかないですね(笑
解説書きながらソース見てたら、色々直したくなってしまい、泥沼化しています(汗
強くなったと思ったら弱くなっていたというのの繰り返しです。
解説書きながらソース見てたら、色々直したくなってしまい、泥沼化しています(汗
強くなったと思ったら弱くなっていたというのの繰り返しです。
690535
2017/01/15(日) 01:15:01.84ID:FqCBSr/V TensorFlowで学ぶディープラーニング入門って本読んでます。
かなり易しく書こうとしてるのが伝わってくる本なんですがそれでも難しい。orz
かなり易しく書こうとしてるのが伝わってくる本なんですがそれでも難しい。orz
691310
2017/01/16(月) 13:21:19.22ID:Cfoi8GBB カーネルサイズとかチャンネルとかフィルターのあたりですか?
僕の方は・・・モンテカルロだから間違えると思って、思考時間を増やしたり、末端ノードで
1回づつじゃなくて、100回づつプレイアウトするようにしたりして、プレイアウト回数を稼い
だところ、「同じところで同じように安定的に間違える」ようになってしまいまして(汗。
プレイアウトは適当でも、とにかくツリー展開させるか、それともプレイアウトである程度
正確な勝率を得るけど、ツリー展開は減らさないように努力するのか。その辺で、また
悩み始めてしまいまして。edaxの引き分けBOOKから何か情報が取れないかと頑張って
ますが・・・。そろそろ飽きてきちゃったんだよなぁ。
僕の方は・・・モンテカルロだから間違えると思って、思考時間を増やしたり、末端ノードで
1回づつじゃなくて、100回づつプレイアウトするようにしたりして、プレイアウト回数を稼い
だところ、「同じところで同じように安定的に間違える」ようになってしまいまして(汗。
プレイアウトは適当でも、とにかくツリー展開させるか、それともプレイアウトである程度
正確な勝率を得るけど、ツリー展開は減らさないように努力するのか。その辺で、また
悩み始めてしまいまして。edaxの引き分けBOOKから何か情報が取れないかと頑張って
ますが・・・。そろそろ飽きてきちゃったんだよなぁ。
692535
2017/01/16(月) 21:00:44.96ID:UThQer2a 専門用語はよくわかりませんが、付属のサンプルコードをなんとなく動かしてます。
行列と誤差関数を定義してやればtensorflowが勝手に最適化してくれるとか。
成果でないとめげてきますよね。
ここらで一発アルファ碁級のブレークスルーが欲しいですねw
行列と誤差関数を定義してやればtensorflowが勝手に最適化してくれるとか。
成果でないとめげてきますよね。
ここらで一発アルファ碁級のブレークスルーが欲しいですねw
693310
2017/01/16(月) 22:06:12.04ID:cVXIBPCK あれはやっぱマシンパワーが・・・
一旦計算できちゃってもそれなりの重さなんだけど、学習しようと思うと重さにめげます。
というか、やる気すら起きないレベルorz
とりあえず、実際の最善手順が、ヒューリスティックの何番目かを統計的に処理して、
プレイアウト関数の手のバラつきを表現しようかと思って、プログラム作ってEXCELで
集計して、それなりに計算が簡素にできる形に変形してなんてやりましたが、やった
所で、何番目を選ぶかはランダムではなくて理由があっての事なんだよなぁと…
ちっとマシなヒューリスティックとか言い出すと…できない事をしようとしている事に深く
思い至るわけで。
一旦計算できちゃってもそれなりの重さなんだけど、学習しようと思うと重さにめげます。
というか、やる気すら起きないレベルorz
とりあえず、実際の最善手順が、ヒューリスティックの何番目かを統計的に処理して、
プレイアウト関数の手のバラつきを表現しようかと思って、プログラム作ってEXCELで
集計して、それなりに計算が簡素にできる形に変形してなんてやりましたが、やった
所で、何番目を選ぶかはランダムではなくて理由があっての事なんだよなぁと…
ちっとマシなヒューリスティックとか言い出すと…できない事をしようとしている事に深く
思い至るわけで。
694310
2017/01/17(火) 00:25:27.65ID:SLwZ7IwS 統計処理して作ったプレイアウト関数も結局ダメでしたorz
最後はやっぱりBOOK頼みになっちゃいます。
もう一回NNに行って次の1手計算させてみるべかな。
最後はやっぱりBOOK頼みになっちゃいます。
もう一回NNに行って次の1手計算させてみるべかな。
695535
2017/01/17(火) 21:19:41.12ID:wCDEMY6U モンテカルロ木探索ってわざと悪い手打ってる?ていうぐらい期待外れの手を打ちますねw
プレイアウトの質改善が必須か…
プレイアウトの質改善が必須か…
696310
2017/01/17(火) 22:04:13.23ID:SLwZ7IwS 例えば40手目くらいの盤面で、UCTの選択基準であるところの実行回数で次の1手を
並べると、トータルではzebraの完全読みの良い手から順に並んでくるんだけど、ところ
どころ順位が入れ替わるんだよね。その入れ替わる場所が、1位と2位とかだと−2して
しまうし、時々−10くらいの手を選んでしまったりする。
囲碁のプレイアウトをちょっと調べたら、やっぱり盤面のパターンを評価して、次の
1手の順位を決めて、点数に応じて着手確率を変えたり、あからさまに悪い手はカット
するみたいな事をしている。そちらの知見では、良いプレイアウトなら回数は少なくて
も何とかなるみたいな話になってる。
今の相手着手可能数ベースで、edaxのpvbook_2009の最善手順を評価すると、1位の手
が選ばれている確率は42%くらいで、2位で17%と、思いのほか手が散っているんです。
これ、同点1位は、ソート順で2位以下にするのではなく1位にまとめるようにしてあるから、
マッチング率が想像していたより悪いって事になります。
別の方法で次の1手ヒューリスティックを作って、一致率を例えば75%〜80%くらいに
までできないかなぁと思いまして。結局、もうしばらくモンテカルロを継続する事にしました。
NNに行く前に、縦横斜めのパターンでベースとなる一致率を作ってみようかなと思います。
並べると、トータルではzebraの完全読みの良い手から順に並んでくるんだけど、ところ
どころ順位が入れ替わるんだよね。その入れ替わる場所が、1位と2位とかだと−2して
しまうし、時々−10くらいの手を選んでしまったりする。
囲碁のプレイアウトをちょっと調べたら、やっぱり盤面のパターンを評価して、次の
1手の順位を決めて、点数に応じて着手確率を変えたり、あからさまに悪い手はカット
するみたいな事をしている。そちらの知見では、良いプレイアウトなら回数は少なくて
も何とかなるみたいな話になってる。
今の相手着手可能数ベースで、edaxのpvbook_2009の最善手順を評価すると、1位の手
が選ばれている確率は42%くらいで、2位で17%と、思いのほか手が散っているんです。
これ、同点1位は、ソート順で2位以下にするのではなく1位にまとめるようにしてあるから、
マッチング率が想像していたより悪いって事になります。
別の方法で次の1手ヒューリスティックを作って、一致率を例えば75%〜80%くらいに
までできないかなぁと思いまして。結局、もうしばらくモンテカルロを継続する事にしました。
NNに行く前に、縦横斜めのパターンでベースとなる一致率を作ってみようかなと思います。
697535
2017/01/21(土) 14:40:41.23ID:7GkfgTKT プログラム作るなら単体テストは必須ですね…
後から後からバグが溢れてくる…
後から後からバグが溢れてくる…
698535
2017/01/21(土) 15:30:15.75ID:7GkfgTKT 机上デバッグはいやだお…T△T
辛すぎる…
辛すぎる…
699310
2017/01/22(日) 23:15:41.71ID:7cgxubHE 思いっきり同感だけど、結局サボるというorz
実はモンテカルロやってるから見なかった事にしているけど、Solverにバグがあります。
発生する条件も薄々わかっています。いつの間にバグを仕込んだのか。
さて、プレイアウトのヒューリスティックですが、縦横斜めのラインで、その形が現れた
回数、着手された回数のデータベースを作って、プレイアウトの次の1手の時に、それ
ぞれの確率を縦横斜めで集計して、その高い順にsoftmaxで確率分布にして、着手を
選択させる形にしました。
結果は・・・。ヒューリスティックの次の1手としての精度はいまいちですが、それでも
上位3〜4位くらいには最善手が入ってる感じになります。でも、評価値が極端に出過ぎ
ている感じで、ダメダメな感じになりました。確率のバラつきが小さいように感じたので、
ちょっと修正してみましたがダメなので、思い切って累積確率50%でカットしてみました。
この辺で大体3〜4位までの着手になります。少しマシになったけど、やはりダメ。
softmaxの計算が重いため、プレイアウト回数が1/7くらいに減ってしまうんだけど、それを
補う精度が出ていない感じです。楽ちんなのでunordered_map使ってますが、もっと速度を
出そうと思うんなら、他の方法を考えた方が良いかも。
簡潔なプレイアウトで秒間プレイアウト数を稼いで、枝を伸ばす方向に逃げたい気持ちを
ぐっと抑えつつ、引き続いてニューラルネット系で次の1手を求めてみたいと思います。
更にスピード低下するので、いま以上に精度が出ないと・・・。
実はモンテカルロやってるから見なかった事にしているけど、Solverにバグがあります。
発生する条件も薄々わかっています。いつの間にバグを仕込んだのか。
さて、プレイアウトのヒューリスティックですが、縦横斜めのラインで、その形が現れた
回数、着手された回数のデータベースを作って、プレイアウトの次の1手の時に、それ
ぞれの確率を縦横斜めで集計して、その高い順にsoftmaxで確率分布にして、着手を
選択させる形にしました。
結果は・・・。ヒューリスティックの次の1手としての精度はいまいちですが、それでも
上位3〜4位くらいには最善手が入ってる感じになります。でも、評価値が極端に出過ぎ
ている感じで、ダメダメな感じになりました。確率のバラつきが小さいように感じたので、
ちょっと修正してみましたがダメなので、思い切って累積確率50%でカットしてみました。
この辺で大体3〜4位までの着手になります。少しマシになったけど、やはりダメ。
softmaxの計算が重いため、プレイアウト回数が1/7くらいに減ってしまうんだけど、それを
補う精度が出ていない感じです。楽ちんなのでunordered_map使ってますが、もっと速度を
出そうと思うんなら、他の方法を考えた方が良いかも。
簡潔なプレイアウトで秒間プレイアウト数を稼いで、枝を伸ばす方向に逃げたい気持ちを
ぐっと抑えつつ、引き続いてニューラルネット系で次の1手を求めてみたいと思います。
更にスピード低下するので、いま以上に精度が出ないと・・・。
700535
2017/01/23(月) 23:10:08.18ID:ii9ofJgq 黒番限定ですがLV2に勝ち越せる?というところまで来ました。
何をやっているかというとLV2とLV3を対戦させた棋譜を大量に集めて、
LV2に勝てる手順のDBを作ってナゾルということをやっていますw
まあほとんどチートみたいなものですが、棋譜を集めれば集めるほど
勝てるようになるのでなかなか面白いです。
白番だとLV2が盤の中央からゲームを始めないのでうまくいかなかったりしますw
何をやっているかというとLV2とLV3を対戦させた棋譜を大量に集めて、
LV2に勝てる手順のDBを作ってナゾルということをやっていますw
まあほとんどチートみたいなものですが、棋譜を集めれば集めるほど
勝てるようになるのでなかなか面白いです。
白番だとLV2が盤の中央からゲームを始めないのでうまくいかなかったりしますw
701名前は開発中のものです。
2017/01/23(月) 23:46:45.10ID:ii9ofJgq 勝利手順のDBからディープラーニングで評価関数を抽出することを考えていますが
今のところ全くうまくいく気配がありませんT△T
今のところ全くうまくいく気配がありませんT△T
702310
2017/01/26(木) 21:23:21.53ID:foYEIc8+ >>700
Buroさんは逐次的にBOOK学習やってました。
僕は論文が理解しきれなかったのと、それやると特定AI相手だけに強いAIが作れて
しまうので禁じ手にしちゃいましたが、オセロというゲームの底の浅さからすると、
それが正解かも知れない(汗
デバッグ兼ねてZebraと対戦していたら、ZebraのBOOKが強化されていくのが実感
できてしまいました。
Buroさんは逐次的にBOOK学習やってました。
僕は論文が理解しきれなかったのと、それやると特定AI相手だけに強いAIが作れて
しまうので禁じ手にしちゃいましたが、オセロというゲームの底の浅さからすると、
それが正解かも知れない(汗
デバッグ兼ねてZebraと対戦していたら、ZebraのBOOKが強化されていくのが実感
できてしまいました。
703310
2017/01/26(木) 21:32:27.07ID:foYEIc8+ さて、本日は非常にショックな事が判明しました。
次の1手を求めるNNを作って、大体できたのでAIに組み込んでました。
NNは以前にEigenで作ったものの流用改造。とりあえず学習結果が確認できる
ところまでやったら、コンパイルが通らない。C2059というエラー。前にも何回か
出ていて、ライブラリの順番いじると直るので放置していた奴。何かの名前が
組み込んだライブラリ間で衝突していると起きるらしい。それが途中からどうにも
直らなくなってしまった。
で、ようやく重い腰をあげて何が衝突しているのか調べたら、A1とかC1とかの
着手位置を表す#defineの定義が、Eigenの内部の型か何かの定義と被ってる。
こちらは#defineなのでnamespaceで回避できない。
楽に回避できる方法を色々考えたあげく、結局、C++良く知らなくてCとしてプログラム
書いていた頃から引きずって#defineを使っているのが悪いのだと気が付いて、
クラスとenumで対処するという、全面作り替えにする事にしてしまいました。
というわけで、修正に3日くらいかかりそうですorz
次の1手を求めるNNを作って、大体できたのでAIに組み込んでました。
NNは以前にEigenで作ったものの流用改造。とりあえず学習結果が確認できる
ところまでやったら、コンパイルが通らない。C2059というエラー。前にも何回か
出ていて、ライブラリの順番いじると直るので放置していた奴。何かの名前が
組み込んだライブラリ間で衝突していると起きるらしい。それが途中からどうにも
直らなくなってしまった。
で、ようやく重い腰をあげて何が衝突しているのか調べたら、A1とかC1とかの
着手位置を表す#defineの定義が、Eigenの内部の型か何かの定義と被ってる。
こちらは#defineなのでnamespaceで回避できない。
楽に回避できる方法を色々考えたあげく、結局、C++良く知らなくてCとしてプログラム
書いていた頃から引きずって#defineを使っているのが悪いのだと気が付いて、
クラスとenumで対処するという、全面作り替えにする事にしてしまいました。
というわけで、修正に3日くらいかかりそうですorz
704名前は開発中のものです。
2017/01/26(木) 21:36:49.48ID:NsrLS1+v 乙
705535
2017/01/26(木) 21:43:44.99ID:NsrLS1+v >特定AI相手だけに強いAIが作れて
ディープラーニングが成功すれば汎用度もちっとは違うのかもですが。
ディープラーニングが成功すれば汎用度もちっとは違うのかもですが。
706535
2017/01/26(木) 21:54:02.30ID:NsrLS1+v 強い詰みルーチンが欲しいですねぇ。
DBでほぼ勝ちという局面にもっていってもポロッと落とすことが結構ある。
DBでほぼ勝ちという局面にもっていってもポロッと落とすことが結構ある。
707310
2017/01/26(木) 21:56:01.75ID:foYEIc8+ あ、もしかしてenumってunsigned __int64が使えないのか・・・
708535
2017/01/26(木) 23:23:42.26ID:NsrLS1+v DBは勝率で手を選ぶよりも累計勝利数で手を選んだほうが良いっぽい。
そのほうが勝利再現率が上がるっぽい。
そのほうが勝利再現率が上がるっぽい。
709535
2017/01/29(日) 01:07:10.63ID:uZb/TXFd 負けた手順に対して手動でDBを修正するという汎用性がみじんもない作業を始めましたw
なにかドカンと強くなる方法ないかなぁ
なにかドカンと強くなる方法ないかなぁ
710310
2017/01/29(日) 13:11:46.36ID:rGbRSmBn enumで__int64使えますね。というか、どこかのバージョンから使えるようになってましたね。
何か裏ワザ的な使い方考え付かないかと思って試しましたが結局ダメで、前から気になって
いた箇所をクラス化しだしたら大規模改造になってしまいました。
オブジェクト指向を忠実に実行しようとすると、結局何度もライブラリ作り直す羽目になると
いう本末転倒な状態(汗
色々ドタバタしていたので、オセロ共通のクラスのみ修正完了。ロジック部分はこれから。
何か裏ワザ的な使い方考え付かないかと思って試しましたが結局ダメで、前から気になって
いた箇所をクラス化しだしたら大規模改造になってしまいました。
オブジェクト指向を忠実に実行しようとすると、結局何度もライブラリ作り直す羽目になると
いう本末転倒な状態(汗
色々ドタバタしていたので、オセロ共通のクラスのみ修正完了。ロジック部分はこれから。
711535
2017/01/30(月) 23:07:35.87ID:nIJrclSx ファイル出力が思いのほか重い。
知識では知ってたけど今回、実感しました。
DB作るときは棋譜をまとめて読み込んで書きこみは1回だけとか工夫しないとだめですな。
知識では知ってたけど今回、実感しました。
DB作るときは棋譜をまとめて読み込んで書きこみは1回だけとか工夫しないとだめですな。
712310
2017/01/31(火) 01:06:15.90ID:tF0OU/RM713310
2017/01/31(火) 01:17:50.59ID:tF0OU/RM 困った。3層MLPで次の1手を、
http://qiita.com/kanlkan/items/6bff417519ed7d5ce4da
を参考にして求めている(若干やり方が違う)のだけど、思ったように学習してくれない。
NNの計算どっかおかしい気がしてきたorz
http://qiita.com/kanlkan/items/6bff417519ed7d5ce4da
を参考にして求めている(若干やり方が違う)のだけど、思ったように学習してくれない。
NNの計算どっかおかしい気がしてきたorz
714310
2017/02/01(水) 15:57:52.90ID:DrzIg7bz ひょんな事から学習できました。デバッグ用に学習データを減らしてテストをしようとしたら
学習できてしまいまして。件数を増やすとダメになる模様。
これは仮説ですが、多種多様な棋譜を学習させると、ネットワークの自由度が不足して、
ウェイト更新が相互に打ち消し合った結果、ウエイトがゼロ(勾配消失)に陥ってしまうと。
学習に失敗した時は、大半のテストの結果が、全て同じ確率(softmaxのため)となってい
ます。中身は見ていませんが、softmax関数を通す前はオールゼロとなっている事が十分
に想像できます。
今から思うと、NNで評価関数を作ろうとして失敗していた時も、同じ状態だったのかなと。
学習データを減らすと精度が落ちますので、ネットワークをより複雑かつ大規模にしない
といけないのかなぁと。結局、同じ問題(ネットワークを大規模化しなきゃいけないけど、
自前のパソコンでは計算が厳しい上に、結果を使用する方もタイムクリティカルなので
あまりややこしくしたくない)の周りをグルグルしはじめてしまいました(汗
学習できてしまいまして。件数を増やすとダメになる模様。
これは仮説ですが、多種多様な棋譜を学習させると、ネットワークの自由度が不足して、
ウェイト更新が相互に打ち消し合った結果、ウエイトがゼロ(勾配消失)に陥ってしまうと。
学習に失敗した時は、大半のテストの結果が、全て同じ確率(softmaxのため)となってい
ます。中身は見ていませんが、softmax関数を通す前はオールゼロとなっている事が十分
に想像できます。
今から思うと、NNで評価関数を作ろうとして失敗していた時も、同じ状態だったのかなと。
学習データを減らすと精度が落ちますので、ネットワークをより複雑かつ大規模にしない
といけないのかなぁと。結局、同じ問題(ネットワークを大規模化しなきゃいけないけど、
自前のパソコンでは計算が厳しい上に、結果を使用する方もタイムクリティカルなので
あまりややこしくしたくない)の周りをグルグルしはじめてしまいました(汗
715535
2017/02/02(木) 23:55:47.04ID:JZtX1mUx まとめて読むようにしたら3日かかったDB作成が数分で終了しましたw
しかしDBがかなり肥大化してしまいました。
読み込みに5秒くらいかかる。
しかもこの手法だとLV2には勝てるけどLV3には勝てないし。
LV2はパターン少ないからDBで勝利手順なぞれるけどLV3はパターンが多くてカバーできない(多分)。
そろそろ別の手を考えなければ。
しかしDBがかなり肥大化してしまいました。
読み込みに5秒くらいかかる。
しかもこの手法だとLV2には勝てるけどLV3には勝てないし。
LV2はパターン少ないからDBで勝利手順なぞれるけどLV3はパターンが多くてカバーできない(多分)。
そろそろ別の手を考えなければ。
716535
2017/02/03(金) 20:14:00.97ID:jkxdJ711 DBを使ってモンテカルロ木探索の探索結果を永続的に蓄積するというのをちょっと思案中。
計算すればするほどDBが洗練されていく感じで。
計算すればするほどDBが洗練されていく感じで。
717310
2017/02/03(金) 20:39:47.64ID:dv6j41bl >>716
同じ事妄想したけど、それなら後方枝刈付のmin-Maxの探索結果をひたすら
ため込んでいく方が容量的にも速度的にも有利で、それができないからモンテ
カルロだって事に思いいたりました(汗
min-Maxなら、いらない枝カットできるかと思いきや、相手がそこに打っちゃった
時の事を考えたら捨てられない事にも気づきました(汗汗
で、適当なところだけ保存して、残りは別途探索・・・って、これ定石DBやん!
というオチでした。
同じ事妄想したけど、それなら後方枝刈付のmin-Maxの探索結果をひたすら
ため込んでいく方が容量的にも速度的にも有利で、それができないからモンテ
カルロだって事に思いいたりました(汗
min-Maxなら、いらない枝カットできるかと思いきや、相手がそこに打っちゃった
時の事を考えたら捨てられない事にも気づきました(汗汗
で、適当なところだけ保存して、残りは別途探索・・・って、これ定石DBやん!
というオチでした。
718名前は開発中のものです。
2017/02/03(金) 20:45:51.93ID:jkxdJ711 ボツ案でしたか。
でもまあ、とりあえずDBを充実させる方向でやってみます。
他に案がないので。
ディープラーニングがうまくいけばなぁ。
でもまあ、とりあえずDBを充実させる方向でやってみます。
他に案がないので。
ディープラーニングがうまくいけばなぁ。
719535
2017/02/03(金) 20:49:10.94ID:jkxdJ711 今のところ黒番対LV2は2勝一敗ペースてな感じです。
もっと勝てるかと思ったけどそうでもないですね。
もっと勝てるかと思ったけどそうでもないですね。
720310
2017/02/03(金) 20:58:39.46ID:dv6j41bl こちとらディープラーニングで完全にドツボってますorz
721535
2017/02/04(土) 19:33:24.33ID:neMma6zi ディープラーニングは盤面情報だけじゃなくてこちらでなにがしかの特徴量を計算してやって
その数値も食わせたほうがすこしはましになるんだろうか。
その数値も食わせたほうがすこしはましになるんだろうか。
722310
2017/02/04(土) 20:57:26.78ID:ycMSfQXf オセロではBuroさんの評価関数と同じ特徴を入力にしたMLPで評価関数を作った
オセロプログラムがあります。vsOthaというソフトです。
今回はディープなので、できれば特徴量は自動抽出してもらいたいものではあります。
一応、黒白の盤面情報の他、着手可能位置は与えています。
と、ここまで書いて、着手可能位置を求めるように学習させられるのか、ふと気になった。
何らかの事前学習に使えそうな気がする。
やらずに悶々としているだけなのですが、DCNNの四角い窓ではオセロの特徴はうまく
抽出できないのではないかと思っていますが、他に方法が思いつかないのが悲しい。
オセロプログラムがあります。vsOthaというソフトです。
今回はディープなので、できれば特徴量は自動抽出してもらいたいものではあります。
一応、黒白の盤面情報の他、着手可能位置は与えています。
と、ここまで書いて、着手可能位置を求めるように学習させられるのか、ふと気になった。
何らかの事前学習に使えそうな気がする。
やらずに悶々としているだけなのですが、DCNNの四角い窓ではオセロの特徴はうまく
抽出できないのではないかと思っていますが、他に方法が思いつかないのが悲しい。
723名前は開発中のものです。
2017/02/05(日) 08:03:16.57ID:36jlTAsU そうかそうか
724535
2017/02/07(火) 20:48:43.68ID:qiXxRrUf 機械学習じゃだめだ、手書き評価関数しかない…
しばらくするといや、手書き評価関数じゃやっぱりだめだ、機械学習だ…
の無限ループw
しばらくするといや、手書き評価関数じゃやっぱりだめだ、機械学習だ…
の無限ループw
725310
2017/02/08(水) 21:46:39.89ID:GrcF81sn 昔mnistでオートエンコーダのテストした時のように、学習内容(ウェイト)をBMPにして
可視化してました。テストに時間がかかるので、色々すったもんだバグとりに時間が
かかってましたが、ようやくなんとか表示できるようになりました。で、とりあえず想定より
少な目の隠れ層4096個でテスト開始。
勾配ノイズ(焼きなまし)の設定値もでかすぎたので、設定値を自動計算するようにしたり。
NN復活当初うまく動かなかった原因がこれでした。
で、まだ学習途中なのですが、ウェイトデータ見ると192個(=64×3)毎に1ビットづつ
ずれるパターンに収れんしていっています。192といえば入力データのサイズで、
横に64個づつ並べたビットマップ画像に、まるで光子の回析実験のような縦じまが(汗
そんな周期性が生まれるはずがないので、どこかにバグがあるんじゃないかと。
表示するプログラムのバグかも知れないけど、1エポックに3時間かかるので、止めて
デバッグに入るか、それとも続行するかで悶々中…。
どっちにしても時間がかかるので、裏でDCNNをもう一度コーディング開始。
あまりにネストが深いのでミニバッチは一旦放棄してSGDで。
GoogleのTensorFlowがテンソルな意味が良くわかった。
DCNNだと元データが2次元で、更にチャンネルがある行列では次元が足りないorz
今最大の懸案は、とりあえず隠れ層4096でオートエンコーダの事前 学習しているけど、
それが終わり全体の学習にいって上手く行かなかった時、中間層を増やして再トライ
するか、それともDCNNに行ってしまうか。
可視化してました。テストに時間がかかるので、色々すったもんだバグとりに時間が
かかってましたが、ようやくなんとか表示できるようになりました。で、とりあえず想定より
少な目の隠れ層4096個でテスト開始。
勾配ノイズ(焼きなまし)の設定値もでかすぎたので、設定値を自動計算するようにしたり。
NN復活当初うまく動かなかった原因がこれでした。
で、まだ学習途中なのですが、ウェイトデータ見ると192個(=64×3)毎に1ビットづつ
ずれるパターンに収れんしていっています。192といえば入力データのサイズで、
横に64個づつ並べたビットマップ画像に、まるで光子の回析実験のような縦じまが(汗
そんな周期性が生まれるはずがないので、どこかにバグがあるんじゃないかと。
表示するプログラムのバグかも知れないけど、1エポックに3時間かかるので、止めて
デバッグに入るか、それとも続行するかで悶々中…。
どっちにしても時間がかかるので、裏でDCNNをもう一度コーディング開始。
あまりにネストが深いのでミニバッチは一旦放棄してSGDで。
GoogleのTensorFlowがテンソルな意味が良くわかった。
DCNNだと元データが2次元で、更にチャンネルがある行列では次元が足りないorz
今最大の懸案は、とりあえず隠れ層4096でオートエンコーダの事前 学習しているけど、
それが終わり全体の学習にいって上手く行かなかった時、中間層を増やして再トライ
するか、それともDCNNに行ってしまうか。
727535
2017/02/09(木) 22:03:30.31ID:qkkjChao728535
2017/02/10(金) 19:40:14.89ID:M6OFVkZO 黒番だとDBのせいで対LV1よりも対LV2のほうが勝率いいみたいw
めちゃくちゃ歪んだAIになってしまったw。
めちゃくちゃ歪んだAIになってしまったw。
729310
2017/02/10(金) 23:52:07.84ID:HUcinQI4 3日かけて学習したオートエンコーダ型はやっぱりダメでした。
可能性すら見えなかった。
というわけで、開き直ってDCNN開始。
前回はオセロ専用で展開形を作ってましたが、それではmnistなどでテストできない
ので、max_poolingも含めて、本格的にちゃんとしたものを作ってみました。
とはいえ、まだ畳み込み層の誤差逆伝播の解釈が正しいか、自信はありません。
また、テストで動かしたところ、なんかすごく重い印象です。
ちゃんと動くのかなぁ。
可能性すら見えなかった。
というわけで、開き直ってDCNN開始。
前回はオセロ専用で展開形を作ってましたが、それではmnistなどでテストできない
ので、max_poolingも含めて、本格的にちゃんとしたものを作ってみました。
とはいえ、まだ畳み込み層の誤差逆伝播の解釈が正しいか、自信はありません。
また、テストで動かしたところ、なんかすごく重い印象です。
ちゃんと動くのかなぁ。
730名前は開発中のものです。
2017/02/11(土) 10:06:04.43ID:CnQo/DsP GGSはmimosaというソフトを使うと入れますよ
732310
2017/02/14(火) 20:21:59.60ID:lpq90WbI 自作ライブラリにDCNNのレイヤーを書いたのですが、あまりの計算時間にデバッグ中に
めげて、試しにtiny_dnnというC++専用のNNライブラリを入れてみましたところ、自作の
10倍以上の速度で・・・こちらに乗り換えです。
で、tiny_dnnでmnistやって感度をつかんだところで、オセロの盤面を変換する処理を
書いて、小手調べに簡単なネットワークで動かそうとしてみたところ・・・盤面データの
変換の段階でメモリーが溢れて盛大にスワップ開始(^^;
5000,000盤面×100マス(Padding含む)×4チャンネル×4バイト(float)でデータだけで
8Gbytes。自分のパソコンのメモリーは8Gで、空いているメモリーは5Gちょいとメモリー
不足が判明しました。
いまどきのパソコンはメモリーでかいから一括でも大丈夫とか言って、このざまです(笑)。
tiny_dnnは全データ一括で渡して指定エポック回してくれる仕組みなのですが、仕方ない
ので、入力データを分割して、自分でループ回します。
α碁のハード環境がうらやましいorz
めげて、試しにtiny_dnnというC++専用のNNライブラリを入れてみましたところ、自作の
10倍以上の速度で・・・こちらに乗り換えです。
で、tiny_dnnでmnistやって感度をつかんだところで、オセロの盤面を変換する処理を
書いて、小手調べに簡単なネットワークで動かそうとしてみたところ・・・盤面データの
変換の段階でメモリーが溢れて盛大にスワップ開始(^^;
5000,000盤面×100マス(Padding含む)×4チャンネル×4バイト(float)でデータだけで
8Gbytes。自分のパソコンのメモリーは8Gで、空いているメモリーは5Gちょいとメモリー
不足が判明しました。
いまどきのパソコンはメモリーでかいから一括でも大丈夫とか言って、このざまです(笑)。
tiny_dnnは全データ一括で渡して指定エポック回してくれる仕組みなのですが、仕方ない
ので、入力データを分割して、自分でループ回します。
α碁のハード環境がうらやましいorz
733310
2017/02/15(水) 23:06:48.81ID:DozmM7Z3 色々細かく改造。やっぱライブラリがあると気が楽です(汗
簡単なネットワークの初期の学習の具合では正答率50%くらいが上限な印象だったので、
ネットワークを複雑にしてみました。で、1エポック8時間以上かなぁ。
もっとハードを・・・って真剣に思いますorz
簡単なネットワークの初期の学習の具合では正答率50%くらいが上限な印象だったので、
ネットワークを複雑にしてみました。で、1エポック8時間以上かなぁ。
もっとハードを・・・って真剣に思いますorz
734名前は開発中のものです。
2017/02/17(金) 23:21:12.85ID:ZDoCs64T AMDが今度発売するcpuが結構いいかもしれない
735310
2017/02/19(日) 20:31:51.68ID:PM1ZzNLK DCNNで学習させてるのですが、あまりに時間がかかるので、裏でもう一度
アルファ碁の論文を。日本語解説ページがいくつかできていて助かります。
で、読んでいたら、ロールアウトポリシーなる線形Softmaxでプレイアウトの
手を選択していると・・・。つまりはオセロ評価関数のような特徴を渡して、線形
回帰の代わりに出力をSoftmaxで確率分布にしたものです。
ロールアウトポリシーは棋譜との一致率が25%程度だけど、計算が圧倒的
に速く、このばらけ具合がちょうど良いとの事。
むむむ。アルファ碁はプレイアウトの手の選択にDCNN使ってないのねorz
日本語解説のおかげで、MCTS部の構造もようやくわかった。
いくらマシンが早くても無理だろと思っていた計算も、これなら何とかなりそう
レベルの構造に落とし込まれていて、納得しました。
でも、実はまだインプットに何を食わせているのかが、よくわからない(汗
アルファ碁の論文を。日本語解説ページがいくつかできていて助かります。
で、読んでいたら、ロールアウトポリシーなる線形Softmaxでプレイアウトの
手を選択していると・・・。つまりはオセロ評価関数のような特徴を渡して、線形
回帰の代わりに出力をSoftmaxで確率分布にしたものです。
ロールアウトポリシーは棋譜との一致率が25%程度だけど、計算が圧倒的
に速く、このばらけ具合がちょうど良いとの事。
むむむ。アルファ碁はプレイアウトの手の選択にDCNN使ってないのねorz
日本語解説のおかげで、MCTS部の構造もようやくわかった。
いくらマシンが早くても無理だろと思っていた計算も、これなら何とかなりそう
レベルの構造に落とし込まれていて、納得しました。
でも、実はまだインプットに何を食わせているのかが、よくわからない(汗
736535
2017/02/19(日) 22:19:16.15ID:FX6EUVR+ ついにアルファ碁論文まで…
英語かつ有料記事ということで私は手を出せずにいましたが日本語サイトもあるんですか。
ちょっとググってみるか…
英語かつ有料記事ということで私は手を出せずにいましたが日本語サイトもあるんですか。
ちょっとググってみるか…
737310
2017/02/20(月) 20:05:00.30ID:L40mCRWI 論文自体はだいぶ前にダウンロードしてたんですが(汗
MCTSやらない段階では、やはり理解は難しかったと思います。
DCNN部分の投入データあたりは囲碁の知識が必要だったりしますので、
まだよくわからない点が多いです。
で、MCTS的な視点から眺めると、巷の解説とは違うところにフォーカスが
あたったりします。強化学習使ったRL PolicyはValue netの事前学習で
使っていますが、プレイアウトの手の選択では線形Softmax、ノードの分岐
では教師付学習のものを使用しているなど、工夫が見られまして。オセロ
は既に評価関数があるので、無理やりDCNNしなくても応用が効くのでは
ないかと思ったりします。
とはいえ、今学習中の奴は、学習終わるまで1ヶ月くらいかかりそうではあり
ますが、どこまで手の一致率が高められるか、見てみたい気もしています。
MCTSやらない段階では、やはり理解は難しかったと思います。
DCNN部分の投入データあたりは囲碁の知識が必要だったりしますので、
まだよくわからない点が多いです。
で、MCTS的な視点から眺めると、巷の解説とは違うところにフォーカスが
あたったりします。強化学習使ったRL PolicyはValue netの事前学習で
使っていますが、プレイアウトの手の選択では線形Softmax、ノードの分岐
では教師付学習のものを使用しているなど、工夫が見られまして。オセロ
は既に評価関数があるので、無理やりDCNNしなくても応用が効くのでは
ないかと思ったりします。
とはいえ、今学習中の奴は、学習終わるまで1ヶ月くらいかかりそうではあり
ますが、どこまで手の一致率が高められるか、見てみたい気もしています。
738310
2017/02/20(月) 20:09:54.18ID:L40mCRWI 追記。なんか格好良く書きすぎですね。
ちょうど今MCTSで悩んでいる箇所に見事な回答を与えている点に感動。
日本語で読めたので、そこに速攻で気づく事ができたという事で。
とはいえ、アルファ碁の線形SoftmaxによるRollout関数の入力データは、
囲碁の特性がわからない事から、意味不明な事もまだあり、いずれにして
もそのままでは使え無さそうで、オセロに合わせて別途考えるしかなさそうです。
ちょうど今MCTSで悩んでいる箇所に見事な回答を与えている点に感動。
日本語で読めたので、そこに速攻で気づく事ができたという事で。
とはいえ、アルファ碁の線形SoftmaxによるRollout関数の入力データは、
囲碁の特性がわからない事から、意味不明な事もまだあり、いずれにして
もそのままでは使え無さそうで、オセロに合わせて別途考えるしかなさそうです。
739535
2017/02/23(木) 20:58:02.50ID:ONUfwXLw 連続対戦してると突然落ちるバグがあるっぽいが意図的に再現できない。
どうデバッグすりゃいいんだ。orz.
どうデバッグすりゃいいんだ。orz.
740名前は開発中のものです。
2017/02/23(木) 23:03:49.03ID:ONUfwXLw 再現した!
けど一回再現させんのに1時間かかるw
けど一回再現させんのに1時間かかるw
741535
2017/02/24(金) 21:40:56.21ID:sIjNtQpy コアダンプの吐かせ方がわからん。T△T
デバッグオプション付けてulimit -c unlimitedだけじゃだめなんか。
ちな環境はcygwin。
デバッグオプション付けてulimit -c unlimitedだけじゃだめなんか。
ちな環境はcygwin。
742名前は開発中のものです。
2017/02/24(金) 21:43:59.65ID:P/wI/gFl age
743535
2017/02/26(日) 00:05:27.56ID:TbeyqTpr やっと落ちてる場所見つかった。
ぬるぽだった
ぬるぽだった
744535
2017/02/26(日) 23:30:45.62ID:TbeyqTpr 特徴量とか便利すぎる言葉考えたやつ誰だよ。
いつでも特徴量が効率よく計算できるとは限らんだろうが。
マジムカつく。
いつでも特徴量が効率よく計算できるとは限らんだろうが。
マジムカつく。
745310
2017/02/27(月) 01:19:56.03ID:kLJ7ziJk 全く同感orz
746535
2017/02/28(火) 21:58:57.62ID:+JAecqpe ファイルに2Gの壁とかあんの?
2G以上のデータはどうやって受け渡せばいいんだ。
2G以上のデータはどうやって受け渡せばいいんだ。
747名前は開発中のものです。
2017/03/01(水) 12:15:45.60ID:jElZYckW 「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ
http://labaq.com/archives/51880196.html
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
https://bodoge.hoobby.net/columns/00013
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
http://gigazine.net/news/20150313-dice-empire/
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
実際のところ、自作ボードゲームってどれぐらい売れるもんなの?
http://roy.hatenablog.com/entry/2016/12/20/220102
ゲームマーケット2016春にて初参加サークルさんに作成数アンケートをとってきました
http://hidarigray.blog35.fc2.com/blog-entry-614.html
カフェも急増 ボードゲームにアラサーがハマる理由
http://style.nikkei.com/article/DGXMZO10921930R21C16A2000000?channel=DF260120166491
ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html
売り上げたけど何か聞きたいことはある?」回答いろいろ
http://labaq.com/archives/51880196.html
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
https://bodoge.hoobby.net/columns/00013
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
http://gigazine.net/news/20150313-dice-empire/
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
実際のところ、自作ボードゲームってどれぐらい売れるもんなの?
http://roy.hatenablog.com/entry/2016/12/20/220102
ゲームマーケット2016春にて初参加サークルさんに作成数アンケートをとってきました
http://hidarigray.blog35.fc2.com/blog-entry-614.html
カフェも急増 ボードゲームにアラサーがハマる理由
http://style.nikkei.com/article/DGXMZO10921930R21C16A2000000?channel=DF260120166491
ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html
748535
2017/03/02(木) 19:55:15.50ID:ejFPCGdH がっつり連続対戦中。黒番対LV2だけ流し終わった。
100局目
黒(airandom.dll)の勝利回数: 73
白(ai-lv2.dll)の勝利回数: 27
なお他のレベルも平行して回してるけどいま黒番対LV3に1勝54敗中w
なんでこんなに差がでるのかなぁ。
100局目
黒(airandom.dll)の勝利回数: 73
白(ai-lv2.dll)の勝利回数: 27
なお他のレベルも平行して回してるけどいま黒番対LV3に1勝54敗中w
なんでこんなに差がでるのかなぁ。
749535
2017/03/02(木) 20:08:53.54ID:ejFPCGdH 対LV2はかなり同じパターンで勝ってるな。
勝利手順DBにずっぽり嵌ってくれてる感じだ。
LV3は嵌ってくれない。
勝利手順DBにずっぽり嵌ってくれてる感じだ。
LV3は嵌ってくれない。
750535
2017/03/02(木) 21:41:10.44ID:ejFPCGdH 序盤用DBはそこそこうまく動いているが
中盤〜終盤用のDBのせいで致命的に打ち手が狂ってるように見える。
LV3に勝てないのは多分これだな。
中盤〜終盤用のDBのせいで致命的に打ち手が狂ってるように見える。
LV3に勝てないのは多分これだな。
751535
2017/03/02(木) 23:28:08.02ID:ejFPCGdH ずいぶん昔に書いたコードにバグがあった。
ビビるくらい致命的な奴。
よく今まで動いてたな。
ビビるくらい致命的な奴。
よく今まで動いてたな。
752310
2017/03/03(金) 01:05:23.13ID:0ijSS6CX 次の1手もDCNNもなんか上手くいかないので、アルファ碁の原点に戻りました。
アルファ碁のMTCSとしての特徴は、各ノードで評価関数を動かして、そのノードに
点をつけて勝率と50%混合する事で、ノードの選択に事前に差をつけてしまう事に
あります。これによって、負けが多いけど1手だけ良い手があるルートを正しく評価
する可能性を高めていると解釈しています。
で、評価関数はオセロでは線形和で確立されているので、昔の奴をと思ったのですが、
どうせならMLPのライブラリ使ってしまえばEigenが使えるので信頼性高い上に、学習
率の最適化でモーメンタムどころかSMORMS3が使えるようになります。インプットが
とても疎なので、EigenのSparseMatrixを使って高速化を図ります。
早速作って学習させてみたところ…僕の記憶が確かなら以前のプログラムの数十倍
くらいの速度で動いています(汗。これなら100エポックくらい楽勝。
今は評価値を計算させていますが、一旦できたら、次のステップで勝率を計算させられ
ないかなぁと。ただ、評価値がある程度正確なら、勝率ではなく平均スコアでプレイアウト
しても良いのかなと思っています。
アルファ碁のMTCSとしての特徴は、各ノードで評価関数を動かして、そのノードに
点をつけて勝率と50%混合する事で、ノードの選択に事前に差をつけてしまう事に
あります。これによって、負けが多いけど1手だけ良い手があるルートを正しく評価
する可能性を高めていると解釈しています。
で、評価関数はオセロでは線形和で確立されているので、昔の奴をと思ったのですが、
どうせならMLPのライブラリ使ってしまえばEigenが使えるので信頼性高い上に、学習
率の最適化でモーメンタムどころかSMORMS3が使えるようになります。インプットが
とても疎なので、EigenのSparseMatrixを使って高速化を図ります。
早速作って学習させてみたところ…僕の記憶が確かなら以前のプログラムの数十倍
くらいの速度で動いています(汗。これなら100エポックくらい楽勝。
今は評価値を計算させていますが、一旦できたら、次のステップで勝率を計算させられ
ないかなぁと。ただ、評価値がある程度正確なら、勝率ではなく平均スコアでプレイアウト
しても良いのかなと思っています。
753535
2017/03/04(土) 22:29:00.76ID:ZrhUKe4E DB初期化に35秒かかる。
コンパイラを64bit版に変えると11秒になる。
なぜこんなに差が…
ちなみに囲連星本体が32bitプログラムだからコンパイラ変えられないT△T
なんとかならんか?
コンパイラを64bit版に変えると11秒になる。
なぜこんなに差が…
ちなみに囲連星本体が32bitプログラムだからコンパイラ変えられないT△T
なんとかならんか?
754535
2017/03/05(日) 03:39:08.88ID:LufQ1oMY コンパイラの問題じゃなくてライブラリを静的リンクするか動的リンクするかの違いみたいです。多分。
かなり早くなった^_^
かなり早くなった^_^
755535
2017/03/06(月) 18:17:26.36ID:XCrs8w8i 思考時間は試行回数に直結する
重いモンテカルロは一旦封印する
重いモンテカルロは一旦封印する
756310
2017/03/10(金) 01:25:20.88ID:4qfAid0y 評価関数の作り直しを始めたら、計算してはやり直しの繰り返しです。
計算速度が上がったので、比較的気楽に再計算できちゃうのがいかん。
勝率の計算もしてみましたが、結果は似たようなものでした。
いずれにせよ、もう少し精度を上げたいなぁ。
計算速度が上がったので、比較的気楽に再計算できちゃうのがいかん。
勝率の計算もしてみましたが、結果は似たようなものでした。
いずれにせよ、もう少し精度を上げたいなぁ。
757535
2017/03/14(火) 22:28:17.78ID:KNe/k0R5 LV1の棋譜はDBから削除したほうがいいみたい。
いいとこどりとはいかないか。
いいとこどりとはいかないか。
758535
2017/03/15(水) 21:45:36.14ID:gknDrLfY 囲連星のルールは囲碁と共通部分があるから囲碁AIを参考にするのが良いと思っていたが
7連を作れば勝ちというのは王様を詰ませれば勝ちという将棋のゲーム性に近いものがあるのかもしれない。
将棋AIの手法も調べてみるべきか?
7連を作れば勝ちというのは王様を詰ませれば勝ちという将棋のゲーム性に近いものがあるのかもしれない。
将棋AIの手法も調べてみるべきか?
759535
2017/03/18(土) 23:34:35.11ID:VnDB8sqw 手書き評価関数やっぱうまくいかないな。
LV0やLV1も実は結構強かったんだな。
反省。
LV0やLV1も実は結構強かったんだな。
反省。
760535
2017/03/19(日) 00:56:20.04ID:y6fifsqj やっぱ機械学習しかない。(無限ループ)
761535
2017/03/21(火) 22:23:02.18ID:xGpFrIPp 特徴量と棋譜は用意できる。
棋譜の勝者の着手に対してどの特徴量が優先的に選択されたか?を計算したい。
どうすればいいかな?
棋譜の勝者の着手に対してどの特徴量が優先的に選択されたか?を計算したい。
どうすればいいかな?
762名前は開発中のものです。
2017/03/22(水) 00:39:02.37ID:/GDSNvuJ 優先的とか無いでしょ
評価関数は全ての特徴量に対応する評価点を合計するだけ
その各評価点の絶対値が大きくて評価値に割と大きな影響を与えるとかゼロに近いとかはあるけど
評価関数は全ての特徴量に対応する評価点を合計するだけ
その各評価点の絶対値が大きくて評価値に割と大きな影響を与えるとかゼロに近いとかはあるけど
763310
2017/03/22(水) 09:25:05.89ID:sNSr7O3Z >>761
それを統計的に処理して求めるのが線形回帰。
収束アルゴリズムは最急降下法を使用するのが普通。
特徴量あり1、無し0で特徴量並べたベクトルを食わせて、
荷重値であるウェイトを同数用意して内積計算。
出て来たスカラ値が、教師データに合うようにウェイトを収束計算させる。
出て来たウェイトが対応する各特徴量の重要度を表す。
それを統計的に処理して求めるのが線形回帰。
収束アルゴリズムは最急降下法を使用するのが普通。
特徴量あり1、無し0で特徴量並べたベクトルを食わせて、
荷重値であるウェイトを同数用意して内積計算。
出て来たスカラ値が、教師データに合うようにウェイトを収束計算させる。
出て来たウェイトが対応する各特徴量の重要度を表す。
764535
2017/03/22(水) 20:48:28.79ID:rRrXmS1r765535
2017/03/22(水) 21:25:31.00ID:rRrXmS1r もう一度MM法トライしてみるか…
766310
2017/03/23(木) 17:35:49.51ID:xjqriUpX 線形回帰というか、最急降下法自体はたいした事ないよ。
ひたすらループ回して、答えを出して、教師データとの差に比例して
ウェイトを調整するだけ。ニューラルネットになるとバックプロパゲーション
が出てくる(これも似たようなものだけど)違いがあるけど。
とりあえず実装の参考にするならこれ。
http://sealsoft.jp/thell/learning.pdf
GitHUBとかで探すとなんかあるかも。裏ワザではMLPのライブラリ落として
来て、1層の活性化関数無しの全結合層で計算させるって手もある。
ひたすらループ回して、答えを出して、教師データとの差に比例して
ウェイトを調整するだけ。ニューラルネットになるとバックプロパゲーション
が出てくる(これも似たようなものだけど)違いがあるけど。
とりあえず実装の参考にするならこれ。
http://sealsoft.jp/thell/learning.pdf
GitHUBとかで探すとなんかあるかも。裏ワザではMLPのライブラリ落として
来て、1層の活性化関数無しの全結合層で計算させるって手もある。
767310
2017/03/23(木) 17:40:46.97ID:xjqriUpX こちらは、線形回帰の評価関数を作り直して、勝率と石差の2つ用意して、
アルファ碁っぽくMCTSに組み込んでみました。
で、テスト開始したらやたらと落ちる。
線形回帰の計算にEigen(行列パッケージ)を使用していたんだけど、こいつ
が並列処理に対応していないのが原因臭い。
というわけで、学習部分と、MCTSで使う評価関数を切り分けて、評価値を
求める時はEigenを使わないように改造中です。
果たして強くなっているのか。
アルファ碁っぽくMCTSに組み込んでみました。
で、テスト開始したらやたらと落ちる。
線形回帰の計算にEigen(行列パッケージ)を使用していたんだけど、こいつ
が並列処理に対応していないのが原因臭い。
というわけで、学習部分と、MCTSで使う評価関数を切り分けて、評価値を
求める時はEigenを使わないように改造中です。
果たして強くなっているのか。
768535
2017/03/23(木) 20:11:41.72ID:rddo+SDA >>766
ありがとうございます。
さらっと読んでみました。
いい感じの文章ですね。
なんとなくイメージは掴めましたが、実際実装するのは結構大変そうな気がします。
まずはMM法でやり直してみて、駄目だったら手を出してみます。
すいません。
ありがとうございます。
さらっと読んでみました。
いい感じの文章ですね。
なんとなくイメージは掴めましたが、実際実装するのは結構大変そうな気がします。
まずはMM法でやり直してみて、駄目だったら手を出してみます。
すいません。
769310
2017/03/25(土) 10:29:51.08ID:8t9unId8 学習時と使用時の評価関数の切り分け。簡単にやるつもりだったのに、
バグ一杯出してデバッグで大変な事に。
デバッグが行き詰ると、気になっていた箇所を綺麗に直して手を動かし
続けたくなるんだけど、つい計算結果に影響が出てしまうところまで
手を入れてしまい、結局また再度学習しなおしです。
一応バグは解消したと思っていますが・・・
この土日に確認まで行けるか微妙。
バグ一杯出してデバッグで大変な事に。
デバッグが行き詰ると、気になっていた箇所を綺麗に直して手を動かし
続けたくなるんだけど、つい計算結果に影響が出てしまうところまで
手を入れてしまい、結局また再度学習しなおしです。
一応バグは解消したと思っていますが・・・
この土日に確認まで行けるか微妙。
770名前は開発中のものです。
2017/03/25(土) 15:51:24.00ID:eEMcRod/ 自作アナログゲームを投稿・共有できる「紙ゲー.net」がオープン
http://www.moguragames.com/entry/kamigame-analog-game/
http://www.moguragames.com/entry/kamigame-analog-game/
771535
2017/03/25(土) 21:50:08.29ID:S05KfsXi 特徴量、用意できるって言ったけど、いざ作ろうとすると迷うw
あれもほしい、これもほしいとなって発散してしまう。
あれもほしい、これもほしいとなって発散してしまう。
772310
2017/03/25(土) 23:15:01.53ID:8t9unId8 特徴量の選択はね・・・
実際にその特徴量を使って統計処理(線形回帰でもMLPでもDCNNでも何でも可)して
みて、結果の精度に効くものを残して、効かないもの(ウェイトがゼロになるとか、外して
も精度が変わらないとか)を外して、結果的に決まるものじゃないかと思います。
そういう意味じゃ、仮説検証でトライアンドエラーしないといかん。
オセロではBuroさんが論文書いてくれているので、皆それをベースに小修正程度で、
ほぼ同じ精度のものができちゃいますが、そういう先行者がいないゲームだと、自分で
やらないといけないので大変だと思います。
DCNNで「特徴量を自動的に決めてくれる」ってのに、皆が胸熱になったのは、そういう
事です。自分はオセロに応用しようとして、失敗して、後回しにしちゃいましたが。
実際にその特徴量を使って統計処理(線形回帰でもMLPでもDCNNでも何でも可)して
みて、結果の精度に効くものを残して、効かないもの(ウェイトがゼロになるとか、外して
も精度が変わらないとか)を外して、結果的に決まるものじゃないかと思います。
そういう意味じゃ、仮説検証でトライアンドエラーしないといかん。
オセロではBuroさんが論文書いてくれているので、皆それをベースに小修正程度で、
ほぼ同じ精度のものができちゃいますが、そういう先行者がいないゲームだと、自分で
やらないといけないので大変だと思います。
DCNNで「特徴量を自動的に決めてくれる」ってのに、皆が胸熱になったのは、そういう
事です。自分はオセロに応用しようとして、失敗して、後回しにしちゃいましたが。
773310
2017/03/27(月) 01:55:55.89ID:n7C1rJ6D アルファチックなMCTSオセロですが、とりあえず途中まで学習してテストしたところ・・・。
終局しているのに両者パスでツリーが伸びて行ってしまう(汗
何度チェックしても原因不明。ブレークポイントでチェックすると、あり得ない場所で
ボードデータが書き換わっているように見えますが…。並列探索が原因かと思い、
シングル動作にしてみましたが、それでも同じ。かなり重症です。
が、それを除くと、途中までテストした感じでは、最善手を打てている模様。
まだ序盤なのにツリー成長が尋常ではなく、終局までツリーができています。
不要な手をカットする仕組みとして、十分すぎる性能になっています。
とはいえ、勝率判定はそれほど正確ではないので、変な局面に誘導されると、
読み抜けが問題になってくるかも知れません。
もしかしたら、終局後もパスでツリーが伸びている問題は、これまでもあったけど、
終盤完全読みにしていて見えなかっただけかも知れません。
終局しているのに両者パスでツリーが伸びて行ってしまう(汗
何度チェックしても原因不明。ブレークポイントでチェックすると、あり得ない場所で
ボードデータが書き換わっているように見えますが…。並列探索が原因かと思い、
シングル動作にしてみましたが、それでも同じ。かなり重症です。
が、それを除くと、途中までテストした感じでは、最善手を打てている模様。
まだ序盤なのにツリー成長が尋常ではなく、終局までツリーができています。
不要な手をカットする仕組みとして、十分すぎる性能になっています。
とはいえ、勝率判定はそれほど正確ではないので、変な局面に誘導されると、
読み抜けが問題になってくるかも知れません。
もしかしたら、終局後もパスでツリーが伸びている問題は、これまでもあったけど、
終盤完全読みにしていて見えなかっただけかも知れません。
774310
2017/03/28(火) 03:12:19.93ID:Cq+qEzvW パスが伸びる原因は判明。
着手後の盤面を返す関数で、合法手じゃない着手を要求された時を
エラーにせず、元の盤面をそのまま返していたため、手が進まなくなって
いたのが原因だった。
が、そもそも合法手以外の手を渡すはずがないから、エラートラップして
いなかっただけで・・・
まだ根本原因にはたどり着けず。
着手後の盤面を返す関数で、合法手じゃない着手を要求された時を
エラーにせず、元の盤面をそのまま返していたため、手が進まなくなって
いたのが原因だった。
が、そもそも合法手以外の手を渡すはずがないから、エラートラップして
いなかっただけで・・・
まだ根本原因にはたどり着けず。
775535
2017/03/29(水) 21:27:24.43ID:a7v8cJOT MM法動きました!
でも全然強くないw
特徴量が悪いのか棋譜が足りないのか…
でも全然強くないw
特徴量が悪いのか棋譜が足りないのか…
776310
2017/03/29(水) 21:53:37.26ID:4lOT7Sa+ 大体バグがとれました。
Zebraの学習モードと対局。
F5-D6から10手目までは定石使用。その後40手目まで新AIで手を分析。
途中数回-2の手を打つものの、そのまま終盤まで行き、−4〜−6くらいで安定。
40手前に負け趨勢が判明(勝率30%くらいかな?)するとご乱心モード入り(汗
というわけで、Zebraレベルまで、もう少しという感じです。
評価関数を使用したプレイアウトは、重すぎる上に結果も散々で、結局のところ
以前の角評価付相手着手可能数ヒューリスティックで3手を選択し、75%20%
5%で振り分けるものを使用しています。評価関数型の方は多分softmaxで
使うexpの計算が重いと思うので、テーブル化を検討してみようかと思います。
一番の改善点は・・・。評価関数で悪いと評価された手には、プレイアウトを割り当て
ないので、とにかくツリー展開が縦深します。30秒思考で12〜14手目には、一番
読んでいる枝は終局に達しています。これで、モンテカルロの偶然がかなり減って
いる印象です。また、余計な横枝が伸びていないので、メモリーにも優しいです。
2手ほど間違えるのは、ツリー展開の初期値で与える評価値の誤差が原因と思います。
ここは、今の評価関数では、これ以上精度出せないので、何か手を考える必要あり。
あと、いくつかの定数調整かな。
Zebraの学習モードと対局。
F5-D6から10手目までは定石使用。その後40手目まで新AIで手を分析。
途中数回-2の手を打つものの、そのまま終盤まで行き、−4〜−6くらいで安定。
40手前に負け趨勢が判明(勝率30%くらいかな?)するとご乱心モード入り(汗
というわけで、Zebraレベルまで、もう少しという感じです。
評価関数を使用したプレイアウトは、重すぎる上に結果も散々で、結局のところ
以前の角評価付相手着手可能数ヒューリスティックで3手を選択し、75%20%
5%で振り分けるものを使用しています。評価関数型の方は多分softmaxで
使うexpの計算が重いと思うので、テーブル化を検討してみようかと思います。
一番の改善点は・・・。評価関数で悪いと評価された手には、プレイアウトを割り当て
ないので、とにかくツリー展開が縦深します。30秒思考で12〜14手目には、一番
読んでいる枝は終局に達しています。これで、モンテカルロの偶然がかなり減って
いる印象です。また、余計な横枝が伸びていないので、メモリーにも優しいです。
2手ほど間違えるのは、ツリー展開の初期値で与える評価値の誤差が原因と思います。
ここは、今の評価関数では、これ以上精度出せないので、何か手を考える必要あり。
あと、いくつかの定数調整かな。
777310
2017/03/31(金) 20:13:06.62ID:Hurb1/nC expの計算は重さの原因ではありませんでした。やはり単純に評価関数が重い模様。
プレイアウトはヒューリスティックのsoftmax版に変更。
ツリーの初期の評価値は、数手読む事で精度アップを図ってみましたが、3手も読む
とかなり時間がかかって、プレイアウト回数が1/10以下になってしまうので、バランス
見て2手読みにしてみましたが、これで強さが変わるのか不明。
10〜15手目で1回。35手前後で1回づつ間違えて、負けを確信したところで乱心。
試しに15手まで定石DBを使うようにしてみたところ、35手目まで引き分けで行けました。
やはり35手目で間違えて−6。むむむ。
40手までの棋譜。
F5 D6 C3 D3 C4 F4 C5 B5 B4 B3
E7 C6 B6 E6 F6 D7 C8 A6 C7 E3
F3 G4 G3 E2 H3 G5 G6 F7 E8 B7
F2 B8 D1 F1 A8 A7 A5 D8 A4 A3
35手目のA8以下を、A5 A4 E1 C1 A8 A7としていれば引分でした。
評価の順番はA8/E1/A5と、正解を3番手に予想しています。
Zebraの中盤20手読みでもE1と間違える局面で24手読みだと正解するみたいです。
実をいうと、途中で邪魔が入って放置している間に、バックグラウンド探索で1000万
プレイアウトの上限に2回達しています。強さ図る時はバックグラウンド探索を止めない
と意味ないかも。
囲碁AIの本を読んでいたら、プレイアウトの精度の検証に、プレイアウト結果盤面を
統計的に処理して、終局予想図を出す方法と、重要な手を見つけるクリティカリティと
言う概念の説明がありました。この辺使って、プレイアウトの弱点探してみます。
プレイアウトはヒューリスティックのsoftmax版に変更。
ツリーの初期の評価値は、数手読む事で精度アップを図ってみましたが、3手も読む
とかなり時間がかかって、プレイアウト回数が1/10以下になってしまうので、バランス
見て2手読みにしてみましたが、これで強さが変わるのか不明。
10〜15手目で1回。35手前後で1回づつ間違えて、負けを確信したところで乱心。
試しに15手まで定石DBを使うようにしてみたところ、35手目まで引き分けで行けました。
やはり35手目で間違えて−6。むむむ。
40手までの棋譜。
F5 D6 C3 D3 C4 F4 C5 B5 B4 B3
E7 C6 B6 E6 F6 D7 C8 A6 C7 E3
F3 G4 G3 E2 H3 G5 G6 F7 E8 B7
F2 B8 D1 F1 A8 A7 A5 D8 A4 A3
35手目のA8以下を、A5 A4 E1 C1 A8 A7としていれば引分でした。
評価の順番はA8/E1/A5と、正解を3番手に予想しています。
Zebraの中盤20手読みでもE1と間違える局面で24手読みだと正解するみたいです。
実をいうと、途中で邪魔が入って放置している間に、バックグラウンド探索で1000万
プレイアウトの上限に2回達しています。強さ図る時はバックグラウンド探索を止めない
と意味ないかも。
囲碁AIの本を読んでいたら、プレイアウトの精度の検証に、プレイアウト結果盤面を
統計的に処理して、終局予想図を出す方法と、重要な手を見つけるクリティカリティと
言う概念の説明がありました。この辺使って、プレイアウトの弱点探してみます。
778310
2017/04/01(土) 01:30:30.93ID:Wq4mpDtN 直すところが無くなってきたのでパラメータ調整。
たまたまだと思いますが、初めてZebraの中盤24手読みと引き分けました。
こちらの設定は、バックグラウンド探索無しの1手1分(相手も30秒考えるという想定)
定石10手まで。完全読み切りルーチンなし。
F5 D6 C3 D3 C4 F4 C5 B5 B4 B3
D7 C6 B6 E6 F6 G5 G6 E3 A5 E7
F3 G4 E2 C2 H4 H3 H6 H5 C7 D8
G3 H7 A3 A4 A6 H2 F8 F7 C1 D2
C8 E8 F2 D1 F1 B1 E1 G1 B2 A1
A2 B8 A8 B7 A7 G2 H1 H8 G7 G8
ちなみにZebra側は全てBookにあった模様で、一度も中盤探索していません。
たまたまだと思いますが、初めてZebraの中盤24手読みと引き分けました。
こちらの設定は、バックグラウンド探索無しの1手1分(相手も30秒考えるという想定)
定石10手まで。完全読み切りルーチンなし。
F5 D6 C3 D3 C4 F4 C5 B5 B4 B3
D7 C6 B6 E6 F6 G5 G6 E3 A5 E7
F3 G4 E2 C2 H4 H3 H6 H5 C7 D8
G3 H7 A3 A4 A6 H2 F8 F7 C1 D2
C8 E8 F2 D1 F1 B1 E1 G1 B2 A1
A2 B8 A8 B7 A7 G2 H1 H8 G7 G8
ちなみにZebra側は全てBookにあった模様で、一度も中盤探索していません。
779535
2017/04/01(土) 11:28:54.33ID:Gu8vVrdS おおーZebra越えが見えてきましたか凄い!
こっちも頑張らねば…
こっちも頑張らねば…
780310
2017/04/01(土) 12:57:37.15ID:Wq4mpDtN あ、たまたま4月1日の投稿ですが、嘘ではありませぬ(^^;
Zebraがエイプリルフールしてくれたのかも知れませんが。
今回はZebra側は、全部Book上で打っていたので、思考時間実質ゼロです。
Bookを変化させるにして、最初にZebra側がBook評価で-0.5くらいの手を選んで
くれたので、緩まずに終盤まで行ったのかも知れません。
でも、流石に思考時間1分はやり過ぎですよね。
あと、Zebraの中盤探索と勝負したいのですから、ZebraもBookを切った方が良いかな。
Zebraがエイプリルフールしてくれたのかも知れませんが。
今回はZebra側は、全部Book上で打っていたので、思考時間実質ゼロです。
Bookを変化させるにして、最初にZebra側がBook評価で-0.5くらいの手を選んで
くれたので、緩まずに終盤まで行ったのかも知れません。
でも、流石に思考時間1分はやり過ぎですよね。
あと、Zebraの中盤探索と勝負したいのですから、ZebraもBookを切った方が良いかな。
781310
2017/04/01(土) 14:20:36.16ID:Wq4mpDtN ZebraをBook無しにして対戦したら、中盤で読み勝って+2勝ちになりました。
以下棋譜。
F5 D6 C3 D3 C4 F4 C5 B3 C2 E3
D2 C6 B4 B5 F2 E6 F3 C1 A3 A4
A5 A6 A7 D1 B6 E2 E7 D7 F1 E1
A2 G1 F7 G5 G4 G6 F6 H3 E8 C8
D8 G3 B8 B7 H5 H7 G2 H1 H6 G8
B1 A1 A8 C7 G7 H4 B2 H8 H2 F8
Zebra設定:白番、中盤24手探索、Book未使用、中盤変化せず
当方設定:黒番、10手目まで引分定石使用、思考時間1分、バックグラウンド探索なし
注)昨夜評価関数の学習を少し進めました。多分誤差範囲です。
Zebraの解析によれば23手目あたりで間違えてくれたみたいです。
こちらは10手までは定石使っておかないと、かなり滅茶苦茶な手を打ってしまったり
しますので、Zebraの序盤の精度は凄いですね。
次はどうしよう。
強化学習を調べているんだけど、いまいちどう応用したら良いのかがわからない。
以下棋譜。
F5 D6 C3 D3 C4 F4 C5 B3 C2 E3
D2 C6 B4 B5 F2 E6 F3 C1 A3 A4
A5 A6 A7 D1 B6 E2 E7 D7 F1 E1
A2 G1 F7 G5 G4 G6 F6 H3 E8 C8
D8 G3 B8 B7 H5 H7 G2 H1 H6 G8
B1 A1 A8 C7 G7 H4 B2 H8 H2 F8
Zebra設定:白番、中盤24手探索、Book未使用、中盤変化せず
当方設定:黒番、10手目まで引分定石使用、思考時間1分、バックグラウンド探索なし
注)昨夜評価関数の学習を少し進めました。多分誤差範囲です。
Zebraの解析によれば23手目あたりで間違えてくれたみたいです。
こちらは10手までは定石使っておかないと、かなり滅茶苦茶な手を打ってしまったり
しますので、Zebraの序盤の精度は凄いですね。
次はどうしよう。
強化学習を調べているんだけど、いまいちどう応用したら良いのかがわからない。
782310
2017/04/01(土) 16:16:54.26ID:Wq4mpDtN 1分探索では申し訳ないので、10秒探索+バックグラウンド探索にしてみました。
F5 D6 C4 D3 C3 F4 C5 B3 C2 E3
D2 C6 B4 B5 F2 E6 F3 C1 A3 A4
A5 A6 A7 D1 B6 E2 F1 E1 A2 G1
E7 D7 F7 G5 G4 G6 F6 H3 E8 C8
D8 G3 B8 B7 H5 H7 G2 H1 H6 G8
B1 A1 A8 C7 G7 H4 B2 H8 H2 F8
若干違うけど、ほとんど同じような進行で+2勝ち。
確認していないけど、手順前後で同じ終局図になっている気がする。
ちなみに23手目A7は、自分の手番でした。解析結果も、Zebra側が見落とした手
を発見している形になっています。恐らく、その手前の22手目のA6辺りで見落とし
が起きているのだと思います。
こちらが間違えていないという点は評価できるけど、Zebraを中盤変化させて色々な
パターンを試す必要ありそう。
まだ半信半疑だけど、10秒探索でこれって、ものすごく強くなってる気がしてきた。
F5 D6 C4 D3 C3 F4 C5 B3 C2 E3
D2 C6 B4 B5 F2 E6 F3 C1 A3 A4
A5 A6 A7 D1 B6 E2 F1 E1 A2 G1
E7 D7 F7 G5 G4 G6 F6 H3 E8 C8
D8 G3 B8 B7 H5 H7 G2 H1 H6 G8
B1 A1 A8 C7 G7 H4 B2 H8 H2 F8
若干違うけど、ほとんど同じような進行で+2勝ち。
確認していないけど、手順前後で同じ終局図になっている気がする。
ちなみに23手目A7は、自分の手番でした。解析結果も、Zebra側が見落とした手
を発見している形になっています。恐らく、その手前の22手目のA6辺りで見落とし
が起きているのだと思います。
こちらが間違えていないという点は評価できるけど、Zebraを中盤変化させて色々な
パターンを試す必要ありそう。
まだ半信半疑だけど、10秒探索でこれって、ものすごく強くなってる気がしてきた。
783310
2017/04/01(土) 17:37:16.14ID:Wq4mpDtN もう1局やって引分。
強化学習って、プレイアウト同士対局させながら、確率的勾配効果法で
1件づつ更新を繰り返す形で良いのかなぁ。
強化学習って、プレイアウト同士対局させながら、確率的勾配効果法で
1件づつ更新を繰り返す形で良いのかなぁ。
784310
2017/04/02(日) 18:48:15.03ID:xuvwd7i8 別のオープニングを試したところ、F5F6系や、F5D6C4G5系はZebraに勝てません。
試しにF5D6C4G5系を調べてみたところ、ツリー展開がなかなか深まらない様子で、
有望と評価される分岐が多すぎるのかと思います。最後はやけになって、1分読み
+要所でバックグラウンド放置探索で無理やりツリーを伸ばしたところ、途中経過で
Zebra評価値が−4まで行ったところから何と+4まで回復しました。
やはりポイントはツリーの深さであり、余計な枝を探索しない、ポリシーネットの精度
が重要になると。多分。
あと、相手パスの時にもおかしくなるバグを発見。今夜は、ここを調査。
試しにF5D6C4G5系を調べてみたところ、ツリー展開がなかなか深まらない様子で、
有望と評価される分岐が多すぎるのかと思います。最後はやけになって、1分読み
+要所でバックグラウンド放置探索で無理やりツリーを伸ばしたところ、途中経過で
Zebra評価値が−4まで行ったところから何と+4まで回復しました。
やはりポイントはツリーの深さであり、余計な枝を探索しない、ポリシーネットの精度
が重要になると。多分。
あと、相手パスの時にもおかしくなるバグを発見。今夜は、ここを調査。
785310
2017/04/03(月) 20:36:38.16ID:BqB2rFYT パスがおかしくなる奴は、やはりデバッグルーチン限定で、かつ直すと本処理にも
大きな修正が必要になるので、当該デバッグ処理を削除して対処。
F5D6C4G5系をテストプレイしていてわかったのは、中盤ことごとく読みがZebraと
一致しない事。一致しないだけなら良いけど、そこがところどころ悪手になってるっぽい。
読みが一致しないと、事前に読んでいない枝で探索する事になり、浅い探索のまま
間違いが連鎖する感じ。Zebraの着手は、こちらAIが予想は評価値順で3番目以降に
なっている。
これ、ロールポリシーが決めるプレイアウト割り当ての優先順位の問題か、それとも
プレイアウトの精度の問題か、はっきりしませんが、要するに評価値が間違っている
=弱いという事ですね。
で、この2点について、もう1ステップ先に進んでみようかと思います。
プレイアウトについては、強化学習で良いヒューリスティックを作れないか検討。
ロールポリシーについては、与えている棋譜のバラつきが原因かも知れないので、
強化学習の棋譜から自動生成する事を検討。
あと、終盤40手以降はほぼ間違えないので、Solverを削除してしまいました。
また、できれば、最終的には定石も無しにしたくなって来ました。
目指せピュアMCTS。
大きな修正が必要になるので、当該デバッグ処理を削除して対処。
F5D6C4G5系をテストプレイしていてわかったのは、中盤ことごとく読みがZebraと
一致しない事。一致しないだけなら良いけど、そこがところどころ悪手になってるっぽい。
読みが一致しないと、事前に読んでいない枝で探索する事になり、浅い探索のまま
間違いが連鎖する感じ。Zebraの着手は、こちらAIが予想は評価値順で3番目以降に
なっている。
これ、ロールポリシーが決めるプレイアウト割り当ての優先順位の問題か、それとも
プレイアウトの精度の問題か、はっきりしませんが、要するに評価値が間違っている
=弱いという事ですね。
で、この2点について、もう1ステップ先に進んでみようかと思います。
プレイアウトについては、強化学習で良いヒューリスティックを作れないか検討。
ロールポリシーについては、与えている棋譜のバラつきが原因かも知れないので、
強化学習の棋譜から自動生成する事を検討。
あと、終盤40手以降はほぼ間違えないので、Solverを削除してしまいました。
また、できれば、最終的には定石も無しにしたくなって来ました。
目指せピュアMCTS。
786310
2017/04/03(月) 20:41:47.20ID:BqB2rFYT 忘れていた。
>>782の22手目は、Zebraの当初予想はG4でしたが、このターンに達した時に、
A6に変わりました。そこでここで強制的にG4を打たせて続行してみましたが、
+4でこちらのAIが勝利しました。Zebraが間違えたのは、もう少し前の場所の
可能性があります。
>>782の22手目は、Zebraの当初予想はG4でしたが、このターンに達した時に、
A6に変わりました。そこでここで強制的にG4を打たせて続行してみましたが、
+4でこちらのAIが勝利しました。Zebraが間違えたのは、もう少し前の場所の
可能性があります。
787310
2017/04/05(水) 01:14:25.59ID:4SaLkpgr >>786
Zebraが間違えたのは14手目のB5だった模様。ここで引き分け手順から外れてます。
定石無しにしようと書いておきながら、少なくとも引分とわかっている盤面情報を活用
して、探索の省略ができないかと、あちこちに組み込んでみましたが、効果は不明。
効果がわからないというより、毎晩こつこつと評価関数のエポック数を稼いでいたところ、
どうも過学習に近い状況に陥っているみたいで、手の選択が変わってきて、むしろ、
どんどん弱くなりつつあります。むむむ。
一旦変な手を選んでしまうと、Zebraにしっぺ返しを食らって、せっかく読み貯めた
プレイアウトの大半がボツになり、短いツリーで手を選択するうちに、どんどん
間違った手を打っていく模様。結果的に勝った時は、ツリーがどんどん伸びて行く
のと対照的です。
で、結局、評価関数の良し悪しという話に逆戻りorz
評価関数から脱却するためにMCTS始めた頃が懐かしい・・・
Zebraが間違えたのは14手目のB5だった模様。ここで引き分け手順から外れてます。
定石無しにしようと書いておきながら、少なくとも引分とわかっている盤面情報を活用
して、探索の省略ができないかと、あちこちに組み込んでみましたが、効果は不明。
効果がわからないというより、毎晩こつこつと評価関数のエポック数を稼いでいたところ、
どうも過学習に近い状況に陥っているみたいで、手の選択が変わってきて、むしろ、
どんどん弱くなりつつあります。むむむ。
一旦変な手を選んでしまうと、Zebraにしっぺ返しを食らって、せっかく読み貯めた
プレイアウトの大半がボツになり、短いツリーで手を選択するうちに、どんどん
間違った手を打っていく模様。結果的に勝った時は、ツリーがどんどん伸びて行く
のと対照的です。
で、結局、評価関数の良し悪しという話に逆戻りorz
評価関数から脱却するためにMCTS始めた頃が懐かしい・・・
788535
2017/04/05(水) 23:08:13.71ID:laANBz/U 最新の対戦結果です。
LV2に白番で勝ち越したようです。
しかし、LV1に黒番で負け越している。
あとLV1とLV3で白番のほうが勝率がいいのが謎。
真面目に長連対策してないのが弱点になっているのだろうか?
それにしてもLV3強すぎる。
LV1との対戦も100戦やる予定でしたが途中で固まってしまったようです。
100局目
黒(airandom.dll)の勝利回数: 2
白(ai-lv3.dll)の勝利回数: 98
100局目
黒(ai-lv3.dll)の勝利回数: 92
白(airandom.dll)の勝利回数: 8
100局目
黒(airandom.dll)の勝利回数: 77
白(ai-lv2.dll)の勝利回数: 23
100局目
黒(ai-lv2.dll)の勝利回数: 45
白(airandom.dll)の勝利回数: 55
86局目
黒(airandom.dll)の勝利回数: 41
白(ai-lv1.dll)の勝利回数: 45
83局目
黒(ai-lv1.dll)の勝利回数: 7
白(airandom.dll)の勝利回数: 76
LV2に白番で勝ち越したようです。
しかし、LV1に黒番で負け越している。
あとLV1とLV3で白番のほうが勝率がいいのが謎。
真面目に長連対策してないのが弱点になっているのだろうか?
それにしてもLV3強すぎる。
LV1との対戦も100戦やる予定でしたが途中で固まってしまったようです。
100局目
黒(airandom.dll)の勝利回数: 2
白(ai-lv3.dll)の勝利回数: 98
100局目
黒(ai-lv3.dll)の勝利回数: 92
白(airandom.dll)の勝利回数: 8
100局目
黒(airandom.dll)の勝利回数: 77
白(ai-lv2.dll)の勝利回数: 23
100局目
黒(ai-lv2.dll)の勝利回数: 45
白(airandom.dll)の勝利回数: 55
86局目
黒(airandom.dll)の勝利回数: 41
白(ai-lv1.dll)の勝利回数: 45
83局目
黒(ai-lv1.dll)の勝利回数: 7
白(airandom.dll)の勝利回数: 76
789名前は開発中のものです。
2017/04/08(土) 13:24:07.33ID:mnzcHtDh 2003年に立てられたスレが最近になって動いてる…w
がんばってくださいな。
がんばってくださいな。
790310
2017/04/08(土) 17:26:32.31ID:cxbXAKoL 色々グチャグチャと改良(改悪)してましたが、一旦整理して、結局かなりシンプルな
形に落ち着きました。定石も無しにしましたので、2手目以後は考えます。プレイアウト
に時間がかかるので、序盤は考える時間が長すぎです。点数ベースの評価関数を弄り
倒して勝率っぽい数字をでっちあげる事で、勝率の評価関数を使わなくなりました。
今のところ対Zebraは勝ったり負けたりで、強さ的には匹敵するところまで行けたかなと。
両者定石無しなので、純粋にAI部の強さ比較という事で良いのかなぁと自負。
たまにはAI白番(Zebra黒)の棋譜を。自作AIの+2勝ちです。
F5 D6 C4 D3 C3 F4 C5 B3 C2 E3
D2 C6 B4 A3 G4 F3 E6 F7 B5 A4
A6 B6 G3 F6 E7 F8 D7 C7 G6 H5
D8 C1 H6 H4 E8 C8 G5 H7 B1 A1
B2 E2 A2 H3 F1 D1 G7 H8 G8 A5
A7 F2 E1 G1 H1 B7 G2 H2 B8 A8
MCTSじゃあまり強くならないと思っていたのが、ここまで来れて正直本人がびっくり。
アルファ碁のNature論文のお蔭です。
次ステップで強化学習とか考えていたけど、まだ何からどうすれば良いのかわからない(汗
形に落ち着きました。定石も無しにしましたので、2手目以後は考えます。プレイアウト
に時間がかかるので、序盤は考える時間が長すぎです。点数ベースの評価関数を弄り
倒して勝率っぽい数字をでっちあげる事で、勝率の評価関数を使わなくなりました。
今のところ対Zebraは勝ったり負けたりで、強さ的には匹敵するところまで行けたかなと。
両者定石無しなので、純粋にAI部の強さ比較という事で良いのかなぁと自負。
たまにはAI白番(Zebra黒)の棋譜を。自作AIの+2勝ちです。
F5 D6 C4 D3 C3 F4 C5 B3 C2 E3
D2 C6 B4 A3 G4 F3 E6 F7 B5 A4
A6 B6 G3 F6 E7 F8 D7 C7 G6 H5
D8 C1 H6 H4 E8 C8 G5 H7 B1 A1
B2 E2 A2 H3 F1 D1 G7 H8 G8 A5
A7 F2 E1 G1 H1 B7 G2 H2 B8 A8
MCTSじゃあまり強くならないと思っていたのが、ここまで来れて正直本人がびっくり。
アルファ碁のNature論文のお蔭です。
次ステップで強化学習とか考えていたけど、まだ何からどうすれば良いのかわからない(汗
791535
2017/04/09(日) 05:10:12.89ID:h/eXLfOt 相手に守りの手を強要させることが出来る有利な状態をいかに保ってゲームを進めるか。
終盤の要になりそうです。
終盤の要になりそうです。
792310
2017/04/09(日) 20:11:13.36ID:3mOyIMJx 評価関数の評価値計算でmin-Maxの時にやっていたのに、今回はやっていなかった
手抜き箇所を修正し、速度アップを図りました。
プレイアウトの速度が劇的に速くなりました。
最低でも10万プレイアウト貯め無いと、変な答えを返す(だろう)という事で、最大試行
回数の手が最低プレイアウト数を超えていない時は探索延長していました。そのため
序盤で探索延長頻発していましたが、今回の改造でほぼ延長無しになりました。
あと、評価関数のステージ分割を細かくしまして、再計算を開始。
1手20秒設定でやっていますが(他にバックグラウンド探索あり)、10秒でも実用になるかなぁ。
MCTSなオセロとしては、ある程度できちゃった気がする。
手抜き箇所を修正し、速度アップを図りました。
プレイアウトの速度が劇的に速くなりました。
最低でも10万プレイアウト貯め無いと、変な答えを返す(だろう)という事で、最大試行
回数の手が最低プレイアウト数を超えていない時は探索延長していました。そのため
序盤で探索延長頻発していましたが、今回の改造でほぼ延長無しになりました。
あと、評価関数のステージ分割を細かくしまして、再計算を開始。
1手20秒設定でやっていますが(他にバックグラウンド探索あり)、10秒でも実用になるかなぁ。
MCTSなオセロとしては、ある程度できちゃった気がする。
794535
2017/04/10(月) 23:19:01.03ID:Sai+9C2+ 完成したら論文書いてwebで公開してくださいw
おねがいしますw
おねがいしますw
795310
2017/04/11(火) 07:59:39.45ID:KmgeOKfx >>793
いや・・・それはないです。
オセロの場合、定石DBの学習が強さに直結するので、定石DBを持っていないAIは
かなり不利というか、対戦したら勝ち目ありません。何回も対戦するうちに苦手な定石
に誘導されちゃうので、勝ち目なしは確信しています。
また、アルゴリズムの優越比較という意味で、Zebraの定石DBも無しにしましたが、
Zebraの中盤も一昔前のレベルで、決して強くはないという評価をWEBで見た事が
あります。今回Zebraを使用したのは、対戦中に学習モードに切り替える事でどこで
間違えたかがわかりやすいからです。Edaxとはまだ対戦させません。
ただ、個人的に思い込みたいレベルでいうなら、MCTS系のオセロAIでは最強クラス
なんじゃないかなぁと(願望)。なにせ、いまどきオセロAIを開発している人はいないし、
ましてモンテカルロ系で試そうなんて人もいなさそうですから。言ったもの勝ち(汗
アルファ碁の論文のDeepでNeural networkではない部分を適用する事で、min-Maxで
なければ存在価値がないところまで行き着いていたオセロAIでもMCTSで結構強くなれる
事が証明できたかなぁと。本当にアルファ碁様様です。
ブログ作って解説でも作ろうかと準備していましたが、試しに開設したブログサービスでは
アップロードができなかったので、一旦閉鎖しました。どこか良いところないかな。
いや・・・それはないです。
オセロの場合、定石DBの学習が強さに直結するので、定石DBを持っていないAIは
かなり不利というか、対戦したら勝ち目ありません。何回も対戦するうちに苦手な定石
に誘導されちゃうので、勝ち目なしは確信しています。
また、アルゴリズムの優越比較という意味で、Zebraの定石DBも無しにしましたが、
Zebraの中盤も一昔前のレベルで、決して強くはないという評価をWEBで見た事が
あります。今回Zebraを使用したのは、対戦中に学習モードに切り替える事でどこで
間違えたかがわかりやすいからです。Edaxとはまだ対戦させません。
ただ、個人的に思い込みたいレベルでいうなら、MCTS系のオセロAIでは最強クラス
なんじゃないかなぁと(願望)。なにせ、いまどきオセロAIを開発している人はいないし、
ましてモンテカルロ系で試そうなんて人もいなさそうですから。言ったもの勝ち(汗
アルファ碁の論文のDeepでNeural networkではない部分を適用する事で、min-Maxで
なければ存在価値がないところまで行き着いていたオセロAIでもMCTSで結構強くなれる
事が証明できたかなぁと。本当にアルファ碁様様です。
ブログ作って解説でも作ろうかと準備していましたが、試しに開設したブログサービスでは
アップロードができなかったので、一旦閉鎖しました。どこか良いところないかな。
796535
2017/04/13(木) 22:33:44.03ID:vVAZxoH8 いろいろ試してみてるけどなんか勝利手順DBを充実させるのが一番手っ取り早く強くなる気がする。
いま12万局分棋譜あるけど100万局くらいまで増やしてみるか…
もっと計算リソースが欲しい。
いま12万局分棋譜あるけど100万局くらいまで増やしてみるか…
もっと計算リソースが欲しい。
797310
2017/04/18(火) 01:24:07.08ID:Ohai0OaC 評価関数のエポックを更に進めたら180エポック近辺から勝てなくなってきました。
もしかしてたまたま間違ったところが、zebraの弱点をついていたのかも知れないし、
評価関数の値にメリハリがついてきて、逆に見落としが起きやすくなったのかも
知れないし。過学習かも知れないし。
評価関数をブラッシュアップするには、負け手順を棋譜化して、学習データに投入
しなきゃならん。
ところが、負け確定後に例の自爆モードが作動してしまいます。棋譜として使えるよう
にするために、ソルバーを復活させました。ついでに色々やってたら、見なかった事
にしていたバグもとれました。ついでだからと偶数理論を実装したのですが、かえって
遅くなってしまった。他の人はどういう実装しているのだろう。
今の速度だと35手目から読み切らないといけない。今の速度だと時間の予測が難し
いというか、軽く1時間はかかりそう。
もしかしてたまたま間違ったところが、zebraの弱点をついていたのかも知れないし、
評価関数の値にメリハリがついてきて、逆に見落としが起きやすくなったのかも
知れないし。過学習かも知れないし。
評価関数をブラッシュアップするには、負け手順を棋譜化して、学習データに投入
しなきゃならん。
ところが、負け確定後に例の自爆モードが作動してしまいます。棋譜として使えるよう
にするために、ソルバーを復活させました。ついでに色々やってたら、見なかった事
にしていたバグもとれました。ついでだからと偶数理論を実装したのですが、かえって
遅くなってしまった。他の人はどういう実装しているのだろう。
今の速度だと35手目から読み切らないといけない。今の速度だと時間の予測が難し
いというか、軽く1時間はかかりそう。
798535
2017/04/19(水) 21:59:17.68ID:WjbK3YLE Ponanzaがディープラーニング取り込みに成功したとかなんとか。
ハードもものすごいものを用意するそうですね。
ハードもものすごいものを用意するそうですね。
799535
2017/04/21(金) 20:55:54.67ID:ZLYvyeQY 大分勝率上がってきた。
思考時間長いから数こなせないのが厳しいですね。
25局目
黒(airandom.dll)の勝利回数: 8
白(ai-lv3.dll)の勝利回数: 17
思考時間長いから数こなせないのが厳しいですね。
25局目
黒(airandom.dll)の勝利回数: 8
白(ai-lv3.dll)の勝利回数: 17
800535
2017/04/21(金) 22:05:48.97ID:ZLYvyeQY やっぱディープラーニング憧れるなぁ。
俺のAIにもブレークスルーを起こしてくれw
俺のAIにもブレークスルーを起こしてくれw
801310
2017/04/23(日) 20:02:43.30ID:Kquj3Rxt 色々係数調整したらめっちゃ弱くなって焦ってあちこちいじってました。
最初の調整の方向が逆だった模様で、反対に振ったら少し良くなりました。
過学習っぽい問題を何とかしたくて、ポリシーネットが作れないか、もう一度挑戦してます。
線形Softmaxでまた色々やっていたのですが、今まで上手く行かなかった理由が判明。
特徴を圧縮するのに…反転させたり回転させたりしていたので、盤面位置がわからなく
なった投入データに対して、盤面との対応ができてる教師データと整合性が取れなく
なっていたと…いまさら気づきまして…学習部分を全面的に作り直しとなっています。
なんて馬鹿な事をしていたんでしょう(涙
つまり、これが原因だったら、MLPも使えるかもって事です。
流石にDCNNは関係ないですが。
最初の調整の方向が逆だった模様で、反対に振ったら少し良くなりました。
過学習っぽい問題を何とかしたくて、ポリシーネットが作れないか、もう一度挑戦してます。
線形Softmaxでまた色々やっていたのですが、今まで上手く行かなかった理由が判明。
特徴を圧縮するのに…反転させたり回転させたりしていたので、盤面位置がわからなく
なった投入データに対して、盤面との対応ができてる教師データと整合性が取れなく
なっていたと…いまさら気づきまして…学習部分を全面的に作り直しとなっています。
なんて馬鹿な事をしていたんでしょう(涙
つまり、これが原因だったら、MLPも使えるかもって事です。
流石にDCNNは関係ないですが。
802535
2017/04/24(月) 23:38:10.10ID:Jt3D6fnV もう一回connect4に立ち返ってみるかな…
気分を変える意味でも…
気分を変える意味でも…
803535
2017/04/25(火) 21:31:44.16ID:I7r6uvd5 あ〜なんか新しいことすんの億劫だな。
プログラミングは少し充電期間をおいて本でも読もうかな。
プログラミングは少し充電期間をおいて本でも読もうかな。
804名前は開発中のものです。
2017/04/27(木) 01:15:37.14ID:KUFXWb0v 中学生が羽生さんに勝っちゃったとかでえらい盛り上がってるね
805310
2017/04/27(木) 22:32:29.06ID:gagL5fDM 億劫な時ありますね。アイデアが枯渇した時とか、陥りがちです。
しばらく放置するとアイデアが出て来たりします。
さて、線形Softmaxなポリシーネットですが、色々やって何とか計算開始しました。
回転同形の処理を真面目にやったらメモリーパンクでスワップしてしまってボツ。
仕方がないので、エポック事に回転同形をランダムに作る事に。
計算にものすごい時間がかかるので、ミニバッチサイズをミニとはとても言えない
ほどでかくして時短。お蔭で6時間越え→50分程度になりました。もっとでかくすると
更に時短できるかな。
序盤の盤面は重複が多く、学習に悪影響がありそうなので、%指定してカット。
(そのうち、同一盤面同一次着手は1件に集約しようかと思っています。)
こんな感じで現在2エポック目ですが、57%くらいの一致率という極めて優秀な成果が
出てきています。
それでも着手不能箇所が確率1位になっちゃったりするので、使用時に着手可能位置
のみ計算するようにしました。これで多少は一致率が上がるはず。
しばらく放置するとアイデアが出て来たりします。
さて、線形Softmaxなポリシーネットですが、色々やって何とか計算開始しました。
回転同形の処理を真面目にやったらメモリーパンクでスワップしてしまってボツ。
仕方がないので、エポック事に回転同形をランダムに作る事に。
計算にものすごい時間がかかるので、ミニバッチサイズをミニとはとても言えない
ほどでかくして時短。お蔭で6時間越え→50分程度になりました。もっとでかくすると
更に時短できるかな。
序盤の盤面は重複が多く、学習に悪影響がありそうなので、%指定してカット。
(そのうち、同一盤面同一次着手は1件に集約しようかと思っています。)
こんな感じで現在2エポック目ですが、57%くらいの一致率という極めて優秀な成果が
出てきています。
それでも着手不能箇所が確率1位になっちゃったりするので、使用時に着手可能位置
のみ計算するようにしました。これで多少は一致率が上がるはず。
806310
2017/04/27(木) 22:33:06.57ID:gagL5fDM 藤井4段凄いですね。
コンピュータ将棋で鍛えたからかな。
なんか新しい手を打ってるみたいですね。
コンピュータ将棋で鍛えたからかな。
なんか新しい手を打ってるみたいですね。
807名前は開発中のものです。
2017/04/28(金) 07:46:25.71ID:cnKbVTYz ニュースを見て藤井猛が勝利したのかと
勘違いした俺…
ニュースにならねえよ!
勘違いした俺…
ニュースにならねえよ!
808535
2017/04/29(土) 00:08:17.53ID:knMl9lYg ニューラルネットワーク自作入門という本を買ってきました。
平易に書こうとしてるのが伝わってくる本ですね。
平易に書くの最近の流行りなんですかね?
平易に書こうとしてるのが伝わってくる本ですね。
平易に書くの最近の流行りなんですかね?
809310
2017/05/03(水) 15:03:32.93ID:v36x8qrF 最近はもっぱらポリシーとバリューの両評価関数のテストです。
ポリシーの方は線形ソフトマックスで大丈夫そう。大体50%の正答率になります。
MLP版もコーディングはしてますが、まだテストまで至っていません。
バリューの方は、ステージ分割なしのMLP版を試してます。
計算に時間がかかりすぎて調整が進みません(汗
頭の片隅には、いつかはDCNNというのが残っています。
以前やった時に、畳み込みフィルタ演算の展開形を考えた事あります。
その時は、汎用性が無いという理由で、あまり乗り気じゃなかったのですが、
今となっては、そのまま進めればよかったかなと思う次第。
ポリシーの方は線形ソフトマックスで大丈夫そう。大体50%の正答率になります。
MLP版もコーディングはしてますが、まだテストまで至っていません。
バリューの方は、ステージ分割なしのMLP版を試してます。
計算に時間がかかりすぎて調整が進みません(汗
頭の片隅には、いつかはDCNNというのが残っています。
以前やった時に、畳み込みフィルタ演算の展開形を考えた事あります。
その時は、汎用性が無いという理由で、あまり乗り気じゃなかったのですが、
今となっては、そのまま進めればよかったかなと思う次第。
810名前は開発中のものです。
2017/05/04(木) 17:16:11.41ID:Hvuj7SvG pona負けたとかなんとか
811310
2017/05/05(金) 01:52:31.91ID:Orwfb9MI 世界コンピュータ将棋選手権ですね。
8勝1敗同率で、elmoに直接対決で負けた関係で予選2位通過みたいですね。
将棋は電王戦くらいしか見てなかったので、マシン制限があると思ったら、
こっちは凄いですね。CPU1092(Xeon)にGPU128基ですか…。
やっぱディープラーニングすると、それなりのマシンパワーがいるのよね。
しかも最速マシンは20億NPSとか言っているみたい(笑うしかない)。
8勝1敗同率で、elmoに直接対決で負けた関係で予選2位通過みたいですね。
将棋は電王戦くらいしか見てなかったので、マシン制限があると思ったら、
こっちは凄いですね。CPU1092(Xeon)にGPU128基ですか…。
やっぱディープラーニングすると、それなりのマシンパワーがいるのよね。
しかも最速マシンは20億NPSとか言っているみたい(笑うしかない)。
812310
2017/05/05(金) 02:46:05.76ID:Orwfb9MI で、Ponanza Chainerに対する半可通っぽい疑問。
アピール文章読んだけど、ディープラーニングは評価関数ではなく、
ポリシーネットに相当する次の1手導出に使われているっぽい。
何故バリューじゃなくてポリシーなのか?
で、αβ系探索でポリシーとなるとオーダリングに使うくらいしか思いつかない。
将棋ってオーダリングに良いヒューリスティックスないのかな?
YBWCのPV決定だと縦に並んじゃうから、並列にする意味がない。
確率の高い手は次の段でPVの数を増やしたりするのかな?
アピール文章読んだけど、ディープラーニングは評価関数ではなく、
ポリシーネットに相当する次の1手導出に使われているっぽい。
何故バリューじゃなくてポリシーなのか?
で、αβ系探索でポリシーとなるとオーダリングに使うくらいしか思いつかない。
将棋ってオーダリングに良いヒューリスティックスないのかな?
YBWCのPV決定だと縦に並んじゃうから、並列にする意味がない。
確率の高い手は次の段でPVの数を増やしたりするのかな?
813名前は開発中のものです。
2017/05/05(金) 08:17:59.66ID:cViTmSg9 将棋(やチェス)だとYBWCよりもLazy SMPが流行ってるみたいですね
Ponanza Chainerはそれのクラスタ版のeXtreme Lazy Smpらしいですが。
Ponanza Chainerはそれのクラスタ版のeXtreme Lazy Smpらしいですが。
814310
2017/05/05(金) 08:31:32.47ID:Orwfb9MI >>813
どうもです。早速見てみました。
自分のPCは2コアの擬似4コアなので恩恵なさそうです(汗
つか、並列化についてはPPLにお任せしちゃってるので、あまり要点が
わかっていないかも。
しかし、GPS将棋のクラスタすげーと思っていた時代は、一瞬で過去の
ものになってしまったのですねぇ。
どうもです。早速見てみました。
自分のPCは2コアの擬似4コアなので恩恵なさそうです(汗
つか、並列化についてはPPLにお任せしちゃってるので、あまり要点が
わかっていないかも。
しかし、GPS将棋のクラスタすげーと思っていた時代は、一瞬で過去の
ものになってしまったのですねぇ。
815310
2017/05/05(金) 17:24:07.29ID:Orwfb9MI elmo優勝でPonanzaが2位みたいですね。
なんか、将棋も強くなるスピードが尋常じゃない感じ。
目標設定して(前年比9割勝利とか)、マシンパワーとか確実性が
ある所にも、資源を振り向けて達成しているみたいにも見えますが。
なんか、将棋も強くなるスピードが尋常じゃない感じ。
目標設定して(前年比9割勝利とか)、マシンパワーとか確実性が
ある所にも、資源を振り向けて達成しているみたいにも見えますが。
816名前は開発中のものです。
2017/05/05(金) 17:48:22.87ID:hWowcZg5 ディープラーニングと将棋の相性が悪いてことだろうか?
elmoとやらは既存アルゴリズムなんですよね?
elmoとやらは既存アルゴリズムなんですよね?
817名前は開発中のものです。
2017/05/05(金) 18:47:05.96ID:hWowcZg5 elmoて公開されてるんです?
すごいなー
ソース読んでみようかなー
すごいなー
ソース読んでみようかなー
818310
2017/05/05(金) 20:43:38.31ID:Orwfb9MI819名前は開発中のものです。
2017/05/06(土) 09:18:07.29ID:ODpfq25G 自分もディープラーニングっぽいので将棋作ろうとしたけど
能力も価値も違う駒が複数あるから、それをどうするかで悩んで止まった
そのまま探索に掛けるわけにもいかず
ようするに駒割をどうするかわからなかった
一致率自体は普通に上げられるんだけどね
能力も価値も違う駒が複数あるから、それをどうするかで悩んで止まった
そのまま探索に掛けるわけにもいかず
ようするに駒割をどうするかわからなかった
一致率自体は普通に上げられるんだけどね
820名前は開発中のものです。
2017/05/06(土) 09:20:21.30ID:bJnH/Q0z そもそも将棋って、同種のゲームの中でAIにやらせるのは一番難しいくらいなんでしょ?
もっと簡単なゲームからやってみては。
もっと簡単なゲームからやってみては。
821310
2017/05/06(土) 09:41:02.64ID:eGOwqfr/ >>816
相性が悪いというより、効果を出し切れるところまで行かなかったのかも知れませんね。
Ponanzaは2位とはいえ、他の人には全部勝っているわけで、弱くなったわけではないと
思います。
elmoは予選で1敗しているので、予選時にponanzaに勝ったのまぐれかもと思っていたけど
直接対決2連勝で、決勝は全勝なので、やはりelmoの1年間での進歩が凄いかと。
1年間という時間制約の中で、レート向上の目標を200くらいとして、それを何で達成
するかと考えた時に、ディープラーニングを使わなくても同じくらいの向上はできたのかも
知れませんね。
とはいえ、今年は十分に活用しきれなかったけど、適用の仕方を煮詰める事で、来年から
はボーナスのレート向上が見込めるとか、そういう事はあるかも知れませんね。
相性が悪いというより、効果を出し切れるところまで行かなかったのかも知れませんね。
Ponanzaは2位とはいえ、他の人には全部勝っているわけで、弱くなったわけではないと
思います。
elmoは予選で1敗しているので、予選時にponanzaに勝ったのまぐれかもと思っていたけど
直接対決2連勝で、決勝は全勝なので、やはりelmoの1年間での進歩が凄いかと。
1年間という時間制約の中で、レート向上の目標を200くらいとして、それを何で達成
するかと考えた時に、ディープラーニングを使わなくても同じくらいの向上はできたのかも
知れませんね。
とはいえ、今年は十分に活用しきれなかったけど、適用の仕方を煮詰める事で、来年から
はボーナスのレート向上が見込めるとか、そういう事はあるかも知れませんね。
822535
2017/05/08(月) 22:06:30.07ID:bLY5QORw ディープラーニングやり直してみました。
与えられた局面の勝率を学習させて、一手読みで打たせてみました。
局面が均衡しているときは結構いい手を返すみたいですが、
不利に傾くと全然おかしい手を打ち始めます。
学習させた棋譜に偏りがあるんだろうか?
どちらかに不利に傾いた局面も学習させるべき?
与えられた局面の勝率を学習させて、一手読みで打たせてみました。
局面が均衡しているときは結構いい手を返すみたいですが、
不利に傾くと全然おかしい手を打ち始めます。
学習させた棋譜に偏りがあるんだろうか?
どちらかに不利に傾いた局面も学習させるべき?
823310
2017/05/08(月) 23:27:34.27ID:Byk3wJkT 悩ましいところですね。偏った棋譜を学習させるべきか、否か。
相手も弱いから、偏った棋譜になるわけで、そういう時にも問題が起きないように
探索と組み合わせるわけで。そう考えたら、そのままで良いのかも知れないし、
やってみないとわからないかも。自分的には、MCTSにおいてモンテカルロの
問題(隘路の騙し構造)に対して、先に避けるために、選択肢を偏らせるモノだと
認識していますので、拮抗している時に正しい手を返せばよいかと思っています。
自分は、Buroさんの特徴量をベースにしたMLPで評価関数作っているのだけど、
傾向としては線形回帰と変わらない印象です。与えている元データの偏りなのか、
それとも特徴量の選択の問題なのか、悩み中です。DCNNで特徴量抽出まで
やらせたいと、をもう一度試そうかなと言う機運になってます。
ただ、頭の中に、ワンチップマイコンで学習外だしというのがチラついていまして、
そこに入り込むと数か月、下手したら半年はとられるなぁと悶々中。
そうそう。アルファ碁のバリューネットの勝率ですが、割引率を考えたら…
という点に思い至りまして。普通勝率の評価関数はロクなもんじゃないのですが、
強化学習とセットなら、ありかもとちょっと思っています。
相手も弱いから、偏った棋譜になるわけで、そういう時にも問題が起きないように
探索と組み合わせるわけで。そう考えたら、そのままで良いのかも知れないし、
やってみないとわからないかも。自分的には、MCTSにおいてモンテカルロの
問題(隘路の騙し構造)に対して、先に避けるために、選択肢を偏らせるモノだと
認識していますので、拮抗している時に正しい手を返せばよいかと思っています。
自分は、Buroさんの特徴量をベースにしたMLPで評価関数作っているのだけど、
傾向としては線形回帰と変わらない印象です。与えている元データの偏りなのか、
それとも特徴量の選択の問題なのか、悩み中です。DCNNで特徴量抽出まで
やらせたいと、をもう一度試そうかなと言う機運になってます。
ただ、頭の中に、ワンチップマイコンで学習外だしというのがチラついていまして、
そこに入り込むと数か月、下手したら半年はとられるなぁと悶々中。
そうそう。アルファ碁のバリューネットの勝率ですが、割引率を考えたら…
という点に思い至りまして。普通勝率の評価関数はロクなもんじゃないのですが、
強化学習とセットなら、ありかもとちょっと思っています。
824310
2017/05/15(月) 09:41:45.01ID:hagdu+z8 オライリーさんのところのディープラーニング本(Pythonで学ぶ奴)を読んでみました。
自分で実装する人には、なかなか良いです。Python知らないですが、説明だけで結構
おなか一杯になります。
オライリー本で、畳み込み演算の実装(行列に落とし込む)の良い方法がわかりました。
自分が以前やって放置した展開形よりもっと良い方法があるんですね。ちと畳み込む気
が湧いてきました。
現在MLP版のポリシーネットを学習させていますが、テストデータに対して60%越え
まで来ました。一方で入力データサイズが89万(特徴)×16万(ミニwバッチ)とか
わけわからん事になっていて、もう畳み込んでも処理量大差ないんじゃないかと思って
いたところですので、学習限界が見えたら、畳み込みに行ってみようかと思います。
あと、やっぱり強化学習ですね。既存データで学習していても埒があかない気が強くして
きました。
自分で実装する人には、なかなか良いです。Python知らないですが、説明だけで結構
おなか一杯になります。
オライリー本で、畳み込み演算の実装(行列に落とし込む)の良い方法がわかりました。
自分が以前やって放置した展開形よりもっと良い方法があるんですね。ちと畳み込む気
が湧いてきました。
現在MLP版のポリシーネットを学習させていますが、テストデータに対して60%越え
まで来ました。一方で入力データサイズが89万(特徴)×16万(ミニwバッチ)とか
わけわからん事になっていて、もう畳み込んでも処理量大差ないんじゃないかと思って
いたところですので、学習限界が見えたら、畳み込みに行ってみようかと思います。
あと、やっぱり強化学習ですね。既存データで学習していても埒があかない気が強くして
きました。
825535
2017/05/15(月) 22:23:31.10ID:1z5ugcc4 ディープラーニング黒石を1、空点を0、白石を-1を入力として学習させたけど、
黒石かそうでないかの01データと空点かそうでないかの01データと白石かそうでないかの01のデータ
と3つに分けて食わせたほうがいいんだろうか?
黒石かそうでないかの01データと空点かそうでないかの01データと白石かそうでないかの01のデータ
と3つに分けて食わせたほうがいいんだろうか?
827535
2017/05/16(火) 21:15:39.88ID:3NTvf1qj828535
2017/05/17(水) 22:57:33.27ID:2rHwBE7R 今すごくいい勝ち方した。
必勝形を意識した連続攻撃。
こういうのが毎回打てればなぁ。
(;SZ[19]
;B[jj];W[ik];B[ij];W[hk];B[jk];W[gk];B[kl];W[hi]
;B[ji];W[jm];B[kh];W[km];B[jg];W[jl];B[kf];W[li]
;B[je];W[id];B[jf];W[jd];B[jh])
必勝形を意識した連続攻撃。
こういうのが毎回打てればなぁ。
(;SZ[19]
;B[jj];W[ik];B[ij];W[hk];B[jk];W[gk];B[kl];W[hi]
;B[ji];W[jm];B[kh];W[km];B[jg];W[jl];B[kf];W[li]
;B[je];W[id];B[jf];W[jd];B[jh])
829310
2017/05/19(金) 20:14:05.97ID:skXdWaLK 結局、tiny_dnnでDCNNを組んでテスト開始。
ウィンドウサイズ3で、Conv7層+fullcon2層構成。
隠れ層のチャンネル数は暫定で32。
入力は自分・相手・空白・着手可能位置の64×4個。
入力データをDCNN用に展開すると、メモリーに収まりきらずに盛大にスワップ。
BITBOARDの64ビットデータ(unsigned int64)が、32ビット(float)×64個のvectorに
膨らんでしまうのが原因です。
仕方がないので、ファイルを適当なサイズごと読み込みながら、中間バッチを作って、
それを順次学習する形にしました。
で、中間の時間を計ってみたところ、1エポック分学習するのに数日という予想に。
全く非実用的です。どうしよう。
ウィンドウサイズ3で、Conv7層+fullcon2層構成。
隠れ層のチャンネル数は暫定で32。
入力は自分・相手・空白・着手可能位置の64×4個。
入力データをDCNN用に展開すると、メモリーに収まりきらずに盛大にスワップ。
BITBOARDの64ビットデータ(unsigned int64)が、32ビット(float)×64個のvectorに
膨らんでしまうのが原因です。
仕方がないので、ファイルを適当なサイズごと読み込みながら、中間バッチを作って、
それを順次学習する形にしました。
で、中間の時間を計ってみたところ、1エポック分学習するのに数日という予想に。
全く非実用的です。どうしよう。
830535
2017/05/19(金) 20:21:41.55ID:z5dIsNlN 310氏は今のノート捨ててデスクトップでいい奴組むべきw
831310
2017/05/21(日) 16:44:31.83ID:kUdqCG8C ちょこっと直して学習して様子を見てとかやってるうちに、学習しない時間かかると
言う酷い状況に陥りました。最初にテストで1バッチやった時は18分で35%程度の
正答率だったのに。いまでは1バッチ1時間の癖にNaNになったり、正答率3%程度に
落ち着いちゃったり。いわゆる勾配消失になってる模様です。学習進めば進むほど、
勾配消失も進むので、活性化関数をLeaky_ReLUとかにしなきゃいけないかも。
で、段々と強化学習方向に逃げはじめました。
かなり小さいDCNNで学習できるかテストするつもりで、強化学習のプログラム書き
はじめました。まあ、学習するにも、余計時間かかりそうですが。
マジで、デスクトップ欲しいです・・・
言う酷い状況に陥りました。最初にテストで1バッチやった時は18分で35%程度の
正答率だったのに。いまでは1バッチ1時間の癖にNaNになったり、正答率3%程度に
落ち着いちゃったり。いわゆる勾配消失になってる模様です。学習進めば進むほど、
勾配消失も進むので、活性化関数をLeaky_ReLUとかにしなきゃいけないかも。
で、段々と強化学習方向に逃げはじめました。
かなり小さいDCNNで学習できるかテストするつもりで、強化学習のプログラム書き
はじめました。まあ、学習するにも、余計時間かかりそうですが。
マジで、デスクトップ欲しいです・・・
832535
2017/05/24(水) 20:50:33.25ID:NHCMa7e2 中盤で攻めがつながるうち回しが欲しいなぁ。
上手く探索したらかなり枝刈出来そうな気もするが、
それは手書き評価関数を書くのと変わらん難しさという。
上手く探索したらかなり枝刈出来そうな気もするが、
それは手書き評価関数を書くのと変わらん難しさという。
833535
2017/05/25(木) 21:07:01.59ID:nz71uY7p うあああああ、なんかおかしいと思ったらデータ読み込んでなかったw
全然変な手を打つと思ったらそういうことかーorz orz orz
全然変な手を打つと思ったらそういうことかーorz orz orz
834535
2017/05/26(金) 21:03:34.78ID:B39N4gaL バグが治ったらLV3にいい線まで迫ってきた凄い!
18局目
黒(airandom.dll)の勝利回数: 9
白(ai-lv3.dll)の勝利回数: 9
19局目
黒(ai-lv3.dll)の勝利回数: 12
白(airandom.dll)の勝利回数: 7
思考時間がめちゃくちゃ長いのが当面の課題ですね〜
18局目
黒(airandom.dll)の勝利回数: 9
白(ai-lv3.dll)の勝利回数: 9
19局目
黒(ai-lv3.dll)の勝利回数: 12
白(airandom.dll)の勝利回数: 7
思考時間がめちゃくちゃ長いのが当面の課題ですね〜
835535
2017/05/27(土) 01:33:58.68ID:vCz7BcHT 多分、あと二つくらい良い特徴量さえ見いだせればLV3に勝つる。
良い特徴量さえあれば!
良い特徴量さえあれば!
836310
2017/05/27(土) 20:17:57.81ID:TGXtrM6M 強化学習に大きく方向転換。
最初、ポリシーネットを模して学習しようとしたけど、出力がソフトマックスの時
負け側の教師データをどうするのか不安があったので、まずは普通にQ学習で
勝率を学ぶ事にしました。
ざっと作ったところでデバッグに時間がかかりまして、ようやく多分ちゃんと学習して
いるんじゃないかと思うところまで来ました。が、初期の学習をしないでランダム初期化
のまま開始してしまいましたので、学習はしているみたいだけど、実用レベルの学習
をするまで、どれくらいかかるのか、想像もつきません(汗
100回対戦して、1エポック学習するのに、大体8〜10分くらい。控えめに見て
1000万対戦としても、10万分。つまり2か月強必要です。アルファ碁は初期値を
学習した上で追加の強化学習が確か数千万対戦だから、年単位でも足りないかも(笑)
手を完全に固定(ランダム要素排除)した状態で学習により勝つ方向に遷移する事
は確認しましたが、最初の方をランダムにしたりε-greedyしたりして局面が偏らない
ようにしてから、1万対戦しても勝率が良くなる気配が無いので、まだすごく不安です。
最初、ポリシーネットを模して学習しようとしたけど、出力がソフトマックスの時
負け側の教師データをどうするのか不安があったので、まずは普通にQ学習で
勝率を学ぶ事にしました。
ざっと作ったところでデバッグに時間がかかりまして、ようやく多分ちゃんと学習して
いるんじゃないかと思うところまで来ました。が、初期の学習をしないでランダム初期化
のまま開始してしまいましたので、学習はしているみたいだけど、実用レベルの学習
をするまで、どれくらいかかるのか、想像もつきません(汗
100回対戦して、1エポック学習するのに、大体8〜10分くらい。控えめに見て
1000万対戦としても、10万分。つまり2か月強必要です。アルファ碁は初期値を
学習した上で追加の強化学習が確か数千万対戦だから、年単位でも足りないかも(笑)
手を完全に固定(ランダム要素排除)した状態で学習により勝つ方向に遷移する事
は確認しましたが、最初の方をランダムにしたりε-greedyしたりして局面が偏らない
ようにしてから、1万対戦しても勝率が良くなる気配が無いので、まだすごく不安です。
837310
2017/05/28(日) 21:36:00.20ID:354vTA35 ちょっと学習データの保管期限長くしたら100ゲーム14分になった。
あと、テストゲームで動くはずのない側(学習していない方)の手が変わったので
変だなと確認したら、バグ発見。後手番になっても、先手のAIを使用していた(汗
数万ゲーム行っていたのに、また一から学習しなおし。
どうせ適当に構成しているので、少しネットワークを簡素にしてみるかな。
あと、テストゲームで動くはずのない側(学習していない方)の手が変わったので
変だなと確認したら、バグ発見。後手番になっても、先手のAIを使用していた(汗
数万ゲーム行っていたのに、また一から学習しなおし。
どうせ適当に構成しているので、少しネットワークを簡素にしてみるかな。
838535
2017/05/30(火) 22:08:02.05ID:rOaQFKPq 囲連星における将棋で言うところの詰めろと必至を計算するルーチンが欲しい。
かなり切実に。
かなり切実に。
839310
2017/05/30(火) 23:20:25.76ID:rROdfu2T バグ取りしながら、色々いじったら、バグとる前に別のバグを仕込んで・・・
と、長らくデバッグしてましたが、ようやくいじりたくなるところが収束し、バグが
とれて、学習が進むようになりました。
100ゲームプレイして学習のサイクル1回が4分弱になりましたので、
結構気持ちが楽になりました。とりあえず1週間くらい学習させてみます。
一通りできたら、ポリシーの方にもトライしてみようと思います。
と、長らくデバッグしてましたが、ようやくいじりたくなるところが収束し、バグが
とれて、学習が進むようになりました。
100ゲームプレイして学習のサイクル1回が4分弱になりましたので、
結構気持ちが楽になりました。とりあえず1週間くらい学習させてみます。
一通りできたら、ポリシーの方にもトライしてみようと思います。
840535
2017/06/01(木) 22:33:27.70ID:COhqrYJ6 棋譜から詰めろと必至になったパターンを抽出してDBを作ってみようかな。
841535
2017/06/02(金) 22:15:50.82ID:uf6z9S1Y 簡単に2手連打で必勝形ならば詰めろ、ということで仮組みしてみた。
どんな感じかな。
今度AMDからでるスレッドリッパーが気になってしょうがない。
どんな感じかな。
今度AMDからでるスレッドリッパーが気になってしょうがない。
842535
2017/06/03(土) 00:14:49.53ID:976t+GmL 詰めろルーチンなかなかいい感じ?
石の流れが良くなった気がする。
そろそろシチョウルーチンも書かないとだな。
石の流れが良くなった気がする。
そろそろシチョウルーチンも書かないとだな。
843535
2017/06/03(土) 18:55:22.80ID:976t+GmL 現在LV3と対戦中ですがなかなかいい感じです。
13局目
黒(airandom.dll)の勝利回数: 9
白(ai-lv3.dll)の勝利回数: 4
11局目
黒(ai-lv3.dll)の勝利回数: 9
白(airandom.dll)の勝利回数: 2
白番でもうちょっと勝ちたいですねぇ
あと対戦にめちゃめちゃ時間かかるのがどうにも。
13局目
黒(airandom.dll)の勝利回数: 9
白(ai-lv3.dll)の勝利回数: 4
11局目
黒(ai-lv3.dll)の勝利回数: 9
白(airandom.dll)の勝利回数: 2
白番でもうちょっと勝ちたいですねぇ
あと対戦にめちゃめちゃ時間かかるのがどうにも。
844535
2017/06/04(日) 20:33:26.28ID:55DsrXcK 黒番対LV3大きく勝ち越せるかと思ったけど、その後追いつかれちゃってがっかりして対戦止めちゃいました。
もう一工夫必要ですね。
もう一工夫必要ですね。
845535
2017/06/05(月) 00:12:02.90ID:7uLLK55W 気を取り直してLV1,LV2と対戦中
なかなかいい感じ
19局目
黒(airandom.dll)の勝利回数: 19
白(ai-lv1.dll)の勝利回数: 0
17局目
黒(airandom.dll)の勝利回数: 16
白(ai-lv2.dll)の勝利回数: 1
なかなかいい感じ
19局目
黒(airandom.dll)の勝利回数: 19
白(ai-lv1.dll)の勝利回数: 0
17局目
黒(airandom.dll)の勝利回数: 16
白(ai-lv2.dll)の勝利回数: 1
846535
2017/06/05(月) 19:22:25.72ID:7uLLK55W 引き続き対戦中
なかなかいい感じ
40局目
黒(airandom.dll)の勝利回数: 39
白(ai-lv1.dll)の勝利回数: 1
37局目
黒(airandom.dll)の勝利回数: 36
白(ai-lv2.dll)の勝利回数: 1
なかなかいい感じ
40局目
黒(airandom.dll)の勝利回数: 39
白(ai-lv1.dll)の勝利回数: 1
37局目
黒(airandom.dll)の勝利回数: 36
白(ai-lv2.dll)の勝利回数: 1
847310
2017/06/05(月) 19:52:31.59ID:PVR4/NQn 強化学習にトライ中。
最初の勝敗をQ学習する方法は目に見えて学習できていそうだったのですが、
ネットワークが小さすぎたのか、比較的早い段階で飽和。ネットワークを深くして
再試行しようかと思ったのですが、せっかくなのでポリシーの学習にトライ。
しかし、Q学習と違って、学習が上手く進みません。
初期値問題かと思って、最初に教師あり学習をさせてみましたが、やはり勝率が
上がらないというか、30%近辺に落ち込んだまま浮かんでも50%くらいにしか
ならない感じ。このまま続けたら、どこかで戻ってくるのか。100対局の強化学習
で30分かかるので、どうしようかと。
Q学習の方は、比較的簡単に、対象のAIに勝てるようになっていて、世代の追加が
順調に進んでいました。ポリシーだと何故ダメなのか考えれば考えるほど、頭が
混乱してます。
最初の勝敗をQ学習する方法は目に見えて学習できていそうだったのですが、
ネットワークが小さすぎたのか、比較的早い段階で飽和。ネットワークを深くして
再試行しようかと思ったのですが、せっかくなのでポリシーの学習にトライ。
しかし、Q学習と違って、学習が上手く進みません。
初期値問題かと思って、最初に教師あり学習をさせてみましたが、やはり勝率が
上がらないというか、30%近辺に落ち込んだまま浮かんでも50%くらいにしか
ならない感じ。このまま続けたら、どこかで戻ってくるのか。100対局の強化学習
で30分かかるので、どうしようかと。
Q学習の方は、比較的簡単に、対象のAIに勝てるようになっていて、世代の追加が
順調に進んでいました。ポリシーだと何故ダメなのか考えれば考えるほど、頭が
混乱してます。
848310
2017/06/06(火) 20:05:14.75ID:6owNcmqA バグ見つけた。簡単かつ破壊力があるやつ。
教師あり学習の一致率が試行回数少ないのに85%とかになっていて
おかしいとは思っていたんだけど。教師付学習も強化学習も同じバグ。
自分の盤面のところに、次の着手(要するに教師データ)を入れてた。
というわけで、教師付学習からやり直しています。
雰囲気的には、今のネットワークで一致率50%近くまで行きそうです。
あと、GitHUBでAlpha Goクローンを作っているプロジェクトを発見。
解説ページで評価関数部分を結構細かく解説してくれています。
そこで、ポリシーネットの負けた側について「学習率をマイナス」にして
学習すると書かれていて(@o@)。こんなスマートな方法があったとは
やられました。
教師あり学習の一致率が試行回数少ないのに85%とかになっていて
おかしいとは思っていたんだけど。教師付学習も強化学習も同じバグ。
自分の盤面のところに、次の着手(要するに教師データ)を入れてた。
というわけで、教師付学習からやり直しています。
雰囲気的には、今のネットワークで一致率50%近くまで行きそうです。
あと、GitHUBでAlpha Goクローンを作っているプロジェクトを発見。
解説ページで評価関数部分を結構細かく解説してくれています。
そこで、ポリシーネットの負けた側について「学習率をマイナス」にして
学習すると書かれていて(@o@)。こんなスマートな方法があったとは
やられました。
849535
2017/06/06(火) 20:11:39.11ID:7GjyRXFQ >GitHUBでAlpha Goクローンを作っているプロジェクトを発見。
URLくだしあ
URLくだしあ
850535
2017/06/06(火) 20:40:01.38ID:7GjyRXFQ851310
2017/06/06(火) 20:47:41.56ID:6owNcmqA それだす。
一致率は45%で頭打ち。
時間かけずに一致率上げる工夫方面に転進します。
一致率は45%で頭打ち。
時間かけずに一致率上げる工夫方面に転進します。
852535
2017/06/06(火) 21:12:36.87ID:7GjyRXFQ >>851
ありがとうございます。
LV1とLV2,ホントは100戦づつしたかったけど時間かかりすぎるから止めました。
でもまあ手ごたえありの結果ですねぇ。
LV1とLV2は卒業といってもいいかも。
54局目
黒(airandom.dll)の勝利回数: 51
白(ai-lv1.dll)の勝利回数: 3
60局目
黒(airandom.dll)の勝利回数: 58
白(ai-lv2.dll)の勝利回数: 2
ありがとうございます。
LV1とLV2,ホントは100戦づつしたかったけど時間かかりすぎるから止めました。
でもまあ手ごたえありの結果ですねぇ。
LV1とLV2は卒業といってもいいかも。
54局目
黒(airandom.dll)の勝利回数: 51
白(ai-lv1.dll)の勝利回数: 3
60局目
黒(airandom.dll)の勝利回数: 58
白(ai-lv2.dll)の勝利回数: 2
853535
2017/06/09(金) 22:02:57.35ID:N9z2bSO/ 黒番対LV3で難解なコウ争いの末、辛くも勝利!
地力がついてきた!
それにしてもLV3の粘りには驚かされますね。
(;SZ[19]
;B[jj];W[ji];B[ki];W[ik];B[ii];W[jl];B[jh];W[hi]
;B[hh];W[gh];B[kk];W[gg];B[jg];W[kf];B[jf];W[je]
;B[ie];W[hj];B[id];W[hg];B[ig];W[ih];B[hf];W[ge]
;B[hh];W[ij];B[ic];W[ih];B[ke];W[ji];B[lf];W[kl]
;B[kg];W[jk];B[fg];W[lm];B[mn];W[kj];B[gf];W[lk]
;B[jd];W[mk];B[mf];W[ml];B[nm];W[nf];B[if];W[of]
;B[kf])
地力がついてきた!
それにしてもLV3の粘りには驚かされますね。
(;SZ[19]
;B[jj];W[ji];B[ki];W[ik];B[ii];W[jl];B[jh];W[hi]
;B[hh];W[gh];B[kk];W[gg];B[jg];W[kf];B[jf];W[je]
;B[ie];W[hj];B[id];W[hg];B[ig];W[ih];B[hf];W[ge]
;B[hh];W[ij];B[ic];W[ih];B[ke];W[ji];B[lf];W[kl]
;B[kg];W[jk];B[fg];W[lm];B[mn];W[kj];B[gf];W[lk]
;B[jd];W[mk];B[mf];W[ml];B[nm];W[nf];B[if];W[of]
;B[kf])
854535
2017/06/09(金) 23:50:44.20ID:N9z2bSO/ シチョウルーチン組んでたら根本的なルール部分にバグ発見。
出現頻度は低い奴だけどまだこんなバグ残ってんのかとビビった。
出現頻度は低い奴だけどまだこんなバグ残ってんのかとビビった。
855310
2017/06/10(土) 16:27:27.71ID:PCeXyVVE こちらはかなり迷走中。精度を求めるとCNN時間がかかりすぎ。
やっぱり、Buroさんの評価関数の特徴を入力にして、畳み込み演算を使用しない方向で
進めるのが吉ではないかと思い始めています。最終的にオセロAIの中で実用的な速度で
答えが出せるものでないと使い物にならないので。
Buroさん特徴型でポリシーが作れるか。
バリューに相当する勝率ネットワークを作った時、その勝率が使い物になるのか?
それらを強化学習で強化できるのか。
この辺に目標を切り替えます。
ちなみに、今のはBuroさん型評価関数の、評価値(終局時の石数差の予想)を、適当な
線形変換で−1〜1の勝敗の確率っぽい数字とみなして使用していますので、そこの
精度はよくなるのではないかと期待。
やっぱり、Buroさんの評価関数の特徴を入力にして、畳み込み演算を使用しない方向で
進めるのが吉ではないかと思い始めています。最終的にオセロAIの中で実用的な速度で
答えが出せるものでないと使い物にならないので。
Buroさん特徴型でポリシーが作れるか。
バリューに相当する勝率ネットワークを作った時、その勝率が使い物になるのか?
それらを強化学習で強化できるのか。
この辺に目標を切り替えます。
ちなみに、今のはBuroさん型評価関数の、評価値(終局時の石数差の予想)を、適当な
線形変換で−1〜1の勝敗の確率っぽい数字とみなして使用していますので、そこの
精度はよくなるのではないかと期待。
856535
2017/06/10(土) 23:26:39.00ID:L+AkmAT7 思考時間短縮策を考えているんですが、
まだ強さが十分じゃないのに思考時間短縮を考えるのは悪手な気もする。
でも思考時間かかりすぎると統計とれないし悩ましい。
まだ強さが十分じゃないのに思考時間短縮を考えるのは悪手な気もする。
でも思考時間かかりすぎると統計とれないし悩ましい。
857535
2017/06/11(日) 21:28:22.80ID:SJZps56X やっぱハードを強化するしか…
AMDのスレッドリッパーあたり行っちゃうか?
AMDのスレッドリッパーあたり行っちゃうか?
858310
2017/06/11(日) 23:00:35.72ID:8gFXyRd+ Buroさん特徴型で2層パーセプトロン型のポリシー作って学習開始。
1エポック目でテストデータに対して正答率48%超え(汗
当然ながらスピードも速い。
やっぱBuroさん凄い。
1エポック目でテストデータに対して正答率48%超え(汗
当然ながらスピードも速い。
やっぱBuroさん凄い。
859535
2017/06/12(月) 20:43:30.74ID:b/m4vK+x 序盤、いままでDBから一番勝利数の高い手を選んで打ってたけど、
それだと布石が限られちゃうからランダムで第二候補も打つようにしたら
若干勝率下がったような気がする。
まあしょうがないか。
それだと布石が限られちゃうからランダムで第二候補も打つようにしたら
若干勝率下がったような気がする。
まあしょうがないか。
860535
2017/06/13(火) 21:33:01.28ID:Vwv80HwJ 囲碁プログラムなんかだとKGS行くとモンテカルロ350プレイアウト位でも結構強いプログラムあるんだけど、
なんでそんな少ない回数で強さを出せるのか謎すぎる。
なんでそんな少ない回数で強さを出せるのか謎すぎる。
861535
2017/06/17(土) 23:55:21.58ID:RoY4moNt あ〜アイディア湧かね〜
とりあえず LV3 vs LV3の棋譜取 回せるだけ回すか。
スレッドリッパーがあれば今の4倍速で棋譜収集できそうだが…
とりあえず LV3 vs LV3の棋譜取 回せるだけ回すか。
スレッドリッパーがあれば今の4倍速で棋譜収集できそうだが…
862535
2017/06/21(水) 20:57:42.26ID:jKeRi7uh プロファイル取ろうとするとメッチャ時間かかる。
マルチスレッドだと特に時間かかるんだろうか?
プロファイル無しなら2分もかからんのにもう30分くらい走らせてる気がする。
マルチスレッドだと特に時間かかるんだろうか?
プロファイル無しなら2分もかからんのにもう30分くらい走らせてる気がする。
863535
2017/06/21(水) 21:22:11.95ID:jKeRi7uh 将棋、連勝記録らしいですね。一位タイ?とかなんとか
864310
2017/06/22(木) 17:10:28.77ID:nCVESNnQ 昨日の大雨が原因か、ノートパソコンがダメっぽいです。サーフェースなので、SSDの中身が取り出せるか微妙。多分アウト。
という訳で、ソース全滅を半ば覚悟してます(>_<)
しばらく立ち直れないかも。
という訳で、ソース全滅を半ば覚悟してます(>_<)
しばらく立ち直れないかも。
865535
2017/06/22(木) 19:16:22.69ID:1hrbCk1w あちゃーご愁傷さまです
まあこれはあれですね
ハイスペックデスクトップを買えという
神のお告げですね
まあこれはあれですね
ハイスペックデスクトップを買えという
神のお告げですね
866310
2017/06/22(木) 21:45:09.96ID:qlJt6F9H bitlockとかいうセキュリティ保護状態になったのですが、そんな設定してないのです。解除には、解除コードが必要なのですが、そんなの設定してないし。ディスク初期化すれば復活するとの事なので、諦めて初期化しちゃいました。
ビットハックしまくったコードなので、再度コーディングするの面倒です。
ソース保管のためにも、別のPC買うべかなぁ。
ビットハックしまくったコードなので、再度コーディングするの面倒です。
ソース保管のためにも、別のPC買うべかなぁ。
867535
2017/06/22(木) 23:51:29.79ID:OkW8ZbGj そこはGitとか使えばいいんじゃないですかね〜
まあ公開するか金払うかしないとダメですが。
まあ公開するか金払うかしないとダメですが。
868535
2017/06/23(金) 00:39:34.50ID:IGj3LUd/ SSE4.2はセーフだけどAVXはアウト。
おかしなメモリ番地を見に行って落ちてしまう。
CPUは命令に対応してるはずだが?
もしかしたら囲連星の本体の制限なんだろうか?
よくわからん。
おかしなメモリ番地を見に行って落ちてしまう。
CPUは命令に対応してるはずだが?
もしかしたら囲連星の本体の制限なんだろうか?
よくわからん。
869535
2017/06/23(金) 21:17:34.43ID:IGj3LUd/ 俺のAIのレベルが上がれば上がるほどLV3の水準の高さに驚かされる。
いつか絶対超えてやる
いつか絶対超えてやる
870535
2017/06/25(日) 22:16:20.21ID:f6fx6Sdx ちょっと気分を変えてConnect4やってるんですが、
棋譜から学習というのは半永久的に完全解析までにはたどり着かないような気がしてます。
やはり完全解析には超強力な前向き枝刈が必要なのかなと。
一回ちゃんとConnect4の完全解析、勉強してみようかなぁ。
棋譜から学習というのは半永久的に完全解析までにはたどり着かないような気がしてます。
やはり完全解析には超強力な前向き枝刈が必要なのかなと。
一回ちゃんとConnect4の完全解析、勉強してみようかなぁ。
871310
2017/06/25(日) 22:19:41.68ID:rGuWTts8 地道にオセロライブラリ再構築中。
ビットボード回りのビットハックな処理部分は大体できて、着手までできるようになった。
ついでにちょっとだけ改良になりそうな変更を加えた。
ネットで調べていたらmobility関数は、もう少し性能アップしそうな方法があったけど、
ソースコピペではうまく動かなかったので後回し。
ところで、非常に大きな問題があります。
この数年で、多くのオセロ関係サイトが閉鎖されていまして…。
記譜データが集められなくなりました。
50万記譜計画も、EdaxのPVBOOKもアクセス不能です。
MCTSだと評価関数なしでもプレイはできるのですが、そこから記譜を
作るしかないのかなぁ。
つか、オセロやめて、いっそ囲碁に…。
ビットボード回りのビットハックな処理部分は大体できて、着手までできるようになった。
ついでにちょっとだけ改良になりそうな変更を加えた。
ネットで調べていたらmobility関数は、もう少し性能アップしそうな方法があったけど、
ソースコピペではうまく動かなかったので後回し。
ところで、非常に大きな問題があります。
この数年で、多くのオセロ関係サイトが閉鎖されていまして…。
記譜データが集められなくなりました。
50万記譜計画も、EdaxのPVBOOKもアクセス不能です。
MCTSだと評価関数なしでもプレイはできるのですが、そこから記譜を
作るしかないのかなぁ。
つか、オセロやめて、いっそ囲碁に…。
872535
2017/06/25(日) 22:41:07.34ID:f6fx6Sdx おお〜囲碁ですか。
打倒Masterですよ!!
打倒Masterですよ!!
873310
2017/06/26(月) 23:49:18.52ID:GJUXvwb3 藤井君凄かったね。
abemaの解説でも言ってたけど、互角のまま進行していたのに、
気が付いたら圧勝の情勢になるとか、AIチックな差し回しだよね。
じわじわとライブラリ構築中。
オセロ専用ライブラリはほぼ完成。
明日から終盤読み切り処理に取り掛かります。
abemaの解説でも言ってたけど、互角のまま進行していたのに、
気が付いたら圧勝の情勢になるとか、AIチックな差し回しだよね。
じわじわとライブラリ構築中。
オセロ専用ライブラリはほぼ完成。
明日から終盤読み切り処理に取り掛かります。
874535
2017/06/26(月) 23:59:45.84ID:EmG0vEj8 結局オセロですか。ちょっと残念w
まあ、結局自分の情熱が湧くものをやらないとですよね。
ライブラリほぼ完成とか流石に仕事速いですね。
まあ、結局自分の情熱が湧くものをやらないとですよね。
ライブラリほぼ完成とか流石に仕事速いですね。
875535
2017/06/28(水) 00:10:44.15ID:aRb2YNw2 Connect4やってます。
自己対局棋譜を取りまくってDBを作成。
勝利数の多い手を高い確率で着手するようにします。
いま40万局棋譜集めてDBなしAIに対してDBありAIで勝率8割りくらい。
やっぱDBの効果はConnect4でも有効のようだ。
でも先手で完全ソルバに一発入るまでにはいくかどうか?
行ったら楽しいけど。
自己対局棋譜を取りまくってDBを作成。
勝利数の多い手を高い確率で着手するようにします。
いま40万局棋譜集めてDBなしAIに対してDBありAIで勝率8割りくらい。
やっぱDBの効果はConnect4でも有効のようだ。
でも先手で完全ソルバに一発入るまでにはいくかどうか?
行ったら楽しいけど。
876535
2017/06/28(水) 21:56:23.76ID:aRb2YNw2 DBありの勝率9割まできました。
そろそろ自己対局は一旦打ち切りかな。
完全ソルバとやらせてみよう。
そろそろ自己対局は一旦打ち切りかな。
完全ソルバとやらせてみよう。
877535
2017/06/28(水) 22:15:10.75ID:aRb2YNw2 だめだ、5手目で間違える。
やっぱ自己対局じゃ完全解析までたどり着かないかなぁ。
やっぱ自己対局じゃ完全解析までたどり着かないかなぁ。
878535
2017/06/29(木) 23:11:55.06ID:VtwtdSs0 Connect4,対人だとなかなか強いんですが、
それでも全然勝てないってわけでもないですねぇ。
自分でプレーして一回勝ってしまった。
まだまだですね。
それでも全然勝てないってわけでもないですねぇ。
自分でプレーして一回勝ってしまった。
まだまだですね。
879535
2017/07/01(土) 00:13:06.32ID:A/qufpQM http://web.mit.edu/sp.268/www/2010/connectFourSlides.pdf
前半は読みやすくてわかりやすいけど後半一気に難しくなって結局理解できてない。
前半は読みやすくてわかりやすいけど後半一気に難しくなって結局理解できてない。
880310
2017/07/01(土) 02:11:20.40ID:HltHgVcC 終盤探索とりあえずのところまで完成。
盤面の持ち方をちょっと変えて__mm128iにしてみた。
パスの処理を変えてみた。
これで、FFO#40で時間計測。
YBWCで1200msくらい
置換表までで、1800msくらい
negascoutまでで、2200msくらい
nodeカウントを入れると15%くらいスピードダウンする(汗
そこから逆算して、200万nps以上出てる。
まあ結構な速度になりました。
偶数理論も作ってみましたが、空白マスを連続する単位で分離するオーバーヘッド
が大きく、採用すると70万nps程度に落ちてしまう。この処理の良い方法が見つから
ないため、いまだに偶数理論は使っていません。むむむ。
現在、素のMCTSに着手してます。
これができたら、対局集めて、EigenでMLPのライブラリ作って、評価関数(仮)作成。
評価関数をもとにPUCTにアップグレードして強化学習という予定です。
まだ先は長い(汗
盤面の持ち方をちょっと変えて__mm128iにしてみた。
パスの処理を変えてみた。
これで、FFO#40で時間計測。
YBWCで1200msくらい
置換表までで、1800msくらい
negascoutまでで、2200msくらい
nodeカウントを入れると15%くらいスピードダウンする(汗
そこから逆算して、200万nps以上出てる。
まあ結構な速度になりました。
偶数理論も作ってみましたが、空白マスを連続する単位で分離するオーバーヘッド
が大きく、採用すると70万nps程度に落ちてしまう。この処理の良い方法が見つから
ないため、いまだに偶数理論は使っていません。むむむ。
現在、素のMCTSに着手してます。
これができたら、対局集めて、EigenでMLPのライブラリ作って、評価関数(仮)作成。
評価関数をもとにPUCTにアップグレードして強化学習という予定です。
まだ先は長い(汗
881310
2017/07/01(土) 02:18:02.59ID:HltHgVcC >>877
自己対局だと局所解にはまっちゃう時ありますよね。
DBの内容がわからないので、以下頓珍漢かもしれませんが。
解消法としては、開始後数手については、ランダム着手にする。
途中でε-greedyみたいに、ランダムな着手を挟む。
こういった方法で、局所解から外れたところも学習対象に入れる工夫があります。
気持悪いやり方だけど、5手目だけif分で強制的に直して修正済み自己対戦データ
を蓄えて学習するという方法もあります。
自己対局だと局所解にはまっちゃう時ありますよね。
DBの内容がわからないので、以下頓珍漢かもしれませんが。
解消法としては、開始後数手については、ランダム着手にする。
途中でε-greedyみたいに、ランダムな着手を挟む。
こういった方法で、局所解から外れたところも学習対象に入れる工夫があります。
気持悪いやり方だけど、5手目だけif分で強制的に直して修正済み自己対戦データ
を蓄えて学習するという方法もあります。
882535
2017/07/01(土) 18:28:17.34ID:A/qufpQM ランダム着手をまぜるのはいいかもしれませんね。
ありがとうございます。
アルファ碁もやってる手法なんでしたっけ?
ありがとうございます。
アルファ碁もやってる手法なんでしたっけ?
883535
2017/07/01(土) 23:24:59.13ID:A/qufpQM 局所解を避けつつ有望な局面を多く調べるというのはまさにMCTSでやってることなんじゃ?
一回駄目出し食らった案ですが、モンテカルロ木をDBに保存して無限に成長させるという案がどうしても忘れられない。
局面数が大きくなるゲームだと木が大きくなりすぎて駄目ですがConnect4なら…
一回駄目出し食らった案ですが、モンテカルロ木をDBに保存して無限に成長させるという案がどうしても忘れられない。
局面数が大きくなるゲームだと木が大きくなりすぎて駄目ですがConnect4なら…
884535
2017/07/02(日) 00:25:04.48ID:iRJ6TibI 完全ソルバで遊んでるんですが、Connect4って思ったよりゲームバランス良いゲームなのかも。
先手が圧倒的優位かとおもってたけど、後手が完璧に打ってくるとき、
先手も正解が一手しかないという局面が結構あるんですね。
意外と奥が深い。
先手が圧倒的優位かとおもってたけど、後手が完璧に打ってくるとき、
先手も正解が一手しかないという局面が結構あるんですね。
意外と奥が深い。
885310
2017/07/03(月) 20:45:11.36ID:rpYi4lNg MCTS自己対戦させながらデバッグ。そろそろバグはなくなりましたが…
勝っていると緩んで、負けているとギャンブルする癖と、お互いに緩みあっている間に
引き分けに収束してしまう事から、そのままでは記譜に使えない事を自覚中。
とはいえ、記譜を真面目にZebraで並べて見てしまうと、疑問手だらけで、そこを直したく
なって、強化学習にならなくなってしまいますね。
序盤はMCTSで探索し、残り20手で終盤探索して後半中心の評価関数をまず作る事かな。
もともと、前半の何手かはランダム着手して、オープニングの種類が偏らないようにしよう
かと思っていましたが、この調子だと、最初の40手はランダム着手にして、残り20手を
読み切りにした方が、記譜数が稼げる気がしてきました(汗
勝っていると緩んで、負けているとギャンブルする癖と、お互いに緩みあっている間に
引き分けに収束してしまう事から、そのままでは記譜に使えない事を自覚中。
とはいえ、記譜を真面目にZebraで並べて見てしまうと、疑問手だらけで、そこを直したく
なって、強化学習にならなくなってしまいますね。
序盤はMCTSで探索し、残り20手で終盤探索して後半中心の評価関数をまず作る事かな。
もともと、前半の何手かはランダム着手して、オープニングの種類が偏らないようにしよう
かと思っていましたが、この調子だと、最初の40手はランダム着手にして、残り20手を
読み切りにした方が、記譜数が稼げる気がしてきました(汗
886535
2017/07/03(月) 22:52:12.07ID:NTU08E7X 40手もランダムに打たせるんですか?うーん。
にわかには信じられないですが偏らないようにするためには有効なんですかね〜
にわかには信じられないですが偏らないようにするためには有効なんですかね〜
887310
2017/07/06(木) 23:41:11.66ID:uY9At7Gi 終盤20手の盤面集めなので、ばらけた方がよいし、ランダム着手の方が速いかなと。
とはいえ、今はMCTS5秒読み+残り20マス完全読みで記譜集めしてます。
1譜3分弱で、今のところ重複記譜なしで、700譜くらい集まったところです。
さっきまで藤井四段のabemaTVにCPUを15%くらい持っていかれていました(汗
改良したいところはあちこちありますが、とりあえずニューラルネットのライブラリに専念。
optimizerをどうやって作ったか、まったく思い出せない(汗
とはいえ、今はMCTS5秒読み+残り20マス完全読みで記譜集めしてます。
1譜3分弱で、今のところ重複記譜なしで、700譜くらい集まったところです。
さっきまで藤井四段のabemaTVにCPUを15%くらい持っていかれていました(汗
改良したいところはあちこちありますが、とりあえずニューラルネットのライブラリに専念。
optimizerをどうやって作ったか、まったく思い出せない(汗
888310
2017/07/08(土) 20:32:28.67ID:bOmPmg/w ニューラルネットの計算でけました。たぶん。
頭が行列に切り替わるまでが憂鬱なんだよなぁ。
optimizerは計算式なぞるだけで楽勝でした。が、理解しないまま行列計算
に置き換えているので、何が何だかわからなくて、忘れちゃうんでしょうね。
続いて、tiny_dnnのstl的なインターフェースに憧れて、ミニバッチの処理
とかのインターフェースに凝りだしてしまった。
本当はレイヤー階層定義のところも凝りたかったのだけど、今のところ
MLPレベル(2層)までしかやらないと自分に言い聞かせて自粛中。
学習データは1200局くらい集まりましたが、全滅の時の完全読み切り
の手順取得処理にバグがあって、無限ループ入り。せっかくの全滅に
至る記譜が採れませんでした。無念。
頭が行列に切り替わるまでが憂鬱なんだよなぁ。
optimizerは計算式なぞるだけで楽勝でした。が、理解しないまま行列計算
に置き換えているので、何が何だかわからなくて、忘れちゃうんでしょうね。
続いて、tiny_dnnのstl的なインターフェースに憧れて、ミニバッチの処理
とかのインターフェースに凝りだしてしまった。
本当はレイヤー階層定義のところも凝りたかったのだけど、今のところ
MLPレベル(2層)までしかやらないと自分に言い聞かせて自粛中。
学習データは1200局くらい集まりましたが、全滅の時の完全読み切り
の手順取得処理にバグがあって、無限ループ入り。せっかくの全滅に
至る記譜が採れませんでした。無念。
889535
2017/07/09(日) 21:54:20.93ID:DDYaMcZG >モンテカルロ木をDBに保存して無限に成長させる
これやってます。
5手目は正解できるようになったようですが、まだまだ完全ソルバには勝てません。
メモリはそんな簡単に爆発しないみたいだけど、木が大きくなるにつれ速度がかなり遅くなる。
UCBの計算が遅いのだろうか?
これやってます。
5手目は正解できるようになったようですが、まだまだ完全ソルバには勝てません。
メモリはそんな簡単に爆発しないみたいだけど、木が大きくなるにつれ速度がかなり遅くなる。
UCBの計算が遅いのだろうか?
890310
2017/07/10(月) 00:58:02.21ID:NRizRRec 自分のはロールアウト関数がボトルネックなので、木が深くなると速度が上がっていき
ます。MCTSの設定も、どんどん深く行く方向で調整してます。UCBの計算は普通に
cmathのlogとかsqrtとか使ってます。
結局、今日は一日、ニューラルネットのライブラリのインターフェースをしこしこと
作って直して、してました。template使いまくりです。
まだやりたい事があるのですが、今の状況では不要だし、泥沼に入りそうなので、
いったんこの辺で。
記譜は1500超えたので、明日から終盤の評価関数作ってみる予定。
できたようなら、MCTSの探索方法を変えて、更に良い記譜を集めるか、それとも
置換表付き完全読み切りのバグを探すか。
ます。MCTSの設定も、どんどん深く行く方向で調整してます。UCBの計算は普通に
cmathのlogとかsqrtとか使ってます。
結局、今日は一日、ニューラルネットのライブラリのインターフェースをしこしこと
作って直して、してました。template使いまくりです。
まだやりたい事があるのですが、今の状況では不要だし、泥沼に入りそうなので、
いったんこの辺で。
記譜は1500超えたので、明日から終盤の評価関数作ってみる予定。
できたようなら、MCTSの探索方法を変えて、更に良い記譜を集めるか、それとも
置換表付き完全読み切りのバグを探すか。
891535
2017/07/10(月) 22:57:52.54ID:Ioy9WIYD きたああああああぁぁぁぁあああああ!!
完全ソルバに勝利!!!!
http://connect4.gamesolver.org/?pos=44444222242555777711776655625636363333111
この勝利を引くために数十回リトライしましたw
完全ソルバに勝利!!!!
http://connect4.gamesolver.org/?pos=44444222242555777711776655625636363333111
この勝利を引くために数十回リトライしましたw
892535
2017/07/10(月) 23:09:01.53ID:Ioy9WIYD ちなみにDBは初期曲面のプレイアウト回数が約36万回になりました。
少なそうに見えるかもだけどDBつくるのに結構時間かかってる。
囲連星にも応用したいな〜
少なそうに見えるかもだけどDBつくるのに結構時間かかってる。
囲連星にも応用したいな〜
893535
2017/07/10(月) 23:24:06.47ID:Ioy9WIYD DBの木の深さは一番深いところで37。
結構、深いところまで読んでるんじゃないでしょうか。
もちろん、途中で読んでない局面に分岐されると困ってしまうんですが…
結構、深いところまで読んでるんじゃないでしょうか。
もちろん、途中で読んでない局面に分岐されると困ってしまうんですが…
894535
2017/07/10(月) 23:38:14.93ID:Ioy9WIYD UCBの係数をいじれば木を浅く広くにもできそう?
完全ソルバに勝つにはそっちのほうがいいかもしれないですね。
完全ソルバに勝つにはそっちのほうがいいかもしれないですね。
895535
2017/07/11(火) 00:01:35.20ID:XEOuAfue >>890
プロファイル取ってみました。
logとかsqrtとかはインライン展開されて?計算時間がよくわからなかったですけど多分ボトルネックじゃなさそう。
ちなみに局面と勝率を保持するクラスのコピーコンストラクタに全体の60%の時間がかかってるという
完全に意味不明のプロファイル結果が出ました。
どう解釈すればいいんですかね?
プロファイル取ってみました。
logとかsqrtとかはインライン展開されて?計算時間がよくわからなかったですけど多分ボトルネックじゃなさそう。
ちなみに局面と勝率を保持するクラスのコピーコンストラクタに全体の60%の時間がかかってるという
完全に意味不明のプロファイル結果が出ました。
どう解釈すればいいんですかね?
896535
2017/07/11(火) 20:08:54.72ID:XEOuAfue んーもしかしてツリーを丸っとコピーしちゃってる?
問題の個所はどこだろう?
問題の個所はどこだろう?
897535
2017/07/11(火) 21:20:27.73ID:XEOuAfue え、めっちゃ早くなった?ww
我ながらこれはヒドスwwww
我ながらこれはヒドスwwww
898535
2017/07/11(火) 21:50:40.06ID:XEOuAfue うおっ一瞬でメモリパンクしたwwww
310さんの言ったとおりだったwwwww
310さんの言ったとおりだったwwwww
899535
2017/07/11(火) 22:02:05.79ID:XEOuAfue 局面の合流を検知しないでベタに木を展開してんのがまずいのかなぁ。
まあモンテカルロ木DB化はこの辺が限界かなぁ。
まあモンテカルロ木DB化はこの辺が限界かなぁ。
900535
2017/07/11(火) 22:31:32.07ID:XEOuAfue 本線じゃない分岐の間違いを修正するには指数的な試行回数が必要になるなこれは。
まあしょうがないか。
まあしょうがないか。
901310
2017/07/12(水) 20:10:09.86ID:b5nvOjQF 直ったようで何より(^^/
自分は合流させてません。
合流させるメリットよりデメリットの方が大きそうだったので考える事をやめました。
モンテカルロ木DB化って、よくよく考えたらQ学習みたいなものではないかと思います。
Q学習だと全部のノードにQ値を持つので、結局全局面保持することになります。
現在Deep Q学習が主流になってるのは、Q値をディープラーニングで近似計算する
事で、全局面のQ値を保持しなくても良くするためという側面もあるかと思います。
で、Q学習だと考えるなら、時々変な手を混ぜて木をきちんと分岐させるってのが、
強化学習の肝ではないかと思います。
当方、完全読み切りのバグとり完了。
ニューラルネットのライブラリも大体できて、1900譜で40手目以後を学習してみました。
やっぱ、疎行列対応の行列パッケージでの計算は、tiny_dnnと比較して圧倒的に早い
です。
データが少ないのと、同一の記譜内からテストデータ取っているのもあるのですが、
テスト誤差は十分小さな値になるのですが、FFOの盤面を評価させると、いまいち
合っていない感じで、あまり汎化できていない感じす。もっと記譜増やします。
やっつけで作ったmcts部分をきちっとさせるのと、とりあえず持っている評価関数
で、puct化できるか、ロールアウトの後半の精度を上げられるか、検討開始です。
強化学習までまだ遠いなぁ。でも、少し背中が見えてきたかな。
自分は合流させてません。
合流させるメリットよりデメリットの方が大きそうだったので考える事をやめました。
モンテカルロ木DB化って、よくよく考えたらQ学習みたいなものではないかと思います。
Q学習だと全部のノードにQ値を持つので、結局全局面保持することになります。
現在Deep Q学習が主流になってるのは、Q値をディープラーニングで近似計算する
事で、全局面のQ値を保持しなくても良くするためという側面もあるかと思います。
で、Q学習だと考えるなら、時々変な手を混ぜて木をきちんと分岐させるってのが、
強化学習の肝ではないかと思います。
当方、完全読み切りのバグとり完了。
ニューラルネットのライブラリも大体できて、1900譜で40手目以後を学習してみました。
やっぱ、疎行列対応の行列パッケージでの計算は、tiny_dnnと比較して圧倒的に早い
です。
データが少ないのと、同一の記譜内からテストデータ取っているのもあるのですが、
テスト誤差は十分小さな値になるのですが、FFOの盤面を評価させると、いまいち
合っていない感じで、あまり汎化できていない感じす。もっと記譜増やします。
やっつけで作ったmcts部分をきちっとさせるのと、とりあえず持っている評価関数
で、puct化できるか、ロールアウトの後半の精度を上げられるか、検討開始です。
強化学習までまだ遠いなぁ。でも、少し背中が見えてきたかな。
902310
2017/07/12(水) 20:27:07.87ID:b5nvOjQF 記譜集めですが、8手までランダム着手していたら、
9手目で白全滅という記譜が取れました(汗
9手目で白全滅という記譜が取れました(汗
903535
2017/07/14(金) 21:11:11.02ID:TTQj/Kki Connect4もひと段落ついたし囲連星もアイディア湧かないし
気分転換にライフゲーム囲碁のAIやろうかな。
気分転換にライフゲーム囲碁のAIやろうかな。
904310
2017/07/15(土) 02:17:52.56ID:qcpUcaKf 再帰呼出は関数オブジェクトを使うと速いというのを見つけて、あちこち試してみました。
static constな再帰関数は速くなるみたい。
クラス内でthisを参照するような類は効果が無いようです。
が…、なんか数か所おかしいような。
やっぱり、どこかでバグを仕込んでしまった模様。むむむ。
続きは明日だなぁ。
static constな再帰関数は速くなるみたい。
クラス内でthisを参照するような類は効果が無いようです。
が…、なんか数か所おかしいような。
やっぱり、どこかでバグを仕込んでしまった模様。むむむ。
続きは明日だなぁ。
905535
2017/07/15(土) 02:40:13.20ID:+mfEtycW 関数オブジェクトを使うと速いってのはどんな理屈なんですかね?
ちょっと想像つかない。
ちょっと想像つかない。
906310
2017/07/16(日) 00:06:25.07ID:z0mkcRg4 なんかもともと関数呼び出しの方が速いという事で数字で実証するサイトがありました。
まあ、コンパイルの最適化のかかり具合なのかなぁ。わからないです。
コンパイラのバージョンで違うのかも。
バグの原因はわかりました。関数呼び出しにするときに、同時にパスの扱いを変えた
のが原因だと思います。が、確かめる際にもとに戻したら、普通の関数の方が速かった
という結果に。バグってるときの実行時間なので、あてになりませんが。
というわけで、全部もとに戻して、少しだけ確認しましたが、あまり差はない模様orz
記譜の中に間違った読み切り手順が混じってしまったので、全部再計算。
こちらもパスの扱いを変えたのが原因で、別のバグが出ました(汗
二次災害大です。
再計算は2400記譜で1時間半くらいで、着手は最善手の中でのランダムなので、
1回実行してアペンドすると倍、2回で3倍というように、記譜の増殖が可能と思い
当たりました。これを使えば学習データを簡単に増やすことができます。
まあ、コンパイルの最適化のかかり具合なのかなぁ。わからないです。
コンパイラのバージョンで違うのかも。
バグの原因はわかりました。関数呼び出しにするときに、同時にパスの扱いを変えた
のが原因だと思います。が、確かめる際にもとに戻したら、普通の関数の方が速かった
という結果に。バグってるときの実行時間なので、あてになりませんが。
というわけで、全部もとに戻して、少しだけ確認しましたが、あまり差はない模様orz
記譜の中に間違った読み切り手順が混じってしまったので、全部再計算。
こちらもパスの扱いを変えたのが原因で、別のバグが出ました(汗
二次災害大です。
再計算は2400記譜で1時間半くらいで、着手は最善手の中でのランダムなので、
1回実行してアペンドすると倍、2回で3倍というように、記譜の増殖が可能と思い
当たりました。これを使えば学習データを簡単に増やすことができます。
907310
2017/07/17(月) 22:52:41.07ID:GI+vwgP1 評価関数まわりを作ってデバッグ。
その中で致命的がバグが発覚しました。
学習用に溜めた記譜データにおかしなデータがいくつかあるというもの。
学習やり直しです。
記譜データ消した後で気が付きましたが、復旧できないわけではなかった。
後の祭りですorz
その中で致命的がバグが発覚しました。
学習用に溜めた記譜データにおかしなデータがいくつかあるというもの。
学習やり直しです。
記譜データ消した後で気が付きましたが、復旧できないわけではなかった。
後の祭りですorz
908535
2017/07/19(水) 21:46:51.76ID:oWNrCACG うヴぉあー
プログラム組むのすっごいだるい。
心ときめくアイディアが欲しいところ。
プログラム組むのすっごいだるい。
心ときめくアイディアが欲しいところ。
909535
2017/07/20(木) 20:57:58.92ID:5PqobJjm ライフゲーム囲碁、DB使ったほうが弱くなる?
どういうことだこれは…
どういうことだこれは…
910535
2017/07/20(木) 21:13:01.54ID:5PqobJjm 弱くなってるわけではなく互角のよう?
DBの情報量が少なすぎるだけだろうか?
よくわからん。
DBの情報量が少なすぎるだけだろうか?
よくわからん。
911535
2017/07/20(木) 21:56:32.91ID:5PqobJjm 攻め合いが全然めちゃくちゃだなぁ
5x5のパターンマッチ入れるか。
5x5のパターンマッチ入れるか。
912310
2017/07/22(土) 02:06:09.72ID:6HI7Rmqm 結局40手までランダム+残り20手完全読みな記譜集めて、残り20手の評価関数と
Policyを作ってます。ランダム1000件に対して30件のMCTS自己対戦混ぜたもので
学習してます。ランダムだけで十分学習になるようで、悩むより数を集める方が大事な
感じです。40手以後の評価関数ですが、30手過ぎくらいから、そこそこ使えるみたい
です。
で、これを使ってPUCTな形にしてます。
完全読みが使えないので、20〜40手あたりで最善手(に近い手順)をどうやって
作ろうかという感じです。
まずは、後ろから探索で、何手までまともな手だったか遡るプログラムを作って、
残り25手くらいまで遡れたら良いかなぁと。
つか、強化学習に行っちゃおうかなぁ。
Policyを作ってます。ランダム1000件に対して30件のMCTS自己対戦混ぜたもので
学習してます。ランダムだけで十分学習になるようで、悩むより数を集める方が大事な
感じです。40手以後の評価関数ですが、30手過ぎくらいから、そこそこ使えるみたい
です。
で、これを使ってPUCTな形にしてます。
完全読みが使えないので、20〜40手あたりで最善手(に近い手順)をどうやって
作ろうかという感じです。
まずは、後ろから探索で、何手までまともな手だったか遡るプログラムを作って、
残り25手くらいまで遡れたら良いかなぁと。
つか、強化学習に行っちゃおうかなぁ。
913310
2017/07/22(土) 20:32:19.70ID:6HI7Rmqm 逆順チェックのプログラムして、学習時に、正解手順で遡れる盤面も含むようにして
みました。仕組みとしては、最終盤面からヌルウィンドウサーチして、もっと良い評価に
なる手が無いことをチェックして、OKなら1手遡ります。置換表にてPVの評価は即求まる
のと、ヌルウィンドウサーチを使っているので、25手までなら楽勝です。
MCTSで対戦したデータには27手より前まで遡れるものもあるようですが、丸1日
チェックしても終わりそうにないので、25手で打ち切り処理を入れました。
記譜に正解手順で遡れる手数を持たせて、学習時には、その手番以後の盤面を使用
する事で、30手過ぎの評価の精度を上げられたら良いなぁと思います。
みました。仕組みとしては、最終盤面からヌルウィンドウサーチして、もっと良い評価に
なる手が無いことをチェックして、OKなら1手遡ります。置換表にてPVの評価は即求まる
のと、ヌルウィンドウサーチを使っているので、25手までなら楽勝です。
MCTSで対戦したデータには27手より前まで遡れるものもあるようですが、丸1日
チェックしても終わりそうにないので、25手で打ち切り処理を入れました。
記譜に正解手順で遡れる手数を持たせて、学習時には、その手番以後の盤面を使用
する事で、30手過ぎの評価の精度を上げられたら良いなぁと思います。
914535
2017/07/23(日) 00:28:11.37ID:IndxNOGW 5x5のパターン入れたらむしろ弱くなってるような…
え〜なんで〜?
絶対効果あると思ったのに。
え〜なんで〜?
絶対効果あると思ったのに。
915535
2017/07/23(日) 20:45:11.86ID:IndxNOGW ライフゲーム囲碁も囲連星も完全に手詰まり。
それはそれとしてスレッドリッパーが欲しすぎる。
それはそれとしてスレッドリッパーが欲しすぎる。
916310
2017/07/23(日) 23:50:20.93ID:DIga1NIH 遡りチェックしていたのですが、普通のUCT時代の方が精度が高い。
そこで気合入れてPUCTのチェックをしてみたら、案の定符号がひっくり返って
いる箇所があったり、パスの処理が抜けてたり。
たぶん、これで大丈夫だと思います…。
これでしばらくは、高速化しながら、記譜集めですね。
そこで気合入れてPUCTのチェックをしてみたら、案の定符号がひっくり返って
いる箇所があったり、パスの処理が抜けてたり。
たぶん、これで大丈夫だと思います…。
これでしばらくは、高速化しながら、記譜集めですね。
917535
2017/07/24(月) 21:00:27.54ID:+gAaelkw もうずっと諦めてたディープラーニングに再トライするか…
918310
2017/07/29(土) 22:16:52.30ID:YHqII1DK 遡りチェックの高速化で迷走中。
28手までなら問題なさそうなので、現在チェック中。
28手まで35分で遡れる記譜で29手目が1日経っても最善手か否かがわからない。
あまりに極端な差なので、何か条件があるのか、たまたまそういう記譜なのかを調べる
ために、いったん28手まで遡れる記譜を探すという段取りです。
その間、PPLのキャンセル処理について、厳密に考えていたら、今のやり方ではベータ
カットでのキャンセルが効いていないのではないかという疑念が。ループの中で再帰し
ているので、そこにcancellation_token_sourceオブジェクトを渡してやって、ポーリングを
して、下ノードでもキャンセル処理をしないといけないが、していなかったので結局中断
せずに、普通に終了待ちしてしまっているという事。
で、キャンセル処理を直したのだけど、時間変わらず。メッセージ出すようにしてデバッグ
したところ、ベータカットが1件も起きていないという謎な事態が確認されました。出てくる
答えは合っているので、しばらく考えることになります。
28手までなら問題なさそうなので、現在チェック中。
28手まで35分で遡れる記譜で29手目が1日経っても最善手か否かがわからない。
あまりに極端な差なので、何か条件があるのか、たまたまそういう記譜なのかを調べる
ために、いったん28手まで遡れる記譜を探すという段取りです。
その間、PPLのキャンセル処理について、厳密に考えていたら、今のやり方ではベータ
カットでのキャンセルが効いていないのではないかという疑念が。ループの中で再帰し
ているので、そこにcancellation_token_sourceオブジェクトを渡してやって、ポーリングを
して、下ノードでもキャンセル処理をしないといけないが、していなかったので結局中断
せずに、普通に終了待ちしてしまっているという事。
で、キャンセル処理を直したのだけど、時間変わらず。メッセージ出すようにしてデバッグ
したところ、ベータカットが1件も起きていないという謎な事態が確認されました。出てくる
答えは合っているので、しばらく考えることになります。
919535
2017/08/06(日) 01:16:09.87ID:OuLT6Ytw ここのところさぼりっぱなし
スレッドリッパーも15万以上らしいし
テンション下がる
スレッドリッパーも15万以上らしいし
テンション下がる
920310
2017/08/06(日) 10:08:36.68ID:zi8YR8lq キャンセル処理については確認完了。たぶん大丈夫。
ただ、キャンセルが多発するはずの、最善手じゃなかったときに、通常より時間がかかる
傾向に見えるのが気になる。mctsが間違えるくらい枝分かれが多いからかもしれないけど。
遡りチェックはやはり遡り29手目から日単位で時間がかかるものが出てくる。
28手まで遡ると、最大数時間くらいな感じなので全部チェックするなら28手が限界かも。
当分の間、記譜集めという事になりそうですが、1日動かして数十記譜では終わる目途が立たない。
精度落とせばスピードアップできるけど。
あと、mctsで末端ノード100万単位まで探索して引き分けの時に、完全読みかけるとそう
じゃないときが結構ある。どこかで枝の探索漏れが生じてるっぽい。Policyの方はかなり
小さくても探索はかかってるようなので、Valueの方じゃないかと思う。
ただ、キャンセルが多発するはずの、最善手じゃなかったときに、通常より時間がかかる
傾向に見えるのが気になる。mctsが間違えるくらい枝分かれが多いからかもしれないけど。
遡りチェックはやはり遡り29手目から日単位で時間がかかるものが出てくる。
28手まで遡ると、最大数時間くらいな感じなので全部チェックするなら28手が限界かも。
当分の間、記譜集めという事になりそうですが、1日動かして数十記譜では終わる目途が立たない。
精度落とせばスピードアップできるけど。
あと、mctsで末端ノード100万単位まで探索して引き分けの時に、完全読みかけるとそう
じゃないときが結構ある。どこかで枝の探索漏れが生じてるっぽい。Policyの方はかなり
小さくても探索はかかってるようなので、Valueの方じゃないかと思う。
921310
2017/08/06(日) 21:21:02.06ID:zi8YR8lq 最善手じゃなかったときの時間問題、原因判明。オーダリングでした。
オーダリングでは置換表にあるものを優先していたのですが、遡りチェックの時には
ベータカットを起こすには置換表に無い方から探索しなければいけないわけで。
遡りOKの時は、どういう順番から探索しても、全て探索するしαは更新されないので
かかる時間がほぼ一緒ですから、順番変えてOKです。
でも、これ通常探索時には逆になります。条件的には、ヌルウィンドウサーチの時と
そうじゃないときで区別できそうですが、ちょっと考えてみます。
探索の方の問題は、やはりValueの評価値とRolloutの勝率がともに悪いと、本当は勝ち
手順でも簡単にはチェックがかからなくなってしまうという問題かなと思います。この辺は
精度アップで対応するしかなさそうです。
オーダリングでは置換表にあるものを優先していたのですが、遡りチェックの時には
ベータカットを起こすには置換表に無い方から探索しなければいけないわけで。
遡りOKの時は、どういう順番から探索しても、全て探索するしαは更新されないので
かかる時間がほぼ一緒ですから、順番変えてOKです。
でも、これ通常探索時には逆になります。条件的には、ヌルウィンドウサーチの時と
そうじゃないときで区別できそうですが、ちょっと考えてみます。
探索の方の問題は、やはりValueの評価値とRolloutの勝率がともに悪いと、本当は勝ち
手順でも簡単にはチェックがかからなくなってしまうという問題かなと思います。この辺は
精度アップで対応するしかなさそうです。
922310
2017/08/07(月) 20:08:24.65ID:3J92NhXM オーダリングを詰めて、さらにヌルサーチ専用の処理を追加。
ベータカットが早めに起きるようにしたのもありますが、それ以外の部分でも
倍速近くなっていると思います。が、まあ、それでも28手目以前まで遡りチェック
するのに時間がかかるという点では焼け石に水。
記譜集めからの逃避はこの辺にして、記譜集めに戻らないと…。
ここまで来ると準確定石によるアルファカットも再度実装してみたい。
準確定石を求める処理も、ソースごと消失しています。
以前は盤面与えると都度再計算していましたが、石を置くごとに更新していく
ような方法にできないか考えています。とはいえ、なかなか良い方法が思い
浮かばないので、あくまで記譜集めしながら考えてみる程度ですが。
ベータカットが早めに起きるようにしたのもありますが、それ以外の部分でも
倍速近くなっていると思います。が、まあ、それでも28手目以前まで遡りチェック
するのに時間がかかるという点では焼け石に水。
記譜集めからの逃避はこの辺にして、記譜集めに戻らないと…。
ここまで来ると準確定石によるアルファカットも再度実装してみたい。
準確定石を求める処理も、ソースごと消失しています。
以前は盤面与えると都度再計算していましたが、石を置くごとに更新していく
ような方法にできないか考えています。とはいえ、なかなか良い方法が思い
浮かばないので、あくまで記譜集めしながら考えてみる程度ですが。
923535
2017/08/07(月) 22:11:24.15ID:PWzU5nmf うあああああ、だめだああああ
俺の才能は枯れ果てた
全然何もできない
一歩も進まない
俺の才能は枯れ果てた
全然何もできない
一歩も進まない
924310
2017/08/07(月) 22:15:17.79ID:3J92NhXM がんがれー。
自分も実をいうとかなり行き詰ってるけど、やれることを少しづつやってる感じ。
まあ、一回ソース全滅したの書き直すイベントのおかげで、リセットできたってのもあるけど。
自分も実をいうとかなり行き詰ってるけど、やれることを少しづつやってる感じ。
まあ、一回ソース全滅したの書き直すイベントのおかげで、リセットできたってのもあるけど。
925535
2017/08/11(金) 00:46:45.11ID:gdLNX0jm スレッドリッパー遂に発売ですね。
ベンチによれば1950Xに乗り換えればCPU性能は現状の3倍以上になりそうです。
うーん欲しい。
ベンチによれば1950Xに乗り換えればCPU性能は現状の3倍以上になりそうです。
うーん欲しい。
926310
2017/08/11(金) 17:12:37.06ID:3ANYT76m 自分の場合、何倍になるんだろ。単純に考えて10倍くらいになるのかなw
まあ、アムダールの法則あるから、そこまではいかないだろうけど。
メモリーも、8Gだと遡り30手あたりでスワップ始まるので、もう少しほしいなぁ。
最近、PC通販サイトを時々覗いています。
スレッドリッパーほしいですねぇ。
相変わらず遡りチェックの高速化を地味に実行中。
min-Max探索の並列処理は粒度が大きいので、待ち合わせロスが多くなりますが、
その辺を何とかしました。遡りチェックはヌルサーチにおけるベータカット検出がメイン
であるという点に依存しますので、普通の探索では使えませんが。
平行して確定石の計算作ってますが、なかなかうまくSIMD演算に落とし込めない。
しばし悩み中です。ただ、30手遡りとかまで行くと、確定石を使ったアルファカットが
かなり効きそうなので、早くなんとかしたいです。
まあ、アムダールの法則あるから、そこまではいかないだろうけど。
メモリーも、8Gだと遡り30手あたりでスワップ始まるので、もう少しほしいなぁ。
最近、PC通販サイトを時々覗いています。
スレッドリッパーほしいですねぇ。
相変わらず遡りチェックの高速化を地味に実行中。
min-Max探索の並列処理は粒度が大きいので、待ち合わせロスが多くなりますが、
その辺を何とかしました。遡りチェックはヌルサーチにおけるベータカット検出がメイン
であるという点に依存しますので、普通の探索では使えませんが。
平行して確定石の計算作ってますが、なかなかうまくSIMD演算に落とし込めない。
しばし悩み中です。ただ、30手遡りとかまで行くと、確定石を使ったアルファカットが
かなり効きそうなので、早くなんとかしたいです。
927535
2017/08/12(土) 22:58:25.64ID:BGqwTvwq 確定石という言葉で思い出しましたが
ライフゲーム囲碁にも確定石という概念がありますね
やれる事が一個見つかりました
ライフゲーム囲碁にも確定石という概念がありますね
やれる事が一個見つかりました
928310
2017/08/13(日) 23:11:58.30ID:icrdxDk8 確定石とりあえずできました。
自分の実装で3ステップあるうちの2ステップでSIMD化できましたが、
最後の1つはまだシフトとループの組み合わせです。
で、さっそく敵確定石数からアルファ値アンダー検出のカットロジックを
入れてみましたが、遡りチェックに入れると、途中でバグるという状態。
しばし長考が必要です。
というわけで、記譜集めに戻りましたが、こちらもランダム着手付
の探索で、稀に間違った着手をするというバグが出てます。こちら
も、しばし長考が必要かもしれません。
むむむ。
自分の実装で3ステップあるうちの2ステップでSIMD化できましたが、
最後の1つはまだシフトとループの組み合わせです。
で、さっそく敵確定石数からアルファ値アンダー検出のカットロジックを
入れてみましたが、遡りチェックに入れると、途中でバグるという状態。
しばし長考が必要です。
というわけで、記譜集めに戻りましたが、こちらもランダム着手付
の探索で、稀に間違った着手をするというバグが出てます。こちら
も、しばし長考が必要かもしれません。
むむむ。
929310
2017/08/14(月) 23:05:49.41ID:4KkLvd6h 記譜側のバグ取りしてました。
というか、ランダム着手部分を全面的に作り替えました。かなり簡単になりました。
が、テスト中に突然のあり得ないレベルの速度低下。
原因は、ふと並列探索にできる箇所を追加した事にありましたorz
丸一日大損です。
ついでに速度を調べていたら、ただの探索より置換表の方が遅いという恐るべき事態。
オーダリングもおかしくなっていましたので、ここも修正。
それでも、まだybwc探索と置換表探索の速度が変わらないという問題あり。
あちこちいじりすぎてわけわからなくなってます。むむむ。
というか、ランダム着手部分を全面的に作り替えました。かなり簡単になりました。
が、テスト中に突然のあり得ないレベルの速度低下。
原因は、ふと並列探索にできる箇所を追加した事にありましたorz
丸一日大損です。
ついでに速度を調べていたら、ただの探索より置換表の方が遅いという恐るべき事態。
オーダリングもおかしくなっていましたので、ここも修正。
それでも、まだybwc探索と置換表探索の速度が変わらないという問題あり。
あちこちいじりすぎてわけわからなくなってます。むむむ。
930535
2017/08/17(木) 18:25:09.94ID:3P8/JKah zenおめ
931310
2017/08/19(土) 00:06:36.46ID:+u+2ZNgB なんか優勝したみたいだね。
強いAI同士で戦うと、ぎりぎりの攻防の結果、人間には穴があるように見えて
しまうのかも知れん、と、ふと思ったりして。
強いAI同士で戦うと、ぎりぎりの攻防の結果、人間には穴があるように見えて
しまうのかも知れん、と、ふと思ったりして。
932535
2017/08/20(日) 19:27:44.87ID:6W3WD1Mu 盆休みはまるまるさぼってしまいました。
心機一転なにか始めたいなぁ。
心機一転なにか始めたいなぁ。
933310
2017/08/21(月) 01:03:27.39ID:fSNFfFNF せっかくまともに動いていた記譜集めですが、つい直したくなって直していたら
バグ出る、速度落ちるで、さんざんでした。ようやく落ち着いたかな。
キャンセルメッセージ、再帰処理だと結構混乱してしまう。
最上階層でのβカットの際、キャンセル待ちでかかっていた時間を、ほぼゼロに
短縮しました。たぶん、タイムアップのキャンセル待ちも。ただし、まだ未検証。
とはいえ、まだ記譜数が足りないのか、評価値が安定しない…
バグ出る、速度落ちるで、さんざんでした。ようやく落ち着いたかな。
キャンセルメッセージ、再帰処理だと結構混乱してしまう。
最上階層でのβカットの際、キャンセル待ちでかかっていた時間を、ほぼゼロに
短縮しました。たぶん、タイムアップのキャンセル待ちも。ただし、まだ未検証。
とはいえ、まだ記譜数が足りないのか、評価値が安定しない…
934535
2017/08/22(火) 22:49:19.92ID:79INUlhM ライフゲーム囲碁と畳み込みニューラルネットは相性良さそうなイメージが湧いてきた
ちょっと調べてみるか
ちょっと調べてみるか
935310
2017/08/25(金) 00:10:43.60ID:9p5u+Oh3 スレッドリッパーいきなり値下げですね。秋冬ごろ狙おうかなぁ。
記譜集め開始したら、耐久テスト状態になってバグがちらほら。
ここ1週間くらいで直したところに原因がありました。またか。
困った事に、たまたまエラートラップに引っかからない事があるため、記譜が
全て正しいという保証が微妙な事。仕方ないので、記譜のチェックをしなきゃ
ならん…。
また、やけにおかしいと思っていた評価関数でも、問題が発覚でした。
記譜集め開始したら、耐久テスト状態になってバグがちらほら。
ここ1週間くらいで直したところに原因がありました。またか。
困った事に、たまたまエラートラップに引っかからない事があるため、記譜が
全て正しいという保証が微妙な事。仕方ないので、記譜のチェックをしなきゃ
ならん…。
また、やけにおかしいと思っていた評価関数でも、問題が発覚でした。
936535
2017/08/30(水) 23:19:27.29ID:o4lpiF9I スレッドリッパー欲しいが40万円はおいそれと出せないなあ
冷静に考えると予算20万が限界だなあぶっちゃけ
畳み込みニューラルネットって何十枚もフィルター用意するんです?
計算時間メッチャかかりそうな?
冷静に考えると予算20万が限界だなあぶっちゃけ
畳み込みニューラルネットって何十枚もフィルター用意するんです?
計算時間メッチャかかりそうな?
937310
2017/08/31(木) 22:05:50.41ID:lyHOCTEv スレッドリッパー単体で12万円くらいですからね。
CPUクーラーと電源頑張らないといけないから、それなりの価格にはなっちゃいますね。
畳みこみは3×3を基本にしても、アルファ碁で192フィルターの12段構成とかです。
自分は今のパソコンでオセロの8×8に対して3×3の48フィルタの2段構成で試して
みましたが、学習終わる気配がないので、ペンディング中です。
普通にMNISTの手書き数字認識は、しょせんオートエンコーダの3段とかなので、大した
時間もかからずにできちゃうんですけどねぇ。例題と実践のギャップがでかすぎ。
ただ、畳み込み演算自体は昔からあるもので、たぶんFFTとかでも同じような計算して
いるはずなので、しっかり勉強すれば、何か、計算速度アップの技がありそうな気は
しています。
デバッグ考えると、ハードで頑張った方が精神的に楽ですが。
CPUクーラーと電源頑張らないといけないから、それなりの価格にはなっちゃいますね。
畳みこみは3×3を基本にしても、アルファ碁で192フィルターの12段構成とかです。
自分は今のパソコンでオセロの8×8に対して3×3の48フィルタの2段構成で試して
みましたが、学習終わる気配がないので、ペンディング中です。
普通にMNISTの手書き数字認識は、しょせんオートエンコーダの3段とかなので、大した
時間もかからずにできちゃうんですけどねぇ。例題と実践のギャップがでかすぎ。
ただ、畳み込み演算自体は昔からあるもので、たぶんFFTとかでも同じような計算して
いるはずなので、しっかり勉強すれば、何か、計算速度アップの技がありそうな気は
しています。
デバッグ考えると、ハードで頑張った方が精神的に楽ですが。
938310
2017/09/03(日) 08:52:20.52ID:sEBlGL7A 相変わらず記譜集め中。
オセロの読み切り処理の並列化は、粒度がでかくて、待ち合わせロスが大きいので、
CPUがアイドルしている時間が長く気になります。そこで、スレッド数をチェックしてコア
数を下回っている時は、リーフに近いところでも並列探索に戻るようにしてみました。
PPL機能ではスレッド数は取得不可能で、結局自分で増減カウントしました。
リソースモニター上ではCPU使用率が100%近くに貼りついているいるので、待ち合わ
せロスはほぼゼロになりましたが、早くなったかどうかは未確認です(汗
オセロの読み切り処理の並列化は、粒度がでかくて、待ち合わせロスが大きいので、
CPUがアイドルしている時間が長く気になります。そこで、スレッド数をチェックしてコア
数を下回っている時は、リーフに近いところでも並列探索に戻るようにしてみました。
PPL機能ではスレッド数は取得不可能で、結局自分で増減カウントしました。
リソースモニター上ではCPU使用率が100%近くに貼りついているいるので、待ち合わ
せロスはほぼゼロになりましたが、早くなったかどうかは未確認です(汗
939535
2017/09/04(月) 20:17:25.15ID:BnaFXSEJ 畳み込みニューラルネットの勉強なかなか進みません。
とりあえず、棋譜がなければなにもできないので棋譜取始めました。
質より量優先で1局4秒くらいで生成中。
明日の夕方まで回す予定。
とりあえず、棋譜がなければなにもできないので棋譜取始めました。
質より量優先で1局4秒くらいで生成中。
明日の夕方まで回す予定。
940535
2017/09/05(火) 20:03:48.94ID:a++kwbuh 16万局分くらい棋譜集まりました。質は期待できませんが…
そろそろCNNの勉強を本格的に進めなければ。
そろそろCNNの勉強を本格的に進めなければ。
941310
2017/09/06(水) 00:21:57.37ID:lfEM6HyT 乙です。
こちとら、またまた終盤探索にバグが見つかりまして。
2日ほど根つめてデバッグ。その間記譜収集停止orz
いつも出てくれればよいのに、同じ記譜でも30回に1回とかのレベルで発現する
奴で往生しました。最終的にnull window search専用処理の置換表のどこかが
おかしいだろうというところまで追い詰めましたが、諦めました。時々異常に探索
時間がかかるのも、この処理が原因っぽかったので、やけになって削除。
すっきりしたかもw
なかなか強化学習までたどり着けない…
こちとら、またまた終盤探索にバグが見つかりまして。
2日ほど根つめてデバッグ。その間記譜収集停止orz
いつも出てくれればよいのに、同じ記譜でも30回に1回とかのレベルで発現する
奴で往生しました。最終的にnull window search専用処理の置換表のどこかが
おかしいだろうというところまで追い詰めましたが、諦めました。時々異常に探索
時間がかかるのも、この処理が原因っぽかったので、やけになって削除。
すっきりしたかもw
なかなか強化学習までたどり着けない…
942535
2017/09/07(木) 21:19:23.25ID:QIAny/iA 集めた棋譜を統計取ってみましたが、初手天元が妙に少ない?
という謎の現象がおきたのですが、盤面の対称性を考慮してDBを作ったせいのようです。
天元は対称局面がないが、ほかの局面は対称局面があり、対称局面は合算されるため。
ていうか16万局じゃ全然データ足りないかもw
という謎の現象がおきたのですが、盤面の対称性を考慮してDBを作ったせいのようです。
天元は対称局面がないが、ほかの局面は対称局面があり、対称局面は合算されるため。
ていうか16万局じゃ全然データ足りないかもw
943535
2017/09/07(木) 22:01:51.18ID:QIAny/iA 初期曲面から3手目まで位しか十分な数のデータがないっぽいw
100万局にしても無駄だろうなぁ
100万局にしても無駄だろうなぁ
944310
2017/09/08(金) 00:27:19.31ID:4/v5wLbf 強化学習の準備始めました。
評価関数のファイル名決め打ちしてたり、staticだったりで、あちこち変えなきゃならん。
と、裏で記譜集めをしていたら、またまた問題が。
探索結果は合っているけど、逆順探索などで失敗。
用途の違う置換表を使いまわしちゃいかんという事の模様で、置換表クリアで対応。
mtd(f)で下から寄ったあと、置換表残したままもう一度上から寄せると、探索間違える
現象も確認。良く考えれば何が問題なのかわかりそうだけど、もう飽きた(汗
何回目の「これできっと大丈夫」なのかorz
>>943
局面数的には、全宇宙の原子数でも足りないかと…
特徴抽出と近似による汎化に頼らないと・・・
評価関数のファイル名決め打ちしてたり、staticだったりで、あちこち変えなきゃならん。
と、裏で記譜集めをしていたら、またまた問題が。
探索結果は合っているけど、逆順探索などで失敗。
用途の違う置換表を使いまわしちゃいかんという事の模様で、置換表クリアで対応。
mtd(f)で下から寄ったあと、置換表残したままもう一度上から寄せると、探索間違える
現象も確認。良く考えれば何が問題なのかわかりそうだけど、もう飽きた(汗
何回目の「これできっと大丈夫」なのかorz
>>943
局面数的には、全宇宙の原子数でも足りないかと…
特徴抽出と近似による汎化に頼らないと・・・
946310
2017/09/08(金) 23:49:16.12ID:4/v5wLbf 昨夜いろいろ考えながら寝ていたら、あっとなりまして。
今までmin-maxな部分ばかりデバッグしてましたが、最初にバグに気付いた時に
並列探索かつ置換表な時に問題が起きると気づいていたのに、見るところ間違え
てました。置換表の更新のところで、2重更新の対策してなかった(汗
null window searchとか、冤罪だったんじゃないかと。
まあ、徐々に耐久テストしてみます。
今までmin-maxな部分ばかりデバッグしてましたが、最初にバグに気付いた時に
並列探索かつ置換表な時に問題が起きると気づいていたのに、見るところ間違え
てました。置換表の更新のところで、2重更新の対策してなかった(汗
null window searchとか、冤罪だったんじゃないかと。
まあ、徐々に耐久テストしてみます。
947310
2017/09/11(月) 00:57:10.83ID:ieDiiY3U >>946は潜在的には問題になりえますが、関係なかったorz
都度都度置換表をクリアしながらなら問題が起きないようです。
でも、クリアしなければならない、そもそも今のトリッキーな高速化方法では
かえって低速になる事から、着手リスト作成箇所を全面的に書き直して
しまいました。
現在耐久テスト中。今のところ調子は良さそうです。
記譜集めちんたらやりすぎなので、ちょっと質を落として数を増やしてみます。
都度都度置換表をクリアしながらなら問題が起きないようです。
でも、クリアしなければならない、そもそも今のトリッキーな高速化方法では
かえって低速になる事から、着手リスト作成箇所を全面的に書き直して
しまいました。
現在耐久テスト中。今のところ調子は良さそうです。
記譜集めちんたらやりすぎなので、ちょっと質を落として数を増やしてみます。
948310
2017/09/16(土) 22:09:05.96ID:4ZN/DTXg このまま記譜集めしていても、必要分量まで集めるのにどんだけかかるかわからない
ので、悩んでいましたが、ふと思いつきました。置換表には、読み切り済の記譜が詰まっ
ていると。上限加減のタイプもあるので、全部ではありませんが、これを捨てるのは勿体
ないかなと。で、抜いてみました。25手読み事に大体3000局面の盤面と終局スコアが
得られます。
どういう局面が残るのかは、なんとも言い難いのですが、記譜の足しにはなるというか
結構な分量がたまるなぁという事で、これもとっておいて、再利用できるようにしてみま
した。置換表適用深さ分しかないので、限られてはしまいますが、分量的には結構に
なるので、利用を前提にしてみます。
ので、悩んでいましたが、ふと思いつきました。置換表には、読み切り済の記譜が詰まっ
ていると。上限加減のタイプもあるので、全部ではありませんが、これを捨てるのは勿体
ないかなと。で、抜いてみました。25手読み事に大体3000局面の盤面と終局スコアが
得られます。
どういう局面が残るのかは、なんとも言い難いのですが、記譜の足しにはなるというか
結構な分量がたまるなぁという事で、これもとっておいて、再利用できるようにしてみま
した。置換表適用深さ分しかないので、限られてはしまいますが、分量的には結構に
なるので、利用を前提にしてみます。
949535
2017/09/20(水) 22:11:12.05ID:iovYnC4+ tensorflowやってます。
import numpy as nm
winrate=nm.loadtxt("WINRATE.TXT")
boards=nm.loadtxt("BOARD.TXT")
WINRATE.TXTは読み込めるのにBOARD.TXTは読み込めない。
データがでかすぎるってことだろうか
さてどうするか…
import numpy as nm
winrate=nm.loadtxt("WINRATE.TXT")
boards=nm.loadtxt("BOARD.TXT")
WINRATE.TXTは読み込めるのにBOARD.TXTは読み込めない。
データがでかすぎるってことだろうか
さてどうするか…
950535
2017/09/20(水) 22:23:57.53ID:iovYnC4+ データ半分にしたら通った
まあしょうがないか
まあしょうがないか
951310
2017/09/21(木) 20:15:32.64ID:x7IR5Khh tensorflowですか!
環境整備大変そうだと逃げてます。乙です。
速度感とか教えてください。
こちらは、ようやく強化学習の良い方法を考え付きまして。
とりあえずダミーとの対戦と学習部分までコーディングしてみたところ。
今夜デバッグして、強化部分のコーディングする予定。
rollout部で使用するのはあきらめました。
色々やっていたら、勝率も大事だけど、それよりツリー展開のドライバー
としての速度の方が大事だと言う結論に(汗
環境整備大変そうだと逃げてます。乙です。
速度感とか教えてください。
こちらは、ようやく強化学習の良い方法を考え付きまして。
とりあえずダミーとの対戦と学習部分までコーディングしてみたところ。
今夜デバッグして、強化部分のコーディングする予定。
rollout部で使用するのはあきらめました。
色々やっていたら、勝率も大事だけど、それよりツリー展開のドライバー
としての速度の方が大事だと言う結論に(汗
952535
2017/09/23(土) 19:53:23.58ID:5wTLMOiz なんか、3x3のフィルターは学習動くのに5x5のフィルターで学習させようとすると落ちる?
とりあえず、3x3のフィルターで進めてみます。
とりあえず、3x3のフィルターで進めてみます。
953535
2017/09/23(土) 19:55:53.86ID:5wTLMOiz tensorflow固有の問題じゃないかもですがとにかくメモリが足らんですね。
今のマシンは16GBなんですが、可能なら128GBくらい積みたい気分。
やはりスレッドリッパー欲しい。金がないけど。
今のマシンは16GBなんですが、可能なら128GBくらい積みたい気分。
やはりスレッドリッパー欲しい。金がないけど。
954535
2017/09/23(土) 22:35:13.25ID:5wTLMOiz tensorflowに計算機占有されちゃうの意外と痛いですねorz
やはりスレッドリッパーしか…
でも金が…
やはりスレッドリッパーしか…
でも金が…
955535
2017/09/23(土) 22:53:28.32ID:5wTLMOiz 局面の勝率計算させてるけど今正解との誤差が平均0.14くらいっぽい
勝率で平均0.14違ったら使い物にならんじゃないのか?
うーん。
勝率で平均0.14違ったら使い物にならんじゃないのか?
うーん。
956310
2017/09/24(日) 01:20:18.11ID:1rFk/uJ5 並列処理すると、何使っても計算機資源占有されちゃいますよw
だからGPUに逃がしてCPUを空けようとしたりするんですよね。
最近扇風機で冷やすようにしてますが、扇風機無しだとクロック数が80%以下まで
下がってしまって、そういう時に限って、読み切り処理でバグがあるような結果が出て
います。理屈ではありえないんだけど。
スレッドリッパーでもi-7900Xでも、CPUの温度対策は大事になると思います。
だからGPUに逃がしてCPUを空けようとしたりするんですよね。
最近扇風機で冷やすようにしてますが、扇風機無しだとクロック数が80%以下まで
下がってしまって、そういう時に限って、読み切り処理でバグがあるような結果が出て
います。理屈ではありえないんだけど。
スレッドリッパーでもi-7900Xでも、CPUの温度対策は大事になると思います。
957310
2017/09/24(日) 01:47:25.30ID:1rFk/uJ5 強化学習は、適当にコーディングして結果からデバッグしているので時々不安になり
ますが、それなりに学習してくれているみたい。学習内容は同じく勝率で、これをアル
ファ碁で言うところのポリシーに使用してます。
強化学習のポリシーを導入した事で、遡りチェックも調子よく遡るようになり、最善手を
指している率が上がったように感じています。しょせん強化学習だし、まだ学習しはじめ
なので、精度は高くありませんが、使い方次第ではいける感じです。
強化学習続けたら、定石DBの代わりになるんじゃないかと期待。
しばらく学習フェーズになりますが、次はロールポリシーを改良したいかな。
ますが、それなりに学習してくれているみたい。学習内容は同じく勝率で、これをアル
ファ碁で言うところのポリシーに使用してます。
強化学習のポリシーを導入した事で、遡りチェックも調子よく遡るようになり、最善手を
指している率が上がったように感じています。しょせん強化学習だし、まだ学習しはじめ
なので、精度は高くありませんが、使い方次第ではいける感じです。
強化学習続けたら、定石DBの代わりになるんじゃないかと期待。
しばらく学習フェーズになりますが、次はロールポリシーを改良したいかな。
958535
2017/09/24(日) 18:11:33.99ID:nEz2fGFF 損失がこれ以上下がらなそうなところまで来たので、
AIに組み込んでみようと思ったのですが、
tensorflowでの学習結果をどうやってC++にもってくればいいのかよくわからないというw
とりあえずググってみますが、見つかるかなぁ?
AIに組み込んでみようと思ったのですが、
tensorflowでの学習結果をどうやってC++にもってくればいいのかよくわからないというw
とりあえずググってみますが、見つかるかなぁ?
959535
2017/09/24(日) 20:00:11.56ID:nEz2fGFF C++にもってくるの現状そんな簡単じゃないっぽいorz.
960535
2017/09/24(日) 23:27:13.26ID:nEz2fGFF windows上でtensorflowをコードからビルドとかマジすか?
961310
2017/09/24(日) 23:40:11.06ID:1rFk/uJ5 ウェイトデータをバイナリで持ってきて、フォワード計算を自分で書くってのじゃダメ?
パッケージに任せたい面倒くさいところって、バックワード部分だから。
自分の場合、mctsで並列処理していて、使用している行列パッケージのEigenも並列
計算していて、両方で並列化しちゃうとスレッド取り合って劇遅になっちゃうし、Eigenを
シングルスレッドで動かす時のオーバーヘッドが気になったので、AIで使用する時の
フォワード計算は自分で書きました。
パッケージに任せたい面倒くさいところって、バックワード部分だから。
自分の場合、mctsで並列処理していて、使用している行列パッケージのEigenも並列
計算していて、両方で並列化しちゃうとスレッド取り合って劇遅になっちゃうし、Eigenを
シングルスレッドで動かす時のオーバーヘッドが気になったので、AIで使用する時の
フォワード計算は自分で書きました。
962535
2017/09/24(日) 23:49:44.98ID:nEz2fGFF うーんそれが一番妥当ですかね〜
ありがとうございます。
でもバグなく書けるか若干心配w
ありがとうございます。
でもバグなく書けるか若干心配w
963310
2017/09/26(火) 00:08:03.06ID:TqyA8LQm 強化学習、ずっと学習続けていると、途中で弱くなっていく。
アルファ碁のやり方をまねていたけど、一旦超シンプルな方法に変えてみて、
とにかく施行回数を増やしてみます。
強化学習を使って、序盤の評価関数が作れないか検討開始。
あと、時々出ていた終盤探索のバグ。
今度はたぶん大丈夫だと思う。
何度目の大丈夫だって状態だけど(汗
アルファ碁のやり方をまねていたけど、一旦超シンプルな方法に変えてみて、
とにかく施行回数を増やしてみます。
強化学習を使って、序盤の評価関数が作れないか検討開始。
あと、時々出ていた終盤探索のバグ。
今度はたぶん大丈夫だと思う。
何度目の大丈夫だって状態だけど(汗
964535
2017/09/26(火) 00:31:24.69ID:Q8jANAxD 学習率って何気に大事なパラメータですね。
速度がかなり違う。
もっと大胆に攻めた値にすべきかな?
速度がかなり違う。
もっと大胆に攻めた値にすべきかな?
965310
2017/09/27(水) 10:06:01.04ID:CCZHsP7K 学習率は大事だけど、今時はRMSPropとかADAMとかで
自動計算にしちゃうんじゃないの?
自動計算にしちゃうんじゃないの?
966535
2017/09/27(水) 21:24:40.34ID:PlFiGlJN 詳しいことはよくわかりませんが、最適化の関数名はAdamOptimizerとなっているのでそうなのかもしれませんね。
学習率のパラメータ渡すところも引数省略可能っぽいですね〜
自動計算のほうがいいんだろか?。
参考にした本には学習率設定してありましたのでマネしました。
学習率のパラメータ渡すところも引数省略可能っぽいですね〜
自動計算のほうがいいんだろか?。
参考にした本には学習率設定してありましたのでマネしました。
967310
2017/09/29(金) 10:10:45.06ID:Cw2Mz5dw それならAdamですね。Tensor Flowなら当たり前ですね。
学習率ってだけだったので、Optimizer無しの学習率だと思いました(汗
省略時引数はたぶんモデル発表者の提示した推奨値です。
まあ、パラメータをいじるかどうかは、個々人の好みとい事で。
学習率ってだけだったので、Optimizer無しの学習率だと思いました(汗
省略時引数はたぶんモデル発表者の提示した推奨値です。
まあ、パラメータをいじるかどうかは、個々人の好みとい事で。
968535
2017/09/30(土) 19:50:26.02ID:d6qWS2yh フィルターの数も多けりゃ多いほど誤差が減るって単純なものでもないみたいですね。
多すぎると最適化が収束しなくなるっぽい。
多すぎると最適化が収束しなくなるっぽい。
969535
2017/09/30(土) 20:37:24.31ID:d6qWS2yh パラメータいじりの沼にはまりそうorz
970535
2017/09/30(土) 20:50:21.36ID:d6qWS2yh メモリ!メモリが足らん!
971310
2017/09/30(土) 23:21:48.52ID:WQNilA4m フィルタ数は大きければ大きいほど良いのですが、学習に必要な時間が恐ろしく
長くなります。十分に多いフィルタ数で収束できる事を確認したうえで、だんだんと
減らして行くなんて作業になります。段数についても一緒。
ロースペックマシンだと1回試すのに下手すると数週間とかあり得るのです。
かといって、精度が出せないレベルの簡素なモデルで試しても、いつまでたって
も収束せずに、まだかなみたいな。モデルの複雑さが足りているかいないかが
わからない点が、困ったちゃんなのです。
さて、強化学習ですが、なんとなく学習しているようにも見えるし、最適解の周囲を
振動しているようにも見えます。ふと思い付いたのですが、最適化(SMORMS3って
奴を使用)をやめて、ただの学習率(もしくは、学習率の漸減)にした方が、動きが
素直になって良いのかも。
今のスピードは1時間に100万対戦。1億対戦するのに4日強かかるわけで。まだ
試行回数が足りていないかもしれないし、そもそもただの線形ではモデルが簡単すぎ
るのかもしれません。
というわけで、CNN使わずに線形でやっても同じ問題が起きまするorz
長くなります。十分に多いフィルタ数で収束できる事を確認したうえで、だんだんと
減らして行くなんて作業になります。段数についても一緒。
ロースペックマシンだと1回試すのに下手すると数週間とかあり得るのです。
かといって、精度が出せないレベルの簡素なモデルで試しても、いつまでたって
も収束せずに、まだかなみたいな。モデルの複雑さが足りているかいないかが
わからない点が、困ったちゃんなのです。
さて、強化学習ですが、なんとなく学習しているようにも見えるし、最適解の周囲を
振動しているようにも見えます。ふと思い付いたのですが、最適化(SMORMS3って
奴を使用)をやめて、ただの学習率(もしくは、学習率の漸減)にした方が、動きが
素直になって良いのかも。
今のスピードは1時間に100万対戦。1億対戦するのに4日強かかるわけで。まだ
試行回数が足りていないかもしれないし、そもそもただの線形ではモデルが簡単すぎ
るのかもしれません。
というわけで、CNN使わずに線形でやっても同じ問題が起きまするorz
972310
2017/09/30(土) 23:46:13.87ID:WQNilA4m フィルタ数は大きければ大きいほど良いのですが、1回の学習に必要な時間が
フィルタ数に比例して長くなります。十分に多いフィルタ数で収束できる事を確認
したうえで、だんだんと減らして行くなんて作業になります。段数についても一緒。
これ、1サイクルの計算時間の話なので、収束しやすさについては、複雑さが
増すとさらに時間がかかる可能性あります。
ロースペックマシンだと収束できるか確認するのに下手すると1か月とかあり得ます。
かといって、精度が出せないレベルの簡素なモデルで試しても、いつまでたって
も収束せずに、まだかなみたいな。モデルの複雑さが足りているかいないかが
わからない点が、困ったちゃんなのです。
さて、強化学習ですが、なんとなく学習しているようにも見えるし、最適解の周囲を
振動しているようにも見えます。ふと思い付いたのですが、強化学習に限っては、
最適化(SMORMS3を使用)をやめて、ただの学習率(もしくは、学習率の漸減)に
した方が、動きが素直になって良いのかも。
今のスピードは1時間に100万対戦。1億対戦するのに4日強かかるわけで。まだ
試行回数が足りていないかもしれないし、そもそもただの線形ではモデルが簡単すぎ
るのかもしれません。
というわけで、CNN使わずに線形でやっても同じ問題が起きまするorz
フィルタ数に比例して長くなります。十分に多いフィルタ数で収束できる事を確認
したうえで、だんだんと減らして行くなんて作業になります。段数についても一緒。
これ、1サイクルの計算時間の話なので、収束しやすさについては、複雑さが
増すとさらに時間がかかる可能性あります。
ロースペックマシンだと収束できるか確認するのに下手すると1か月とかあり得ます。
かといって、精度が出せないレベルの簡素なモデルで試しても、いつまでたって
も収束せずに、まだかなみたいな。モデルの複雑さが足りているかいないかが
わからない点が、困ったちゃんなのです。
さて、強化学習ですが、なんとなく学習しているようにも見えるし、最適解の周囲を
振動しているようにも見えます。ふと思い付いたのですが、強化学習に限っては、
最適化(SMORMS3を使用)をやめて、ただの学習率(もしくは、学習率の漸減)に
した方が、動きが素直になって良いのかも。
今のスピードは1時間に100万対戦。1億対戦するのに4日強かかるわけで。まだ
試行回数が足りていないかもしれないし、そもそもただの線形ではモデルが簡単すぎ
るのかもしれません。
というわけで、CNN使わずに線形でやっても同じ問題が起きまするorz
973310
2017/09/30(土) 23:46:51.18ID:WQNilA4m あれ、2度書きになってしまった。
しかも内容が微妙に違うw
しかも内容が微妙に違うw
974310
2017/10/02(月) 22:13:03.03ID:GHWiob/2 いやぁ、またやっちまった。
バリューの評価値計算が間違っているの気が付いて、リセットしようとしたら、
間違えてポリシーの強化学習の方をリセットしてしまった。またやり直しです。
ちなみに、ただの学習率ってのSGDですね。ようやく思い出した。
ついでなので、若干パラメータ変えて強化学習再開。
時間あたり試行回数は減るけど、トータルで少しは学習が速くなるはず。
バリューの評価値計算が間違っているの気が付いて、リセットしようとしたら、
間違えてポリシーの強化学習の方をリセットしてしまった。またやり直しです。
ちなみに、ただの学習率ってのSGDですね。ようやく思い出した。
ついでなので、若干パラメータ変えて強化学習再開。
時間あたり試行回数は減るけど、トータルで少しは学習が速くなるはず。
975535
2017/10/04(水) 21:07:28.40ID:Ls8WOlwm CNNのフォーワード計算自前で書くの結構面倒くさいなぁ。
バグなく書けるかも心配だし。
うーん。
ここで足踏みしてます。
バグなく書けるかも心配だし。
うーん。
ここで足踏みしてます。
976310
2017/10/04(水) 22:00:17.02ID:GdIdmn03 オライリー本のゼロから作るDeep Learningって本ではPythonでのコードが載ってた
けど、畳み込みのところをim2colとかいう関数で展開して、行列計算に落としこんでた。
im2colのソースを探したけど、見つからなくて放置してますが、あれが常道だと思います。
けど、畳み込みのところをim2colとかいう関数で展開して、行列計算に落としこんでた。
im2colのソースを探したけど、見つからなくて放置してますが、あれが常道だと思います。
977310
2017/10/05(木) 22:33:23.90ID:sIPpafz3 ポリシーの強化学習、遅々として進んでいます(汗
時々、テストでMCTS動かしてポリシーの学習値を見ているのですが、
学習対象の全48手のうち、後ろ12手分くらい、それっぽく濃淡がついてきてます。
このまま続けたら、もっと前の方まで学習してくれると期待しているのですが、ここ
からが分岐が多い箇所なので、どれくらい時間がかかるか想像がつかない。
で、ポリシーの強化学習の結果を使って、バリューの方も学習させていたのですが、
やはり無理がある事に思い至りました。バリューはバリューで別途強化学習をさせ
ないといけない模様。どちらかというとバリューの方が大事なので、このままポリシー
の学習を続けるか、一旦棚上げしてバリューの方に乗り換えるか、悩み中。
学習中のポリシーをMCTSに組み込んだところ、速度低下が著しい。メモリーのランダム
アクセスが原因だと思う。速度アップネタをいくつか模索してみたいと思いますが、
変更が重いので、いつやるかこちらも悩み中。
時々、テストでMCTS動かしてポリシーの学習値を見ているのですが、
学習対象の全48手のうち、後ろ12手分くらい、それっぽく濃淡がついてきてます。
このまま続けたら、もっと前の方まで学習してくれると期待しているのですが、ここ
からが分岐が多い箇所なので、どれくらい時間がかかるか想像がつかない。
で、ポリシーの強化学習の結果を使って、バリューの方も学習させていたのですが、
やはり無理がある事に思い至りました。バリューはバリューで別途強化学習をさせ
ないといけない模様。どちらかというとバリューの方が大事なので、このままポリシー
の学習を続けるか、一旦棚上げしてバリューの方に乗り換えるか、悩み中。
学習中のポリシーをMCTSに組み込んだところ、速度低下が著しい。メモリーのランダム
アクセスが原因だと思う。速度アップネタをいくつか模索してみたいと思いますが、
変更が重いので、いつやるかこちらも悩み中。
978535
2017/10/06(金) 23:07:13.96ID:Zz+2m3w3 天頂7発売するらしいですね
これは買うしか無い
それに合わせてpcも買い換えるチャンスか?
悩ましい
これは買うしか無い
それに合わせてpcも買い換えるチャンスか?
悩ましい
979535
2017/10/08(日) 00:36:58.52ID:wvFd88H+ tensorflowを捨ててC++で使いやすい別のフレームワークを探そうかと思案中
でもtensorflow捨てるの勿体ないなぁとも思う
でもtensorflow捨てるの勿体ないなぁとも思う
980535
2017/10/08(日) 01:13:04.86ID:wvFd88H+ ググったらtiny-dnnというのがヒットした。
ちょっと調べてみるか
ちょっと調べてみるか
981310
2017/10/08(日) 01:29:43.31ID:rkcq5jaW C++なフレームワークってほとんどないです。
自分はtiny_dnnくらいしか見つけられなかったけど、あまりに学習に時間がかかった
ので放置です。やっぱ、それなりのPC環境無いとダメなんでしょうね。
自分といえば、やっぱりバリューが大事と言う結論に。
あわせてグチャグチャになっていた強化学習回りのソースの全面整理と、mcts時の
速度改善のために、ポリシーとバリューのウェイトをセットで扱うように変更。
先ほど、ようやくまともに学習するようになったと思います。そう思いたい(汗
これでまた1週間かなぁ。
バリューは記譜使って、多少は事前学習できるけど。
自分はtiny_dnnくらいしか見つけられなかったけど、あまりに学習に時間がかかった
ので放置です。やっぱ、それなりのPC環境無いとダメなんでしょうね。
自分といえば、やっぱりバリューが大事と言う結論に。
あわせてグチャグチャになっていた強化学習回りのソースの全面整理と、mcts時の
速度改善のために、ポリシーとバリューのウェイトをセットで扱うように変更。
先ほど、ようやくまともに学習するようになったと思います。そう思いたい(汗
これでまた1週間かなぁ。
バリューは記譜使って、多少は事前学習できるけど。
982535
2017/10/09(月) 22:53:42.22ID:6ifm6Vf2 tiny-dnnパッと見なかなか良さげな感じだがネットの情報だけだとよくわからん。orz.
tiny-dnnの良い入門書籍ないかな〜
tiny-dnnの良い入門書籍ないかな〜
983535
2017/10/09(月) 23:43:40.71ID:6ifm6Vf2 うお、examplesがビルド通らね〜
めんどくせ〜
めんどくせ〜
984535
2017/10/09(月) 23:54:11.92ID:6ifm6Vf2 コンパイラがC++14に対応してないといかんのか?
よくわからんorz.
よくわからんorz.
985535
2017/10/10(火) 21:01:26.86ID:CbL+/Tjp std::threadがないとかなんとか。
うーん。コンパイラ変えなきゃダメかなぁ?
うーん。コンパイラ変えなきゃダメかなぁ?
987310
2017/10/10(火) 22:31:39.17ID:FL07aRsc Visual Studio Communityの2017です。C++14対応してます。
GitHUBのtiny_dnnのページにC++14必須となってますね。
C++11あたりからC++がほとんど別物になっちゃったみたいですね。
自分は最近始めたばかりなので、詳しく知りませんが。
GitHUBのtiny_dnnのページにC++14必須となってますね。
C++11あたりからC++がほとんど別物になっちゃったみたいですね。
自分は最近始めたばかりなので、詳しく知りませんが。
988535
2017/10/10(火) 22:35:28.36ID:CbL+/Tjp VC++ですか〜ありがとうございます。
しょうがない、乗り換えるかorz.
しょうがない、乗り換えるかorz.
989535
2017/10/10(火) 23:21:21.89ID:CbL+/Tjp もしかしてインストールメッチャ時間かかる?
今日は一晩放置かな?
今日は一晩放置かな?
990535
2017/10/11(水) 21:40:19.82ID:IapPKNMM とりあえず、mnistのtest.cppはコンパイル通りました。
examplesのmain.cppは
main.cpp(305): error C2065: 'num_hidden_units': 定義されていない識別子です。
って言われた。
これからボチボチいろいろ動かしてみます。
examplesのmain.cppは
main.cpp(305): error C2065: 'num_hidden_units': 定義されていない識別子です。
って言われた。
これからボチボチいろいろ動かしてみます。
991535
2017/10/11(水) 23:13:49.39ID:IapPKNMM そろそろスレ立ての季節ですね。
次スレどうします?
次スレどうします?
992310
2017/10/13(金) 00:57:16.39ID:eAclV2CT mnistは動かしたけど、examplesは文字通り構文サンプルとしてしか見てなかったかも。
995踏んだあたりで次スレ建てましょう。
995踏んだあたりで次スレ建てましょう。
993535
2017/10/13(金) 22:13:12.16ID:XE+Je04C >995踏んだあたりで次スレ建てましょう。
了解です。
>mnistは動かしたけど、examplesは文字通り構文サンプルとしてしか見てなかったかも。
なんかnum_hidden_unitsは定義されてるんですが定義される前に参照してるみたいですね。
順番入れ替えたらコンパイル通りました。
了解です。
>mnistは動かしたけど、examplesは文字通り構文サンプルとしてしか見てなかったかも。
なんかnum_hidden_unitsは定義されてるんですが定義される前に参照してるみたいですね。
順番入れ替えたらコンパイル通りました。
994535
2017/10/14(土) 20:24:52.02ID:FkZ1SFjZ tiny-dnn 懇切丁寧な入門書籍が欲しいな…
かなり良さげなのにモチベーションがなかなか高まってこないorz.
かなり良さげなのにモチベーションがなかなか高まってこないorz.
995310
2017/10/15(日) 16:22:39.70ID:Y3hjOlZC 解説無いですねぇ。
まあ、わかってればわかってるなりに使えるツールみたいになってますが、
自分はウェイトデータを保存して再利用みたいなところまでたどりついていない
のですが、テンソルの構造がいまいちわかっていなかったりして。
まあ、わかってればわかってるなりに使えるツールみたいになってますが、
自分はウェイトデータを保存して再利用みたいなところまでたどりついていない
のですが、テンソルの構造がいまいちわかっていなかったりして。
996310
2017/10/15(日) 16:59:10.56ID:Y3hjOlZC997310
2017/10/15(日) 17:01:24.30ID:Y3hjOlZC あ、urlが2chだとNGワードになっちゃうので、5chにしてみたけど、リンクできず。
というか、どうも.scの方にスレ作ってしまったかも。
このスレもメッセージ同期していたので、気が付かなかった。
なんかわけわからん。
というか、どうも.scの方にスレ作ってしまったかも。
このスレもメッセージ同期していたので、気が付かなかった。
なんかわけわからん。
998310
2017/10/15(日) 17:36:19.71ID:Y3hjOlZC 今度は大丈夫だ。
【オセロ,将棋】ボードゲーム Part2【囲碁,War】
http://mevius.2ch.net/test/read.cgi/gamedev/1508056498/
2ちゃん5ちゃん問題がこんなところで影響するとは・・・
【オセロ,将棋】ボードゲーム Part2【囲碁,War】
http://mevius.2ch.net/test/read.cgi/gamedev/1508056498/
2ちゃん5ちゃん問題がこんなところで影響するとは・・・
999535
2017/10/15(日) 21:50:20.35ID:dinC5uru スレたて乙です。
tiny-dnnの勉強全く進んでませんorz.
tiny-dnnの勉強全く進んでませんorz.
1000名前は開発中のものです。
2017/10/16(月) 19:38:44.87ID:QfTFwjlG ぶっちゃけNNなんて、Deepが付いても大雑把じゃね?
あんなんで人間様に勝てるんかいな???
数学の回帰というのが、本質的に大雑把なんだから
あんなんで人間様に勝てるんかいな???
数学の回帰というのが、本質的に大雑把なんだから
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 5212日 19時間 28分 26秒
新しいスレッドを立ててください。
life time: 5212日 19時間 28分 26秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- 外国人の犯罪率は日本人の1.72倍 警察庁が短期滞在者除いた数字を参院内閣委で答弁★2 [七波羅探題★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ★2 [♪♪♪★]
- 【高市悲報】大暴落 [115996789]
- 【速報】東京から人が消える [329329848]
- 【悲報】国会議員の給料アップ法改正、自民と維新で喧嘩し始めるWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 奥さんが生理なので金玉爆発しそうです
- 平口法務大臣「国会での審議は私は預かり知らぬ」さすが高市内閣!すごい! [469534301]
- 生活保護だけどインフルエンザになってまじつらい
