- Python人工智能教程
- 首页
- Python人工智能 - 基础概念
- Python人工智能 - 入门
- Python人工智能 - 机器学习
- Python人工智能 - 数据准备
- 监督学习:分类
- 监督学习:回归
- Python人工智能 - 逻辑编程
- 无监督学习:聚类
- 自然语言处理
- Python人工智能 - NLTK包
- 分析时间序列数据
- Python人工智能 - 语音识别
- Python人工智能 - 启发式搜索
- Python人工智能 - 游戏
- Python人工智能 - 神经网络
- 强化学习
- Python人工智能 - 遗传算法
- Python人工智能 - 计算机视觉
- Python人工智能 - 深度学习
- Python人工智能资源
- Python人工智能 - 快速指南
- Python人工智能 - 有用资源
- Python人工智能 - 讨论
Python人工智能 - 强化学习
在本章中,您将详细了解Python人工智能中强化学习的概念。
强化学习基础
这种类型的学习用于根据评论信息加强或增强网络。也就是说,在强化学习下训练的网络会从环境中收到一些反馈。但是,与监督学习的情况不同,反馈是评估性的,而不是指示性的。根据此反馈,网络执行权重的调整,以在将来获得更好的评论信息。
此学习过程类似于监督学习,但我们可能只有很少的信息。下图给出了强化学习的框图 -
构建模块:环境和代理
环境和代理是人工智能中强化学习的主要构建模块。本节将详细讨论它们 -
代理
代理是任何可以通过传感器感知其环境并通过效应器作用于该环境的事物。
一个人类代理具有与传感器平行的感官器官,如眼睛、耳朵、鼻子、舌头和皮肤,以及其他器官,如手、腿、嘴,作为效应器。
一个机器人代理用摄像头和红外测距仪代替传感器,用各种电机和执行器代替效应器。
一个软件代理将其程序和操作编码为位串。
代理术语
以下术语在人工智能中的强化学习中更常用 -
代理的性能度量 - 它是确定代理成功程度的标准。
代理的行为 - 它是代理在任何给定的感知序列后执行的操作。
感知 - 它是代理在给定时刻的感知输入。
感知序列 - 它是代理迄今为止感知的所有内容的历史记录。
代理函数 - 它是从感知序列到操作的映射。
环境
一些程序在完全人工环境中运行,仅限于键盘输入、数据库、计算机文件系统和屏幕上的字符输出。
相比之下,一些软件代理,例如软件机器人或软机器人,存在于丰富且无限的软机器人领域中。模拟器具有非常详细且复杂的环境。软件代理需要实时从大量操作中进行选择。
例如,一个旨在扫描客户在线偏好并向客户展示有趣商品的软机器人,在真实和人工环境中工作。
环境的属性
环境具有如下所述的多方面属性 -
离散/连续 - 如果环境存在有限数量的不同、明确定义的状态,则该环境是离散的,否则它是连续的。例如,国际象棋是一个离散的环境,而驾驶是一个连续的环境。
可观察/部分可观察 - 如果可以从感知中确定每个时间点的环境的完整状态,则它是可观察的;否则它只是部分可观察的。
静态/动态 - 如果环境在代理执行操作时不发生变化,则它是静态的;否则它是动态的。
单代理/多代理 - 环境可能包含其他代理,这些代理可能与代理相同或不同。
可访问/不可访问 - 如果代理的感官装置可以访问环境的完整状态,则该环境对该代理是可访问的;否则它是不可访问的。
确定性/非确定性 - 如果环境的下一个状态完全由当前状态和代理的操作决定,则该环境是确定性的;否则它是非确定性的。
情节性/非情节性 - 在情节性环境中,每个情节都包括代理感知然后采取行动。其行动的质量仅取决于情节本身。后续情节不依赖于先前情节中的操作。情节性环境要简单得多,因为代理不需要提前思考。
使用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
观察到手推车可以自行平衡。