DouZero icon indicating copy to clipboard operation
DouZero copied to clipboard

一点想法 关于不洗牌模式的训练

Open FYNIXqwq opened this issue 1 year ago • 9 comments

目前这个模型的训练都是基于经典模式,也就意味着它在其他模式下的表现力很差,在不洗牌模式中会表现得异常激进,从而导致输掉。 如果在训练过程中将牌堆的生成方式改为不洗牌的风格,它将能够胜任不洗牌模式。

FYNIXqwq avatar Apr 24 '23 19:04 FYNIXqwq

@FYNIXqwq 没错 更改牌库是有效果的

daochenzha avatar Apr 29 '23 05:04 daochenzha

@daochenzha 目前不洗牌模式训练有一个很大的难题,当发牌风格改为不洗牌的类型(牌型整齐,而且bomb_count很高)的时候,训练的初期loss会非常高,数量级可以从10^2一路升到10^4,请教一下在这种情况下应该如何调节参数?(batch_size个人尝试过16和32,learning_rate从10^-7到10^-3都尝试过)

FYNIXqwq avatar May 05 '23 20:05 FYNIXqwq

@daochenzha 牌堆的生成思路是先将牌的点数(3到A,2,小王,大王)打乱,再按照打乱后的顺序,王各生成1张,3到A和2各生成4张,再将生成的牌堆进行切牌,这样就能模仿不洗牌模式的“瑕疵”,而不至于“过于整齐”,整个过程只生成一次64位随机整数作为种子,牌的点数打乱方式、切牌次数以及切牌位置都通过种子取余来解决。

FYNIXqwq avatar May 05 '23 21:05 FYNIXqwq

@daochenzha 按照洗牌模式进行训练,训练初期的loss在默认情况下只有个位数,但是不洗牌模式的loss可以在几十到几万之间波动。

FYNIXqwq avatar May 05 '23 21:05 FYNIXqwq

如果用胜率进行训练则不会造成十分高的loss

FYNIXqwq avatar May 05 '23 21:05 FYNIXqwq

如果用胜率进行训练则不会造成十分高的loss

受此启发,个人尝试修改了奖惩规则,减少了bomb_count对奖惩结果的影响,防止其指数扩大后数值偏差过于严重

FYNIXqwq avatar May 05 '23 22:05 FYNIXqwq

image

FYNIXqwq avatar May 05 '23 22:05 FYNIXqwq

这个新的奖惩机制鼓励AI在胜算很大的时候提高bomb count,同时大幅减少bomb count小于等于3时的惩罚幅度,这样AI不至于学会摆烂

FYNIXqwq avatar May 05 '23 22:05 FYNIXqwq

请问这个还有什么后续的改进方式吗

cxk555 avatar Dec 13 '23 09:12 cxk555