1.强化学习基础 - wolai 笔记

1.课程简介

周博磊《强化学习纲要》

2.强化学习介绍

2.1 简介

一个agent(智能体)在不确定的environment(环境)下怎样最大化它的reward(奖励),agent始终与environment在交互,agent采取action决策后,action会放入到环境中,环境接收到agentaction后,会进行下一步,输出下一个状态以及agent获取到的reward(奖励)。agent目的是尽可能多的从环境中获取到reward。

2.2 与监督学习的对比

(1)监督学习

图像识别
网络训练中,是已经把真实的label给了网络,假设网络给了错误的决策,就会告诉它你错了。 有两个假设:
  • data的数据是没有关联的
  • 我们告诉了learner正确的label

(2)强化学习

打砖块
  • 不会得到立刻的反馈
  • data之间是连续的。只有到最后游戏结束才有label,因此单个的action没有一个确切的label告诉你是否正确,存在奖励的延迟

(3)对比

  • 强化学习是序列数据,监督学习样本之间是独立的
  • learner并没有被告知正确的行为是什么,learner需要自己去发现哪些行为是可以得到最终的奖励的
  • 强化学习是要通过不断的试错来获得能力(Trial-and-error exploration),平衡exploration(探索)exploitation(利用) 的关系。
    • exploration(探索):通过尝试一些新的行为,这些行为可能让你获得更高的收益,也可能一无所有。
    • exploitation(利用) :采取已知的可以获得最大rewardaction,重复这个行为。
  • 没有一个监督者,只有奖励信号,且有延迟
  • 强化学习过程中时间很重要,因为data间是有时间关联的,而不是i.i.d分布的
  • 强化学习中agent的行为会影响他之后得到的数据,因此强化学习中很重要的是怎样使得agent的行为一直稳定的提升

3.序列决策过程

3.1 介绍

强化学习研究的过程是agent和环境的交互
Reward(奖励)
  • 标量反馈型号
  • 决定了agent的某一时刻t做的动作是否得到奖励
  • 强化学习的目的是极大化agent获得的reward
举例:
  • 下棋的结果,胜负
  • 股票,获得的收益或损失
  • Atari游戏,是否获得分数
序列决策过程:
  • 强化学习的目的是极大化agent获得的reward
  • action有长期的影响
  • reward有延迟
  • 近期奖励和远期奖励之间的trade-off
  • 可以把整个状态看成一个关于历史的函数 St=f(Ht)S_{t}=f\left(H_{t}\right)
  • agent内部,也有一个函数来更新状态。
  • Full observability:当agent状态与环境状态等价的时候,我们就说这个环境是Full observability(全部可以观测)
  • Partial observability: agent观测不能包含所有运作状态。(POMDP)

3.2 RL agent组成成分

  • 决策函数(Policy function) :agent用来选取下一步的动作
  • 价值函数(Value function):对当前状态进行估价,价值函数越大,说明你进入这个状态越有利
  • 模型(Model):agent对于状态的理解,决定了它认为世界是怎样构成的

(1)Policy

  • agent 行为,把输入的状态变成行为
  • Stochastic policyπ\pi函数)π(as)=P[At=aSt=s]\pi(a \mid s)=P\left[A_{t}=a \mid S_{t}=s\right],当你在状态s时,输出一个概率(所有行为的概率),然后进一步对概率分布进行采样,得到真实采取的行为。
  • Deterministic policy: a=argmaxaπ(as)a^{*}=\arg \max _{a} \pi(a \mid s),采取极大化,采取最有可能的概率,是事先决定好了的。

(2)Value Function

定义:一个折扣的未来奖励的加和,进行某一个行为未来将得到多大的奖励
折扣因子(Discount factor):由于我们希望尽可能在短的时间里面得到多的奖励,比如我们希望立刻得到一笔钱而不是以后。因此我们把折扣因子放入到价值函数中
价值函数的定义其实是一个期望,小标是π\pi函数,意味着在我们已知一个policy function的时候到底可以得到多少的奖励
vπ(s)Eπ[GtSt=s]=Eπ[k=0γkRt+k+1St=s],forallsS,v_{\pi}(s) \doteq \mathbb{E}_{\pi}\left[G_{t} \mid S_{t}=s\right]=\mathbb{E}_{\pi}\left[\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1} \mid S_{t}=s\right], for all s \in \mathcal{S},
Q-function:
qπ(s,a)Eπ[GtSt=s,At=a]=Eπ[k=0γkRt+k+1St=s,At=a]q_{\pi}(s, a) \doteq \mathbb{E}_{\pi}\left[G_{t} \mid S_{t}=s, A_{t}=a\right]=\mathbb{E}_{\pi}\left[\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1} \mid S_{t}=s, A_{t}=a\right]
s-状态,a-动作,Q函数是强化学习算法在学习的一个函数,是一个期望表示当前状态当前动作未来可以获得的奖励,得到Q函数后,进入某种状态的最优行为可以通过Q函数得到。

(3)Model

  • 模型决定了下一个状态是什么样的
  • 转移状态:状态是怎么转移的
Pssa=P[St+1=sSt=s,At=a]\mathcal{P}_{s s^{\prime}}^{a}=\mathbb{P}\left[S_{t+1}=s^{\prime} \mid S_{t}=s, A_{t}=a\right]
  • 奖励函数:当前状态采取某个行为可以得到多大的奖励
Rsa=E[Rt+1St=s,At=a]\mathcal{R}_{s}^{a}=\mathbb{E}\left[R_{t+1} \mid S_{t}=s, A_{t}=a\right]

3.3 马尔可夫决策过程(MDPs)

这个决策过程可视化了状态之间的转移,以及之间采取的行为

3.4 示例:走迷宫

采取policy-based RL : 知道每一个状态下最下的动作
采取Value-based RL : 利用价值函数来导向,每一个状态会返回一个价值,越接近终点值越大

3.5 分类

基于价值函数的(Value-based) agent
  • 简明学习:价值函数
  • 隐式学习:策略(从价值函数中推断出来的)
基于策略的(Policy-based) agent
  • 直接学习策略
  • 没有价值函数
Actor-Critic agent
  • 即学习了策略又学习了价值函数
Model-based
  • 通过学习了状态转移来采取措施
Model-free
  • 没有通过状态转移也没有学习价值函数
  • 没有模型

3.6 探索和利用

  • 强化学习是要通过不断的试错来获得能力(Trial-and-error exploration),平衡exploration(探索) 与 exploitation(利用) 的关系。
  • exploration(探索):通过尝试一些新的行为,这些行为可能让你获得更高的收益,也可能一无所有。
  • exploitation(利用) :采取已知的可以获得最大rewardaction,重复这个行为。

4.RL代码实现

4.1 Python coding

4.2 OpenAI

4.3 测试案例

pip install gym
pip install gym[atari]
Play with the environment
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample()) # take a random action
env.close()
Random play with CartPole-v0
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
env.close()




Comment