基础模型推动了计算语言学和计算机视觉领域的最新进展,并在人工智能(AI)领域取得了巨大成功。
成功的基础模型的关键要素包括:
海量数据规模:广泛且多样的训练数据覆盖了全面的数据分布,使模型能够逼近任何潜在的测试数据分布。
可迁移性:通过记忆和回忆已学信息的机制,如提示(Prompting)[1]和自监督预训练[2],模型能够有效地适应新任务。
大型时间序列基础模型(LTSM)
在计算语言学领域基础模型取得成功后,越来越多的研究致力于将这种成功复制到另一种序列数据类型上:时间序列。
与大型语言模型(LLMs)类似,大型时间序列基础模型(LTSM)旨在从庞大且多样的时间序列数据集中学习以进行预测。
训练好的基础模型随后可以针对各种任务(如异常检测或时间序列分类)进行微调。
尽管时间序列基础模型的概念已存在一段时间,并且已经探索了多种神经网络架构(如MLP、RNN、CNN),但由于数据数量和质量的问题,尚未实现零样本预测。
在LLMs取得成功之后,人们开始投入更多努力,旨在利用从自然语言数据中学习到的序列信息来进行时间序列建模。
为什么LLMs能用于时间序列数据?
语言模型与时间序列模型之间的主要联系在于,它们的输入数据都是序列数据。
主要区别在于数据如何被编码以供模型捕捉不同类型的模式和结构。
对于大型语言模型,输入句子中的单词首先通过分词被编码为整数序列,然后通过嵌入查找过程转换为数值向量。
类似地,时间序列数据也可以被分词为一系列符号表示。
下图展示了一个将包含100个时间戳的时间序列转换为长度为5的序列的示例,其中序列中的每一步都由一个4维特征向量表示。
时间序列可以通过滑动窗口进行分割,并进行离散化处理以提取统计值(如均值、标准差、最小值、最大值)来表示每个窗口。
这样,一个在广泛语料库上训练的大型语言模型可以被视为与从现实世界中广泛数值模式中学习的大型时间序列模型(LTSM)类似。
因此,时间序列预测问题可以被构造成一个类似于下一个单词预测的问题。
实现最佳性能和零样本/少样本预测的关键挑战在于对齐时间序列符号和自然语言符号之间的语义信息。
如何为时间序列建模重新编程LLM
为了应对这一挑战,研究人员正在从训练大型语言模型的各个角度研究如何弥合时间序列与自然语言之间的信息鸿沟。下表展示了这两种数据类型在组件上的比较以及每个组件的代表性工作。
一般来说,将大型语言模型(LLM)重新编程用于时间序列建模,与针对特定领域进行微调的过程相似。
**这一过程包含几个关键步骤:**数据分词、基础模型选择、提示工程以及定义训练范式。
对于LLM来说,时间序列数据的分词可以通过符号化表示来实现。
这避免了手动离散化和启发式特征提取的复杂性,可以通过简单的线性层或预训练的分词器[3]将时间序列数据的片段映射到潜在嵌入空间中的标记上,从而使分词后的时间序列数据更好地适应LLM。
在选择基础模型时,可以通过比较不同架构的目标任务来进行。
例如,句子分类可以与时间序列分类或异常检测相对应,而下一个词的预测则可以对应于时间序列预测。
对时间序列数据进行提示时,可以依赖于数据的文本信息(如数据集或任务描述),或者从每个时间序列中提取全局统计特征,以突出不同数据集之间的总体差异。
时间序列数据的训练范式通常遵循自然语言处理中使用的类似方法。
**这些方法包括:**使用相同模型架构但不包含预训练权重的从头开始训练、在预训练权重上进行微调,或训练一个并行适配器(如LoRA)以使LLM适应时间序列数据。
每种方法都有不同的计算成本,而这些成本并不一定与性能结果成正比。
因此,鉴于每个步骤中的多样选择,我们如何确定最佳选项,以创建一个具有最优性能且更具泛化能力的模型呢?
深入理解大型时间序列模型训练中的不同设计选择
为了全面评估每一步选择的优势与劣势,论文《LTSM-bundle》研究了在开源基准数据集上不同选择组合的效果,并提供了一个开源基准框架,使公众能够针对自己的时间序列数据重新编程和基准测试不同的LLM(大型语言模型)选择。
这篇论文深入探讨了训练LTSM(长短期记忆)模型的多种因素,包括模型提示的不同方式、数据分割策略、训练方法、基础模型的选择、数据量的多少以及数据集的多样性等。
在审视现有方法的基础上,我们提出了一种新的概念——“时间序列提示”(Time Series Prompt)。
这种新方法通过从训练数据中提取关键特征来生成提示,为每个数据集提供了坚实的统计概览。
我们基于预测误差(均方误差/平均绝对误差)来评估不同的选择,误差值越低,模型性能越好。
研究中的一些关键发现包括:
简单的统计提示(TS Prompt)在提升LTSM模型训练方面优于文本提示,并且与不使用任何提示的场景相比,使用统计提示能带来更优的性能表现。
使用可学习的线性层对时间序列进行分词,在训练LTSM模型时表现更佳,特别是在同时处理来自不同领域的数据时,这一方法相较于其他分词方法更具优势。
虽然从头开始训练模型在初期可能表现良好,但由于参数众多,存在过拟合的风险。全面微调通常能达到最佳性能,并且收敛速度是从头开始训练的两倍,从而确保了预测的高效性和准确性。
在长期预测(336步和720步)中,小型模型表现出高达2%的性能优势;而在短期预测(96步和192步)中,中等大小的模型则优于大型模型,这可能是因为大型模型存在潜在的过拟合问题。
数据量的增加并不总是能带来模型性能的改善,因为每个数据集的数据量增加会提高训练时间序列的粒度,反而可能降低模型的泛化能力。但增加数据集的多样性通常能提升性能。
综合以上发现,作者创建了LTSM-Bundle模型,该模型在重新编程用于时间序列的LLM(大型语言模型)和基于Transformer的时间序列预测模型方面,表现优于所有现有方法。
自己重新编程LTSM
如果大家想尝试自己重新编程LTSM,以下是LTSM-bundle的教程链接:https://github.com/daochenzha/ltsm/blob/main/tutorial/README.md
**步骤1:**创建一个虚拟环境。克隆并安装所需的依赖项和仓库。
conda create -n ltsm python=3.8.0``conda activate ltsm``git clone git@github.com:daochenzha/ltsm.gitclone git@github.com:daochenzha/ltsm.git``cd ltsm``pip3 install -e .``pip3 install -r requirements.txt
**步骤2:**准备你的数据集。确保你的本地数据文件夹结构如下所述。
- ltsm/` `- datasets/` `DATA_1.csv/` `DATA_2.csv/` `DATA_3.csv/` `...
步骤3: 从训练、验证和测试数据集中生成时间序列提示
python3 prompt_generate_split.pypy
步骤4:在‘./prompt_data_split’文件夹中找到生成的时间序列提示。然后运行以下命令以完成提示的定制。
# normalizing the prompts``python3 prompt_normalization_split.py --mode fit`` ``#export the prompts to the "./prompt_data_normalize_split" folder``python3 prompt_normalization_split.py --mode transform
最后步骤:使用时间序列提示和线性分词在gpt2-medium上训练你自己的LTSM模型。
python3 main_ltsm.py \` `--model LTSM \` `--model_name_or_path gpt2-medium \` `--train_epochs 500 \` `--batch_size 10 \` `--pred_len 96 \` `--data_path "DATA_1.csv DATA_2.csv" \"DATA_1.csv DATA_2.csv" \` `--test_data_path_list "DATA_3.csv" \` `--prompt_data_path "prompt_bank/prompt_data_normalize_split" \` `--freeze 0 \` `--learning_rate 1e-3 \` `--downsample_rate 20 \` `--output_dir [Your_Output_Path] \
论文和GitHub仓库:
论文链接:
https://arxiv.org/pdf/2406.14045
代码仓库:
https://github.com/daochenzha/ltsm/
如何学习大模型 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 的正确特征了。