level 1
话说我实验性地写了个程序,发现有些问题。就是以深度学习貌似没有办法完美地学会井字棋。
实际上我做的实验是这样的。首先我写了个上帝井字棋ai,能赢的一定会赢,并且一定不会输,在其它情况下会随机下来考验对手(因为我发现如果训练策略不能覆盖到所有可能的进攻手段的话,不管是机器学习和深度学习训练出来都会很傻,经常最简单的都不会堵)。把这个ai作为老师来训练机器学习和深度学习,并且检验它们学会的程度。
机器学习这边,就是把井字棋的每个状态作为字典的key值,直接去查询和修改。反正不像五子棋和围棋,井字棋的状态也没多少。训练的结果是,训练了几万次以后,确实可以完美学会井字棋,变得100%能和老师打平,和我对战的时候也不会错过赢的机会。
而深度学习这边,我把井字棋的每个点是x、是o,分成两个值,9个点*2是18个,加上下一步是x还是o我也加了一个值,总共是19个0或1值作为输入,来训练19*19的矩阵。然而训练了几十万次,依旧被老师吊打。我看到alphago应该也是用了深度学习的才对,然而我的实验中深度学习没有达到效果,是有哪里不对吗?或者是为什么无法达到效果?有大佬知道的吗?
2018年12月20日 16点12分
1
level 1
补充下,两个学习我用的都是单纯的输赢学习,就是输了-100分,赢了100分,后手打平30分, 先手打平-30分。
2018年12月20日 16点12分
2
level 1
是不是神经网络的层数不够?目前想下来可能这个可能性比较大
2018年12月20日 16点12分
3
level 3
深度学习你用的啥模型?
另外没懂为啥是19x19?
井字棋不是3x3么?
|0 2 0|
|0 1 0|
|0 0 0|
2018年12月23日 08点12分
4
level 12
井字棋的规则我都不懂,或者原来看过,但已忘了。所以,你做的已够好,起码战胜象我这样的三盘全胜完全没问题。
2019年01月04日 00点01分
7
刚看了规则,原来这样简单,相当于五子棋,只是棋盘大小只为3X3,连成直线或斜线的已方3个就胜,但这样,很容易被对方破坏,所以,人下的话,应当基本都是平局,除非对手体力脑力坚持不下去了,才会输。
2019年01月04日 01点01分
电脑完全随机乱下的话,先下的胜率稍高于负率,少量平局,但如果学习后或训练后下,也应基本平局。
2019年01月04日 01点01分
你那个19*19矩阵是怎么来的可以说下不,问题可能在这里面呢
2019年01月04日 02点01分
@胡梦柯5 我把井字棋的每个点是x、是o,分成两个值,9个点*2是18个,加上下一步是x还是o我也加了一个值,总共是19个0或1值作为输入
2019年01月04日 02点01分
level 12
楼主那个9*2意思是说9格每格2位,所以18位,这样来向量化当前棋盘状态,既表示了位置还表示了空、叉、圈的值,这个我理解,但下一步只用2位,我就不理解了,下一步可选多个位置啊,2位只能表示值是空还是叉还是圈,没隐含位置,怎么能表示完下一步的信息。
2019年01月04日 04点01分
8
哦,我说的下一步是说,下一步是叉还是圈,没有包含位置。因为决策,也就是下一步下哪里,这个对于棋类游戏来说,由于当中没有发生随机和其它玩家的选择,所以你下完这一步的结果是确定的,并且由于五子棋和井字棋顺序不讲究,只要盘面一样,那么状态就是一样的
2019年01月04日 04点01分
所以一步的状态+决策其实等同于你下完这一步以后的状态。我这里简化了(我觉得应该不会是因为这个简化误导了学习吧?毕竟对于非深度学习来说,这个简化确实没有产生问题)
2019年01月04日 04点01分
下完这一步的状态,10*2也表达不了啊,没表达出位置信息来。
2019年01月04日 05点01分
9*2倒是可以表达出下一步后的完整信息,10*2多出来的最后一个?
2019年01月04日 05点01分
level 8
在这种可以暴力计算的棋类,深度学习并没有优势。比如国际象棋,20几年前的深蓝依然必胜现在的alphago
2019年01月09日 08点01分
10
必要当然是没有必要的,本来就没有指望它表现出任何的优势,你看我都写了个无敌的暴力计算ai给它当老师了。。。我做井字棋就是为了找个简单的作为开始,验证下博弈游戏的训练策略。以及为了看看深度学习到底是不是可以达到一种棋的上限。
2019年01月09日 09点01分
如果一种训练策略训练不好井字棋,那么五子棋、围棋应该也是不行的。如果井字棋的上限达不到的话,那么围棋和五子棋肯定也是达不到的。虽然现在结果没有达到,但我觉得应该和理论上是否能达到没有关系,而是我哪里没弄对,因为差得有点太多了。
2019年01月09日 09点01分
@John135246 我不这么认为,有些东西不适合就是不适合。深度学习只适合需要多层训练的场景,而井字棋并不需要,就不适合
2019年01月10日 00点01分
level 2
你的必赢AI是什么可以分享一下吗,我通过了MCTS实现了井字棋的AI然后还是会输,我在想是不是MCTS的不能达到最佳
2019年08月26日 08点08分
13
必赢的那个就是暴力穷举呀。对于每种可能的局面暴力算出最优解(能赢则赢,赢不了则平),然后把局面作为key,下哪作为值的结果缓存下来就行了。只是想用它来训练其它AI。
2019年08月26日 08点08分
哦哦哦,那请问你有没有关于MCTS的理解,然后能不能说一下用uct算法为什么达不到不输的局面呢,如果想必赢,不通过规则那种我们可以有什么方法呢。
2019年08月26日 08点08分
@啷个li个浪 没有呀。我也是发帖来问为什么达不到不输的局面的
![[泪]](/static/emoticons/u6cea.png)
。
2019年08月26日 08点08分
@John135246 你不是用深度学习达到了必赢吗,你用的是神经网络噶,是什么神经网络呢。
2019年08月26日 08点08分