自我博弈(Self-Play)[1]是应用于智能体于智能体之间处于对抗关系的训练方法,这里的对抗关系指的是一方的奖励上升必然导致另一方的奖励下降。通过轮流训练双方的智能体就能使得双方的策略模型的性能得到显著提升,使得整个对抗系统达到正和博弈的效果。这种训练机制最早运用于跳棋游戏[2],后来在棋类,MOBA类等对抗性策略游戏中被广泛应用,例如AlphaGo、AlphaStar。
自我博弈有三个主要创新点。第一是探索课程,在稀疏奖励的环境下,将最终目标分割成若干个容易实现的小目标,每个目标都基于一定的奖励,使奖励变得稠密,并对智能体的探索行为给予一定的奖励。但随着训练的进行,探索奖励应当逐渐衰减为0。第二是对手抽样,智能体在面对过强或过弱的对手时,训练都会难以取得成效,因此环境中需要存储对手不同时期的训练版本,让较弱的一方有机会获胜,较弱的一方策略提升的同时会反过来促进较强一方变得更强。第三是鲁棒学习策略,为了防止智能体的策略拟合在某一种固定的对手身上,需要给对手引入多样性,给环境引入随机变量。
为了判断智能体的强弱,使自我博弈使用水平相近的智能体进行对抗训练,根据ML-Agents中的做法,较好的解决方式是引入ELO评级系统,这是一种计算零和游戏中两个玩家之间相对水平的方法。每一个玩家都有一个初始ELO分数(通常为1200),通过对战胜负结果更新ELO分数,假定玩家A的初始ELO分数为,玩家A的初始ELO分数为,则玩家A的预期胜利概率为:
E
A
=
1
1
+
1
0
R
B
−
R
A
400
E_A = \frac{1}{1+10^{\frac{R_B-R_A}{400}}}
EA=1+10400RB−RA1
比赛结束后,玩家A的分数调整为:
R A ′ = R A + K ( S A − E A ) R'_A = R_A + K(S_A-E_A) RA′=RA+K(SA−EA)
自我博弈是强化学习的对抗性训练经常采用的训练方式,是一个对抗双方模型交替训练的过程。智能体1和智能体2身为对抗双方,可以在对手的早期模板中选择自己合适训练环境。也就是说,对方的智能体在己方训练的时候相当于环境的一部分,对手的策略也极大影响了自身的策略。
因此,双方交替训练的时机以及选择对手的策略是影响自我博弈结果的重要因素,当双方训练进度不一致时,会造成双方的竞技水平不平衡,不利于双方策略的学习。实验中智能体每隔一段时间会保存自己的副本,在训练的时候会从敌方的副本中抽取一个当做训练的对手,抽取的策略有很多种,例如每个样本概率平均、最近的样本概率最大并线性变化等。
其中K为可调整的超参数,是比赛结果,赢了则值为1,反之为0。
[1]Bansal T, Pachocki J, Sidor S, et al. Emergent complexity via multi-agent competition[J]. arXiv preprint arXiv:1710.03748, 2017.
[2]Samuel A L. Some studies in machine learning using the game of checkers[J]. IBM Journal of research and development, 1959, 3(3): 210-229.