关于人工智能:强化学习从基础到进阶案例与实践含面试必知必答9稀疏奖励curiosity分层强化学习HRL

42次阅读

共计 8600 个字符,预计需要花费 22 分钟才能阅读完成。

强化学习从根底到进阶 – 案例与实际含面试必知必答[9]:稠密处分、reward shaping、curiosity、分层强化学习 HRL

实际上用强化学习训练智能体的时候,少数时候智能体都不能失去处分。在不能失去处分的状况下,训练智能体是十分艰难的。例如,假如咱们要训练一个机器臂,桌上有一个螺丝钉与一个螺丝起子,要训练它用螺丝起子把螺丝钉栓进去很难,因为一开始智能体是什么都不晓得,它惟一可能做不同的动作的起因是摸索。例如,咱们在做 Q 学习 的时候会有一些随机性,让它去采取一些过来没有采取过的动作,要随机到,它把螺丝起子捡起来,再把螺丝栓进去,就会失去处分 1,这件事件是永远不可能产生的。所以,不论演员做了什么事件,它失去的处分永远都是 0,对它来说不论采取什么样的动作都是一样糟或者是一样好。所以,它最初什么都不会学到。

如果环境中的处分十分稠密,强化学习的问题就会变得十分艰难,然而人类能够在十分稠密的处分下来学习。人生通常少数的时候,就只是活在那里,都没有失去什么处分或是惩办。然而,人还是能够采取各种各样的行为。所以,一个真正厉害的人工智能应该可能在稠密处分的状况下也学到怎么与环境交互。

咱们能够通过 3 个方向来解决稠密处分的问题,上面一一介绍。

1. 设计处分

第一个方向是 设计处分(reward shaping)。环境有一个固定的处分,它是真正的处分,然而为了让智能体学到的后果是咱们想要的,所以咱们刻意设计了一些处分来疏导智能体。

例如,如图 9.1 所示,如果咱们把小孩当成一个智能体,他能够采取两个动作:游玩或者学习。如果他游玩,在下一个工夫点就会失去处分 1。然而他在月考的时候,问题可能会很差,所以在 100 个小时之后,他会失去处分 $-$100。他也能够决定要学习,在下一个工夫点,因为他没有游玩,所以感觉很不爽,所以失去处分 $-$1。然而在 100 个小时后,他能够失去处分 100。对于一个小孩来说,他可能就会想要采取游玩的动作而不是学习的动作。咱们计算的是累积处分,但兴许对小孩来说,折扣因子会很大,所以他就不太在意将来的处分。而且因为他是一个小孩,还没有很多教训,所以他的 Q 函数预计是十分不精准的。所以要他去预计很远当前会失去的累积处分,他是预计不进去的。这时候小孩儿就要疏导他,对他说:“如果你学习,我就给你一根棒棒糖。”对小孩来说,下一个工夫点他失去的处分就变成正的,他兴许就会认为学习是比游玩好的。尽管这并不是真正的处分,而是其他人疏导他的处分。设计处分的概念是一样的,简略来说,就是咱们本人想方法设计一些处分,这些处分不是环境真正的处分。在玩雅达利游戏时,真正的处分是游戏主机给的处分,但咱们本人能够设计一些处分疏导智能体,让智能体做咱们想要它做的事件。

举个 Meta(原 Facebook)玩 ViZDoom 的智能体的例子。ViZDoom 是一个第一人称射击游戏,在这个射击游戏中,杀了敌人失去正处分,被杀失去负处分。钻研人员设计了一些新的处分,用新的处分来疏导智能体让它们做得更好,这不是游戏中真正的处分。比方掉血就扣分,弹药缩小就扣分,捡到补给包就加分,待在原地就扣分,挪动就加分。活着会扣一个很小的分数,因为如果不这样做,智能领会只想活着,始终规避敌人,这样会让智能体厌战一些。

设计处分是有问题的,因为咱们须要畛域常识(domain knowledge)。例如,如图 9.2 所示,机器人想要学会把蓝色的板子从柱子穿过。机器人很难学会,咱们能够设计处分。一个貌似正当的说法是,蓝色的板子离柱子越近,处分越大。然而机器人凑近的形式会有问题,它会用蓝色的板子打柱子。而机器人要把蓝色板子放在柱子下面,能力让蓝色板子穿过柱子。因而,这种设计处分的形式是有问题的。至于哪种设计处分的形式有问题,哪种设计处分的形式没问题,会变成一个畛域常识,是咱们要去调整的。

2. 好奇心 curiosity

接下来介绍各种咱们能够本人退出并且个别看起来是有用的处分。例如,一种技术是给智能体加上好奇心(curiosity),称为 好奇心驱动的处分(curiosity driven reward)。如图 9.3 所示,咱们输出某个状态和某个动作到处分函数中,处分函数就会输入在这个状态采取这个动作会失去的处分,总处分越大越好。

在好奇心驱动的技术外面,咱们会加上一个新的处分函数 ——外在好奇心模块(intrinsic curiosity module,ICM),它用于给智能体加上好奇心。外在好奇心模块须要 3 个输出:状态 $s_1$、动作 $a_1$ 和状态 $s_2$。依据输出,它会输入另外一个处分 $r_1^i$。对智能体来说,总处分并不是只有 $r$,还有 $r^i$。它不是只把所有的 $r$ 都加起来,它还把所有 $r^i$ 加起来当作总处分。所以在与环境交互的时候,它不是只心愿 $r$ 越大越好,它还同时心愿 $r^i$ 越大越好,它心愿从外在好奇心模块外面失去的处分越大越好。外在好奇心模块代表一种好奇心。

怎么设计外在好奇心模块?最原始的设计如图 9.4 所示,外在好奇心模块的输出是当初的状态 $s_t$、在这个状态采取的动作 $a_t$ 以及下一个状态 $s_{t+1}$,输入一个处分 $r^i_t$。那么 $r^i_t$ 是怎么算进去的呢?在内在好奇心模块外面,咱们有一个网络,这个网络会接管输出 $a_t$ 与 $s_t$,输入 $\hat{s}_{t+1}$,也就是这个网络依据 $a_t$ 和 $s_t$ 去预测 $\hat{s}_{t+1}$。而后再看这个网络的预测 $\hat{s}_{t+1}$ 与实在的状况 $s_{t+1}$ 的类似度,越不类似失去的处分就越大。所以处分 $r_t^i$ 的意思是,将来的状态越难被预测,失去的处分就越大。这就是激励智能体去冒险、去摸索,当初采取这个动作,将来会产生什么越难被预测,这个动作的处分就越大。所以如果有这样的外在好奇心模块,智能体就会偏向于采取一些危险比拟大的动作,它想要去摸索未知的世界。假如某一个状态是它没有方法预测的,它就会特地想要靠近该状态,这能够进步智能体摸索的能力。

网络 1 是另外训练进去的。训练的时候,咱们会给网络 1 输出 $a_t$、$s_t$、$s_{t+1}$,让网络 1 学习依据给定 $a_t$、$s_t$ 预测 $\hat{s}_{t+1}$。在智能体与环境交互的时候,咱们要把外在好奇心模块固定住。这个想法有一个问题:某些状态很难被预测并不代表它就是好的、它就是应该要被尝试的。例如,俄罗斯轮盘的后果也是没有方法预测的,这并不代表人应该每天去玩俄罗斯轮盘。所以只激励智能体去冒险是不够的,因为如果仅仅只有这个网络的架构,智能体只晓得什么货色它无奈预测。如果在某一个状态采取某一个动作,智能体无奈预测接下来后果,它就会采取那个动作,但这并不代表这样的后果肯定是好的。例如,可能在某个游戏外面,背景会有打草惊蛇、会有树叶飘动这种无关紧要的事件。兴许树叶飘动这件事,是很难被预测的,对智能体来说,它在某一个状态什么都不做,就看着树叶飘动,发现树叶飘动是没有方法预测的,接下来它就会始终看树叶飘动。所以智能体仅仅有好奇心是不够的,还要让它晓得,什么事件是真正重要的。

怎么让智能体晓得什么事件是真正重要的呢?咱们要加上另外一个模块,咱们要学习一个 特征提取器(feature extractor)。如图 9.5 所示,黄色的格子代表特征提取器,它输出一个状态,输入一个特征向量来代表这个状态,咱们期待特征提取器能够把没有意义的画面,状态外面没有意义的货色过滤掉,比方打草惊蛇、白云的飘动以及树叶飘动。

假如特征提取器能够把无关紧要的信息过滤掉,网络 1 实际上做的事件是,给它一个演员和一个状态 $s_t$ 的特色示意(feature representation),让它预测状态 $s_{t+1}$ 的特色示意。接下来咱们再来评估,这个预测的后果与真正的状态 $s_{t+1}$ 的特色示意像不像,越不像,处分就越大。怎么学习特征提取器呢?怎么让特征提取器把无关紧要的信息过滤掉呢?
咱们能够学习另外一个网络,即网络 2。网络 2 把向量 $\pmb{\phi}(s_t)$ 和 $\pmb{\phi}(s_{t+1})$ 作为输出,它要预测动作 $a$ 是什么,它心愿这个动作 $a$ 与真正的动作 $a$ 越靠近越好。网络 2 会输入一个动作 $a_t$,它会输入,从状态 $s_t$ 到状态 $s_{t+1}$,要采取的动作与真正的动作越靠近越好。加上网络 2 是因为要用 $\pmb{\phi}(s_t)$、$\pmb{\phi}(s_{t+1})$ 预测动作。所以,咱们提取进去的特色与预测动作这件事件是无关的,打草惊蛇等与智能体要采取的动作无关的就会被过滤掉,就不会在被提取进去的向量中被示意。

3. 课程学习 curriculum learning

第二个方向是 课程学习(curriculum learning)。课程学习不是强化学习独有的概念,在机器学习尤其是深度学习中,咱们都会用到课程学习的概念。具体来说,课程学习是指咱们为智能体的学习做布局,给他“喂”的训练数据是有程序的,通常都是由简略到难的。比方,假如咱们要教一个小朋友学微积分,他做错题就惩办他,这样他很难学会。咱们应该先教他乘法,再教他微积分。所以课程学习就是指在训练智能体的时候,训练数据从简略到艰难。就算不是强化学习,个别在训练深度网络的时候,咱们有时候也会这么做。例如,在训练循环神经网络 的时候,曾经有很多的文献都证实,给智能体先看短的序列,再缓缓给它看长的序列,通常它能够学得比拟好。在强化学习外面,咱们就是要帮智能体布局它的课程,课程难度从易到难。

例如,Meta 玩 ViZDoom 的智能体体现十分好,它加入 ViZDoom 的较量得了第一名。对于 Meta 玩 ViZDoom 的智能体,是有为智能体布局课程的,从课程 0 始终到课程 7。在不同的课程外面,怪物的速度与血量是不一样的。所以,在越进阶的课程外面,怪物的速度越快,血量越多。如果间接上课程 7,智能体是无奈学习的。要从课程 0 开始,一点一点减少难度,这样智能体才学得起来。

再例如,对于把蓝色的板子穿过柱子的工作,怎么让机器人始终从简略学到难呢?如图 9.6(左)所示,兴许一开始,板子就曾经在柱子上了。这时候,机器人只有把蓝色的板子压下去就能够了。这种状况比较简单,机器人应该很快就能学会。因为机器人只有往上与往下这两个抉择,往下就失去处分,工作就完结了,所有它也不晓得学的是什么。如图 9.6(中)所示,咱们把板子放高一点儿,机器人有时候会蠢笨地往上拉板子,而后把板子拿进去。如果机器人能够学会压板子,拿板子也有很大的可能能够学会。假如机器人当初曾经学到,只有板子靠近柱子,它就能够把板子压下去。接下来,咱们再让它学更个别的状况。如图 9.6(右)所示,一开始,让板子离柱子远一点儿。而后,板子放到柱子下面的时候,机器人就晓得把板子压下去,这就是课程学习的概念。当然课程学习有点儿特地,它须要人去为智能体设计课程。

有一个比拟通用的办法:逆向课程生成(reverse curriculum generation)。咱们能够用一个比拟通用的办法来帮智能体设计课程。如图 9.7 所示,假如咱们一开始有一个状态 $s_\mathrm{g}$,这是 黄金状态(gold state),也就是最初最现实的后果。如果以板子和柱子的试验为例,黄金状态就是把板子穿过柱子。如果咱们以训练机械臂抓货色为例,抓到货色就称为黄金状态。接下来咱们依据黄金状态去找其余的状态,这些其余的状态与黄金状态是比拟靠近的。例如,在让机械臂抓货色的例子外面,机械臂可能还没有抓到货色。假如与黄金状态很靠近的状态称为 $s_1$。机械臂还没有抓到货色,但它与黄金状态很靠近,这种状态可称为 $s_1$。至于什么是靠近,这取决于具体情况。咱们要依据工作来设计怎么从 $s_\mathrm{g}$ 采样出 $s_1$。接下来,智能体再从 $s_1$ 开始与环境交互,看它能不能够达到黄金状态 $s_\mathrm{g}$,在每一个状态下,智能体与环境交互的时候,都会失去一个处分。

接下来,咱们把处分特地极其的状况去掉。处分特地极其的状况的意思是这些状况太简略或是太难了。如果处分很大,就代表这个状况太简略了,就不必学习了,因为智能体曾经会了,它能够失去很大的处分。如果处分太小,就代表这个状况太难了,按照智能体现在的能力它学不会,所以就不学这个,只学一些处分适中的状况。

接下来,再依据这些处分适中的状况采样出更多的状态。假如一开始,机械臂在某个地位能够抓失去后。接下来,机械臂就再离远一点儿,看看能不能抓到;又能抓到后,再离远一点儿,看看能不能抓到。这是一个有用的办法,称为 逆课程学习(reverse curriculum learning)。后面讲的是课程学习,就是咱们要为智能体布局学习的程序。而逆课程学习是从黄金状态反推,如图 9.8 所示,就是从指标反推,所以这称为逆课程学习。

4 分层强化学习 hierarchical reinforcement learning,HRL

第三个方向是 分层强化学习(hierarchical reinforcement learning,HRL)。分层强化学习是指,咱们有多个智能体,一些智能体负责比拟高级的货色,它们负责定指标,定完指标当前,再将指标调配给其余的智能体,让其余智能体来执行指标。这样的想法也是很正当的。例如,假如咱们想写一篇论文,首先咱们要想翻新点,想完翻新点后,还要做试验。做试验当前,咱们要写论文。写完论文当前还要投稿、发表。每一个动作上面又会再细分,比方怎么做试验呢?咱们要先收集数据,收集完数据当前,要标注标签,还要设计一个网络,而后又训练不起来,要训练很屡次。从新设计网络架构好几次,最初才把网络训练起来。所以,咱们要实现一个很大的工作的时候,并不是从十分底层的动作开始做,其实是有一个打算的。咱们会先想,如果要实现这个最大的工作,要将之拆解成哪些小工作,每一个小工作要怎么拆解成更小的工作。例如,咱们间接写一本书可能很艰难,但先把一本书拆成几章,每章拆成几节,每节又拆成几段,每段又拆成几个句,这样可能就比拟好写,这就是分层强化学习。

如图 9.9 所示,例如,假如校长、传授和研究生都是智能体,并且咱们所在的学校只有进入百大学校(QS 排名前 100 的学校)就能够失去处分。假如进入百大学校,校长就要提出愿景并通知其余的智能体,当初咱们要达到什么样的指标。校长的愿景可能是传授每年都要发 3 篇期刊。这些智能体都是分层的,所以下面的智能体,他的动作就是提出愿景。他把他的愿景传给下一层的智能体,下一层的智能领会接管这个愿景。如果他上面还有其余智能体,他就会提出新的愿景。比方,校长要传授发期刊论文,但传授本人没工夫试验,他也只可能让上面的研究生做试验。所以传授就提出愿景,做出试验的布局,研究生才是执行这个试验的人。把试验做进去当前,大家就能够失去处分。当初是这样的,在学习的时候,每一个智能体都会学习,他们的整体指标就是要失去最初的处分。后面的智能体,他们提出来的动作就是愿景。然而,假如他们提出来的愿景是上面的智能体达不到的,就会被厌恶。例如,传授都始终让研究生做一些很艰难的试验,研究生做不进去,传授就会失去一个惩办。所以如果上层的智能体没有方法达到下层智能体所提出来的指标,下层的智能体就会被厌恶,它就会失去一个负处分。所以他要防止提出的那些愿景是上层的智能体做不到的。每一个智能体都把下层的智能体所提出的愿景当作输出,决定他本人要产生什么输入。

然而就算看到下面的愿景让咱们做某件事情,最初也不肯定能做成这件事件。如图 9.10 所示,假如原本传授的指标是要发期刊论文,但他忽然切换指标,要变成一个 YouTuber。这时,咱们须要把原来的愿景改成变成 YouTuber。因为尽管原本的愿景是发期刊论文,然而起初变成 YouTuber,这些动作是没有被节约的。咱们就假如,原本的愿景就是要成为 YouTuber,咱们就晓得成为 YouTuber 要怎做了。这就是分层强化学习,是能够实现的技巧。

图 9.11 是实在游戏的例子。第一个游戏是走迷宫,蓝色的是智能体,蓝色的智能体要走到黄色的指标。第二个游戏是单摆,单摆要碰到黄色的球。愿景是什么呢?在走迷宫游戏外面,只有两个智能体,上层的智能体负责决定要怎么走,下层的智能体负责提出愿景。尽管,实际上咱们能够用很多层,但这只用了两层。走迷宫的游戏中粉红色的点代表的就是愿景。下层的智能体通知蓝色的智能体,咱们当初的第一个指标是先走到某个地位。蓝色的智能体达到当前,再说新的指标是走到另一个地位。蓝色的智能体再达到当前,新的指标会在其余地位。接下来蓝色的智能体又达到这个地位,最初心愿蓝色的智能体能够达到黄色的地位。单摆的例子也一样,粉红色的点代表的是下层的智能体所提出的愿景,所以这个智能体先摆到这边,接下来,新的愿景又跑到某个地位,所以它又摆到对应的地位。而后,新的愿景又跑到下面。而后又摆到下面,最初就走到黄色的地位。这就是分层强化学习。

最初,咱们对分层强化学习进行总结。分层强化学习是指将一个简单的强化学习问题分解成多个小的、简略的子问题,每个子问题都能够独自用马尔可夫决策过程来建模。这样,咱们能够将智能体的策略分为高层次策略和低层次策略,高层次策略依据以后状态决定如何执行低层次策略。这样,智能体就能够解决一些非常复杂的工作。

  • 参考文献
  • 神经网络与深度学习

5. 强化学习从根底到进阶 - 常见问题和面试必知必答[9]:稠密处分、reward shaping、curiosity、分层强化学习 HRL

5.1. 外围词汇

  • 设计处分(reward shaping):当智能体与环境进行交互时,咱们人为设计一些处分,从而“指挥”智能体,通知其采取哪一个动作是最优的。须要留神的是,这个处分区别于环境的处分。其能够进步咱们估算 Q 函数时的准确性。
  • 外在好奇心模块(intrinsic curiosity module,ICM):其代表好奇心驱动这个技术中的减少新的处分函数当前的处分函数。
  • 课程学习(curriculum learning):一种狭义的用在强化学习中训练智能体的办法,其在输出训练数据的时候,采取由易到难的程序进行输出,也能够人为设计它的学习过程。这个办法在机器学习和强化学习中广泛应用。
  • 逆课程学习(reverse curriculum learning):相较于课程学习,逆课程学习为更狭义的办法。其从最终最现实的状态 [咱们称之为黄金状态(gold state)] 开始,顺次去寻找间隔黄金状态最近的状态作为想让智能体达到的阶段性的“现实”状态。当然,咱们会在此过程中无意地去掉一些极其的状态,即太简略、太难的状态。综上,逆课程学习是从黄金状态反推的办法。
  • 分层强化学习(hierarchical reinforcement learning):将一个大型的工作,横向或者纵向地拆解成由多个智能体去执行的子工作。其中,有一些智能体负责比拟高层次的工作,如负责定指标,定完指标后,再将指标调配给其余的智能体执行。

5.2. 常见问题汇总

5.2.1 解决稠密处分的办法有哪些?

设计处分、好奇心驱动的处分、课程学习、逆课程学习、分层强化学习等。

5.2.2 设计处分存在什么次要问题?

次要的问题是咱们人为设计的处分须要畛域常识,须要咱们本人设计出让环境与智能体更好地交互的处分,这须要不少的教训常识,并且须要咱们依据理论的成果进行调整。

5.2.3 外在好奇心模块是什么?咱们应该如何设计外在好奇心模块?

外在好奇心模块代表好奇心驱动技术中减少新的处分函数当前的处分函数。具体来说,其在更新计算时会思考 3 个新的局部,别离是状态 $s_1$、动作 $a_1$ 和状态 $s_2$。依据 $s_1$、$a_1$、$a_2$,它会输入另外一个新的处分 $r_1^i$。所以在内在好奇心模块中,咱们的总处分并不是只有 $r$ 而已,还有 $r^i$。它不是只把所有的 $r$ 相加,还把所有 $r^i$ 相加一并当作总处分。所以,基于外在好奇心模块的智能体在与环境交互的时候,不是只心愿 $r$ 越大越好,还同时心愿 $r^i$ 越大越好,心愿从外在好奇心模块外面失去的总处分越大越好。

对于如何设计外在好奇心模块,其输出就像后面所说的一样,包含 3 局部,即当初的状态 $s_1$、在这个状态采取的动作 $a_1$、下一个状态 $s_{t+1}$,对应的输入就是处分 $r_1^i$。输出、输入的映射是通过网络构建的,其应用状态 $s_1$ 和动作 $a_1$ 去预测下一个状态 $\hat{s}_{t+1}$,而后持续评判预测的状态 $\hat{s}_{t+1}$ 和实在状态 $s_{t+1}$ 的相似性,越不类似失去的处分就越大。艰深来说这个处分就是,如果将来的状态越难被预测,那么失去的处分就越大。这就是好奇心机制,其偏向于让智能体做一些危险比拟大的动作,从而进步其摸索的能力。

同时,为了进一步加强网络的表达能力,咱们通常将外在好奇心模块的输出优化为特征提取,特征提取器的输出就是状态,输入是一个特征向量,其能够示意这个状态最次要和最重要的特色,把没有意义的事物过滤。

更多优质内容请关注公号:汀丶人工智能

正文完
 0