关于强化学习需要了解的知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于强化学习需要了解的知识相关的知识,希望对你有一定的参考价值。
自从人工智能这一事物流行以后,也开始流行了很多的新兴技术,比如机器学习、深度学习、强化学习、增强学习等等,这些技术都在人工智能中
参考技术A 自从人工智能这一事物流行以后,也开始流行了很多的新兴技术,比如机器学习、深度学习、强化学习、增强学习等等,这些技术都在人工智能中占据着很大的地位。我们在这篇文章中重点给大家介绍一下关于强化学习需要了解的知识,希望这篇文章能够更好地帮助大家理解强化学习。为什么强化学习是一个热门的研究课题呢?是因为在人机大战中强化学习在阿尔法狗中大放光彩,也正是这个原因,强化学习越来越受到科研人员的喜爱。那么强化学习是什么呢?强化学习与其它机器学习方法有什么关系呢?
首先,强化学习是一种机器学习方法,强化学习能够使Agent能够在交互式环境中年通过试验并根据自己的行动和经验反馈的错误来进行学习。虽然监督学习和强化学习都使用输入和输出之间的映射关系,但强化学习与监督学习不同,监督学习提供给Agent的反馈是执行任务的正确行为,而强化学习使用奖励和惩罚作为积极和消极行为的信号。
那么强化学习和无监督学习有什么不同呢?如果和无监督学习相比,强化学习在目标方面有所不同。虽然无监督学习的目标是找出数据点之间的相似性和不同性,但是在强化学习中,其目标是找到一个合适的动作模型,能够最大化Agent的累积奖励总额。
那么如何创建一个基本的强化学习的问题呢?这就需要我们先了解一下增强学习中的一些概念,第一就是环境,也就是Agent操作的现实世界。第二就是状态,也就是Agent的现状。第三就是奖励,也就是来自环境的反馈。第四就是策略,也就是将Agent的状态映射到动作的方法。第五就是价值,也就是Agent在特定状态下采取行动所得到的报酬。所以说,为了建立一个最优策略,Agent需要不断探索新的状态,同时最大化其所获奖励累积额度,这也被称作试探和权衡。
而马尔可夫决策过程是用来描述增强学习环境的数学框架,几乎所有的增强学习问题都可以转化为马尔科夫决策过程。马尔科夫决策由一组有限环境状态、每个状态中存在的一组可能行为、一个实值奖励函数以及一个转移模型组成。然而,现实世界环境可能更缺乏对动态环境的任何先验知识。通过这些去试错,一直在每一步中去尝试学习最优的策略,在多次迭代后就得到了整个环境最优的策略。
那么最常用的强化学习算法有哪些呢?Q-learning和SARSA是两种常用的model-free强化学习算法。虽然它们的探索策略不同,但是它们的开发策略却相似。虽然Q-learning是一种离线学习方法,其中Agent根据从另一个策略得到的行动a*学习价值,但SARSA是一个在线学习方法,它从目前的策略中获得当前行动的价值。这两种方法实施起来很简单,但缺乏一般性,因为无法估计出不可见状态的价值。
在这篇文章中我们给大家介绍了很多关于强化学习的知识,通过这些知识我们不难发现,强化学习是一个十分实用的内容,要想学好人工智能就一定不能够忽视对强化学习知识的掌握,最后祝愿大家早日拿下强化学习。
强化学习教程 - 先了解几个公式
强化学习教程(1) - 先了解几个公式
对于学习强化学习的好处,大家已经了解很多了,这里就不多叙述了。
开篇有几点想提醒新入门的同学,关于强化学习的难点。
- 首先是要做好啃一些理论和公式的准备,虽然深度强化学习可以做到像调库一样使用成熟算法,但是有扎实的理论基础对于学习前沿论文还是一个必要的选项。
- 第二是对算力的需求要有明确的考虑。比如我们调库可以很容易实现Atari游戏的对战,但是能打败计算机是需要用GPU或其他加速的,想用CPU训练几分钟就能通关还是不现实的。
- 第三是对于强化学习和深度学习编程框架需要有一定的了解,这样一旦遇到问题才有更多的办法将理论转化成工具。
这个小系列教程,我希望能够从理论、理论的代码实现、主要框架和工具、几个实际问题的例子以及强化学习的历史与流派五个方面来说明。
第一步我们先尝试理解透理论,我们先从很多同学最不喜欢看的公式开始说起,这一关突破后,再结合代码看就更容易理解了。
状态、动作和奖励
强化学习的主体是一个Agent,它可以获取环境的状态S,通过动作A来对环境产生影响,最后从环境获取奖励R。强化学习就是一个通过寻找最佳的动作序列来获取最大的奖励的过程。
假设最初的状态为S0,此时实施动作A0,获取奖励R1,之后的状态变成S1,再施以动作A1,获取奖励R2,状态变成S2,以此类推。
我们考虑状态S的概率分布St和奖励R的概率分布Rt。
在后面的符号中,我们使用 P r ( S t = s ) Pr(S_t=s) Pr(St=s)来表示 S t = s S_t=s St=s时的概率。
概率公式
我们定义一个函数
p
(
s
′
,
r
,
s
,
a
)
p(s',r,s,a)
p(s′,r,s,a),其值为
P
r
(
S
t
=
s
′
,
R
t
=
r
∣
S
t
−
1
=
s
,
A
t
−
1
=
a
)
Pr(S_t=s',R_t=r|S_{t-1}=s,A_{t-1}=a)
Pr(St=s′,Rt=r∣St−1=s,At−1=a)
为了让前后式看起来更一致些,我们把
p
(
s
′
,
r
,
s
,
a
)
p(s',r,s,a)
p(s′,r,s,a)写作
p
(
s
′
,
r
∣
s
,
a
)
p(s',r | s,a)
p(s′,r∣s,a)
式子写成: p ( s ′ , r ∣ s , a ) = P r ( S t = s ′ , R t = r ∣ S t − 1 = s , A t − 1 = a ) p(s',r | s,a)=Pr(S_t=s',R_t=r|S_{t-1}=s,A_{t-1}=a) p(s′,r∣s,a)=Pr(St=s′,Rt=r∣St−1=s,At−1=a)
虽然写法变了,但是对于函数功能没有任何影响。
如果不考虑奖励,我们可以定义一个三元函数,这个函数描述状态转移的概率:
p
(
s
′
,
s
,
a
)
=
P
r
(
S
t
=
s
′
∣
S
t
−
1
=
s
,
A
t
−
1
=
a
)
p(s',s,a)=Pr(S_t=s'|S_{t-1}=s,A_{t-1}=a)
p(s′,s,a)=Pr(St=s′∣St−1=s,At−1=a)
或者写作:
p
(
s
′
∣
s
,
a
)
=
P
r
(
S
t
=
s
′
∣
S
t
−
1
=
s
,
A
t
−
1
=
a
)
p(s'|s,a)=Pr(S_t=s'|S_{t-1}=s,A_{t-1}=a)
p(s′∣s,a)=Pr(St=s′∣St−1=s,At−1=a)
这两个函数的关系也容易理解,3元函数等于4元函数在所有奖励情况下的汇总加和:
p
(
s
′
,
s
,
a
)
=
∑
r
∈
R
p
(
s
′
,
r
,
s
,
a
)
p(s',s,a)=\\sum_{r\\in R} p(s',r,s,a)
p(s′,s,a)=∑r∈Rp(s′,r,s,a)
或者写作:
p
(
s
′
∣
s
,
a
)
=
∑
r
∈
R
p
(
s
′
,
r
∣
s
,
a
)
p(s' | s,a)=\\sum_{r\\in R} p(s',r | s,a)
p(s′∣s,a)=∑r∈Rp(s′,r∣s,a)
期望公式
我们再将函数简化成二元的,只有状态s和动作a,这时我们定义这个函数r(s,a)表示对于奖励的数学期望。注意啦,这是个期望函数,所以名字从p变成了r。
我们使用符号 E [ X ] \\mathbb{E}[X] E[X]表示随机变量X的数学期望,它的定义为 E [ X ] = ∑ x p ( x ) x \\mathbb{E}[X]=\\sum_x p(x)x E[X]=∑xp(x)x。也就是等于每一项的值乘以它出现的概率。
我们举个例子,比如掷骰子,点数为1,2,3,4,5,6,出现的概率分别为1/6。
则数学期望为
1
×
1
6
+
2
×
1
6
+
3
×
1
6
+
4
×
1
6
+
5
×
1
6
+
6
×
1
6
=
3.5
1 \\times \\frac{1}{6}+2 \\times \\frac{1}{6}+3 \\times \\frac{1}{6}+4 \\times \\frac{1}{6}+5 \\times \\frac{1}{6}+6 \\times \\frac{1}{6}= 3.5
1×61+2×61+3×61+4×61+5×61+6×61=3.5。
则定义
r
(
s
,
a
)
=
E
[
R
t
∣
S
t
−
1
=
s
,
A
t
−
1
=
a
]
r(s,a)=\\mathbb E[R_t| S_{t-1}=s, A_{t-1}=a]
r(s,a)=E[Rt∣St−1=s,At−1=a]
我们将其按定义展开,得到:
r
(
s
,
a
)
=
E
[
R
t
∣
S
t
−
1
=
s
,
A
t
−
1
=
a
]
=
∑
r
∈
R
r
×
∑
s
′
∈
S
p
(
s
′
,
r
∣
s
,
a
)
r(s,a)=\\mathbb E[R_t| S_{t-1}=s, A_{t-1}=a]=\\sum_{r\\in R} r \\times \\sum_{s'\\in S} p(s',r | s,a)
r(s,a)=E[R