DouZero
DouZero copied to clipboard
一点想法 关于不洗牌模式的训练
目前这个模型的训练都是基于经典模式,也就意味着它在其他模式下的表现力很差,在不洗牌模式中会表现得异常激进,从而导致输掉。 如果在训练过程中将牌堆的生成方式改为不洗牌的风格,它将能够胜任不洗牌模式。
@FYNIXqwq 没错 更改牌库是有效果的
@daochenzha 目前不洗牌模式训练有一个很大的难题,当发牌风格改为不洗牌的类型(牌型整齐,而且bomb_count很高)的时候,训练的初期loss会非常高,数量级可以从10^2一路升到10^4,请教一下在这种情况下应该如何调节参数?(batch_size个人尝试过16和32,learning_rate从10^-7到10^-3都尝试过)
@daochenzha 牌堆的生成思路是先将牌的点数(3到A,2,小王,大王)打乱,再按照打乱后的顺序,王各生成1张,3到A和2各生成4张,再将生成的牌堆进行切牌,这样就能模仿不洗牌模式的“瑕疵”,而不至于“过于整齐”,整个过程只生成一次64位随机整数作为种子,牌的点数打乱方式、切牌次数以及切牌位置都通过种子取余来解决。
@daochenzha 按照洗牌模式进行训练,训练初期的loss在默认情况下只有个位数,但是不洗牌模式的loss可以在几十到几万之间波动。
如果用胜率进行训练则不会造成十分高的loss
如果用胜率进行训练则不会造成十分高的loss
受此启发,个人尝试修改了奖惩规则,减少了bomb_count对奖惩结果的影响,防止其指数扩大后数值偏差过于严重
这个新的奖惩机制鼓励AI在胜算很大的时候提高bomb count,同时大幅减少bomb count小于等于3时的惩罚幅度,这样AI不至于学会摆烂
请问这个还有什么后续的改进方式吗