可解释的AI:解释BERT模型

智能真的很好说 2024-06-24 20:54:39
了解如何使用集成梯度等可解释的 AI 技术使深度学习 NLP 模型具有可解释性。

动机和背景

为什么构建可解释的 AI 模型很重要?

人工智能的未来在于使人类和机器能够协同工作以解决复杂的问题。组织正试图通过将 AI/ML 技术与人工审核相结合来提高流程效率和透明度。

近年来,随着人工智能的发展,出现了针对人工智能的法规,例如,制药业的良好机器学习实践 (GMLP) 和金融行业的模型风险管理 (MRM)、其他针对数据隐私的广谱法规、欧盟的 GDPR 和加州的 CCPA。同样,内部合规团队在根据模型预测验证决策时,可能也希望解释模型的行为。例如,承销商希望了解为什么特定的贷款申请被 ML 模型标记为可疑。

概述

什么是可解释性?

在 ML 上下文中,可解释性是指尝试回溯哪些因素对 ML 模型做出了贡献,以便做出某种预测。如下图所示,与深度学习和基于转换器的复杂模型(如深度学习和基于转换器的模型)相比,更简单的模型更容易解释,但通常会产生较低的准确性,这些模型可以理解数据中的非线性关系,并且通常具有很高的准确性。

松散地定义,有两种类型的解释:

全局解释:是否在整体模型级别进行解释,以了解哪些特征对输出的贡献最大?例如,在财务环境中,用例是构建 ML 模型来识别最有可能违约的客户,做出该决策的一些最有影响力的特征是客户的信用评分,总计。信用卡、循环余额等。当地说明:这使您能够放大特定数据点并观察该邻域中模型的行为。例如,对于电影评论用例的情感分类,评论中的某些词对结果的影响可能比其他词更大。“我从来没有看过这么糟糕的东西。”

什么是变压器型号?

转换器模型是一种神经网络,用于跟踪顺序输入(例如句子中的单词)中的关系,以学习上下文和后续含义。Transformer 模型使用一组不断发展的数学方法(称为注意力或自注意力)来查找序列中偶数距离数据元素之间的微小关系。有关详细信息,请参阅 Google 的出版物。

集成梯度

集成梯度 (IG) 是论文 Axiomatic Attribution for Deep Networks 中介绍的一种可解释的 AI 技术。在本文中,尝试为每个输入特征分配一个归因值。这说明了输入对最终预测的贡献程度。

IG 是一种局部方法,是一种流行的可解释性技术,因为它广泛适用于任何可微分模型(例如,文本、图像、结构化数据)、易于实现、相对于替代方法的计算效率以及理论依据。积分梯度表示从给定基线到输入的路径上相对于输入的梯度积分。积分可以使用黎曼和或高斯勒让德正交规则进行近似。从形式上讲,可以描述如下:

沿输入 X 的第 i — 个维度的积分梯度。 Alpha 是缩放系数。方程式是从原始论文中复制的。

这种方法的基石是两个基本公理,即敏感性和实现不变性。更多信息可以在原始论文中找到。

用例

现在让我们看看如何使用 Captum 软件包应用集成梯度方法。我们将使用 HuggingFace 的 transformers 库在 SQUAD 数据集上微调问答 BERT(来自 Transformer 的双向编码器表示)模型,查看笔记本以获取详细演练。

步骤加载分词器和预训练的 BERT 模型,在本例中,bert-base-uncased接下来是计算归因 w.r.t 层。为此,请定义基线/参考,并将基线和输入进行数值化。BertEmbeddings

def construct_whole_bert_embeddings(input_ids, ref_input_ids, \brtoken_type_ids=None, ref_token_type_ids=None, \brposition_ids=None, ref_position_ids=None):

input_embeddings = model.bert.embeddings(input_ids, token_type_ids=token_type_ids, position_ids=position_ids)

ref_input_embeddings = model.bert.embeddings(ref_input_ids, token_type_ids=ref_token_type_ids, position_ids=ref_position_ids)

return input_embeddings, ref_input_embeddings现在,让我们将问答对定义为 BERT 模型的输入

问题=“什么对我们很重要?

text = “对我们来说,包容、赋权和支持各种人类是很重要的。”

为问答对生成相应的基线/参考下一步是进行预测,一种选择是使用 LayerIntegratedGradients 并计算 的归因。 表示从给定基线处的层激活到输入处的层激活沿直线路径相对于层输入/输出的梯度积分。BertEmbeddingLayerIntegratedGradients

start_scores, end_scores = predict(input_ids, \brtoken_type_ids=token_type_ids, \brposition_ids=position_ids, \brattention_mask=attention_mask)

print(‘Question: ‘, question)brprint(‘Predicted Answer: ‘, ‘ ‘.join(all_tokens[torch.argmax(start_scores) : torch.argmax(end_scores)+1]))

lig = LayerIntegratedGradients(squad_pos_forward_func, model.bert.embeddings)

输出:

问题:什么对我们来说很重要?

预测答案:包括、em ##power 并支持各种人类

使用辅助函数可视化输入序列中每个单词标记的属性

# storing couple samples in an array for visualization purposes

start_position_vis =brviz.VisualizationDataRecord(br attributions_start_sum, br torch.max(torch.softmax(start_scores[0], dim=0)),br torch.argmax(start_scores),br torch.argmax(start_scores),br str(ground_truth_start_ind),br attributions_start_sum.sum(),br all_tokens,br delta_start)

print(‘\033[1m’, ‘Visualizations For Start Position’, ‘\033[0m’)brviz.visualize_text([start_position_vis])

print(‘\033[1m’, ‘Visualizations For End Position’, ‘\033[0m’)brviz.visualize_text([end_position_vis])

从上面的结果中我们可以看出,为了预测起始位置,我们的模型更侧重于问题方面。更具体地说,关于令牌“什么”和“重要”。它还略微关注文本端的“to us”标记序列。

与此相反,为了预测最终位置,我们的模型更侧重于文本方面,并且对最后结束位置标记“种类”具有相对较高的归因。

结论

这篇博客描述了如何使用可解释的 AI 技术(如集成梯度)通过突出显示对模型结果的积极和消极影响来使深度学习 NLP 模型具有可解释性。

原文标题:Explainable AI: Interpreting BERT Model

原文链接:https://dzone.com/articles/explainable-ai-interpreting-bert-model

作者:Sai Sharanya Nalla

编译:LCR

0 阅读:7

智能真的很好说

简介:感谢大家的关注