强化学习同样是一个很古老在很早之前就已经提出来的思想,目前主要应用与游戏领域,并且已经在该领域取得了不错的成绩,达到了超越人类的水平。它与一般的有监督学习不同,没有标签的概念,而只有奖励机制,通过给智能体反馈正向或者反向的奖励来约束智能体找到一个最优解,并且它要比有监督学习的训练复杂,值得高兴的是目前科学家们已经提出了可以简化构建一个强化学习系统的各种技术与框架。现在就让我们来看看吧。
在强化学习中,用于观察环境做出决策的系统称之为智能体,智能体做出的决策应用与环境之后会获得奖励,奖励的正负取决于策略之后获得的回报(一般情况下奖励越大说明决策越优,反之亦然)。智能体的工作就是通过不断的试错,找到一个对于环境A做出决策X获得最大的奖励。
智能体用来决策对应环境A做出决策X的算法成为策略。智能体需要完成的就是在整个策略了空间内寻找一个应对当前环境最好的策略,这个过程就称为策略搜索。
策略搜索的方式有很多种,对于策略空间较小的情况,我们可以使用暴力所有的方式多次尝试不同的值,直到获得最优解。还可以使用遗传算法,先尝试多条策略筛选出较优的几条,然后保存较优策略了并加上其变体生成第二代继续筛选,以此类推。还可以使用策略梯度,通过评估策略参数有关的奖励梯度来调整参数,根据奖励的多少来调整参数优化的方向。
我们在训练一个智能体时有一个关键的前提,就是需要为智能体提供一个训练的环境。例如训练的是一个游戏的智能体则需要为它提供一个游戏的模拟器,如果训练的是一个行走的机器人那么就需要为智能体提供一个真是的陆地环境。但显然这样的方式并不完全可行,需要很大的投入和训练成本。OpenAI Gym的问世就是为了解决这一问题,它是一个工具包,提供了很多的模拟环境供我们训练一个智能体。
神经网络策略的思想与硬编码策略的思想是一样的,观察者的观察结果作为输入,执行的操作作为输出,神经网络会输出每个动作的概率,最后根据输出的概率随机选择一个动作执行。
以往我们在训练一个机器学习或者是神经网络模型时有损失函数,我们可以通过观察损失函数的值就能够判断模型做出的决策是否是好的。但是在强化学习中我们只有奖励机制,我们只有在完成一个任务之后才会知道任务的结果,我们没有办法知道在完成任务时所做的众多动作中,哪些是好的哪些是坏的,更没有办法将最终结果的奖励分配到每个一个动作上。
一种常见的用于评估动作的办法是根据一个动作完成后获得的奖励总和(动作回报)来评估一个动作。为了屏蔽会出现一些特殊的情况来干扰我们最后做出的判断,我们必须运行多个回合并归一化所有动作的回报,这样我们就可以看出所有的动作的优劣。
策略梯度算法(PG)是跟随朝着回报更高的梯度来优化策略的参数。
PG有一个常见的变体(REINFORCE),它会让智能体多次参加游戏并计算每个步骤的梯度。多个回合之后将梯度向量与动作的优势相乘,最后计算所有梯度向量的均值执行梯度下降。不过由于这个算法需要多个回合才能估算每个动作的优势,所以它的样本效率极低无法应用与更加复杂更大的任务。
马尔克夫决策过程(MDP)的基础是马尔克夫链,它是由固定数量的状态组成,每一个步骤会从一个状态切换到另一个转态(包括当前状态),每个状态切换的概率的固定的,切换过程随机选择状态。
马尔克夫决策过程基于马尔克夫链,智能体在做出决策时可以根据每个动作的概率选择所有可能的动作中的一个,完成状态转换后会返回一定的奖励,智能体要做的就是找到一个随着时间的推移最大化奖励的策略。
时序差分学习(TD)用于解决在马尔克夫决策过程中需要不断的经历才知道状态转换的概率以及转换之后的奖励问题。它使用探索策略来探索MDP并且随着他的发展会根据观察到的转变和奖励来更新状态的估计值。
Q学习是Q值迭代算法对最初位置转移概率和奖励情况的一种改进。它的工作方式是观察智能体的活动,逐步改善其对Q值的估算,一旦找到准确的Q值的估算值,那么最佳的策略就是最高Q值动作。
实现深度Q学习我们需要一个深度Q网络为每一个可能的动作都输出一个近似的Q值。为了使得深度Q网络可以选择动作,我们需要让智能体使用ε贪婪策略来探索环境,并且我们在训练深度Q网络的过程中不仅使用新的经验来训练,而是会把所有的经验都放在混冲去每次训练迭代都从中抽取一批次来训练。
深度学习算法面临着一个主要的问题,随着智能体探索环境他会更新策略,但是在新环境中学到的东西会破坏先前在其他环境中学到的东西,导致强化学习训练的不稳定,以及对超参数的值与随机种子的巨大敏感性。
目前有一些比较流行的强化学习算法,例如:Actor-Critic算法,Asynchronous Advantage Actor-Critic,Advantage Actor-Critic,Soft Actor-Critic,Proximal Policy Optimization,Curiosity-based exploration。每个算法各有特色,我们可以根据自己的实际情况选择合适的算法。
1. 你如何定义强化学习?它与常规的有监督学习或无监督学习有何不同?
强化学习是机器学习的一个领域,旨在创建能够在环境中采取行动的智能体,从而使奖励随着时间的推移而最大化。RL与常规有监督学习和无监督学习之间有很多差异。下面是一些差异:
·在有监督学习和无监督学习中,目标通常是在数据中找到模式并使用它们来进行预测。在强化学习中,目标是找到一个好的策略。
·与有监督学习不同,强化学习没有明确为智能体给出“正确”的答案。它必须通过反复试验错误来学习。
·与无监督学习不同,有一种通过奖励的有监督形式。我们不告诉智能体如何执行任务,但是会告诉智能体其成功或失败。
·强化学习代理需要在探索环境、寻找获得奖励的新方法以及利用已经知道的奖励来源之间找到适当的平衡。相反,有监督学习和无监督学习系统通常不需要担心探索。它们只是根据给定的训练数据。
·在有监督学习和无监督学习中,训练实例通常是独立的(实际上,它们通常是随机混洗的)。在强化学习中,连续观察通常不是独立的。智能体在继续前进之前可能会在环境的同一区域中停留一段时间,因此连续的观察结果将非常相关。在某些情况下,重播存储(缓冲区)用于确保训练算法能得到相当独立的观察结果。
2. 你能想到本章中未提到的RL的三种可能的应用吗?对于每一个来说,环境是什么?什么是智能体?有哪些可能的动作?有什么奖励?
除了第18章中提到的,这里还有一些强化学习的可能应用:
音乐个性化
环境是用户的个性化网络广播。智能体是决定该用户接下来要播放什么歌曲的软件。它可能的操作是播放目录中的任何歌曲(必须选择用户喜欢的歌曲)或播放广告(必须选择会引起用户兴趣的广告)。每次用户听一首歌曲,它都会得到很小的奖励;每次用户收听广告,它会得到更大的奖励;当用户跳过歌曲或广告时,它会得到负面奖励;如果用户离开,则得到更大的负面奖励。
市场营销
环境是你公司的营销部门。智能体是一种软件,它根据给定的个人资料和历史购买记录来定义应将邮件发送给哪个客户(对于每个客户,它有两个可能的操作:发送或不发送)。它为邮件的成本给予负面奖励,为该活动产生的估计收入给予正面奖励。
产品交付
让智能体控制一批货车,确定它们应该在仓库取什么货,应该去的地方,应该卸什么货,等等。对于按时交付的每种产品,它将获得正面奖励;而对于延迟交付的产品,它将获得负面奖励。
3. 折扣因子是多少?如果你修改折扣因子,最优策略会改变吗?
估计动作的值时,强化学习算法通常会汇总该动作带来的所有奖励,将更多的权重分配给即时奖励,将较少的权重分配给以后的奖励(考虑到某项动作对近期未来的影响大于遥远未来的影响)。为了对此建模,通常在每个时间步长应用折扣因子。例如,在折扣因子为0.9的情况下,当你估算操作的值时,在两个时间步长之后收到的100的奖励仅计为0.92×100=81。你可以将折扣因子视为衡量相对于当前的未来价
值的量度:如果它非常接近1,则未来的值几乎与现在的值相同;如果接近0,则仅是立即获得的奖励很重要。当然,这会对最优策略产生巨大影响:如果你看重未来,你可能愿意为最终回报的前景承担很多当即的痛苦;如果你不看重未来,则只会抓住你可以找到的任何可以立即获得的回报,从不对未来进行投资。
4. 你如何衡量强化学习智能体的性能?
要衡量强化学习智能体的性能,你可以简单地汇总它所获得的奖励。在模拟环境中,你可以运行许多个回合,查看其平均获得的总奖励(可以查看最小值、最大值、标准差等)。
5. 什么是贡献分配问题?什么时候发生?如何缓解呢?
信用分配问题是这样的事实:当强化学习智能体收到奖励时,它没有直接的方法来知道其先前的哪些行为促成了该奖励。这通常在动作和所得奖励之间存在较大延迟时发生(例如,在Atari的Pong游戏中,从智能体击球到获胜之间可能有几十个时间步长)。解决它的一种方法是在可能的情况下为智能体提供短期奖励。这通常需要有关任务的先验知识。例如,如果我们想建立一个会下棋的智能体,不是仅仅在赢得比赛时才给予奖励,我们可以在每次吃掉对手的一个棋子时给予奖励。
6. 使用重播缓冲区有什么意义?
智能体通常可以在其环境的同一区域中停留一段时间,因此在这段时间内,其所有的经历都非常相似。这可能会在学习算法中引入一些偏差。它可能会针对此环境区域调整其策略,但是一旦移出该区域,它的性能会不好。要解决此问题,你可以使用重播存储。智能体不使用最近的学习经历,而将基于过去的经历的缓冲来学习(也许这就是我们晚上做梦的原因:重播我们白天的经历并更好地学习?)。
7. 什么是异策略(off-policy)RL算法?
异策略RL算法学习最佳策略的值(即如果智能体采取最佳行动,则每个状态可以预期的折扣奖励总和),而智能体遵循不同的策略。Q学习是这种算法的一个很好的示例。相反,同策略的算法学习智能体实际执行的策略的值,包括探索和利用。
以上就是强化学习所有的内容,强化学习是一种独立于有监督无监督学习之外的一种人工智能体学习模式。我们对上文做一个总结就是:
对文章有任何疑惑或者想要和博主一起学机器学习一起进步的朋友们可以添加 群号:666980220。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!
项目地址: 码云地址