HardcoreJosh / JoshieGo

A Go playing program implemented in Tensorflow roughly according to the architecture of AlphaGo. Current strength is 3~4 amateur dan.
216 stars 43 forks source link

训练数据问题 #1

Open sjm1992st opened 6 years ago

sjm1992st commented 6 years ago

请问用了哪些数据训练的,多少量呢?训练了多长时间?

HardcoreJosh commented 6 years ago

策略网络和价值网络都是用公开数据训练的,没有用到自我对弈的强化学习。

策略网络是用1970年之后的职业棋手对局数据训练的,有1000多万条(盘面,下一步)的数据,我记得用policy_net.py里面的网络在1080上训练了一天多,大概有10个epoch。价值网络的低层是用策略网络的低层初始化的,然后先在aya‘s selfplay数据集上训练了几个epoch,最后在kgs 4d over数据集上finetune。这些数据集可以在这里找到。

价值网络很容易过拟合,因为一局棋里面的相邻步数,棋局只有一个或几个子不同,但是回归的目标都是一致的。所以一局棋里面我在布局,中盘,官子各随机选了一步来加入到训练集里面。训练的时候,加了比较大的L2正则化。最后训练出了现在的价值网络。

sjm1992st commented 6 years ago

好的,非常感谢

sjm1992st commented 6 years ago

您好,另外问下 input.py文件里两个解析函数parser,数据不都是sgf吗? 怎么选择用哪个

HardcoreJosh commented 6 years ago

kgs和aya's self play 数据集sgf格式略有不同,另外kgs里面有很多特殊情况比如让子棋,需要剔除出去。

刚才发现这几个月又放出了很多新的数据集,比如野狐服务器上的对局,还有Leela Zero的自我对弈的对局,如果加上这些数据训练价值网络,应该会更强。

sjm1992st commented 6 years ago

emm~ 我在尝试用这里的数据训练policy_net时,在SGFparser.py用的parse_kgs发现这个有问题,这个解析的不能转换十进制.... if token[:2] == 'BR': self.bd = int(line[3])

HardcoreJosh commented 6 years ago

不同的数据集,sgf的格式多少都有一些不同 我没有写出一个通用的sgf parser,parse_kgs这个函数应该是只能用于kgs数据集

mazeyu commented 3 years ago

你好,非常感谢你的代码和思路。我基本照着实现了一遍。但是价值网络直接按照人类棋手数据训练。虽然在人类数据上价值网络的(验证集)准确率已经是百分之六七十,终局百分之八十,但是实战中感觉价值网络完全不准。局部计算能力非常差。想问问,价值网络是否在自对弈数据训练会好很多呢。

Screen Shot 2020-12-30 at 12 21 51 PM