← ALL ARTICLES
游戏AI5 MIN READ

游戏强化学习

全库目录221
本文目录10

训练回报增加,角色可能只是学会刷一个错误指标。游戏强化学习先定义上线可用观测与合法动作,再让奖励反映真实目标。策略训练、推理部署和权威规则校验是不同阶段。

状态、策略与价值

马尔可夫决策过程用状态 ss、动作 aa、转移概率和奖励描述序列决策。策略 π(a∣s)\pi(a|s) 决定在状态下选什么动作。价值 V(s)V(s) 表示状态的期望累计回报,Q(s,a)Q(s,a) 表示执行某动作后的期望回报。未来奖励通常乘折扣 γ\gamma:

Gt=rt+1+γrt+2+γ2rt+3+⋯G_t=r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+\cdots

γ\gamma 接近 0 更重眼前,接近 1 更看长期。真实游戏很少满足完整可观察和理想 Markov 假设,因此状态表示和记忆机制同样重要。

更新目标与终止语义

用表格Q学习可以明确一次更新的数据关系:在状态s选动作a,环境返回奖励r和下一状态s',目标为 r+gamma*max(Q[s',a']),再以学习率η向目标移动。例如旧Q为2、奖励1、下一状态最大合法Q为4、折扣0.9、学习率0.5,则目标为4.6,新Q为3.3。真正终止时目标改为1,新Q为1.5;把终止误当可继续状态会凭空保留未来价值。因训练时长上限截断且状态仍可继续时,是否保留自举项由任务定义区分。

text
target = reward if terminated else reward + gamma * max_legal_action(Q[nextState])
Q[state, action] += learningRate * (target - Q[state, action])

这是有限状态、离散动作的机制伪代码。环境保证非终止状态至少存在一个合法动作,例如等待;确实无可继续动作时,由环境明确标记终止,目标只取即时奖励。这样max_legal_action始终有定义。大规模连续控制采用匹配其动作空间的算法与函数近似。

训练回报与任务成功率分别记录。同一奖励总和可能来自完成目标,也可能来自重复触发某个小奖励;保留每个奖励分量与轨迹,才能复算策略究竟优化了什么。验证场景按地图、对手和初始条件分组,防止只记住训练分布。

强化学习管线

训练前先定义观测、动作空间、奖励、回合终止条件和课程难度。观测不应包含上线时拿不到的信息;动作最好接入已有角色控制接口,而不是让网络绕过物理与规则。

奖励塑形最容易制造“看起来在学习、实际钻规则漏洞”的结果。奖励应接近真正目标,并通过日志检查各分量。

经典反例能说明为什么必须逐分量检查:奖励“前进距离”可能学到原地翻滚刷位移,奖励“存活时间”可能学到站进角落不动,奖励累计造成伤害而允许目标恢复时,可能学到反复打伤同一目标而不结束战斗。总回报曲线上升而目标分量(例如真实击杀数、占点时间)不动,就是在钻规则漏洞。每个分量单独画曲线、单独设上限,异常分量的权重变化要写进训练日志。训练、验证和压力场景要分开;模型版本、环境版本、随机种子和指标一起记录,才可能复现。

学习模型适合难以手写的连续控制或复杂策略,但它不是免费智能。推理成本、平台差异、量化误差、确定性和失败回退都要在部署前验证。竞技玩法尤其要确认模型不会获得玩家不可见的信息。

神经网络与学习方式

MLP 由全连接层组成,适合固定长度状态向量;CNN 通过局部卷积和共享权重处理图像或网格;RNN 把历史状态递归传递,LSTM 用门控缓解长序列中的梯度和记忆问题。网络结构应匹配输入的空间、时间结构,层数更多并不自动带来更好的游戏行为。

监督学习从带标签样本学习输入到目标输出;模仿学习从专家轨迹学习策略,但会受到分布偏移影响;强化学习通过与环境交互、累计奖励学习决策。三者可以组合,例如先模仿得到可用策略,再用强化学习微调。

AlphaGo 结合策略网络、价值网络与 MCTS;AlphaZero 用自我博弈替代人类棋谱;AlphaStar 面向部分可观察、长时序和巨大动作空间,使用联盟式训练与序列模型。这些案例说明模型、搜索、训练分布和环境接口需要共同设计,不能只抽取一个算法名称套用到实时游戏。

混合架构

可靠做法通常是规则系统守住边界,学习或搜索只处理有限选择。例如行为树控制战斗流程,Utility 选择战术目标,RL 只输出局部移动参数。权威游戏规则、伤害结算和资源消耗仍由确定性系统验证。

LLM 可用于离线生成候选对白、规划草案或把自然语言转成受限指令,但不应直接拥有场景任意操作权。输入先压缩成允许暴露的事实,输出经过结构约束、白名单和规则校验;超时或不可用时必须有传统逻辑回退。它是受约束的辅助层,不是权威决策者。

部署边界

部署先检查推理是否按时完成,再验证原始输出。下面固定采用非负权重接口:原始权重逐项有限且非负,才提取合法动作的权重。合法集合非空且权重总和有限、大于零时,归一化后选择动作;任何一步失败都交给规则回退。提取子集保留合法动作的原始编号,选择结果仍能映射为正确命令。

text
observation = BuildAllowedObservation(world, agent)
weights = policy.Infer(observation)
if timeout or wrong output size or any nonfinite or negative raw weight:
    action = deterministicFallback()
else:
    legalIds, legalWeights = select current legal actions from weights
    total = sum(legalWeights)
    if empty legalIds or nonfinite(total) or total <= 0:
        action = deterministicFallback()
    else:
        probabilities = legalWeights / total
        action = legalIds[sample or argmax(probabilities)]
request = ConvertToGameplayCommand(action)
rules.ValidateAndExecute(request)

采用logits接口时,原始有效输出可以为任意有限实数。先确认存在合法动作,再仅对合法子集用减去最大值的稳定softmax;被屏蔽动作不参与归一化。权重接口与logits接口使用各自的数值条件。回退即使选择等待,也要经过当前玩法状态校验,环境故障时不能凭空构造一个合法动作。

验证方法

训练与未见局面分开,记录奖励分量和真实任务指标。目标设备测推理延迟与量化误差,非法动作及环境异常检查回退;模型行为不能绕过伤害、库存等权威规则。

实现与证据

Q学习更新为经典有限MDP机制,未训练策略或测量设备推理。目标任务的奖励与合法动作必须由项目环境验证,文中案例不构成模型效果证据。

相关主题

参考资料