详情请见莫烦老师DQN主页:DQN 算法更新 (Tensorflow) - 强化学习 Reinforcement Learning | 莫烦Python
莫烦老师代码(没有我繁琐注释代码直通车):MorvanZhou/Reinforcement-learning-with-tensorflow
参考文献:Playing Atari with Deep Reinforcement Learning
https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
看图片版代码,见下一篇,等我学会贴代码。。。
第一次在网上写文章,不知怎么注明参考出处,如涉及侵权问题请评论告诉我。
本人初入强化学习,看莫烦老师的课受益匪浅,再次由衷的感谢老师的无私奉献,笔芯❤~
由于本人不懂的地方太多,所以注释的比较多,当然也加入了老师的注释。供以后学习参考,和其他小白一起进步。
建议参考DQN算法的英文流程,我也不知道这种中文注释能在哪里更方便的上传,就在这里发好啦,这里排版没准乱如果真要参考,就拷到编辑器上吧
废话不多说:
-----------这里是run_this.py文件嘿嘿嘿-----------------------------------------------------
#更新的步骤
from maze_env import Maze
from RL_brain import DeepQNetwork#引入了自己写的maze_env,RL_brain模块中class maze,class DeepQNetwork
def run_maze():
step = 0#为了记录当前走的第几步,因为先要存储一些记忆,当记忆库中有一些东西的时候才去学习
for episode in range(300):
# initial observation
observation = env.reset()#环境给出初始坐标
while True:
# fresh env更新环境
env.render()
# RL choose action based on observation根据观测值选择一个动作
action = RL.choose_action(observation)
# RL take action and get next observation and reward选择动作后得到观测值,奖励,是否终结done的信息
observation_, reward, done = env.step(action)
RL.store_transition(observation, action, reward, observation_)##重要:存储记忆:现在这步观测值,采取的动作。会得到的奖励,采取行动后下一步观测值
# 控制学习起始时间和频率 (先累积一些记忆再开始学习)
if (step > 200) and (step % 5 == 0):#当步数大于两百的时候才开始学习,每五步学习一次
RL.learn()
# swap observation
observation = observation_#更新观测值
# break while loop when end of this episode
if done:
break
step += 1
# end of game
print('game over')
env.destroy()
if __name__ == "__main__":
# maze game
env = Maze()#引入环境
RL = DeepQNetwork(env.n_actions, env.n_features,
learning_rate=0.01,
reward_decay=0.9,
e_greedy=0.9,
replace_target_iter=200, # 每 200 步替换一次 target_net 的参数
memory_size=2000,# 记忆上限
output_graph=False # 是否输出 tensorboard 文件
)
env.after(100, run_maze)
env.mainloop()
RL.plot_cost() # 观看神经网络的误差曲线
--------------这里是RL_brain.py,核心啊,看了好几天哭------------------------------------
import numpy as np
import tensorflow as tf
np.random.seed(1)
tf.set_random_seed(1)
# Deep Q Network off-policy
class DeepQNetwork:
def __init__(
self,
n_actions,#输出多少个action的值
n_features,#接受多少个观测值的相关特征
learning_rate=0.01,#NN中learning_rate学习速率
reward_decay=0.9,#Q-learning中reward衰减因子
e_greedy=0.9,