强化学习基础数学基础1

这篇笔记由李宏毅老师的强化学习公开课整理而来

强化学习的基本步骤:

  • Step 1:定义一个Neural Network作为一个Actor
  • Step 2:定义评估函数,有些评估函数可能也是一个策略网络
  • Step 3:选择或者训练出一个最佳的函数作为Actor和评估函数

强化的学习的Actor是一个Neural Network,把环境作为输入,输出的是当前环境下所有选择的概率值。

假设πθ(S)\pi_{\theta}(S)πθ​(S) 表示一个Actor,其中SSS是输入,即当前的环境,θ\thetaθ表示神经网络的参数。那么,从当前状态开始,每一次Actor都会采取一个行动aia_iai​,使得局面到达Si+1S_{i+1}Si+1​,同时获取的奖励是rir_iri​。

那么总的奖励:
(1)totalreward:Rθ=∑t=1Trttotal\ reward: \ R_{\theta}=\sum_{t=1}^{T}r_{t} \tag{1} total reward: Rθ​=t=1∑T​rt​(1)
注意,RθR_{\theta}Rθ​每次可能都是不同的,原因是:

  • 选择的过程本身就是随机的。因为Actor的输出是每个选择的一个概率
  • 游戏本身具有随机性,我们不知道环境可能会发生的变化

我们把一次完整的过程称为一个eposide

令符号
τ={s0,(s1,a1,r1),(s2,t2,r2),⋯ ,(st,at,rt)}\tau=\{s_0,(s_1,a_1,r_1),(s_2,t_2,r_2),\cdots,(s_t,a_t,r_t)\} τ={s0​,(s1​,a1​,r1​),(s2​,t2​,r2​),⋯,(st​,at​,rt​)}
表示一个完整的游戏过程。上述的意思是,从初始状态s0s_0s0​采取行动a1a_1a1​,然后到达状态s1s_1s1​,获得的奖励是r1r_1r1​,一次类推,直到最终状态sts_tst​。总的奖励就是累加,见公式(1)(1)(1)。

我们知道,从某个给定的局面开始到游戏结束,每次的游戏过程都基本都是不一样的,那么有某个游戏过程τ\tauτ, 则该过程出现的概率是P(τ∣θ)P(\tau | \theta)P(τ∣θ)。所以,如果输入一个局面SSS,它的期望获得的奖励是:
(2)Rˉθ=∑τR(τ)P(τ∣θ)≈1N∑i=1NR(τ(i))\bar{R}_{\theta} = \sum_{\tau}R(\tau)P(\tau|\theta)\approx\frac{1}{N}\sum_{i=1}^{N}R(\tau^{(i)}) \tag{2} Rˉθ​=τ∑​R(τ)P(τ∣θ)≈N1​i=1∑N​R(τ(i))(2)
其中NNN表示进行足够多的模拟次数。

因为上述公式中,一般来说,可以认为所有的游戏状态是无穷多个,只能通过足够多的模拟次数来近似求解。

通过Gradient Descent进行Actor的参数优化。优化的方式为:
θ∗=argmaxθRˉθ\theta^{*}=\mathop{argmax}\limits_{\theta}\bar{R}_{\theta} θ∗=θargmax​Rˉθ​
那么初始化随机所有的参数为θ(0)\theta^{(0)}θ(0),每次进行如下的迭代:
θ(i)=θ(i−1)+η∇Rˉθ(i−1)\theta^{(i)}=\theta^{(i-1)}+\eta \nabla \bar{R}_{\theta^{(i-1)}} θ(i)=θ(i−1)+η∇Rˉθ(i−1)​
其中,η\etaη是学习速率。对公式中的∇Rˉθ(i−1)\nabla \bar{R}_{\theta^{(i-1)}}∇Rˉθ(i−1)​进行展开,得到:
(3)∇Rˉθ=∇∑τR(τ)P(τ∣θ)=∑τR(τ)∇P(τ∣θ)\nabla \bar{R}_{\theta} =\nabla\sum_{\tau}R(\tau) P(\tau|\theta)=\sum_{\tau}R(\tau)\nabla P(\tau|\theta) \tag{3} ∇Rˉθ​=∇τ∑​R(τ)P(τ∣θ)=τ∑​R(τ)∇P(τ∣θ)(3)
注意,R(τ)R(\tau)R(τ)这个是固定的,与Actor的参数θ\thetaθ无关。

因为有
d(log⁡f(x))dx=1f(x)df(x)dx\frac{d(\log f(x))}{dx}=\frac{1}{f(x)}\frac{df(x)}{dx} dxd(logf(x))​=f(x)1​dxdf(x)​
那么,(3)(3)(3)公式可以写成
(4)∇Rˉθ=∑τR(τ)P(τ∣θ)∇P(τ∣θ)P(τ∣θ)=∑τR(τ)P(τ∣θ)∇log⁡P(τ∣θ)≈1N∑i=1NR(τ(i))∇log⁡P(τ(i)∣θ)\nabla{\bar{R}_{\theta}}=\sum_{\tau} R(\tau)P(\tau|\theta)\frac{\nabla P(\tau|\theta)}{P(\tau|\theta)} = \sum_{\tau}R(\tau)P(\tau|\theta)\nabla\log P(\tau|\theta) \approx\frac{1}{N}\sum_{i=1}^{N}R(\tau^{(i)})\nabla\log P(\tau^{(i)}|\theta) \tag{4} ∇Rˉθ​=τ∑​R(τ)P(τ∣θ)P(τ∣θ)∇P(τ∣θ)​=τ∑​R(τ)P(τ∣θ)∇logP(τ∣θ)≈N1​i=1∑N​R(τ(i))∇logP(τ(i)∣θ)(4)
在根据概率论的乘法公式和τ\tauτ过程的意义,又可以得出
P(τ∣θ)=P(s1)P(a1∣s1,θ)P(r1,s2∣s1,a1)P(a2∣s2,a1)P(r2,s3∣s2,a2)⋯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,a_1)P(r_2,s_3|s_2,a_2)\cdots P(τ∣θ)=P(s1​)P(a1​∣s1​,θ)P(r1​,s2​∣s1​,a1​)P(a2​∣s2​,a1​)P(r2​,s3​∣s2​,a2​)⋯
那么上式可以写成
(5)P(τ∣θ)=P(s1)∏t=1TP(at∣st,θ)P(rt,st+1∣st,at)P(\tau|\theta)=P(s_1)\prod_{t=1}^{T}P(a_t|s_t,\theta)P(r_t,s_{t+1}|s_{t},a_t) \tag{5} P(τ∣θ)=P(s1​)t=1∏T​P(at​∣st​,θ)P(rt​,st+1​∣st​,at​)(5)
符号说明:

  • P(at∣st,θ)P(a_t|s_t,\theta)P(at​∣st​,θ):在θ\thetaθ参数、sts_tst​环境下,采取ata_tat​的概率。这一点取决于Actor。
  • P(rt,st+1∣st,at)P(r_t, s_{t+1}|s_{t},a_t)P(rt​,st+1​∣st​,at​):sts_tst​环境下采取行动ata_tat​获得奖励rtr_trt​的条件下,到达环境st+1s_{t+1}st+1​的概率。这一点和Actor无关,只和环境有关系,所以对Actor参数θ\thetaθ 微分的时候结果是0 !!!

又因为
log⁡P(τ∣θ)=log⁡P(s1)+∑t=1T[log⁡P(at∣st,θ)+log⁡P(rt,st+1∣st,at)]\log P(\tau|\theta)=\log P(s_1)+\sum_{t=1}^{T}\left[\log P(a_t|s_t, \theta)+\log P(r_t,s_{t+1}|s_{t},a_t) \right] logP(τ∣θ)=logP(s1​)+t=1∑T​[logP(at​∣st​,θ)+logP(rt​,st+1​∣st​,at​)]
所以有
(6)∇log⁡P(τ∣θ)=∑t=1Tlog⁡P(at∣st,θ)\nabla \log{P(\tau|\theta)}=\sum_{t=1}^{T}\log{P(a_t|s_t,\theta)} \tag{6} ∇logP(τ∣θ)=t=1∑T​logP(at​∣st​,θ)(6)
结合公式(4)(4)(4)和(6)​(6)​(6)​,能推导出平均奖励的更新梯度公式:
(7)∇Rˉθ≈1N∑i=1NR(τ(i))∇log⁡P(τ(i)∣θ)=1N∑i=1N[R(τ(i))∑t=1Tlog⁡P(at(i)∣st(i),θ)]=1N∑i=1N∑t=1T[R(τ(i))log⁡P(at(i)∣st(i),θ)]\nabla\bar{R}_{\theta}\approx\frac{1}{N}\sum_{i=1}^{N}R(\tau^{(i)})\nabla \log{P(\tau^{(i)}|\theta)}\\=\frac{1}{N}\sum_{i=1}^{N}\left[R(\tau^{(i)})\sum_{t=1}^{T}\log{P(a_{t}^{(i)}|s_{t}^{(i)},\theta)} \right] \\=\frac{1}{N}\sum_{i=1}^{N}\sum_{t=1}^{T}\left[R(\tau^{(i)})\log{P(a_{t}^{(i)}|s_{t}^{(i)},\theta)} \right] \tag{7} ∇Rˉθ​≈N1​i=1∑N​R(τ(i))∇logP(τ(i)∣θ)=N1​i=1∑N​[R(τ(i))t=1∑T​logP(at(i)​∣st(i)​,θ)]=N1​i=1∑N​t=1∑T​[R(τ(i))logP(at(i)​∣st(i)​,θ)](7)
如果某个行动没有被模拟到,那么进行梯度更新的时候,这个行动在下次模拟过程中没有被sample的概率将减小。因为可以这么理解,所有可能行动的概率和是1,如果某些行动被模拟到了,说明概率比较高,梯度更新的时候,会增加它们的概率值,对于那些没有被模拟到的,概率将越来越小。修正方式也很容易,把奖励减去常数bbb即可,给出公式:
(8)∇Rˉθ=1N∑i=1N∑t=1T[(R(τ(i))−b)log⁡P(at(i)∣st(i),θ)]\nabla \bar{R}_{\theta}=\frac{1}{N}\sum_{i=1}^{N}\sum_{t=1}^{T}\left[\left(R(\tau^{(i)} )-b\right)\log{P(a_{t}^{(i)}|s_{t}^{(i)},\theta)} \right] \tag{8} ∇Rˉθ​=N1​i=1∑N​t=1∑T​[(R(τ(i))−b)logP(at(i)​∣st(i)​,θ)](8)

强化学习数学基础1---Policy Gradient相关推荐

  1. 强化学习系列之Policy Gradient算法

    一. 背景 1.1 基础组成部分 强化学习里面包含三个部件:Actor,environment,reward function Actor : 表示角色,是能够被玩家控制的. Policy of Ac ...

  2. 【强化学习】强化学习数学基础:基本概念

    强化学习数学基础:基本概念 初识强化学习 基本概念 `State`(状态)和`State Space`(状态空间) `Action`(动作)与`Action Space`(动作空间) `State t ...

  3. ChatGPT 使用 强化学习:Proximal Policy Optimization算法(详细图解)

    ChatGPT 使用 强化学习:Proximal Policy Optimization算法 强化学习中的PPO(Proximal Policy Optimization)算法是一种高效的策略优化方法 ...

  4. 【强化学习】强化学习数学基础:Actor-Critic方法

    Actor-Critic方法 1. The simplest actor-critic(QAC) 2. Advantage actor-critic(A2C) Baseline invariance ...

  5. 浅析强化学习及使用Policy Network实现自动化控制

    来源:极客头条 概要:强化学习已经有几十年的历史,但是直到最近几年深度学习技术的突破,强化学习才有了比较大的进展. 浅析强化学习 一个强化学习问题包含三个主要概念,即环境状态(Environment  ...

  6. 强化学习中on policy和off policy的区别-深度理解

    参考图书: Deep Reinforcement Learning Fundamentals, Research and Applications https://link.springer.com/ ...

  7. Lee Hung-yi强化学习 | (2) Proximal Policy Optimization算法(PPO)

    Lee Hung-yi强化学习专栏系列博客主要转载自CSDN博主 qqqeeevvv,原专栏地址 课程视频 课件地址 1. On-policy vs. Off-policy 所谓 on-policy ...

  8. (深入理解)强化学习中on policy和off policy的区别

    前言 这两个东西区别我个人感觉还挺玄学的.看到有很多说法,但是却感觉说的不是一个东西. 就比如有人总是喜欢把off policy分为行为策略和目标策略,说什么行为策略用来探索,目标策略用来学习.但是这 ...

  9. ADPRL - 近似动态规划和强化学习 - Note 4 - Policy Iteration Algorithms

    Note 4 - Policy Iteration Algorithms 4. Policy Iteration Algorithms 补充:范数的性质 4.1 贪婪诱导策略的特性 (Properti ...

最新文章

  1. Creating Apps With Material Design —— Defining Custom Animations
  2. Ubuntu上安装显卡驱动
  3. HTML中的meta(转载)
  4. struts 2 配置通配符
  5. idea查看一个类的所有子类_java new一个对象的过程中发生了什么
  6. python中scrapy是什么_python爬虫中scrapy组件有哪些?作用是什么?
  7. mysql 表 页 行_Mysql之InnoDB行格式、数据页结构
  8. WinForm的延时加载控件概述
  9. Nginx正确记录post日志的方法
  10. paip.dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结
  11. java lbp_LBP特征提取原理及代码实现
  12. 正确的配置Android开发环境-让你的C盘不在爆红
  13. 黑马点评项目-UV 统计
  14. teamviewer linux centos,teamviewer Linux centos7安装使用详细
  15. [运算放大器]佛朗哥笔记 - 电阻性反馈电路 - 电流泵与电流放大器
  16. QQ第三方登录(PC + 手机)
  17. js写可以暂停的电子时钟
  18. Sphinx全文索引搜索常见的一些错误处理收集
  19. tracking里面几种常见图的画法
  20. 同声传译系统matlab,知到网课答案英语基础口译课后作业答案

热门文章

  1. C# list删除 另外list里面的元素_[Python]列表(list)操作
  2. pytorch学习笔记(二十九):简洁实现循环神经网络
  3. 直方图中最大的矩形(单调栈2)
  4. 吝啬的国度(dfs)
  5. 《深度学习笔记》——线性代数基础
  6. C语言实现2048小游戏---粤嵌GE6818嵌入式系统实训
  7. 《Python数据分析》第二版.第三章.[学习笔记][Jupyter notebook]
  8. LLVM和clang
  9. webshell文件下载器
  10. Java中判断当前数据是否全为数字