AlphaStar整理

  • 对AlphaStar算法的解读:
    1. https://zhuanlan.zhihu.com/p/92543229
    2. https://zhuanlan.zhihu.com/p/97720096
    3. https://zhuanlan.zhihu.com/p/89396146
  • 原论文:https://sci-hub.se/10.1038/s41586-019-1724-z
  • 论文解读视频:https://www.bilibili.com/video/BV1wa4y1e74G/?spm_id_from=333.337.search-card.all.click&vd_source=54a0edf8490a6a72a5e82c4e543fc3e2

1. 监督学习(预训练过程)

​ 通过大量高质量人类对局作为经验数据,进行学习,实现模仿学习的效果,即在一个状态下,让agent所作的策略去拟合游戏玩家的所作的策略,从而给网络一个较好的初始化参数。

​ 监督学习做法:

  1. 对对局进行解码,获得observations。

  2. 将observations送入网络,得到action的概率分布

  3. 将agent的action概率分布与人类经验的action损失训练:

    • 若为分类任务即动作类型选择,则为crossentropy损失
    • 若为连续型数值拟合任务,则为mse
  4. 在实际训练时,若agent此刻做出的action与人类经验不同,那么在真正执行action时,采取的仍然为人类经验的action,即在整个训练的过程中,不管agent输出什么动作,在执行时均为人类经验动作,agent的动作只做为损失值进行训练。

2. 强化学习

对于强化学习算法,整体模型采用了Actor-Critic的架构.

2.1 策略网络训练

  • 整个强化学习模块采用的为off-policy的方式进行数据的采集和训练,因此添加了ex-buffe重要性采样

    在重要性采样的过程中基于V-trace限制了ratio比值为(0,1)

  • 对于advatage的计算使用了UPGO方法:

2.2 价值网络训练

  • 依然采用mse计算Q和V的拟合度
  • 对于Q的计算采用TD(λ)算法
  • 将自身observations和对手的observations一起纳入输入量,综合自身和对手的信息得到评价值

3. 模仿学习

  1. 由于在强化学习过程中,只有胜利或者失败才能获得一个较高的reward,在训练过程中存在稀疏奖励的问题,采用模仿学习的方法,基于人类经验给予伪奖励
  2. 若agent的动作或者当前的observations人类经验中出现过,则基于一个正奖励。

4. 联盟训练

4.1 self-play

方法:自己和自己进行博弈

缺陷:容易行程策略循环

改进方法:FSP(ficitious self-play),训练过程中存下若干快照,从而形成种群,均匀的在种群中挑选对手进行对战。

FSP缺陷:在种群中存在若干太菜的对手,对战胜率为100%,浪费时间没有训练意义

4.2 PFSP(prioritized ficitious self-play)

方法:按照胜率从种群中挑选对手,给高手一个高概率被挑选的机会,即agent更倾向于与高手对抗

A(target agent)挑选B的几率:

对于P(A beats B)采用ELO算法采用隐藏分机制【需要大量比赛得到一个客观的值】

4.3 league training

AlphaStar将所有的agent分为三类:

  • main agent: 重点训练的agent即target agent
  • league exploiter: 与整个league对战,用于发现全局弱点
  • main exploiter: 与当前main agent或者历史main agent对战,用于发现main agent的弱点

对战方式:

  • main agent训练:

    (1) 个数设置

    ​ 每个种族各一个(SW2游戏中共三个种族,一个种族设置一个)

    (2)对手挑选

    1. 50%从league里选(选择方法为PFSP,F函数为(\(f(x) = (1-x)^{p},p=2\)))
    2. 35%与自己对战
    3. 15%与能打败我的league exploiter对战或者历史版本的main agent(选择方法为PFSP,F函数为(\(f(x) = (1-x)^{p},p=2\)))
      1. 若一个历史版本的main agent以70%概率战胜当前main agent说明当前main agent退化了
      2. 若main agent以30%打败league exploiter,说明league exploiter发现了main agent弱点

    (2)存档方式:

    ​ 每隔2*1e9个时间步存档一次

  • league exploiter训练:

    (1) 个数设置

    ​ 每个种族各2个(共6个)

    (2)对手挑选

    ​ 按照PFSP与整个league对战((选择方法为PFSP,F函数为(\(f(x) = (1-x)^{p},p=2\))))

    (2)存档方式:

    • 若该league exploiter以70%打败所有agent,或者距离上次存档间隔2*1e9时间步
    • 每次存档后有25%的概率将参数重设为监督学习预训练的参数
  • main exploiter

    (1) 个数设置

    ​ 每个种族各1个(共3个)

    (2)对手挑选

    ​ step1: 从三个当前main agent随机选择一个,执行step2

    ​ step2: 若以高于10%的概率战胜他则,进行对战,否则执行step3

    ​ step3: 从所有历史版本的main agent按照PFSP(选择方法为PFSP,F函数为(\(f(x) = (1-x)x\)))中挑选对手进行对战

    (2)存档方式:

    • 若该main exploiter以70%打败所有main agent,或者距离上次存档间隔4*1e9时间步
    • 每次存档后就重设为预训练参数

5. 消融实验探讨

5.1 league构成消融

5.2 人类经验使用方式消融实验

5.3 对手observations消融

image-20230809172433587