mingoliu08
mingoliu08
问题描述:目前dmc算法斗地主的水平刚好能达到人类的平均水平。在某些情况下,AI出牌会出现让人惊艳的出牌(超高手水准),反之AI偶尔也会犯十分低级的错误。比如(AI手上剩3个牌,一个对子,一个单张,在对子明显对方要不起的情况下,结果AI出了一个单张从而导致输牌)。 个人理解:出现上段描述中低级错误是因为某些牌局AI并没有得到足够多的训练,而按照目前的算法(代码)分析,如果需要基本杜绝低级错误的出现,目前的训练量至少要再提高一个数量级,而这肯定是不现实的。 解决思路: 1. DMCAgent类中参数exp_epsilon默认值设为0.01,改变此参数的值能否提高训练效率(个人认为针对斗地主的情况,最佳的设定值在0.05~0.1之间)? 2. 或者能否通过将step函数设计得更加精细来提高训练效率。比如action的选择可以根据过去训练结果的得分概率来选择(当然必须做一定的调整)。而不是简单的在概率为exp_epsilon的情况下随机选择。
本人正基于RLcard作二次开发研究(更换斗地主少部分规则后训练), 由于深度训练第一次接触研究, 知识储备不够,有几个疑问: 1. 训练被中断后, 添加--load_model参数接着训练, 在总时长一样的情况下效果是否跟从0开始训练没有被中断的效果一样? 2. 随着训练时长的不断增加,各项资源的占用不断减少, 尤其是内存从最开始的接近100%,训练13天后内存占用只有30%, 是否正常? 3. 通过评估函数评估效果是发现虽然总体效果不断增加, 但中间发现偶尔有一两天的训练效果反而比一两天前的效果差, 扣除误差因素,以及更换seed评估,都是同样的结果,是否正常? 4. 保存的文件名是否可以理解为训练的局数或者与局数成正比。 在不同类型的显卡,或者不同数量的显卡,训练效率是否可以通过单位时间内保存的文件名之差来评估? 5. 多块显卡训练时, 单独用一张卡训练,其他用作actor时,用作训练的显卡利用率太低, 能否用所有显卡产生actor,再用其中一块做训练?这样做是否训练效率更高?