一、研究背景与问题定位
在金融时间序列预测这块,用大语言模型精准预测股票走势特别重要。不过,现在的大模型算法问题挺明显的。不管是学术界还是行业内,大家都特别关注怎么让大模型在处理金融数据时表现得更好。但目前这些模型,在推理效率和捕捉金融数据复杂模式的能力上都不太够。尤其是从海量的金融时间序列数据里精准提取关键信息,用来做可靠的预测,这里面还有好多问题没解决呢,这可大大限制了金融预测的准确性和实用性。
现在,研究和实际应用都碰到了不少难题。第一,金融时间序列数据量特别大,还到处都是噪声。数据这么复杂,传统的分析方法很难准确找出那些关键的影响因素,很容易被噪声干扰,最后预测就出现偏差。第二,现有的基于文本训练或者数值相似性的检索方法,在处理金融时间序列数据的时候根本不行,没办法有效发现数据背后隐藏的语义联系,还有复杂的市场动态关系。第三,主流的大模型在整合金融时间序列数据时,常常忽略历史数据里包含的丰富信息,就靠有限的近期数据来预测,很难全面掌握市场趋势。为了解决这些问题,我们提出了一种全新的检索增强生成(RAG)框架,通过创新的办法来提高股票走势预测的精度和可靠性。
论文:Retrieval-augmented Large Language Models for Financial Time Series Forecasting
链接:https://arxiv.org/pdf/2502.05878v1
二、方法创新
1. 改进点一:模型结构
我们提出的 RAG 框架,主要包含三个关键部分,分别是数据集构建、检索器训练还有推理,如图所示。从数学的角度来讲,整个框架都是围绕着检索器来运作的,这里面的指的就是查询序列。
在构建数据集的时候,我们把金融指标和历史股票价格数据整合到一起。具体做法是,先挑出那些在美国市场交易量比较高的股票,再结合行业专家的建议,加上互信息分析,最终选出了 20 组挺有代表性的金融指标。这些指标可重要了,能让我们了解到股票价格反映不出来的市场情况。整理好数据后,我们再把它们按顺序排好,分成训练集、验证集和测试集。
检索器训练是框架的核心环节。我们以微调后的1B参数大语言模型StockLLM作为骨干模型。StockLLM会对候选序列进行评分,进而得到每个候选序列相对于查询序列的得分,计算公式如下:
在这个公式里,表示正确类别的logit(例如,如果股票实际走势是上涨,那么就是“rise”对应的logit值 ),而则代表所有可能类别的logits。基于这个得分,我们进行候选选择操作,选取得分最高的1个序列作为正候选,得分最低的15个序列作为负候选,分别构成集合和 。
训练目标是让检索器能够精准区分历史上有意义的序列和噪声序列,通过最大化查询序列与候选序列之间的相似性度量来达成,公式为:
到了推理阶段,训练好的检索器 FinSeer 会从候选池里找出相关序列,然后把这些序列加到 StockLLM 的输入上下文里,再结合原始查询进行预测。从模块化角度来看,各个模块各司其职又相互配合,这种结构设计让整个框架简单明了,以后扩展和维护都很方便。要是面对大规模语料,数据集构建模块可以很灵活地添加更多金融数据,让数据种类更丰富;检索器训练模块能通过优化评分和选择策略,在处理大规模数据里的复杂信息时表现得更好,还能加快模型收敛速度;推理模块则能高效利用检索到的信息做预测,大大提升模型的可扩展性,让它能适应不断变化的市场环境。
2. 改进点二:针对检索问题的创新算法
在搭建主流大模型的时候,怎么处理大规模金融时间序列数据的检索问题,一直是个特别难突破的瓶颈。像传统的检索方法,不管是根据文本训练,还是按照数值相似性来找,都没办法从海量的金融数据里,精准地找出对预测股票走势有用的信息。这些方法往往只能看到数据表面的一些特征,根本没办法深入挖掘数据背后隐藏的潜在模式,还有市场运行的内在逻辑。
为了解决这个麻烦事儿,我们想出了一种基于 LLM 反馈的检索算法。首先,用 StockLLM 给候选序列打分,打分依据就是前面提到的公式(1)。通过这个公式,我们就能用具体数值衡量每个候选序列对预测股票走势到底有多大潜在价值。
然后,按照公式(2)来挑选正候选序列和负候选序列,用这些序列构建训练样本。这么做能给模型提供有针对性的学习材料,让模型更清楚哪些序列对预测有帮助,哪些序列其实没啥用,就是干扰信息。
然后,为了让检索器更好地学习如何区分有意义的序列和噪声序列,我们采用了知识蒸馏技术。假设检索器的输出分布为,StockLLM的输出分布为,我们通过最小化两者之间的Kullback-Leibler(KL)散度来优化检索器,公式如下:
在实际优化过程中,我们希望越小越好,也就是最小化这个值,所以我们的优化目标可以写成:
在这些公式中,代表候选序列。公式(3)中的表示StockLLM的输出分布和检索器的输出分布之间的KL散度。是StockLLM对候选序列的预测概率,反映了大语言模型对该序列与预测任务相关性的判断;是检索器对候选序列的预测概率。通过最小化KL散度,检索器能够学习到StockLLM的知识,从而提高自身检索的准确性。例如,在复杂的金融数据场景下,StockLLM凭借其强大的语言理解和数据处理能力,可以对候选序列进行更准确的评估,检索器通过学习StockLLM的评估方式,能够更精准地筛选出对股票走势预测有帮助的序列,排除那些干扰信息。
3. 改进点三:训练机制的突破
传统的大模型训练机制在金融时间序列预测中,通常采用简单的损失函数来优化模型,比如常见的均方误差损失函数:
在这个公式里,代表样本数量,表示真实的股票走势(可以是上涨、下跌或持平),则是模型预测的股票走势。这种传统机制存在明显的局限性,在处理金融数据的时候,它完全没法把那些复杂信息利用起来。就只盯着预测值和真实值差了多少,压根不考虑检索到的数据跟模型预测之间到底有啥内在联系。金融市场的变化又快又复杂,这么简单的训练机制,根本达不到我们对准确性和可靠性的高要求,也没办法灵活适应市场的动态变化,很容易就跟不上市场的节奏了。
我们改进后的训练机制,融合了 LLM 反馈,还设定了新的训练目标。前面提到过,我们用 StockLLM 给候选序列打分,再挑出正、负候选序列,这样一来,训练数据就更有针对性,能更好地引导模型学习真正有用的信息。而且,我们把公式(2)当作训练目标,让查询序列和历史上那些有价值的序列相似度尽可能高。
这次改进,更新策略有了根本性的改变。以前只根据预测值和真实值的差别来更新,现在不一样了,借助 LLM 反馈,引导检索器挑选更有价值的信息,让模型训练过程更优化。从网络结构来看,StockLLM 和检索器之间形成了协同合作的关系。StockLLM 能帮检索器理解语义、评估数据,检索器则帮 StockLLM 筛选出更相关的历史数据,两者相互配合,一起提升模型在金融时间序列预测上的表现。经过这样的改进,模型就能更好地捕捉金融数据里复杂的模式和潜在关系,预测的准确性和可靠性都大大提高了。
三、实验验证
为了验证我们提出的 RAG 框架和检索器 FinSeer 好不好用,我们在 ACL18、BIGDATA22 和 STOCK23 这三个数据集上,做了全面的实验测试。实验结果和好几种常见的基准算法做了对比,主要看两个指标,一个是准确率(ACC),另一个是马修斯相关系数(MCC)。
在 ACL18 数据集上,我们的 RAG 框架搭配 FinSeer 检索器,准确率达到了 0.521 ,而单独的 StockLLM 准确率只有 0.496,随机检索的准确率更低,才 0.481。在 BIGDATA22 数据集上,我们的方法准确率是 0.538 ,像 Instructor、UAE 这些基准算法,准确率分别只有 0.497 和 0.495。在 STOCK23 数据集上,我们的方法表现也很亮眼,准确率达到 0.542 ,比其他基准算法高出不少。
从实验数据能明显看出来,在处理大规模金融时间序列数据的时候,我们提出的 RAG 框架和 FinSeer 检索器,和传统方法、其他基准算法比起来,在预测股票走势的准确率上有很大提升,最高能提升 8%。这就充分说明,我们这个大模型算法在处理金融领域的大规模数据,还有应对复杂场景的时候,既有效又稳定,给金融时间序列预测提供了更靠谱的技术支持。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。