我的问题是关于在强化学习中使用 SARSA 算法来解决一个未折现的、持续的(非情节)问题(它可以用于这样的问题吗?)
我一直在研究 Sutton 和 Barto 的教科书,他们展示了如何修改 Q-learning 算法,以便它可以用于解决未打折扣的问题。他们在第 6.7 章中将新算法(用于未折现的问题)称为 R-learning。基本上,在 R-learning 中,每次迭代 Q(s,a) 的更新规则是:
Q(s,a) = Q(s,a) + alpha * [r - rho + max_a{Q(s',a)} - Q(s,a)]
在这里,只有在状态 s 选择贪婪动作时,才会在每次迭代中更新 rho。rho 的更新规则是:
rho = rho + beta * [r - rho + max_a{Q(s',a)} - max_a{Q(s,a)}]
(这里,alpha 和 beta 是学习参数。)现在,我的问题是关于 SARSA,而不是 Q-learning。我想修改 SARSA 算法,使其适用于平均奖励(未折扣)问题,就像修改 Q-learning 以用于平均奖励问题一样(我不知道这是否可能?) . 然而,在文献中我找不到关于如何针对平均奖励问题修改 SARSA 的确切解释。
以下是我对 SARSA 应如何用于未贴现问题的猜测。我猜更新规则应该是:
Q(s,a) = Q(s,a) + alpha * [r - rho + Q(s',a') - Q(s,a)], …
问题学习率如何影响收敛速度和收敛本身.如果学习率是恒定的,Q函数会收敛到最优开启还是学习率必然会衰减以保证收敛?
我正在尝试为乒乓球游戏实现Deep q学习算法。我已经使用表格作为Q函数实现了Q学习。它工作得很好,并学会了如何在10分钟内击败天真的AI。但是我无法使用神经网络作为Q函数逼近器来使其工作。
我想知道自己是否走在正确的轨道上,所以以下是我在做什么的摘要:
学习时,随机选择32个后续经验。然后,我为所有当前状态和操作Q(s,a)计算目标q值。
forall Experience e in batch
if e == endOfEpisode
target = e.getReward
else
target = e.getReward + discountFactor*qMaxPostState
end
现在,我有一组32个目标Q值,我正在使用批梯度下降法用这些值训练神经网络。我只是在做1个训练步骤。我应该怎么做?
我正在用Java编程,并将Encog用于多层感知器实现。问题在于培训非常缓慢,性能很弱。我想我缺少了一些东西,但是找不到。我希望至少会有一个不错的结果,因为表格方法没有问题。
artificial-intelligence neural-network q-learning encog deep-learning
在Sutton&Barto的RL书(链接)中,Watkins的Q(λ)学习算法如图7.14所示:
第10行"对于所有s,a:",这里的"s,a"适用于所有(s,a),而第8行和第9行中的(s,a)用于当前(s,a) , 这是正确的吗?
在第12行和第13行中,当'!= a*,执行第13行时,所有e(s,a)都将设置为0,那么当所有资格跟踪都设置为0时,资格跟踪的点是什么,因为情况'!= a*会经常发生.即使情况'!= a*不经常发生,但一旦发生,资格跟踪的含义将完全失败,那么Q将不会再次更新,因为所有的e(s,a)= 0,然后在每次更新时,如果使用替换迹线,e(s,a)仍将为0.
那么,这是一个错误吗?
我正在使用DQN算法在我的环境中训练代理,如下所示:
我已经调整了一些超参数(网络架构,探索,学习率),这些参数给了我一些下降的结果,但是仍然不如预期。在训练过程中,每个Epiode的奖励不断增加。Q值也在收敛(请参见图1)。但是,对于超参数的所有不同设置,Q损耗并未收敛(请参见图2)。我认为,Q损失缺乏收敛性可能是获得更好结果的限制因素。
我正在使用每20k个时间步更新一次的目标网络。Q损失以MSE计算。
您是否知道为什么Q损失没有收敛?Q-Loss是否必须收敛为DQN算法?我想知道,为什么大多数论文都没有讨论Q损失。
我无法理解on-policy方法(如A3C)和off-policy方法(如DDPG)之间的根本区别是什么.据我所知,无论行为政策如何,非政策方法都可以学习最优政策.它可以通过观察环境中的任何轨迹来学习.因此,我可以说非政策方法比政策方法更好吗?
我已经阅读了悬崖行走的例子,显示了SARSA和之间的区别Q-learning.它表示Q-learning将学习沿着悬崖行走的最佳政策,同时SARSA学会在使用epsilon-greedy政策时选择更安全的方式.但既然Q-learning已经告诉我们最优政策,为什么我们不遵循这一政策而不是继续探索?
另外,两种学习方法的情况是否优于另一种?在哪种情况下,人们更喜欢on-policy算法?
强化学习,深度学习和深度强化学习有什么区别?Q-learning适合哪里?
machine-learning reinforcement-learning neural-network q-learning deep-learning
我知道epsilon标志着勘探与开发之间的权衡。刚开始时,您希望epsilon高,这样您就可以大踏步学习东西。当您了解未来的回报时,ε会衰减,以便您可以利用已找到的更高的Q值。
但是,在随机环境中,我们的学习率是否也会随着时间而衰减?我见过的SO帖子仅讨论epsilon衰减。
我们如何设置epsilon和alpha以使值收敛?
我正在使用网站上的版本来指导他解决问题,但我有问题:对于 maxQ,我是否使用新状态(s')的所有 Q 表值来计算最大奖励 - 在我的情况下有 4 种可能动作(a'),每个动作都有各自的值,或者是采取动作(a')时所有位置的Q表值的总和?
换句话说,我是使用我可以采取的所有可能操作中的最高 Q 值,还是使用所有“相邻”方块的 Q 值之和?
我尝试使用Tensorflow和OpenAI的Gym来编写Deep Q网络来玩Atari游戏.这是我的代码:
import tensorflow as tf
import gym
import numpy as np
import os
env_name = 'Breakout-v0'
env = gym.make(env_name)
num_episodes = 100
input_data = tf.placeholder(tf.float32,(None,)+env.observation_space.shape)
output_labels = tf.placeholder(tf.float32,(None,env.action_space.n))
def convnet(data):
layer1 = tf.layers.conv2d(data,32,5,activation=tf.nn.relu)
layer1_dropout = tf.nn.dropout(layer1,0.8)
layer2 = tf.layers.conv2d(layer1_dropout,64,5,activation=tf.nn.relu)
layer2_dropout = tf.nn.dropout(layer2,0.8)
layer3 = tf.layers.conv2d(layer2_dropout,128,5,activation=tf.nn.relu)
layer3_dropout = tf.nn.dropout(layer3,0.8)
layer4 = tf.layers.dense(layer3_dropout,units=128,activation=tf.nn.softmax,kernel_initializer=tf.zeros_initializer)
layer5 = tf.layers.flatten(layer4)
layer5_dropout = tf.nn.dropout(layer5,0.8)
layer6 = tf.layers.dense(layer5_dropout,units=env.action_space.n,activation=tf.nn.softmax,kernel_initializer=tf.zeros_initializer)
return layer6
logits = convnet(input_data)
loss = tf.losses.sigmoid_cross_entropy(output_labels,logits)
train = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
saver = tf.train.Saver()
init = tf.global_variables_initializer()
discount_factor = …Run Code Online (Sandbox Code Playgroud) artificial-intelligence reinforcement-learning neural-network q-learning tensorflow