介绍强化学习(reinforcement learning)----一些基本概念

强化学习基本概念

机器学习可以分为三类,分别是 supervised learning,unsupervised learning 和reinforcement learning。而强化学习与其他机器学习不同之处为:

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

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

    reward

    reward通常都被记作RtRt,表示第t个time step的返回奖赏值。所有强化学习都是基于reward假设的。reward是一个scalar。

    action

    action是来自于动作空间,agent对每次所处的state用以及上一状态的reward确定当前要执行什么action。执行action要达到最大化期望reward,直到最终算法收敛,所得的policy就是一系列action的sequential data。

    state

    就是指当前agent所处的状态。具体来讲,例如玩pong游戏(Atari的游戏),这里写图片描述该游戏的状态就是当前time step下小球的位置。而Flappy bird状态就是当前小鸟在平面上的位置。这里写图片描述

    policy

    policy就是只agent的行为,是从state到action的映射,分为确定策略和与随机策略,确定策略就是某一状态下的确定动作a=π(s)a=π(s), 随机策略以概率来描述,即某一状态下执行这一动作的概率:π(a|s)=P[At=a|St=s]π(a|s)=P[At=a|St=s]

    value function

    因为强化学习今本上可以总结为通过最大化reward来得到一个最优策略。但是如果只是瞬时reward最大会导致每次都只会从动作空间选择reward最大的那个动作,这样就变成了最简单的贪心策略(Greedy policy),所以为了很好地刻画是包括未来的当前reward值最大(即使从当前时刻开始一直到状态达到目标的总reward最大)。因此就够早了值函数(value function)来描述这一变量。表达式如下: 
    这里写图片描述 
    γγ是折扣系数(取值在[0,1][0,1]),就是为了减少未来的reward对当前动作的影响。然后就通过选取合适的policy使value function最大,稍后会为大家推导著名的bellman方程,bellman方程才是强化学习各大算法(e.g. 值迭代,策略迭代,Q-learning)的源头。

    model

    model就是用来预测环境接下来会干什么,即在这一状态的情况下执行某一动作会达到什么样的状态,这一个动作会得到什么reward。所以描述一个模型就是用动作转移概率与动作状态reward。具体公式如下: 
    这里写图片描述

马尔可夫决策过程(MDP)

大家应该都很熟悉马尔科夫过程,其实就是状态以及某状态的转移,最重要的就是一步转移概率矩阵,只要有了这个一步转移概率矩阵就能刻画整个马尔科夫过程。 
这里写图片描述 
下面就来介绍一下马尔可夫决策过程(MDP)它主要由以下几个变量来刻画,状态空间SS(是一个有限集合),动作空间AA(一个有限动作集合),状态转移概率矩阵PP,奖赏函数RR 以及折扣因子γγγ[0,1]γ∈[0,1])。 
下面介绍一个MDP常用的用来刻画奖赏的函数。 
1.return GtGt 
t时刻之后未来执行一组action后能够获得的reward,即t+1,t+2…所有时刻的reward之和。(未来时刻的reward在当前时刻体现),后面的reward要乘以discountγγ 系数。表达式如下: 
这里写图片描述 
2.状态值函数v(s)v(s) 
定义为t时刻状态S能获得的return的期望,表达式如下: 
这里写图片描述 
3.动作值函数qπ(s,a)qπ(s,a) 
t时刻状态S下选择特定action后能获得的return的期望,表达式如下: 
这里写图片描述

下面来讲解一下最著名的bellman方程的推导,首先推导如何迭代值函数,即更新值函数: 
1.value function 

v(s)=E[Gt|St=s]=E[Rt+1+γ(Rt+2+γRt+3+...)|St=s]=E[Rt+1|St=s]+γE[Gt+1|St=s]=ERs+γGt+1P[Gt+1|St=s]=ERs+γGt+1sP[Gt+1|St+1=s,St=s]P[St+1=s|St=s]=ERs+γsSv(s)Pssv(s)=E[Gt|St=s]=E[Rt+1+γ(Rt+2+γRt+3+...)|St=s]=E[Rt+1|St=s]+γE[Gt+1|St=s]=ERs+γ∑Gt+1P[Gt+1|St=s]=ERs+γ∑Gt+1∑s′P[Gt+1|St+1=s′,St=s]∗P[St+1=s′|St=s]=ERs+γ∑s′∈Sv(s′)Pss′

2.Q-value function 
v(s)=E[Gt|St=s]=aAP[At=a|St=s]E[Gt|St=s,At=a]=π(a|s)qπ(s,a)qπ(s,a)=Ras+γE[Gt+1|St=s,At=a]=Ras+γsSE[Gt+1|St+1=s,St=s,At=a]P[St+1=s|St=s,At=a]=Ras+γsSPassE[Gt+1|St+1=s]=Ras+γsSPassvπ(s)∵v(s)=E[Gt|St=s]=∑a∈AP[At=a|St=s]∗E[Gt|St=s,At=a]=π(a|s)qπ(s,a)qπ(s,a)=Rsa+γE[Gt+1|St=s,At=a]=Rsa+γ∑s′∈SE[Gt+1|St+1=s′,St=s,At=a]P[St+1=s′|St=s,At=a]=Rsa+γ∑s′∈SPss′aE[Gt+1|St+1=s′]=Rsa+γ∑s′∈SPss′avπ(s′)

有1与2的推导就可以得到著名的bellman方程,强化学习的算法迭代都是基于此方程的。如下: 
这里写图片描述 
这里写图片描述 
这就是bellman方程,通常可以用一下方法求解bellman方程,如:值迭代、策略迭代、Q-learning、Sarsa等。

下面举一个例子:(状态图如下) 
这里写图片描述 
可通过bellman具体求得一个最佳策略。本人用matlab实现了以下,代码如下: 
主函数:

clear 
close all
clc

P = [0.9  0.1  0    0 0 0 0;
       0.5   0   0.5  0 0 0 0;
       0 0 0 0.8 0 0.2 0;
       0 0 0 0 0.6 0 0.4;
       0 0 0 0  0   1   0;
       0 0 0 0  0   1   0;
       0 0.2 0.4 0.4 0 0 0];
gamma = 1;
R = [-1 -2 -2 -2 10 0 1];

%% update iteration
maxiteration = 200;
V = zeros(size(P,2), maxiteration);
i = 1;
while i <= maxiteration
    v = zeros(size(P,1),1);
    for j = 1:7
        v(j) = bellman_equ(gamma,P(j,:),R(j),V(:,i));
    end
    V(:,i+1) = v;
    i = i+1;
end

plot(V'), title('MRP');
legend('Facebook','class1','class2','class3','pass','sleep','pub');
axis([0,210,-25,12])
grid on;

V(:,size(V,2))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

bellman equation:

function v = bellman_equ(gamma,P,R,v_old)
v = R + gamma*P*v_old;
end
  • 1
  • 2
  • 3

本次课程就更新到这里,希望能帮助到大家。

  • 31
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
"Python 强化学习项目 - 2018.pdf" 是一个介绍强化学习项目的文档,使用 Python 编程语言作为实现工具。强化学习是机器学习中的一个分支,主要是研究如何让智能体在与环境的交互中通过试错学习来获得最大的累积奖励。 该文档提供了一些基于 Python 的强化学习项目案例,目的是帮助读者理解和实践强化学习概念和应用。这些项目案例可能包括以下内容: 1. 强化学习算法实现:该文档可能介绍了一些常用的强化学习算法,如Q学习、深度 Q 网络(DQN)、策略梯度等,并提供了相应的Python代码实现。通过这些项目案例,读者可以学习到如何使用Python编程语言来实现这些算法。 2. 游戏或机器人控制案例:强化学习经常应用于游戏和机器人控制。该文档可能提供了一些使用强化学习算法来玩游戏或控制机器人的项目案例。通过这些案例,读者可以学习到如何通过强化学习的方法来训练一个智能体,在特定环境中掌握游戏规则或实现特定任务。 3. 实际应用案例:除了游戏和机器人控制,强化学习也被应用于其他领域,如金融、交通等。该文档可能提供了一些强化学习在实际应用中的项目案例,读者可以学习到如何将强化学习算法应用于解决实际问题。 总之,"Python 强化学习项目 - 2018.pdf" 是一个介绍强化学习项目的文档,通过提供具体的项目案例,帮助读者学习和实践强化学习算法在Python中的应用。这些项目案例可能涵盖了强化学习算法实现、游戏或机器人控制案例以及实际应用案例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值