量化paper读书笔记(二)——DoubleAdapt-用于股票趋势预测的增量学习的元学习方法


本文概述:
本文提出了一个名为DoubleAdapt的端到端框架,用于增量学习在股票趋势预测中的应用。关键词DoubleAdapt即两个适配器(data adapter和model adapter)的框架来适应数据和模型,以减轻分布偏移(distribution shifts)的影响;这也是本文的重要亮点。DoubleAdapt背后的思考是自动学习如何将股票数据适应到一个局部平稳分布中,以便于进行更有效的更新。通过数据适应,作者能够自信地在减轻的分布偏移下适应模型参数。此外,作者将每个增量学习任务视为一个元学习任务,并自动优化适配器以实现理想的数据适应和参数初始化。在真实世界的股票数据集上的实验表明,DoubleAdapt在预测性能上达到了最先进的水平,并且显示出相当的效率。

本文贡献:
●端到端增量学习框架:提出了DoubleAdapt,这是一个端到端的增量学习框架,用于股票趋势预测。它能够适应数据和模型,以应对在线环境中的分布变化。
●双层优化问题:将每个增量学习任务构建为双层优化问题。底层是使用模型适配器初始化的预测模型,并使用适应的增量数据进行微调。上层包括数据适配器和模型适配器作为两个元学习器,它们被优化以最小化在适应的测试数据上的预测误差。
●实际数据集上的实验:在真实世界的数据集上进行了实验,证明了DoubleAdapt在不同种类的分布变化下都能有效工作,并且与滚动重新训练(RR)方法和元学习方法相比,达到了最先进的预测性能。
以往的股票预测任务往往是采取滚动向前训练的方式,这会遇到两方面的问题。首先在多次滚动训练后模型会遗忘之前的数据,其次由于每次的滚动窗口较长,retrain的时间消耗都比较巨大;针对上述这两类问题,增量训练的方式可以比较好地解决。所谓元学习,本文提出的核心框架即为DoubleAdapt方法。后文会着重介绍这一部分。

DoubleAdapt
上面提到了增量学习的好处,那是完全什么都不用做直接训练就好了吗?显然不是。增量学习所面对的最大挑战就是分布偏移(distribution shifts)问题,比较明显的是新进来的增量数据很可能与原始模型训练使用的数据分布差异很大,直接拿去用可能导致模型学了半天啥有用的信息都没学到。为了解决上述偏移的问题,本文提出的DoubleAdapt方法即两步调整,分为调数据的data adaptation和调模型的model adaptation。
1. data adaptation
为了减轻增量数据分布偏移的问题,作者提出了一种细粒度的方式来调整所有的feature和label,背后的核心思想是一些分布偏移的模式会在历史数据中重复多次出现且可以被模型所学习。例如,在牛市中出现利多新闻,市场情绪往往过热从而反映在股价中,此时股价往往会经历异常波动后在未来几周内趋于正常。一方面,我们会希望从feature和label中剔除这些反应过度的成分,以接近未来的倾向;另一方面,当我们假设原始的增量数据是可靠的(reliable),那么具有不同分布的测试数据可以被视为一个有偏的数据集,则将测试数据的分布适应增量数据的分布具有去偏效果。

图片

解释完data adaptation的动机和作用后,其具体做法可分两步走。第一步去解决协方差偏移(covariate shifts),利用映射函数G细粒度地调整train、test特征,使得train和test的特征分布向代理分布agent靠拢;第二步解决条件分布偏移(conditional distribution shifts),同样的,利用映射函数H去调整train的label以期望其条件分布向代理agent条件分布靠拢;最后有个逆映射的过程即将模型输出的预测agent条件分布转换为test的条件分布。

图片

顺着作者思路解释完后不难看出其实data adaptation实际上可以分解成feature adaptation和label adaptation。接下来我们结合公式看看到底怎么调整的数据分布。
从上文的叙述中可以看出整个data adaptation最重要的即为三个函数,feature adaptation的G、label adaptation的H和逆映射的H-1。
首先对于函数G,很容易想到的它就是在对原始feature乘上一个矩阵再加上一个偏置,这样train和test的特征就被映射到一个新的共同超平面上也就是上面用agent来表征了。但这有一个问题是太简单了解释力度不够,因为不同市场的特征向量往往需要不同的映射方式。例如极端市场中的特征可能需要被平滑或剔除,较常出现的特征需要被正确识别,而信息很丰富的特征需要赋予更大的权重被模型学习到。

图片

于是作者提出了多头特征调节(multi-head feature adaptation layer)的方法,公式如下。其中N表示头的数量,gi(x)即为第i个转换头,si为标准化后的置信值即用来决定第i个转换头的权重。其中每个gi即上文中简单的dense layer。

图片

图片

对于置信度si的计算,作者使用了N个原型向量(prototype vector)来判断哪个转换头更适用,去计算特征向量与远行向量的余弦相似度。公式中的pi为第i个原型向量,然后根据下面这个去计算si。

图片

注意这里的原型向量是可以进行学习更新的。

图片

label adaptation是为了解决条件分布偏移,它的函数H相对比较简单。和feature的函数一样,H也代表多头机制,公式中的si即为feature adaptation中求出的每个头权重。

图片

图片

前面对于feature、label的处理可以看做是在offline训练模型所做的处理,当online时对于模型给出的预测结果ŷ是经过mapping转换后的,所以为了得到label真实的分布应该加多一层逆映射即H-1函数。

图片

图片

2. data adaptation
首先我们会实现训练好一个模型,MA在做的事就是将这个训练好的模型参数去调整适应新增数据集(incremental data)
当我们拿到一个新的训练集train,首先会根据上面data adaptation步骤将其调整为train_hat。
现在有了预测模型F,有了train_hat训练集,我们会在train_hat上对模型F进行fine-tune。求解的损失函数如下:

图片

这样模型F最初的参数φ(k-1)会被调整为θ,这样参数为θ(k)的模型F对测试集合Dtest进行线上预测。

图片


实验设计:
讲完本文最重要的一个框架后来到实验部分。首先数据集为CSI300、CSI500,特征来自qlib的alpha360,label为次日涨跌幅定义如下:

图片

训练集:2008.01.01 – 2014.12.31, 验证集:2015.01.01 – 2016.12.31, 测试集2017.01.01 – 2020.07.31。训练集做截面标准化。
评价指标为4个,IC、ICIR、RankIC、RankICIR;资产组合评价指标2个,年化超额收益和IR。其余回测设置为qlib中默认设置。每个回测run 10次后取指标均值。
baseline部分拿来对比的分为两类,滚动训练(RR、DDG-DA)增量训练(IL、MetaCoG、C-MAML、DoubleAdapt)
RR:滚动重训练,是一种简单的重新训练方法,它定期使用所有可用数据对模型进行重新训练,这些数据具有相同的权重。
DDG-DA:相较于RR这种方法更高级,它通过预测未来数据的分布,并重新加权所有历史样本来生成训练集,使得这个训练集的分布与预测的未来分布相似。DDG-DA在分布变化之前,通过为按时间段分组的样本分配不同的权重来适应训练数据。
IL:这是一个基础的增量学习基线方法,它只使用最近的增量数据通过梯度下降对模型进行微调。
MetaCoG:引入了一个每个参数的掩码来根据上下文选择特定于任务的参数。MetaCoG更新掩码而不是模型参数,以避免灾难性遗忘。
C-MAML:遵循MAML的思想来预训练慢权重,这些慢权重可以产生快速权重以适应新任务。在线时,C-MAML持续微调快速权重,直到检测到分布变化,然后慢权重被更新并用于初始化新的快速权重。
DoubleAdapt:即上面所介绍的方法。

结论:
对比试验结果可以看到本文的doubleadapt方法在大部分指标上都更为优秀。

图片

 

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/111127
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 3分钟前
下一篇 2分钟前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注