PyTorch深度学习实战 | 强化学习

PyTorch深度学习实战 | 强化学习
文章图片
PyTorch是当前主流深度学习框架之一 , 其设计追求最少的封装、最直观的设计 , 其简洁优美的特性使得PyTorch代码更易理解 , 对新手非常友好 。
本文主要介绍深度学习领域中强化学习部分 。
1
什么是强化学习
强化学习是机器学习的一个重要分支 , 它与非监督学习、监督学习并列为机器学习的三类主要学习方法 , 三者之间的关系如图1.7所示 。 强化学习强调如何基于环境行动 , 以取得最大化的预期利益 , 所以强化学习可以被理解为决策问题 。 它是多学科、多领域交叉的产物 , 其灵感来自心理学的行为主义理论 , 即有机体如何在环境给予的奖励或惩罚的刺激下 , 逐步形成对刺激的预期 , 产生能获得最大利益的习惯性行为 。 强化学习的应用范围非常广泛 , 各领域对它的研究重点各有不同 , 在本书中 , 不对这些分支展开讨论 , 而专注于强化学习的通用概念 。
PyTorch深度学习实战 | 强化学习
文章图片
■图1.7强化学习、监督学习、非监督学习关系示意图
在实际应用中 , 人们常常会把强化学习、监督学习和非监督学习这三者混淆 , 为了更深刻地理解强化学习和它们之间的区别 , 首先介绍监督学习和非监督学习的概念 。
监督学习是通过带有标签或对应结果的样本训练得到一个最优模型 , 再利用这个模型将所有的输入映射为相应的输出 , 以实现分类 。
非监督学习即在样本的标签未知的情况下 , 根据样本间的相似性对样本集进行聚类 , 使类内差距最小化 , 学习出分类器 。
上述两种学习方法都会学习到输入到输出的一个映射 , 它们学习到的是输入和输出之间的关系 , 可以告诉算法什么样的输入对应着什么样的输出 , 而强化学习得到的是反馈 , 它是在没有任何标签的情况下 , 通过先尝试做出一些行为、得到一个结果 , 通过这个结果是对还是错的反馈 , 调整之前的行为 。 在不断的尝试和调整中 , 算法学习到在什么样的情况下选择什么样的行为可以得到最好的结果 。 此外 , 监督学习的反馈是即时的 , 而强化学习的结果反馈有延时 , 很可能需要走了很多步以后才知道之前某一步的选择是好还是坏 。
1

强化学习的4个元素
强化学习主要包含4个元素:智能体(agent)、环境状态(state)、行动(action)、反馈(reward),它们之间的关系如图1.8所示 , 详细定义如下 。
agent:智能体是执行任务的客体 , 只能通过与环境互动来提升策略 。
state:在每个时间节点 , agent所处的环境的表示即为环境状态 。
action:在每个环境状态中 , agent可以采取的动作即为行动 。
reward:每到一个环境状态 , agent就有可能会收到一个反馈 。
2

强化学习算法的目标
强化学习算法的目标就是获得最多的累计奖励(正反馈) 。 以“幼童学习走路”为例 , 幼童需要自主学习走路 , 没有人指导他应该如何完成“走路” , 他需要通过不断的尝试和获取外界对他的反馈来学习走路 。
在此例中 , 如图1.8所示 , 幼童即为agent , “走路”这个任务实际上包含以下几个阶段:站起来 , 保持平衡 , 迈出左腿 , 迈出右腿……幼童采取行动做出尝试 , 当他成功完成了某个子任务时(如站起来等) , 他就会获得一个巧克力(正反馈);当他做出了错误的动作时 , 他会被轻轻拍打一下(负反馈) 。 幼童通过不断地尝试和调整 , 找出了一套最佳的策略 , 这套策略能使他获得最多的巧克力 。 显然 , 他学习到的这套策略能使他顺利完成“走路”这个任务 。