我的损失函数可以评估模型直到它死亡吗?1/生存时间可能是通过梯度下降最小化的损失值。
为了使用反向传播和梯度下降,您必须将损失函数直接与神经网络的输出相关联。您提出的损失函数过于间接,不可能直接将其转换为可用于改变神经网络权重的梯度。
此外,您选择的特定时间函数将难以优化,因为从 10 到 11 个时间步的增量改进将提供比从 2 到 3 个生命周期的改进为调整行为提供的信号要低得多。如果环境有足够的随机性(通常这种生活场景有),那么这里的信号可能会被随机事件淹没并且很难优化,需要更多的样本才能提取对损失的预期改进功能。
这是一个强化学习问题吗(我不这么认为..?)
它非常接近强化学习 (RL) 问题的定义。对于 RL 问题,您需要以下内容:
代理存在并具有可测量状态的环境。
一组行动 = 需要做出并产生后果的连续决策。
任何行动的后果是:
- 环境状态的一致(但允许一些随机性)变化。在这里,您可以更改代理的位置和资源级别。
- 一个一致的标量奖励值,用于衡量智能体实现目标的程度。这也可以是部分随机的,也可以是稀疏的,仅在某些特定状态下实现。
在您的问题定义中,您没有奖励信号,但很容易添加一个。一个合适的将是+ 1每个时间步。
从技术上讲,您的问题也将是部分可观察的(有时称为 POMDP),因为代理无法查看其他位置的可用资源。它只知道其当前位置、其内部状态以及在其当前位置可用的资源。这不是一个主要问题,尽管您应该注意添加某种记忆(或者在循环神经网络中的开放式记忆,或者明确添加到状态中)将允许更有效的代理。这不是 RL 问题,任何无法形成或使用记忆的学习过程在这种环境下都会受到限制,您可能希望在以后的实验中研究它。
RL 的帮助在于它提供了一个框架,可以将您的问题定义转换为神经网络的测量值和梯度,以提高其性能。
由于您已经设置了神经网络来预测最佳动作选择,这自然适用于 RL 中的策略梯度方法,例如 REINFORCE。由于这是一个简单的问题,我希望带有基线的 REINFORCE 能够很好地完成它。
我不会在这里详细解释算法,但基本方法是让代理与当前网络一起行动几集,收集有关其选择和性能的数据。您将获得一个数据集(状态、动作、回报 = 到剧集结束的奖励总和)。然后,您将其用作标记数据集来训练小批量,就好像动作选择是正确的基本事实一样,但是将每个梯度乘以(返回 - 基线),其中基线通常是到目前为止从该状态看到的平均返回。在训练期间您可能需要第二个神经网络来估计预期回报(也称为状态值)。使用一次小批量后,您需要将其丢弃,因为它代表了权重更新之前网络上一次迭代的结果。有办法解决这个问题,
RL 提供了其他可能同样有效地解决您的问题的方法,但我怀疑 REINFORCE 会很好地为您服务,因为它允许代理随机选择方向,这在它看不到资源在哪里并且不记得在哪里时很重要它已经搜索过了。
对于这个问题,您不必使用 RL。另一种可能对您有用的方法是使用遗传算法来调整网络架构和权重。它避免使用梯度,但我仍然推荐一个简单的适应度函数,它等于幸存的时间步数。有一个名为 NEAT 的框架非常适合此类生命控制问题。