强化学习
在本章中,您将详细学习使用Python进行AI强化学习的概念。
强化学习基础
这种类型的学习被用来加强或加强基于评论者信息的网络。 也就是说,在强化学习下训练的网络从环境中获得一些反馈。 但是,反馈是评价性的,并且不像监督式学习的情况那样具有启发性。 基于这种反馈,网络将对权重进行调整以获得更好的评论信息。
这个学习过程类似于监督学习,但我们可能拥有的信息非常少。 下图给出了强化学习的框图 -
构建模块:环境和代理
环境和代理是人工智能强化学习的主要构件。 本节详细讨论它们 -
媒介代理
代理媒介是能够通过传感器感知其环境并通过效应器作用于该环境的任何事物。
- 人用媒介具有与传感器平行。诸如眼睛,耳朵,鼻子,舌头和皮肤之类的感觉器官以及用于效应器的诸如手,腿,嘴等其他器官。
- 机器人媒介取代了传感器的摄像头和红外测距仪,以及各种效应器的马达和执行器。
- 软件媒介已将位串编码为其程序和操作。
代理术语
以下术语在AI中的强化学习中更频繁地使用 -
- 代理的性能测量 - 这是决定代理成功程度的标准。
- 代理的行为 - 代理在任何给定的感知顺序之后执行的行为。
- 感知 - 它是特定实例中代理的感知输入。
- 感知序列 - 这是代理人迄今为止所了解的所有历史。
- 代理功能 - 它是从训示序列到动作的映射。
环境
某些程序在局限于键盘输入,数据库,计算机文件系统和屏幕上字符输出的完全人造环境中运行。
相比之下,一些软件代理(如软件机器人或软驱)存在于丰富且无限的软域中。 模拟器具有非常详细和复杂的环境。 软件代理需要实时从多种行为中进行选择。
例如,设计用于扫描顾客的在线偏好并向顾客展示有趣物品的软堆可在真实环境和人工环境中工作。
环境属性
如下所述,环境具有多重属性 -
- 离散/连续 - 如果环境的数量有限且截然不同,则环境是离散的,否则它是连续的。 例如,象棋是一个离散的环境,驾驶是一个连续的环境。
- 可观察/部分可观察 - 如果可以从知觉中确定每个时间点环境的完整状态,则可观察到; 否则它只是部分可观察的。
- 静态/动态 - 如果环境在代理正在执行时没有改变,那么它是静态的; 否则它是动态的。
- 单个代理/多个代理 - 环境可能包含其他代理,这些代理可能与代理的类型相同或不同。
- 可访问/不可访问 - 如果代理的传感设备可以访问完整的环境状态,则可以访问该代理的环境; 否则它是无法访问的。
- 确定性/非确定性 - 如果环境的下一个状态完全由当前状态和代理的行为决定,那么环境是确定性的; 否则它是非确定性的。
- 情节式/非情节式 - 在情节化环境中,每个情节由代理人感知并然后行动组成。 其行动的质量取决于情节本身。 随后的剧集不依赖于前几集中的动作。 情景环境要简单得多,因为代理人不需要提前思考。
用Python构建环境
对于建设强化学习代理,将使用OpenAI Gym软件包,该软件包可使用以下命令来安装 -
pip install gym
OpenAI健身房有各种各样的环境可以用于各种目的。 其中很少是:Cartpole-v0,Hopper-v1和MsPacman-v0。 他们需要不同的引擎。 OpenAI Gym的详细文档可以在 https://gym.openai.com/docs/#environments 找到。
以下代码显示了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
观察小推车可以平衡。
扫描二维码
程序员编程王