强烈推荐:https://hrl.boyuai.com/
# 基本概念
RL, in a nutshell, is to “learn to make good sequences of decisions through trail-and-errors”
# 机器学习范式
强化学习是一种自动化目标导向的计算方法,与其他机器学习范式最大的区别在于:
- 交互:与环境之间存在交互,从环境中学习
- 决策序列:以前的决策会影响以后的决策,也就是学习的过程
- 探索:不断试错、探索的学习过程
# 强化学习算法构成
# 给定
# 三大集合
# 两大模型 (两大主角)
# 环境模型(optional)
述了环境的具体表现。在给定状态和动作情况下,模型可能会预测结果的下一个状态和下一个奖励
- 有环境模型:定义了环境模型
- 无环境模型:不定义环境模型,靠智能体感知实时状态来理解环境
# 主角模型(智能体)
概念来源于分布式人工智能思想。通常意义上,智能体是一个能够感知并施加某种作用到自身和环境、有生命周期的一个物理的或抽象的计算实体。智能体接受一个任务指令后,经过学习,可自主完成该任务
# 目标
智能体获取从任务开始到任务结束过程中每一步的最优动作
# 三大特征
强化学习的关键特征是长期目标优化,智能体关注整体学习问题,优化整个过程
大多强化学习算法的关键特征是值函数的使用
# 特有挑战
探索和开发 (exploration and exploitation):短期和长期目标的权衡
# 强化学习的问题建模
# 问题模型
# 状态空间
智能体所处的实际环境所有状态集合
# 当前状态
智能体感知到的环境当前所处的状态
# 动作策略
智能体在某时间的行为
# 奖励信号
智能体收到的关于动作效果的反馈
# 价值函数
奖励信号 只能说明 动作的即时效果,而 价值函数 则指明什么策略的 长期效果 是好还是差。
# 马尔科夫决策问题模型
# 马尔可夫奖励过程 (MRP)
马尔可夫奖励过程(Markov reward process)
# 动作序列集
动作序列集(Action Sequence Set)是指一组按特定顺序排列的动作序列。它通常用于描述某个系统、机器人或智能体在特定环境中的行为。动作序列集可以包含一系列离散的动作步骤,也可以包含连续的动作序列。
动作序列集可以被分为两类:
# 动作幕 (Episode)
一个完整的有起始终止状态的动作序列集(Episode,简称动作幕)
- 从标准起始态或从标准分布的初始态集合中抽取初始态开始
- 以终止态结束
- 不同动作序列集都可以认为是在同一个终止态结束,只是序列具体元素不同
# 简单收益
Return (aka cumulative future reward) ,未来的累积奖励,也就是简单收益
# 折扣回报
Discounted Return ,折扣回报,也就是引入了折扣因子的简单收益。
# 马尔科夫决策过程 (MDP)
马尔可夫决策过程(Markov decision process,MDP)
MDP 与 MRP 非常相像,主要区别为 MDP 中的状态转移函数和奖励函数都比 MRP 多了动作 a 作为自变量。
# 问题模型
MDP(马尔科夫决策过程)是一个描述智能体和环境交互的四元组 (S, A, 𝑅, 𝑝)
# 状态 - 奖励表
扫地机器人状态 - 奖励表
# 状态迁移图
扫地机器人状态迁移图
# 游戏轨迹
(state, action, reward) trajectory 游戏轨迹:
s1,a1,r1,s2,a2,r2,⋯sT,aT,rT
# 强化学习的值函数
# 基础概统知识
以下定义针对离散型随机变量:
# 概率
随机变量 A = a 发生的概率
p(A=a)
# 条件概率
在 C = c 条件下,A = a 的概率
p(A=a∣C=c)
智能体处于状态 s(S=s) 时,它的策略 π 执行动作 a(A=a) 的概率
π(a∣s)
# 期望
也称随机变量 𝑿 的期待值
E[X]=i∑xip(X=xi)
# 条件期望
Y=y 条件下,X 的期望
E[X∣Y=y]=i∑xip(X=xi∣Y=y)
# 简单值函数
直觉上看,为找到一个好的动作决策,需为每个动作赋值,只考虑了即时奖励,未考虑长期过程
有了值函数 q (a) ,决策问题即可转为优化问题求解,找最优动作:
aargmax q(a)
# 定义
q(a)=E[R∣A=a]∀a∈{1,...,k}=r∑p(r∣a)r
其中 p (r | a) 是在执行 a 动作情况下观察到智能体获得奖励 r 的概率;R 字母表示 Reward 奖励。
# 采样平均
除了按定义方法计算,还可以通过采样平均方法计算,即通过以往动作所获奖励情况来估算值函数
Q(a)=动作a的执行次数获得奖励的总和
具体计算公式为:
Q(a)=∑i=1n−11Ai=a∑i=1n−1Ri1Ai=a
其中 1Ai=a 表示 Ai=a 时取 1 ,否则取 0
# 问题
未考虑长期过程,实际并不采用
# 简单收益
# 简单收益的定义
G 字母表示 Gain 收益,也叫做回报 Return
Gt=Rt+1+Rt+2+Rt+3+...+RT
# 简单收益的期望
# 离散动作的简单收益
E[Gt]=E[Rt+1+Rt+2+Rt+3+...+RT]
# 连续动作的简单收益
E[Gt]=E[Rt+1+Rt+2+Rt+3+...]
# 存在问题
若奖励都是非负的,收益会不会是无穷大?
# 折扣目标收益
引入折扣因子 γ ,γ<1,得到折扣回报(Discounted Return):
Gt=Rt+1+γRt+2+γ2Rt+3+...+γk−1Rt+k+...=k=0∑∞γkRt+k+1
当 γ=0 时:
Gt=Rt+1+0Rt+2+02Rt+3+...+0k−1Rt+k+...=Rt+1
令 Rmax 为智能体所能获取的最大奖励,则:
Rt+k+1≤Rmax
Gt=k=0∑∞γkRt+k+1≤k=0∑∞γkRmax=Rmaxk=0∑∞γk=1−γRmax
# 目标收益的递归计算
定义 GT=0 , t≤T
Gt=Rt+1+γRt+2+γ2Rt+3+...+γk−1Rt+k+...=Rt+1+γ(Rt+2+γRt+3+...+γk−2Rt+k+...)=Rt+1+γGt+1
从而有:
Gt=Rt+1+γGt+1
特别地,t = T 时有 GT=0 ;t = T-1 时有 Gt−1=RT+γGT 。
# 标准状态值函数
一个状态在策略 𝝅 下的值函数,记作:vπ(s),是指该策略 𝝅 下,智能体在时间步 t 和所处状态 s 所能获得的奖励的期望值,即该值是从 s 开始,按照策略 𝝅 执行动作的预期收益
vπ(s)≐Eπ[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣St=s]
# 标准动作值函数
一个动作在某个策略下的值函数,记作:qπ(s,a) ,是指该策略 𝝅 下,智能体在时间步 t 和所处状态 s,执行动作 𝒂 所获得的奖励的期望值,即从 s 开始,按照策略 𝝅 执行动作 𝒂 ,能获得的预期收益
qπ(s,a)≐Eπ[Gt∣St=s,At=a]=Eπ[k=0∑∞γkRt+k+1∣St=s,At=a]
两种值函数的区别在于:
- 状态值函数相当于将当前状态 s 所有可能执行的动作都执行一遍,求奖励总和的期望
- 动作值函数相当于只求当前状态 s 下某一个动作 a 的奖励的期望
# V 值的递归计算 (贝尔曼方程)
由目标收益的递归计算可以得到 V 值的递归计算:
V(s)=R(s)+γ⋅s′∈S∑P(s′∣s)⋅V(s′)
其中:
- V(s) 是 s 状态的 V 值;
- R(s) 是 s 状态的奖励
- P(s′∣s) 是从 s 状态转变为到 s′ 的概率;
- γ 是折扣因子。
该式子也就是贝尔曼方程 (?)
# 从值函数计算最优策略
- 策略:在每一个状态下执行何种动作?
- 最优策略:能够最大化收益的动作执行决策
# 策略
# 确定性策略
在某一状态下智能体的策略采取动作 a 的概率是 100% ,即 π(s)=a
# 不确定性策略(随机策略)
也叫随机策略
π(a∣s) 是在状态 s 上采取的动作的概率分布,也可以表示某一状态 s
采取可能的行为 a
的概率,满足:
a∈A(s)∑π(a∣s)=1π(a∣s)≥0
# 值函数的应用
# 贝尔曼期望方程
贝尔曼方程 (Bellman Equation) 就是递归计算值函数得到的值函数的方程。
贝尔曼期望方程(Bellman Expectation Equation)是为了与接下来的贝尔曼最优方程进行区分
# 状态值函数
v 值
vπ(s)Eπ[Rt+1]γEπ[Gt+1∣St=s]vπ(s)≐Eπ[Gt∣St=s]=Eπ[Rt+1+γGt+1∣St=s]=Eπ[Rt+1]+γEπ[Gt+1∣St=s]=a∑π(a∣s)s′∑r∑p(s′,r∣s,a)[r]=a∑π(a∣s)s′∑r∑p(s′,r∣s,a)[γEπ[Gt+1∣St+1=s′]]=a∑π(a∣s)s′∑r∑p(s′,r∣s,a)[γvπ(s′)]=a∑π(a∣s)s′∑r∑p(s′,r∣s,a)[r+γvπ(s′)]
其中 St+1=s′
# 动作值函数
q 值
qπ(s,a)qπ(s,a)≐Eπ[Gt∣St=s,At=a]=s′∑r∑p(s′,r∣s,a)[r+γEπ[Gt+1∣St+1=s′]]=s′∑r∑p(s′,r∣s,a)[r+γa′∑π(a′∣s′)Eπ[Gt+1∣St+1=s′,At+1=a′]]=s′∑r∑p(s′,r∣s,a)[r+γa′∑π(a′∣s′)qπ(s′,a′)]
其中 St+1=s′,At+1=a′
# 最优策略的数学表达
∀s∈S:π1≥π2⇔vπ1(s)≥vπ2(s)
∀s∈S,∀a∈A:π1≥π2⇔qπ1(s,a)≥qπ2(s,a)
从而有:
vπ∗(s)≐Eπ∗[Gt∣St=s]=πmaxvπ(s),∀s∈S
qπ∗(s,a)=Eπ∗[Gt∣St=s,At=a]=πmaxqπ(s,a),∀s∈S,∀a∈A
∗ 表示最优的,这里 π∗ 表示最优策略
# 贝尔曼最优方程
用 v∗(s)=vπ∗(s)? 代替原来的 vπ(s) ,qπ∗(s,a) 代替原来的 qπ(s,a) ,那么原本的贝尔曼方程就变成贝尔曼最优方程,得到的表达式就是最优值函数。
参考:https://blog.csdn.net/november_chopin/article/details/106589197,有 demo 更方便掌握。
# 最优状态值函数
v∗(s)=a=π∗(s)∑π∗(a∣s)s′∑r∑p(s′,r∣s,a)[r+γv∗(s′)]=amaxs′∑r∑p(s′,r∣s,a)[r+γv∗(s′)]
# 最优状态值函数
qπ∗(s,a)=s′∑r∑p(s′,r∣s,a)[r+γa′=π∗(s′)∑π∗(a′∣s′)qπ∗(s′,a′)]=s′∑r∑p(s′,r∣s,a)[r+γa′maxqπ∗(s′,a′)]
# 两种最优值函数的关系
v∗(s)v∗(s)=amaxs′∑r∑p(s′,r∣s,a)[r+γv∗(s′)]=amaxEπ[Rt+1+γv∗(St+1)∣St=s,At=a]=amaxEπ∗[Rt+1+γGt+1∣St=s,At=a]=amaxEπ∗[Gt∣St=s,At=a]=a∈A(s)maxqπ∗(s,a)
# TDL
Temporal Difference Learning 差分学习
TD target :
yt=rt+γ⋅Q(st+1,at+1;w)=rt+γ⋅amaxQ(st+1,a;w)
损失函数:
L=21[Q(w)−y]2
梯度:
∂w∂L=[Q(w)−y]⋅∂w∂Q(w)
梯度下降计算:
wt+1=wt−α⋅∂w∂Lt∣w=wt
# 算法流程
- Observe state St=st and perform action At=at
- Predict the value: qt=Q(st,at;wt)
- Differentiate the value network: dt=∂w∂Q(st,at;w)∣w=wt;
- Environment provides new state st+1 and reward rt
- Compute TD target: yt=rt+γ⋅maxaQ(st+1,a;wt)
- Gradient descent: wt+1=wt−α⋅(qt−yt)⋅dt
# 值估计
# Sarsa
State-Action-Reward-State-Action (SARSA)
使用 (st,at,rt,at+1) 更新 Qπ。
# 表格
Tabular version
# 神经网络
Value network version
# Q-Learning
# 表格
Tabular version
# 神经网络
DQN version
# 策略