Reinforcement Learning 学习笔记 1

发布时间 2023-10-07 20:49:09作者: lif323

什么是强化学习(reinforcement learning)?

假设一个场景,一个智能体(agent) 和环境(env)交互,智能体基于当前环境\(S_t\)每产生一个动作\(A_t\),环境便给它一个反馈,也被称为奖励(reward)\(R_{t+1}\), 随后,智能体的状态变为\(S_{t+1}\). 这样生成了一系列状态 \(S_t, A_t, R_{t+1}, S_{t+1}, A_{t+1}, R_{t+2} ...\). 强化学习的目的就是学习到最优的策略(policy) \(\pi\) 使得累计奖励(cumulated reward)最大,也被称为(return)\(G_{t}\), 定义如下\(G_{t} = R_{t+1} + R_{t+2} + R_{t+3} + R_{t+4} + ...\)

两种学习方法

为了得到最优的学习策略,有两种策略:policy-based method 和 value-based method.

policy-based method 直接学习如何选择下一步。通常有两种方式。
(1) Deteministic: 每个状态都会执行相同的动作。

\[a = \pi(s) \]

(2) Stochastic: 仅输出下一步动作的概率分布。

\[\pi(a|s) = P(A|s) \]

Value-based method 学习state的value,然后执行动作到价值最优的state. 我们之后也主要关注该方法。这种方法有两种方式。
(1) state-value function: 输出每个状态的value.

\[%V_{\pi}(s) = \mathit {E}_{\pi} [R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ... | S_{t} =s ] V_{\pi}(s) = \mathit {E}_{\pi} [ G_{t}| S_{t} =s ] \]

(2) action-value function

\[Q_{\pi}(s, a) = \mathit {E}_{\pi} [ G_{t} | S_{t} = s, A_{t} = a] \]

Bellman Equation

如果每个\(S_{t}\) 或者\((S_{t}, A_{t})\)都计算他们的value,那么计算量将会非常大。这里他们采用了类似动态规划的思想来降低计算成本。在计算\(t\)时刻的value时,依赖之前对\(t+1\)时刻value的估计。

基于Bellman Equation, 计算方式简化如下:

\[V_{\pi}(s) = \mathit E_{\pi}[ R_{t+1} + \gamma * V_{\pi}(S_{t+1}) | S_{t} = s ] \]

\[Q_{\pi}(s, a) = \mathit {E}_{\pi} [ R_{t+1} + \gamma * \argmax_{A_{t+1}} Q_{\pi}(S_{t+1}, A_{t+1}) | S_{t} = s, A_{t} = a] \]

学习策略

如何更新参数呢? 这里也有两种方法,蒙特卡洛(Monte Carlo)和时序差分(Temporal Difference)。
蒙特卡洛方法在agent与环境交互完毕后,获得总的return \(G_t\)。使用\(G_t\)作为参数的更新目标,更新参数。更新方式如下:

\[V(S_{t}) \leftarrow V(S_{t}) + \alpha [ G_{t} - V(S_{t}) ] \]

时序差分方法在每次agent执行某个动作后,获取期望的return,它是当前的reward, \(R_{t+1}\) 和 下一状态的估计value \(\gamma * V(S_{t+1})\) 的sum, 更新方式如下:

\[V(S_{t}) \leftarrow V(S_{t}) + \alpha [ R_{t+1} + \gamma * V(S_{t+1}) - V(S_{t}) ] \]

\(Q(S_t, A_t)\) 的更新方式如下:

\[Q(S_{t}, A_{t}) \leftarrow Q(S_{t}, A_{t}) + \alpha [ R_{t+1} + \gamma * \max_{a} Q(S_{t+1}, a) - Q(S_{t}, A_{t}) ] \]

Q-learning algorithm

\(\epsilon\)-greedy 策略定义如下:

Off-policy vs. On-policy

(1) Off-policy: 在acting(inference) 和 update(training) 时,使用不同的policy.
例如在Q-learning 中:
Acting policy: 使用\(\epsilon\)-greedy 选择行动策略。
Updating policy: 使用最优的行动 \(\gamma * \max_{a}Q(S_{t+1}, a)\)

On-policy: 在acting(inference) 和 update(training) 时,使用相同的policy.

参考:

  1. https://huggingface.co/learn/deep-rl-course
  2. 李宏毅 机器学习 2021