Formulation

Action-Environment-Reward

  • Agent 智能体:算法
  • Environment 环境:算法可交互
    • 交互过程:(S_t, R_t, A_t, S_t+1, R_t+1)
    • State 和 Agent 两种状态:离散,连续
    • State 可能不存在,比如 Multi-Bandit

实际场景

无人驾驶

  • State:传感器扫描得到的点云或视频
  • Action:油门(01)、刹车(01)、方向盘(X°)
  • Reward:行驶的距离(越远越好)

机器人

  • State:传感器
  • Action:不同的机器人不同
  • Reward:不同的任务不同

World of Bits

  • State:图片 + 解析后网页上的文本
  • Action:鼠标(点击区域)+键盘动作
  • Reward:是否完成目标(如订机票)

金融

  • State:如相关股票价格
  • Action:不动、买、卖
  • Reward:收益

OpenAI Gym

  • CartPole: 左右移动车子平衡车顶的杆子
  • Mountain car: 把小车从底端开到顶端
  • Pendulum: 左右用力让摆锤保持竖直
  • Humanoid: 一个将近 30 维度的类人机器人
  • Atari
In [1]:
import gym
env = gym.make('CartPole-v0')
for episode_i in range(20):
    # S_t
    observation = env.reset()
    for t in range(100):
        env.render()
        # π(S_t) -> A_t 
        # 随机选择,比如向左或向右
        action = env.action_space.sample()
        # s_t+1, R_t
        # done: True or False,是否已经结束
        observation, reward, done, info = env.step(action)
        if done:
            break
WARN: gym.spaces.Box autodetected dtype as <class 'numpy.float32'>. Please provide explicit dtype.
In [5]:
observation
Out[5]:
array([ 0.17392316,  0.96748011, -0.21042012, -1.64873077])
In [3]:
reward
Out[3]:
1.0
In [4]:
action
Out[4]:
0

Transition Probability

上面所有的环境都能用 Markov Decision Process 来描述。其中:

  • a∈A:所有 action 属于 Action space;
  • s∈S:所有 state 属于 State space;
  • r∈R:所有 reward 属于 Reward space。

MDP 的核心是一个概率函数,给定前一个 state 和智能体所采取的 action,这个函数描述了后一个 state 和 reward 组合的概率分布。在随机环境中,如果把所有未来可能的 state 和 reward 组合都考虑进去,其概率之和务必是 1(概率分布的定义)。

这个概率函数叫做 Transition Probability。它很精确地描述了下一步环境有可能产生的 state 或 reward,以及它们的相对不确定性。

Example:捡香蕉皮机器人

  • State:低电量、高电量
  • Action:
    • 低电量:wait search recharge
    • 高电量:wait search
  • Reward:
    • 低电量:search,β 的概率是低电量;1-β 的概率完全失去电量抛锚(这种情况很糟糕,要尽量避免,所以给一个很大的惩罚,注意下一个状态是满电量,因为被营救回去充满电)
    • 高电量:search,α 的概率是高电量;1-α 的概率成为低电量

search 和 wait 获得的奖励一定。

  • s: 目前的 state
  • a: action
  • s': 有可能产生的下一个 state
  • p(s'|s, a): 产生 s' 的概率
  • r(s, a, s'): 可能得到的 reward

其实是一种 Finite-state machine

有了 MDP 的 Transition Probability 之后,我们就可以回答各种各样的问题。比如,在 state s 下,做了某个 action a,那么它将平均获得多少奖励?

这个未来奖励的期望值,就是函数 r(s, a) 的值。从这个表格中,我们就可估算出这个值,为:∑_s' r(s,a,s')·p(s'|s,a),将所有下一步的可能情况求和。

Episode 与 Return

Episode

如果把人生看做一场强化学习 episode,那么 action 就是每天你做的每一件决策,environment 就是这个世界,reward(奖励)就是你的幸福指数,s_0 初始状态是出生那一刻,s_T 终止状态是离开世界的那一秒。

Return

未来 “一直到终止状态”,所有奖励的累计 (Reward 是下一步的奖励)

  • Episodic Task
    • Gt = R_{t+1} + R_{t+2} + ... + R_T
  • Continuing Task
    • 不存在终止状态
    • Gt = R_{t+1} + R_{t+2} + ... + R_∞
  • Discounting
    • G_t = R_{t+1} + γ·R_{t+2} + γ^2·R_{t+3} ...
    • G_t = Σ_{k=0→∞} r^k·R_{t+1+k}
    • 解决了 continuing task 不收敛的问题。
    • 鼓励智能体选择更接近眼前的奖励,同时,也不忘考虑长远的奖励。是 Exploration 和 Exploitation 的平衡。
  • Recurrence of Return
    • G_t = R_{t+1} + γ·G_{t+1}
In [ ]: