Neural network 如何用Q-学习训练神经网络
我只是在没有神经网络的情况下实现了Q学习,但我一直在用神经网络实现Q学习 我将为您提供一个伪代码,说明我的Q-Learning是如何实现的:Neural network 如何用Q-学习训练神经网络,neural-network,reinforcement-learning,q-learning,Neural Network,Reinforcement Learning,Q Learning,我只是在没有神经网络的情况下实现了Q学习,但我一直在用神经网络实现Q学习 我将为您提供一个伪代码,说明我的Q-Learning是如何实现的: train(int iterations) buffer = empty buffer for i = 0 while i < iterations: move = null if random(0,1) > threshold: move = random_mov
train(int iterations)
buffer = empty buffer
for i = 0 while i < iterations:
move = null
if random(0,1) > threshold:
move = random_move()
else
move = network_calculate_move()
input_to_network = game.getInput()
output_of_network = network.calculate(input_to_network)
game.makeMove(move)
reward = game.getReward()
maximum_next_q_value = max(network.calculate(game.getInput()))
if reward is 1 or -1: //either lost or won
output_of_network[move] = reward
else:
output_of_network[move] = reward + discount_factor * max
buffer.add(input_to_network, output_of_network)
if buffer is full:
buffer.remove_oldest()
train_network()
train_network(buffer b):
batch = b.extract_random_batch(batch_size)
for each input,output in batch:
network.train(input, output, learning_rate) //one forward/backward pass
列车(整数次迭代)
缓冲区=空缓冲区
当i<迭代次数时,对于i=0:
move=null
如果随机(0,1)>阈值:
移动=随机移动()
其他的
移动=网络计算移动()
输入到网络=game.getInput()
网络的输出=网络。计算(网络的输入)
游戏。移动(移动)
奖励=游戏。获取奖励()
max\u next\u q\u value=max(network.calculate(game.getInput()))
如果奖励为1或-1://则为输赢
_网络的输出_[移动]=奖励
其他:
网络[移动]的输出=奖励+折扣系数*最大值
添加(输入到网络,输出网络)
如果缓冲区已满:
buffer.remove_oldest()
列车网络()
列车网络(缓冲器b):
批次=b.提取随机批次(批次大小)
对于每个输入,批量输出:
网络训练(输入、输出、学习率)//一次向前/向后传球
我现在的问题是,这段代码适用于小于200的缓冲区大小。
对于任何超过200的缓冲区,我的代码不再工作,因此我有几个问题: