赛后整理版。部分实验数据尚未系统收集,后续会持续补充。
最终文档#
一、简介#
在 2026 年腾讯开悟强化学习比赛区域决赛中[2],我们队伍最终提交了 P7 模型 「中山大学怎么可能是榜一 不行不行 或许可行」,最终略输队伍「无 liao」6 分,屈居第二。
比赛环境是王者荣耀 1v1,可选英雄为鲁班七号(hero_id=112)和狄仁杰(hero_id=133),共产生 4 组 matchup(鲁班 vs 鲁班、鲁班 vs 狄仁杰、狄仁杰 vs 鲁班、狄仁杰 vs 狄仁杰)。
这一路从第一周的 P1,到第二周 P3,再到第三周 P4-P6,最后在决赛前收敛到 P7,我们的核心工作基本围绕五件事展开:特征、模型、奖励、对手池和训练稳定性。
这次比赛给我的最大感受是,1v1 强化学习不是把网络做大、reward 堆满就能解决。
模型训练的瓶颈经常不在 GPU,而在 rollout 数据的质量、环境理解、obs 调试、reward hacking、对手分布和评估闭环。
尤其是到训练的后期,决定模型强度的往往不是某一个”trick”,而是能不能把已经学到的稳定行为保住,再用小学习率一点点推上去。
二、参赛概况#
我们队伍在区域赛初赛是多人一起探索,但到最终决赛阶段,因为只能开一张卡,同时队友各自也有重要事情要处理,训练和调参全权由Candlest 负责。同时,蔡宇亮队长进行了录像分析,同时他也将进行答辩资料的整理编写,也感谢队内其他忙碌的同学四周的陪伴和鼓励。
比赛时间非常紧,很多实验没有做完整消融,很多数据也没有系统整理,所以这篇记录主要记录我的技术路线和一些直觉的且 work 的 idea。
第一周我们以 P1 模型拿到了周赛第一。第二周尝试更激进的特征缩减和 reward 修改,但因为底层 observation 调试不充分,最终只拿到第三。第三周开始,我们基本确定了 P4 之后的主线:语义化 ABI、multi value head、WorldStateTracker、分阶段 reward、历史模型对手池。最终决赛阶段,P7 主要是在 P4-P6 的基础上做低学习率、低 entropy beta 和 reward 收敛。
三、网络设计#
第一周 P1 的网络基本延续了 taichu 一类方案的思路[1]:保留 3910 维 raw feature,使用较简单的 reward 和 PPO[7] 训练。这个模型结构不复杂,但胜在稳定。我们在 512 batch size 下训练约 24 小时、45708 步,拿到了第一次周赛第一。
一开始我们为了处理四组对局差异,引入过 adapter。后来发现 adapter 容易把模型拆成四个相对孤立的小模型,不同 matchup 的 policy 水平差距很大。第二周 P3 之后,我们把 adapter 弱化成 matchup context,也就是告诉共享模型”当前是哪一组对局”,而不是让每组对局各自长出一套策略。
中期我们训练过一个 11k 维特征模型,但它收敛非常慢,24 小时也打不过 common AI。这个实验基本让我确认:这个任务不是靠堆特征维度 scaling 解决的。强化学习瓶颈不只是模型参数量,还有 CPU rollout 和样本效率。
P4 以后,我们确定了最终比较稳定的结构:
feature_dim = 2904
sample_dim = 50640
legal_action_dim = 85
raw_legal_dim = 184
policy_heads = [12, 16, 16, 16, 16, 9]
value_heads = 7
LSTM = 16 x 512plaintext模型主体是语义化对象 token + object attention + LSTM + matchup context + target attention。target 不再是一个脱离对象的 9 分类,而是绑定到候选目标:敌方英雄、自己、4 个敌方小兵、敌方塔、fallback 等。这个设计比单纯全局 MLP 输出 target 更符合动作结构[4][5]。
具体来说,前向传播流水线如下:
Feature (2904-dim)
→ 12 个 Block Encoder (per-block MLP, hidden 64/128 → token_dim=128)
→ Token Type Embedding + Position Encoding
→ 1-layer 4-head Transformer Encoder (d_model=128, ff=512)
→ Object Attention Scoring (soft-attention pooling → 128-dim frame_context)
→ Frame MLP → LSTM input (512-dim)
→ LSTM (512-dim, 1 layer, 16 time steps)
→ Frame Bypass MLP (残差连接绕过 LSTM) + LSTM output → concat → MLP
→ Matchup Context MLP (state + matchup token → policy/value state)
→ Policy Heads:
- button MLP → [12] logits
- 4× param MLP → [16] logits each
- target attention (query-key scoring, embed_dim=32) → [9] logits
→ Value Head: MLP → [7] componentsplaintext其中 Block Encoder 对每种对象类型(英雄、小兵、塔、子弹、事件、belief 等)使用独立的 MLP 编码器,将不同宽度的 raw block 统一映射到 128 维 token。Transformer Encoder 负责对象间的 self-attention 交互。Target Attention 不使用全局 MLP 输出 target,而是让 policy state 作为 query、各候选目标 token 作为 key,通过 scaled dot-product attention 得到 target logits,使得 target 选择直接与对象表征绑定。
multi value head 是 P4-P7 阶段的重要改动。最终 value component 分成:
| Component | Loss Weight | 对应 Reward 来源 |
|---|---|---|
| total | 1.00 | 所有 reward component 加权和 |
| hp | 0.20 | 英雄换血 |
| economy | 0.08 | 经济、血包 |
| tower | 0.25 | 塔 HP 交换、推塔终结 |
| kill_death | 0.12 | 击杀/死亡 |
| last_hit | 0.06 | 补刀 |
| risk | 0.02 | 低血压力、血包遗漏 |
不同 reward 来源的尺度和含义差异很大,单 value head 容易互相污染。拆成多个 value head 后,模型上限明显更高,也更方便监控哪类回报学坏了。
四、奖励体系#
第一周我们用的是比较简单的 reward。第二周我尝试过更激进的 reward shaping[10],但后来发现这非常容易被 hacking。比如直接奖励某个动作,会诱导模型空 A 或乱放技能;直接放大推塔,会诱导无兵线强推;低血惩罚太强,又可能让模型变得过度保守。
P4-P6 之后,我们开始采用随时间变化的 reward。前期更强调经济和补刀,中后期逐步提高塔、击杀、死亡、换血等真实胜负相关信号。最终 P7 还引入了 matchup phase table,不同对局使用不同的 focus frame 和 ramp frame。这样做的原因是四组对局节奏确实不同,但我们不想回到 adapter 那种”四个孤立模型”的路线。
Phase reward 的核心参数:以 focus_frame=1200(约 40 秒)为分界,经过 ramp_frame=3600(约 120 秒)线性过渡到后期权重。各项 phase multiplier 如下:
| 项目 | Early | Late | 含义 |
|---|---|---|---|
| economy | 1.6 | 0.35 | 前期重视经济积累,后期降低 |
| enemy_tower | 0.55 | 1.6 | 前期不鼓励强推,后期逐步提升 |
| positive_trade | 0.8 | 0.8 | 赚血交易保持稳定 |
| negative_trade | 0.9 | 1.0 | 亏血惩罚后期略增 |
| kill | 0.7 | 0.9 | 击杀奖励后期提升 |
| death | 1.0 | 1.15 | 死亡惩罚后期加重 |
P7 最终 reward 权重大致为:
| Component | Weight |
|---|---|
| enemy_tower_hp | 5.0 |
| self_tower_hp | 5.0 |
| hero_hp_trade | 1.6 |
| hero_kill_death | 4.5 |
| money_exp | 1.2 |
| last_hit | 1.4 |
| cake_enemy | 1.2 |
| cake_self_low_hp | 2.0 |
| low_hp_enemy_pressure | 0.25 |
| low_hp_self_cake_missed | 1.0 |
| tower_safe_push | 0.6 |
| tower_terminal | 3.0 |
决赛阶段,我受到一篇 reward shaping 论文[10]启发,开始重新理解 reward 的作用:它不是为了描述所有规则,而是在训练过程中帮模型区分“一般动作”和“好动作”。于是我们没有继续盲目堆权重,而是做了一组 episode-level 的 gated behavior classifiers:
| Classifier | 判定维度 |
|---|---|
| gwin_cls | 是否健康地赢下对局(而非靠运气或 bug) |
| tower_cls | 是否有塔差优势(推塔 vs 被推) |
| econ_cls | 经济是否领先(金币、经验) |
| farm_cls | 补刀是否有效(last hit 效率) |
| fight_cls | 战斗是否占优(换血、击杀交换比) |
| surv_cls | 低血是否干净生存(没有不必要的死亡) |
| cake_cls | 血包获取行为是否发生 |
| push_cls | 安全推进是否真正执行 |
这些指标是 episode-level 的行为诊断,不直接等价于每帧 reward gate。它让我们调 reward 的时候不再只看总 reward,而是能看模型到底在哪个行为维度变好了或变坏了。
五、特征与规则#
前期我们对环境 observation 的调试不够重视,导致很多底层代码不够可靠,有些字段是在不确定语义下使用的,甚至有些地方用了 hash bucket。第二周吃亏之后,我们把重点转向 feature 语义和协议调试。
P4 以后,我们确认了 2904 维语义化 ABI,并在后续两周基本保持稳定。特征从”raw feature 越多越好”转向”每个字段都要知道来源、尺度、可见性、缺失值和目标含义”。对象包括英雄、小兵、塔、血包、子弹、事件、belief token 和 matchup context。
2904 维的具体分配如下:
| 类别 | Block | 维度 |
|---|---|---|
| 全局 | global_state | 128 |
| 对局 | matchup_context | 32 |
| 英雄 | self_hero, enemy_hero | 160 × 2 |
| 敌方目标小兵 | enemy_target_soldiers | 96 × 4 |
| 敌方上下文小兵 | enemy_context_soldiers | 80 × 4 |
| 友方小兵 | self_soldiers | 80 × 4 |
| 中立 | neutral | 96 |
| 塔 | self_tower, enemy_tower | 96 × 2 |
| 血包 | self_cake, enemy_cake | 48 × 2 |
| 英雄子弹 | enemy_hero_bullets | 32 × 9 |
| 塔子弹 | enemy_tower_bullets | 32 |
| 未知子弹 | unknown_bullets | 32 × 2 |
| 命中事件 | hit_events | 32 × 4 |
| 死亡事件 | death_events | 32 × 2 |
| 补刀事件 | last_hit_events | 32 × 4 |
| 塔仇恨事件 | tower_aggro_events | 32 × 2 |
| Belief: 敌人记忆 | belief_enemy_last_seen | 32 |
| Belief: 血包重生 | belief_self/enemy_cake_respawn | 24 × 2 |
| Belief: 兵线节奏 | belief_lane_tempo | 32 |
| Belief: 近期战斗 | belief_recent_combat | 40 |
| Belief: 战术阶段 | belief_tactical_phase | 32 |
| Belief: 动作记忆 | belief_action_memory | 64 |
每个对象 token 的第一个字段是 valid flag(是否存在),第二个字段是 visible flag(是否可见)。对于 belief token,还额外包含 confidence(基于 age 的 tau-decay)和 target_eligible 等元信息。
WorldStateTracker 是另一个关键点。我们 debug 后意识到仿真环境大约 30fps,而 LSTM 16 帧只覆盖很短时间,难以记住血包刷新、敌人 last seen、兵线压力、近期交战和安全撤退窗口。所以我们做了一个简单的全局世界记忆,把这些长时状态显式写进 belief token。
WorldStateTracker 内部由 6 个子 tracker 组成:
- EnemyLastSeenTracker:追踪敌方英雄最后可见位置、HP/EP 比率、技能 CD 摘要。使用 tau-decay(tau=150 帧 ≈ 5 秒)指数衰减置信度,超过 300 帧(10 秒)后 expire 归零。
- CakeRespawnTracker:分别追踪自己侧和敌方侧血包。记录消失帧,基于 2250 帧(75 秒)的固定周期预测重生时间,输出 ETA、可用状态、taker side 等。
- LaneTempoTracker:计算友方/敌方兵线 HP 总和差值作为压力信号,维护 30 帧(1 秒)和 90 帧(3 秒)滑动窗口的均值和标准差。
- CombatEventTracker:记录 dealt/taken damage 事件流,在 15 帧和 60 帧窗口内累积伤害量,追踪最近一次交战、被攻击和被塔仇恨的帧号。
- TacticalPhaseTracker:综合低血状态(HP < 35%)、安全撤退评分和反击窗口(输出 > 受伤且 HP > 35%)三个信号。
- ActionMemoryTracker:记录最近 30/90 帧的按钮频率直方图(12 维)和非法动作率,帮助模型感知自身近期行为模式。
规则侧我们也做了一些必要的前后处理:
- 固定召唤师技能,减少无意义策略空间。
- 对 raw legal action 184 维和压缩后 85 维做统一处理。
- target contract 不再 silent fallback。如果 target_legal & target_candidate_valid 为空,就记录 violation,并隔离 target-head 训练权重。
- 对低血血包、安全推塔、敌方压力、小兵 runtime id 顺序等做监控。
- 强化普攻识别逻辑保留,但最终没有把 enhanced_attack_hit 作为 actor reward,避免再次诱导动作级 reward hacking。
六、强化学习算法#
算法主体一直是 PPO[7],没有在最终阶段切到 BPO[11]。指导老师沈老师给过一篇 BPO 论文[11],我们也研究了 advantage normalization、低 LR、低 entropy 等设置[7][8]。但 BPO 使用动作联合分布,而这个比赛里的动作是结构化多头动作。腾讯自己的论文[4][5]也强调动作结构化,减少无谓的、缺乏因果性的探索。赛末时间太紧,我们没有把风险押在替换算法主体上。
真正收益最大的算法调参是降低学习率和 entropy beta。我们参考了 OpenAI 训练 Dota 模型[9]时后期调小 lr 和 beta 的经验。P7 最终代码里是:
INIT_LEARNING_RATE_START = 1e-5
TARGET_LR = 3e-6
TARGET_STEP = 12000
BETA_START = 0.001
GAMMA = 0.995
LAMDA = 0.95plaintext低 LR 的效果非常明显。模型不是从零学习,而是在已有强策略附近做小步 fine-tune。高学习率容易把已经学到的稳定行为冲掉;低 beta 则减少后期无意义探索,让 policy 更集中。
我们曾经用 lr=1e-5 训练约 3 小时、22k 步,policy 明显压过第三周模型。
七、系统工程架构#
系统工程上,我们最大的工作是把“训练是否健康”变成可观察的东西。早期我们做了 monitor fetch 脚本,直接从腾讯开悟网页端训练监控 API[2] 拉曲线。后面 P4 之后扩展了大量监控:
- feature finite / nonzero / saturation / padding leak
- object valid token mean
- target attention entropy
- target candidate valid rate
- target contract violation rate
- action target illegal rate
- reward raw / weighted component
- value component loss
- PPO ratio / clip fraction / approx KL
- matchup sample rate 和 matchup outcome
- low hp、cake、安全推塔、兵线压力等行为指标
我们还做了本地 runtime smoke 流程,把远端 Kaiwu runtime[2] 打包拉回本地,至少能在推到平台前发现 import、shape、sample ABI、monitor contract 这类低级错误。这不能替代官方环境,但能少浪费很多远端 debug 时间。
另外,后期训练加入了 opponent ladder。最终 P7 的对手池是:
model_pool = [284261, 283930]
train mix = 284261 / 283930 / selfplay = 0.20 / 0.20 / 0.60
eval cycle = common_ai, 284261, 283930plaintext历史模型不是为了固定训练套路,而是给 selfplay 一个锚点,防止分布漂移和 policy 坍塌。
八、模型迭代过程#
第一次周赛(26.05.11)#
第一次周赛(模型 p1),我们仿照 taichu ↗[1] 的思路,保持 raw feature 和 3910 维度特征,使用简单的奖励,在 512 的 batchsize 下训练 24 小时 45708 步,拿到了第一名的成绩。
对于四组对局不同的问题,我忘了 taichu 怎么解决的了,我们最初引入了 adapter 来尝试解决这个问题,但是发现会把模型变成四个孤立的小模型,四组对局不同的情况下,模型 policy 水平有着很大的不同。
我们又训练了一个 11k 维度的模型,但是这个模型收敛速度慢到令人发指,且训练 24 小时也打不过 common ai,我们没有那么大的算力去 scaling。(这里的算力特指 cpu,强化学习需要 rollout 的数据来源)
第一次周赛后,官方发了三个 baseline,我们的模型可以打过前两个 baseline 但是却打不过第三个。
P2 是过渡版本,主要尝试了 11k 维特征和 adapter 的不同配置,未正式提交周赛。它的价值在于让我们确认了”堆特征维度”这条路走不通。
第二次周赛(26.05.18)#
第二次周赛(模型p3),首先我把 adapter 只是换成了 context 告诉模型你现在是处在哪种对局。
我已经认识到了 taichu ↗[1] 的 feature 的不合理之处。官方的模型都是很小的模型,却有着很好的效果,说明根本不需要这么多特征。况且我已经观察到了 raw feature 对训练稳定性的负面影响,在阅读了几篇论文后,我决心缩减特征并采取归一化。但是由于我们前期并没有重视环境 obs 的调试,我们的底层很多代码都是错误的,或者在不能确定下使用了 hash 桶。同时对奖励进行了一些激进的,容易被 hacking 的修改,最终只拿到了第三名的成绩。
第三次周赛(26.05.25)#
第三次周赛(模型 p4-p6),我们采取了随时间线性衰减/递增的 reward,并反复确认他们不会被 hacking。
同时确认了 2904 维语义化 ABI,并在接下来的两周保持不变。
同时在模型上,我们引入了 multi value head(total, hp, economy, tower, kill_death, last_hit, risk),分别学习不同类型的 reward。事实证明这能让我们的模型有着更高的上限。
同时我注意到 LSTM 16 帧只有 1 秒左右的记忆(经过 debug,我们意识到仿真环境里面是 30fps),那没办法了,我仿照初赛的实践,同时参考了一些在具身科研里面见到的手法,做了简单的全局世界记忆。WorldStateTracker
同时引入了前期探索的几个效果中规中矩的模型(比如第一周和第二周周赛的模型)进行 train 和 eval,并采取 cur learning 阶梯训练的措施,在中前期引导其稳定学习。
当模型能够以大于 0.5 的比率打赢早期模型后,我们将 train 比例固定在 0.15 0.15 0.7,在几次 reward 反复探索回溯后,我们一共训练了大概 165 小时,总共 354158 步。就是这样的模型,我们以被其他选手评价为「特别稳」的战斗风格拿下了卫冕了第三次周赛的前三。
我们翻阅前几年队伍的文档经验[12],发现调小学习率是一个瓶颈期的解决方案。于是我们尝试将学习率降到 lr=1e-5,同时指导老师沈老师也发来了一篇 bpo 的论文[11](因为他采用动作联合分布,最终没有采用,因为腾讯自己那一篇论文[4][5]说动作要结构化,减少无谓的,缺乏因果性的探索),然后训练了 3h,22k 步,我们的 policy 明显能够压倒性地战胜我们第三周的模型。
决赛(26.06.01)#
第四次周赛,不对,没有周赛了也就是最终决赛。见识到了 lr 的威力,我开始深入研究 ppo 算法[7]的调参。最终在 openai 训练 dota 模型[9]中发现了他们调小 lr 和 beta 训练的 tricks。
同时,指导老师也发来另外一篇论文,关于 reward shaping 的[10],reward 的本质是作为监督信号帮助模型在训练过程中区分一般般的动作和好的动作。
那么,我在思考,我们能不能 gate 一下我们的 reward ? 好在之前的三周日夜不停的调参给了我一些直觉。
同时我们在前期的训练里面也积累了一套可观测性的监控:做了 episode-level 的 gated behavior classifiers: gwin_cls, tower_cls, econ_cls, farm_cls, fight_cls, surv_cls, cake_cls, push_cls。 它们用于判断 reward 是否真的对应健康行为,比如经济、补刀、推塔、生存、血包、安全推进,而不是盲调权重。
经过 10 次的调参我们就收敛到一个比较优秀的 reward。
同时我们定期引入 latest & SOTA 模型,防止 policy 坍塌或者分布漂移
我们低 LR 起步并继续衰减,同时显著降低 entropy beta,并最终把 beta 降到 0.001,提交了最终的模型「中山大学怎么可能是榜一不行不行或许可行」,训练总步数 551427。
实际上,如果我们再有 24 小时,我们完全可以用 beta=0 的训练交一张更优秀的答卷,可惜时间不够。
九、训练效果分析#
P1 的收益来自简单稳定,但上限有限。P2/P3 的激进尝试证明,高维 raw feature 和不可靠 reward 很容易拖慢训练甚至带歪策略。P4-P6 的收益更扎实:语义化 ABI 提升了特征可靠性,multi value head 提升了上限,WorldStateTracker 补足了短 LSTM 的记忆缺陷,历史模型池让 selfplay 不至于漂得太远。
P7 的收益来自 fine-tune 而不是重构。模型已经会玩后,低学习率和低 beta 比新增复杂结构更重要。最终模型的特点不是特别激进,而是稳定,坏交易少,低血行为更克制,推塔和经济之间更平衡。
但这次仍有很多遗憾。我们没有完整消融 gated classifiers,也没有把每次 reward 调参都整理成表格。很多评估只存在平台记录或临时判断里,赛后复盘成本很高。
十、工作亮点、创新性及实用性#
这次比赛的核心认知是:在这个任务上,模型架构不是瓶颈,奖励工程和训练策略才是。 官方 baseline 都是很小的模型,却能表现很好。我们的创新也不在”提出新网络结构”,而在于怎么把简单的方案做到极致、做得稳。
创新一:Gated Behavior Classifiers —— 可解释的 reward 诊断#
传统 reward 调参的困境是:改了权重,只能看总 reward 曲线涨没涨,但不知道模型到底在哪个行为维度变好了或变坏了。我们构建了一组 episode-level 的行为分类器(gwin, tower, econ, farm, fight, surv, cake, push),将 reward 调参从”盲调权重看总分”变成”分维度诊断行为健康度”。这不是直接 gate reward 本身,而是为 reward 调参提供可解释的反馈闭环。
这套方法不依赖具体游戏规则,可以迁移到任何需要 reward engineering 的 RL 场景。
创新二:特征归一化与语义化 ABI —— 训练稳定性的基础设施#
我们从 3910 维 raw feature 缩减到 2904 维语义化 ABI,核心改变不是维度,而是每个字段的来源、尺度、可见性和缺失值处理都是确定的。配合系统的归一化(HP 用 power-0.25 曲线、距离按 map scale、CD 归一到 [-1,1]),消除了 raw feature 中量纲混乱、极端值、padding 泄漏等对训练稳定性的隐性伤害。
这件事听起来不性感,但它是后续所有工作的前提。P2/P3 阶段的训练不稳定,很大程度上就是因为底层特征不可靠。
创新三:Curriculum 式训练策略 —— 从保守到激进,及时回撤#
我们的训练过程本质上是一套 curriculum learning[13] 策略在 reward-opponent 空间上的应用:
- 保守起步:用简单 reward + common AI 对手,先学会基本操作和稳定行为。
- 逐步引入难度:加入历史强模型(P1/P3)作为对手,提高 selfplay 比例,同时引入 phase reward 让中后期信号逐渐变强。
- 及时回撤:当 gated classifiers 显示某个维度的行为退化(比如补刀变差或低血乱冲),回退 reward 权重或降低对手难度,而不是继续硬推。
- 后期收敛:用极低学习率(1e-5 → 3e-6)和极低 entropy beta(0.001)做 fine-tune,保住已学到的稳定策略,只在边际上推进。
这个过程不是我们一开始设计好的,而是在四周的反复试错中自然演化出来的。但回头看,它完整地符合 curriculum learning 的框架:由易到难、逐步扩展、失败时回退。
工程亮点#
除了上述三个核心创新,还有几个工程层面值得提的点:
- Multi value head:7 个 value component 分别学习不同尺度的 reward,减少互相污染,也让监控更精细。
- WorldStateTracker:用 6 个子 tracker 显式补全 LSTM 短记忆的不足。
- Target contract:不做 silent fallback,违约时记录 violation 并隔离 target-head 权重,防止模型从错误监督信号中学习。
- 可观测性体系:从 feature health 到 PPO diagnostics 到行为指标,把”训练是否健康”变成可监控的东西。
十一、总结与展望#
这次比赛从结果看还不错,但过程里有很多地方可以做得更好。最大教训是前期应该更早重视 obs 调试、feature 语义和评估闭环,而不是太早相信 reward 和网络改动。
增加可观测性,即使发现错误的趋势并将其扭正。
参考文献#
[1] wty-yy. kaiwu_taichu. GitHub repository. https://github.com/wty-yy/kaiwu_taichu ↗
[2] Tencent AI Arena. AI Arena Competition / Kaiwu Competition Documentation. https://aiarena.tencent.com/hok/doc/ ↗
[3] Tencent AI Lab. Honor of Kings AI Open Environment. GitHub repository. https://github.com/tencent-ailab/hok_env ↗
[4] Deheng Ye, Zhao Liu, Mingfei Sun, Bei Shi, Peilin Zhao, Hao Wu, Hongsheng Yu, Shaojie Yang, Xipeng Wu, Qingwei Guo, Qiaobo Chen, Yinyuting Yin, Hao Zhang, Tengfei Shi, Liang Wang, Qiang Fu, Wei Yang, Lanxiao Huang. Mastering Complex Control in MOBA Games with Deep Reinforcement Learning. AAAI 2020. https://arxiv.org/abs/1912.09729 ↗
[5] Deheng Ye et al. Towards Playing Full MOBA Games with Deep Reinforcement Learning. NeurIPS 2020. https://arxiv.org/abs/2011.12692 ↗
[6] Shengyi Huang et al. Honor of Kings Arena: an Environment for Generalization in Competitive Reinforcement Learning. NeurIPS Datasets and Benchmarks 2022. https://arxiv.org/abs/2209.08483 ↗
[7] John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017. https://arxiv.org/abs/1707.06347 ↗
[8] John Schulman, Philipp Moritz, Sergey Levine, Michael Jordan, Pieter Abbeel. High-Dimensional Continuous Control Using Generalized Advantage Estimation. ICLR 2016. https://arxiv.org/abs/1506.02438 ↗
[9] OpenAI, Christopher Berner, Greg Brockman, Brooke Chan, Vicki Cheung, et al. Dota 2 with Large Scale Deep Reinforcement Learning. arXiv:1912.06680, 2019. https://arxiv.org/abs/1912.06680 ↗
[10] Andrew Y. Ng, Daishi Harada, Stuart Russell. Policy Invariance Under Reward Transformations: Theory and Application to Reward Shaping. ICML 1999. https://ai.stanford.edu/~ang/papers/shaping-icml99.pdf ↗
[11] Zifeng Zhuang, Kun Lei, Jinxin Liu, Donglin Wang, Yilang Guo. Behavior Proximal Policy Optimization. ICLR 2023. https://arxiv.org/abs/2302.11312 ↗
[12] 腾讯开悟官方资料. 智能体决策算法 2022-2025 年获奖团队技术方案汇编.
[13] Sanmit Narvekar, Bei Peng, Matteo Leonetti, Jivko Sinapov, Matthew E. Taylor, Peter Stone. Curriculum Learning for Reinforcement Learning Domains: A Framework and Survey. JMLR 2020. https://arxiv.org/abs/2003.04960 ↗
