Artificial Intelligence With Python 简明教程
AI with Python – Reinforcement Learning
在本章中,您将详细了解 AI 中强化学习的概念以及 Python 中的实现。
Basics of Reinforcement Learning
这种类型的学习用于根据批评信息强化或增强网络。也就是说,在强化学习下接受训练的网络从环境中收到一些反馈。但是,与监督学习的情况不同,反馈是评估而不是指导性的。基于此反馈,网络会对权重进行调整,以便在将来获得更好的批评信息。
这种学习过程类似于监督学习,但我们可能的信息很欠缺。下图给出了强化学习的框图 −
Building Blocks: Environment and Agent
环境和智能体是 AI 中强化学习的主要构建模块。本节将详细讨论它们 −
Agent
代理是可以通过传感器感知其环境并通过效应器对环境采取行动的任何事物。
-
一个 human agent 具有传感器,例如眼睛、耳朵、鼻子、舌头和皮肤,以及其他器官,例如手、腿、嘴巴,用于效应器。
-
一个 robotic agent 用摄像头和红外测距仪替换传感器,以及各种电机和驱动器用于效应器。
-
一个 software agent 将编码的位串作为其程序和操作。
Agent Terminology
以下术语在 AI 中的强化学习中使用得更频繁 −
-
Performance Measure of Agent − 这是决定智能体成功程度的标准。
-
Behavior of Agent − 这是智能体在任何给定的知觉序列后执行的动作。
-
Percept − 这是智能体在特定时间点的感知输入。
-
Percept Sequence − 这是到目前为止智能体感知到所有事物的历史记录。
-
Agent Function − 这是从知觉序列到动作的映射。
Environment
有些程序完全在 artificial environment 中运行,仅限于键盘输入、数据库、计算机文件系统和屏幕上的字符输出。
相比之下,一些软件代理(如软件机器人或软机器人)存在于丰富且无限的软机器人域中。模拟器具有 very detailed 和 complex environment 。软件代理需要实时从一系列操作中进行选择。
例如,旨在扫描客户的在线偏好并向客户展示有趣商品的软机器人,既可以在 real 中工作,也可以在 artificial 环境中工作。
Properties of Environment
该环境具有如下所述的多重属性 −
-
Discrete/Continuous − 如果环境具有数量有限、定义明确的不同状态,则该环境是离散的,否则则是连续的。例如,国际象棋是离散环境,驾驶是连续环境。
-
Observable/Partially Observable − 如果可以从感知中确定每个时间点的环境的完整状态,则该环境是可观察到的;否则,它只是部分可观察到的。
-
Static/Dynamic − 如果环境在代理操作时不改变,则为静态;否则为动态的。
-
Single agent/Multiple agents − 环境可能包含其他代理,它们可能与该代理属于同类或不同类。
-
Accessible/Inaccessible − 如果代理的感官设备可以访问环境的完整状态,则该代理可以访问该环境;否则,该代理无法访问该环境。
-
Deterministic/Non-deterministic − 如果环境的下一个状态完全由当前状态和代理的操作决定,则环境是确定性的;否则为非确定性的。
-
Episodic/Non-episodic − 在一个情节环境中,每个情节都包括代理感知然后行动。其行动的质量仅取决于情节本身。后续情节不依赖于先前情节中的行动。情节环境要简单得多,因为代理不需要提前思考。
Constructing an Environment with Python
为了构建强化学习代理,我们将使用 OpenAI Gym 包,可以通过以下命令进行安装 −
pip install gym
OpenAI 健身房中有各种环境可以用于各种目的。其中一些是 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())
您可以以类似的方式构建其他环境。
Constructing a learning agent with 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
请注意,平衡杆可以自行平衡。