【问题标题】:Defining states, Q and R matrix in reinforcement learning在强化学习中定义状态、Q 和 R 矩阵
【发布时间】:2019-01-05 08:53:40
【问题描述】:

我是 RL 的新手,我参考了几本书和教程,但我有一个基本问题,我希望在这里找到基本答案。

引用的主要书籍:Sutton & Barto 2nd editionblog

问题描述(仅Q学习方法):Agent必须从A点到达B点并且是一条直线,B点是静态的,只有Agent的初始位置总是随机的。 ------------A(60,0)--------------------- -B(100,0)------------->

保持简单代理总是向前移动。 B 始终位于 X 轴位置 100,这也是一个目标状态,并且在第一次迭代中,A 位于 X 轴位置 60。所以行动将只是“前进”和“停止”。奖励结构是当 A 到达 B 点时奖励代理 100,否则保持 0,当 A 越过 B 时奖励 -500。因此,Agent 的目标是到达并停在位置 B。

1) 在这种情况下,从 A 点到 B 点需要多少个状态?以及如何为此定义一个 Q 和一个 R 矩阵? 2)如果找到新的状态,如何添加新的列和行?

任何帮助将不胜感激。

Q_matrix 实现:

Q_matrix((find(List_Ego_pos_temp == current_state)) , 
                    possible_actions) = Q_matrix(find(List_Ego_pos_temp == current_state),possible_actions) + this.learning_rate * (Store_reward(this.Ego_pos_counter) + ...
                    this.discount * max(Q_matrix(find(List_Ego_pos_temp == List_Ego_pos_temp(find(current_state)+1))),possible_actions) - Q_matrix((find(List_Ego_pos_temp == current_state)) , possible_actions));

此实现在 matlab 中。 List_Ego_pos_temp 是一个临时列表,存储了 Agent 的所有位置。

另外,假设有十个状态 1 到 10,我们也知道代理在每个状态中移动的速度和距离,直到状态 10,代理总是只能按顺序移动,这意味着代理可以从 s1到 s2 到 s3 到 s4 到 10 不是 s1 到 s4 或 s10。 假设在 s8 是目标状态,Reward = 10,s10 是终端状态,奖励是 -10,从 s1 到 s7,它收到的奖励是 0。 那么如果当前状态被认为是 state1 并且下一个状态被认为是 state2 并且在下一次迭代中当前状态是 state2 并且下一个状态是 state3 等等,那么计算 Q 表是否是正确的方法?这是否会正确计算 Q 表,因为下一个状态已经被输入并且没有任何预测?

【问题讨论】:

    标签: machine-learning artificial-intelligence reinforcement-learning q-learning


    【解决方案1】:

    由于您是在这种情况下定义问题,因此许多变量都取决于您。

    1. 您可以定义一个最小状态(例如 0)和一个最大状态(例如 150)并将每个步骤定义为一个状态(因此您可以有 150 个可能的状态)。然后 100 将是您的目标状态。然后您的动作将被定义为 +1(移动一步)和 0(停止)。那么 Q 矩阵将是一个 150x2 矩阵,用于所有可能的状态和所有动作。奖励将是您定义的标量。

    2. 您不需要添加新的列和行,因为您已经定义了整个 Q 矩阵。

    祝你好运。

    【讨论】:

    • 谢谢,如果有三个状态,s1 = A_position,s2= B_position-10meters 和 s3 = B_position,让我们在同一个问题中说。并且代理可以从 s1 到 s2 获得奖励 = 100,s2 到 s3 奖励=-100 和 s1 到 s3 奖励 = -500。如果采取了“前进”操作,我如何控制代理可以前进多长时间?应该在环境创建引擎中修改吗?
    • 不,我说的是让它成为一种离散的方法。因此,从 0 到 150,A 在 100 之前随机初始化。然后将 100 作为目标状态。行动正在向前推进 1 步。然后你就可以编码了。
    • 谢谢@Shunyo,定义状态的方法是什么?它是我们为网格世界问题定义的矩阵还是其他方式?如果我必须考虑代理的距离和速度来定义状态。
    • 这是一个一维问题。所以它只是0-150点的一条线(如果你愿意的话,x轴)。然后行动将更上一层楼或停留在那里。
    • 如果这能解决您的问题,请接受答案。
    猜你喜欢
    • 2022-06-19
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2017-04-07
    • 2015-02-04
    • 2018-06-09
    • 2013-09-14
    • 2021-09-14
    相关资源
    最近更新 更多