基本概念:
 

Actor:策略函数,目标是最大化轨迹的期望累积奖励

Critic:价值函数,

Policy Gradient策略梯度:

(介绍逻辑)先让智能体用当前 “玩法” 和环境互动,记录每一步的 “状态、动作、得分”;再分析这些 “经验” 中哪些动作能带来高回报,朝着 “更可能选高回报动作” 的方向调整玩法;不断迭代,直到玩法足够好。

总结路线,初始化参数→与环境交互采样→计算奖励回报→估计策略梯度→更新参数→循环优化

环境:
 

负面奖励:

正面奖励:

以下是通过对话机器人的训练相关的奖励机制机制来控制结果

Outline(学习方法)

采取中间交叉的Actor+Critic:

Policy-based Approach——Learing an Actor(学习一个演员)

先是寻找相关的函数,然后进行观察学习,再采取行动

深度学习的三大步:
 

Step 1:神经网络作为演员


输入层:“观察”环境的动作,查看动作是在做什么

然后到隐藏层中提取观察的特征,转换和计算,学习“从观察到动作之间”的特征关系

输出层:每个神经元可能对应一个动作,输出采取的可能性最大的动作

那么思考一个问题,为什么要采用神经网络呢?

因为你可以想想,如果采取了其他固定的奖励机制(如table),比如我达到自己主观设定的阈值就一定选择去执行planA,局限性太大了,这些对于小场景可能适用且效果还不错,但是大场景呢?环境一直在变换,万一遇到之前没设想到的环境,那就不实用了

所以采取神经网络的优点就很明显了,分为以下几点:
1,压缩高维状态(比如游戏去“观察”行为,但是这个观察是连续且高维的,采用table会造成内存爆炸)

2,遇到没见过的状态,神经网络能举一反三,不会被限制

3,端到端的学习(无需人工去提取特征,比如传统的强化学习设计需要人工去表示状态,再表示决策,麻烦且容易出错,采用神经网络则不用,实现“观察”到“动作”的输入到输出)

Step 2:良好的功能性

判断Actor的好坏:


Actor 的本质是一个策略(比如 “左移概率 0.7、右移 0.2、开火 0.1” 的动作概率分布)。判断它 “好坏” 的核心标准是:用这个策略与环境交互时,长期累积奖励的数学期望(平均值)有多高

计算总损失

主要是由期望值来决定好坏:

1,简单场景:
 

在简单的场景下,我们只需要让Actor多测试几把,采平均分

2,复杂场景:
 

我们需要借助Critic来作辅助,用 Critic 估算 “每个动作的长期价值”,Actor 根据这个来调整策略,最终让 “平均分” 越来越高。

Step 3:衡量选出最好的function

采用添加基线(Baseline)来更加有效地“找到最好的策略函数”,我们从策略梯度和基线的作用来分析:
 

1,策略梯度的核心目标:最大化“期望累积奖励”:


通过公式来计算出最大化的累积奖励:Rˉθ=Eτ(τ)[R(τ)]

为了最大化 Rˉθ,需要计算它的梯度Rˉθ,并沿梯度方向更新策略参数 θ

注:

Rˉθ=Eτ(τ)[R(τ)] ,指的是每次的总奖励之和除以次数,相当于平均值

2,但是对于以上公式去计算累积奖励的话,会出现:奖励“无区分度”导致分差大:

因为会出现一种情况就是,R(τn) 总是正的,会导致一个问题:

所有的动作的概率梯度都会被正奖励放大,会出现即使某些动作不如“平均水平”但是也被错误地“鼓励(概率提高)”

这种问题出现就会导致梯度估计的方差极大(Actor更新方向错乱),导致策略效率低下

3,基线(Baseline)的作用:“中心化”奖励,精准区分动作好坏:
 

为了解决以上问题,我们引入了Baseline,将梯度纠正为:

RˉθN1∑n=1Nt=1Tn(R(τn)−b)∇logp(atnstn,θ)

用Baseline来区分 “好动作” 和 “一般动作”

  • R(τn)>b(当前轨迹奖励 “高于基准”),则 (R(τn)−b)>0,会鼓励该轨迹中动作(提高动作概率);
  • R(τn)<b(当前轨迹奖励 “低于基准”),则 (R(τn)−b)<0,会抑制该轨迹中动作(降低动作概率)。
    即使整体奖励都为正,也能通过 “与基线的比较”,精准区分动作的实际价值

总的来说:基线不改变梯度的 “期望方向”,但能大幅降低梯度的方差,让参数更新更稳定、高效。

做到:

  • 方差降低 → 每次更新的方向更可靠,不会因随机波动偏离最优路径;
  • 奖励区分度提升 → 能更准确地 “强化好动作,削弱差动作”。

Policy Gradient(策略梯度)

不断收集新的数据,进行带入优化,不断更新参数

几种变法与相关的使用场景:

(前面我们学习的都是Actor-Critic,接下来看其他文章去学习一下其他的方法)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐