当前位置: 首页 > 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))

在这里插入图片描述

相关文章:

  • 波峰波谷策略
  • BACnet协议详解:架构、应用、挑战与未来发展
  • jsmpeg+java+ffmpeg 调用摄像头RTSP流播放
  • C++23 容器从其他兼容范围的可构造性与可赋值性 (P1206R7)
  • Semaphore解决高并发场景下的有限资源的并发访问问题
  • 深入解析前端 JSBridge:现代混合开发的通信基石与架构艺术
  • FreeSWITCH rtcp-mux 测试
  • 游戏引擎学习第297天:将实体分离到Z层中
  • “交互式“ PDF 与“静态“ PDF 表单的区别
  • OpenAI Codex 加入Agent编程工具新阵营
  • Nuxt.js一个基于 Vue.js 的通用应用框架
  • SSL证书:谷歌算法排名的安全基石与信任杠杆
  • (十三)深入了解AVFoundation-采集:视频帧采集与实时滤镜处理
  • Windows系统:处理文件夹拖动时的冲突与选择
  • [软件工程]第二章题目汇总
  • 基于线性回归的数据预测
  • Oracle RAC ADG备库版本降级方案(19.20 → 19.7)
  • Java 大视界——Java大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
  • C语言指针深入详解(五):回调函数、qsort函数
  • Windows平台多功能工具箱Moo0的技术实现分析
  • 中公教育:现阶段在全力解决学员退费问题,部分地区历史退费已逐步出清
  • 上海高桥镇10个重点项目集中签约,总投资近20亿元
  • 英国研究:近七成年轻人认为上网有害心理健康
  • 公示资费套餐、规范营销行为,今年信息通信行业将办好这十件实事
  • 一船明月过沧州:为何这座城敢称“文武双全”?
  • “AD365特应性皮炎疾病教育项目”启动,助力提升认知与规范诊疗