AI与Python - 强化学习

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

强化学习基础知识

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

这种学习过程与监督学习类似,但我们的信息可能非常少.下图给出了强化学习和减去的框图;

强化学习基础

构建基块:环境和代理

环境和代理是AI中强化学习的主要构建块.本节将详细讨论它们 :

代理商

代理商可以通过传感器感知其环境并通过效应器对该环境采取行动.

  • 人类代理有感觉器官,如眼睛,耳朵,鼻子,舌头和皮肤平行于传感器和其他器官,如手,腿,嘴,用于效应器.

  • 机器人代理取代相机和用于传感器的红外测距仪,以及用于效应器的各种电机和执行器.

  • A 软件代理已编码位串作为其程序和行动.

代理术语

以下术语更常用于强化学习AI :

  • 代理的绩效衡量 : 这是一个标准,它决定了代理人的成功程度.

  • 代理行为 : 它是代理在任何给定的感知序列之后执行的动作.

  • 感知 : 它是代理在给定实例中的感知输入.

  • 感知序列 : 这是代理人迄今为止所有的历史.

  • 代理人职能 : 它是从序列序列到动作的映射.

环境

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

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

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

环境属性

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

  • 离散/连续 : 如果存在有限数量的不同的,明确定义的环境状态,则环境是离散的,否则它是连续的.例如,国际象棋是一个离散的环境,驾驶是一个连续的环境.

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

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

  • 单一代理/多个代理 : 环境可能包含其他代理,可能与代理的代理相同或不同.

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

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

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

环境属性

使用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())


构建一个学习代理与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

Constructing a learning agent with Python

观察到cartpole可以平衡自己。