基于动态规划的强化学习
一、两种人工智能任务类型
预测型任务
- 有监督学习
根据数据预测所需输出,即用一部分数据去预测另一部分的数据。 P ( y ∣ x ) P(y|x) P(y∣x) - 无监督学习
生成数据实例,即不严格区分数据的差异,两部分数据一起建模联合概率分布。 P ( x , y ) P(x,y) P(x,y)
无论是有监督学习还是无监督学习,本质上都是去预测数据的概率分布
决策型任务
- 强化学习
在动态环境中采取行动,通过从交互中学习来实现目标的计算方法,即序贯决策任务(Sequential Decision Making)。 - 强化学习的三个阶段
- 转变到新的状态
- 获得即时奖励
- 随着时间的推移最大化累积奖励
本质上就是在一个交互的过程中进行试错和学习
(Learning from interaction in a trial-and-error manner)
决策与预测的不同
- 决策下达到环境中,直接改变环境(未来发展随之改变)
以智慧医疗为例,决策亲自改变世界,医生或者AI直接给病人下达治疗方案。 - 预测仅产生信号,不考虑环境的改变(预测的信号是否用、怎么用,不需要考虑)
预测辅助别人改变世界,AI告诉医生病人可能的得病预测,医生综合各方面判断最后给病人下达治疗方案。
二、强化学习的基本概念
强化学习是机器通过与环境交互来实现目标的一种计算方法。
智能体有三种关键要素:感知、决策和奖励。
序贯决策(Sequential Decision Making)
决策者序贯地做出一个个决策,并接续看到新的观测,直到最终任务结束。
绝大多数序贯决策问题,可以用强化学习来解决
智能体(Agent)
强化学习用智能体(Agent)这个概念来表示做决策的机器。相比于有监督学习中的模型,强化学习中的智能体强调机器不但可以感知周围的环境信息,还可以通过决策来直接改变这个环境,而不只是给出一些预测信号。
观察(Observation)
智能体在某种程度上感知环境的状态,从而知道自己所处的现状。
决策(Policy)
智能体根据当前的状态计算出达到目标需要采取的动作的过程叫做决策。策略是智能体最终体现出的智能形式,是不同智能体之间的核心区别。
奖励(Reward)
环境根据状态和智能体采取的动作,产生一个标量信号作为奖励反馈。这个标量信号衡量智能体这一轮动作的好坏。最大化累积奖励是智能体提升策略的目标,也是衡量智能体策略好坏的关键指标。
强化学习的三个方面
- 感知
在某种程度上感知环境的状态 - 行动
可以采取行动来影响状态或者达到目标 - 目标
随着时间推移最大化累积奖励
三、强化学习交互过程
智能体
在每一步 t t t,智能体会经历以下过程:
- 获得观察 O t O_{t} Ot
- 获得奖励 R t R_{t} Rt
- 执行行动 A t A_{t} At
环境
而与之相对应的,环境也会发生变化:
- 获得行动 A t A_{t} At
- 给出观察 O t + 1 O_{t+1} Ot+1
- 给出奖励 R t + 1 R_{t+1} Rt+1
四、强化学习系统要素
历史(History)
历史(history)是观察、行动和奖励的序列
H
t
=
O
1
,
R
1
,
A
1
,
O
2
,
R
2
,
A
2
,
⋯
,
O
t
−
1
,
R
t
−
1
,
A
t
−
1
,
O
t
,
R
t
H_{t} = O_{1},R_{1},A_{1},O_{2},R_{2},A_{2},\cdots,O_{t-1},R_{t-1},A_{t-1},O_{t},R_{t}
Ht=O1,R1,A1,O2,R2,A2,⋯,Ot−1,Rt−1,At−1,Ot,Rt
- 即,一直到时间 t t t为止的所有可观测变量
- 根据这个历史可以决定接下来会发生什么
- 智能体选择行动
- 环境选择观察和奖励
状态(State)
状态(state)是一种用于确定接下来会发生的事情(行动、观察、奖励)的信息
- 状态是关于历史的函数
S t = f ( H t ) S_{t} = f(H_{t}) St=f(Ht)
策略(Policy)
策略(policy)是学习智能体在特定时间的行为方式
- 是从状态到行动的映射
- 确定性策略(Deterministic Policy)
a = π ( s ) a = \pi(s) a=π(s) - 随机策略(Stochastic Policy)
π ( a ∣ s ) = P ( A t = a ∣ S t = s ) \pi(a|s) = P(A_{t} = a | S_{t} = s) π(a∣s)=P(At=a∣St=s)
奖励(Reward) R ( s , a ) R(s,a) R(s,a)
- 一个定义强化学习目标的标量
- 能立即感知到什么是‘好’的
价值函数(Value Function)
- 状态价值是一个标量,用于定义对于长期来说什么是‘好’的
- 价值函数是对于未来累积奖励的预测
- 用于评估在给定的策略下,状态的好坏
v π ( s ) = E π [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ ∣ S t = s ] v_{\pi}(s) = \mathbb{E}_{\pi}[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3}+\cdots | S_{t} = s] vπ(s)=Eπ[Rt+1+γRt+2+γ2Rt+3+⋯∣St=s]
- 用于评估在给定的策略下,状态的好坏
环境模型(Model)
环境的模型(Model)用于模拟环境的行为
- 预测下一个状态
P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] \mathcal{P}^a_{ss'} = \mathbb{P}[S_{t+1} = s' | S_{t} = s,A_{t} = a] Pss′a=P[St+1=s′∣St=s,At=a] - 预测下一个(立即)奖励
R s a = E [ R t + 1 ∣ S t = s , A t = a ] \mathcal{R}^{a}_{s} = \mathbb{E}[R_{t+1}|S_t = s,A_{t} = a] Rsa=E[Rt+1∣St=s,At=a]
例子:迷宫
- 状态
智能体的位置 - 行动
N,E,S,W(分别向上下左右移动) - 状态转移
根据行动方向朝下一格移动(如果行动的方向是墙则不动)
奖励:每一步为-1
箭头表示每一个状态 s s s下的策略 π ( s ) \pi(s) π(s)
数字表示每一个状态 s s s下的状态价值 v π ( s ) v_{\pi}(s) vπ(s)
五、强化学习智能体分类
有无环境模型
- 基于模型(Model-based)
有环境模型或者可以建模环境模型,可以在环境模型下采样无数次或者利用模型的特征学习 - 模型无关(Model-free)
没有环境模型,环境是黑箱,我们只是通过和环境交互获得数据,从中学习
有无策略和价值函数
- 基于价值
有价值函数,没有显式策略,通过选择下一步能得到的最大价值得到策略
基于策略 - 基于策略
有显式策略,没有价值函数(可以反推) - Actor-Critic
既有策略(Actor),又有价值(Critic)
六、总结强化学习技术发展与落地挑战
强化学习做什么
- 序列型决策任务
- 让AI做完一切事情,而不仅仅是一个辅助的角色
强化学习的技术发展
- 2013年12月的NIPS workshop论文开启了深度强化学习时代
- 目前深度强化学习方法已经可以解决部分序列决策任务,但距离真正普及还有很长的路要走
强化学习的落地挑战
- 决策权力交给AI,人对AI有更高的要求
- 强化学习技术人才短缺,决策场景千变万化,并不统一
- 当前强化学习算法对数据和算力的极大需求
例子:Atari游戏
- 游戏规则未知
- 从交互游戏中进行学习
- 在操纵杆上选择行动并查看分数和像素画面
六、常见问题
基于价值函数的强化学习和基于策略函数的强化学习在使用时各有何优缺点?
- 强化学习一直以来就是Value-Based和Policy-Based两路方法。
- Value Based方法强调让机器知道什么state或者state-action pair是好的,什么是坏的。
例如Q-learning训练的优化目标就是最小化一个TD error。
这个优化目标很清晰,就是让当前Q函数估计更准。但是这个优化目标并不对应任何策略的目标。 - 我们强化学习的总目标是给出一个policy,使之能在环境里面很好的完成序列决策任务。
Policy based方法则正好直接朝着这么目标去优化策略的参数。 - 所以Berkeley和OpenAI的人(PPO和TRPO的作者)一般喜欢强调policy based方法更加直接在优化最终的目标。
当然,我们也要知道value based方法其实往往更方便学习,毕竟其优化目标就是一个TD error,相比policy based方法的目标要容易优化得多。 - 所以如果我们希望算法能尽快达到一个比较好的效果,可以直接用value based方法。而如果有足够的时间和算力去训练,那么推荐使用policy based方法。