探索时间序列对于法学领域的分析

2024年07月16日 由 alex 发表 144 0

基础模型推动了计算语言学和计算机视觉领域的最新进展,并在人工智能(AI)领域取得了巨大成功。成功基础模型的关键理念包括:


  1. 巨量数据: 庞大而多样的训练数据涵盖了全面的分布,使模型能够逼近任何潜在的测试分布。
  2. 可移植性: 通过提示和自监督预训练等记忆和调用已学信息的机制,模型可以有效地适应新任务。


1


大型时间序列基础模型 (LTSM)

继基础模型在计算语言学领域取得成功之后,越来越多的研究工作正致力于将这一成功复制到另一种类型的序列数据中:时间序列。


与大型语言模型(LLM)类似,大型时间序列基础模型(LTSM)旨在从大量不同的时间序列数据中学习,从而做出预测。经过训练的基础模型可以针对各种任务(如离群点检测或时间序列分类)进行微调。


虽然时间序列基础模型的概念已经存在了一段时间,而且各种神经架构(MLP、RNN、CNN)也得到了探索,但由于数据数量和质量的问题,还没有一种神经架构能够实现零误差预测。在 LLM 取得成功后,人们开始了更广泛的努力,旨在利用从自然语言数据中学到的序列信息进行时间序列建模。


为什么 LLM 可以用于时间序列数据?

语言模型和时间序列模型之间的主要联系在于输入数据都是序列数据,两者的主要区别在于为模型编码数据的方式,以及模型所要捕捉的模式和结构类型。


对于大型语言模型而言,输入句子中的单词通过标记化编码为整数序列,然后通过嵌入查找过程转换为数字向量。


2


同样,时间序列数据也可以标记化为一系列符号表示。下图举例说明了如何将包含 100 个时间戳的时间序列转换为长度为 5 的序列,其中序列中的每一步都由一个 4 维特征向量表示。时间序列可以用滑动窗口分割,并进行离散化处理,以提取统计值(如平均值、std、最小值、最大值)来表示每个窗口。


3


这样,在综合语料库中训练出来的大型语言模型就可以被视为类似于大型时间序列模型(LTSM),后者是从现实世界数据中发现的大量数字模式中学习出来的。因此,时间序列预测问题可以看作是下一个词的预测问题。要实现最佳性能和零/少量预测,关键的挑战在于将时间序列标记和自然语言标记之间的语义信息对齐。


如何为时间序列建模重新编程 LLM

为了应对这一挑战,研究人员正从训练大型语言模型的各个角度研究调整时间序列与自然语言之间信息差距的方法。下表列出了两种数据类型的组件比较以及各组件的代表作。


4


一般来说,为时间序列建模重新编程大型语言模型(LLM)与为特定领域微调大型语言模型类似。这一过程涉及几个关键步骤:标记化、基础模型选择、提示工程和定义训练范式。


LLM 的时间序列数据标记化可以通过符号表示来实现。与其依赖人工离散化和启发式特征提取,不如使用简单的线性层或预先训练好的标记化器[3],将时间序列数据片段映射为潜在嵌入空间中的标记,从而使标记化的时间序列更好地适应 LLM。


可以通过类比不同架构的目标来选择基础模型。例如,句子分类可以对应于时间序列分类或离群点检测,而下一个单词预测可以对应于时间序列预测。


提示时间序列数据既可以依赖于数据的文本信息(如数据集或任务描述),也可以依赖于从每个时间序列中提取全局统计特征,以突出不同数据集之间的整体差异。


时间序列数据的训练范式通常遵循自然语言处理中使用的类似方法。这些方法包括:使用相同的模型架构从头开始训练,不使用预先训练的权重;在预先训练的权重上进行微调;或者训练并行适配器(如 LoRA),使 LLM 适应时间序列数据。每种方法都有不同的计算成本,但并不一定与性能结果成正相关。


了解训练大型时间序列模型的不同设计选择

为了了解每一步选择的利弊,我们最近的论文 LTSM-bundle 在开源基准数据集上研究了不同选择的组合,并提供了一个开源基准框架,使公众能够在自己的时间序列数据上对不同选择的 LLM 进行重新编程和基准测试。


5


具体来说,我们深入研究了如何通过各种因素来训练 LTSM 模型,如提示模型的不同方法、如何分解数据、训练方法、选择正确的基础模型、我们拥有的数据量以及数据集的多样性。在研究现有方法的基础上,我们提出了一个名为 "时间序列提示 "的新想法。这种新方法通过从训练数据中提取关键特征来创建提示,从而为每个数据集提供可靠的统计概览。


我们根据预测误差(平均平方误差/绝对误差)来评估不同的选择,数字越小,模型越好。从研究中获得的一些重要启示包括


1. 在增强 LTSM 模型的训练方面,简单的统计提示(TS 提示)优于文本提示,与不使用提示的情况相比,使用统计提示的性能更优。


6


2. 与其他标记化方法相比,用可学习线性层标记时间序列能更好地训练 LTSM 模型,尤其是在同时处理来自不同领域的数据时。


7


3. 从头开始训练最初可能表现良好,但由于参数过多,有可能造成过度拟合。全面微调通常能达到最佳性能,收敛速度是从头开始训练的两倍,从而确保高效率、高效益的预测。


8


4. 在长期预测(336 步和 720 步)中,小型模型的性能最多可提高 2%,而在短期预测(96 步和 192 步)中,中型模型的性能则优于大型模型,这是因为大型模型可能存在过度拟合问题


9


5. 数据量的增加与模型性能的提高并不成正比,因为每个数据集的数据越多,训练时间序列的粒度就越大,这可能会降低模型的泛化能力。但数据集多样性的增加通常会提高模型性能。

10


6. 将所有这些收获捆绑在一起,就能创建一个 LTSM 模型(LTSM-Bundle),其性能优于所有现有的为时间序列和基于变压器的时间序列预测模型重新编程 LLM 的方法。


11


自己为 LTSM 重新编程!


第 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] \
文章来源:https://medium.com/towards-data-science/time-series-are-not-that-different-for-llms-56435dc7d2b1
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消