问题标签 [temporal-difference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
288 浏览

machine-learning - 时差更新规则

更新规则 TD(0) Q-Learning:

Q(t-1) = (1-alpha) * Q(t-1) + (alpha) * (Reward(t-1) + gamma* Max( Q(t) ) )
然后采取当前最佳行动(优化)或随机行动(探索者)

其中 MaxNextQ 是在下一个状态下可以获得的最大 Q...


但在 TD(1) 中,我认为更新规则将是:

Q(t-2) = (1-alpha) * Q(t-2) + (alpha) * (Reward(t-2) + gamma * Reward(t-1) + gamma * gamma * Max( Q(t) ) )

我的问题:
这个词的gamma * Reward(t-1)意思是我将永远采取我最好的行动t-1......我认为这会阻止探索......
有人可以给我一个提示吗?

谢谢

0 投票
1 回答
158 浏览

temporal-database - 比较时间序列

我正试图围绕这项任务展开我的头脑,并想知道是否有标准的方法来执行此操作或一些有用的库。

在几个数据源 S1 ... SN 上跟踪和计时某些事件。记录的信息是事件类型和时间戳。可能有几个相同类型的事件依次发生,也可能是间歇性的。可能存在“遗漏”事件——即当其中一个来源遗漏它时,反之亦然,当来源引入“误报”时。在不同来源对同一事件的观察之间通常存在时间差。由于源的物理位置,该时间差具有恒定分量,但也可能具有由网络延迟和其他因素引入的变化分量。

我需要找到一种算法来找到最佳的最大时间间隔,该时间间隔应该用于将所有来源的观察结果分组到一个“观察到的事件”中,并允许检测丢失的事件和误报。

我想知道解决方案是否真的在统计领域而不是算法中。任何输入将不胜感激。

0 投票
3 回答
1294 浏览

artificial-intelligence - Delphi/Pascal 中的 TD(λ)(时间差分学习)

我有一个可以玩井字游戏的人工神经网络——但它还不完整。


我还没有:

  • 奖励数组“R[t]”,每个时间步或移动“t”的整数值(1=玩家 A 获胜,0=平局,-1=玩家 B 获胜)
  • 输入值通过网络正确传播。
  • 调整权重的公式:

在此处输入图像描述


什么不见​​了:

  • TD 学习:我仍然需要一个使用 TD(λ) 算法“反向传播”网络错误的程序。

但我真的不明白这个算法。


到目前为止我的方法...

轨迹衰减参数 λ 应为“0.1”,因为远端状态不应获得那么多奖励。

两个层(输入层和隐藏层)的学习率都是“0.5”。

这是一个延迟奖励的情况:奖励保持“0”直到游戏结束。然后奖励变为“1”表示第一个玩家获胜,“-1”表示第二个玩家获胜,或“0”表示平局。


我的问题:

  • 您如何以及何时计算网络误差(TD 误差)?
  • 如何实现错误的“反向传播”?
  • 如何使用 TD(λ) 调整权重?

提前非常感谢你:)

0 投票
3 回答
635 浏览

delphi - Delphi:神经网络类(TD-lambda)中的 EInvalidOp

我有以下关于神经网络类的草稿。这个神经网络应该用 TD-lambda 学习。它通过调用 getRating() 函数启动。

但不幸的是,在以下几行中大约 1000 次迭代后,出现了 EInvalidOp(无效的加载点操作)错误:

为什么会出现这个错误?我在我的代码中找不到错误:(你能帮我吗?非常感谢你提前!

0 投票
1 回答
1228 浏览

machine-learning - 时间差异学习的更新

我阅读了有关 Tesauro 的 TD-Gammon 程序的信息,并且很想为井字游戏实施它,但作为一名高中生,我几乎无法获得所有信息,因为我不知道这些术语。

这里的第一个方程,http://www.stanford.edu/group/pdplab/pdphandbook/handbookch10.html#x26-1310009.2

给出了“一般监督学习范式”。它表示等式左侧的 w sub t 是时间步 t 的参数向量。“时间步长”究竟是什么意思?在设计用于输出棋盘状态值的井字游戏神经网络的框架内,时间步长是否指给定游戏中的棋子数量?例如,由字符串“xoxoxoxox”表示的棋盘将在时间步 9,而棋盘“xoxoxoxo”将在时间步 8?或者时间步长是指自训练开始以来经过的时间量?

由于 w sub t 是给定时间步的权重向量,这是否意味着每个时间步都有自己的评估函数(神经网络)?所以要评估一个只有一步棋的棋盘状态,你必须输入一个不同的神经网络,而不是用两个棋步传递棋盘状态?我想我在这里误解了一些东西,因为据我所知 Tesauro 仅使用一个 NN 来评估所有董事会状态(尽管很难找到有关 TD-Gammon 的可靠信息)。

为什么输出的梯度是关于 w 而不是 w sub t 的?

提前感谢您澄清这些想法。对于我的项目或无障碍阅读材料的建议,我将不胜感激。

0 投票
1 回答
1392 浏览

java - Java中时间差分学习的实现

下面的代码是我对时间差异学习的实现。使用 TD 算法的代理与使用 mini-max 程序玩游戏的代理玩了超过 750,000 场游戏,但问题是 TD-agent 不学习......这个实现有什么问题?

当代理选择下一步动作时调用 updateToNextState。

我已将此链接用作指导方针。我尝试了不同的 ALPHA 和 BETA 值,隐藏神经元的数量。资格跟踪初始化为 0。

0 投票
1 回答
2295 浏览

algorithm - Q 学习算法问题

我正在尝试做一个简单的 Q 学习算法,但无论出于何种原因它都不会收敛。代理基本上应该从 5x5 网格上的一点到达目标点。当我运行它时,它似乎找到了最佳方式,但是它没有收敛,我不知道为什么。任何帮助,将不胜感激。我觉得某处有一个小错误,所以这就是为什么我要寻找一双新的眼睛。

代码:

0 投票
1 回答
1961 浏览

artificial-intelligence - 神经网络和时间差异学习

我读过几篇关于时间差分学习的论文和讲座(其中一些与神经网络有关,例如关于 TD-Gammon 的 Sutton 教程),但我很难理解这些方程,这导致我提出了我的问题。

-预测值V_t从何而来?随后,我们如何得到 V_(t+1)?

- 当 TD 与神经网络一起使用时,究竟是什么反向传播?也就是说,在使用 TD 时,返回传播的错误从何而来?

0 投票
1 回答
579 浏览

machine-learning - 强化学习-TD learning from afterstates

我正在制作一个程序,教 2 名玩家使用强化学习和基于后态的时间差异学习方法 (TD(λ) ) 玩一个简单的棋盘游戏。学习是通过训练神经网络来实现的。我使用Sutton 的非线性 TD/Backprop 神经网络)我真的很想听听您对我以下困境的看法。在两个对手之间进行转牌的基本算法/伪代码是这样的

每个玩家何时应该调用他的学习方法 PLAYER.LEARN(GAME_STATE)。这是困境。

选项 A. 在每个玩家移动之后,在新的后续状态出现之后,如下所示:

选项 B. 在每个玩家移动之后,在新的后态出现之后,以及在对手移动之后,如果对手取得了胜利。

我认为B选项更合理。

0 投票
0 回答
343 浏览

neural-network - Neural Network Reinforcement Learning Requiring Next-State Propagation For Backpropagation

I am attempting to construct a neural network incorporating convolution and LSTM (using the Torch library) to be trained by Q-learning or Advantage-learning, both of which require propagating state T+1 through the network before updating the weights for state T.

Having to do an extra propagation would cut performance and that's bad, but not too bad; However, the problem is that there is all kinds of state bound up in this. First of all, the Torch implementation of backpropagation has some efficiency shortcuts that rely on the back propagation happening immediately after the forward propagation, which an additional propagation would mess up. I could possibly get around this by having a secondary cloned network sharing the weight values, but we come to the second problem.

Every forward propagation involving LSTMs is stateful. How can I update the weights at T+1 when propagating network(T+1) may have changed the contents of the LSTMs? I have tried to look at the discussion of TD weight updates as done in TD-Gammon, but it's obtuse to me and that's for feedforward anyway, not recurrent.

How can I update the weights of a network at T without having to advance the network to T+1, or how do I advance the network to T+1 and then go back and adjust the weights as if it were still T?