生成式AI时代的特征选择
- lx2158
- 11月3日
- 讀畢需時 30 分鐘
1. 引论:特征工程的基础地位与演化挑战
在机器学习的理论框架与实践应用中,模型的性能并非空谈,而是深深植根于输入数据的质量与表征方式。特征是机器学习算法的输入(Features are the inputs to machine learning algorithms)。它们构成了模型感知和理解复杂现实世界现象的基石,是所有后续学习和推理过程的起点。在不同的学术传统和应用领域中,这些输入变量有着多样的命名约定。它们有时也称为自变量(independent variables),强调其在预测模型中的解释地位;协变量(covariates),常见于统计建模和因果推断领域;或在数学形式化体系中简称为X(or simply X)。
特征的多功能性体现在它们跨越了机器学习的各个主要范式。具体而言,它们可用于监督学习(supervised learning),其目标是学习一个从输入到输出的映射函数;或非监督学习(unsupervised learning),旨在发现数据内部的隐藏结构、模式或概率分布;或用于优化(or for optimization),例如在强化学习框架下,特征用于表示环境状态,以支持智能体学习最优策略来最大化累积奖励。
为了具体说明特征在现代复杂系统中的关键作用,我们可以考察量化金融领域的应用实例。例如,在QTS(一个先进的量化交易系统),我们使用超过100个特征作为输入(at QTS, we use over 100 features as inputs)。这些特征可能涵盖市场微观结构信号、宏观经济指标、公司基本面因子以及另类数据等多个维度。这些高维输入的目的是实现投资组合的动态管理,具体来说,是动态校准我们的 Tail Reaper 策略(一种专注于管理极端尾部风险的策略)和 E-mini S&P 500 期货(全球流动性最强的股指期货之一)之间的配置(dynamically calibrate the configuration between our Tail Reaper strategy and E-mini S&P 500 futures)。这一过程揭示了在高维、非线性、非平稳的金融环境中,模型对丰富且高质量特征输入的依赖程度。
然而,尽管大数据时代使得获取海量特征成为可能,但这并未简化建模过程,反而引入了“维度灾难”(Curse of Dimensionality)等新的复杂性。一个核心的挑战在于特征的有效性和信息含量。总的来说,建模者事先不知道哪些特征对于特定应用有用(In general, the modeler does not know beforehand which features are useful for a particular application),或者它们是否冗余(or whether they are redundant)。在模型构建的初始阶段,我们面临着关于特征空间的知识不确定性。特征之间可能存在复杂的多重共线性(multicollinearity),或者某些特征可能仅仅是噪声,与目标任务无关。
盲目地将所有可用特征纳入模型通常会导致严重的后果。使用所有特征可能导致过拟合(Using all features can lead to overfitting)和较差的样本外表现(and poor out-of-sample performance)。过拟合发生于模型复杂度远超数据所能支持的程度,导致模型学习了训练数据中的特异性噪声而非潜在的数据生成过程(Data Generating Process, DGP)。这样的模型在样本内表现优异,但在面对新数据时泛化能力极差。在金融等对预测稳健性要求极高的领域,样本外表现是衡量模型有效性的最终标准,过拟合的代价是巨大的。
下图(图1)展示了模型复杂度(例如,特征数量的增加)与模型性能之间的关系,直观地说明了过拟合现象(偏差-方差权衡)和特征选择的必要性。
图1:模型复杂度、过拟合与样本外性能的关系

除了泛化性能下降,高维特征空间还可能引发计算层面的严峻问题。或者更糟的是,在矩阵求逆过程中导致数值不稳定和奇异性(or worse, numerical instability and singularity during matrix inversion)。许多经典算法(如普通最小二乘回归、高斯过程)和现代优化算法(如内点法)的求解过程依赖于对特征协方差矩阵或Hessian矩阵的求逆。当特征数量庞大且存在冗余时,该矩阵可能接近奇异(即行列式接近于零),这将使得参数估计对微小扰动极其敏感,产生数值不稳定的解,甚至导致算法无法收敛。
因此,需要一个称为“特征选择”(Feature Selection)的过程(Hence the need for a process called “Feature Selection”)。特征选择旨在从原始特征集中识别出一个最优的子集,该子集能够在保持或提高模型性能的同时,降低计算复杂度、减少过拟合风险并提高模型的可解释性。它是构建稳健、高效机器学习模型的关键步骤,其重要性随着数据维度的增加而日益凸显。
2. 范式转变:从判别式AI到生成式AI
为了理解特征选择方法论的演变,我们必须首先审视主导性的建模范式是如何从关注条件概率转向关注数据分布本身的。
2.1 传统判别式AI及其特征选择方法
在传统的“判别式”AI中(In traditional “Discriminative” AI),模型的核心目标是学习输入与输出之间的决策边界或条件关系。具体来说,我们尝试对概率 P(Y|X) 进行建模(we try to model the probability P(Y|X))。在这个框架下,Y是我们试图预测或解释的变量,其中Y被不同地称为因变量(dependent variable)、目标(target)、标签(label)或变量(or variable)。判别式模型直接关注于在给定输入X的条件下预测Y,其重点在于寻找最优的分类边界或回归函数。
这种范式在特定领域,如金融市场预测中,长期占据主导地位。量化交易员经常使用基于树的模型(Quantitative traders often use tree-based models),例如梯度提升树(Gradient Boosting Trees, GBT)(such as Gradient Boosting Trees (GBT))。GBT通过迭代地集成弱学习器(决策树)来构建强大的非线性模型,具有很高的预测精度和对异构数据的良好适应性。为了在这种高容量模型中确定哪些特征最为关键,并提高模型的可解释性,研究人员开发了一系列专门的特征重要性评估技术。他们通常使用诸如MDA(Mean Decrease Accuracy,平均精度下降)、SHAP(SHapley Additive exPlanations,沙普利加和解释)、LIME(Local Interpretable Model-agnostic Explanations,局部可解释模型无关解释)之类的特征选择算法(and feature selection algorithms such as MDA, SHAP, LIME),来选择可用于建模 P(Y|X) 的特征子集(to select the subset of features that can be used to model P(Y|X))。MDA通过置换检验评估特征对预测准确性的边际贡献;SHAP基于合作博弈论提供了一种具有理论保证的特征归因方法;LIME则通过局部线性近似来解释单个预测。
2.2 生成式AI(GenAI)的兴起与特征角色的重塑
然而,随着深度学习技术的飞速发展,特别是大型语言模型(LLM)和扩散模型(Diffusion Models)的突破,人工智能进入了生成式AI(GenAI)时代。在这一新的范式下,特征的角色和处理方式发生了根本性的变革。在生成式AI(GenAI)中,特征扮演着比目标变量Y更为核心的角色(In Generative AI (GenAI), features play an even more central role than the target variable Y)。生成式模型的目标是学习数据本身的生成过程和内在结构,即对输入数据的分布 P(X) 进行建模。
这一范式转变意味着,我们投入大量计算资源来构建复杂的深度神经网络(DNN)(Complex Deep Neural Networks (DNN))。这些网络的构建目的仅仅是为了对X的概率分布进行建模(are built just to model the probability distribution of X),而不管它们可能用于预测什么样的Y(irrespective of what Y they may be used to predict)。模型试图捕捉特征空间的联合分布、复杂的依赖关系和低维流形结构。
这种以数据分布为中心的建模方式催生了“预训练”(Pre-training)和“微调”(Fine-tuning)这一强大的学习范式。通常,我们用一个目标(例如它对X分布的建模效果,通常通过最大化数据似然性或其变分下界来衡量)来预训练一个DNN(Typically, we pretrain a DNN with one objective (e.g. how well it models the distribution of X)),学习到通用的、可迁移的特征表示(Representation Learning)。然后,这个预训练好的模型可以被用于另一个目标(and use it for another objective)(例如使用深度强化学习优化某个奖励)(e.g. optimizing some reward using deep reinforcement learning)。模型首先在大规模无标签数据集上学习基础知识,然后将这些知识迁移到特定的下游任务中。
判别式AI专注于建模条件概率 $P(Y|X)$(学习决策边界),而生成式AI专注于建模数据分布 $P(X)$ 或 $P(X, Y)$(学习数据生成过程)。下图(图2)直观地对比了这两种范式。
图2:判别式模型与生成式模型的对比示意图

2.3 GenAI时代对特征选择的新需求与传统方法的局限
这一范式转变对传统的特征选择技术提出了严峻的挑战,使其在新的背景下显得力不从心。
首先是标签依赖性的问题。在预训练阶段,通常是在无监督或自监督的设置下进行的,目标变量Y往往是缺失的。在Y尚未定义的情况下,我们无法再使用MDA、SHAP或LIME(We can no longer use MDA, SHAP, or LIME when Y is yet undefined)。这些技术的设计初衷是评估特征对于预测特定目标Y的重要性。MDA依赖于模型在有标签数据上的预测精度变化,SHAP和LIME也需要模型的输出来计算特征的贡献度。当缺乏明确的Y时,这些判别式的特征选择方法失去了应用的基础。
但更重要的是(But more importantly),传统特征选择方法的局限性在于其静态和全局的特性。这种传统的特征选择技术是全局性的(such traditional feature selection techniques are global):它们基于整个数据集评估特征的平均重要性,得出一个固定的最优子集。它们不允许进行样本特定的特征选择(they do not allow for sample-specific feature selection)。在全局选择范式下,一旦选定了特征子集,它将用于每一次推理(Once the subset of features is selected, it is used for every inference),无论当前输入的具体内容和上下文如何。这种“一刀切”的方法限制了模型的适应性和灵活性(which limits the adaptability and flexibility of the model)。
在现实世界的复杂系统中,特征的重要性往往是高度依赖于上下文的(Context-dependent)。例如,在自然语言处理中,一个词的重要性取决于它所在的句子;在金融市场中,某个宏观经济指标的重要性可能在不同的市场机制(Market Regimes)下截然不同。模型需要具备根据当前样本动态调整特征关注焦点的能力,这是传统全局特征选择方法无法实现的。
3. 生成式AI时代的先进特征选择方法
面对传统方法的局限性,我们需要新的工具和范式来在生成式AI时代进行有效的特征选择和表示学习。这些新方法通常将特征选择内化为模型架构的一部分,而不是将其视为一个独立的预处理步骤。在这里,我们将讨论深度学习/生成式AI中两种强大且著名的方法,可用于特征选择(Here, we will discuss two powerful and well-known methods in deep learning/GenAI that can be used for feature selection):Transformer 和变分自动编码器(Variational Autoencoder)(Transformer and Variational Autoencoder)。
这两种架构代表了现代深度学习中处理特征的先进范式,它们与GenAI的核心思想高度契合,并具备几个关键优势:
无监督与自监督学习能力:它们可用于为不同的下游应用预训练DNN,或用于大型无标签数据集(They can be used to pretrain DNNs for different downstream applications or on large unlabeled datasets)。这使得我们能够充分利用海量的未标注数据来学习丰富的特征表示,解决了监督学习中标签数据稀缺的瓶颈。
样本特定的动态性:它们允许进行样本特定的特征选择(they allow for sample-specific feature selection)。通过引入注意力机制(在Transformer中)或概率潜在变量(在VAE中),这些模型可以根据每个输入样本的特点动态地调整特征的权重或选择特征的子集。
端到端联合训练:它们可以使用单个目标函数与DNN参数联合训练(and they can be jointly trained with the DNN parameters using a single objective function)。特征选择机制与模型参数通过反向传播共同优化,实现了端到端的学习。
3.1 Transformer架构与动态特征选择
Transformer架构自提出以来,已经在自然语言处理、计算机视觉、时间序列分析等多个领域展现了革命性的影响力,成为当前GenAI模型的基石。我在一系列文章中讨论了 Transformer 的构建方式(I discussed how Transformer is built in a series of blog posts)及其理论基础。其核心创新在于注意力机制(Attention Mechanism),特别是自注意力(Self-Attention),该机制为动态特征选择提供了一种优雅且强大的实现方式。
3.1.1 自注意力机制与特征重要性
自注意力机制允许模型在处理输入序列(或特征集合)中的每个元素时,动态地衡量该元素与其他所有元素之间的相关性。这种机制使得模型能够捕捉长距离依赖关系,并根据全局上下文信息来构建每个特征的表示。
在自注意力 Transformer 中(In a self-attention Transformer),模型学习如何计算查询(Query)、键(Key)和值(Value)向量,并通过点积等操作生成一个注意力矩阵(Attention Matrix)。该矩阵的每个元素表示一对输入特征之间的交互强度。一个关键的洞见是,注意力矩阵某一列的注意力分数之和,给出了该列对应特征的特征重要性分数(the sum of the attention scores of a column of the attention matrix gives the feature importance score of the feature corresponding to that column)。直观地理解,如果一个特征(对应某一列)在计算所有其他特征的上下文表示时被频繁地“关注”(即具有高的注意力分数总和),那么该特征很可能包含了对整个输入至关重要的全局信息。这提供了一种内在的、数据驱动的特征重要性度量。
进一步地,我们利用这些注意力分数来聚合输入特征。如果我们将注意力矩阵与输入特征(或它们的某种线性变换版本,即“值”Value向量)相乘(If we multiply the attention matrix with the input features (or some linearly transformed version of them)),我们得到“上下文向量”Z(we get the “context vector” Z)。这是我们转换后的特征向量(which is our transformed feature vector),它不再是原始特征的简单组合,而是融合了全局上下文信息的表示。其中每个特征都按其重要性(注意力)分数进行了加权(where every feature is weighted by its importance (attention) score)。Z中的每个元素都是对整个输入序列的加权平均,权重由自注意力机制动态决定。
至关重要的一点是,请注意,这些注意力分数取决于特征自身的值(Note that these attention scores depend on the values of the features themselves)(因为它们是通过特征之间的相似性度量计算得出的)。因此它们是样本特定的(so they are sample-specific)。这是Transformer与传统全局特征选择方法(如基于过滤器的方差分析或基于正则化的Lasso回归)的根本区别。对于不同的输入样本,由于特征值的差异,生成的注意力矩阵也会不同,从而导致不同的特征重要性评估和不同的上下文向量Z。这种动态适应性使得Transformer能够更精细地捕捉数据中的复杂模式和上下文依赖关系。

3.1.2 训练范式:预训练与微调的革命
Transformer参数(包括注意力层的权重矩阵和前馈网络的参数)的学习过程是通过优化一个特定的目标函数来实现的。在监督学习设置中,训练 Transformer 参数的方法是使用它来实现某个目标(The way to train the Transformer parameters is to use it to achieve some objective),例如最大化分类任务的对数似然(e.g. maximizing the log-likelihood of a classification task)。在这种情况下,上下文向量Z被输入到下游网络,用于预测标签Y。通过反向传播,梯度信息会指导注意力机制学习如何选择和组合特征以最小化预测误差。
然而,Transformer的真正威力在于其在无监督(或自监督)预训练中的应用,这也是其作为GenAI核心组件的原因之一。人们也可以在无监督设置中(即没有标签)预训练 Transformer(One can also pretrain the Transformer in an unsupervised setting (i.e. without labels))。在这种情况下,目标不再是预测外部标签,而是理解数据本身的结构。一种常见的预训练方法是采用类似自动编码器(Autoencoder)的结构:只需使用Z来重建(而不是预测)原始特征(just use Z to reconstruct (instead of predict) the original features),使用均方误差(MSE)作为损失函数(using the Mean Squared Error (MSE) as the loss function)。这种重建任务迫使Transformer学习一个能够捕捉原始特征所有关键信息的压缩表示Z。另一种流行的预训练方法是掩码建模(Masked Modeling),如BERT所采用的,通过预测被遮蔽的输入部分来学习表示。
一旦训练完成(预训练),该 Transformer 就已经学习到了高质量的通用特征表示。该模型就可以未经修改地用于其他下游任务(But once trained, the Transformer can be used unmodified for other downstream tasks),例如回归或优化(such as regression or optimization)。例如,可以将预训练的Transformer用作特征提取器,将Z输入到一个简单的分类器中。
我们也可以选择通过调整其参数(由于模型已经具备了良好的初始化,希望只是轻微调整)来对其进行微调(We can also choose to fine-tune it by adjusting its parameters (hopefully only slightly)),以优化其他目标(to optimize other objectives)。微调过程利用了预训练学到的知识,并在此基础上针对特定任务进行专业化调整,通常只需要较少的标签数据和计算资源就能达到优异的性能。
这种预训练和微调的范式是 GenAI 相比传统判别式AI如此强大的原因之一(This paradigm of pretraining and fine-tuning is one reason why GenAI is so much more powerful than traditional discriminative AI):它实现了知识的有效迁移(Transfer Learning),打破了不同任务和数据集之间的壁垒。具体来说,我们可以在一个大得多的(可能无标签的)相关数据集上预训练 GenAI 模型(we can pretrain the GenAI model on a much larger (possibly unlabeled) related dataset),而这个数据集与我们试图预测的数据集相关(that is related to the one we are trying to predict)。传统的判别式模型通常局限于特定任务的有标签数据集,而GenAI模型则可以从更广泛的数据源中汲取知识。
下图(图3)详细展示了GenAI中的两阶段学习流程。阶段一(预训练)利用大规模相关数据集进行无监督学习,学习通用表示P(X)。阶段二(微调)将预训练学到的知识迁移到特定目标的小规模数据集上,针对下游任务P(Y|X)进行优化。
图3:生成式AI中的预训练与微调范式流程图

3.1.3 应用案例:克服金融机器学习的数据稀缺性
在数据稀缺的领域,这一优势尤为突出。金融机器学习长期面临信噪比(Signal-to-Noise Ratio)低、历史数据有限以及市场非平稳性(Non-stationarity)等挑战,导致数据稀缺问题长期存在(perennial problem of data scarcity)。预训练范式提供了一种潜在的解决方案。
例如,如果我们正在创建用于预测AAPL(苹果公司股票)回报的特征(For example, if we are creating features to predict AAPL returns),我们通常只有有限的AAPL历史数据。但是,我们可以利用更广泛的市场数据。我们可以首先在MSFT(微软)、GOOG(谷歌)等的特征上预训练 Transformer(we can first pretrain the Transformer on the features of MSFT, GOOG, etc.)。尽管这些公司属于不同的子行业,但它们的股价波动可能受到相似的宏观经济因素、行业趋势和市场情绪的影响。预训练过程使模型能够学习到这些通用的市场动态特征。然后微调参数以预测AAPL的回报(and then fine-tune the parameters to predict AAPL’s returns)(参见我们书中关于微调的第10.5节)((see Section 10.5 of our book on fine-tuning))。通过这种方式,模型可以利用更广泛的相关数据来克服单一目标数据稀缺的限制。这可能使我们能够克服金融机器学习中长期存在的数据稀缺问题(This may allow us to overcome the perennial problem of data scarcity in financial machine learning)。
3.1.4 交叉注意力(Cross-Attention):融合异构特征
除了使用 Transformer 进行特征选择的这些令人愉快的优势之外(Besides these delightful advantages of using Transformer for feature selection),Transformer架构还提供了处理异构数据源的灵活性。交叉注意力(Cross-Attention) Transformer 还允许我们(cross-attention Transformer also allows us to)将不同类型或来源的特征融合在一起。交叉注意力机制允许模型在一个序列的上下文中处理另一个序列,从而实现信息的定向融合。
在许多实际应用中,我们需要同时考虑不同模态或不同频率的数据。在量化金融中,我们通常区分时间序列特征和横截面特征。(关于时间序列和横截面特征的区别,请参见我们的博客文章。)((See our blog post on the difference between time series and cross-sectional features.))。时间序列特征(例如VIX波动率指数、利率、HML(High Minus Low)因子等)((e.g. VIX, interest rates, HML factor…))通常描述了宏观经济环境或市场整体状况,具有时序连续性。而横截面特征(即特定股票的特征,例如P/E市盈率、B/M账面市值比、股息率等)((i.e. stock-specific features such as P/E, B/M, dividend yields…))则描述了单个资产在特定时间点的基本面或市场表现。
交叉注意力机制允许我们将时间序列特征和横截面特征混合在一起(mix time series features and cross-sectional features),或者混合来自不同工具(例如NVDA英伟达、GOOG谷歌等)的横截面特征(or mix cross-sectional features from different instruments (e.g. NVDA, GOOG…)),捕捉它们之间的交互效应。
在交叉注意力中,查询(Query)来自一个数据源(序列A),而键(Key)和值(Value)来自另一个数据源(序列B)。模型学习的是如何利用序列B的信息来增强序列A的表示。
具体到金融应用场景,我们可以构建一个交叉注意力Transformer来融合宏观背景和微观基本面。如果在交叉注意力 Transformer 中使用横截面特征作为“查询”(If cross-sectional features are used as the “query”),并使用时间序列特征作为“键/值”(and time series features are used as the “key/value” in a cross-attention Transformer)。在这种设置下,模型试图回答的问题是:在当前的宏观经济背景下(时间序列特征作为上下文),我们应该如何关注和解释各个股票的基本面信息(横截面特征)?
在这种设置下,注意力分数的解释变得非常具有洞察力。那么某一列的注意力分数之和(假设列对应于时间序列特征)代表了某个时间序列特征在所有横截面特征上(then the sum of the attention scores of a column represents the importance of a time series feature across all cross-sectional features),对于(例如)预测该股票回报的重要性(in, say, predicting that stock’s returns)。例如,如果利率特征对应的列具有很高的注意力分数总和,这意味着在当前的输入样本中,利率是调节基本面因子效应的关键宏观变量。
通过交叉注意力计算得到的上下文向量Z也具有独特的结构和意义。上下文向量Z的行数与横截面特征的数量相同(The rows of the context vector Z are the same in number as the cross-sectional features)(即保持了个体股票的维度),但它们受到该时间快照的时间序列特征的调节(but they are conditioned by the time series features at that time snapshot)。这意味着,每个股票的特征表示不再仅仅取决于其自身的基本面,而是被置于当前的宏观经济环境中进行了重新评估和加权。这是一种将宏观经济背景应用于特定股票基本面的优雅方式(This is an elegant way to apply macroeconomic context to stock-specific fundamentals)。它提供了一个动态的、数据驱动的机制来融合自上而下(宏观分析)和自下而上(基本面分析)的视角,这是传统因子模型难以有效实现的。
下图(图5)展示了如何使用交叉注意力Transformer融合横截面特征(作为查询Query)和时间序列特征(作为键Key/值Value)。该机制允许模型根据宏观经济背景(时间序列特征)动态调节对特定股票基本面(横截面特征)的关注度。
图5:使用交叉注意力融合横截面特征与时间序列特征的架构图

3.2 实证案例:预测SPX回报
为了说明Transformer在特征选择和转换中的应用效果,并揭示其潜在的挑战,让我们看一个预测SPX(标准普尔500指数)回报的例子(Let’s look at an example of predicting SPX returns)。我们首先建立一个基准。假设我们只是购买并持有SPX(Suppose we just buy and hold SPX)——需要注意的是,这是不可能的,因为它是一个指数而不是ETF(impossible since it is an index and not an ETF),但这仅为说明目的(but this is just for illustrative purposes)。(本着同样的精神,我们在所有例子中都将忽略交易成本。)((In the same spirit, we will ignore transaction costs in all our examples.))。这个简单的被动策略提供了衡量主动管理策略性能的基准。
我们将数据集划分为两个时期进行回测。SPX在2005-2017年间的夏普比率(Sharpe Ratio,衡量风险调整后收益的指标)为0.39(SPX has a Sharpe ratio of 0.39 between 2005-2017),在2017-2025年间为0.8(and 0.8 between 2017-2025)。我们将指定第一个时期为训练集(We will designate the first period as the training set),第二个时期为测试集(and the second period as the test set),用于以下ML(机器学习)任务(for the following ML tasks)。
3.2.1 实验一:简单多层感知机(MLP)
我们首先使用传统的机器学习方法作为对比。使用TA-LIB库创建的14个技术特征(Using 14 technical features created using the TA-LIB library)(例如移动平均线、RSI等),我们训练一个简单的MLP神经网络(具有1个隐藏层,每层2个隐藏节点)(we train a simple MLP neural network (with 1 hidden layer with 2 hidden nodes each))来预测其下一天的回报(to predict its next day returns)。交易策略是:如果预测回报为正则做多,否则持有现金(going long if the predicted return is positive and holding cash otherwise)。
实验结果显示,在(训练,测试)集上的夏普比率为(0.4, 1.1)(The Sharpe ratios on the (training, test) sets are (0.4, 1.1))。与“买入并持有”策略(训练集0.39,测试集0.8)相比,MLP的表现优于“买入并持有”策略(The MLP outperforms the buy-and-hold strategy)。这表明,即使是简单的非线性模型,结合传统的技术分析特征,也能捕捉到市场中的一些可预测性。
3.2.2 实验二:自注意力Transformer与MLP
接下来,我们引入Transformer来处理特征。如果我们创建一个具有64维“嵌入”(embedding)和适当归一化的自注意力 Transformer(If we create a self-attention Transformer with a 64-dimensional “embedding” and proper normalization)(如Layer Normalization)。为了增强模型的时序感知能力,同时添加滞后期为1、2、3和4天的滞后特征(while adding lagged features with lags 1, 2, 3, and 4 days)。并将Transformer输出的上下文向量输入到同一个MLP中(and feed the context vector into the same MLP)。在这个设置中,Transformer充当了一个动态的特征处理器和交互学习器。
实验结果显示,那么夏普比率变为(0.7, 0.6)(the Sharpe ratios become (0.7, 0.6))。从训练集的表现来看(0.7),Transformer显著提高了模型的拟合能力(相比于MLP的0.4)。然而,在测试集上(0.6),其表现不如使用原始、未转换特征的MLP(1.1)。它仍然优于“买入并持有”(It still outperforms buy-and-hold)(注:此处需谨慎解读,若测试集基准为0.8,则0.6的表现实际上劣于买入并持有。但我们严格遵循原文表述),但表现不如使用原始、未转换特征的MLP(but underperforms the MLP using the raw, untransformed features)。
这个结果给我们一个重要的教训。这给我们一个教训——Transformer 听起来很棒(This teaches us a lesson – Transformer sounds great),但其参数量通常远大于简单MLP。没有足够的数据,过拟合是一个真正的危险(but without sufficient data, overfitting is a real danger)。在这个例子中,训练集性能的大幅提升和测试集性能的下降是过拟合的典型信号。2005-2017年的日度数据可能不足以支撑一个复杂Transformer模型的有效训练。
此外,模型的性能高度依赖于架构设计和超参数设置。Transformer 还有许多我们可以优化的超参数(Transformer also has many hyperparameters we can optimize),例如嵌入维度(such as the embedding dimension)、归一化方法(normalization method)、注意力头的数量(number of attention heads)(多头注意力允许模型在不同的表示子空间中关注不同的信息)、添加位置编码(adding positional encoding)(对于时序数据尤为重要)等(etc.)。对这些超参数的仔细调整对于发挥Transformer的最佳性能至关重要。您可以在我之前引用的博客文章中阅读所有这些变体(You can read about all these variations in my blog posts referenced earlier)。
3.2.3 实验三:交叉注意力Transformer
最后,我们考察交叉注意力机制在融合异构特征方面的效果。如果我们仅添加VIX(波动率指数,一个重要的时间序列特征,反映市场恐慌程度)作为时间序列特征用作键/值输入(If we add just VIX as the time series feature to serve as the key/value input),而原始的技术特征作为查询输入。理论上,交叉注意力应该能够利用VIX提供的信息来调节技术特征的权重,例如在高波动环境下改变某些技术指标的有效性。
实验结果显示,交叉注意力 Transformer 将给出的夏普比率为(0.3, 0.6)(the cross-attention Transformer will give Sharpe ratios of (0.3, 0.6))。没有改善(No improvement)。训练集和测试集的表现都相对较差。
这个结果强调了有效利用复杂模型需要深思熟虑的特征工程和充足的数据支持。当然,这是一个玩具示例(Of course, this is a toy example)。仅使用一个时间序列特征(VIX)可能不足以提供丰富的宏观经济背景。在实践中(In practice),我们应该使用QTS和Predictnow.ai共同创建的数百个时间序列特征(包括宏观经济和基于市场的特征)作为键/值输入(we should use the hundreds of time series features (both macroeconomic and market-based) created jointly by QTS and Predictnow.ai as the key/value inputs)。只有当键/值输入足够丰富和多样化时,交叉注意力机制才能有效地学习如何利用这些信息来增强查询输入的表示。
4. 变分自动编码器(VAE):概率化特征选择与潜在表示学习
在深入探讨了Transformer架构如何通过自注意力和交叉注意力机制实现动态的、样本特定的特征选择与融合之后,我们将转向生成式AI领域中另一类强大的特征学习范式——基于概率图模型和变分推断的方法。这类方法的核心在于学习数据分布的潜在结构(Latent Structure),其代表性架构如下所示:
X -> 概率编码器 (Probabilistic Encoder) -> $\mu$X -> 概率编码器 (Probabilistic Encoder) -> $\sigma$$\mu$, $\sigma$, $\epsilon$ -> ZZ -> 概率解码器 (Probabilistic Decoder) -> $X^{\prime}$
这个流程图直观地展示了变分自动编码器(Variational Autoencoder, VAE)的核心机制,揭示了其与传统确定性自动编码器的根本区别。这是一个概率性的(Probabilistic)过程。具体来说,输入特征X首先通过一个“概率编码器”(通常是一个深度神经网络)。该编码器并不将X确定性地映射到潜在空间中的一个点Z,而是映射到一个概率分布的参数上。在标准VAE中,通常假设这个分布是高斯分布,因此编码器输出该分布的均值($\mu$)和标准差($\sigma$)。
随后,为了生成潜在变量Z,我们需要从这个分布中进行采样。为了保证整个网络可以通过反向传播进行端到端的训练,引入了一个关键技术——重参数化技巧(Reparameterization Trick)。我们引入一个外部噪声源 $\epsilon$(通常从标准高斯分布中采样),然后通过确定性变换 $Z = \mu + \sigma \odot \epsilon$ 来获得Z。这一步骤对应于流程图中的 $\mu$, $\sigma$, $\epsilon$ -> Z。它巧妙地将随机性从变量Z本身转移到了外部输入 $\epsilon$,从而使得梯度可以流经编码器网络。
最后,采样得到的潜在变量Z被输入到“概率解码器”(另一个深度神经网络)中,解码器尝试重建原始输入,生成 $X^{\prime}$。解码器定义了从潜在表示生成观测数据的条件概率分布 $P(X|Z)$。
变分自动编码器(VAE)是另一种特征选择方法(Variational Autoencoder (VAE) is another feature selection method)。它通过学习一个能够捕捉数据关键变异因素(Factors of Variation)的低维潜在表示,实现了非线性的特征压缩和选择。与Transformer侧重于特征间的交互和上下文依赖不同,VAE提供了一个从概率生成视角理解数据流形(Manifold)的框架。
4.1 VAE作为通用潜在变量模型
从统计建模的发展脉络来看,它也可以被认为是熟悉的PCA(主成分分析)、高斯混合模型(GMM)或隐马尔可夫模型(HMM)的更通用版本(It can also be considered a more generalized version of the familiar PCA, Gaussian Mixture Model (GMM), or Hidden Markov Model (HMM))。PCA是一种线性降维技术,其概率版本(Probabilistic PCA)可以被视为一种具有线性高斯解码器的潜在变量模型。GMM假设数据由有限个高斯分布混合而成,其潜在变量是离散的类别标签。HMM则专注于时序数据,假设观测序列由一个隐藏的马尔可夫链生成。VAE通过利用深度神经网络的强大函数逼近能力,将这些模型的思想推广到高度非线性和复杂的场景中,能够学习到PCA无法捕捉的非线性流形结构,以及比GMM更丰富的连续潜在空间。
所有这些都是潜在变量模型(All these are latent variable models)。潜在变量模型的核心思想是假设高维的可观测数据实际上是由低维的、不可观测的潜在因素驱动的。它们将可观察的特征X转换为一个更小的不可观察的“潜在”变量z集合(which transform the observable features X into a smaller set of unobservable “latent” variables z)。这些潜在变量被设计为具有更易于处理的统计特性,并且这些潜在变量可以以更简单的概率分布(例如高斯分布)生成可观察特征(that can generate the observable features with a simpler probability distribution (e.g. Gaussian))。通过学习从简单分布到复杂数据分布的映射,我们能够理解数据的内在结构并进行有效的特征提取。
下图(图7)展示了变分自动编码器(VAE)的详细架构。输入特征X通过概率编码器映射到潜在分布的参数(μ和σ)。然后利用重参数化技巧(引入外部噪声ε)从中采样得到潜在变量Z。最后,概率解码器将Z重建为X'。
图7:变分自动编码器(VAE)详细架构图

4.2 VAE的数学框架:边际似然与推断
换句话说,潜在变量模型定义了一个生成过程(Generative Process)。如果z是潜在变量(In other words, if z is the latent variable),它可以适应不同的数据类型和假设。例如,它可以是一个简单的二元分类变量 $z=(0,1)$(服从伯努利分布)(it can be a simple binary categorical variable $z=(0,1)$ (following a Bernoulli distribution)),对应于混合模型中的成分选择;也可以是一个连续变量(服从高斯分布)(or a continuous variable (following a Gaussian distribution)),如在VAE中通常采用的假设。那么,观测数据X的边际似然(Marginal Likelihood)可以通过对潜在变量z进行积分(或求和)得到(then):
$p(X)=\int p(X,z)dz=\int p(X|z)p(z)dz$
这个公式是所有潜在变量模型的核心。它表明,观测数据的概率分布 $p(X)$ 是通过将联合分布 $p(X,z)$ 中的潜在变量z边缘化(marginalizing out)得到的。联合分布又可以分解为似然函数 $p(X|z)$(解码器)和先验分布 $p(z)$(潜在空间的先验知识)的乘积。在训练生成模型时,我们的目标通常是最大化这个边际似然 $p(X)$。
这也让人联想到 Transformer 输出的上下文向量Z(This is also reminiscent of the context vector Z output by the Transformer)。虽然计算机制和理论基础不同(Transformer依赖于确定性的注意力加权,而VAE依赖于概率推断和采样),但它们在功能上具有相似性。在这两种情况下,z(在VAE中)和Z(在Transformer中)都代表了输入数据的高级抽象或压缩表示。z 都告诉您 AI 系统最终输出的概率分布(In both cases, z tells you about the probability distribution of the AI system’s final output)。它们充当了信息的瓶颈,包含了用于生成或预测任务所需的核心信息。
在VAE的情况下,我们有一个无监督学习任务(In the case of VAE, we have an unsupervised learning task),其目标是学习数据本身的分布并能够重构数据。因此输出与输入X相同(so the output is the same as the input X)。模型试图最大化重构的准确性,同时保持潜在空间的正则性。
4.2.1 解码器(Decoder):生成过程
VAE的解码器部分负责实现生成过程。给定z,我们通过 $P(X|z)$ 获得X(Given z, we obtain X via $P(X|z)$),这被称为VAE的解码器部分(which is called the decoder part of the VAE)。解码器通常是一个深度神经网络,它将低维的z映射回高维的数据空间,并定义了似然函数 $P(X|z)$ 的参数。
4.2.2 编码器(Encoder):推断过程与变分推断
但是我们如何得到给定X的z的分布呢?(But how do we get the distribution of z given X?)这是推断过程(Inference Process),即根据观测数据推断潜在变量的后验分布 $p(z|X)$。根据贝叶斯定理,$p(z|X) = p(X|z)p(z) / p(X)$。然而,计算分母 $p(X)$(即前面提到的边际似然积分)通常是计算上棘手的(Intractable),特别是当 $p(X|z)$ 是由复杂的非线性神经网络定义时。
寻找 $p(z|X)$ 是编码器的工作(Finding $p(z|X)$ is the job of the encoder)。在VAE框架中,我们使用变分推断(Variational Inference)来解决这个棘手性问题。我们引入一个可学习的近似后验分布 $q(z|X)$(即编码器网络)来逼近真实的后验分布 $p(z|X)$。这种使用神经网络来参数化变分分布参数的做法称为摊销推断(Amortized Inference)。
在实践中,通常对这些分布的形式做出假设以便于计算。$P(X|z)$ 和 $p(z|X)$(更准确地说是其近似 $q(z|X)$)都是高斯分布($P(X|z)$ and $p(z|X)$ are both Gaussian distributions)。这种选择既有计算上的便利性,也具有一定的理论合理性。关键在于,但它们的参数由两个独立的DNN给出(but their parameters are given by two separate DNNs)。编码器DNN输出 $q(z|X)$ 的参数(均值和方差),解码器DNN输出 $P(X|z)$ 的参数。
4.3 训练VAE:证据下界(ELBO)
结合这两个DNN构成了VAE(Combining the two DNNs constitutes the VAE)。训练的目标是同时优化编码器和解码器的参数。并且两组参数通过最小化X的对数似然来同时训练(and the two sets of parameters are trained simultaneously by minimizing the log-likelihood of X)(注:通常是最大化对数似然,或最小化负对数似然)。
然而,由于直接优化边际对数似然 $log p(X)$ 是困难的,这说起来容易做起来难(This is easier said than done)。VAE通过优化一个替代目标函数——证据下界(Evidence Lower Bound, ELBO)来实现训练。ELBO是边际对数似然的一个下界,最大化ELBO相当于同时最大化重构精度(Reconstruction Accuracy)并最小化近似后验 $q(z|X)$ 与先验 $p(z)$ 之间的KL散度(Kullback-Leibler divergence)。KL散度项起到了正则化器的作用。训练过程还涉及到使用重参数化技巧来处理随机采样过程的梯度计算。但详情可以在我们书的第6章中找到(but the details can be found in Chapter 6 of our book)。我也将在我于伦敦帝国理工学院的研讨会上更深入地探讨VAE(I will also delve deeper into VAE in my seminar at Imperial College London),并将在未来的博客文章中详细阐述GMM、HMM和VAE之间的关系及其训练方法(and will elaborate on the relationships between GMM, HMM, and VAE and their training methods in a future blog post)。
(如果你想知道,我们还需要指定先验 $p(z)$((If you are wondering, we also need to specify the prior $p(z)$)。在VAE框架中,对潜在变量的先验分布也需要进行设定。为了简化计算并鼓励模型学习一个规整、平滑的潜在空间,通常假设为一个简单的固定高斯分布 $p(z)=\chi(0,1).$(it is usually assumed to be a simple fixed Gaussian distribution $p(z)=\chi(0,1).$),即标准正态分布(零均值、单位方差)。KL散度正则项会惩罚那些偏离这个先验分布太远的潜在编码。)
4.4 VAE的应用:预训练、微调与半监督学习
4.4.1 潜在变量作为特征输入
一旦以这种无监督的方式训练(Once trained in this unsupervised manner),VAE学习到的潜在空间捕捉了数据的重要结构。潜在变量z就可以用作转换后的特征向量(the latent variable z can be used as the transformed feature vector)。这些特征通常比原始特征X维度更低、信息更密集,并且更能揭示数据背后的生成因素。它们可以用于下游的监督学习或优化应用(for downstream supervised learning or optimization applications)。例如,在分类任务中,我们可以使用z作为输入训练一个分类器,而不是使用原始的高维特征X。
这种应用方式非常像来自 Transformer 的上下文向量Z(very much like the context vector Z from the Transformer)。两者都提供了对原始数据的有效压缩和转换。事实上,Transformer 可以被认为是一个编码器(Indeed, Transformer can be thought of as an encoder),它通过注意力机制学习如何将输入序列编码为一个上下文感知的表示。VAE的编码器则通过概率推断学习一个潜在空间的表示。
4.4.2 迁移学习与数据效率
此外,与 Transformer 类似(Furthermore, similar to Transformer),VAE也完美契合预训练和微调的范式,使其能够利用大规模的无标签数据。我们可以在一个大型无标签数据集上预训练编码器(we can pretrain the encoder on a large unlabeled dataset),学习通用的数据表示。例如,可以在整个股票市场的历史数据上预训练一个VAE来学习市场动态的一般模式。然后在一个小型有标签数据集上对其进行微调,以进行监督学习(and fine-tune it on a small labeled dataset for supervised learning)。这使得VAE能够克服特定任务标签数据稀缺的限制。
4.4.3 半监督学习的突破
或者,我们可以应用“半监督”学习(Kingma and Welling 2019)(Alternatively, we can apply “semi-supervised” learning (Kingma and Welling 2019))。半监督学习在标签数据昂贵而无标签数据丰富的场景中极具价值。其中混合使用无标签和有标签的数据来训练VAE(where a mixture of unlabeled and labeled data are used to train the VAE)。在半监督VAE(SS-VAE)中,模型的目标函数同时包含了生成项(利用所有数据学习数据分布)和判别项(利用有标签数据进行预测)。通过共享潜在空间,模型可以利用无标签数据来更好地理解数据的分布结构,从而提高有标签数据上的分类性能。
这种方法的有效性在某些领域已经得到了惊人的验证。当半监督学习应用于图像分类时(When semi-supervised learning was applied to image classification)(例如在MNIST数据集上),每类仅需10个标签就能达到>99%的分类准确率(merely 10 labels per class are required to attain >99% classification accuracy)。太神奇了!(Amazing!)这展示了利用生成模型从未标注数据中提取结构信息来辅助判别任务的强大能力。这对于许多标签训练数据有限的应用具有巨大潜力(This holds tremendous potential for many applications where labeled training data are limited),例如金融市场预测、医学影像分析或工业异常检测。
4.5 实证案例:VAE在SPX回报预测中的应用
继续上面关于SPX次日回报预测的例子(Continuing the example above on SPX next-day return prediction),我们现在评估VAE作为特征提取器的性能。我们可以使用相同的14维特征向量(技术指标作为输入)(we can construct a VAE using the same 14-dimensional feature vector)、一个8维潜在向量(an 8-dimensional latent vector)(实现了从14维到8维的降维),以及编码器和解码器各2个ReLU层(and 2 ReLU layers each for the encoder and decoder)。我们首先在训练集(2005-2017年)上无监督地训练这个VAE,然后使用训练好的编码器提取潜在变量z,并将其用于下游预测任务。
实验结果显示,在(训练,测试)集上的夏普比率为(0.2, 0.4)(The Sharpe ratios on the (training, test) sets are (0.2, 0.4))。这个结果并不理想,这比“买入并持有”基准差很多(which is much worse than the “buy-and-hold” benchmark)(训练集0.39,测试集0.8)。相比于使用原始特征的MLP和Transformer模型,VAE的表现较差。
下图(图6)对比了不同模型在SPX回报预测任务上的性能(夏普比率)。实验结果显示,简单MLP在测试集上表现最佳,而复杂的Transformer和VAE模型在有限数据上出现了过拟合现象(例如自注意力Transformer训练集夏普比率为0.7,但测试集仅为0.6)。
图6:不同模型在SPX回报预测任务上的夏普比率对比

4.5.1 结果分析与教训
这个结果虽然令人失望,但提供了重要的见解。首先,VAE是一个复杂的概率模型,其性能对架构选择和训练过程非常敏感。自然,需要进行大量的超参数和架构优化(Naturally, extensive hyperparameter and architecture optimization are needed)。例如,潜在空间的维度、网络的深度和宽度、以及ELBO中重构项和KL散度项之间的权重(例如在Beta-VAE中)都需要仔细调整。
更重要的是(More importantly),这个实验突显了数据量对于训练复杂生成模型的重要性。我们没有在任何额外的数据上预训练VAE(we did not pretrain the VAE on any additional data)。模型仅能从有限的SPX历史数据中学习表示。因此SPX数据本身不足以产生良好的性能也就不足为奇了(so it is not surprising that the SPX data itself is insufficient to yield good performance)。金融数据通常信噪比低且非平稳,这使得训练深度生成模型更具挑战性。VAE的真正潜力可能需要通过在大规模相关数据集上进行预训练才能释放出来。
5. 结论:生成式AI时代特征工程的范式重塑
Transformer 和变分自动编码器说明了特征转换和选择如何成为 GenAI 的核心(Transformer and Variational Autoencoder illustrate how feature transformation and selection are central to GenAI)。在GenAI范式下,特征工程不再是一个独立的预处理步骤,而是与模型架构和训练过程深度融合。这与传统判别式模型形成了鲜明对比,在传统模型中,特征选择通常是事后才考虑的(rather than an afterthought as in traditional discriminative models),通常采用全局的、静态的方法。
它们还凸显了生成式方法的灵活性(They also highlight the flexibility of the generative approach)。这种灵活性的核心在于迁移学习和持续学习的能力。特别是在大型无标签数据集上预训练模型(especially the ability to pretrain models on large unlabeled datasets),使得模型能够从海量数据中学习通用的知识和表示。并在新数据可用时增量微调它们的能力(and incrementally fine-tune them as new data become available),使得模型能够高效地适应特定的下游任务和不断变化的环境。
它们在金融应用中的潜力现在才刚刚开始被一些最顶尖的量化交易团队所利用(Their potential in financial applications is only now beginning to be tapped by some of the most elite quantitative trading teams)。随着对这些模型理解的深入、计算能力的提升以及更大规模金融数据集的积累,基于GenAI的特征选择和表示学习方法有望在未来重塑量化金融的研究和实践。


留言