一维卷积神经网络_深度学习因子选股模型-基于卷积神经网络

5a9b7b0b0aabf80dc436c446536dc7ea.png

CNN图像识别原理

卷积神经网络(CNN)的结构模仿了眼睛的视觉神经的工作原理。对于眼睛来说,大量的视觉神经分工协作,各自负责一小部分区域的视觉图像,再将图像的各种局部特征抽象组合到高层的视觉概念,传送到大脑使人类产生视觉。卷积神经网络也是类似,它包含了至少一层卷积层,由多个卷积核对图像的局部区域进行特征提取,最后进行合成。

以经典的LeNet-5模型为例:

563202d5b514321c7939957b155151eb.png

原始输入数据(图中的input)为二维图像,横轴和纵轴分别是图像的高度和宽度的像素点,为了识别该图像,模型依次完成以下步骤:

  • 第一层卷积层(图中的conv1)进行卷积运算。该层由若干卷积核组成,每个卷积核的参数都是通过反向传播算法优化得到的。卷积核的目的是通过扫描整张图片提取不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级。在卷积层之后都会使用非线性激活函数(如RELU,tanh 等)对特征进行非线性变换。
  • 第一层池化层(图中的pool1)进行池化运算。通常在卷积层之后会得到维度很大的特征,池化层可以非常有效地缩小参数矩阵的尺寸,从而减少最后全连层中的参数数量。使用池化层既可以加快计算速度也有防止过拟合的作用。一般池化层将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。池化层其实是在对具有高维特征的图片进行特征降维(subsample)
  • 第二层卷积层和第二层池化层(图中的conv2 和pool2) 进行进一步的特征提取和特征降维,得到更加高层和抽象的特征。
  • 全连接层(图中的hidden4 和full connection) 把卷积核池化得到的特征展平为一维特征,用来进行最后的训练和预测。

总结而言,卷积层进行特征提取,池化层进行特征降维以防止过拟合。CNN通过上述过程实现了图像识别:

bdfe7d42aba1d8d004ce53fc135c5c95.png

通过第一层卷积识别边缘等低级特征,池化后通过第二层卷积识别眼睛、鼻子等小区域器官这样的中级特征,池化,最后通过第三层卷积识别整个面容这样的高级特征,最后通过全连接层整合,识别出最终的图像。

用卷积神经网络处理序列数据

从上面我们已经知道卷积神经网络(convnet)在计算机视觉问题上表现出色,原因在于它能够进行卷积运算,从局部输入图块中提取特征,并能够将表示模块化,同时可以高效地利用数据。这些性质让卷积神经网络在计算机视觉领域表现优异,同样也让它对序列处理特别有效。时间可以被看作一个空间维度,就像二维图像的高度或宽度。

对于某些序列处理问题,比如金融时间序列数据,这种一维卷积神经网络的效果可以媲美RNN[循环神经网络],而且计算代价通常要小很多。最近,一维卷积神经网络[通常与空洞卷积核(dilated kernel)一起使用]已经在音频生成和机器翻译领域取得了巨大成功。除了这些具体的成就,人们还早已知道,对于文本分类和时间序列预测等简单任务,小型的一维卷积神经网络可以替代RNN,而且速度更快。

理解序列数据的一维卷积

通常我们遇见的卷积层都是二维卷积,从图像张量中提取二维图块并对每个图块应用相同的变换。按照同样的方法,你也可以使用一维卷积,从序列中提取局部一维序列段(即子序列),见下图:

f4bdefd52dc461f6a35f95f6015fe596.png
注:图片来自《Deep Learning with Python》弗朗索瓦·肖莱,Keras之父

这种一维卷积层可以识别序列中的局部模式。因为对每个序列段执行相同的输入变换,所以在句子中某个位置学到的模式稍后可以在其他位置被识别,这使得一维卷积神经网络具有平移不变性(对于时间平移而言)。

举个例子,使用大小为 5 的卷积窗口处理字符序列的一维卷积神经网络,应该能够学习长度不大于 5 的单词或单词片段,并且应该能够在输入句子中的任何位置识别这些单词或单词段。因此,字符级的一维卷积神经网络能够学会单词构词法。在金融时序预测中,卷积网络可以提取近期时序特征(局部特征)来预测短期走势,这是浅层机器学习模型不具备的优势。

序列数据的一维池化

二维池化运算,比如二维平均池化和二维最大池化,在卷积神经网络中用于对图像张量进行空间下采样。一维也可以做相同的池化运算:从输入中提取一维序列段(即子序列), 然后输出其最大值(最大池化)或平均值(平均池化)。与二维卷积神经网络一样,该运算也是用于降低一维输入的长度(子采样)。

实现一维卷积神经网络

BigQuant中的一维卷积神经网络是Conv1D层,其接口类似于Conv2D。它接收的输入是形状为 (samples, time, features)的三维张量,并返回类似形状的三维张量。卷积窗口是时间轴上的一维窗口(时间轴是输入张量的第二个轴)。
我们来构建一个简单的两层一维卷积神经网络预测股票价格,回测结果图如下,源代码见文末。

97a6b53af2ed81497ec0c090b4496ab4.png

策略比较基准

为比较深度学习模型的预测效果,我们以默认可视化机器学习模板为基准进行比较,默认可视化机器学习模板是StockRanker的浅层机器学习策略。
因此,本文的训练集时间、预测集时间、特征完全和默认可视化策略模板一致。基准回测结果如下:

4fe54bc686dec4a828ea63cfa114e569.png

可以看出基于卷积神经网络的深度学习策略有明显的提升效果,策略年化收益从109%提升到118%,夏普比率也有所提升,这确实是很amazing的一件事情,因为stockranker策略的参数和模型我们是经过大量的测试给出了一个比较通用的版本,这主要得益于深度网络多层表示的强大学习能力,这和我们大脑大量的神经元机制是相似的。当然,本文只是一个demo,更多开发和提升还需依赖每一位developer.

完整策略可视化

328dffe3e74fc519e54997488bcc2bef.png

  • 实现平台:BigQuant—人工智能量化投资平台
  • 源码地址:《深度学习因子选股模型-基于卷积神经网络》

参考文献:

  • 《Deep Learning with Python 》弗朗索瓦·肖莱,Keras之父
  • A Comprehensive Guide to Convolutional Neural Networks

更多机器学习与量化投资知识尽在BigQuant社区:AI量化投资社区 - BigQuant

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值