# 强化学习

根据环境所提供的奖罚反馈来学习所处状态可施加的最佳行动,在 “探索(未知空间)- 利用(已有经验)(exploration vs. exploitation)” 之间寻找平衡,完成某个序列化任务,具备自我学习能力

  • 智能体(agent):智能体是强化学习算法的主体,它能够根据经验做出主观判断并执行动作,是整个智能系统的核心。
  • 环境(environment):智能体以外的一切统称为环境,环境在与智能体的交互中,能被智能体所采取的动作影响,同时环境也能向智能体反馈状态和奖励。虽说智能体以外的一切都可视为环境,但在设计算法时常常会排除不相关的因素建立一个理想的环境模型来对算法功能进行模拟。
  • 状态(state):状态可以理解为智能体对环境的一种理解和编码,通常包含了对智能体所采取决策产生影响的信息。
  • 动作(action):动作是智能体对环境产生影响的方式,这里说的动作常常指概念上的动作,如果是在设计机器人时还需考虑动作的执行机构。
  • 策略(policy):策略是智能体在所处状态下去执行某个动作的依据,即给定一个状态,智能体可根据一个策略来选择应该采取的动作。
  • 奖励(reward):奖励是智能体序贯式采取一系列动作后从环境获得的收益。注意奖励概念是现实中奖励和惩罚的统合,一般用正值来代表实际奖励,用负值来代表实际惩罚。

强化学习的特点

  • 基于评估:强化学习利用环境评估当前策略,以此为依据进行优化
  • 交互性:强化学习的数据在与环境的交互中产生
  • 序列决策过程:智能主体在与环境的交互中需要作出一系列的决策,这些决策往往是前后关联的

# 离散马尔可夫过程(Discrete Markov Process)

满足马尔可夫性的离散随机过程
用数学归纳法,推出 t+1 时刻状态仅与 t 时刻状态有关(一阶马尔可夫链)
强化学习是一种机器学习方法,通过与环境的交互来学习最优策略。下面我将通过具体的例子来解释这些公式和概念。

# 马尔可夫奖励过程

Gt=Rt+1+γRt+2+γ2Rt+3+G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \ldots

这个公式表示从时间步 t 开始的累积回报 GtG_t,其中 Rt+iR_{t+i} 是在时间步 t+it+i 获得的即时奖励,γ\gamma 是折扣因子(范围在 [0, 1] 之间),用于减少未来奖励对当前决策的影响。

例:假在一个迷宫中寻找宝藏,每走一步都有可能获得或失去一些分数(奖励)。如果你在第 1 步获得 10 分,在第 2 步获得 5 分,在第 3 步获得 2 分,且折扣因子 γ=0.9\gamma = 0.9,那么从第 0 步开始的累积回报 G0G_0 就是:

G0=10+0.9×5+0.92×2=10+4.5+1.62=16.12G_0 = 10 + 0.9 \times 5 + 0.9^2 \times 2 = 10 + 4.5 + 1.62 = 16.12

强化学习的求解方法:

  • 基于价值(1. 策略优化 2. 策略评估)
  • 基于策略
  • 基于模型

# 策略学习

价值函数 (value function):

Vπ(s)=Eπ[GtSt=s]V_\pi(s) = E_\pi[G_t | S_t = s]

在状态 s 下,按照策略 π\pi 行动后在未来所获得的回报的期望值。

动作 - 价值函数 (action-value function):

qπ(s,a)=Eπ[GtSt=s,At=a]q_\pi(s, a) = E_\pi[G_t | S_t = s, A_t = a]

在状态 s 下采取动作 a,按照策略 $\pi 行动后在未来获得的回报值。

例:继续迷宫的例子,假设在某个位置(状态 s 有两个选择:向左走(动作 a1a_1 或向右走(动作 a2a_2)。根据历史数据,向左走的平均回报是 8 分,向右走的平均回报是 12 分。那么在这个状态下,动作 - 价值函数 qπ(s,a1)=8q_\pi(s, a_1) = 8qπ(s,a2)=12q_\pi(s, a_2) = 12

# 贝尔曼方程

价值函数的贝尔曼方程:

Vπ(s)=aπ(s,a)qπ(s,a)V_\pi(s) = \sum_a \pi(s, a) q_\pi(s, a)

在状态 s 下,采取各个动作的概率加权平均的动作 - 价值函数。

动作 - 价值函数的贝尔曼方程:

qπ(s,a)=sP(ss,a)[R(s,a,s)+γVπ(s)]q_\pi(s, a) = \sum_{s'} P(s' | s, a) [R(s, a, s') + \gamma V_\pi(s')]

在状态 s 采取动作 a 的概率 *(采取 a 进入 s’得到的回报 + 处于 s’可以得到的回报)。

# 策略评估算法步骤

# 动态规划

  1. 初始化 VπV_\pi 函数:首先需要对所有状态 s 的价值函数 Vπ(s)V_\pi(s) 进行初始化,通常可以设置为 0 或者任意合理的初始值。
  2. 循环迭代:
    • 对于每一个状态 sSs \in S,根据当前的策略 π\pi 和已知的状态转移概率 Pr(ss,a)Pr(s'|s, a),以及即时奖励 R(s,a,s)R(s, a, s'),更新该状态的价值函数 Vπ(s)V_\pi(s)
    • 更新公式如下:

Vπ(s)aAπ(as)sSPr(ss,a)[R(s,a,s)+γVπ(s)]V_\pi(s) \leftarrow \sum_{a \in A} \pi(a|s) \sum_{s' \in S} Pr(s'|s, a) [R(s, a, s') + \gamma V_\pi(s')]

  1. 直到收敛:重复上述迭代过程,直到价值函数 Vπ(s)V_\pi(s) 在所有状态上都几乎不再发生变化,即达到收敛状态。这表明我们已经找到了在当前策略 π\pi 下各个状态的稳定价值。
    当前状态的价值是由后续状态的价值通过贝尔曼方程传播回来的

策略评估:动态规划、蒙特卡洛采样、时序差分

# 蒙特卡洛采样

通过随机采样来估计期望值

  1. 选择起始状态:从状态空间 S 中选择不同的起始状态。
  2. 按照当前策略采样轨迹:从每个起始状态出发,按照当前策略 π\pi 生成若干条完整的轨迹(episode)。这些轨迹构成了集合 D。
  3. 计算反馈:对于每条轨迹中的每个状态 s,记录该状态出现时对应的回报 GiG_i
  4. 平均回报:对所有轨迹中状态 s 出现时的回报进行平均,得到该状态的价值 Vπ(s)V_\pi(s)
    假设我们有 k 条轨迹,每条轨迹中状态 s 出现时对应的回报分别为G1,G2,,GkG_1, G_2, \ldots, G_k,那么该状态的价值 Vπ(s)V_\pi(s) 可以通过以下公式计算:

Vπ(s)=1ki=1kGiV_\pi(s) = \frac{1}{k} \sum_{i=1}^k G_i

# 时序差分 (TD)

时序差分算法通过在每个时间步 t 上更新状态价值函数 Vπ(st)V_\pi(s_t),而不是在每个状态 sts_t 上进行批量更新。

Vπ(s)Vπ(s)+α[R(s,a,s)+γVπ(s)Vπ(s)]V_\pi(s) \leftarrow V_\pi(s) + \alpha [R(s, a, s') + \gamma V_\pi(s') - V_\pi(s)]

其中:

  • α\alpha 是学习率,通常取较小的值,如 0.1。
  • R(s,a,s)R(s, a, s') 是即时奖励
  • Vπ(s)V_\pi(s') 是状态 ss' 的价值函数
  • γ\gamma 是折扣因子,通常取较小的值,如 0.9。

# Q-learning

# DQN

Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

NoResponse WeChat Pay

WeChat Pay

NoResponse Alipay

Alipay

NoResponse PayPal

PayPal