【发布时间】:2019-01-05 08:53:40
【问题描述】:
我是 RL 的新手,我参考了几本书和教程,但我有一个基本问题,我希望在这里找到基本答案。
引用的主要书籍:Sutton & Barto 2nd edition 和 blog
问题描述(仅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