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

关于DMC算法model.py中step函数的探讨 #264

Open
mingoliu08 opened this issue Jun 20, 2022 · 2 comments
Open

关于DMC算法model.py中step函数的探讨 #264

mingoliu08 opened this issue Jun 20, 2022 · 2 comments

Comments

@mingoliu08
Copy link

mingoliu08 commented Jun 20, 2022

问题描述:目前dmc算法斗地主的水平刚好能达到人类的平均水平。在某些情况下,AI出牌会出现让人惊艳的出牌(超高手水准),反之AI偶尔也会犯十分低级的错误。比如(AI手上剩3个牌,一个对子,一个单张,在对子明显对方要不起的情况下,结果AI出了一个单张从而导致输牌)。

个人理解:出现上段描述中低级错误是因为某些牌局AI并没有得到足够多的训练,而按照目前的算法(代码)分析,如果需要基本杜绝低级错误的出现,目前的训练量至少要再提高一个数量级,而这肯定是不现实的。

解决思路:

  1. DMCAgent类中参数exp_epsilon默认值设为0.01,改变此参数的值能否提高训练效率(个人认为针对斗地主的情况,最佳的设定值在0.05~0.1之间)?
  2. 或者能否通过将step函数设计得更加精细来提高训练效率。比如action的选择可以根据过去训练结果的得分概率来选择(当然必须做一定的调整)。而不是简单的在概率为exp_epsilon的情况下随机选择。
@daochenzha
Copy link
Member

@mingoliu08 感谢反馈

  1. 改变exploration的值确实有可能提高训练效率。不过我们没有试过。
  2. 这个是可行的,可以去做一些剪枝。比如把一些明显不太行的action用规则过滤掉,再用算法在剩下的里面做选择

@mingoliu08
Copy link
Author

@daochenzha 非常感谢您的解答!
其实还有一个思路,能提高几百上千倍的训练量,不知道为什么您的团队没有采纳。就是针对每个特定牌局,手牌确定后,再即时训练,只需要训练这一个牌局,这样就不做任何无用功。理论上同样数量的显卡,针对特定牌局的训练,只需要1秒钟的训练量就应该就能超过同电脑配置下预训练几十上百年的训练量。而且1秒钟的时间几乎可以忽略不计。如果用CPU训练,一台高端配置的个人电脑不需要显卡,也能有比现在好得多的效果。

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

2 participants