📜  带有Python的AI强化学习

📅  最后修改于: 2020-12-11 05:47:58             🧑  作者: Mango


在本章中,您将详细学习有关使用Python进行AI强化学习的概念。

强化学习基础

这种类型的学习用于基于评论者信息来增强或加强网络。即,正在强化学习下训练的网络从环境中接收一些反馈。但是,在监督学习的情况下,反馈是评估性的,而不是指导性的。基于此反馈,网络将对权重进行调整,以在将来获得更好的评论者信息。

此学习过程类似于监督学习,但是我们所掌握的信息可能很少。下图给出了强化学习的框图-

强化学习基础

构件:环境和代理

环境和Agent是AI中强化学习的主要构建块。本节详细讨论它们-

代理商

代理是可以通过传感器感知其环境并通过效应器在该环境上起作用的任何事物。

  • 人类试剂具有与传感器平行的感觉器官,例如眼睛,耳朵,鼻子,舌头和皮肤,以及其他器官,例如效应器的手,腿,嘴。

  • 机器人代理代替了用于传感器的照相机和红外测距仪,以及用于效应器的各种电机和致动器。

  • 软件代理已将位字符串编码为其程序和动作。

代理术语

以下术语在AI的强化学习中更常用-

  • 代理的绩效评估-这是确定代理成功与否的标准。

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

  • 知觉-这是深红色€™的在给定的情况下感知输入。

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

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

环境

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

相反,某些软件代理(例如软件机器人或软件机器人)存在于丰富且无限的软件机器人域中。该模拟器具有非常详细复杂的环境。软件代理需要实时从多种操作中进行选择。

例如,一个旨在扫描客户在线偏好并向客户显示有趣项目的软件机器人可以在真实环境和人工环境中工作。

环境性质

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

  • 离散/连续-如果环境的状态数量有限且清晰定义,则该环境为离散状态,否则为连续状态。例如,国际象棋是一个离散的环境,而驾驶是一个连续的环境。

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

  • 静态/动态-如果代理在操作时环境没有变化,则它是静态的;否则它是动态的。

  • 单个代理/多个代理-环境中可能包含与该代理具有相同或不同种类的其他代理。

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

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

  • 情节/非情节-在情节环境中,每个情节都由主体感知然后行动。其动作的质量仅取决于情节本身。后续情节不取决于先前情节中的动作。情景环境要简单得多,因为代理不需要提前考虑。

环境性质

使用Python构建环境

对于建筑加固学习代理,我们将使用OpenAI Gym软件包,可以在以下命令的帮助下进行安装-

pip install gym

OpenAI体育馆有多种环境,可用于各种目的。它们很少是Cartpole-v0,Hopper-v1MsPacman-v0 。他们需要不同的引擎。可以在https://gym.openai.com/docs/#environments上找到OpenAI Gym的详细文档。

以下代码显示了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构造学习代理

请注意,小刀可以平衡自己。