【问题标题】:RNN LSTM Keras custom loss functionRNN LSTM Keras 自定义损失函数
【发布时间】:2018-07-07 22:51:37
【问题描述】:

我从 Keras 和 TensorFlow 开始。

我有一个在股票价格数据集上学习的 LSTM 模型。 我不希望我的模型像今天一样学会预测下一步。我希望我的模型在每个步骤中学习是否必须购买、出售或什么都不做以及多少。

我认为我需要制作一个自定义损失函数,但我真的不知道如何编写我的概念:买,卖,什么都没有,以及在开始时基于 100 个单位的资本。目标是最终获得尽可能高的资本。

  • 我必须使用现有函数并像 MSE 一样自定义它吗?如果是,如何?
  • 我必须让我的模型学习时间序列,然后添加一个买/卖层?如果是,如何?
  • 其他?

我很迷茫。

非常感谢您的帮助。

山姆

【问题讨论】:

  • 您的训练数据是什么样的?您是否只能访问股票价格,或者是否还有可用的决策(买入、卖出、什么都不做、多少)?
  • 我的训练数据只是股票价格。我希望模型自己学习决策(买,卖,什么都不做,多少)。我想象一个模型实际上并不需要学习时间序列,而是需要更多的决策,以在最后最大化资本。但也许我错了,它需要在时间序列之前和决策之后学习。如果我有代码示例,我可以对其进行测试。
  • 我明白了。我认为您肯定需要为您的模型提供一些提示,哪个决定是正确的。可以这样想:如果有人只是向您展示了一堆股票价格而没有告诉您它们的含义(假设您没有财务背景),您会知道该怎么做吗?模特在某种意义上就像一个完全天真的孩子,对这个世界一无所知。你必须给它一些可以学习的数据。
  • 感谢您的解释,但对我来说,它可以存在一种无需买卖训练数据即可训练模型的方法。看,如果我在每个步骤中随机设置我的重量和偏差并保存模型,最终提供最好的资金,它可以工作得超过 50%。所以用损失函数来学习.. ^^。问题是如何编码:/.
  • 我不得不承认我对这种数据并不熟悉,但是你如何从股价中得到整体资金呢?这笔资金是用于整个系统还是股票?您的情况开始听起来好像您应该研究强化学习。这是一个介绍,但我建议您在尝试训练模型之前阅读更多内容。 en.wikipedia.org/wiki/Reinforcement_learning

标签: tensorflow deep-learning keras lstm rnn


【解决方案1】:

我会试试categorical cross-entropy,

我的意思是你有三个选择:买 (0)、卖 (1) 和什么也不做 (2)。你可以这样编码:

[1,0,0] < - means 'buy'
[0,1,0] < - means 'sell'
[0,0,1] < - means 'do nothing'

并且不要忘记在你的神经网络末尾添加 softmax 函数。

【讨论】:

  • 谢谢你的回答,我会试试的。你认为这个功能可以回答“多少”的问题吗?并将其基于购买的资本百分比和出售的外部资金百分比?
  • 请注意,这种方法只有在您有一些可以比较您的决定的情况下才真正有效。因此,您需要首先获取包含有关做出哪个(可能是正确的)决策的信息的训练数据。
  • @Samantha 我认为您可以尝试类似两阶段的方法。第一个是行动决定(买,卖,什么都不做),第二个阶段是“多少?”的答案。因此,如果您从第一阶段预测购买,则使用第二阶段(另一个 NN)预测金额。实际上,您可以使用单个 NN 模型来做到这一点,只需使用两个输出,即动作和数量的答案。
  • 你认为我可以在没有买卖、没有任何训练数据的情况下迈出第一步吗?我的想法是最后只看整个系统的资本,但是这种方法不能用那个不?
  • @Samantha,很遗憾没有,如果你没有训练数据,我建议你看看强化学习方法。
【解决方案2】:

据我所知,我们有股票价格数据集,并且在每一点,我们都需要预测买入/卖出/什么都不做的决定。

对于每个点,我们应该确定一个窗口大小,我们认为这会影响当前点。 将此窗口用作 LSTM 层的时间序列输入。使用移动窗口,我们可以创建多个输入。相应的输出将是决策,可以将其编码为 3 位。

  1. 对于时间点 t,使用时间序列 (0..t-1) 作为输入。和决定 [0,0,1] 或 [0,1,0] 或 [1,0,0] 作为输出。该模型将学习预测每个决策的概率。
  2. 如 Paddy 所述,要计算损失,categorical cross entropy 将很有用。

此外,如果您还没有研究过预处理数据,那么在这种情况下去除数据趋势很有用。这个link 可能有用。

【讨论】:

  • 非常感谢预处理信息!你认为你的方式符合 Llia Kurendov 所说的吗?他说,如果不买卖训练数据,这种方式最终无法用尽可能高的资金训练模型。
猜你喜欢
  • 2021-10-25
  • 2020-12-19
  • 2017-12-18
  • 2020-03-27
  • 1970-01-01
  • 2018-10-28
  • 2017-12-29
  • 1970-01-01
  • 2020-02-27
相关资源
最近更新 更多