免费 NoSQL 培训 – 以及 Discord 工程师 Bo Ingram 撰写的书籍(赞助)
获得 Discord、Disney、Zillow、Tripadvisor 和其他游戏规则改变者所使用的策略的实践经验
2025年7月30日
无论您是刚开始使用 NoSQL 还是希望优化您的 NoSQL 性能,此活动都是快速了解更多信息并获得专家解答您的问题的一种方式。
您可以从两个曲目中进行选择:
-
要点: NoSQL 与 SQL 架构、数据建模基础以及使用 ScyllaDB 构建示例高性能应用程序。
-
高级:深入研究应用程序开发实践、高级数据建模、优化数据库拓扑、监控性能等。
这是现场讲师指导的培训,所以请提出您最棘手的问题。您可以与演讲嘉宾互动,并在整个活动期间与其他与会者交流。
奖励:注册者可获得 Discord 高级工程师 Bo Ingram 编写的《ScyllaDB in Action》电子书。
免责声明:本文中的详细信息源自 Nubank 工程团队在线分享的文章。所有技术细节均归功于 Nubank 工程团队。原文和来源的链接位于文章末尾的参考文献部分。我们已尽力分析这些细节并提供意见。如果您发现任何不准确或遗漏之处,请留言,我们将尽力修正。
大规模理解客户行为是现代金融机构面临的核心挑战之一。数百万用户产生数十亿笔交易,因此,解读并处理这些数据的能力对于提供相关产品、检测欺诈行为、评估风险以及提升用户体验至关重要。
历史上,金融行业一直依赖于围绕表格数据构建的传统机器学习技术。在这些系统中,原始交易数据被手动转换为结构化特征(例如收入水平、支出类别或交易次数),作为预测模型的输入。
虽然这种方法很有效,但它有两个主要局限性:
-
手动特征工程耗时且脆弱,通常需要领域专业知识和大量的反复试验。
-
泛化能力有限。为某项任务(例如信用评分)设计的功能可能对其他任务(例如推荐或欺诈检测)无用,从而导致团队之间重复劳动。
为了解决这些限制,Nubank 采用了基于基础模型的方法,这种方法已经改变了自然语言处理和计算机视觉等领域。基础模型不再依赖于人工设计的特征,而是使用自监督学习直接在原始交易数据上进行训练。这使得它们能够自动学习通用的嵌入,以紧凑且富有表现力的形式来表示用户行为。
Nubank 的目标非常宏大:处理数万亿笔交易,并提取通用的用户表征,以支持各种下游任务,例如信用建模、个性化、异常检测等等。通过此举,Nubank 旨在统一其建模工作,减少重复的特征工作,并全面提升预测性能。
在本文中,我们将探讨 Nubank 用于构建和部署这些基础模型的系统设计。我们将追溯从数据表示和模型架构到预训练、微调以及与传统表格系统集成的完整生命周期。
Nubank系统整体架构
Nubank 的基础模型系统旨在处理海量金融数据,并从中提取通用的用户表征。这些表征(也称为嵌入)随后将应用于信用评分、产品推荐和欺诈检测等众多商业应用。
该架构围绕基于变压器的基础模型构建,并分为几个关键阶段,每个阶段都有特定的用途。
1 – 交易提取
该系统首先收集每位客户的原始交易数据,包括交易金额、时间戳和商家描述等信息。数据量巨大,涵盖超过 1 亿用户的数万亿笔交易。
每个用户都有按时间顺序排列的交易序列,这对于建模随时间推移的消费行为至关重要。除了交易之外,还可以包含其他用户交互数据,例如应用事件。
2 – 嵌入接口
在将交易输入到转换器模型之前,需要将其转换为模型能够理解的格式。这通过一种专门的编码策略完成。Nubank 并非将整个交易转换为文本,而是采用一种混合方法,将每笔交易视为结构化的 token 序列。
每笔交易被分解成更小的元素:
-
数量符号(正数或负数)以分类标记表示。
-
金额桶是交易金额的量化版本(以减少数字差异)。
-
还包括月份、星期几和日期标记。
-
商家描述使用标准文本标记器(如字节对编码)进行标记。
参见下图:
这个标记化的序列保留了原始数据的结构和语义,并且保持了输入长度的紧凑,这很重要,因为 Transformer 中的注意力计算与输入长度的平方成比例。
3 – 变压器主干
交易一旦被标记化,就会被传递到转换器模型中。Nubank 使用多种转换器变体进行实验和性能优化。
这些模型采用自监督学习进行训练,这意味着它们不需要标记数据。相反,它们被训练来解决以下任务:
-
掩蔽语言模型 (MLM),其中交易序列的部分内容被隐藏,模型必须对其进行预测。
-
下一个标记预测(NTP),模型学习预测序列中的下一个交易。
后面章节会详细介绍。Transformer 的输出是固定长度的用户嵌入,通常取自最终 token 的隐藏状态。
4. 自监督训练
该模型基于大规模、未标记的交易数据,采用自监督学习目标进行训练。由于无需手动标记,系统可以利用每位用户的完整交易历史记录。通过尝试预测用户交易序列中缺失或未来的部分,模型可以学习到关于金融行为的有用模式,例如消费周期、定期付款和异常情况。举一个简单的例子,模型可能会预测“咖啡,然后午餐,然后……”,并尝试猜测“晚餐”。
训练数据和模型参数的大小起着关键作用。随着模型规模扩大和上下文窗口增大,性能显著提升。通过对数十亿笔交易进行不断猜测和自我修正,模型开始注意到人们消费的模式。
例如,从基本的 MLM 模型切换到具有优化注意层的大型因果转换器,可使下游任务的性能提高 7 个百分点以上。
5 – 下游微调和融合
基础模型预训练完成后,可以针对特定任务进行微调。这需要在 Transformer 上添加一个预测头,并使用带标签的数据进行训练。例如,信用违约预测任务可以使用已知标签(客户是否违约)来微调模型。
为了与现有系统集成,用户嵌入与手动设计的表格特征相结合。这种融合通过两种方式实现:
-
Late Fusion 使用 LightGBM 等模型来结合嵌入和表格数据,但两者是分开训练的。
-
联合融合使用深度神经网络(特别是 DCNv2 架构)以端到端的方式一起训练变压器和表格模型。
后面的部分将对此进行更多介绍。
6 – 集中式模型库
为了使该架构可在整个公司范围内使用,Nubank 构建了一个集中式 AI 平台。
该平台存储预先训练的基础模型,并提供标准化的流程进行微调。内部团队可以访问这些模型,将其与自身功能相结合,并根据特定用例部署经过微调的版本,而无需从头开始重新训练所有内容。
这种集中化加速了开发,减少了冗余,并确保所有团队都能从核心模型的改进中受益。
将交易转换为模型就绪序列
为了在交易数据上训练基础模型,将每笔交易转换为转换器模型可以处理的格式至关重要。
在尝试表示用于变压器模型的交易时,主要面临两个挑战:
-
混合数据类型:单笔交易包含结构化字段(例如金额和日期)和文本字段(例如商户名称)。这使得使用纯文本或纯结构化方法进行一致表示变得更加困难。
-
高基数和冷启动问题:交易可能极其多样化。即使是像商户名称、位置或金额变化这样的简单变化,也会导致新的组合。如果将每笔唯一交易视为一个单独的代币,代币数量将变得非常庞大。这会导致两个问题:
-
嵌入表变得太大而无法有效训练。
-
该模型无法推广到以前从未见过的新交易或罕见交易,这就是所谓的冷启动问题。
-
-
为了应对这些挑战,我们探索了多种策略,将交易转换为转换器可以理解的标记序列。
方法 1:基于 ID 的表示(来自推荐系统)
在该方法中,每个唯一的交易都会被分配一个数字 ID,类似于顺序推荐模型中使用的技术。然后,这些 ID 会使用查找表转换为嵌入。
虽然这种方法在令牌长度方面简单且有效,但它有两个主要缺点:
-
唯一交易组合的总数非常大,使得 ID 空间难以管理。
-
如果在训练过程中未发现交易,模型就无法有效处理。这使得模型难以泛化,并且在冷启动条件下会失败。
方法二:文本就是你所需要的
该方法将每笔交易视为一段自然语言文本。交易字段通过连接属性名称及其值转换为字符串,例如“description=NETFLIX amount=32.40 date=2023-05-12”,然后使用标准 NLP 分词器进行分词。
这种表示可以处理任意交易格式和看不见的数据,这使其具有高度的通用性。
然而,它的计算成本很高。
Transformer 使用自注意力机制处理数据,而注意力机制的计算成本会随着输入长度的平方而增加。将结构化字段转换为长文本序列会导致不必要的 token 膨胀,从而降低训练速度并降低可扩展性。
方法 3:混合编码方案(由 Nubank 选择)
为了平衡通用性和效率,Nubank 开发了一种混合编码策略,可以保留每笔交易的结构,而无需将所有内容转换为全文。
每笔交易都被标记为一组紧凑的离散字段:
-
金额符号标记:一个标记代表交易是正数(如存款)还是负数(如购买)。
-
金额桶代币:将金额的绝对值放入量化桶中,并为每个桶分配相应的代币。这将数值范围缩小到可管理的类别。
-
日期标记:交易的月份、日期和星期几使用单独的标记。
-
描述标记:商家描述使用标准子词标记器(例如字节对编码 (BPE))进行标记,该标记器将文本分解为常用片段。这使得模型能够识别商家名称或交易类型的模式。
通过组合这些元素,一笔交易被转换成一串简短且有意义的代币序列。参见下图:
这种混合方法以紧凑的格式保留了关键的结构化信息,同时允许泛化到新的输入。它还避免了长文本序列,从而保持了注意力计算的高效性。
一旦每笔交易都以这种方式标记化,用户的完整交易历史记录就可以串联成一个序列,并用作转换器的输入。在交易之间插入分隔符以保留边界,并且序列会以固定的上下文长度截断,以保持在计算限制之内。
训练基础模型
一旦交易被转换成标记序列,下一步就是训练一个可以从这些数据中学习模式的转换模型。
如上所述,Nubank 工程团队使用自监督学习来实现这一目标,这意味着模型直接从交易序列中学习,而无需任何手动标记。这种方法使系统能够充分利用数百万用户的海量历史交易数据。
主要有两个目的:
-
下一个标记预测 (NTP):该模型经过训练,能够根据交易序列中之前的标记来预测下一个标记。这教会模型理解交易行为随时间推移的流程和结构,类似于语言模型预测句子中下一个单词的方式。
-
掩码语言模型 (MLM):在此方法中,序列中的一些 token 被随机隐藏或“掩码”,并训练模型猜测缺失的 token。这迫使模型理解周围的环境,并学习 token 之间有意义的关系,例如星期几与消费类型之间的联系,或商家名称与交易金额之间的联系。
参见下图:
将顺序嵌入与表格数据混合
虽然在交易序列上训练的基础模型可以捕捉复杂的行为模式,但许多金融系统仍然依赖结构化表格数据来获取关键特征。
例如,来自信用机构、用户资料或申请表的信息通常以表格形式呈现。为了充分利用这两个来源(来自 Transformer 的顺序嵌入和现有的表格特征),重要的是将它们以最大化预测性能的方式组合起来。
这种结合不同数据模式的过程称为融合。
Nubank 探索了两种主要的融合策略:后期融合(更容易实现但效果有限)和联合融合(功能更强大且在统一的系统中一起训练所有组件)。
参见下图:
晚期融合(基线方法)
在后期融合设置中,表格特征会与预训练基础模型生成的冻结嵌入相结合。这就像从预训练模型(嵌入)中提取“冻结感”,并将其与年龄、信用评分、个人资料详情等事实清单相结合。
这些组合的输入随后被传入传统的机器学习模型,例如 LightGBM 或 XGBoost。虽然这种方法简单且利用了成熟的工具,但它有一个重要的局限性。
由于基础模型被单独冻结和训练,嵌入无法适应特定的下游任务,也无法在训练过程中与表格数据进行有意义的交互。因此,两个输入源之间缺乏协同作用,整体模型无法充分优化性能。
关节融合(建议方法)
为了克服这一限制,Nubank 开发了一种联合融合架构。
这种方法在单个端到端系统中同时训练 Transformer 和表格模型。通过这种方式,模型可以学习从交易序列中提取补充结构化表格数据的信息,并且两个组件都针对同一预测任务进行了优化。
为了实现这一目标,Nubank 选择了 DCNv2(深度交叉网络 v2)作为处理表格特征的架构。DCNv2 是一个专门为处理结构化输入而设计的深度神经网络。它结合了深层和交叉层,可以有效地捕捉特征之间的交互。
参见下图:
结论
Nubank 率先采用基础模型,标志着金融机构在理解和服务客户方面迈出了重要的一步。通过摒弃人工设计的特征,转而采用基于原始交易数据的自监督学习,Nubank 构建了一个既可扩展又富有表现力的建模系统。
这一成功的关键在于该系统如何融入 Nubank 更广泛的 AI 基础设施。Nubank 并未为每个用例构建孤立的模型,而是开发了一个集中式 AI 平台,团队可以访问预先训练好的基础模型。这些模型基于海量用户交易数据进行训练,并存储在共享模型库中。
公司各团队可以根据自身需求选择两种类型的模型:
-
仅嵌入模型,使用从交易序列生成的用户表示。
-
混合模型,使用联合融合架构将这些嵌入与结构化表格特征相结合。
这种灵活性至关重要。
有些团队可能已经拥有强大的表格模型,只需进行少量改动即可插入用户嵌入。其他团队可能更倾向于完全依赖基于 Transformer 的序列模型,尤其是在历史表格特征尚未定义的新任务中。
该架构还向前兼容新的数据源。虽然当前的模型主要针对交易进行训练,但该设计允许纳入其他用户交互数据,例如应用程序使用模式、客户支持聊天或浏览行为。
简而言之,Nubank 的系统不仅仅是一个技术概念验证,而是一个可立即投入生产的解决方案,能够在核心金融预测任务中带来可衡量的收益。
参考:
发货延迟?DevStats 告诉你原因。(赞助)
还在假装你的送货问题是个谜吗?其实不然。你只是没找到正确的地方。
DevStats 让工程领导者清楚地了解交付失败的地方,这样您就可以修复流程而不是指责别人。
✅ 像成年人一样追踪 DORA 和流量指标
✅ 发现工作停滞、倦怠风险和老化问题
✅ 缩短周期时间,无需偷工减料
✅ 发货更快,意外更少。
更多的人工智能工具并不能解决你的交付问题。更高的清晰度才能。
赞助我们
将您的产品展示给超过 1,000,000 名技术专业人士。
我们的时事通讯将您的产品和服务直接呈现给重要的受众——数十万工程领导和高级工程师——他们对重大技术决策和大宗采购有影响力。
房间很快订满 – 立即预订
广告位通常提前4周左右售罄。为了确保您的广告能够触达这些极具影响力的受众,请立即发送电子邮件至[email protected] 预订您的广告位。
原文: https://blog.bytebytego.com/p/how-nubank-uses-ai-models-to-analyze