当前位置: 首页 > news >正文

强化学习_置信域算法RL

1 置信域算法到TRPO

置信域算法核心:
找到更新参数 θ \theta θ θ o l d \theta_{old} θold相关的近似目标函数,邻域 N ( θ o l d ) N(\theta_{old}) N(θold)内寻找最大值

  1. 近似(approximation): L ( θ ∣ θ o l d ) L(\theta | \theta_{old}) L(θθold)

    1. 在这里插入图片描述
  2. 最大化(Maximation): arg max ⁡ θ ∈ N ( θ o l d ) L ( θ ∣ θ o l d ) \argmax_{\theta \in N(\theta_{old})} L(\theta | \theta_{old}) argmaxθN(θold)L(θθold)

    1. 在这里插入图片描述

强化学习优化目标:1991 Dyna paper中就提出的agent的任务可以建模成奖励最大化问题(reward maximization)
E π [ τ ( r ) ] = E π [ V π ( S ) ] = ∑ i = 1 A π ( a i ∣ S ; θ ) Q ( S , a i ) E_\pi[\tau(r) ] = E_\pi[V^\pi(S)] = \sum_{i=1}^A\pi(a_i|S;\theta)Q(S, a_i) Eπ[τ(r)]=Eπ[Vπ(S)]=i=1Aπ(aiS;θ)Q(S,ai)

  1. 寻找 L ( θ ∣ θ o l d ) L(\theta | \theta_{old}) L(θθold)
    1. 等价替换 ∑ i = 1 A π ( a i ∣ S ; θ ) Q ( S , a i ) = ∑ i = 1 A π ( a i ∣ S ; θ o l d ) π ( a i ∣ S ; θ ) π ( a i ∣ S ; θ o l d ) Q ( S , a i ) = E a ∼ π ( . ∣ θ o l d ) [ π ( a ∣ S ; θ ) π ( a ∣ S ; θ o l d ) Q ( S , a ) ] \sum_{i=1}^A\pi(a_i|S;\theta)Q(S, a_i)=\sum_{i=1}^A \pi(a_i|S;\theta_{old}) \frac{\pi(a_i|S;\theta)}{\pi(a_i|S;\theta_{old})}Q(S, a_i)=E_{a\sim \pi(.|\theta_{old})}[\frac{\pi(a|S;\theta)}{\pi(a|S;\theta_{old})}Q(S, a)] i=1Aπ(aiS;θ)Q(S,ai)=i=1Aπ(aiS;θold)π(aiS;θold)π(aiS;θ)Q(S,ai)=Eaπ(.∣θold)[π(aS;θold)π(aS;θ)Q(S,a)]
    2. L ( θ ∣ θ o l d ) = E a ∼ π ( . ∣ θ o l d ) [ π ( a ∣ S ; θ ) π ( a ∣ S ; θ o l d ) Q ( S , a ) ] ≃ E a ∼ π ( . ∣ θ o l d ) [ π ( a ∣ S ; θ ) π ( a ∣ S ; θ o l d ) U t ] L(\theta | \theta_{old})=E_{a\sim \pi(.|\theta_{old})}[\frac{\pi(a|S;\theta)}{\pi(a|S;\theta_{old})}Q(S, a)] \simeq E_{a\sim \pi(.|\theta_{old})}[\frac{\pi(a|S;\theta)}{\pi(a|S;\theta_{old})}U_t] L(θθold)=Eaπ(.∣θold)[π(aS;θold)π(aS;θ)Q(S,a)]Eaπ(.∣θold)[π(aS;θold)π(aS;θ)Ut]
    3. 蒙特卡洛近似 & u i u_i ui回报用优势 A i A_i Ai确保策略更新的方向是朝着提高预期回报的方向。
      1. L ( θ ∣ θ o l d ) ≃ 1 n ∑ i = 1 n π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) A i . . . . . ( T R P O − 1 ) L(\theta | \theta_{old}) \simeq \frac{1}{n}\sum_{i=1}^n\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})}A_i \ \ ..... (TRPO-1) L(θθold)n1i=1nπ(aisi;θold)π(aisi;θ)Ai  .....(TRPO1)
  2. arg max ⁡ θ ∈ N ( θ o l d ) L ( θ ∣ θ o l d ) \argmax_{\theta \in N(\theta_{old})} L(\theta | \theta_{old}) argmaxθN(θold)L(θθold)
    1. 约束 1 n ∑ i = 1 n D K L [ π ( . ∣ s i ; θ o l d ) ∣ ∣ π ( . ∣ s i ; θ ) ] < Δ . . . . . ( T R P O − 2 ) \frac{1}{n}\sum_{i=1}^nD_{KL}[\pi(.|s_i;\theta_{old}) | | \pi(.|s_i;\theta) ] < \Delta \ \ ..... (TRPO-2) n1i=1nDKL[π(.∣si;θold)∣∣π(.∣si;θ)]<Δ  .....(TRPO2)

2 TRPO到PPO

TRPO 使用泰勒展开近似、共轭梯度、线性搜索等方法直接求解。该方法计算量巨大,所以2017PPO paper发布, PPO 的优化目标与 TRPO 相同,但 PPO 用了一些相对简单的方法来求解

  1. PPO-Penalty: 拉格朗日乘数法直接将 KL 散度的限制放进了目标函数中
    1. L ( θ ∣ θ o l d ) = 1 n ∑ i = 1 n [ π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) A i + β D K L [ π ( . ∣ s i ; θ o l d ) ∣ ∣ π ( . ∣ s i ; θ ) ] ] L(\theta | \theta_{old}) = \frac{1}{n}\sum_{i=1}^n[\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})}A_i + \beta D_{KL}[\pi(.|s_i;\theta_{old}) | | \pi(.|s_i;\theta) ]] L(θθold)=n1i=1n[π(aisi;θold)π(aisi;θ)Ai+βDKL[π(.∣si;θold)∣∣π(.∣si;θ)]]
  2. PPO-Clip : 在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大
    1. L ( θ ∣ θ o l d ) = 1 n ∑ i = 1 n [ m i n ( π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) A i , c l i p ( π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) , 1 − ϵ , 1 + ϵ ) A i ) ] L(\theta | \theta_{old}) = \frac{1}{n}\sum_{i=1}^n[min(\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})}A_i, clip(\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})}, 1-\epsilon, 1+\epsilon )A_i)] L(θθold)=n1i=1n[min(π(aisi;θold)π(aisi;θ)Ai,clip(π(aisi;θold)π(aisi;θ),1ϵ,1+ϵ)Ai)]

3 正向 D K L D_{KL} DKL和反向 D K L D_{KL} DKL

参考: 机器学习中的各种熵

我们可以看到上面的近似都是用的正向 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q), P为真实分布,Q为预估分布。

  • D K L [ π ( . ∣ s i ; θ o l d ) ∣ ∣ π ( . ∣ s i ; θ ) ] D_{KL}[\pi(.|s_i;\theta_{old}) | | \pi(.|s_i;\theta) ] DKL[π(.∣si;θold)∣∣π(.∣si;θ)], 真实值 P = π ( . ∣ s i ; θ o l d ) P=\pi(.|s_i;\theta_{old}) P=π(.∣si;θold),预估值 Q = π ( . ∣ s i ; θ ) Q=\pi(.|s_i;\theta) Q=π(.∣si;θ)
  • 期望预估尽量覆盖真实值

3.1 什么是 D K L D_{KL} DKL

我们先来看下
D K L ( P ∣ ∣ Q ) = P l o g ( P Q ) D_{KL}(P||Q) = Plog(\frac{P}{Q}) DKL(P∣∣Q)=Plog(QP)
表示的是什么。

  1. 相对熵物理意义:求 p 与 q 之间的对数差 l o g ( p / q ) log(p/q) log(p/q)在 p 上的期望值。
  2. 是一种相对熵:是P,Q的交叉熵 H ( P , Q ) = − ∑ p l o g ( q ) H(P, Q)=-\sum plog(q) H(P,Q)=plog(q)P自身的信息熵 H ( P ) = − ∑ p l o g ( p ) H(P) = -\sum plog(p) H(P)=plog(p)的差异
    1. H ( P , Q ) − H ( P ) = − ∑ p l o g ( q ) + ∑ p l o g ( p ) = ∑ p ( l o g ( p ) − l o g ( q ) ) = ∑ p l o g ( p q ) H(P, Q) - H(P) = -\sum plog(q) + \sum plog(p) = \sum p(log(p)-log(q)) = \sum plog(\frac{p}{q}) H(P,Q)H(P)=plog(q)+plog(p)=p(log(p)log(q))=plog(qp)
    2. 用分布p的最佳信息传递方式来传达分布p,比用分布p自己的最佳信息表达分布p,平均多耗费的信息长度
      1. 要传达的信息来自于分布 p
      2. 信息传递的方式由分布 q 决定的。

3.2 正向 D K L D_{KL} DKL和反向 D K L D_{KL} DKL

显然 D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q) \neq D_{KL}(Q||P) DKL(P∣∣Q)=DKL(Q∣∣P)

import numpy as npp = np.array([0.5, 0.3, 0.2]) # 本周访问调查喜欢
q = np.array([0.2, 0.2, 0.6]) # 预估一周后喜欢d_forward_kl = (p * np.log(p/q)).sum()
d_reverse_kl = (q * np.log(q/p)).sum()
print(d_forward_kl, d_reverse_kl)
# (0.3600624406359049, 0.39481620520440186)

正向 KL 散度(Forward KL)

即使 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 最小,用公式表示为:
q ⋆ = arg min ⁡ q D K L ( p ∣ ∣ q ) = arg min ⁡ q ∑ x p ( x ) l o g p ( x ) q ( x ) q^\star = \argmin_{q}D_{KL}(p||q) = \argmin_q \sum_x p(x)log\frac{p(x)}{q(x)} q=qargminDKL(p∣∣q)=qargminxp(x)logq(x)p(x)

正向KL散度, 是对数差在真实分布p上的期望。

  • p ( x ) = 0 p(x)=0 p(x)=0时,不论对数差是多少KL散度都是0
  • p ( x ) > 0 p(x)>0 p(x)>0时,对数差会对KL散度大小产生影响, 此时 q ( x ) q(x) q(x)作为分母,要尽量大一些,才能保证 KL 散度小
  • 即在 p ( x ) p(x) p(x) 大的地方,想让KL小, q ( x ) q(x) q(x) 也尽量大; 在 p ( x ) p(x) p(x) 小的地方, q ( x ) q(x) q(x) 对整体影响不大(因为 log 项本身分子很小,又乘了一个非常小的 p ( x ) p(x) p(x))

综合上述,想要使得正向 KL 散度(Forward KL)最小,则要求在p不为0的地方,q也尽量不为0,所以正向 KL 散度被称为是 zero avoiding。此时得到的分布 q 是一个比较 的分布。
更在意真实分布 p 中的常见事件

反向 KL 散度(Reverse KL)

即使 D K L ( Q ∣ ∣ P ) D_{KL}(Q||P) DKL(Q∣∣P) 最小,用公式表示为:
q ⋆ = arg min ⁡ q D K L ( q ∣ ∣ p ) = arg min ⁡ q ∑ x q ( x ) l o g q ( x ) p ( x ) q^\star = \argmin_{q}D_{KL}(q||p) = \argmin_q \sum_x q(x)log\frac{q(x)}{p(x)} q=qargminDKL(q∣∣p)=qargminxq(x)logp(x)q(x)

反向 KL散度, 是对数差在真实分布q上的期望。

  • q ( x ) = 0 q(x)=0 q(x)=0时,不论对数差是多少KL散度都是0, 即我们完全可以忽略 p ( x ) p(x) p(x)
  • p ( x ) > 0 p(x)>0 p(x)>0时,必须得保证 q ( x ) q(x) q(x) p ( x ) p(x) p(x) 小的地方也尽量小,才能使整体 KL 散度变小。

综合上述,想要使得反向 KL 散度(Reverse KL)最小, p ( x ) p(x) p(x)小的地方, 就需要 q ( x ) q(x) q(x)的值也尽量小;在 p ( x ) p(x) p(x)大的地方,可以适当的忽略。
换一种说法,则要求在 p 为 0 的地方,q 也尽量为 0,所以反向 KL 散度被称为是 zero forcing。此时得到的分布 q 是一个比较 的分布。
更在意真实分布 p 中的罕见事件

3.3 拟合test

Github: test KL Python

  • 反向 KL 散度(Reverse KL): D K L ( Q ∣ ∣ P ) D_{KL}(Q||P) DKL(Q∣∣P)更在意真实分布 p 中的罕见事件 (low p(x))
  • 正向 KL 散度(Forward KL): D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)更在意真实分布 p 中的常见事件 (high p(x))

在这里插入图片描述

http://www.xdnf.cn/news/559891.html

相关文章:

  • 【DeepSeek】为什么需要linux-header
  • arrow-0.1.0.jar 使用教程 - Java jar包运行方法 命令行启动步骤 常见问题解决
  • jvm对象压缩
  • Hellorobot 移动操作机器人开源实践:HPR 模型 + 全栈资源,降低家庭机器人开发门
  • 攻防世界 Web题--easytornado
  • 《C 语言 sizeof 与 strlen 深度对比:原理、差异与实战陷阱》
  • BigemapPro蒙版使用技巧:精准导出地图范围
  • Paillier加密方案的原理、实现与应用(vs)
  • Unity自定义shader打包SpriteAtlas图集问题
  • 101个α因子#7
  • 多角色对账效率低?易境通散货拼柜系统如何高效协同?
  • QT学习笔记---表格
  • CAP理论 ,了解一下什么是CAP理论
  • 绿盟防火墙6.0.5版本—接入网监平台
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·状态机模型
  • 环境配置!
  • vue3学习文档(开发文档)
  • HBCPC2025 补题 (F、I)
  • 算法打卡第二天
  • 进阶知识:自动化测试框架开发之无参的函数装饰器
  • 牛客网 NC14736 双拆分数字串 题解
  • MySQL的安装及相关操作
  • 150.WEB渗透测试-MySQL基础(五)
  • 张 推进对话式心理治疗:SOULSPEAK的聊天机器人
  • 多模态光学成像革命:OCT、荧光与共聚焦的跨尺度融合新范式
  • spark的缓存提升本质以及分区数量和task执行时间的先后
  • python学习day3
  • SpringSecurity基础入门
  • 深入解剖 G1 收集器的分区模型与调优策略
  • 8天Python从入门到精通【itheima】-20~22