问题标签 [reinforcement-learning]

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 回答
385 浏览

machine-learning - 大型状态空间中多个参与者的策略强化学习

我有一个实时域,我需要为 N 个参与者分配一个动作,涉及将 O 个对象之一移动到 L 个位置之一。在每个时间步,我都会得到一个奖励 R,表示所有参与者的整体成功。

我有 10 个演员、50 个独特的对象和 1000 个位置,所以对于每个演员,我必须从 500000 个可能的动作中进行选择。此外,我可能会考虑 50 个环境因素,例如每个物体与墙壁的距离,或者它与演员的距离。这导致每个参与者有 25000000 个潜在操作。

几乎所有强化学习算法似乎都不适合这个领域。

首先,它们几乎都涉及评估给定状态下每个动作的预期效用。我的状态空间很大,所以即使我使用函数逼近,使用像 Q-learning 这样原始的东西来收敛一个策略也需要很长时间。即使我可以,在每个时间步的一百万个动作中找到最佳动作也需要很长时间。

其次,大多数算法假设每个参与者只有一个奖励,而我得到的奖励可能会被一个或多个参与者的错误所污染。

我应该如何解决这个问题?我没有找到这样的领域的代码,而且我发现的关于多角色强化学习算法的几篇学术论文没有提供几乎足够的细节来重现所提出的算法。

0 投票
2 回答
2317 浏览

machine-learning - 没有训练值的神经网络学习

我想知道如何在不提供训练值的情况下训练神经网络。我的前提是神经网络将用于可以接收来自传感器的正/负反馈的机器人。IE,为了训练它在不撞到东西的情况下自由漫游,当没有触发碰撞传感器或接近传感器时会发生正反馈。当碰撞/接近传感器被触发时,会出现负反馈。如何使用这种方法训练神经网络?

我正在用 C++ 写这个

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 投票
2 回答
28986 浏览

algorithm - 使用强化学习训练神经网络

我知道前馈神经网络的基础知识,以及如何使用反向传播算法训练它们,但我正在寻找一种算法,而不是我可以使用强化学习在线训练 ANN。

例如,推车杆向上摆动问题是我想用人工神经网络解决的问题。在那种情况下,我不知道应该做什么来控制钟摆,我只知道我离理想位置有多近。我需要让 ANN 基于奖励和惩罚来学习。因此,监督学习不是一种选择。

另一种情况类似于蛇游戏,反馈被延迟,并且仅限于目标和反目标,而不是奖励。

对于第一种情况,我可以考虑一些算法,例如爬山算法或遗传算法,但我猜它们都会很慢。它们也可能适用于第二种情况,但速度非常慢,不利于在线学习。

我的问题很简单:是否有一种简单的算法可以通过强化学习来训练人工神经网络?我主要对实时奖励情况感兴趣,但如果有基于目标情况的算法,那就更好了。

0 投票
2 回答
870 浏览

java - 离散化困境

我目前正在研究强化学习中著名的山地车问题。这个问题具有连续性,这意味着我有两个变量:一个位置 - 从 -1.2 到 0.5 和速度 - 从 -0.07 到 0.07。我有 3 种可能的动作 - 反向加速、向前加速和空档,动作会导致在适当方向上改变位置。由于如何计算加速度,我的位置变量是连续的,这意味着我不能使用查找表,所以我尝试将位置速度轴划分为矩形扇区,将位置划分为宽度为 0.05 的桶,将速度划分为长度为 0.005 的桶,为每个部门分配一个索引,我是这样做的:

但是这种方案会导致某些扇区具有相同的索引号。您知道如何离散这两个连续变量吗?

更新:抱歉忘了提到当位置或速度超过最大值或最小值时,我将其设置回最大值或最小值

0 投票
1 回答
1319 浏览

matlab - 免费能源强化学习实施

我一直在尝试实现此处描述的算法,然后在同一篇论文中描述的“大型动作任务”上对其进行测试。

算法概述:

在此处输入图像描述

简而言之,该算法使用如下所示形式的 RBM 通过更改其权重来解决强化学习问题,使得网络配置的自由能等于为该状态动作对给出的奖励信号。

为了选择一个动作,该算法在保持状态变量固定的同时执行吉布斯采样。如果有足够的时间,这会产生具有最低自由能的动作,从而产生给定状态的最高奖励。

大动作任务概述:

在此处输入图像描述

作者的实施指南概述:

具有 13 个隐藏变量的受限玻尔兹曼机在具有 12 位状态空间和 40 位动作空间的大型动作任务的实例化上进行了训练。随机选择了 13 个关键状态。该网络运行了 12000 个动作,学习率从 0.1 到 0.01,温度从 1.0 到 0.1 在训练过程中呈指数增长。每次迭代都以随机状态初始化。每个动作选择由 100 次 Gibbs 抽样迭代组成。

重要省略的细节:

  • 是否需要偏置单元?
  • 需要减重吗?如果是这样,L1 还是 L2?
  • 权重和/或激活是否需要稀疏约束?
  • 梯度下降是否有修改?(例如动量)
  • 这些附加机制需要哪些元参数?

我的实现:

我最初假设作者没有使用指南中描述的机制,所以我尝试在没有偏差单元的情况下训练网络。这导致了近乎偶然的表现,并且是我的第一个线索,即使用的某些机制必须被作者认为是“显而易见的”,因此被忽略了。

我玩弄了上面提到的各种省略的机制,并通过使用获得了最好的结果:

  • softmax 隐藏单元
  • 0.9 的动量(0.5 直到第 5 次迭代)
  • 隐藏层和可见层的偏置单元
  • 学习率是作者列出的学习率的 1/100。
  • l2 重量衰减 0.0002

但即使进行了所有这些修改,在 12000 次迭代后,我在任务上的表现通常在平均奖励 28 左右。

每次迭代的代码:

我要的是什么:

所以,如果你们中的任何人都能让这个算法正常工作(作者声称在 12000 次迭代后平均获得约 40 个奖励),我将非常感激。

如果我的代码似乎在做一些明显错误的事情,那么引起注意也将构成一个很好的答案。

我希望作者遗漏的内容对于比我有更多基于能量的学习经验的人来说确实是显而易见的,在这种情况下,只需指出工作实施中需要包含的内容。

0 投票
1 回答
313 浏览

machine-learning - 用于电源管理的强化学习

我正在研究一个电源管理问题,我根据事件的发生来控制计算板的电源管理。我正在使用强化学习(传统的 Q 学习)进行电源管理,其中计算板作为服务提供商 (SP) 来处理请求(图像)。SP 连接到智能相机,电源管理器 (PM) 算法在相机上运行,​​向 SP 发出适当的电源命令(睡眠、唤醒)。智能相机根据事件的发生捕获图像(请求),并为请求(图像)维护一个服务队列(SQ)。我还有一个基于 ANN 的工作负载估计器,可将当前工作负载分类为. Q 学习算法的状态空间因此包括 Q(s,a) 的复合,其中 s=(SR, SQ, SP)。SR 是工作负载的状态。SQ 是服务队列的状态,SP 是服务提供者的状态。PM 根据当前的工作量、队列的状态和服务提供者的状态,向 SP 发出某些命令(睡眠、唤醒)。该决定是在以下阶段做出的:

  1. SP 空闲
  2. SP刚进入休眠状态,SQ>=1
  3. SP 处于休眠状态,SQ 从 0 变为 1。

对于每个动作,都会分配一个成本,该成本由该动作引起的每个请求的平均功耗和平均延迟的加权和组成。在睡眠状态和空闲状态中,该动作包括从预定义超时值列表中选择一些超时值。我的问题如下:

当 SP 进入休眠状态并选择一个超时值时,一些请求可能会在超时值期间到达,因此 SQ 的状态会发生变化。这也将复合状态(例如,S(0,0,0) 更改为 S(0,N,0)。在超时值结束时,PM 决定唤醒 SP(因为 SQ>0 ). 唤醒后,SP 处理请求,当 SQ =0 时,它的状态为 (0,0,1) 或 (1,0,1)。然后它为之前的状态分配一个成本。它还更新相应的 Q 矩阵。我的问题是,应该将成本分配给状态 (0,0,0) 还是 (0,N,0)?原则上,先前的状态是 (0,N,0) 但这当队列中的一些请求到达时,请求会自动到达,因此在此状态下没有采取任何行动,也没有任何行动可用于分配成本。

0 投票
1 回答
1346 浏览

artificial-intelligence - 在棋盘游戏中使用具有 TD 学习的经典反向传播神经网络

我想问一下在棋盘游戏中使用带有 TD-learning 方法的标准反向传播神经网络是否有意义?

我的方法看起来像:

  1. 玩 1 场比赛。网络有时扮演贪婪策略和随机动作的玩家。
  2. 对于每个存储的游戏位置(从终端 1 开始并移动到起始位置)计算估计的位置值和期望的位置值,例如

    /li>
  3. 使用标准反向传播算法从整个游戏结束训练中为网络创建训练模式,每个训练模式在 1 个 epoch 内具有较小的学习率。

    /li>

我在井字游戏中尝试了上述的一些组合(不是从一个示例中学习,而是从 30-40 种模式中学习,降低/提高学习速度等),但从未训练过理想的玩家(它永远不会输给随机玩家)。NN 代理与随机玩家对战的最佳示例之一是:

(第一局:赢,平,输),(第二局:赢,平,输),(总和:赢,平,输)
(191,34,275),(159,102,239),( 350, 136, 514) - 新鲜网
(427, 21, 52), (312, 16, 172), (739, 37, 224) - +50k 游戏后

输入格式为 18 个神经元:
对于每个板单元集,x 表示 (1,0),空单元表示 (0,0),o 表示 (0,1)。输出是 -1, 1 范围内的一个单位赢/输概率估计。

Tic tac toe 只是测试沙盒,当我成功完成它时,我将转向更复杂的纸牌游戏('Lost Cities')。

0 投票
0 回答
189 浏览

optimization - 强化学习的双重优化

我有一个具有功耗(p)和延迟(d)参数的目标函数。在给定延迟约束(秒)的情况下,我想最小化功耗。优化问题可以用拉格朗日函数表示如下:

其中L是拉格朗日变量。由于功耗和延迟成反比,减少前者会导致后者增加,因此目标函数也可以用相对权重写成:

问题是, “给定d秒的延迟约束,我如何找到可以最小化变量p的适当L值?” . 我想为此目的使用强化学习,在每个状态下,系统都会根据上述功能做出决定并为下一个状态下的前一个动作分配一个成本。每个动作都会在处理请求时导致一定的功耗和延迟。目标是在给定延迟约束的情况下最小化功耗。在这方面的任何建议/提示将不胜感激。

0 投票
1 回答
1399 浏览

machine-learning - 如何摆脱“粘性”状态?

问题:

我已经训练了一个代理在网格世界中执行一项简单的任务(在不撞到障碍物的情况下到达网格顶部),但似乎总是会出现以下情况。它发现自己处于状态空间的一个容易的部分(没有障碍物),因此不断地得到一个强大的正强化信号。然后当它确实发现自己是状态空间的困难部分(楔入两个障碍物旁边)时,它只是选择与以前相同的动作,没有效果(它上升并撞到障碍物)。最终,该值的 Q 值与负奖励匹配,但此时其他动作的 Q 值更低,因为在状态空间的简单部分无用,因此错误信号降至零,并且错误动作仍然始终存在选择。

我怎样才能防止这种情况发生?我想到了一些解决方案,但似乎没有一个可行:

  • 使用始终需要大量探索的策略。由于障碍物需要大约 5 个动作才能绕过,因此时不时地进行一个随机动作似乎是无效的。
  • 使奖励函数在重复时使不良行为变得更糟。这使得奖励函数破坏了马尔可夫属性。也许这不是一件坏事,但我根本不知道。
  • 只奖励完成任务的代理。该任务需要完成一千多个动作,因此训练信号太弱了。

关于任务的一些背景:

因此,我制作了一个小测试平台来尝试 RL 算法——类似于 Sutton 书中描述的更复杂的网格世界版本。世界是一个大的二进制网格(300 x 1000),由 1 在 0 的背景上以随机大小的矩形形式填充。一个 1 的带环绕着世界的边缘。

一个代理在这个世界中占据一个空间,周围只有一个固定的窗口(41 x 41 窗口,代理位于中心)。代理的动作包括在四个基本方向中的任何一个上移动 1 个空间。代理只能通过标记为 0 的空间,1 是不可通过的。

当前要在此环境中执行的任务是从底部的随机位置开始使其到达网格世界的顶部。成功向上移动可获得+1的奖励。任何会撞到障碍物或世界边缘的动作都会获得 -1 的奖励。所有其他状态都获得 0 的奖励。

该代理使用带有神经网络值函数逼近器的基本 SARSA 算法(如 Sutton 书中所讨论的)。对于政策决策,我尝试了 e-greedy 和 softmax。