Q-learning with a state-action-state reward structure and a Q-matrix with states as rows and actions as 列
Q-learning with a state-action-state reward structure and a Q-matrix with states as rows and actions as columns
我已经在 R 中设置了一个 Q-learning 问题,希望对我在构建问题时的方法的理论正确性提供一些帮助。
问题结构
对于这个问题,环境由 10 种可能的状态组成。在每个状态下,agent 有 11 种可能的动作可供选择(无论 agent 处于何种状态,这些动作都是相同的)。根据代理所处的特定状态以及代理随后采取的后续行动,存在用于转换到下一个状态的唯一分布,即到任何下一个状态的转换概率也(仅)取决于前一个状态作为当时采取的行动。
每一集有 9 次迭代,即在新一集开始之前,代理可以采取 9 个动作并进行 9 次转换。在每一集中,智能体将从状态 1 开始。
在每一集中,在智能体的 9 个动作中的每一个动作之后,智能体都会获得奖励,该奖励取决于智能体的(立即)先前状态和他们(立即)先前的动作以及他们登陆的状态即代理人的奖励结构取决于状态-动作-状态三元组(一集中将有 9 个)。
智能体的转移概率矩阵是静态的,奖励矩阵也是静态的。
我设置了两个学习算法。首先,q 矩阵更新发生在每一集中的每个动作之后。第二,q 矩阵在每一集之后更新。该算法使用 epsilon 贪婪学习公式。
最大的问题是在我的 Q-learning 中,我的智能体没有学习。随着时间的推移,它得到的奖励越来越少。我已经研究了其他潜在的问题,例如简单的计算错误或代码中的错误,但我认为问题出在我的 q-learning 问题的概念结构上。
问题
- 我已将我的 Q 矩阵设置为 10 行乘 11 列矩阵,即所有 10 个状态都是行,11 个动作是列。这是最好的方法吗?这意味着代理正在学习一项政策,该政策表明 "whenever you are in state x, do action y"
- 鉴于我的问题的这种独特结构,标准 Q 更新是否仍然适用?即 Q[cs,act]<<-Q[cs,act]+alpha*(Reward+gamma*max(Q[ns,])-Q[cs,act])
其中 cs 是当前状态; act 是选择的动作;奖励是给定您当前状态、您选择的行动以及您将过渡到的下一个状态的奖励; ns 是下一个状态,您将在给定上一个状态和上一个动作的情况下转换到该状态(请注意,您是随机转换到该状态的)。
- R里面有开放的AI gym吗?有针对这种结构问题的Q-learning包吗?
感谢和欢呼
你对问题的定义有问题。
Q(s,a)
是在状态 s
中采取行动 a
并随后遵循最优策略的预期效用。
走 1、2 或 9 步后的预期奖励不同。这意味着处于状态 s_0
并采取行动 a_0
的奖励在步骤 0
中与您在步骤 9
中获得的不同
您定义的"state"并不能确保您获得任何奖励,它是"state+step"的组合。
为了对问题进行充分建模,您应该重新构造它并将状态视为 'position'+'step'。您现在将拥有 90 个状态(10pos*9steps)。
我已经在 R 中设置了一个 Q-learning 问题,希望对我在构建问题时的方法的理论正确性提供一些帮助。
问题结构 对于这个问题,环境由 10 种可能的状态组成。在每个状态下,agent 有 11 种可能的动作可供选择(无论 agent 处于何种状态,这些动作都是相同的)。根据代理所处的特定状态以及代理随后采取的后续行动,存在用于转换到下一个状态的唯一分布,即到任何下一个状态的转换概率也(仅)取决于前一个状态作为当时采取的行动。
每一集有 9 次迭代,即在新一集开始之前,代理可以采取 9 个动作并进行 9 次转换。在每一集中,智能体将从状态 1 开始。
在每一集中,在智能体的 9 个动作中的每一个动作之后,智能体都会获得奖励,该奖励取决于智能体的(立即)先前状态和他们(立即)先前的动作以及他们登陆的状态即代理人的奖励结构取决于状态-动作-状态三元组(一集中将有 9 个)。
智能体的转移概率矩阵是静态的,奖励矩阵也是静态的。
我设置了两个学习算法。首先,q 矩阵更新发生在每一集中的每个动作之后。第二,q 矩阵在每一集之后更新。该算法使用 epsilon 贪婪学习公式。
最大的问题是在我的 Q-learning 中,我的智能体没有学习。随着时间的推移,它得到的奖励越来越少。我已经研究了其他潜在的问题,例如简单的计算错误或代码中的错误,但我认为问题出在我的 q-learning 问题的概念结构上。
问题
- 我已将我的 Q 矩阵设置为 10 行乘 11 列矩阵,即所有 10 个状态都是行,11 个动作是列。这是最好的方法吗?这意味着代理正在学习一项政策,该政策表明 "whenever you are in state x, do action y"
- 鉴于我的问题的这种独特结构,标准 Q 更新是否仍然适用?即 Q[cs,act]<<-Q[cs,act]+alpha*(Reward+gamma*max(Q[ns,])-Q[cs,act]) 其中 cs 是当前状态; act 是选择的动作;奖励是给定您当前状态、您选择的行动以及您将过渡到的下一个状态的奖励; ns 是下一个状态,您将在给定上一个状态和上一个动作的情况下转换到该状态(请注意,您是随机转换到该状态的)。
- R里面有开放的AI gym吗?有针对这种结构问题的Q-learning包吗?
感谢和欢呼
你对问题的定义有问题。
Q(s,a)
是在状态 s
中采取行动 a
并随后遵循最优策略的预期效用。
走 1、2 或 9 步后的预期奖励不同。这意味着处于状态 s_0
并采取行动 a_0
的奖励在步骤 0
中与您在步骤 9
您定义的"state"并不能确保您获得任何奖励,它是"state+step"的组合。
为了对问题进行充分建模,您应该重新构造它并将状态视为 'position'+'step'。您现在将拥有 90 个状态(10pos*9steps)。