Python强化学习


在本章中,您将详细了解使用Python在AI中强化学习的概念。

强化学习的基础知识

这种类型的学习用于基于评论者信息来加强或加强网络。也就是说,在强化学习下训练的网络从环境中接收一些反馈。然而,反馈是有评价性的,而不是像监督学习那样具有指导性。基于该反馈,网络执行权重的调整以在将来获得更好的批评信息。

这种学习过程类似于监督学习,但我们的信息可能非常少。下图给出了强化学习的方框图 -

强化学习的基础知识

构建块:环境和代理

环境与代理是人工智能强化学习的主要组成部分。本节将详细讨论它们 -

代理人

代理商是指通过传感器感知其环境并通过效应器对该环境起作用的任何事物。

  • 一个 人的代理人 有感觉器官如眼,耳,鼻,舌和皮肤平行的传感器和其他器官如手,脚,嘴,用于效应。

  • 机器人剂 代替摄像机和用于传感器红外线测距仪,和各种马达及致动器用于效应器。

  • 一个 软件代理 已编码的比特串作为它的方案和行动。

代理术语

人工智能中强化学习中使用以下术语 -

  • 代理的绩效衡量 - 这是 衡量代理人 成功程度的标准。

  • 代理行为 - 代理在任何给定的感知序列之后执行的操作。

  • 知觉 -这是代理在给定的情况下感知输入。

  • 感知 序列 - 它是代理人迄今为止所感知的所有历史。

  • 代理功能 - 它是从规则序列到动作的映射。

环境

某些程序在完全 人为的环境中 运行,仅限于键盘输入,数据库,计算机文件系统和屏幕上的字符输出。

相比之下,一些软件代理,如软件机器人或软机器人,存在于丰富且无限的软机器人域中。模拟器具有 非常详细复杂的环境 。软件代理需要实时从一系列动作中进行选择。

例如,设计用于扫描客户的在线偏好并向客户显示有趣项目的软机器人在 真实 环境人工环境中工作

环境属性

环境具有多重属性,如下所述 -

  • 离散/连续 - 如果环境中有明显不同的,明确定义的状态,则环境是离散的,否则它是连续的。 例如,国际象棋是一个离散的环境,而驾驶是一个连续的环境。

  • 可观察/部分可观察 - 如果可以从感知中确定每个时间点的完整环境状态,则可以观察到; 否则只能部分观察到。

  • 静态/动态 - 如果代理正在运行时环境没有改变,那么它是静态的; 否则它是动态的。

  • 单个代理/多个代理 - 环境可能包含其他代理,这些代理可能与代理的代理相同或不同。

  • 可访问/无法访问 - 如果代理的传感设备可以访问完整的环境状态,则该代理可以访问该环境; 否则它是无法访问的。

  • 确定性/非确定性 - 如果环境的下一个状态完全由当前状态和代理的动作决定,那么环境是确定性的; 否则它是不确定的。

  • 情节/非情节 - 在情节环境中,每一集都由代理人感知并随后行动起来。 其行动的质量仅取决于剧集本身。后续剧集不依赖于前一集中的动作。情境环境要简单得多,因为代理人不需要提前思考。

环境属性

用Python构建环境

为了构建强化学习代理,我们将使用 OpenAI Gym 软件包,可以在以下命令的帮助下安装 -

pip install gym

OpenAI健身房有各种环境,可用于各种用途。其中很少是 Cartpole-v0,Hopper-v1MsPacman-v0。他们需要不同的引擎。的详细资料 OpenAI健身房 上可以找到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构建环境

您可以以类似的方式构建其他环境。

用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

用Python构建学习代理

观察到cartpole可以平衡自己。