【华泰金工】SinGAN 单样本生成:原理、测试方法、实证结果
由qxiao创建,最终由qxiao 被浏览 307 用户
本文转载源自华泰金融工程微信公众号文章:【华泰金工林晓明团队】SinGAN 单样本生成——人工智能系列之四十九
林晓明 S0570516010001 研究员 SFC No. BPY421
李子钰 S0570519110003 研究员
何 康 S0570520080004 研究员 SFC No. BRB318
报告发布时间:2021年10月24日
摘要
SinGAN基于单样本生成任意尺寸的模拟样本,捕捉数据长时程特征
本文介绍生成对抗网络的重要变式SinGAN,并测试该方法在金融资产生成任务中的效果。SinGAN基于单样本生成,可得到任意尺寸的模拟样本,该研究获2019年国际计算机视觉大会(ICCV2019)最佳论文奖。SinGAN由不同层级的GAN“串联”而成,**==低层GAN学习粗糙的全局特征,高层GAN学习精细的局部纹理。==以资产收益率生成为实验任务,以WGAN为对照组,测试结果表明,WGAN在真序列较短、样本量较小时效果不佳,而==SinGAN在拟真性和多样性上均占优。==**同时,SinGAN能更完整地捕捉真序列的频域特征,而WGAN无法复现中、长尺度周期。
样本量悖论和长度不匹配是制约GAN广泛应用的两处瓶颈
生成对抗网络存在一条经典悖论:应用GAN的初衷是解决样本稀缺问题,但训练好一组GAN的前提是需要足够数量的样本。“训练GAN本身需要大样本”是制约GAN广泛应用的一大瓶颈。另一方面,金融时间序列分析中通常使用“切片”方式对真实序列进行采样。采样序列和GAN生成序列长度必然短于真实序列,这就使得生成序列难以复现真实序列的长时程性质。
SinGAN由不同层级的GAN串联而成,实现从粗糙到精细特征的学习
SinGAN基于单样本生成,可得到任意尺寸的模拟样本,解决样本量悖论和长度不匹配问题,该研究获ICCV2019最佳论文奖。SinGAN由不同层级的GAN以金字塔形式“串联”而成,这些GAN被依次训练。每层生成器G的输入是噪声叠加前一层生成器输出并经上采样后的假样本。每层判别器D的输入是G输出的假样本,或者原始数据经下采样后的真样本。这种多层级架构使得==低层GAN学习粗糙的全局特征,即低频信息,高层GAN学习精细的局部纹理,即高频信息==。
SinGAN在判别器网络和损失函数的设计上颇具巧思
除金字塔结构外,SinGAN在判别器网络和损失函数的设计上也颇具巧思。SinGAN判别器属于马尔可夫判别器,相比普通GAN关注更多局部信息,因此在保持原序列或图像的细节上具有优势。SinGAN的损失函数为对抗损失和重构损失相加,对抗损失和普通GAN及其变式的思想一致,重构损失是为了确保某组特定噪音恰好可以生成真样本,从而提升训练的稳健性。
SinGAN在样本量较小时表现优于对照组,并且更完整地捕捉频域特征
我们设计四项金融资产收益率生成任务,测试SinGAN效果。对照组为WGAN生成短序列拼接得到长序列。日频沪深300生成任务中,两组模型真实性和多样性指标均较好。日频科创50生成任务中,由于真序列较短、样本量较小,WGAN出现严重的模式崩溃,而==SinGAN在真实性和多样性指标上全面占优。==月频标普500和欧元兑美元生成任务中,S==inGAN频域信号和真实序列接近,具有42、100、200个月附近的周期,==而WGAN无法复现中、长尺度的周期。本质上,SinGAN中的低层GAN学习低频信息,高层GAN学习高频信息,因此能更完整地捕捉数据的频域特征。
**风险提示:**SinGAN生成序列是对市场规律的探索,不构成任何投资建议。深度学习模型存在过拟合的可能。深度学习模型是对历史规律的总结,如果市场规律发生变化,模型存在失效的可能。
研究导读
量化研究的基石之一是统计学,统计学的理论基础之一是大数定律,使用大数定律的前提是对数据进行采样。理想的量化研究从大样本中挖掘规律,并在大样本中检验策略有效性。然而实际研究中,由于技术、算力等方面的局限,投资者往往仅围绕有限的真实历史数据进行分析,难言真正的“大样本”。
针对这一潜在困境,华泰金工推出生成对抗网络(GAN)系列研究,自2020年5月以来已发布相关深度研究8篇,借助深度学习技术实现金融数据的大样本模拟生成。生成序列能够复现真实序列具备的重要统计学性质,目前已成功应用于风险预测、策略调参等领域。
然而,生成对抗网络存在一条经典悖论:==应用GAN的初衷是解决样本稀缺问题,但训练好一组GAN的前提是需要足够数量的样本==。如果初始样本数量不够,训练得到的GAN效果欠佳,就无法提供真正有效的大样本;如果初始样本数量足够,那么也没有必要使用GAN。本质而言,==“训练GAN本身需要大样本”是制约GAN广泛应用的一大瓶颈。==
另一方面,金融时间序列是量化投资的重要研究对象,通常使用“切片”方式对时间序列进行采样。此时,采样得到的序列长度必然短于真实序列,并且样本数量越大,每条样本长度越短。进一步采用GAN生成时,模拟得到的序列长度也必然短于真实序列。换言之,==真实序列与GAN生成序列的长度不匹配,也是GAN应用于量化领域的一大“痛点”。==
针对以上两项缺陷,学界和业界研究者已展开探索尝试,其中具有代表性的研究之一是2019年国际计算机视觉大会(ICCV2019)最佳论文SinGAN: Learning a Generative Model from a Single Natural Image。该研究提出==GAN的变式SinGAN,基于单幅图像样本进行生成,得到任意尺寸的模拟样本,==从根本上解决样本量的悖论,若应用于时间序列生成,则可解决序列长度匹配问题。本文我们将介绍SinGAN原理,并测试SinGAN在生成金融时间序列的效果,重点关注SinGAN较普通GAN能否更好复现时域和频域上的长时程性质。
SinGAN原理
本章我们关注SinGAN基于单样本生成的原理,围绕模型架构、损失函数、训练和生成流程进行展开。这里假定读者已掌握GAN的基本原理,初次接触的读者可参考华泰金工往期研究《人工智能31:生成对抗网络GAN初探》(2020-05-08)。
模型架构
SinGAN应用于图像领域,可以基于单幅图像生成逼真并且丰富的虚假图像,效果如下图。
我们总结SinGAN模型架构的关键:
SinGAN由不同层级的GAN“串联”而成,这些GAN将依次训练。
1.每层生成器G的输入是噪声叠加前一层生成器输出并经上采样后的假样本。
2.每层判别器D的输入是G输出的假样本,或者原始数据经下采样后的真样本。
3.这种多层级架构使得低层GAN学习粗糙的全局特征,高层GAN学习精细的局部纹理。
推导示例
我们将借助示例深入理解SinGAN的训练过程。对技术细节不感兴趣的读者可略过本节。
==确定下采样比例及每层样本长度==
第一步我们确定实际下采样率及每层样本长度。假定:
原始单样本为长度308的一维收益率序列(后文实证测试部分美股及汇率月频序列长度为308)。
层与层间的初始下采样率为0.8。最低层即第N层样本长度为15。
首先,确定构成SinGAN的GAN模型总层数:
为了使计算所得的最低层样本长度与设定的最低层样本长度在数值上完全匹配,在不改变原始样本长度的前提下,我们能做的只有对下采样比例0.8进行调整。计算公式为:
至此,第15层至第0层的样本长度可以确定下来,分别为15、18、22、27、33、41、50、61、75、91、112、137、168、205、251、308,随后采用Cubic插值进行下采样。
==推导每层GAN的输入和输出尺寸==
承接上节,第二步我们推导每层GAN的输入和输出尺寸。继续假定:
每层生成器G的网络架构为5层一维卷积,卷积核(kernel size)长度为3,步长(stride)为1,边缘填充(padding)长度为0,前4层卷积通道数(channel,即卷积核数量)为32,第5层卷积通道数为1。这种网络结构使得每层卷积的输出序列长度较输入序列长度减少2,全部5层卷积的输出序列长度较输入序列减少10。
每层判别器D的网络架构为5层一维卷积,卷积层结构和生成器G完全相同。
==损失函数==
SinGAN中第n层GAN的损失函数为:
对抗损失
SinGAN中对抗损失的思想和普通GAN(及其变式)的损失相近,但一项细节上存在差异:
1.普通GAN的判别器最后一层通常为全连接层,将上一层输出通过全连接神经网络转换为长度为1的序列。
2.SinGAN判别器最后一层不设全连接层,输出一维向量(时间序列)或二维矩阵(图像),将向量或矩阵直接求均值,作为判别器的最终输出。
SinGAN的判别器属于马尔可夫判别器(Markovian disciminator)范畴,马尔可夫判别器也称PatchGAN,在前述CycleGAN论文中就有体现,其特殊之处在于最后的求均值操作,求均值意义何在?
对于马尔可夫判别器,求均值操作前的向量或矩阵中的每个元素,代表原序列或图像中某一片感受野,相当于原序列或图像的某块局部区域(patch)。向量或矩阵中每个值的大小,代表该patch属于真的得分。向量或矩阵的均值,代表样本各局部区域属于真的平均得分。
普通GAN的判别器采用单个值衡量样本属于真的得分,而马尔可夫判别器使用向量或矩阵衡量样本中各局部区域属于真的得分。马尔可夫判别器相比普通GAN关注更多局部信息,因此在保持原序列或图像的细节上具有优势。
尽管普通GAN及其变式与SinGAN的马尔可夫判别器在思想上存在差异,但两者输出值的长度是一致的,均为1。因此构建SinGAN对抗损失时仍可借鉴普通GAN及其变式。本文我们采用WGAN-GP的损失函数作为SinGAN损失函数的对抗损失部分:
关于WGAN-GP损失函数的具体含义,读者可以参考华泰金工往期研究《人工智能35:WGAN应用于金融时间序列生成》(2020-08-28)。
重构损失
重构损失的思想在CycleGAN中亦有体现,在该论文中称为循环一致损失(cycle consistency loss),其目标是寻找某一组特定噪音,使得生成序列尽可能接近真序列。重构损失衡量生成序列和真序列的距离,以2范数的平方表征该距离。GAN的本质是学习从随机噪音到真序列的映射函数,重构损失的设计可以限制可能的映射函数空间,提升训练的稳健性。
==训练和生成流程==
训练阶段,SinGAN采用逐层训练方式,从第N层(最粗糙层)开始训练,每层训练结束后该层参数就固定下来,随后训练下一层。每层GAN训练方式和普通GAN(及其变式)一致,每轮迭代中生成器和判别器交替训练。
SinGAN优势总结
普通GAN及其变式在模拟金融时间序列中的缺点有哪些?SinGAN能否克服这些缺陷?
训练普通GAN及其变式依赖大样本,因此需要对原始时间序列进行切片采样。若原始序列长度为T,切片长度为t(t一般小于T),则采样序列长度为t,GAN生成样本长度同为t。当步长为1时,样本量取最大值为T-t+1。此时,生成模型存在以下缺陷:
- 采样及生成序列长度t总是小于原始序列长度T,因此无法生成和原始序列等长的序列。
- 生成序列长度较短,难以复现原始序列具有的长时程性质。如全球资产价格和经济指标存在周期性,定量可测度的周期最长达200个月,若切片长度小于200个月,就难以复现长周期。
- 如果原始序列长度T较小,为保证合理切片长度,那么就需要牺牲样本量。当样本量较小时,GAN训练质量将受到损伤,如出现模式崩溃现象。这点在部分上市时间较短的资产(如科创50指数)体现尤为明显。
SinGAN可以克服上述缺陷:
1.SinGAN可以生成与原序列等长的序列。事实上,由于SinGAN模型包含上采样和下采样操作,采样率可根据实际需求调整,SinGAN生成序列长度甚至可以超过原序列。
2.由于SinGAN生成序列和原序列等长,SinGAN就有可能复现包括周期性在内的长时程性质。
3.SinGAN生成不受样本量约束,因此对于上市时间较短的资产也可以实现生成。
理论上,可以采用普通GAN及其变式进行多次生成,再将多次生成的短序列拼接,得到和原始序列等长的生成序列。后文实证测试部分,我们将对比1)SinGAN直接生成以及2)普通GAN及其变式生成再拼接这两种方案的优劣。
SinGAN测试方法
我们将以金融资产价格为研究对象,测试SinGAN生成效果。本章介绍具体测试方法。
数据处理
我们共进行四组测试,生成资产分别为日频沪深300、日频科创50、月频标普500、月频欧元兑美元。原始序列均为价格数据,将价格转换为收益率,训练和生成对象均为收益率数据。由于收益率数值范围相对较小,为便于模型训练,在预处理时将原始收益率进行固定比例放大,生成后再将生成收益率进行相同比例缩小,缩放比例因资产而异。具体比例及原始序列基础信息如下表。
网络结构
SinGAN由多层GAN“串联”组成,单层GAN包含生成器G和判别器D。本文采用的G和D网络结构已在“推导示例”一节介绍,相关超参数如下表。
关键超参数
SinGAN中样本长度及采样率相关超参数如下表。
SinGAN模型网络训练相关超参数如下表。
由于SinGAN超参数众多,并且模型相对复杂,训练时间开销较大,本文并未进行超参数优化,均采用常规的超参数值。
评价指标
我们设计SinGAN的对照模型WGAN,采用WGAN-GP模型生成长度为原序列一半的假序列,再将两条序列直接拼接,得到长度与原序列一致的假序列。
设计如下检验指标评价SinGAN及对照模型生成质量:
**1.日频数据重点分析时域特征:**选取7项真实性指标和1项多样性指标,如下表。具体计算方式请参考《人工智能35:WGAN应用于金融时间序列生成》(2020-08-28)。
**2.月频数据重点分析频域特征:**通过傅里叶变换考察生成序列的周期性质,检验生成序列是否和原始真实序列相近,具有42、100、200个月附近的周期信号。具体计算方式请参考华泰金工往期研究《工业社会的秩序》(2021-05-17)。
SinGAN实证结果
本章我们展示SinGAN在四项生成任务中的表现,并与对照组WGAN拼接序列进行对比。核心结论如下:
1.日频沪深300收益率生成任务中,SinGAN和WGAN表现接近,真实性和多样性指标均较好。
2.日频科创50收益率生成任务中,由于真序列较短、样本量较小,WGAN出现了严重的模式崩溃,而SinGAN在真实性和多样性指标上全面占优。
3.月频标普500和欧元兑美元收益率生成任务中,SinGAN频域信号和真实序列接近,而WGAN无法复现中、长尺度的周期。
日频沪深300
沪深300真序列与SinGAN生成序列如下图。实际学习和生成采用收益率序列,绘图采用价格序列。实证测试共生成1000条假序列,这里随机展示10条。观察知,SinGAN具备一定拟真性,同时生成序列内部具备一定多样性。后续将通过定量指标进行评价。
沪深300真序列与WGAN生成序列如下图。观察知,WGAN同样具备拟真性和多样性。往期研究《人工智能35:WGAN应用于金融时间序列生成》(2020-08-28)发现WGAN在日频沪深300序列生成任务中表现出色,是生成效果相对较好的GAN变式。
沪深300真实与生成序列评价指标如下表,其中SinGAN和WGAN评价指标为各自1000条生成序列对应指标的均值。观察知,SinGAN和WGAN生成序列在前7项拟真性指标上均接近真实序列,在第8项多样性指标上同样较为接近。总的来看,在日频沪深300收益率序列生成任务中,SinGAN和WGAN均表现较好。
日频科创50
科创50真序列与SinGAN生成序列如下图。观察知,SinGAN生成序列与真实序列具有相似的趋势,阶段顶部和底部出现时点与真实序列基本一致。同时,生成序列并非完全等同,内部也具备一定多样性。
科创50真序列与WGAN生成序列如上图。观察知,WGAN生成序列内部高度一致,可以推测WGAN出现了模式崩溃。模式崩溃是指GAN及其变式生成过于单一的样本,缺乏多样性的现象。事实上,笔者在这组测试中对WGAN进行了多次调参,但都出现了模式崩溃。
一般而言,WGAN相较普通GAN更不易发生模式崩溃,但在科创50生成任务中,原始序列长度过短,2019年底至2021年9月底共425个数据点,训练样本仅200余条。样本量过少可能是引发WGAN模式崩溃的原因之一。
科创50真实与生成序列评价指标如下表。WGAN在杠杆效应、盈亏不对称性两项拟真性指标上大幅偏离真实序列,而SinGAN在前7项拟真性指标上均接近真实序列。在第8项多样性指标上,SinGAN优于出现模式崩溃的WGAN。
图片总的来看,日频科创50收益率生成任务中,WGAN出现严重的模式崩溃,而SinGAN在真实性和多样性指标上全面占优。
月频标普500
标普500真序列与SinGAN生成序列如下图。观察知,SinGAN生成序列与真实序列具有相似的趋势,刻画出美股近15年长期上涨的规律。同时,生成序列并非完全等同,内部也具备一定多样性。
标普500真序列与WGAN生成序列如下图。观察知,WGAN同样具备较好的拟真性和多样性。往期研究《人工智能35:WGAN应用于金融时间序列生成》(2021-08-28)也发现WGAN在月频标普500序列生成任务中表现出色。
下面考察真实与生成序列的频域特征。对月频标普500序列计算对数同比序列,随后进行傅里叶变换。标普500真实同比序列频谱如下图,前三个峰值分别对应91.0、41.0、273.1个月周期。往期研究《工业社会的秩序》(2021-05-17)中,我们曾对全球148项资产价格和经济指标进行频谱分析,得出金融经济系统受42、100、200个月共同周期驱动的结论。下图标普500真实同比序列频谱结果与此前结论基本一致。
标普500SinGAN同比序列频谱如上图,标普500WGAN同比序列频谱如下图,两幅频谱均为各自1000条生成序列频谱的均值。观察整体形态,SinGAN与真序列相似,WGAN与两者差别较大。观察具体峰值,SinGAN具有与真序列相似的91.0、40.6、292.6个月周期,而WGAN缺少200个月附近的长周期。
月频欧元兑美元
欧元兑美元真序列与SinGAN生成序列如图26,真序列与WGAN生成序列如图27。观察知,SinGAN和WGAN生成序列拟真性和多样性均较好。
欧元兑美元真实、SinGAN、WGAN同比序列频谱分别如图28至30。观察整体形态,SinGAN与真序列相似,WGAN与两者差别较大。观察具体峰值,真序列前三个峰值分别对应215.6、105.0、57.7个月周期,SinGAN序列前三个峰值分别对应227.6、113.8、56.9个月周期,两者频域特征接近,而WGAN缺少100个月附近的中周期。
\n
月频标普500和欧元兑美元收益率生成任务中,各类方法前三大峰值对应周期汇总如下表。总的来看,SinGAN频域信号和真实序列较为接近,而WGAN无法复现中、长尺度的周期。本质上,SinGAN的低层GAN学习低频信息,高层GAN学习高频信息,因此能更完整地捕捉数据的频域特征。
SinGAN在时域的生成结果能够复现出频域的规律,反过来也是对规律的印证。真实数据必然是信号和噪音的混杂,噪音通常缺少规律,对模型而言难以学习,因此生成对抗网络本质上学习了数据中的信号部分。生成序列和真实序列所展现出的相似特性,可能正是模型“去伪存真”保留下来的真正规律。
时域上看,无论是标普500还是欧元兑美元,SinGAN生成数据和真实数据并不相同,但频域上看,真假数据展现出了高度一致的42、100、200个月附近的周期信号。这就说明,资产在时域上的涨跌方向、幅度、趋势的拐点等可能不存在显著规律,难以精确预测,但各类资产在频域上的周期变化是更易捕捉并且更为稳定的规律。
总结与讨论
本文介绍生成对抗网络的重要变式SinGAN,并测试该方法在金融资产生成任务中的效果。SinGAN基于单样本生成,可得到任意尺寸的模拟样本,该研究获2019年国际计算机视觉大会(ICCV2019)最佳论文奖。SinGAN由不同层级的GAN“串联”而成,低层GAN学习粗糙的全局特征,高层GAN学习精细的局部纹理。以资产收益率生成为实验任务,以WGAN为对照组,测试结果表明,WGAN在真序列较短、样本量较小时效果不佳,而SinGAN在拟真性和多样性上均占优。同时,SinGAN能更完整地捕捉真序列的频域特征,而WGAN无法复现中、长尺度周期。
生成对抗网络存在一条经典悖论:应用GAN的初衷是解决样本稀缺问题,但训练好一组GAN的前提是需要足够数量的样本。“训练GAN本身需要大样本”是制约GAN广泛应用的一大瓶颈。另一方面,金融时间序列分析中通常使用“切片”方式对真实序列进行采样。采样序列和GAN生成序列长度必然短于真实序列,这就使得生成序列难以复现真实序列的长时程性质。
SinGAN基于单样本生成,可得到任意尺寸的模拟样本,解决样本量悖论和长度不匹配问题,该研究获ICCV2019最佳论文奖。SinGAN由不同层级的GAN以金字塔形式“串联”而成,这些GAN被依次训练。每层生成器G的输入是噪声叠加前一层生成器输出并经上采样后的假样本。每层判别器D的输入是G输出的假样本,或者原始数据经下采样后的真样本。这种多层级架构使得低层GAN学习粗糙的全局特征,即低频信息,高层GAN学习精细的局部纹理,即高频信息。
除金字塔结构外,SinGAN在判别器网络和损失函数的设计上也颇具巧思。SinGAN判别器属于马尔可夫判别器,相比普通GAN关注更多局部信息,因此在保持原序列或图像的细节上具有优势。SinGAN的损失函数为对抗损失和重构损失相加,对抗损失和普通GAN及其变式的思想一致,重构损失是为了确保某组特定噪音恰好可以生成真样本,从而提升训练的稳健性。
我们设计四项金融资产收益率生成任务,测试SinGAN效果。对照组为WGAN生成短序列拼接得到长序列。日频沪深300生成任务中,两组模型真实性和多样性指标均较好。日频科创50生成任务中,由于真序列较短、样本量较小,WGAN出现严重的模式崩溃,而SinGAN在真实性和多样性指标上全面占优。月频标普500和欧元兑美元生成任务中,SinGAN频域信号和真实序列接近,具有42、100、200个月附近的周期,而WGAN无法复现中、长尺度的周期。本质上,SinGAN的低层GAN学习低频信息,高层GAN学习高频信息,因此能更完整地捕捉数据的频域特征。
SinGAN对于量化研究具有一定启发意义。可以借助SinGAN检验低频量化策略有效性和过拟合程度。低频策略使用数据时间跨度长,普通GAN及其变式生成的模拟数据长度不足以支持策略回测,而SinGAN生成的完整长度数据可以满足需求。此外,SinGAN的金字塔结构实现了从低频信息到高频信息的学习,而各频率信息混合正是金融时间序列的重要特性,在未来设计生成模型或判别模型时,SinGAN的网络结构或可提供借鉴。
风险提示
SinGAN生成序列是对市场规律的探索,不构成任何投资建议。深度学习模型存在过拟合的可能。深度学习模型是对历史规律的总结,如果市场规律发生变化,模型存在失效的可能。
参考文献
Shaham, T. R. , Dekel, T. , & Michaeli, T. . (2019). Singan: learning a generative model from a single natural image. IEEE.
Zhu, J. Y. , Park, T. , Isola, P. , & Efros, A. A. . (2017). Unpaired image-to-image translation using cycle-consistent adversarial networks. IEEE.
\