“价值不是由一次成功决定的,而是在长期的进取中体现”

上文介绍了描述能力更强的多臂赌博机模型,即通过多台机器的方式对环境变量建模,选择动作策略时考虑时序累积奖赏的影响。虽然多臂赌博机模型中引入了价值的概念,但方法在建模过程中本质上是以策略为优化目标,因此又常被归为基于策略的增强学习方法。

此外,增强学习方法还有基于价值以及基于模型两类主要方法。本文介绍第二类,先从描述价值目标的Q函数开始,它也常称之为Q-Learning方法。

最简单的Q函数可用“状态-动作”二维表(Q-Table)描述,其中行表示状态s,列表示动作a,矩阵中的值表示特定状态下执行某动作的回报值为r(s,a)。智能体Agent通过不断更新并查找该表,找到当前状态回报最高的动作执行。

为避免Q-Table陷入局部最优,即使得当前回报最高的结果能达到全局最优,需要通过训练获得累积回报,迭代更新Q-Table,使之能指导长期期望价值最大化的动作执行。

为便于计算,将Q-Table表示为Bellman递推等式,拆分为当前回报和未来最大回报的和,即Q(s,a)=r(s, a)+b(max(Q(s’,a’))),其中s’表示s状态在a行为作用下的下一状态,而a’为s’状态后所有可能的行为,b为价值累积过程中的打折系数,决定了未来回报相对于当前回报的重要程度。

同样的,也可使用神经网络对Q函数进行建模,其输入为Agent环境状态,输出为使价值最大化的Agent动作。训练过程中,初始Q(s,a)为0,训练中Agent每行动一次,通过Bellman等式计算Q’(s,a),优化目标是使得Agent根据Q函数执行动作能获得训练过程中的最大价值回报,即Q(s,a)与Q’(s,a)的差异最小。

例如,OpenAI gym的FrozenLake问题,假设人要穿过一个4x4方格的冰湖(从S到G),有冰的地方(F)可以行走,无冰的洞(H)会掉入湖中。使用增强学习建模,其状态空间为4x4的方格空间,动作为“上下左右”的移动,达到目标的回报价值为1,掉入洞中的回报价值为-1。

分别使用Q-Table和神经网络Q函数对FrozenLake问题进行建模求解,可以发现神经网络Q函数的学习方法,在同样实验迭代次数下可以探索出更多的“可行路径”。

对代码实现和实验效果感兴趣的朋友,可在数据小虾米公众号后台回复“代码”,获得源码地址。


数据科学武林风起云涌,
随数据小虾米共闯江湖~

增强学习 | Q-Learning的更多相关文章

  1. 增强学习(五)----- 时间差分学习(Q learning, Sarsa learning)

    接下来我们回顾一下动态规划算法(DP)和蒙特卡罗方法(MC)的特点,对于动态规划算法有如下特性: 需要环境模型,即状态转移概率\(P_{sa}\) 状态值函数的估计是自举的(bootstrapping ...

  2. 增强学习Reinforcement Learning经典算法梳理3:TD方法

    转自:http://blog.csdn.net/songrotek/article/details/51382759 博客地址:http://blog.csdn.net/songrotek/artic ...

  3. 增强学习(Reinforcement Learning and Control)

    增强学习(Reinforcement Learning and Control)  [pdf版本]增强学习.pdf 在之前的讨论中,我们总是给定一个样本x,然后给或者不给label y.之后对样本进行 ...

  4. 强化学习9-Deep Q Learning

    之前讲到Sarsa和Q Learning都不太适合解决大规模问题,为什么呢? 因为传统的强化学习都有一张Q表,这张Q表记录了每个状态下,每个动作的q值,但是现实问题往往极其复杂,其状态非常多,甚至是连 ...

  5. 深度增强学习--Deep Q Network

    从这里开始换个游戏演示,cartpole游戏 Deep Q Network 实例代码 import sys import gym import pylab import random import n ...

  6. 强化学习_Deep Q Learning(DQN)_代码解析

    Deep Q Learning 使用gym的CartPole作为环境,使用QDN解决离散动作空间的问题. 一.导入需要的包和定义超参数 import tensorflow as tf import n ...

  7. 马里奥AI实现方式探索 ——神经网络+增强学习

    [TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...

  8. 增强学习(三)----- MDP的动态规划解法

    上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...

  9. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  10. 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等) (转载)

    原文链接:http://blog.csdn.net/jinzhuojun/article/details/78508203 前段时间Nature上发表的升级版Alpha Go - AlphaGo Ze ...

随机推荐

  1. Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring

    IOC(Inverse of Control) 可翻译为“控制反转”,但大多数人都习惯将它称为“依赖注入”.在Spring中,通过IOC可以将实现类.参数信息等配置在其对应的配置文件中,那么当 需要更 ...

  2. 电商app开发新趋势!如何突显竞争力?

    2017年是电商变化最大的一年,同时,也是最多机遇的一年,更是电商最好的时代,如最近所看到的亚马逊的市值已经超过了美国8大零售商的总和,带领美国率先走向了新零售时代;马云也在做改变,试图与线下的大卖场 ...

  3. iOS-swift-基础篇1

    一.swift是啥?答:百度. 二.swift基础知识. 1.输出函数:print print("Hello, world!") 2.简单数据类型 变量声明:var 常量声明:le ...

  4. 前端设计技巧——用 Promise 处理交互和异步

    本文仅表达前端的一些设计技巧,如果您在查阅js技术,请忽略此文! 前端开发经常会遇到这样的场景: 当满足一定条件时,需要弹出一个模态框,以便接收用户的输入.然后根据不同的输入,进行不用的操作. (ps ...

  5. Git基础-打标签

    打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列出所有可用的标签,如何新建标签,以 ...

  6. bootstrapValidator 使用(包含入门demo,常用方法,以及常用的规则)

    一   什么是bootstrapValidator?    -- 一个基于 jquery,boostrap 的表单验证框架....简单实用上手快,页面美观还过得去,不废话了,直接撸. 二  boots ...

  7. nginx四层负载均衡配置

    nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 ...

  8. elememtui(有关权限的那些事)

    前言:关于权限路由的那些事儿…… 业务情景描述:现有一个后台管理系统,共存在三种类型的人员,①超级管理员(称作1):②组别管理员(2):③普通用户(3):每种类型的人看到的操作栏并不一样,可以进行的操 ...

  9. Unity3D常用 API 之实例化与销毁

    1.实例化游戏物体 1.1.游戏中的案例介绍 在很多 MMORPG 类的游戏中都有类似于“金钱副本”的副本关卡.在这类副 本中通常都是限定一个时间,在这个时间内玩家可以尽情的破坏,然后收集金钱. 分析 ...

  10. go 测试sort性能

    package main import "fmt" import "os" import "flag" import "bufio ...