Q-learning 与强化学习中的值迭代有何不同?
我知道 Q-learning 是无模型的,训练样本是 transitions (s, a, s', r)
。但是由于我们知道 Q-learning 中每个转换的转换和奖励,它与基于模型的学习不同吗?基于模型的学习我们知道状态和动作对的奖励,以及状态的每个动作的转换(是它是随机的还是确定的)?我不明白其中的区别。
Q-learning 与强化学习中的值迭代有何不同?
我知道 Q-learning 是无模型的,训练样本是 transitions (s, a, s', r)
。但是由于我们知道 Q-learning 中每个转换的转换和奖励,它与基于模型的学习不同吗?基于模型的学习我们知道状态和动作对的奖励,以及状态的每个动作的转换(是它是随机的还是确定的)?我不明白其中的区别。
你是 100% 正确的,如果我们知道 Q-learning 中每个转换的转换概率和奖励,那么我们将非常不清楚为什么我们会使用它而不是基于模型的学习,或者它甚至会如何根本不同。毕竟,转移概率和奖励是价值迭代中使用的模型的两个组成部分——如果你有它们,你就有了一个模型。
关键是,在 Q-learning 中,代理不知道状态转移概率或奖励。智能体只有在这样做时才发现通过给定的动作从一个状态到另一个状态是有奖励的,并收到奖励。类似地,它仅通过最终处于该状态并查看其选项来确定从给定状态中可用的转换。如果状态转换是随机的,它通过观察不同转换发生的频率来学习状态之间转换的概率。
这里一个可能的混淆来源是,作为程序员,您可能确切地知道奖励和状态转换是如何设置的。事实上,当您第一次设计系统时,您很有可能会这样做,因为这对于调试和验证您的方法是否有效非常重要。但是你永远不会告诉代理这些——相反,你强迫它通过反复试验自行学习。如果您想创建一个能够进入您没有任何先验知识并弄清楚要做什么的新情况的代理,这一点很重要。或者,如果您不关心智能体自身学习的能力,如果状态空间太大而无法重复枚举,Q-learning 也可能是必要的。让代理在没有任何起始知识的情况下进行探索可以在计算上更容易处理。
当您有转移概率时使用值迭代,这意味着当您知道通过动作 a 从状态 x 进入状态 x' 的概率时。相反,您可能有一个黑匣子,可以让您模拟它,但实际上并没有给出概率。所以你是无模型的。这是你应用 Q 学习的时候。
学的东西也不一样。通过值迭代,您可以了解在给定状态 x 时的预期成本。使用 q-learning,当您处于状态 x 并应用操作 a 时,您将获得预期的折扣成本。
以下是算法:
我目前正在为考试写很多关于强化学习的内容。你可能也对我的讲义感兴趣。但是,它们大多是德语。
我认为公认的答案没有抓住差异的本质。引用 Richard Sutton 的最新版本的书:
" 拥有 q∗ 使得选择最优动作变得更加容易。使用 q∗,代理甚至不必进行单步搜索:对于任何状态 s,它可以简单地找到任何最大化 q∗(s;a ). action-value 函数有效地缓存了所有一步前搜索的结果。它提供了最佳的预期长期回报,作为每个 state{action 对在本地立即可用的值。因此,代价是为了表示状态{动作对的函数,而不仅仅是状态,最优动作值函数允许选择最优动作,而不必知道任何关于可能的后续状态及其值,也就是说,不必知道任何关于环境的动态。 ”
通常在实际问题中,代理不知道世界(或所谓的转换)动态,但我们肯定知道奖励,因为这些是环境在交互过程中给予的回报,而奖励函数实际上是由我们定义的。
q-learning 和正常值迭代之间的真正区别在于:在获得 V* 之后,您仍然需要对后续状态进行一步操作,以确定该状态的最佳操作。而这种前瞻需要行动之后的过渡动态。但是,如果您有 q*,则最佳计划只是从最大q(s,a)对中选择一个。