强化学习概述--甄景贤

转载 2017年07月17日 17:38:48

1、什么是强化学习(What is reinforcement learning?)

Reinforcement learning 是机器学习里面的一个分支,特别善於控制一只能够在某个环境下 自主行动 的个体 (autonomous agent),透过和 环境 之间的互动,例如 sensory perception 和 rewards,而不断改进它的行为 。

听到强化学习,你脑里应该浮现一只曱甴那样的小昆虫,那就是 autonomous agent 的形象:

这里写图片描述

对「环境」(environment) 这概念,你应该想到像以下这经典游戏的迷宫:

这里写图片描述

包括有追捕你的怪物、和吃了会加分的食物 (这些代表负值和正值的 rewards)。 当然,实际应用的「环境」和「奖励」可以是抽象的,这游戏是一个很具体的例子。

2、输入/输出

reinforcement learning 的 输入 是:

  1. 状态 (States) = 环境,例如迷宫的每一格是一个 state
  2. 动作 (Actions) = 在每个状态下,有什么行动是容许的
  3. 奖励 (Rewards) = 进入每个状态时,能带来正面或负面的 价值 (utility)

而输出就是:
方案 (Policy) = 在每个状态下,你会选择哪个行动?

於是这 4 个元素的 tuple (S,A,R,P)就构成了一个强化学习的系统。 在抽象代数中我们常常用这 tuple 的方法去定义系统或结构。

再详细一点的例子就是:

  1. states S = 迷宫中每一格的位置,可以用一对座标表示,例如(1,3)
  2. actions A = 在迷宫中每一格,你可以行走的方向,例如:{上,下,左,右}
  3. rewards R = 当前的状态 (current state) 之下,迷宫中的那格可能有食物 (+1) 、也可能有怪兽 (-100)
  4. policy P = 一个由 状态 → 行动 的 函数,意即: 这函数对给定的每一个状态,都会给出一个行动。
    (S, A, R)是使用者设定的, P 是算法自动计算出来的。

人与虫之间

第一个想到的问题是: 为什么不用这个方法打造人工智能? 但现时的强化学习算法,只对比较细小和简单的环境适用,对於大的复杂的世界,例如象棋的 10xxx 状态空间,仍是 intractable 的。

关键就是,高等智慧生物会在脑中建立世界的模型 (world model) 或知识 (knowledge), 而强化学习只是关心简单的「状态-行动」配对。

强化学习的领导研究者 Richard Sutton 认为,只有这种学习法才考虑到 自主个体、环境、奖励 等因素,所以它是人工智能中最 top-level 的 architecture,而其他人工智能的子系统,例如 logic 或 pattern recognition,都应该在它的控制之下,我觉得颇合理。

所以要制造 strong AI,一个可能的方案就是结合强化学习和某种处理复杂 world model 的能力:

这里写图片描述

「你们已经由虫进化成人,但在你们之内大部份仍是虫。」 – 尼采, Thus spoke Zarathustra

「如果人类不相信他们有一天会变成神,他们就肯定会变成虫。」 – Henry Miller 。

程式

学 AI 最紧要有 program,不然就会很枯燥。 这是我在网上找到的一个特别简单的 demo,作者是 Travis DeWolf:

https://studywolf.wordpress.com/2012/11/25/reinforcement-learning-q-learning-and-exploration/

只要 Python 便可运行,但你可能要 install PyGame。

猫、老鼠、芝士:

这里写图片描述

猫的行动是简单地朝着老鼠追(没有智能),老鼠的行动是学习出来的。

注意,在 main program 和 cellular.py 这两部分,纯粹是定义了迷宫世界如何运作,基本上是一个 game,里面完全没有智能,你可以用{上、下、左、右} 控制各 agent 的活动,如此而已。

强化学习的程式在 qlearn.py,很短,而真正学习的程式基本上只有一句,就是:

def learnQ(self, state, action, reward, value):
oldv = self.q.get((state, action), None)
if oldv is None:
       self.q[(state, action)] = reward
else:
       self.q[(state, action)] = oldv + self.alpha * (value - oldv)

单是这一句程式,就能令老鼠学到避开猫、吃芝士。 以下再解释……

3、 強化學習的原理

AI-a modern approach》这本书第 21 章有很好的简介。 《AIMA》自然是经典,很多人说他们是读这本书而爱上 AI 的。 这本书好处是,用文字很耐性地解释所有概念和原理,思路很清晰,使读者不致有杂乱无章的感觉。 例如 21 章 首先讲 passive reinforcement learning,意思是当 policy 是固定时,纯粹计算一下 agent 期望的价值(utility,即 rewards 的总和) 会是多少。 有了这基础后再比较不同 policies 的好坏。 这种思路在数学中很常见: 首先考虑简单到连白痴也可以解决的 case,然后逐步引入更多的复杂性。 例如数学归纳法,由 N=1 的 case 推到 N→∞ 。

为免重复,我只解释到明白 Q learning 的最少知识。

4、Utility (价值,或效)

U 是一连串行动的 rewards 的总和。 例如说,行一步棋的效用,不单是那步棋当前的利益,还包括走那步棋之后带来的后果。 例如,当下贪吃一只卒,但 10 步后可能被将死。 又或者,眼前有美味的食物,但有些人选择不吃,因为怕吃了会变肥。

一个 state 的效用 U 就是: 假设方案固定,考虑到未来所有可能的 transitions,从这个 state 开始的平均期望的 total reward 是多少 :

U(S0)=
  • 本文已收录于以下专栏:

强化学习-几个基本概念

马尔科夫性指系统的下一个状态仅与当前状态有关,而与以前的状态无关。 即:马尔科夫过程马尔科夫过程是一个二元组,且满足:S是有限状态集合, P是状态转移概率。状态转移概率矩阵为: 如:P的第一行表示...
  • xtingjie
  • xtingjie
  • 2017年04月26日 23:21
  • 453

强化学习(reinforcement learning)教程

前一阵研究强化学习,发现中文的资料非常少,实例就更少。于是翻译一篇q学习算法的教程,供需要的人学习。 原文链接:http://mnemstudio.org/path-finding-q-learni...
  • xudong0612
  • xudong0612
  • 2013年07月11日 22:15
  • 29134

强化学习介绍(Introduction to RL)

机器学习有三大分支,监督学习、无监督学习和强化学习,强化学习是系统从环境学习以使得奖励最大的机器学习。人工智能中称之为强化学习,在控制论中被称之为动态规划,两者在概念上是等价的。也被翻译为增强学习。...
  • tlzhatao
  • tlzhatao
  • 2017年03月25日 11:55
  • 1767

强化学习介绍

两年前,伦敦的一家小公司DeepMind向Arxiv上传了他们的开创性论文“ Playing Atari with Deep Reinforcement Learning ”。在那篇文章中,他们演示了...
  • sinat_28751869
  • sinat_28751869
  • 2017年03月21日 17:14
  • 1550

强化学习-无模型控制(下)

2.在线策略学习2.1.ε\varepsilon -蒙特卡洛控制有了上一节的引导,我们现在可以提出一个基于ε\varepsilon的蒙特卡洛控制算法,其流程如下: 随机选择一个策略π\pi 依据该策...
  • ArtistA
  • ArtistA
  • 2016年06月05日 20:01
  • 1401

RL强化学习 C++实现

详细过程见: http://blog.csdn.net/u013405574/article/details/50903987#include "iostream" #include "vector...
  • u012319493
  • u012319493
  • 2016年10月21日 16:34
  • 644

揭秘深度强化学习

文/ Tambet Matiisen 译/赵屹华,刘翔宇 原作者Tambet Matiisen在文章结尾列出了对本文内容给出意见和建议的读者,以及深入了解这些技术的在线文档和视频链接,受篇幅所限,译...
  • Real_Myth
  • Real_Myth
  • 2016年07月28日 13:41
  • 1200

强化学习基本方法(三)

3.2.蒙特卡洛方法在之前已经了解在所有信息我们都知晓的情况下,该如何估计和优化目标。但是,在实际情况中,我们没有办法事前就知道所有事件的状态将其转义概率的。我们最多只能在每一次的实验之中观察并且总结...
  • ArtistA
  • ArtistA
  • 2016年06月03日 19:39
  • 3359

强化学习(Reinforcement Learning)知识整理

传送门:https://zhuanlan.zhihu.com/p/25319023 因为准备投入学习 CS294,具体见 知乎专栏,复习了下之前学习 Udacity 和 CS181 中有关强...
  • savant_ning
  • savant_ning
  • 2017年02月28日 18:19
  • 1704

强化学习简单示例——SARSA算法

【注】我也是刚刚接触强化学习的内容,对这部分理解不是很透彻,代码写的可能也会有不对或不完善的地方,还请各位批评指正。这个问题是个作业,这是我自己编的代码,老师提供的答案出来后再更。 【问题描述】 ...
  • u014157632
  • u014157632
  • 2016年11月29日 09:07
  • 897
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:强化学习概述--甄景贤
举报原因:
原因补充:

(最多只允许输入30个字)