强化学习-Deep Q Network

打印 上一主题 下一主题

主题 1019|帖子 1019|积分 3057

Deep Q Network


这种方式很适及格子游戏。因为格子游戏中的每一个格子就是一个状态,这是离散的,但在现实生活中,许多状态并不是离散而是连续的。所以我们可以通过神经网络来完成离散状态的任务,初始输入是状态,输出的各个举动对应的Q值(也可以理解为概率),如许初始输入就可以是连续的即状态可以是连续的
Q learning和DQN并没有根本的区别。只是DQN用神经网络,也就是一个函数(神经网络)替换了原来Q table而已。Deep network + Q learning = DQN

这里的Q值就是神经网络最后输出的差别举动的概率

zip(*batch)的内部实现

首先,来看下 batch 的构造:
  1. batch = sample(history_memory, min(len(history_memory), args.batch_size))
复制代码
batch 是通过从 history_memory 中采样得到的,假设 history_memory 是一个包含多个经验的列表,其中每个经验是一个四元组(state, reward, next_state, terminal)。每个元素看起来像如许:
  1. [state, reward, next_state, terminal]
复制代码
当你通过 zip(*batch) 时,*batch 会将 batch 中的每个四元组解包成四个差别的列表或元组,分别对应 state, reward, next_state 和 terminal。
假设:

  1. batch = [
  2.     (state_1, reward_1, next_state_1, terminal_1),
  3.     (state_2, reward_2, next_state_2, terminal_2),
  4.     (state_3, reward_3, next_state_3, terminal_3)
  5. ]
复制代码
当你实行 zip(*batch) 时,*batch 会解包成如下的四个参数传递给 zip():
  1. zip((state_1, reward_1, next_state_1, terminal_1),
  2.     (state_2, reward_2, next_state_2, terminal_2),
  3.     (state_3, reward_3, next_state_3, terminal_3))
复制代码
然后,zip() 函数会按位置将这些元组的元素“对齐”在一起,结果如下:
  1. [(state_1, state_2, state_3),
  2. (reward_1, reward_2, reward_3),
  3. (next_state_1, next_state_2, next_state_3),
  4. (terminal_1, terminal_2, terminal_3)]
复制代码
结果:

zip(*batch) 会返回一个迭代器,生成的是一个包含四个元组的列表(假设 batch 中有三个经验):
  1. (state_batch, action_batch, reward_batch, next_state_batch, terminal_batch)
复制代码
这四个元组分别对应:


  • state_batch: 包含全部的 state 值(state_1, state_2, state_3)
  • reward_batch: 包含全部的 reward 值(reward_1, reward_2, reward_3)
  • next_state_batch: 包含全部的 next_state 值(next_state_1, next_state_2, next_state_3)
  • terminal_batch: 包含全部的 terminal 值(terminal_1, terminal_2, terminal_3)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表