Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
FYNIXqwq opened this issue Apr 24, 2023 · 9 comments
Open

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

FYNIXqwq opened this issue Apr 24, 2023 · 9 comments

Comments

@FYNIXqwq
Copy link

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

@daochenzha
Copy link
Collaborator

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

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

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

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

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

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

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

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

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

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

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

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

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

image

@FYNIXqwq
Copy link
Author

FYNIXqwq commented May 5, 2023

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

@cxk555
Copy link

cxk555 commented Dec 13, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants