增强学习是关于决策优化的科学,其背后正是生物趋利避害的本能。

大家都听过“熊瞎子掰苞米”的故事,“熊瞎子掰苞米”就是一个典型的决策过程。

因为胳肢窝只能夹一个苞米,所以对每个苞米,熊瞎子都要做一个决策——掰,还是不掰?这是个问题。

在俗话故事里,熊瞎子并不知道自己掰一个丢一个,所以他的决策就是“掰掰掰”(Buy, Buy, Buy),最后结果就是拿了一个很小的苞米,后悔地想要剁手。而聪明的智人却选择“只掰比自己胳肢窝里大的”,那么理想状况下,就是得到了最大的。

这里,熊瞎子或智人表示Agent,也就是决策过程里的行为主体。玉米地就是Environment,而现在胳肢窝里的苞米大小则是State,而眼前一个等待采摘的苞米,是熊瞎子对环境的Obervation。掰还是不掰?无论哪一种,都是对环境做出的Action。

当你走出玉米地时,最终拿到的苞米,才是自己的,这是你的Reward。“掰掰掰”,“只掰大的”或是“只掰贵的,不掰贵对的”——这些都是Policy。以上就是增强学习里的几个核心基本概念。

增强学习所解决的问题,介于“有监督”和“无监督”之间。决策是有目标的,或是“最大的苞米”,或是“赢下这盘棋”,这就与聚类任务不同。但是这个“目标”又不是固定明确的,最终获胜的棋路,就一定是最佳的吗?未必,不像图片分类或是价格预测,能评判个准确率。

如果要用知乎的方式来描述增强学习,应该是“如何评价”。比如一手“炮五平二”,是好是坏呢?不是立即就能得到反馈的,而可能是在终盘才能体现出来,这就是Reward的滞后性。

一个例子来简单应用:

Game的规则是这样的,一个4x4的方格代表迷宫。你是夺宝奇兵、摸金校尉、古墓丽影,从左上角出发,直到右下角挖宝。但是这个迷宫里面不太平,有很多陷阱,踩上就是一个“大侠请重新来过”。

这里的方格,就是Environment。虽然对于电脑前的我们,似乎很容易,但是对Agent来说,他尚且对力量一无所知的。不过,只要Agent知道生命的可贵(Reward),就可以训练出一个Policy。

游戏的目的是让分数最大化,比如踩到陷阱了,-10。拿到宝贝了,+10。同样是最终拿到了宝贝,我们希望的是最短路径,那么如果走了多余的路,就要 -1。

Q-Learning的目的就是学习特定State下、特定Action的价值。Q并不是某个本质骑士取的字母,而是表示Quality。

Q-Learning的方法是建立一个表,以state为行、action为列。迷宫共有16个格,每个格子都有5个方向,所以Q-table就是16x5的一个表,对应总共80种可能的决策。

首先以0填充Q-table进行初始化,然后观察每一个决策带来的回馈,再更新Q-table。更新的依据是Bellman Equation:

s: 当前状态state
a: 从当前状态下,采取的行动action
s': 今次行动所产生的新一轮state
a': 次回action
r: 本次行动的奖励reward
\gamma : 折扣因数,表示牺牲当前收益,换区长远收益的程度。
那么最关键的问题是:如何计算Q?

Agent所做的每一轮决策(即一盘游戏),称为一个episode,跟美剧里的“集”单位一样。每一次行动,都会更新Q-table。为了简化过程方便理解,我们换一个更小的迷宫:

初始Q-table如下(行:state,列:action):


UDLR——上下左右;N——静静地看着你。

相应的Q-table如下(E表示不可能的行动):

但是这个Q-table是我们希望得出或逼近的,在游戏开始时,Agent所知的Q-table还是一个全0的矩阵。

算法的基本流程:
初始化Q-table矩阵
选择起始state
选择当前state(s)下的一个可能action(a)
换移到下一个state(s')
重复第3步
使用Bellman Equation,更新Q-table
将下一个state作为当前state
如此迭代三十年,直到大厦崩塌
比如,从state-1开始,可能的action有D, R, N。

然后我们选择了D,到了state-3,这个state踩中了陷阱,所以-10。

在state-3又有三种可能的action:U, R, N。 又因为此时Q-table还没有经过更新,所以当然就是0。假设折扣因数,则有:

第一次更新Q-table的结果是:


现在,我们来到了state-3,如果选择R,就到达了state-4,+10。再次更新Q-table为:

以上就是一个episode。重复这个过程,就像中学生物书里,用电击训练蚯蚓,去训练我们的Agent。经过不断的练习,Agent一定会变强。

实践环节:

import numpy as np
import random
import matplotlib.pyplot as pltgamma = 0.7reward = np.array([[0, -10, 0, -1, -1],[0, 10, -1, 0, -1],[-1, 0, 0, 10, -1],[-1, 0, -10, 0, 10]])q_matrix = np.zeros((4, 5))transition_matrix = np.array([[-1, 2, -1, 1, 1],[-1, 3, 0, -1, 2],[0, -1, -1 , 3, 3],[1, -1, 2, -1, 4]])valid_actions = np.array([[1, 3, 4],[1, 2, 4],[0, 3, 4],[0, 2, 4]])for i in range(1000):start_state = 0current_state = start_statewhile current_state != 3:action = random.choice(valid_actions[current_state])next_state = transition_matrix[current_state][action]future_rewards = []for action_nxt in valid_actions[next_state]:future_rewards.append(q_matrix[next_state][action_nxt])q_state = reward[current_state][action] + gamma * max(future_rewards)q_matrix[current_state][action] = q_state#print(q_matrix)current_state = next_stateprint('Final Q-table:')
print(q_matrix)

至此,我们已经完成了一个最简单的增强学习应用,没有任何跟神经网络相关的概念。那么前面提到的“深度增强学习”又是个什么鬼呢?其实就是把神经网络用在Q-Learning上,后文会详细探讨。

原文:https://blog.csdn.net/lcy7289786/article/details/68957856

两个游戏认识增强学习相关推荐

  1. 深度增强学习射击类游戏(vizdoom)

    前端时间搞一个airsim的学习,通过ddqn的方式,然后这两天在尝试一些增强学习的训练: 在Papers With Code上看到如下游戏 FPS Games | Papers With Code ...

  2. 【AAAI Oral】利用深度增强学习自动解数学题,准确率提升15%

    [AI科技大本营导读]增强学习和人类学习的机制非常相近,DeepMind已经将增强学习应用于AlphaGo以及Atari游戏等场景当中.作为智能教育领域的引领者,阿凡题研究院首次提出了一种基于DQN( ...

  3. 独家 | Michael I.Jordan:大数据时代下的安全实时决策堆栈与增强学习(视频+精华笔记)

    金秋九月,2017国际大数据产业技术创新高峰论坛暨大数据系统软件国家工程实验室第一次会议盛大开幕,大数据系统软件国家工程实验室作为大数据系统软件技术研发与工程化的国家级创新平台,将通过大数据系统软件技 ...

  4. 干货 | 算法工程师入门第二期——穆黎森讲增强学习(一) 本文作者:大牛讲堂 编辑:刘芳平 2017-07-19 11:38 导语:地平线大牛讲堂算法工程师入门第二期来啦!本期地平线资深算法工程师、增

    干货 | 算法工程师入门第二期--穆黎森讲增强学习(一) 本文作者:大牛讲堂 编辑:刘芳平 2017-07-19 11:38 导语:地平线大牛讲堂算法工程师入门第二期来啦!本期地平线资深算法工程师.增 ...

  5. 干货 | 算法工程师入门第二期——穆黎森讲增强学习(二)

    Beyond Deep Q Learning DQN将一个强大的工具deep neural network 引入RL,解决了这中间遇到的很多新问题,收到了很好的效果.自从这篇工作以后,一方面,大家希望 ...

  6. 干货 | 算法工程师入门第二期——穆黎森讲增强学习(一)

    今天我很荣幸有机会在这里,跟大家分享增强学习(Reinforcement Learning,RL)这个话题.这次分享,我希望能达到三方面的目的: 第一,希望没有相关背景的同学能够对RL有一定的了解,所 ...

  7. 深度增强学习前沿算法思想

    作者: Flood Sung,CSDN博主,人工智能方向研究生,专注于深度学习,增强学习与机器人的研究.  责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至heyc@csdn.n ...

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

    首先,对于实现马里奥AI当中涉及到的神经网络和增强学习的相关概念进行整理,之后对智能通关的两种方式进行阐述.(本人才疏学浅,在神经网络和增强学习方面基本门外汉,如有任何纰漏,还请大神指出,我会第一时间 ...

  9. 关于增强学习你应该了解的五件事儿

    摘要: 本文主要是讲解了机器学习中的增强学习方法的基本原理,常用算法及应用场景,最后给出了学习资源,对于初学者而言可以将其作为入门指南. 强化学习(Reinforcement Learning)是当前 ...

最新文章

  1. O(N)的时间复杂度找出a[N]中那个重复的数字
  2. SAP C4C计价(Pricing)中折扣(Discount)的使用
  3. 读取带空格字符串小结
  4. 批量导出部分依赖图(PDP)
  5. 数据结构与算法系列——从菜鸟到入门
  6. ios html图片相对路径,iOS 下加载本地HTML/js/css/image 等路径问题
  7. Vue+Mock.js模拟登录和表格的增删改查
  8. Android学习笔记(九)——Activity的跳转和数据传递
  9. 让LYNC 2010 登录OCS 2007 R2
  10. Google Picasa2
  11. 可以叫板Google的一个搜索引擎——DuckDuckGo
  12. Destoon 自定义模块
  13. 网络嗅探器 java_网络嗅探软件的设计与分析
  14. Acdream 1424 Diversion 树链剖分+线段树
  15. 项目启动报错No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 解决办法
  16. Visitor模式与Acyclic Visitor
  17. 1053:最大数输出
  18. 笙科电子(AMICCOM)样片申请与经验
  19. 关于计算机这个行业,中级技工证书有什么意义吗?
  20. 画板(DrawBoard)

热门文章

  1. osg开发配置与第一个osg程序
  2. CSS高度铺满全屏的方法
  3. 基于python机器学习 Django的二手房交易预测及展示系统 完整代码+报告文档
  4. Day37PHP创建简单的论坛cnfhBBS源码
  5. 从一款芯片架构来看ip公司和soc公司是什么?
  6. 天使纪元登录不了服务器正在维护,天使纪元ios无法充值的原因|这4个步骤或许能帮上忙...
  7. 网络填坑之路(4)TP-link路由器设置mac地址绑定联网
  8. SETP7 Basic V11 SP2
  9. 按键精灵自定义函数(备份)
  10. 常见证书密钥格式与标准