首页 AI学术青年与开发者社区

第2章 马尔科夫决策过程 02

课时5 马尔科夫奖赏过程

 

马尔科夫决策过程正式描述了强化学习的环境。

因此此环境是可以全部观察的

几乎所有的强化学习问题都可以提炼成一个MDP问题。

 

1、马尔可夫性

定义:状态St 是马尔科夫的,当且仅当满足

即t+1时刻的状态St+1的概率只与St有关,而与其他状态无关。

2、状态转移概率

矩阵形式

3、马尔科夫链(Markov chain)

马尔科夫链是一个无记忆的随机过程,即随机过程中的状态序列具有马尔可夫性。

定义:马尔科夫链表示为<S, P>,其中 S 是状态集,P是状态转移概率矩阵。

一般用状态转移图来表示。例如:

写成概率矩阵形式为:

 

4、奖赏过程

定义:<S, P, R, r>,其中S是状态集,P是状态转移概率矩阵,R是奖赏函数,r是折扣系数。

值函数(value function):值函数是未来奖赏值的预测,可以用来评估当前状态的好坏,agent可以根据此来选择要执行的动作。

值函数可以被分解为两个部分

后面的方程称为贝尔曼方程,是一个迭代的方程。

对这个推导的图解表示

计算实例:略。

 

5、贝尔曼方程

MRP矩阵形式:v = R + r P v,其中v是一个列向量

要解贝尔曼方程,只需要通过如下推导,就能得到等式,所以只需要求得相关转移概率的逆矩阵就可以求解贝尔曼方程:

p.s. :动态规划是解这个方程的一套方法。

 

[展开全文]

第 2 章 马尔科夫过程

课时6 马尔科夫决策过程

 

MDP模型的构建过程:要学会将一个问题转化成MDP问题,并用数学形式表示出来。

 

1、马尔科夫决策过程

 

定义:<S, P, A, R, r>

S是状态集

A是动作集

P是状态转移概率矩阵:

R是奖赏集合

r是折扣系数, r in [0, 1]

在这个模型中加入了动作,因此P的结构也发生了变化。

Note:以上,红色的是agent知道的信息,蓝色的是agent不知道的。要学习的正是 P;而奖赏 R 是环境反馈的。

 

2、案例:捡垃圾的机器人

 

状态 S ={ high, low}(高电量,低电量)

动作 A = {search, wait, charge}

 

[展开全文]

强化学习与其他机器学习不同之处为:

  1. 没有教师信号,也没有label。只有reward,其实reward就相当于label。
  2. 反馈有延时,不是能立即返回。
  3. 相当于输入数据是序列数据。
  4. agent执行的动作会影响之后的数据。

  5. 强化学习的关键要素有:environment,reward,action 和 state。有了这些要素我们就能建立一个强化学习模型。强化学习解决的问题是,针对一个具体问题得到一个最优的policy,使得在该策略下获得的reward最大。所谓的policy其实就是一系列action。也就是sequential data。 
    强化学习可用下图来刻画,都是要先从要完成的任务提取一个环境,从中抽象出状态(state) 、动作(action)、以及执行该动作所接受的瞬时奖赏(reward)。

[展开全文]

马尔科夫过程

马尔科夫过程Markov Process或者马尔科夫链是一个无记忆随机过程,是一些具有马尔科夫性质的随机状态序列构成,可以用一个元组 <S,P>表示,其中S是有限数量的状态集,P是状态转移概率矩阵。

马尔科夫奖赏过程定义

马尔科夫奖励过程Markov Reward Process是在马尔科夫过程的基础上增加了奖励R和衰减系数γ

-值函数是未来奖赏值 的预测,可以用来评估当前状态的好坏

-agent可以根据此来选择要执行的动作

 

贝尔曼期望方程Bellman Equation

状态值函数的引入解决了Return Gt路径有很多条,不容易优化的问题,将其转化为期望就变成固定标量了,很明显的转化。但是现在又出现另一个问题了,状态值函数也不好算,因为在计算某个状态时候需要使用到将来所有状态的Gt,这明显是不科学的。那么凭借大家学习算法思想,既然是状态更新,既然是马尔科夫的,很容易想到应用迭代思想求解,而贝尔曼期望方程就是一个迭代方程,目的是使得状态值函数容易求解。

[展开全文]

强化学习的关键要素主要有:环境(Environment)、激励(reward)、动作(action)和状态(state)。有了这些要素后,我们就可以建立一个强化学习模型。强化学习解决的问题是:针对一个具体问题得到一个最有的策略,使得在该策略下获得的激励最大。所谓的策略其实就是一系列的动作,也就是序列数据。

(策略是状态到动作的映射,分为确定策略与随机策略。确定策略就是某一状态下的确定动作,随机策略以概率来描述,即某一状态下执行某一动作的概率。)

强化学习可以用下图来刻画:都是要先从要完成的任务提取一个环境,从中抽象出状态、动作以及执行此动作所接受的瞬时激励。

强化学习与传统机器学习的不同之处

  • 训练数据没有类标,只有激励信息,本质上来说,激励信息也可以看作是一种类标。
  • 反馈可能有延时,无法立即返回
  • 输入数据是序列数据。
  • 智能体的动作会影响到后续的数据。

直观来看强化学习

  • 一些棋类运动,Alpha-Go、Alpha-Zero等
  • 波士顿机器人:一个综合智能体的机器人
  • 训练智能体玩游戏
需要先修的内容
  • 数学方面:概率、矩阵、优化
  • 开发方面:Python基础
  • 其他:机器学习与深度学习
强化学习的应用
  • 强化学习可适用于序列决策的任务,比如波士顿机器人在前进中的控制,围棋博弈的过程等。一般来说,只要能将一个问题简化成一个决策问题,基本上可以使用强化学习来解决此问题。
  • 在资源调度管理中,也可以使用强化学习算来进行动态分配。
  • 在智慧城市中也有应用,比如交通灯的控制问题:使用强化学习,通过智能体,根据实际情况动态的改变交通灯时长的控制。
  • 强化学习现在应用到了化学领域,比如:原料配比、催化剂的使用,温度的选择(是否需要加热等)。
  • 淘宝个性化推荐也用了强化学习:建立一个agent,对其设定一些条件,比如年龄,爱好倾向等,然后通过强化学习进行推荐,并根据数据来对推荐结果进行反馈。
 
[展开全文]
第三课 RL环境介绍与搭建
3.1 Python环境
sudo apt-get install python3.6
3.2 强化学习环境
Open AI GYM 环境的安装
//清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
//安装anaconda

cd downloads
bash anaconda3_4.3.0-linux-x86_64.sh
//创建虚拟环境
conda create --name gymlab python=3.5
//Open AI GYM 安装
source activate gymlab
sudo apt install git
git clone https://github.com/openai/gym.git
cd gym
pip install -e '.[all]'
pip install --upgrade setuptools
pip install numpy matplotlib
pip install opencv-python
//如果安装过程中有错误发生,一般是因为环境包没有安装成功,如
Failed building wheel for atari-py
Failed building wheel for Box2D-kengz
//解决办法
sudo apt-get install cmake
sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev
pip install -e '.[all]'

 

Open AI GYM 测试
环境测试代码
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample())
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);
		if done:
			print("Episode finished after {} timesteps".format(t+1))
			break

3.3 深度学习环境搭建

安装官网说明进行安装tensorflow

老师环境配置参考(Win10+CUDA9.0+CUDNN7.5+tensorflow1.9+GYM1.9 + Python3.6+jupyter-notebook)

CUDA+CUDNN(最先安装): https://www.cnblogs.com/tanwc/p/9375161.html

Tensorflow安装:https://www.cnblogs.com/tanwc/p/9375161.html

// 安装jupter notebook
python3 -m pip install --upgrade pip
python3 -m pip install jupyter

 

[展开全文]

强化学习的要素和概念

像婴儿学走路那样
根据正负反馈

不像监督学习有直接反馈,一般是持续数据
对每次行为打分,不告知标准答案,通过不停地试错过程使行为获得高分
通过interaction获得交互
Reward Rt 标量 表示第t个time step的奖赏值,强化学习基于reward假设的
Action 对每次state以及上一状态的reward确定要执行的action,最优策略要最大化reward,所得policy就是action的sequential data
state 当前agent所处的状态
Agent 执行动作的智能体
Environment 将agent当前状态作为输入,并将奖励和下一状态作为输出
Policy 根据当前状态确定下一个操作的策略
Value 长期的平均的总奖赏,相对于短期reward
Model 预测环境接下来会干什么

[展开全文]

马尔科夫决策过称正式描述强化学习的环境;因此此环境是可以全部观察的;几乎所有的强化学习问题都可以提炼成一个MDP问题

全部观察指环境的所有状态,所有reward集合我们都知道

马尔克夫性 P[St+1|St]=P[St+1|S1,...St]

下一时刻转移的状态之和前一时刻有关和之前的都没有关系

状态转移概率Pss' =P[St+1=s'|St=s]

类似于指数分布

P11指前一时刻状态为1的状态到下一时刻依然在1时刻的概率

Markov chain <S,P> S是状态集合P是状态转移概率矩阵

sleep是一个状态的终止,即进入该状态只会以1的概率待在这个状态,不会进入别的状态

 

状态转移概率矩阵特点 对于每一行 每一列求和都为1,

Markov reward process:<S,P,R,γ>

R是奖赏函数,伽马是折扣系数

Value function值函数是未来奖赏值得预测;可以用来评估当前状态的好坏;agent可以根据此来选择要执行的动作 Vπ(S)=Eπ[Gt|St=s] 当前状态return的期望

Vπ(S)=Eπ[Rt+γRt+1+...|St=s]=Eπ[Rt+γ[Rt+1+Rt+2+...]|St=s]=Eπ[Rt+1+γGt+1|St=s]=Eπ[Rt+1+γv(St+1)|St=s]  V(s)=Rs+γ∑Pss'V(s')(s'属于S)

收获是针对一个马尔可夫链中的某一个状态来说的

MRP矩阵形式 贝尔曼方程v=R+γPv

只需要求得相关转移的逆矩阵就可以求解贝尔曼方程

v=R+γPv; (1-γP)v=R; v=(1-γP)^(-1)R

RL实际问题中转移概率不知道

[展开全文]

21点

def generate_episode_from_limit_stochastic(bj_env):
    episode = []
    state = bj_env.reset()
    while True:
        probs = [0.8, 0.2] if state[0] > 18 else [0.2, 0.8]
        action = np.random.choice(np.arange(2), p=probs)
        next_state, reward, done, info = bj_env.step(action)
        episode.append((state, action, reward))
        state = next_state
        if done:
            break
    return episode

 

episode (state, action, reward)是list,每次得到的结果都放入该list

初始选择概率是0.8和0.2,当点数>18 以0.8停牌...

每次调用一个函数得到一个episode

 

计算折扣系数:

discounts = np.array([gamma**i for i in range(len(rewards)+1)])

 

采样episode:

episode = generate_episode(env)

 

增量均值公式:

returns_sum[state][actions[i]] += sum(rewards[i:]*discounts[:-(1+i)])
            N[state][actions[i]] += 1.0
            Q[state][actions[i]] = returns_sum[state][actions[i]] / N[state][actions[i]]

 

随着迭代次数增加,Q趋于平衡

[展开全文]

Sarsa算法

TD control : 类似于MC算法

同样属于model-free control 的方法

具体两种分类

On-policy learning:Sarsa

Off-policy learning:Q-learning

Sarsa算法:

先进行TD评估再进行TD预测

类似MC算法,评估时更新Q值Q-table 估计固定策略下的具体状态的Q值,使用下面的更新表达式

采用e-greedy策略进行预测

更新Q(S,A),选取最优策略,

e一开始=1

注意和MC的图解的差别,只需要一部分的状态对,

Sarsa(0)算法 TD(1) 迭代 更新S0 A0时候 只要R1 S1 A1只需要这段episode;每次状态只截取当前状态对和下一状态对,充分利用马尔克夫性

算法

初始化

选取A

repeat

选取动作 observe R,S'

Choose A'

Q(S,A)<-Q+α(R+γQ(S',A')-Q(S,A))

S<-S';A<-A'

until S is terminal

 

N-step Sarsa

td target换成Qn

 

Sarsa(λ) qt来源于采样,需要估计,所以是不准的,加上λn次方

eligibility traces

E0=0

Et=γλEt-1+l(St=s,At=a)

达到收敛或者达到某一终态

[展开全文]
PoleToWinF1 · 2019-06-29 · Sarsa算法 0

授课教师

暂无教师
微信扫码分享课程