参考:
ChatGPT
(加上个人理解,如有错误,欢迎指正)
一、蒙特卡洛算法(Monte Carlo, MC)
1、概述
- 蒙特卡洛方法主要用于给定策略下,估计每个状态或每个状态-动作对的值函数
- 核心思想是通过大量随机采样来逼近某个期望值或概率分布
2、使用场景
- 无法精确建模环境或不知道环境动态特性(如状态转移概率和奖励函数)时,可以通过反复采样得到估计的累积回报
- 无法使用动态规划时,即环境过于复杂、状态空间过于庞大甚至是连续时
- 需要学习迟到的奖励时,尤其是回合制事件,一个回合结束后才能获得奖励
- 需要处理无法提前终止的探索任务时
3、关键步骤
- 采样多个轨迹:智能体按照当前策略在环境中进行多次完整的采样实验,即从某个状态开始,执行一系列动作,直到到达终止状态。这一系列状态-动作-奖励的序列称为一个轨迹(episode)
- 计算轨迹:对于每条轨迹,计算每个状态或动作的累积回报(Return)
- 更新值函数:将多次轨迹的回报进行平均,作为该状态或动作的值函数估计。随着轨迹数目的增多,估计值会逐渐接近真实值
二、优势回归算法(Advantage-Weighted Regression, AWR)
1、优势函数Advantage Function
- 优势函数 A ( s , a ) A(s,a) A(s,a)表示在状态 s s s下采取动作 a a a相较于在该状态平均表现(即状态价值 V ( s ) V(s) V(s))的“相对好坏”
- A ( s , a ) = Q ( s , a ) − V ( s ) A(s,a)=Q(s,a)-V(s) A(s,a)=Q(s,a)−V(s)
- 如果 A ( s , a ) > 0 A(s,a)>0 A(s,a)>0,意味着该动作比平均表现更好(优势)
- 如果 A ( s , a ) < 0 A(s,a)<0 A(s,a)<0,意味着该动作比平均表现更差(劣势)
2、简介
- AWR是一种基于回归的离线强化学习算法,它更像是一种行为克隆(Behavior Cloning)的变体
- 通过优势函数来加权过往的经验,并使用这些加权的经验进行回归来优化策略,而不是通过梯度直接优化策略
- 适合离线强化学习场景,智能体通过已收集的数据进行学习
3、关键步骤
- 采集离线数据:预先收集一批经验数据 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′),包括状态 s s s、动作 a a a、奖励 r r r和执行动作 a a a后转移到的下一状态 s ′ s' s′
- 计算优势函数: A ( s , a ) = r t + γ V ( s ′ ) − V ( s ) A(s,a)=r_t+\gamma V(s')-V(s) A(s,a)=rt+γV(s′)−V(s)
不使用 A ( s , a ) = Q ( s , a ) − V ( s ) A(s,a)=Q(s,a)-V(s) A(s,a)=Q(s,a)−V(s)的原因:
- 简化计算:一般计算 Q ( s , a ) Q(s,a) Q(s,a)需要更多估计步骤和计算资源,用 r t + γ V ( s ′ ) r_t+\gamma V(s') rt+γV(s′)来近似 Q ( s , a ) Q(s,a) Q(s,a)可简化计算量
- 降低方差:直接使用 Q ( s , a ) − V ( s ) Q(s,a)-V(s) Q(s,a)−V(s)可能导致高方差,导致波动不稳定
- 离线数据的局限性:由于离线数据,准确估计 Q ( s , a ) Q(s,a) Q(s,a)更加困难
-
通过加权回归更新策略:优势加权的软策略更新, π new ( a ∣ s ) ∝ π old ( a ∣ s ) exp ( β A ( s , a ) ) \pi_{\text {new }}(a \mid s) \propto \pi_{\text {old }}(a \mid s) \exp (\beta A(s, a)) πnew (a∣s)∝πold (a∣s)exp(βA(s,a)),使更新后的策略 π new \pi_{\text {new }} πnew 倾向于选择优势较大的动作
-
执行行为克隆回归:通过最大化加权回归的方式来更新策略
- 当策略是参数化模型时,通过最小化损失函数、梯度更新来实现回归过程
AWR损失函数的两种形式:
① L = − ∑ s ∑ a π old ( a ∣ s ) exp ( β A ( s , a ) ) log π new ( a ∣ s ) \mathcal{L}=-\sum_s \sum_a \pi_{\text {old }}(a \mid s) \exp (\beta A(s, a)) \log \pi_{\text {new }}(a \mid s) L=−∑s∑aπold (a∣s)exp(βA(s,a))logπnew (a∣s)- π old ( a ∣ s ) \pi_{\text {old }}(a \mid s) πold (a∣s)意味着是从旧策略采集的数据中得到了状态-动作对
- e x p ( β A ( s , a ) ) log π new ( a ∣ s ) exp (\beta A(s, a)) \log \pi_{\text {new }}(a \mid s) exp(βA(s,a))logπnew (a∣s)是加权后的关于新策略 π new \pi_{\text{new}} πnew的对数似然,不仅模仿专家,而且使得更优的动作在新策略中有更高的选择概率
② L = − ∑ ( s , a ) e x p e r t exp ( β A ( s , a ) ) log π new ( a ∣ s ) \mathcal{L}=-\sum_{(s,a)~expert} \exp (\beta A(s, a)) \log \pi_{\text {new }}(a \mid s) L=−∑(s,a) expertexp(βA(s,a))logπnew (a∣s)
- ∑ ( s , a ) e x p e r t \sum_{(s,a)~expert} ∑(s,a) expert表示状态-动作对来自专家的演示数据,而不是智能体自己的旧策略 π old \pi_{\text{old}} πold收集的数据
- 当策略不是一个参数化模型,比如一个字典(表格时),通过优势加权实现回归过程
- 旧策略表:在表格形式中,旧策略 π old \pi_{\text{old}} πold是直接存储的,表示在状态 s s s下选择动作 a a a的概率
- 优势加权:对于每个状态,可以根据采样得到的经验数据,使用优势函数计算每个动作的加权概率,然后更新策略表
π new ( a ∣ s ) = π old ( a ∣ s ) exp ( β A ( s , a ) ) ∑ a ′ π old ( a ′ ∣ s ) exp ( β A ( s , a ′ ) ) \pi_{\text {new }}(a \mid s)=\frac{\pi_{\text {old }}(a \mid s) \exp (\beta A(s, a))}{\sum_{a^{\prime}} \pi_{\text {old }}\left(a^{\prime} \mid s\right) \exp \left(\beta A\left(s, a^{\prime}\right)\right)} πnew (a∣s)=∑a′πold (a′∣s)exp(βA(s,a′))πold (a∣s)exp(βA(s,a))