在损失函数中多次评估模型?这是强化学习吗?

人工智能 神经网络 强化学习 张量流 喀拉斯 目标函数
2021-10-21 10:25:50

我对表现出行为的模型感兴趣。我的目标是在二维资源环境中无限期地生存的模型。一维表示位置(0 到 1),第二维表示该位置是否有可用资源(-1 = 资源一,0 = 无资源,1 = 资源二)。

风景是这样的:

location = [0, 0.2, 0.4, 0.6, 0.8, 1]
resource = [-1, 0,   0,   0,   0,  1] (I added spaces so the elements line up)

我的模型代表一个有机体,它决定在每个时间步是移动还是停留在景观上。有机体拥有每种资源的储备。如果有机体依靠该资源并在每个时间步失去 1 个单位的两种资源,则该生物体将填充其资源储备。我正在考虑用神经网络来代表我的生物体。输入将是 4 个值;景观上的位置、该位置的资源价值以及资源一和资源二的储量水平。输出将是 3 个值;向右移动,休息,向左移动。最高值决定发生什么。为了无限期地生存,模型将不得不在景观的两端之间跳跃,短暂地停留在资源上。模型评估是这样进行的:在具有全部资源储备的景观中间启动模型。

我的问题是:我的损失函数可以评估模型直到它死亡吗?1/生存时间可能是通过梯度下降最小化的损失值。这是一个强化学习问题吗(我不这么认为..?)谢谢!!

1个回答

我的损失函数可以评估模型直到它死亡吗?1/生存时间可能是通过梯度下降最小化的损失值。

为了使用反向传播和梯度下降,您必须将损失函数直接与神经网络的输出相关联。您提出的损失函数过于间接,不可能直接将其转换为可用于改变神经网络权重的梯度。

此外,您选择的特定时间函数将难以优化,因为从 10 到 11 个时间步的增量改进将提供比从 2 到 3 个生命周期的改进为调整行为提供的信号要低得多。如果环境有足够的随机性(通常这种生活场景有),那么这里的信号可能会被随机事件淹没并且很难优化,需要更多的样本才能提取对损失的预期改进功能。

这是一个强化学习问题吗(我不这么认为..?)

它非常接近强化学习 (RL) 问题的定义。对于 RL 问题,您需要以下内容:

  • 代理存在并具有可测量状态的环境。

  • 一组行动 = 需要做出并产生后果的连续决策。

  • 任何行动的后果是:

    • 环境状态的一致(但允许一些随机性)变化。在这里,您可以更改代理的位置和资源级别。
    • 一个一致的标量奖励值,用于衡量智能体实现目标的程度。这也可以是部分随机的,也可以是稀疏的,仅在某些特定状态下实现。

在您的问题定义中,您没有奖励信号,但很容易添加一个。一个合适的将是+1每个时间步。

从技术上讲,您的问题也将是部分可观察的(有时称为 POMDP),因为代理无法查看其他位置的可用资源。它只知道其当前位置、其内部状态以及在其当前位置可用的资源。这不是一个主要问题,尽管您应该注意添加某种记忆(或者在循环神经网络中的开放式记忆,或者明确添加到状态中)将允许更有效的代理。这不是 RL 问题,任何无法形成或使用记忆的学习过程在这种环境下都会受到限制,您可能希望在以后的实验中研究它。

RL 的帮助在于它提供了一个框架,可以将您的问题定义转换为神经网络的测量值和梯度,以提高其性能。

由于您已经设置了神经网络来预测最佳动作选择,这自然适用于 RL 中的策略梯度方法,例如 REINFORCE。由于这是一个简单的问题,我希望带有基线的 REINFORCE 能够很好地完成它。

我不会在这里详细解释算法,但基本方法是让代理与当前网络一起行动几集,收集有关其选择和性能的数据。您将获得一个数据集(状态、动作、回报 = 到剧集结束的奖励总和)。然后,您将其用作标记数据集来训练小批量,就好像动作选择是正确的基本事实一样,但是将每个梯度乘以(返回 - 基线),其中基线通常是到目前为止从该状态看到的平均返回。在训练期间您可能需要第二个神经网络来估计预期回报(也称为状态值)。使用一次小批量后,您需要将其丢弃,因为它代表了权重更新之前网络上一次迭代的结果。有办法解决这个问题,

RL 提供了其他可能同样有效地解决您的问题的方法,但我怀疑 REINFORCE 会很好地为您服务,因为它允许代理随机选择方向,这在它看不到资源在哪里并且不记得在哪里时很重要它已经搜索过了。

对于这个问题,您不必使用 RL。另一种可能对您有用的方法是使用遗传算法来调整网络架构和权重。它避免使用梯度,但我仍然推荐一个简单的适应度函数,它等于幸存的时间步数。有一个名为 NEAT 的框架非常适合此类生命控制问题。