能否介绍一下强化学习(Reinforcement Learning),以及与监督学习的不同?

随着 DeepMind 和 AlphaGo 的成功,强化学习(Reinforcement Learning)日益受到关注。然而,在一些机器学习入门课程…
关注者
2,343
被浏览
551,475

70 个回答

这是一篇强化学习 入门,的入门 。极度新手友好。

本文会讲到:

· 什么是强化学习,以及为什么奖励最重要

· 强化学习的三种方式

· 深度强化学习的“深度”是什么意思

然后,就能看出强化学习和监督学习的区别了。

友好的引子

强化学习的中心思想,就是 让智能体在环境里学习 。每个行动会对应各自的奖励,智能体通过分析数据来学习,怎样的情况下应该做怎样的事情。

其实,这样的学习过程和我们自然的经历非常相似。 想象自己是个小孩子 ,第一次看到了火,然后走到了火边。

你感受到了温暖。火是个好东西 ( +1 ) 。

然后就试着去摸。卧槽,这么烫 ( -1 ) 。

结论是,在稍远的地方火是好的,靠得太近就不好。

这就是人类学习的方式, 与环境交互 。强化学习也是一样的道理,只是主角换成了计算机。

比如,智能体要学着玩超级马里奥。强化学习过程可以用一个循环 ( loop ) 来表示:

· 智能体在环境 (超级马里奥) 里获得初始状态 S0 (游戏的第一帧) ;

· 在S0的基础上,agent会做出第一个行动 A0 (如向右走) ;

· 环境变化,获得新的状态 S1 (A0发生后的某一帧) ;

· 环境给出了第一个奖励 R1 (没死:+1) ;

于是,这个loop输出的就是一个 由状态、奖励和行动组成的序列

而智能体的 目标 就是让 预期累积奖励最大化

奖励假说为根基

问题来了,目标 为什么 是预期累积奖励最大化?

因为,强化学习就是建立在 奖励假说 的基础之上。想表现好,就要多拿奖励。

每一个 时间步 (time step) 的累积奖励都可以表示为:

或者

不过,我们 并不能把奖励直接相加 。因为游戏里,越接近游戏开始处的奖励,就越容易获得;而随着游戏的进行,后面的奖励就没有那么容易拿到了。

把智能体想成一只 小老鼠 ,对手是只猫。它的目标就是在被猫吃掉之前, 吃到最多的奶酪

就像图中, 离老鼠最近的奶酪很容易吃 而从猫眼皮底下顺走奶酪就难了 。离猫越近,就越危险。

结果就是,从猫身旁获取的奖励会 打折扣 :吃到的可能性小,就算奶酪放得很密集也没用。

那么,这个 折扣要怎么算 呢?

我们用γ表示折扣率,在0和1之间。

· γ越大,折扣越小。表示智能体越在意 长期 的奖励 (猫边上的奶酪) 。

· γ越小,折扣越大。表示智能体越在意 短期 的奖励 (鼠边上的奶酪) 。

这样, 累积奖励 表示出来就是:

简单来说, 离猫近一步 就乘上一个γ ,表示奖励越难获得。

片段性任务还是连续性任务

强化学习里的任务分两种。

片段性任务 (Episodic Tasks)

这类任务,有个 起点 ,有个 终点 。两者之间有一堆状态,一堆行动,一堆奖励,和一堆新的状态,它们共同构成了一“集”。

当一集结束,也就是到达终止状态的时候,智能体会看一下奖励累积了多少,以此 评估自己的表现

然后,它就带着之前的经验开始一局新游戏。这一次,智能体做决定的依据会充分一些。

猫鼠迷宫 为例的一集:

· 永远从同一个起点开始

· 如果被猫吃掉或者走了超过20步,则游戏结束

· 结束时,得到一系列状态、行动、奖励和新状态

· 算出奖励的总和 (看看表现如何)

· 更有经验地开始新游戏

集数越多 智能体的表现会越好

连续性任务 (Continuing Tasks)

永远不会有游戏结束的时候 。智能体要学习如何选择最佳的行动,和环境进行实时交互。就像自动驾驶汽车,并没有过关拔旗子的事。

这样的任务是通过时间 差分学习 (Temporal Difference Learning) 来训练的。每一个时间步,都会有总结学习,等不到一集结束再分析结果。

探索和开发之间的权衡

在讨论强化学习的几种方法之前,必须讲到这件事。

· 探索 (Exploration) 是找到关于环境的更多信息。

· 开发 (Exploitation) 是利用已知信息来得到最多的奖励。

要记住,目标是将预期累积奖励最大化。正因如此,它有时候 会陷入一种困境

小老鼠可以吃到无穷多块分散的奶酪 (每块 +1 ) 。但在迷宫上方,有许多堆在起的奶酪( +1000 ) ,或者看成巨型奶酪。

如果 我们只关心吃了多少,小老鼠就永远 不会去找那些大奶酪 。它只会在安全的地方一块一块地吃,这样奖励累积比较慢,但它不在乎。

如果 它跑去远的地方,也许就会发现大奖的存在,但也有可能 发生危险

程序猿需要设定一种规则,让智能体能够 把握二者之间的平衡

强化学习的三种方法

前菜吃完了,我们终于要开始讲解决强化学习问题的方法了。三种方法分别是:基于价值(value-based)、基于策略(policy-based)以及基于模型(model-based)的方法。

1、基于价值 (Value-Based)

这种方法,目标是 优化价值函数V(s)

价值函数会告诉我们,智能体在每个状态里得出的未来奖励最大预期 (maximum expected future reward) 。

一个状态下的 函数值 ,是智能体 可以预期的未来奖励积累总值 ,从当前状态开始算。

智能体要用这个价值函数来决定,每一步要选择哪个行动。它会采取函数值 (就是 Q值 ) 最大的那个行动。

在迷宫问题中,每一步我们都选取最大函数值:-7,-6,-5,以此类推,达到目标。

2、基于策略 (Policy-Based)

这种方式,会 直接优化策略函数π(s) ,抛弃价值函数。

策略就是评判智能体在特定时间点的表现。

把每一个状态和它所 对应 的最佳行动建立联系。

策略分为两种,

· 确定性 策略:某一个特定状态下的策略,永远都会给出同样的行动。

· 随机性 策略:策略给出的是多种行动的可能性分布。

从图中我们可以看到,策略 直接指出 了每一步的最佳行动。

3、基于模型 (Model-Based)

这种方法是对环境建模。这表示,我们要创建一个模型,来表示环境的行为。

问题是, 每个环境 都会需要一个不同的模型 (马里奥每走一步,都会有一个新环境) 。这也是这个方法在强化学习中并不太常用的原因。

深度强化学习

所谓深度强化学习 就是在强化学习里 加入深度神经网络

如图,拿Q学习和深度Q网络 (DQN) 来举例。

· Q学习 ,是利用一个传统算法创建Q-table,来帮助智能体找到下一步要采取的行动。

· DQN ,是利用深度神经网络来近似Q值。

最后,与监督学习和无监督学习最大的不同,就在于强化学习里,并没有 给定的一组数据 供智能体学习。环境是不断变化的,强化学习智能体要在变化的环境里,做出一系列动作的决策,而不是某一个动作的决策。一系列决策结合起来就是策略,强化学习就是通过不断与环境互动 (不断试错) ,更新策略的过程。

文章原作为 Thomas Simonini ,量子位编译整理。

以及,本文只是系列文章的第一篇,整个疗程在此:

量子位 · QbitAI
վ'ᴗ' ի 追踪AI技术和产品新动态

欢迎大家关注我们,以及订阅 我们的知乎专栏


我在外国博客上写过一些基於人工智能的文章,有些搬到了博客园,上面转录的是其中一篇:

什么是强化学习?

我正在研究的 AI architecture 是用强化学习控制 recurrent 神经网络,我相信这个设置可以做到逻辑推理和答问题的功能,基本上就是 strong AI。 但还有一些未解决的细节。 论文的标题是《游荡在思考的迷宫中》,即将发表。

補充: 還有一點,就是監督學習的問題可以很容易化為強化學習的問題(雖然這樣增加了複雜性而沒有益處),但反之則沒有一般的辦法。 見:Reinforcement Learning and its Relationship to Supervised Learning,Barto and Dietterich, 2004.

"But is it possible to do this the other way around: to convert a reinforcement learning task into a supervised learning task?

"In general, there is no way to do this. The key difficulty is that whereas in supervised learning, the goal is to reconstruct the unknown function f that assigns output values y to data points x, in reinforcement learning, the goal is to find the