理解强化学习_强化学习q函数理解 - CSDN
  • 强化学习概念理解

    2019-03-18 22:41:44
    强化学习是智能体(Agent)以“试错”的 方式进行学习,通过与环境进行交互获得的奖励指导行为,目标是使智能体获得最大的 奖励。 所谓强化学习,是指从环境状态到行为映 射的学习,以使系统行为从环境中获得的累积...

    一、基本理解

    • 强化学习是智能体(Agent)以“试错”的 方式进行学习,通过与环境进行交互获得的奖励指导行为,目标是使智能体获得最大的 奖励
    • 所谓强化学习,是指从环境状态到行为映 射的学习,以使系统行为从环境中获得的累积Reward(奖励值)最大。
    • 在强化学习中,算法来把外界环境转化为最大化奖励量的方式的动作,算法并没有 直接告诉Agent(行为主体)要做什么或者要采取哪个动作,而是Agent通过看哪个动作得到了最多的奖励来自己发现。
    • Agent的动作的影响不只是立即得到的奖励, 而且还影响接下来的动作和最终的奖励
      1、学习系统没有像很多其他形式的机器学习方法一样被告知应该做出什么行为
      2、必须在尝试之后才能发现哪些行为会导致奖励最大化
      3、当前的行为可能不仅仅会影响即时的奖励,还会影响下一步的奖励以及后续的所有奖励
      二、基本组成
      1、智能体(agent)
      2、状态(state)
      3、行为(action)
      4、奖励(reward)
      5、策略(policy)
      三、强化学习特点

    强化学习与其他机器学习不同之处为:
    ◼ 没有教师信号,也没有label,只有reward。
    ◼ 反馈有延时,不是能立即返回。
    ◼ 数据是序列化的,数据与数据之间是有关的,而不是i.i.d的;
    ◼ agent执行的动作会影响之后的数据。
    四、强化学习的关键要素
     强化学习的关键要素有:environment, reward,action 和 state。有了这些要素我们 就能建立一个强化学习模型。
     强化学习解决的问题是,针对一个具体问题 得到一个最优的policy(策略),使得在该 策略下获得的return(长期回报)最大。
     所谓的policy其实就是一系列action,也就是 sequential data。

    四、强化学习的模型:

    在这里插入图片描述
    Agent与环境的交互接口包括行动(Action)、即 时奖励(Reward)和状态(State)。

    在这里插入图片描述

    在这里插入图片描述
    五、奖励与动作

     reward
    ◼ reward通常都被记作Rt,表示第t个time step的返回奖励值。所有强化学习都是基于reward假设的。
    ◼ reward是一个标量。
    ◼ 注意:回报(return)是奖励(reward)的累积。
     action
    ◼ action是来自于动作空间,agent对每次所处的 state用以及上一状态的reward确定当前要执行什 么action。
    ◼ 执行action要达到最大化期望reward,直到最终 算法收敛,所得的policy就是一系列action的 sequential data。

    六、状态与策略
     state
    ◼ 就是指当前agent所处的状态。
     policy
    ◼ policy就是指agent在特定状态下的行为依据,是从state到action的映射。
    ◼ 分为确定策略和与随机策略。
    ◼ 确定策略:就是某一状态下的确定动作a=π(s)
    ◼ 随机策略:以概率来描述,即某一状态下执行 这一动作的概率:π(a|s)=P[At=a | St=s]。

    策略有两种
     把用来指导个体产生与环境进行实际交互行 为的策略称为:行为策略;
    ◼ 实际采样的策略
     把用来评价状态或行为价值的策略(或者待优化的策略)称为:目标策略

    强化学习的学习过程
     RL采用的是边获得样例边学习的方式
    ◼ 在获得样例之后更新自己的模型,
    ◼ 利用当前的模型来指导下一步的行动,
    ◼ 下一步的行动获得reward之后再更新模型, ◼ 不断迭代重复直到模型收敛。
     在这个过程中,非常重要的一点在于“在已 有当前模型的情况下,如果选择下一步的行 动才对完善当前的模型最有利”。

    展开全文
  • 强化学习的一点理解

    2018-11-09 00:27:14
    强化学习:和前面两类不同,强化学习适合做的是行为控制。其能够接触到的信息最少,甚至算法要通过和环境交互才能获得更多信息。 有监督学习是目前实用性最强的方法,但是无监督学习和强化学...

    提到强化学习原理就会提到一个四元组(状态,转移概率,动作,激励),这里要把这个四元组修改成(环境,激励,动作,状态)。假设我们是是一个程序精灵,当前处于某个状态,可以从多个候选动作里选择一个执行,还动作会导致两个结果
    1 环境会反馈一个激励,来描述动作的优劣
    2 动作执行影响精灵本身,让其进去另一个状态
    强化学习的目的就是让精灵在探索环境的过程中,逐渐领悟到隐藏在环境中的规律,使其可以在一系列动作中获得最大的正向激励。隐藏在环境中的规律往往是难以描述的,或者是因为数量巨大,或者是因为人们还没法明确理解,否则就可以用有监督学习或无监督学习求解了。比如无人驾驶ai所面对的环境想准确描述出来求解,何其困难?

    一个状态下可采取的行为往往不止一个,状态之间的转换也不是确定的,所以状态和行为,状态和状态之间是通过概率连接的。准确而言,激励是环境对(状态,动作)二元组的反馈,同一个动作在不同状态下会的到不同激励。

    环境通过激励间接引导精灵学习,这涉及两个关键问题
    1 初始化问题
    环境是虚无的,激励实际附着在动作之上。比如在无人驾驶中,是不存在一个高高在上的环境的,而是诸如"前方有行人->加速降获得负的激励,减速将获得正的激励"这样的激励定义。学习初始时,人们只能人为定义一些激励。比如游戏AI中,初始时很多行为的激励都是同一个常量,但诸如直接导致game over 的行为会被赋予很大的负激励,导致游戏通关的行为会被赋予很大正的正激励。
    2 激励的传播问题
    激励关联到了行为上,也就间接关联到状态上,因为状态的激励就是所有关联的行为的激励的期望值,所以状态连接拥有了激励值。强化学习的过程也是激励在状态之间传播的过程。比如一个走迷宫的游戏ai,面对一个二岔路口。左边走10步后就三面墙,是个死路。我们希望精灵在路口处就发现"向左走"这个行为对应的激励远远小于"向右走"的行为。初始化时,只会把左边10步之后所有行为的激励都设置成很大的负激励,但二岔路口处左右两个行为对应的激励是一样的。强化学习训练阶段存在一个探索的概念,训练阶段,允许精灵安一定概率随机选择行为和下一个状态。当精灵探索到三面墙的状态时,会得到激励,激励会影响到前一个状态中,导致精灵面对三面墙的行为。以此类推,初始化后的激励会随着学习的进度逐渐改变,测试阶段,每个状态对应行为所关联的激励已经不是仅仅反应局部地环境,而是全局的环境信息。这是简单的贪心策略也可以引导精灵走出迷宫。
    最后,如火如荼的深度学习为强化学习带来了什么呢?深度学习极大的增加了强化学习所能承受的状态数量和行为数量。考虑曾经火热的flappy bird 游戏,游戏状态包括小鸟的位置,速度和方向,管道的位置和速度,通道的位置,虽然用表格可以列举完,但也可以直接把游戏截图直接扔了进深度网络就可以了。

    展开全文
  • 一个简单的例子: ...其实,强化学习就是通过不断与环境交互,利用环境给出的奖惩来不断的改进策略(即在什么状态下采取什么动作),以求获得最大的累积奖惩。 在上述问题中,奖就是喝奶,惩就是打屁屁...

    一个简单的小例子:

    对于一个正在学走路的小屁孩,他一不小心摔倒了,如果他一摔倒就哭,那妈妈就会打他小屁屁,如果他摔倒了会自己爬起来,那妈妈很高兴,就奖励他喝一口奶。这样小屁孩就学会了摔倒了要自己爬起来,然后就可以喝很多很多奶。

    其实,强化学习就是通过不断与环境交互,利用环境给出的奖惩来不断的改进策略(即在什么状态下采取什么动作),以求获得最大的累积奖惩。

    在上述问题中,奖就是喝奶,惩就是打屁屁,在摔倒状态下,是选择哭还是爬起来,不同的动作会有不同的奖惩;初始的策略是哭和爬起来都有可能。但根据奖惩,小屁孩学到了摔倒之后爬起来是一个更好的策略,因此之后都会选择这个策略,这样就可以最大化累积奖惩—喝很多很多奶。

    强化学习和有监督学习的主要区别:

    1、有监督学习的训练样本是有标签的,强化学习的训练是没有标签的,它是通过环境给出的奖惩来学习

    2、有监督学习的学习过程是静态的,强化学习的学习过程是动态的。这里静态与动态的区别在于是否会与环境进行交互,有监督学习是给什么样本就学什么,而强化学习是要和环境进行交互,再通过环境给出的奖惩来学习

    3、有监督学习解决的更多是感知问题,尤其是深度学习,强化学习解决的主要是决策问题。因此有监督学习更像是五官,而强化学习更像大脑。

    强化学习的入门可以参考:强化学习如何入门

    展开全文
  • 强化学习 强化学习是代理面临的学习问题,它通过与动态环境反复交互试验从而学习到某种行为。...在理解强化学习之前,我们先了解我们要解决什么样的问题。其实强化学习过程就是优化马尔科夫决策过程...

    强化学习

    强化学习是代理面临的学习问题,它通过与动态环境反复交互试验从而学习到某种行为。它是机器学习的主要学习方法之一,智能体从环境到行为的学习,也就是如何在环境中采取一些列行为,才能使得回报信号函数的值最大,即获得的累积回报最大。

    现在强化学习与深度学习结合的深度强化学习更加强大。

    在这里插入图片描述

    马尔科夫决策过程

    在理解强化学习之前,我们先了解我们要解决什么样的问题。其实强化学习过程就是优化马尔科夫决策过程,它由一个数学模型组成,该模型在代理的控制下对随机结果进行决策。

    在这里插入图片描述

    代理可以执行某些动作,例如上下左右移动,这些动作可能会得到一个回报,回报可以是正数也可以是负数,它会导致总分数变动。同时动作可以改变环境并导致一个新的状态,然后代理可以执行另外一个动作。状态、动作和回报的集合、转换规则等,构成了马尔科夫决策过程。

    决策相关元素

    • 状态集合,所有可能状态。
    • 动作集合,所有动作,它能使某个状态转换为另一状态。
    • 状态转移概率,特定的状态下执行不同动作的概率分布。
    • 回报函数,从一个状态到另一个状态所得到的回报。
    • 折扣因子,用于决定未来回报的重要性。

    在这里插入图片描述

    强化学习训练主要就是计算各个状态下不同动作的回报,并非瞬间完成的,而是要经过大量尝试。下一个状态取决于当前状态和动作,并且状态不依赖于先前的状态,没有记忆,符合马尔可夫性。

    马尔科夫过程的优化

    强化学习是agent与环境之间的迭代交互,需要考虑几点:

    • 处于某种状态,决策者将在该状态下选择一个动作;
    • 能随机进入一个新状态并给决策者相应的回报作为响应;
    • 状态转移函数选择的动作将影响新状态的选择;

    Q学习

    Q学习即是学习不同状态下各个动作的质量,它定义为

    Qπ(s,a)=Eπ[CtSt=s,At=a]Q_\pi(s,a) = E_\pi[C_t|S_t=s,A_t=a]

    它同样可以变换成Bellman Equation形态,

    Qπ(s,a)=Eπ[Rt+1+γQπ(St+1,At+1)St=s,At=a]Q_\pi(s,a) = E_\pi[R_{t+1} +\gamma Q_\pi(S_{t+1},A_{t+1}) | S_t=s,A_t=a]

    最优动作价值函数,

    Q(s,a)=MaxπQπ(s,a)Q_*(s,a) = Max_\pi Q_\pi(s,a)

    Q(s,a)=Eπ[MaxRt+1+γMaxSt+1Qπ(St+1,At+1)St=s,At=a]Q_*(s,a) = E_\pi[MaxR_{t+1} +\gamma Max_{S_{t+1}} Q_\pi(S_{t+1},A_{t+1}) | S_t=s,A_t=a]

    可以看到最大化当前的动作价值函数就是最大化当前回报和下一时刻状态的最优动作价值函数。

    动作价值函数虽然能直接计算出Q值,但实际学习时并没有直接使用该Q值来更新,而是通过渐进的方式来更新。学习的方法可用如下伪代码说明,首先初始化Q学习的状态集和动作集组成的数组,然后观察初始状态,接着不断重复执行:选择一个动作,观察回报并转移到新状态,更新Q学习数组值,涉及迭代方式更新,由于我们不能知道下一刻状态的Q值,所以更新时用之前迭代的Q值来更新此次迭代的Q值,其中α表示学习率。

    initialize Q[numstates,numactions] arbitrarily
    observe initial state s
    repeat
        select and carry out an action a
        observe reward R and new state s'
        Q[s,a] = Q[s,a] + α(R + γmaxa'Q[s',a'] - Q[s,a])
        s = s'
    until terminated
    

    小游戏

    有个小游戏,如下图,进入入口后初始位置为A,阴影部分表示大炕,踩进去就没命了得重来,操作可以上下左右,最终走到H位置就算胜利。

    在这里插入图片描述

    实现Q学习

    先定义地图的大小,以及大坑的位置、入口和出口。

    ROWS = 5
    COLUMNS = 6
    ENTRANCE = (0, 0)
    EXIT = (4, 5)
    BARRIERS = list()
    BARRIERS.append((1, 1))
    BARRIERS.append((2, 1))
    BARRIERS.append((3, 1))
    BARRIERS.append((4, 1))
    BARRIERS.append((0, 3))
    BARRIERS.append((1, 3))
    BARRIERS.append((3, 3))
    BARRIERS.append((4, 3))
    BARRIERS.append((3, 4))
    BARRIERS.append((1, 5))
    

    定义Q学习的一些参数设置,TIMES为尝试次数,R为随机因子,ALPHA为学习率,GAMMA为折扣因子,q_values为q值表,results为最终结果。

    TIMES = 200
    R = 0.05
    ALPHA = 0.1
    GAMMA = 0.9
    q_values = dict()
    results = list()
    

    初始化q值表,按照行数列数和动作初始化所有q值。

    def init_q_values():
        for row in range(0, ROWS):
            for col in range(0, COLUMNS):
                state = State(row, col)
                for action in Actions:
                    q = (state.row, state.col, action)
                    q_values[q] = 0
    

    定义某个状态执行某个动作后得到的新状态,其中要考虑到地图的边缘。

    def move(curr_state, action):
        new_state = State(curr_state.row, curr_state.col)
        # check borders
        if action == Actions.up:
            if (new_state.row - 1) >= 0:
                new_state.row -= 1
        elif action == Actions.down:
            if (new_state.row + 1) <= (ROWS - 1):
                new_state.row += 1
        elif action == Actions.left:
            if (new_state.col - 1) >= 0:
                new_state.col -= 1
        elif action == Actions.right:
            if (new_state.col + 1) <= (COLUMNS - 1):
                new_state.col += 1
        return new_state
    

    定义每一步的探索方法,分别执行不同动作找到最优的动作,此外还需要有一定概率的随机动作选择。

    def explore(curr_state):
        rand = random.random()
        if rand <= R:
            return random.choice(list(Actions))
        else:
            best = list()
            best_action = Actions.up
            best_value = -10000000
            for action in Actions:
                q = (curr_state.row, curr_state.col, action)
                if q_values[q] > best_value:
                    best_action = action
                    best_value = q_values[q]
            best.append(best_action)
            # perhaps it has not only one best action
            for action in Actions:
                q = (curr_state.row, curr_state.col, action)
                if action != best_action:
                    if q_values[q] == best_value:
                        best.append(action)
            return random.choice(best)
    

    定义更新状态操作,一旦选出最优的动作后将进行状态的更新,也就是更新q值表,如果到达出口则回报为0,如果掉入大坑则回报为-100。

    def update(curr_state, last_action):
        q = (curr_state.row, curr_state.col, last_action)
        new_state = move(curr_state, last_action)
        position = (new_state.row, new_state.col)
        reward = -1
        if position == EXIT:
            reward = 0
        elif position in BARRIERS:
            reward = -100
        old_value = q_values[q]
        max_new = max([q_values[(new_state.row, new_state.col, a)] for a in Actions])
        q_values[q] = old_value + ALPHA * (reward + (GAMMA * max_new) - old_value)
        curr_state.row = new_state.row
        curr_state.col = new_state.col
    

    比如我们训练200次后,最终根据q值表就可以找到最佳的执行动作序列如下,说明经过这些动作操作后能成功到达出口。

    Actions.right
    Actions.right
    Actions.down
    Actions.down
    Actions.right
    Actions.right
    Actions.right
    Actions.down
    Actions.down
    Actions.down
    

    github

    https://github.com/sea-boat/MachineLearning_Lab

    欢迎关注:人工智能、读书与感想、聊聊数学、分布式、机器学习、深度学习、自然语言处理、算法与数据结构、Java深度、Tomcat内核等相关文章

    在这里插入图片描述

    展开全文
  • 强化学习-通俗理解

    2018-08-02 15:10:40
    最近在学习强化学习,看了一些文章和课程,总结如下。   强化学习的定义。  假定一个智能体(agent),在一个未知的环境中(当前状态state),采取了一个行动(action),然后收获了一个回报(return),并进入了下一个...

    最近在学习强化学习,看了一些文章和课程,总结如下。

     

    强化学习的定义。

            假定一个智能体(agent),在一个未知的环境中(当前状态state),采取了一个行动(action),然后收获了一个回报(return),并进入了下一个状态。最终目的是求解一个策略让 agent的回报最大化。

     

    强化学习求解算法,一般采用马尔可夫决策过程(MPD),定义如下。

     

     

    一个马尔可夫决策过程由一个四元组构成M = (S, A, Psa, R) 

    MDP 的动态过程如下:某个智能体(agent)的初始状态为s0,然后从 A 中挑选一个动作a0执行,执行后,agent 按Psa概率随机转移到了下一个s1状态,s1∈ Ps0a0。然后再执行一个动作a1,就转移到了s2,接下来再执行a2…,我们可以用下面的图表示状态转移的过程。

            

     

    MDP的解是一个策略(一个有时间先后的行动序列),当给定当前系统任意状态S时,系统采取最优策略A,然后获得最大回报。所以 MPD就是在寻找一个最优行动的序列。

     

    所以要寻找这样的一个策略,就需要由有一个策略评估评估函数。来评估一个行动和策略的期望回报。

     

    第一个式子说的是:

               对于策略π,和系统当前状态x0, T步累计奖赏=T步累计汇报和/T

               最终等于 在状态x下采用a的概率*再状态x下采用a转移到x'的概率*(转移到x'的回报 + v(T-1时刻))

               最终计算所有状态即可。

     

     

    具体的优化过程:

                选取一个策略,然后在沿着 回报最大化的方向改进。最后直到不能在进一步。

    展开全文
  • 强化学习 强化学习是代理面临的学习问题,它通过与动态环境反复交互试验从而学习到某种行为。...在理解强化学习之前,我们先了解我们要解决什么样的问题。其实强化学习过程就是优化马尔科夫决策过程...
  • 唯有全面了解强化学习的发展历史,才能够更为直观、深刻地理解强化学习所取得的成就和存在的不足,并厘清强化学习的未来发展趋势。除此之外,由于强化学习是机器学习的分支之一,也需要对强化学习在机器学习...
  • 强化学习大致理解

    2017-12-28 10:27:39
    强化学习是机器学习的一个重要分支,是多学科多领域交叉的一个产物,它的本质是解决 decision making 问题,即自动进行决策,并且可以做连续决策。 它主要包含四个元素,agent,环境状态,行动,奖励,强化学习的...
  • 强化学习(reinforcement learning)是一种介于监督学习和非监督学习之间的特殊任务。它并非像监督学习一样对于每一个数据都有着明确的标记信息,也不像无监督学习那样全无标记信息。强化学习有着相对稀疏的反馈标注...
  • 从事深度强化学习有一段时间了,整理了网上的一些资料,写几篇博客作为知识的梳理和总结。 开讲前,先给大家看个深度强化学习的例子,下面是深度学习cnn和强化学习结合玩吃豆人的游戏 看图像我们会发现吃豆人会...
  • 这是最近读sutton的“reinforcement learning - An introduction”的读书笔记,其实大多数更像是按照自己理解写的中文翻译,可能语言有时没有...第一章是概述,更多的是从宏观上讲强化学习的一些概念和思想,虽然...
  • 2.1、强化学习的基本框架2.2、强化学习系统的要素2.3、强化学习与监督学习的区别2.4、强化学习与非监督学习的区别三、强化学习实例3.1、训练Tic-Tac-Toe游戏玩家的强化学习理解3.2、训练Tic-Tac-Toe游戏玩家的python...
  • mark一下,很好的一篇文章,感谢作者分享。 http://baijiahao.baidu.com/s?id=1597978859962737001&amp;wfr=spider&amp;for=pc
  • 深度强化学习系列之一,深度强化学习概述
  • 深度强化学习剖析

    2018-08-12 17:05:58
    深度强化学习剖析 深度强化学习是深度学习与强化学习的结合,具体来说是结合了深度学习的结构和强化学习的思想: 也可以说是将深度学习的感知能力与强化学习的决策能力相结合,通过端对端的学习方式实现从原始...
  • 一文了解强化学习

    2017-06-16 11:50:47
    虽然是周末,也保持充电,今天来看看强化学习,不过不是要用它来玩游戏,而是觉得它在制造业,库存,电商,广告,推荐,金融,医疗等与我们生活息息相关的领域也有很好的应用,当然要了解一下了。本文结构: 定义 和...
  • 本文是强化学习的基础,主要参考 Divid Silver 教程,Reinforcement Learning:An Introduction,以及周志华的西瓜书。可能之前大家已经听过了强化学习的介绍,因此,我首先问几个问题:强化学习和MDP过程是一回事吗...
  • 强化学习入门总结

    2018-10-13 14:48:34
    一、强化学习概述 1.强化学习简介 2.发展历程: 3.MDP(马儿可夫决策过程) 4.why RL? 5.总结: 二、强化学习求解方法 1.动态规划方法 2.蒙特卡洛方法 3.时间差分方法 三、强化学习算法分类 1.分类一: ...
  • 强化学习直观理解

    2017-03-09 09:40:41
    将这篇文章里面比较好理解的概念抽象出来,能够对强化学习有一个直观的认识强化学习其实也是机器学习的一个分支,但是它与我们常见的机器学习(比如监督学习supervised learning)不太一样。它讲究在一系列的情景之下,...
1 2 3 4 5 ... 20
收藏数 41,023
精华内容 16,409
关键字:

理解强化学习