Intro to Reinforcement Learning:Lecture 1
- 第一章的概览
-
- 课程介绍
-
- 课程的结构
- 推荐书目
- 学习的准备
- 什么是强化学习?
-
- 监督学习:图像分类
- 强化学习:玩Breakout游戏
- 强化学习与监督学习的不同之处
- 强化学习的特点
- 大事件:AlphaGo
- 强化学习的例子
- RL的例子:Pong
- 深度强化学习(深度学习+强化学习)
- 为什么现在RL成功了?
- 序列决策的介绍
-
- 智能体Agent和环境Environment
- 奖励Reward
- 序列决策
- RL Agent的主要元素
-
- Policy
- 价值函数
- 模型
- MDP马尔可夫决策过程
- 基于Agent学到的东西对RL的智能体进行分类
- 基于是否有模型进行分类
- 序列决策的两个基本问题
-
- 强化学习
- 探索与利用
- 强化学习的实验
-
- 编程
- OpenAI
- 一些材料
第一章的概览
课程介绍
课程的目标是使强化学习更加大众化,主要是起一个抛砖引玉的作用
1.开设这门课程的老师是来自香港中文大学的周博磊老师
这个是周老师的个人主页:http://bzhou.ie.cuhk.edu.hk/
2. PPT和资源已经上传到了github上
课程的结构
Lecture1:概览
Lecture2:MDP马尔可夫决策过程
Lecture3:Model-free无模型预测和控制
Lecture4:On-policy和Off-policy的学习
Lecture5:价值函数的近似
Lecture6:策略优化基础
Lecture7:策略优化前沿
Lecture8:Model-based RL
推荐书目
《Reinforcement Learning:An Introduction》 Sutton and Barton
学习的准备
1.有一些线性代数,概率统计和机器学习的相关知识背景
2.有编程的经验:Python,Pytorch
什么是强化学习?
强化学习是一种学习的计算方法:一个智能体在与一个复杂且不确定的环境Environment尝试最大化他接收到的奖励Reward的总和。----Sutton和Barto
监督学习:图像分类
监督学习图像分类中的数据主要是有标记的数据,而这些数据服从独立同分布(i.i.d)的假设
其中需要学习的网络知道训练集中真实的标签
强化学习:玩Breakout游戏
数据不满足独立同分布的假设
对于正确的动作没有立即的反馈和标签
强化学习与监督学习的不同之处
1.序列数据作为输入(不是i.i.d)
2.学习的网络没有被告诉正确的动作是什么,取而代之地是需要通过尝试不同的动作来发现哪个动作能得到最大的奖励。
3.是一种试错的探索Trial and error(需要在探索和利用之间平衡)
4.RL中没有监督信号,只有奖励的信号,并且这个奖励信号是延迟的。
强化学习的特点
1.试错的方式去探索
2.奖励是延迟的
3.数据是序列的
4.智能体的行为影响接下来的接受的数据(动作改变了环境)
大事件:AlphaGo
监督学习的上限是人类的表现
强化学习的上限又在哪里呢?
强化学习的例子
1.下国际象棋
2.小羚羊试图站立的过程
3.证券投资
4.玩Atari游戏
RL的例子:Pong
动作:上或者下
强化学习:采样动作(rollouts),直到游戏结束,然后惩罚每一个动作action
深度强化学习(深度学习+强化学习)
与传统的CV和深度CV类似
传统的方法需要人工设计的特征,而深度学习的方法可以端到端的训练,自动提取重要的特征用于训练
为什么现在RL成功了?
1.计算资源:许多GPU可以用于做试错的rollout
2.理论知识的累积,形成了简单而明了的规则
3.端到端的训练,特征和策略同时向目标进行优化
序列决策的介绍
智能体Agent和环境Environment
智能体学习着与环境进行交互
奖励Reward
1.奖励是一个标量的反馈信号
2.表示在第t步的行为有多好
3.强化学习基于最大化奖励
智能体左右的目标可以被描述为最大化累积奖励的期望
序列决策
智能体的目标是:选择一系列动作来最大化总的未来的奖励
动作可能有长期的影响
奖励可能是延迟的
及时奖励和长期奖励之间的权衡
历史History是序列的观察observations,actions,rewards
Ht=O1,R1,A1,...,At?1,Ot,RtH_t=O_1,R_1,A_1,...,A_{t-1},O_t,R_t Ht?=O1?,R1?,A1?,...,At?1?,Ot?,Rt?
- 接下来发生什么依赖于历史
- 状态State是用于决定接下来发生什么的函数
St=f(Ht)S_t =f(H_t) St?=f(Ht?)
环境状态和智能体状态
Ste=fe(Ht)Sta=fa(Ht)S^e_t= f^e(H_t) \quad S^a_t=f^a(H_t) Ste?=fe(Ht?)Sta?=fa(Ht?)
完全可观测:智能体直接观察到环境的状态,形式上为Maerkov decision process(MDP)
Ot=Ste=StaO_t=S^e_t=S^a_t Ot?=Ste?=Sta?
不完全可观:智能体间接地观察到环境,形式上为部分可观测MDP(POMDP)
例如black jack和atari游戏
RL Agent的主要元素
一个强化学习的智能体可能包含以下一个或多个元素:
1.策略Policy:智能体的行为函数
2.价值函数Value:评价每个状态或者动作有多好
3.模型Model:智能体对于缓解的状态表示
Policy
- 一个策略是智能体的行为模型
- 是一个从状态/观测到动作的映射函数
- 随机策略:概率采样π(a∣s)=P[At=a∣St=s]\pi(a|s)=P[A_t=a|S_t=s]π(a∣s)=P[At?=a∣St?=s]
- 确定策略:a?=argmaxaπ(a∣s)a^*=argmax_a\pi(a|s)a?=argmaxa?π(a∣s)
价值函数
- 价值函数:在一个特定的策略π\piπ下的未来折扣奖励的和的期望值
- 折扣因子权衡了及时奖励和未来奖励
- 用于衡量状态和动作的好坏
vπ(s)=Eπ[Gt∣St=s]=Eπ[∑k=0∞∣St=s],foralls∈Sv_\pi(s)=E_\pi[G_t|S_t=s]=E_\pi[\sum_{k=0}^{\infty}|S_t=s],for \quad all\quad s \in Svπ?(s)=Eπ?[Gt?∣St?=s]=Eπ?[k=0∑∞?∣St?=s],foralls∈S - Q函数(可被用于选择动作)
qπ(s,a)=Eπ[Gt∣St=s,At=a]=Eπ[∑k=0∞γkRt+k+1∣St=s,At=a]q_\pi(s,a)=E_\pi[G_t|S_t=s,A_t=a]=E_\pi[\sum_{k=0}^\infty\gamma^kR_{t+k+1}|S_t=s,A_t=a]qπ?(s,a)=Eπ?[Gt?∣St?=s,At?=a]=Eπ?[k=0∑∞?γkRt+k+1?∣St?=s,At?=a]
模型
- 一个模型预测环境接下来做什么
- 预测下一个状态state:Pss′a=P[St+1∣St=s,At=a]P^a_{ss'}=P[S_{t+1}|S_t=s,A_t=a]Pss′a?=P[St+1?∣St?=s,At?=a]
- 预测下一个奖励reward:Rsa=E[Rt+1∣St=s,At=a]R_s^a=E[R_{t+1}|S_t=s,A_t=a]Rsa?=E[Rt+1?∣St?=s,At?=a]
MDP马尔可夫决策过程
- MDP的定义
- PaP^aPa是对于每一个动作的动态/转换模型
P(St+1=s′∣St=s,At=a)P(S_{t+1}=s'|S_t=s,A_t=a) P(St+1?=s′∣St?=s,At?=a) - RRR是奖励函数
R(St=s,At=a)=E[Rt∣St=s,At=a]R(S_t=s,A_t=a)=E[R_t|S_t=s,A_t=a] R(St?=s,At?=a)=E[Rt?∣St?=s,At?=a] - 折扣因子γ∈[0,1]\gamma\in[0,1]γ∈[0,1]
基于Agent学到的东西对RL的智能体进行分类
- 基于价值的智能体Value-based:
– 显式的:价值函数
– 隐式的:策略(可以从价值函数得出策略) - 基于策略的智能体Policy-based:
– 显式的:策略
– 无价值函数 - Actor-Critic的智能体:
– 显式的:策略和价值函数
基于是否有模型进行分类
- Model-based
– 显式的:model模型
– 可能有也可能没有策略和价值函数 - Model-free
– 显式的:价值函数or/and策略函数
– 没有模型
这幅图是来自己David silver的PPT中
序列决策的两个基本问题
- 规划Planning
– 给出了关于环境如何运作的模型Model
– 机损如何动作在不需要外部交互的情况下最大化期望奖励 - 强化学习Reinforcement Learning
– Agent 不知道世界或者说模型是如何运作的
– 与环境进行不断地交互,隐式地去学习环境如何运作
– Agent改善自己的策略(同样包含了规划)
强化学习
- 没有关于环境的知识或者规则
- 通过采取动作进行学习,看看会发生什么
- 尽力找到能够得到高的奖励的策略policy
- 在推断或者前向传播时,规划是需要的
探索与利用
- 智能体只经历了那些尝试了动作后得到的经验
- RL的智能体如何平衡他的动作呢?
– 探索:尝试新的动作,可能帮助智能体在未来做出更好的决策
– 利用:根据已得到的经验,选择那些应该能够得到好的奖励的动作 - 通常会有一个探索-利用的权衡
– 可能不得不牺牲奖励来进行探索,进而学习潜在更好的策略
强化学习的实验
- **Getting hand dirty!**在强化学习中是非常重要的
- Deep learning和AI变得越来越经验化
- 使用试错的方式来学习强化学习
编程
- Python编程
- 深度学习库:Pytorch和Tensorflow
- RL例子
OpenAI
- https://openai.com/
- OpenAI是一个非盈利性AI研究公司,发现和制定通向安全通用人工智能的道路
- OpenAI的库:https://gym.openai.com/, https://github.com/openai/retro
一些材料
-
一篇很棒的博客来自Karpathy,http://karpathy.github.io/2016/05/31/rl/
-
熟悉openai gym的环境,并运行例子的代码:https://github.com/cuhkrlcourse/RLexample
-
Python教程:http://cs231n.github.io/python-numpy-tutorial/
-
Python Tutorial: https://pytorch.org/tutorials/beginner/deep learning 60min blitz.html
-
家庭作业,阅读Sutton and Barton:第一节和第三节