我们能用RNN写策略吗?
社区链接
小编:我们有一位用户一直喜欢使用机器学习来捣鼓策略,他关于几个模型的描述十分的形象,并使用PonderLSTM写了个demo策略,今天分享给大家~
ACT模型通过在每时间步(时间序列节点)进行多次计算来模拟复杂问题的思考过程。这种算法尤其有价值在使用包含外存储器的RNN变种(如DNC、NTM等)计算架构处理长时间序列的时候。
下面简单形象的介绍一下本文模型(这不是很准确的描述,但是足够形象)。我们假设VanillaRNN模型为一个考生,在进行英语听力考试,这个考生被要求“干听”,也就是不能使用纸笔记录,并且所有的听力内容问题和答案全部都是以口头形式进行的。当然在排除天纵奇才的情况下,这个考生的答案是惨不忍睹的。
下面我们来看第二个名叫LSTM的考生,这个考生在进行听力考试的时候有一块磁铁画板,可以记录一定量的信息。但是这个考生在超过30min的听力考试中只能使用这个画板记录一点点信息,如果想要写入新的信息就必须要清除之前的信息。也就是这个叫做LSTM的考生可以记录有限的信息。当然对于长时间的听力考试这点笔记也是杯水车薪。
下面我们来看第三个叫做DNC的考生,这个考生使用一个更高级的画板(E人E本),这个画板可以记录更多的信息,甚至可以记录所有的听力信息(当DNC的外存储器足够大的时候)。
以上的三个考生都是在加强自己的记忆能力,针对听力考试(长时间序列)进行信息处理。这三个考生都是按照听力播放顺序进行答题,虽然第三个考生(DNC)可以记录几乎所有的听力信息,但是它并没有额外的时间去翻阅所有记录下来的信息,只能够根据大脑(短期记忆)中的印象和自己写字顺序在非常短的时间内翻阅一下记录本。
下面介绍第四个考生,一个叫做PonderDNC的带着时间机器作弊器的考生。
PonderDNC不但带着E人E本,而且还带着时间静止机器。这也就是说这名考生在进行听力考试的时候,可以在任何自己觉得可以的地方让时间静止,注意不能回溯,然后从容的翻阅自己在E人E本上面的记录进行答题。
毫无疑问PonderDNC是在理论上面最有可能在听力考试总获取高分的考生。
PonderDNC
通过将DNC计算单元进行嵌入ACT计算架构,PonderDNC可以实现在每个时间步骤多次进行运算。这意味着在时间步t,DNC在获得时刻t的外部输入之后不用立刻输出信息,而是可以在时刻t反复进行思考计算之后再做出判定输出,然后再进入下一时刻t+1。如下图
ACT (Adaptive Computation Time for Recurrent Neural Networks ) 计算架构在时间步t,RNN模型经过多次计算(思考)之后,形成多个输出
和隐藏状态,RNN在时刻t的输出以及传递到下一时刻t+1的隐藏状态通过权重系数累加获得。
这种计算架构通过在时刻t进行多次运算取权重系数累加和的方式模拟思考过程。这对于使用DNC这种带有外存储器的计算单元来处理超长序列尤其有意义。这意味着对于一个具有超大外存储器记忆(如1K行记忆)的DNC而言,在时间步t 计算单元DNC基于外部输入信息 Xt 可以多次反复的读取外记忆矩阵信息进行反复权衡思考之后再做出判定。
原始的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,应该说泛化能力还不错
我们能用RNN写策略吗?相关推荐
- 【案例】RAID卡写策略改变引发的问题
一 现象描述 开发反馈某产品的agent 的进程hang在某些线程上,查看日志,agent master 累积很多未处理的消息队列. 在17:00 – 21:00 之间,有一定程度的写 ...
- 计组之存储系统:8、Cache写策略(全写法、写回法、写分配法、非写分配法、多级Cache)
8.Cache写策略 思维导图 存在的问题 Cache写策略 写回法 全写法 写分配法 非写分配法 多级Cache 思维导图 存在的问题 Cache写策略 写回法 先修改Cache中的数据,然后通过脏 ...
- 【PyTorch实战】用RNN写诗
用RNN写诗 1. 背景 1.1 词向量 1.2 RNN 2. CharRNN 3. 用PyTorch实现CharRNN 4. 结果分析 参考资料 1. 背景 自然语言处理(Natural Langu ...
- Cache写策略 — write-through与 write-back
Write-through 数据总是直接写入磁盘.意思是写操作根本不使用缓存.关闭写缓存,可释放缓存用于读操作.(缓存被读写操作共用) Write-back (or write-behind or W ...
- 小白量化《穿云箭集群量化》(4)指标公式写策略
小白量化<穿云箭集群量化>(4)指标公式写策略 穿云箭量化平台支持中文Python写量化策略,同时也直接支持股票公式指标写策略.下面我们看看是如何实现的. 股票软件的指标公式语法是一样的, ...
- Cache一致性与2种基本写策略(1)
2019独角兽企业重金招聘Python工程师标准>>> (1) 一致性问题的产生--信息不对称导致的问题 现实生活中常常会出现因为沟通不畅而导致的扯皮,一方改了某些东西,又没有及时通 ...
- 深度学习框架PyTorch入门与实践:第九章 AI诗人:用RNN写诗
我们先来看一首诗. 深宫有奇物,璞玉冠何有. 度岁忽如何,遐龄复何欲. 学来玉阶上,仰望金闺籍. 习协万壑间,高高万象逼. 这是一首藏头诗,每句诗的第一个字连起来就是"深度学习". ...
- 浅写策略模式,及map、枚举结合小例子
import java.util.HashMap; import java.util.Map;public class Test1 {/*** 我在思考 为什么要用策略模式,只是对行为做一些封装,调用 ...
- PyTorch入门笔记——RNN写诗(含藏头诗)程序代码学习笔记
目录 注意事项 一.数据介绍 二.opt对象 三.data.py 四.☆model.py 五.utils.py封装可视化操作,略 六.main.py 了解`torch.utils.data.DataL ...
最新文章
- Python中使用元组对ndarray矩阵的某个维度进行选取和调序的操作
- 七十八、Antd 实现 TodoList 页面布局和Redux入门
- Undefined exploded archive location Tomcat之项目不能发布
- C++的Android接口---配置NDK
- enter sleep mode黑屏怎么解决_【linux】 不要再暴力关机了,讲讲我最近遇到的问题和完美解决方案...
- 高质量 Node.js 微服务的编写和部署
- block的界面间传值的使用
- delphi语言转为汇编语言_计算机语言
- 浏览器事件循环机制与Vue nextTick的实现
- 物联网培训总结(C#)
- 大数计算器c语言实训报告,C语言计算器设计实验报告.doc
- SQL学习之drop语句
- 发电厂电气部分第三版pdf_发电厂电气部分 第三版 习题参考答案
- C10K问题及解决方案
- toastr 简单使用(弹出提示)
- 关于plsqldeveloper打开报错解决方法MSVCR71.dll is missing from your compute
- 汽车电子-AUTOSAR基础简介
- 一款灵活可配置的开源监控平台
- win7进去提醒未能连接一个服务器,win7系统提示“未能连接一个windows服务”这个情况如何解决...
- 自己收集整理的微软错误代码大全(中文和英文)
热门文章
- CentOS 7下Gitlab安装和迁移
- zabbix使用ipv6地址监控snmp客户端
- 【Hive】条件函数
- QT出现 Cannot create children for a parent that is in a different thread 的解决方法:
- Android开发中遇到的问题(四)——Android中WARNING: Application does not specify an API level requirement!的解决方法
- 安装mysql数据库及问题解决方法
- 微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题
- 如何创建一个<style> tag with Javascript?
- 为什么更改总和顺序会返回不同的结果?
- React中的state和props有什么区别?