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

通过强化学习走直线理解基本概念

摘要: 一条线上包含起点和终点共有6个格子,起点在左终点在右。假设智能体已经学到了最优的策略,并且在每一步行动时,以 0.9 0.9 0.9 的概率选择最优策略(也就是往右),以 0.1 0.1 0.1 的概率选择随机策略。各个概念的定义见文末参考链接,本文举实际的数值例子帮助理解。

定义

  智能体要从最左边的第一个格子走到最右边的终点一次走一步。把6个格子分别记作状态 s 1 , s 2 , ⋯ , s 6 s_1,s_2,\cdots,s_6 s1,s2,,s6,动作有两种,分别记作 L L L R R R。如果不特别说明,一般随机变量为大写字母,具体数值为小写字母。 L L L R R R 表示动作,不是随机变量。

  • 策略函数 (Policy Function) π ( a ∣ s ) \pi(a|s) π(as):在一个状态 s i s_i si 处采取每个动作 a i a_i ai 的概率。简单记作 π ( L ∣ s ) = 0.1 , π ( R ∣ s ) = 0.9 \pi(L|s)=0.1,\pi(R|s)=0.9 π(Ls)=0.1,π(Rs)=0.9,严谨写法为
    { π ( A = L ∣ S = s i ) = 0.1 , π ( A = R ∣ S = s i ) = 0.9 , i ≠ 1 π ( A = L ∣ S = s i ) = 0 , π ( A = R ∣ S = s i ) = 1 , i = 1 \begin{cases} \pi(A=L|S=s_i)=0.1,\pi(A=R|S=s_i)=0.9, & i \neq 1 \\ \pi(A=L|S=s_i)=0,\pi(A=R|S=s_i)=1, & i = 1 \\ \end{cases} {π(A=LS=si)=0.1,π(A=RS=si)=0.9,π(A=LS=si)=0,π(A=RS=si)=1,i=1i=1
    如果在起点处往左走,环境给的反馈是智能体保持在起点不动。
      奖励 (Reward): 智能体在状态 s i s_i si 处采取动作 a i a_i ai 后,环境给的奖励 r ( s , a ) r(s,a) r(s,a) r ( s = s 5 , a = R ) = 6 r(s=s_5,a=R)=6 r(s=s5,a=R)=6(便于区分),其余的 r ( s , a ) r(s,a) r(s,a) 都是0。
      (折扣)回报(Return): 从第 t t t 个回合开始计算的每个回合奖励的总和
    U t = r t + γ r t + 1 + γ 2 r t + 2 + ⋯ U t = r t + γ U t + 1 \begin{aligned} & U_t=r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+\cdots \\ & U_t=r_t+\gamma U_{t+1} \end{aligned} Ut=rt+γrt+1+γ2rt+2+Ut=rt+γUt+1
    下面都能达到终点的的几个动作和对应的回报分别为
  • RRRRR: 0 + 0 γ + 0 γ 2 + 0 γ 3 + 6 γ 4 0+0\gamma+0\gamma^2+0\gamma^3+6\gamma^4 0+0γ+0γ2+0γ3+6γ4
  • RRRLRRR: 0 + 0 γ + 0 γ 2 + 0 γ 3 + + 0 γ 4 + 0 γ 5 + 6 γ 6 0+0\gamma+0\gamma^2+0\gamma^3++0\gamma^4+0\gamma^5+6\gamma^6 0+0γ+0γ2+0γ3++0γ4+0γ5+6γ6
  • RLRRRRLRR: 0 + 0 γ + 0 γ 2 + 0 γ 3 + + 0 γ 4 + 0 γ 5 + 0 γ 6 + + 0 γ 7 + 6 γ 8 0+0\gamma+0\gamma^2+0\gamma^3++0\gamma^4+0\gamma^5 +0\gamma^6++0\gamma^7+6\gamma^8 0+0γ+0γ2+0γ3++0γ4+0γ5+0γ6++0γ7+6γ8

  状态价值函数(State-Value Function): 在状态 s i s_i si 处,采用当前策略 π \pi π 时回报的期望。 V π ( s ) = E ( U t ∣ s = s i ) V_\pi(s)=\mathbb{E}(U_t|s=s_i) Vπ(s)=E(Uts=si)
  动作价值函数(Action-Value Function): 在状态 s i s_i si 处采取动作 a i a_i ai 后,继续保持当前的总体策略 π \pi π 时(也就是以 0.9 0.9 0.9 的概率选择最优策略),回报的期望。 Q π ( s , a ) = E ( U t ∣ s = s i , a = a i ) Q_\pi(s,a)=\mathbb{E}(U_t|s=s_i,a=a_i) Qπ(s,a)=E(Uts=si,a=ai)
  最优动作价值函数(Optimal Action-Value Function): 总是选择最优策略时回报的期望。 Q ∗ ( s , a ) = E ( U t ∣ s = s i , a = a i ) Q^*(s,a)=\mathbb{E}(U_t|s=s_i,a=a_i) Q(s,a)=E(Uts=si,a=ai)
  下面计算状态价值函数和最优动作价值函数。在这一个例子中,最优动作价值函数就是一直往右走,比较好计算。
Q ∗ ( s = s 1 , a = R ) = 6 γ 4 Q ∗ ( s = s 2 , a = R ) = 6 γ 3 ⋮ Q ∗ ( s = s 5 , a = R ) = 6 \begin{aligned} & Q^*(s=s_1,a=R)=6\gamma^4 \\ & Q^*(s=s_2,a=R)=6\gamma^3 \\ & \vdots \\ & Q^*(s=s_5,a=R)=6 \\ \end{aligned} Q(s=s1,a=R)=6γ4Q(s=s2,a=R)=6γ3Q(s=s5,a=R)=6
下面计算当前策略下每个状态的状态价值函数。这里用到了一个简单的公式
V π ( s ) = E ( U t ∣ s ) = E ( r t ∣ s ) + γ E ( U t + 1 ∣ s ) = r t ( s ) + γ V π ( s t + 1 ) V_\pi(s)=\mathbb{E}(U_t|s) =\mathbb{E}(r_t|s)+\gamma\mathbb{E}(U_{t+1}|s) =r_t(s)+\gamma V_\pi(s_{t+1}) Vπ(s)=E(Uts)=E(rts)+γE(Ut+1s)=rt(s)+γVπ(st+1)
其中 E ( r t ∣ s ) = r t ( s ) \mathbb{E}(r_t|s)=r_t(s) E(rts)=rt(s) 表示在状态 s s s 时的期望奖励, s t + 1 s_{t+1} st+1 表示 s s s 的下一个状态。在这个例子中,
E ( r t ∣ s ) = ∑ a P ( a ∣ s ) r ( s , a ) = 0.9 r ( s , R ) + 0.1 r ( s , L ) \mathbb{E}(r_t|s)=\sum_a\mathbb{P}(a|s)r(s,a) =0.9r(s,R)+0.1r(s,L) E(rts)=aP(as)r(s,a)=0.9r(s,R)+0.1r(s,L)
于是可以算出每个状态的期望奖励
r ( s 5 ) = 0.9 ⋅ 6 + 0.1 ⋅ 0 r ( s 4 ) = R ( s 3 ) = ( s 2 ) = R ( s 1 ) = 0 \begin{aligned} & r(s_5)=0.9\cdot 6+0.1\cdot 0 \\ & r(s_4)=R(s_3)=(s_2)=R(s_1)=0 \\ \end{aligned} r(s5)=0.96+0.10r(s4)=R(s3)=(s2)=R(s1)=0
此时每个状态的状态价值函数为 (已知 V π ( s 6 ) = 6 V_\pi(s_6)=6 Vπ(s6)=6
V π ( s 5 ) = r ( s 5 ) + γ ( 0.9 ⋅ 6 + 0.1 V π ( s 4 ) ) V π ( s 4 ) = r ( s 4 ) + γ ( 0.9 V π ( s 5 ) + 0.1 V π ( s 3 ) ) V π ( s 3 ) = r ( s 3 ) + γ ( 0.9 V π ( s 4 ) + 0.1 V π ( s 2 ) ) V π ( s 2 ) = r ( s 2 ) + γ ( 0.9 V π ( s 3 ) + 0.1 V π ( s 1 ) ) V π ( s 1 ) = r ( s 1 ) + γ ( 0.9 V π ( s 2 ) + 0.1 V π ( s 1 ) ) \begin{aligned} & V_\pi(s_5)=r(s_5)+\gamma(0.9\cdot 6+0.1V_\pi(s_4)) \\ & V_\pi(s_4)=r(s_4)+\gamma(0.9V_\pi(s_5) + 0.1V_\pi(s_3)) \\ & V_\pi(s_3)=r(s_3)+\gamma(0.9V_\pi(s_4) + 0.1V_\pi(s_2)) \\ & V_\pi(s_2)=r(s_2)+\gamma(0.9V_\pi(s_3) + 0.1V_\pi(s_1)) \\ & V_\pi(s_1)=r(s_1)+\gamma(0.9V_\pi(s_2) + 0.1V_\pi(s_1)) \\ \end{aligned} Vπ(s5)=r(s5)+γ(0.96+0.1Vπ(s4))Vπ(s4)=r(s4)+γ(0.9Vπ(s5)+0.1Vπ(s3))Vπ(s3)=r(s3)+γ(0.9Vπ(s4)+0.1Vπ(s2))Vπ(s2)=r(s2)+γ(0.9Vπ(s3)+0.1Vπ(s1))Vπ(s1)=r(s1)+γ(0.9Vπ(s2)+0.1Vπ(s1))
γ = 0.8 \gamma=0.8 γ=0.8,可以解得
V π ( s 5 ) = 4.602433406284881 V π ( s 4 ) = 3.5304175785610044 V π ( s 3 ) = 2.708319075448633 V π ( s 2 ) = 2.080230236058876 V π ( s 1 ) = 1.6280062716982504 \begin{aligned} & V_\pi(s_5)=4.602433406284881 \\ & V_\pi(s_4)=3.5304175785610044 \\ & V_\pi(s_3)=2.708319075448633 \\ & V_\pi(s_2)=2.080230236058876 \\ & V_\pi(s_1)=1.6280062716982504 \\ \end{aligned} Vπ(s5)=4.602433406284881Vπ(s4)=3.5304175785610044Vπ(s3)=2.708319075448633Vπ(s2)=2.080230236058876Vπ(s1)=1.6280062716982504
求解的python代码如下

import numpy as np
A = np.array([[0.0, 0.08, 0.0, 0.0, 0.0],[0.72, 0.0, 0.08, 0.0, 0.0],[0.0, 0.72, 0.0, 0.08, 0.0],[0.0, 0.0, 0.72, 0.0, 0.08],[0.0, 0.0, 0.0, 0.72, 0.08]])
B = np.eye(5) - A
C = np.array([4.32, 0, 0, 0, 0])
D = np.matmul(np.linalg.inv(B) , C.T)
for n in range(5):print(D[n])

动作价值函数可以采用类似的方法计算。

贝尔曼方程

参考

  1. 王树森 张志华,《深度强化学习(初稿)》
  2. Mathematical Foundation of Reinforcement Learning -GitHub
http://www.lryc.cn/news/89455.html

相关文章:

  • Java字符流
  • 2023年上半年信息系统项目管理师上午真题及答案解析
  • LeetCode 739 每日温度
  • 介绍几种常见的运维发布策略
  • C++ QT QDBus进阶用法。
  • 2023-5-26 LeetCode每日一题(二进制矩阵中的最短路径)
  • 博客系统后端设计(七) - 实现显示用户信息与注销功能
  • Spring5 学习笔记
  • leetcode--分隔链表(java)
  • 使用 AD8232 ECG 传感器和 ESP32 进行基于物联网的 ECG 监测
  • 【Linux初阶】基础IO - 文件操作(使用系统接口实现) | vim批量注释代码
  • 网络安全之信息收集
  • ModuleNotFoundError: No module named ‘_lzma‘
  • 标点符号相关的英语单词
  • MyBatis的部分知识点
  • PAT A1089 Insert or Merge
  • 研发工程师玩转Kubernetes——创建一个测试容器
  • FPGA - 7系列 FPGA内部结构之CLB -03- CLB相关原语以及应用
  • 什么是日志关联
  • 打家劫舍问题 Python题解
  • 【JavaSE】Java基础语法(十八):接口
  • SVD求解两组多维点之间的欧式变换矩阵,及halcon代码实现
  • 常用监控方案 Prometheus + Grafana 简单使用小结
  • 基于长短期神经网络LSTM的飞行轨迹跟踪预测,基于长短期神经网络LSTM的三维路径预测
  • 计算机组成原理-指令系统-指令格式及寻址方式
  • 【满分】【华为OD机试真题2023B卷 JAVAJS】经典屏保
  • Apache 网页与安全优化
  • Unity的IFilterBuildAssemblies:深入解析与实用案例
  • 分片架构,Redis Cluster 分析
  • Linux-0.11 文件系统bitmap.c详解