IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 策略梯度法(policy gradient)的数学推导 -> 正文阅读

[人工智能]策略梯度法(policy gradient)的数学推导

本文通过整理李宏毅老师的2021年春季机器学习教程的内容,简要介绍深度强化学习(deep reinforcement learning)中策略梯度法的数学推导。

李宏毅老师课程的B站链接:
李宏毅, 2021年春季机器学习教程


设:
一次游戏的轨迹(trajectory): τ \tau τ
玩家(actor)策略(policy): θ \theta θ

则收益(reward)的期望值可通过 N 次采样(sampling)估算:
R ˉ θ = ∑ τ R ( τ ) P ( τ ∣ θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) \bar R_{\theta} = \sum_{\tau} R(\tau) P(\tau | \theta) \approx \frac{1}{N} \sum_{n=1}^{N} R(\tau^{n}) Rˉθ?=τ?R(τ)P(τθ)N1?n=1N?R(τn)

最优策略为:
θ ? = arg ? max ? θ R ˉ θ \theta^{*} = \arg \max_{\theta} \bar R_{\theta} θ?=argθmax?Rˉθ?

优化方法即为梯度上升法(gradient ascent)。
收益的梯度:
▽ R ˉ θ = ∑ τ R ( τ ) ▽ P ( τ ∣ θ ) = ∑ τ R ( τ ) P ( τ ∣ θ ) ▽ P ( τ ∣ θ ) P ( τ ∣ θ ) = ∑ τ R ( τ ) P ( τ ∣ θ ) ▽ ln ? P ( τ ∣ θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) ▽ ln ? P ( τ n ∣ θ ) \triangledown \bar R_{\theta} = \sum_{\tau} R(\tau) \triangledown P(\tau | \theta) = \sum_{\tau} R(\tau) P(\tau | \theta) \frac {\triangledown P(\tau | \theta)} {P(\tau | \theta)} = \sum_{\tau} R(\tau) P(\tau | \theta) \triangledown \ln P(\tau | \theta) \approx \frac{1}{N} \sum_{n=1}^{N} R(\tau^{n}) \triangledown \ln P(\tau^{n} | \theta) Rˉθ?=τ?R(τ)P(τθ)=τ?R(τ)P(τθ)P(τθ)P(τθ)?=τ?R(τ)P(τθ)lnP(τθ)N1?n=1N?R(τn)lnP(τnθ)

其中,取对数的操作原理:
d ln ? ( f ( x ) ) d x = 1 f ( x ) d f ( x ) d x \frac {d \ln (f(x))} {dx} = \frac{1}{f(x)} \frac{df(x)}{dx} dxdln(f(x))?=f(x)1?dxdf(x)?

由于轨迹在策略的条件发生的概率:
P ( τ ∣ θ ) = p ( s 1 ) p ( a 1 ∣ s 1 , θ ) p ( r 1 , s 2 ∣ s 1 , a 1 ) p ( a 2 ∣ s 2 , θ ) p ( r 2 , s 3 ∣ s 2 , a 2 ) ? = p ( s 1 ) ∏ t = 1 T p ( a t ∣ s t , θ ) p ( r t , s t + 1 ∣ s t , a t ) P(\tau | \theta) = p(s_1) p(a_1 | s_1, \theta) p(r_1, s_2 | s_1, a_1) p(a_2 | s_2, \theta) p(r_2, s_3 | s_2, a_2) \cdots = p(s_1) \prod_{t=1}^{T} p(a_t | s_t, \theta) p(r_t, s_{t+1} | s_t, a_t) P(τθ)=p(s1?)p(a1?s1?,θ)p(r1?,s2?s1?,a1?)p(a2?s2?,θ)p(r2?,s3?s2?,a2?)?=p(s1?)t=1T?p(at?st?,θ)p(rt?,st+1?st?,at?)

其中, s s s 为各时刻的游戏状态(state), a a a 为玩家的动作(action)。
只有 p ( a t ∣ s t , θ ) p(a_t | s_t, \theta) p(at?st?,θ) 部分与玩家的策略 θ \theta θ 有关,另外两项 p ( s 1 ) p(s_1) p(s1?) p ( r t , s t + 1 ∣ s t , a t ) p(r_t, s_{t+1} | s_t, a_t) p(rt?,st+1?st?,at?) 均与玩家策略无关。

因此对数项的梯度:
ln ? P ( τ ∣ θ ) = ln ? p ( s 1 ) + ∑ t = 1 T [ ln ? p ( a t ∣ s t , θ ) + ln ? p ( r t , s t + 1 ∣ s t , a t ) ] ▽ ln ? P ( τ ∣ θ ) = ∑ t = 1 T ▽ ln ? p ( a t ∣ s t , θ ) \ln P(\tau | \theta) = \ln p(s_1) + \sum_{t=1}^{T} [\ln p(a_t | s_t, \theta) + \ln p(r_t, s_{t+1} | s_t, a_t)] \\ \triangledown \ln P(\tau | \theta) = \sum_{t=1}^{T} \triangledown \ln p(a_t | s_t, \theta) lnP(τθ)=lnp(s1?)+t=1T?[lnp(at?st?,θ)+lnp(rt?,st+1?st?,at?)]lnP(τθ)=t=1T?lnp(at?st?,θ)

从而得出收益的梯度:
▽ R ˉ θ ≈ 1 N ∑ n = 1 N R ( τ n ) ▽ ln ? P ( τ n ∣ θ ) = 1 N ∑ n = 1 N R ( τ n ) ∑ t = 1 T n ▽ ln ? p ( a t n ∣ s t n , θ ) = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ▽ ln ? p ( a t n ∣ s t n , θ ) \triangledown \bar R_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} R(\tau^{n}) \triangledown \ln P(\tau^{n} | \theta) = \frac{1}{N} \sum_{n=1}^{N} R(\tau^{n}) \sum_{t=1}^{T_n} \triangledown \ln p(a^n_t | s^n_t, \theta) = \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_n} R(\tau^{n}) \triangledown \ln p(a^n_t | s^n_t, \theta) Rˉθ?N1?n=1N?R(τn)lnP(τnθ)=N1?n=1N?R(τn)t=1Tn??lnp(atn?stn?,θ)=N1?n=1N?t=1Tn??R(τn)lnp(atn?stn?,θ)

需要注意三点。

一,上式所乘的收益为全局收益,而非单步收益,否则无法学习到对后续时刻有益的动作。

二,取对数的原因:

由于取对数再求梯度相当于,对概率求梯度后除以概率本身:
▽ ln ? p ( a t n ∣ s t n , θ ) = ▽ p ( a t n ∣ s t n , θ ) p ( a t n ∣ s t n , θ ) \triangledown \ln p(a^n_t | s^n_t, \theta) = \frac {\triangledown p(a^n_t | s^n_t, \theta)} {p(a^n_t | s^n_t, \theta)} lnp(atn?stn?,θ)=p(atn?stn?,θ)p(atn?stn?,θ)?

而除以概率本身,可以防止某些收益不高的动作被采样多次,从而导致累积过多收益的结果:
去对数的原因

三,引入基线(baseline):

当游戏的收益恒非负时,为防止未被采样到的高收益动作的概率值降低,故加入基线:

引入基线的原因 1
引入基线的原因 2


  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:30:57  更:2022-01-17 11:31:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 21:45:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码