强化学习是用来加强或强化网络基于评判信息的一种学习方式。也就是说,在强化学习下训练的网络,会从环境中接收到一些反馈。然而,这些反馈是评估性的而不是像监督学习那样的指导性。基于这些反馈,网络调整权重以在未来获得更好的评判信息。
这个学习过程类似于监督学习,但我们可能拥有的信息非常少。下图给出了强化学习的框图:
强化学习的基本概念
构建模块:环境与代理
环境与代理是人工智能中强化学习的主要构建模块。本节将详细介绍它们:
代理(Agent)
代理是可以透过传感器感知其环境并通过效应器对其环境采取行动的任何事物。
人类代理具有类似传感器的眼睛、耳朵、鼻子、舌头和皮肤等感觉器官,以及类似效应器的手、脚、嘴等其他器官。
机器人代理则用摄像头和红外测距仪代替传感器,用各种马达和致动器代替效应器。
软件代理则以其程序和动作为编码的位串。
环境(Environment)
环境则是代理所处的世界或系统,它可以是物理世界的一部分或者完全抽象的,如棋盘游戏的状态空间。环境根据代理的动作作出反应,并向代理提供反馈,这种反馈通常是以奖励的形式给出,表明代理行为的好坏。代理的目标是学习如何采取行动以最大化累积奖励。
强化学习的基本构成示意图
这里应当插入一个代表强化学习系统构成的框图,展示代理如何与环境交互,接收反馈,并据此更新其行为策略。框图应包括代理、环境、动作、奖励等关键元素。
请注意,虽然文本描述了强化学习的原理和组成部分,但由于文本格式的限制,具体的框图需要在实际文档或演示文稿中插入。
代理术语
在人工智能的强化学习中,以下术语被更频繁地使用:
代理性能度量
这是确定代理成功的标准。
代理行为
这是代理在任何给定的感知序列后执行的动作。
感知
这是代理在某一时刻的感知输入。
感知序列
这是代理至今为止感知到的所有历史记录。
代理函数
这是从感知序列到动作的映射。
环境
有些程序运行在一个完全人造的环境中,局限于键盘输入、数据库、计算机文件系统和屏幕上的字符输出。
相比之下,有些软件代理,例如软件机器人或软体机器人,存在于丰富且无限的软体领域中。模拟器具有非常详细和复杂的环境。软件代理需要实时从一系列动作中选择。
例如,设计用于扫描客户在线偏好的软体机器人,并向客户展示有趣项目的软体机器人就在真实和人造环境中工作。
环境的属性
环境有多重属性,如下所述:
离散/连续
如果环境中有有限数量的、明确定义的状态,则环境为离散;否则为连续。例如,象棋是一个离散环境,而驾驶是一个连续环境。
可观测/部分可观测
如果可以从感知中确定环境在每个时间点的完整状态,则它是可观察的;否则仅部分可观测。
静态/动态
如果代理在行动时环境不发生变化,则它是静态的;否则是动态的。
单代理/多代理
环境中可能包含其他代理,它们可能是与该代理相同或不同种类的代理。
可访问/不可访问
如果代理的感官装置可以访问环境的完整状态,则该环境对该代理是可访问的;否则不可访问。
确定性/非确定性
如果环境的下一个状态完全由当前状态和代理的动作决定,则环境是确定性的;否则是非确定性的。
分段/非分段
在分段环境中,每一分段包含代理感知然后行动的过程。其动作的质量仅仅取决于这一分段本身。后续分段不依赖于前一分段中的动作。分段环境更为简单,因为代理不需要提前思考。
使用 Python 构建环境
为了构建强化学习代理,我们将使用 OpenAI Gym 包,可以通过以下命令安装:
pip install gym
OpenAI Gym 中有多种环境可用于不同目的。其中一些是 Cartpole-v0、Hopper-v1 和 MsPacman-v0。它们需要不同的引擎。
对于 cartpole-v0
环境的 Python 代码示例如下:
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample())
您可以以类似的方式构建其他环境。
使用 Python 构建学习代理
为了构建强化学习代理,我们将使用 OpenAI Gym 包,如下面的示例所示:
import gym
env = gym.make('CartPole-v0')
for _ in range(20):
observation = env.reset()
for i in range(100):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(i+1))
break
请注意,小车上的杆可以保持平衡。