浅浅地谈 —— 强化学习的爬行之旅(一)


入坑强化学习有一段时间了,对于强化学习的学习理念以及思想也有了一定程度的了解。强化学习的突然火爆源于几年 之前的Alpha Go战胜韩国某位围棋高手事件(名字不说,都懂)。能够进行自我学习自我更新,且不受情绪影响,拥有智 能决策的人工智能体已经开始影响生活的方方面面,而这种特性的起源正是基于一种能够进行自主环境探究的学习方法,这就是RL(Reinforcement Learning,强化学习)。引一段Wiki的表述:

强化学习(英语:Reinforcement learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。

很专业的说法,但是这不是我所准备写下来的东西。正如题目所说,今天只是“浅浅”地谈,对具体理论和公式推导感兴趣的小伙伴可以参考下面几位大神的文章:

下面我就从最简单的应用场景开始,一步一步地对强化学习的知识体系和模型进行一下梳理。由于本人知识水平非常有限,难免有表达有误或说不清楚的地方,欢迎各位看官在评论区指出批评,与大家共勉。

场景

假设我们来到了一个完全陌生的地方,这里的道路四通八达,很容易迷路,但是我们的手上并没有地图和指南针,那么我们如何能够到达我们要去的地方呢?

一个最直观的想法,我们从起点出发,按照一定的策略进行移动,这个策略是不确定的,可以是随机(如用抛硬币决定),也可以是根据一定个人的经验(如看看路上有没有前人留下的脚印),然后用这个策略在整个可以移动的空间内进行探索,如果发现死路,就退回到上一个做出决策的地方重新移动。

这个思路很像算法中的greedy思想,即选择当前对自己最有利的方向进行前进,但是这样做有一个问题,考虑这样一种情况,如果在某个A路口,你发现左边的路上有很多前人的脚印,右边没有,所以你可能会选择左边(像一棵海草随风飘摇),也有可能会选择右边(我就是我是不一样的花火),但是这样并不是可靠的方案,因为左边的脚印很有可能是前人随机选出来的,只是因为先验次数不够多,从而造成了“因为左边的路有比较多的人走,那么它一定是正确的”的问题。而右边的路就更有问题,既然都没什么人走过,那我如何判断它是不是正确的路呢?

在这个场景中,我们可以把这个问题归结为:如何在当前状态下(我正在面对着一个十字路口),根据已有的策略(我决定抛硬币决定/我决定跟着大多数人的脚步走),选取下一步的行动(我是该往左走/往右走/直走),才能获得最大的收益(我的目标是星辰大海)。

问题定义

OK,前面用了那么多通俗的说法,下面我们引入一些符号来表示这个问题:

  • agent(我):代表能够在环境中进行移动,获得收益的智能体;
  • environment(虚拟世界):代表环境;
  • reward(收益):代表agent在移动的过程中能够获得的回报,打个比方,如果agent到达了目的地,那么env需要给它一个奖励(100分)。agent在接近目的地的过程中,每靠近一点,env就需要给他一点奖励(10分),这样能够刺激agent在env中进行更好的行为探索,目标就是获得最大的reward;
  • S(States,状态集合):代表在某一时刻agent所面临的情况的集合。打个比方,在t时刻agent面对着的是一个十字路口,那么S = st = {“十字路口”},下一时刻的时候它通过了这个十字路口到达了一个三叉路口,那么st+1 = {“三岔路口”},S = st + st+1 = {“十字路口”,“三岔路口”};
  • A(Actions,动作集合):代表某一时刻agent所采取的动作的集合;

暂时定义这么多,有了这些符号,我们可以把上面的问题用符号表示:如何建立一个模型,在t时刻,采取at使得agent从st转移到st+1,使得在st->st+1过程中获得的反馈reward最大;

有同学很快发现了,这很像一个MDP问题。没错!MDP问题的中文叫“马尔科夫决策过程”问题,它用来解决具有马尔科夫性质的一类问题。马尔科夫问题的一个很大的性质就是马尔可夫性,也叫无后效性。通俗的解释就是当前要进行的决策和状态仅与前一个状态有关,而与更早之前的状态无关。为什么说是“很像”,因为这个问题中,当前的状态是根据前面的决策和状态积累而得,所以这个问题并不是一个很典型的决策过程的问题。在这里,RL采用了经验回放的方法解决时效叠加的问题,这里先留个悬念,放到后边再讨论。

从上面的定义,在某一时刻t,我们可以获得这样的一个四元组(st,at,rt,st+1)。在进行解法设计之前,要明确这样一个问题:我们该如何定义rt呢,既然我们想让这个问题具有马尔可夫性,那么这个rt是不是应该是local greedy的呢?实际上并不是这样的,我们的目标是到达最终的目的地,也就是在移动的过程中收获尽量多的reward,因此,我们应该计算的是一个具有global greedy的reward,也就是进行所有动作的过程中获得的rt的总期望最大。

OK,下面的问题就是如何定义reward了,对所有产生的rt进行直接求和是一个很直观的想法,但是这样计算有一个问题就是容易放大每一个action对于全局的影响。打个比方,如果我们朝着目标迈进了一大步,获得了一个很大的reward(80),但是迈完这一步之后我们走了错误的道路(比如走了五步,每一步扣除5,总扣除25),那么在这个过程中我们还可以获得(55),但是这个时候可能我们已经与目的地相去甚远了。相反的,我们每一步都走对了,但是只是前进了很小的一步,会获得一个比较小的reward(比如走了五步,每一步获得(5),总获得(25)),但是这种情况却会因为reward不足而被认定为是一个不好的走法。

解决这个问题的方案是在reward的计算过程中加入折扣因子γ,这是一个在[0,1]区间的因子,加入γ之后,越久远的reward就会因为前带系数γ的指数不断增大而造成它对当前的积累reward的影响减小。

我们把这个积累的reward记为Q(S,A),可以开始解决这个问题了。


未完持续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值