理解大规模用户的消费行为,是现代金融机构面临的核心挑战。当数百万用户产生数十亿笔交易时,解读这些数据的能力直接关系到产品推荐、欺诈检测、风险评估和用户体验的成败。
过去,金融业依赖于基于表格数据的传统机器学习方法。在这种模式下,工程师需要手动将原始交易数据转换为结构化的“特征”,例如收入水平、消费类别或交易次数,然后将这些特征输入预测模型。这种方法虽然有效,但有两个致命缺陷:第一,手动构建特征耗时且脆弱,高度依赖领域专家的经验;第二,通用性差,为信贷风控设计的特征很难用于欺诈检测,导致不同团队重复劳动。
为了突破这些限制,Nubank
转向了一种正在变革自然语言处理和计算机视觉领域的技术:基础模型(Foundation Model)。与依赖人工特征不同,基础模型通过自监督学习的方式,直接从海量原始交易数据中自动学习通用的“嵌入表示”(Embeddings)。这些嵌入表示能够以一种紧凑而富有表现力的方式,捕捉用户行为的深层模式。
Nubank
的目标是处理数万亿笔交易,提取出能够赋能信贷建模、个性化推荐、异常检测等多种下游任务的通用用户表示。通过这种方式,他们希望统一建模标准,减少重复的特征工程,并全面提升预测性能。
本文将深入探讨 Nubank
用于构建和部署这些基础模型的技术体系,追踪从数据表示、模型架构到预训练、微调,再到与传统表格系统融合的完整生命周期。
Nubank 的整体系统架构
Nubank
的基础模型系统旨在从海量金融数据中提取通用的用户表示,这些被称为“嵌入”的表示后续将被广泛应用于信贷评分、产品推荐和欺诈检测等业务场景。整个架构以 Transformer
模型为核心,分为几个关键阶段。
1 – 交易数据摄取
系统的起点是收集每位客户的原始交易数据,包括交易金额、时间戳和商户描述等信息。数据量是巨大的,覆盖了超过一亿用户的数万亿笔交易。每个用户都有一条按时间排序的交易序列,这对于模型理解用户消费行为的演变至关重要。
2 – 嵌入接口
原始交易数据需要被转换成 Transformer
模型能理解的格式。Nubank
采用了一种混合编码策略,将每笔交易视为一个结构化的令牌(Token)序列。
每笔交易被分解为几个关键元素:
- 金额符号:用一个分类令牌表示交易是正向(如存款)还是负向(如消费)。
- 金额分箱:将交易金额进行量化处理,划分到预设的“箱子”里,以降低数值的方差。
- 日期令牌:月份、星期几和几号等日期信息也分别转换为独立的令牌。
- 商户描述:使用标准的文本分词器(如
Byte Pair Encoding
)将商户名称切分为多个子词令牌。
这种令牌化序列既保留了原始数据的结构和语义,又保持了输入序列的紧凑性。这一点非常重要,因为 Transformer
中注意力机制的计算成本与输入长度的平方成正比。
3 – Transformer 骨干网络
令牌化的交易序列被送入 Transformer
模型。Nubank
尝试了多种 Transformer
变体以优化性能。这些模型通过自监督学习的方式进行训练,无需任何人工标注的数据。它们主要解决两类任务:
- 掩码语言建模 (MLM):隐藏交易序列中的一部分令牌,让模型预测被隐藏的内容。
- 下一令牌预测 (NTP):让模型学习预测序列中的下一个令牌。
Transformer
的输出是一个固定长度的用户嵌入,通常取自最后一个令牌的隐藏状态。
4 – 自监督训练
模型在海量的、未标记的交易数据上进行训练。由于不需要人工标注,系统可以利用每个用户的全部交易历史。通过不断预测用户交易序列中缺失或未来的部分,模型自主学习到了有价值的金融行为模式,如消费周期、周期性付款和异常交易。一个简化的例子是,模型看到“咖啡、午餐、然后…”,它会尝试猜测下一个是“晚餐”。
训练数据和模型参数的规模至关重要。随着模型规模和上下文窗口的增加,性能显著提升。例如,从一个基础的 MLM 模型切换到一个拥有优化注意力层的大型因果 Transformer
模型,下游任务的性能提升超过了7个百分点。
5 – 下游微调与融合
基础模型预训练完成后,可以针对特定任务进行微调。这通常是在 Transformer
顶部添加一个预测头,并使用带标签的数据进行训练。例如,在信贷违约预测任务中,会使用已知的违约标签来微调模型。
为了与现有系统集成,Nubank
将模型生成的用户嵌入与手动工程化的表格特征进行结合。这种融合通过两种方式实现:
- 后期融合 (Late Fusion):使用
LightGBM
等模型来结合嵌入和表格数据,但两者是分开训练的。 - 联合融合 (Joint Fusion):使用深度神经网络(特别是
DCNv2
架构)将Transformer
和表格数据模型放在一个端到端的系统中共同训练。
6 – 集中式模型库
为了让整个架构在公司内部可用,Nubank
建立了一个集中式的人工智能平台。该平台存储预训练好的基础模型,并提供标准化的微调流程。内部团队可以直接访问这些模型,结合自己的业务特征,部署微调后的版本,而无需从头开始训练。这种集中化管理加速了开发进程,减少了资源冗余。
将交易数据转换为模型可读的序列
为 Transformer
模型准备交易数据时,有两个主要挑战:
- 混合数据类型:单笔交易包含结构化字段(如金额和日期)和文本字段(如商户名称),难以用纯文本或纯结构化的方式统一表示。
- 高基数和冷启动问题:交易的多样性极高,不同的商户、地点或金额都会产生新的组合。如果为每一种独特交易都分配一个独立ID,词表会变得异常庞大,导致模型难以训练,并且无法处理训练期间未见过的新交易(即冷启动问题)。
为了应对这些挑战,Nubank
探索了多种将交易转换为令牌序列的策略。
方案一:基于ID的表示
这种方法为每种唯一的交易分配一个数字ID,类似于推荐系统中的做法。这种方法虽然简单高效,但缺点明显:唯一的交易组合数量太大,ID空间难以管理;同时,模型无法处理未见过的新交易。
方案二:文本就是一切
此方法将每笔交易视为一段自然语言文本,例如“description=NETFLIX amount=32.40 date=2023-05-12”。这种表示通用性很强,能处理任意格式的交易。但它的计算成本极高。将结构化字段转换为长文本序列,会产生大量不必要的令牌,导致 Transformer
的注意力计算成本急剧上升,训练速度变慢。
方案三:混合编码方案(Nubank 的选择)
为了平衡通用性和效率,Nubank
开发了一种混合编码策略。它将每笔交易分解为一组紧凑的离散字段令牌,包括金额符号、金额分箱、日期和经过子词切分的商户描述。
这种混合方法以紧凑的格式保留了关键的结构化信息,同时具备处理新输入的泛化能力,并有效控制了计算成本。当每笔交易被这样令牌化后,一个用户的完整交易历史就可以被拼接成一个长序列,用作 Transformer
的输入。
训练基础模型
Nubank
的工程师使用自监督学习来训练模型,这意味着模型直接从交易序列中学习,无需任何人工标签。这种方法使系统能充分利用数百万用户的海量历史交易数据。
主要使用两种训练目标:
- 下一令牌预测 (NTP):模型根据之前的令牌预测序列中的下一个令牌。这就像语言模型预测句子中的下一个单词一样,教会模型理解交易行为的流动和结构。
- 掩码语言建模 (MLM):随机隐藏序列中的一些令牌,训练模型来猜测被“遮盖”住的令牌。这迫使模型理解上下文,学习令牌之间的深层关系,例如星期几与消费类型、或商户名称与交易金额之间的联系。
融合序列嵌入与表格数据
尽管基于交易序列的基础模型能捕捉复杂的行为模式,但许多金融系统仍然依赖结构化的表格数据,例如来自征信机构或用户个人资料的信息。为了充分利用这两种数据源,必须将它们有效融合。
后期融合(基线方法)
在后期融合中,预训练基础模型产生的“冻结”嵌入与表格特征相结合,然后输入到 LightGBM
或 XGBoost
等传统机器学习模型中。这种方法实现简单,但由于基础模型是独立训练的,其生成的嵌入无法在训练过程中与表格数据进行有意义的交互,限制了整体性能的上限。
联合融合(推荐方法)
为了克服这一限制,Nubank
开发了联合融合架构。该方法在一个端到端的系统中同时训练 Transformer
和处理表格数据的模型。这样,模型可以学习从交易序列中提取能够补充表格数据的信息,两个组件为了同一个预测目标而协同优化。
Nubank
选择 DCNv2
(Deep & Cross Network v2) 架构来处理表格特征。DCNv2
是一种专门为结构化输入设计的深度神经网络,它能有效地捕捉特征之间的交叉互动。
Nubank
利用基础模型的探索,代表了金融机构理解和服务客户方式的一次重大飞跃。通过摆脱手动特征工程,转而拥抱基于原始交易数据的自监督学习,Nubank
构建了一个兼具可扩展性和表达能力的建模系统。
这一成功的关键在于系统如何融入其更广泛的人工智能基础设施。Nubank
并未给每个场景构建孤立的模型,而是开发了一个集中式AI平台。各团队可以根据需求选择两种模型:一种是仅使用交易序列嵌入的模型,另一种是利用联合融合架构将嵌入与结构化表格特征相结合的混合模型。
这种灵活性至关重要。一些团队可以在其现有的强大表格模型中即插即用地加入用户嵌入;另一些团队则可能在新任务中完全依赖基于 Transformer
的序列模型。该架构还兼容未来的新数据源,如应用使用模式或客户支持聊天记录。这不仅仅是一个技术概念验证,而是一个在核心金融预测任务中带来可衡量收益的生产级解决方案。