CB-LLM 可信大模型,让大模型可解释
- 提出背景
- 解法拆解
- 目的
- 问题
- 框架图
- 第1步:概念生成
- 第2步:自动概念评分(ACS)
- 第3步:训练概念瓶颈层(CBL)
- 第4步:学习预测器
- 例子:医疗问诊分类任务
- 步骤1:概念生成
- 步骤2:自动概念评分(ACS)
- 步骤3:训练概念瓶颈层
- 步骤4:学习预测器
- 解法 = 自动概念纠正(ACC) + 可解释的模型结构设计
- 子解法1:自动概念纠正(ACC)
- 子解法2:可解释的模型结构设计
- 解法逻辑链
- 对比传统大模型
- 步骤1:概念生成
- 步骤2:自动概念评分(ACS)
- 步骤3:自动概念纠正(ACC)
- 步骤4:最终预测与解释生成
论文:https://arxiv.org/pdf/2407.04307
代码:https://github.com/Trustworthy-ML-Lab/Concept-Bottleneck-LLM
提出背景
我们介绍了概念瓶颈大语言模型(CB-LLM),这是一种开创性的方式,用于创建内在可解释的大语言模型(LLMs)。
与依赖于事后解释方法且对神经元功能洞察有限的传统黑箱LLMs不同,CB-LLM以其内置的可解释性、可扩展性以及提供清晰、准确解释的能力设立了新标准。
这一创新不仅推进了语言模型的透明度,还增强了它们的有效性。
我们独特的自动概念修正(ACC)策略成功地缩小了与传统黑箱LLMs的性能差距,使CB-LLM成为结合传统LLMs高准确性和清晰可解释性优点的模型,而这些优点在现有LLMs中显著缺失。
解法拆解
在本案例中,我们将提供一个详细的逻辑拆解,包括目的、问题、解法,并进一步详细解释解法的具体子解法及其逻辑结构。
目的
提高CB-LLM(概念瓶颈大型语言模型)的可解释性,并确保它在提供人类可理解解释的同时,能够达到高准确性并维持效率。
问题
- 概念评分的准确性依赖于句子嵌入模型的性能,存在概念分数可能与人类推理不一致的问题,从而影响模型学习。
- 传统的黑箱模型虽然准确性高,但缺乏可解释性,难以进行人为干预和调整。
框架图
这张图展示了我们的CB-LLM(概念瓶颈大型语言模型)的概览,旨在提高模型的可解释性。
图中分为四个主要步骤,简要说明如下:
第1步:概念生成
- 过程:使用ChatGPT查询生成一组概念。例如,对于某个业务评价模型,概念可能包括“价格过高”,“食物不好吃”,“服务不专业”等。
- 目的:这些概念用来捕捉和描述分类任务中的关键特征。
第2步:自动概念评分(ACS)
- 过程:利用句子嵌入模型来评估文本样本与每个概念之间的相似度。
- 目的:通过最大化概念和文本样本之间的相似度,为每个概念生成一个得分。
这张图展示了自动概念评分(ACS)的过程,它是通过句子嵌入模型实现的。
这个过程是之前解释的概念瓶颈大型语言模型(CB-LLM)的一部分。
以下是图中各个部分的详细说明:
文本 x:
- 内容:显示了一个示例文本,“Worst company ever!!! No customer service. If you call on Sunday you’re out of luck and they don’t care!!”(最糟糕的公司!!!没有客户服务。如果你在周日打电话,你将无计可施,他们也不在乎!!)
- 目的:这是要进行概念评分的输入文本。
概念列表:
- 概念范例:包括诸如“Overpriced”(价格过高)、“Unappetizing food”(食物不美味)、“Unprofessional service”(服务不专业)、到“Reliable cleaning”(可靠的清洁服务)等。
- 目的:这些是已定义好的概念,用于与输入文本进行比较,以评估文本与这些概念的相关性。
句子嵌入模型:
- 过程:文本和各个概念被送入句子嵌入模型生成嵌入向量。
- E(x)、E(c1)…E(ck):分别表示文本x和各个概念c1到ck的嵌入向量。
相似度计算:
- 计算:通过计算嵌入向量的点积来衡量文本x与每个概念ci的相似性,公式为E(ci) · E(x)。
- 结果:每个概念都会根据其与文本x的相似度得到一个分数。例如,对于“Unprofessional service”(服务不专业),得分是0.8,表示输入文本与这个概念非常相关。
概念分数 ( S_c(x) ):
- 展示:列出了每个概念与文本x相似度的数值分数。
- 例子:例如,“Unprofessional service” 的分数是 0.8,表明输入文本与这个概念高度相关。
这个图解清晰地展示了如何通过句子嵌入模型评估文本与一组预定义概念之间的相似度,这是构建可解释性更强的语言模型的关键步骤。
第3步:训练概念瓶颈层(CBL)
- 过程:在预训练的语言模型基础上,引入概念瓶颈层(CBL),使用训练样本(如图中的负面评论例子)来调整模型,使其学习如何根据概念得分激活神经元。
- 目的:通过这种方式,模型学习如何将抽象的文本特征映射到人类可解释的概念上。
第4步:学习预测器
- 过程:在概念瓶颈层之后,添加一个线性层来进行最终的分类预测(例如,预测评论是正面还是负面)。
- 目的:确保整个模型不仅能够提供高质量的预测,还能够通过可解释的概念层来解释这些预测。
这个框架旨在将传统的黑箱语言模型转变为具有高度可解释性的模型,通过清晰定义和使用概念,使得模型的决策过程更加透明和可靠。
例子:医疗问诊分类任务
假设我们有一个医疗问诊分类任务,目标是将患者的症状描述分类为“感冒”、“流感”或“过敏”。
步骤1:概念生成
我们首先利用ChatGPT生成与“感冒”、“流感”和“过敏”类别相关的概念集。例如,提示ChatGPT生成以下概念:
-
对于“感冒”类别,可能的概念包括:
- 轻微发热
- 喉咙痛
- 流鼻涕
- 打喷嚏
-
对于“流感”类别,可能的概念包括:
- 高烧
- 全身疼痛
- 严重咳嗽
- 乏力
-
对于“过敏”类别,可能的概念包括:
- 皮疹
- 流鼻涕
- 眼睛痒
- 打喷嚏
步骤2:自动概念评分(ACS)
接下来,我们利用句子嵌入模型(如all-mpnet-base-v2)来计算每个文本样本与概念之间的相似性。
例如,给定以下文本样本:
- 文本样本1:“我有点发烧,喉咙痛,还一直流鼻涕。”
- 文本样本2:“我全身疼痛,高烧不退,咳嗽得很厉害。”
对于每个文本样本,我们计算其与所有概念的相似性分数:
-
文本样本1的概念分数Sc(x1)可能是:
- 轻微发热:0.80
- 喉咙痛:0.90
- 流鼻涕:0.85
- 打喷嚏:0.60
- 高烧:0.30
- 全身疼痛:0.20
- 严重咳嗽:0.40
- 乏力:0.50
- 皮疹:0.10
- 眼睛痒:0.20
-
文本样本2的概念分数Sc(x2)可能是:
- 轻微发热:0.20
- 喉咙痛:0.30
- 流鼻涕:0.10
- 打喷嚏:0.15
- 高烧:0.95
- 全身疼痛:0.90
- 严重咳嗽:0.85
- 乏力:0.80
- 皮疹:0.05
- 眼睛痒:0.10
步骤3:训练概念瓶颈层
我们将文本样本输入预训练的语言模型(如BERT),并通过CLS池化获得固定大小的嵌入。然后,训练概念瓶颈层(CBL)以最大化神经元激活与概念分数之间的相似性。例如,文本样本1的嵌入fLM(x1)将被投射到k维可解释嵌入空间,fCBL(fLM(x1))将与Sc(x1)进行对比,训练CBL以学习概念分数模式。
步骤4:学习预测器
最后,训练线性预测器来对下游任务进行预测。利用CBL的输出,训练一个线性层以区分文本样本是“感冒”、“流感”还是“过敏”。
通过以上四个步骤,我们成功将黑箱预训练模型转换为可解释的CB-LLM,既能提供高质量的预测,又能提供清晰的解释。这种方法可以帮助医生更好地理解模型的决策过程,从而更准确地诊断患者的病情。
解法 = 自动概念纠正(ACC) + 可解释的模型结构设计
子解法1:自动概念纠正(ACC)
因为需要提高概念评分的准确性并确保概念与预测的一致性。
- 之所以用ACC子解法,是因为概念评分的不准确性特征。
例如,如果系统错误地将“价格过高”标记为正面,ACC可以识别并纠正这种评分,从而减少错误预测的影响。
子解法2:可解释的模型结构设计
因为需要使模型的决策过程对用户透明,允许用户直观理解和干预模型的决策。
- 之所以使用可解释的模型结构设计子解法,是因为传统黑箱模型的不透明性特征。
例如,通过设计一个带有概念瓶颈层(CBL)的模型,可以明确每个神经元与具体概念的对应关系,用户可以直接观察到哪些概念对预测结果有影响,并据此作出调整。
解法逻辑链
首先通过ACC确保概念的准确性,然后通过可解释的模型结构设计进一步增强模型的透明度和用户的干预能力。
ACC提供了基础的概念纠正,而可解释的结构提供了用户界面和交互,两者相辅相成,共同推动模型的准确性和可解释性向前发展。
解法
├── 子解法1:自动概念纠正(ACC)
│ └── 目的:提高概念评分的准确性
│ └── 特征:概念评分的不准确性
│ └── 例子:纠正错误的“价格过高”标记
└── 子解法2:可解释的模型结构设计└── 目的:增强模型的透明度和用户干预能力└── 特征:传统黑箱模型的不透明性└── 例子:通过CBL展示概念与神经元的对应关系
这种结构表明,整个解法是通过增强概念评分的准确性和提供直观的模型结构来解决问题的,两者是顺序相关且互为支撑的关系。
对比传统大模型
一个患者描述了一系列症状:“我最近总是感觉疲劦,早上起来头很痛,偶尔还会感到眼前发黑。”
假设我们使用一个传统大模型来分析这段症状描述。
模型可能依赖于其在大规模数据集上的训练,其中不够注重症状间的细微联系和个体差异。
- 输出结果:模型可能会预测这些症状指向常见的压力相关病状,如压力性头痛。
- 解释难度:由于是黑箱模型,它不提供关于为何作出此预测的直接解释,医生难以评估模型的推断过程是否符合医学逻辑。
步骤1:概念生成
CB-LLM首先利用其自动化工具生成相关的医学概念集,这些可能包括“疲劳”、“头痛”、“视觉模糊”等。
这些概念是从医学数据库和以往的病例学习得到的,每个概念都有明确的医学定义和相关性。
步骤2:自动概念评分(ACS)
模型接着对每个概念在该患者症状描述中的表现进行评分。例如:
- “疲劳”可能得到高分,因为患者直接提到了“总是感觉疲劦”。
- “头痛”也得到高分,患者描述“早上起来头很痛”。
- “视觉模糊”得分中等,因为“眼前发黑”可能暗示视觉问题。
步骤3:自动概念纠正(ACC)
通过ACC,CB-LLM进一步分析这些概念得分,并调整任何可能的误差。
例如,如果“视觉模糊”与其他症状在医学上常与其他原因关联,ACC可能调低这个概念的权重。
步骤4:最终预测与解释生成
结合所有调整后的概念得分,CB-LLM做出最终诊断预测,并生成解释。
例如,模型可能诊断为“低血压可能性高”,因为疲劳、头痛和视觉模糊都是低血压的常见症状。
模型将提供以下解释:
- “根据症状‘疲劦’(得分0.9)、‘头痛’(得分0.8)和‘眼前发黑’(得分0.7),结合医学数据库中的相关数据,综合分析表明这些症状与低血压的关联性较高。”
通过这种方式,CB-LLM不仅提供了一个针对特定患者症状的个性化和精确的医学诊断,而且还提供了一个清晰的、基于数据驱动的解释路径,展示了是哪些具体的医学概念导致了特定的预测结果。
这使得医生和患者能够更好地理解模型的工作原理和做出的诊断建议,从而提高对模型输出的信任度和接受度。