小编:我们有一位用户一直喜欢使用机器学习来捣鼓策略,他关于几个模型的描述十分的形象,并使用 PonderLSTM 写了个 demo 策略,今天分享给大家~
ACT 模型通过在每时间步(时间序列节点)进行多次计算来模拟复杂问题的思考过程。这种算法尤其有价值在使用包含外存储器的 RNN 变种(如 DNC、NTM 等)计算架构处理长时间序列的时候。
下面简单形象的介绍一下本文模型(这不是很准确的描述,但是足够形象)。我们假设 VanillaRNN 模型为一个考生,在进行英语听力考试,这个考生被要求“干听”,也就是不能使用纸笔记录,并且所有的听力内容问题和答案全部都是以口头形式进行的。当然在排除天纵奇才的情况下,这个考生的答案是惨不忍睹的。
PonderDNC 不但带着 E 人 E 本,而且还带着时间静止机器。这也就是说这名考生在进行听力考试的时候,可以在任何自己觉得可以的地方让时间静止,注意不能回溯,然后从容的翻阅自己在 E 人 E 本上面的记录进行答题。
PonderDNC
通过将 DNC 计算单元进行嵌入 ACT 计算架构,PonderDNC 可以实现在每个时间步骤多次进行运算。这意味着在时间步 t,DNC 在获得时刻 t 的外部输入之后不用立刻输出信息,而是可以在时刻 t 反复进行思考计算之后再做出判定输出,然后再进入下一时刻 t+1。如下图
原始的 DNC 模型一般使用一个 500 行的外记忆矩阵,在每个时间步 t 通过 1~3 写头控制,2~6 读头控制与外记忆矩阵进行信息(记忆)交互。也就是 DNC 模型在时刻 t 一般只与不超过 10 个记忆位置有信息交互。这对于简单的问题,例如记忆复现具有较好的效果,但是对于那些与前面信息交互复杂而且时间跨度很长的判定问题则效果欠佳。通过将 DNC 计算单元嵌入 ACT 计算架构之后形成的 PonderDNC 计算单元,在每个时间步骤可以多次与外记忆矩阵进行信息交互。例如一个具有 2 写头控制,4 读头控制,具有 1000 行外存储记忆的 PonderDNC 在时刻 t 运算 50 次,最多可以与外记忆矩阵的 300 个位置进行交互,在时刻 t 最多可以基于 50 个短期记忆以及 200 个读头记忆做出推断输出。也就是在时刻 t 计算单元 PonderDNC 可以基于前面记忆总量的 20%进行推断判定。
通俗的讲,假设这几个模型被看做是不同操盘手的话,LSTM 操盘手就是基于过去两周的 K 线图对未来行情进行判断,而 PonderDNC 则是基于过去一季度的多种技术分析指标对未来进行判定。
这个 PonderDNC 模型适合处理长序列任务以及回溯复杂的任务,如处理期货的高频数据。模型需要比较大的可训练权重参数才更容易获得更好的效果。在使用的时候注意加大训练数据量以及尽量消除输入因素多重共线性。
注:PonderDNC 每个时间步 t 传递给下一个时间步 t+1 的信息为 累加的控制器状态、累加的读头读取记忆向量、以及在时刻 t 进行 N(t)次运算之后的外存储记忆矩阵(这个不是权重累加和而是最后一次运算之后的记忆矩阵直接传递下去)。
2017-08-18 更新期货日频回测
样本内回测
样本外回测 2017-01-01 ~ 2018-08-01,应该说泛化能力还不错
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.