使用BERT分类的可解释性探索

news2025/1/11 8:55:33

最近尝试了使用BERT将告警信息当成一个文本去做分类,从分类的准召率上来看,还是取得了不错的效果(非结构化数据+强标签训练,BERT确实是一把大杀器)。但准召率并不是唯一追求的目标,在安全场景下,不仅仅需要模型告诉我们分类结果,还必须把这么分类的原因给输出出来,否则仍然无法给运营工作进行提效。

因此,对BERT分类的可解释性上,进行了一番研究探索。但是结果并不理想。。。

1、BERT是如何完成分类任务的

首先,我们需要对BERT的分类逻辑,做进一步深挖。

 BERT的整体架构如上:底层将文本转化为token并进行编码,中间层通过Attention机制进行信息的提炼,上层做最终输出。(其实和CNN的结构非常类似,不同的是使用Attention替换掉了卷积层,增加了序列信息的处理能力。)

在最终输出环节,首位的[CLS]实际上包含了整段文本的信息编码。因此,当需要用BERT完成一个分类任务时,只需要给予[CLS]的输出,拼接一个全连接层,就可以完成最终的分类。

那么[CLS]是如何获得整段文本的信息编码的呢?这里会涉及到Attention的实现细节,偏复杂,但我们可以仅从信息传递的角度来理解。Attention从设计思路上,是在计算其他token和当前token的相关性,强相关的token会获得更高的Attention权重。但[CLS]更加特殊,它的Attention计算方式通常是将所有token的向量表示进行加权平均,其中权重由Attention决定。这种方式可以看作是对整个输入序列的向量表示进行汇总,得到一个表示整个序列语义信息的向量。

总结来说就是,经过一层BERT网络之后,token携带的是当前位置和其他位置的关联信息,而[CLS]则是将所有token的信息进行汇总。经过多层的迭代,不断加工信息,得到最终的结果。

2、过程中可提取的信息

在了解了BERT分类的原理之后,我们来尝试挖掘一下其中的可解释性。最直观的,可以通过Attention的权重,来大致掌握BERT的信息传递过程。使用bertviz可以实现这个过程:

结合这张图,也可以再理解一下BERT的工作和信息传递机制。

其中每一个单元是一个Attention单元计算过程,称之为head。连线的粗细代表了token之间信息传递权重(也可以理解成相关性)。其中,首个Token即是[CLS]。上面这个图,可以看到几个明显的特征:

  • 0-3层中,有比较多的左侧所有token至首位[CLS]的连线,代表着[CLS]在通过多个维度和层级提取全量信息。
  • 4-7层中,[CLS]的信息提取开始出现针对性,不再是全局等权重提取。
  • 5-6层中,出现了多个token往某一位特定token汇集的现象,而那个token是当前文本分类的关键因素。
  • 0-4层中,有比较多的平行线,代表着在提取序列信息,即token之间的前后相关性。
  • 7-8层往后,连线已经比较均匀,代表前面的层级已经完成了信息处理,后置的部分不再需要额外计算。

通过分析BERT的信息传递过程,虽然能够大致理解分类的逻辑,但因为经过了多层多头的信息加工,实际逻辑很复杂,无法直接提取出了权重较大的因素。

尝试考虑了一下通过最后的分类层(即[CLS]之后的全连接层)来分析权重,但最后一层的[CLS]也是个多轮加工后的信息,并不直接对应某个token的贡献,看起来也不可行。

3、黑盒可解释性工具

通过对BERT工作原理的剖析,可以看到对一个深度非线形模型去做解释,基本上是不可行的。因此,行业内也尝试了用黑盒的办法去探究算法的分类原理。其中,比较知名的就是Lime和SHAP

Lime

Lime的思想是:深度模型在某个局部仍然是线形的。因此,可以通过在目标样本周围生成相似样本,然后用线形模型去拟合深度模型的效果,从而得到近似的分类逻辑。而线形模型就很好得出特征贡献的权重了。

具体细节网上比较多,就不过多赘述了。Github:GitHub - marcotcr/lime: Lime: Explaining the predictions of any machine learning classifier

做了一次简单尝试,结果并不如预期。

Shap

SHAP的思想是:控制变量法,如果某个特征出现或不出现,可以改变分类结果,那么这个特征一定是比较重要的。因此,可以通过尝试该特征出现或不出现的各种情况,来计算对分类结果的贡献。

官方文档:shap.Explainer — SHAP latest documentation

做了一次简单尝试,结果并不如预期。

ChatGPT

不论是Lime和SHAP,都会涉及到一个复杂的遍历运算过程,得到可解释结果需要花费较长的计算时间。不符合当前场景的原始目标,因此,没有做进一步调教工作。(理论上来说,优化内部特征选取的逻辑,应该能够比较好的贴合人类直觉。)

这个时候,想到了使用ChatGPT来进行解释。尝试构造了如下Prompt

角色:你是一个分析安全告警的专家,下面会给你一段告警,请做出精简的解读。
限制:请严格依照以下指令回答问题:
1.如果问题说明了该告警是误报还是非误报,请按照问题说明的研判结果进行分析。
2.问题中会包含多个关键字段,请挑选去其中最异常的部分,不要超过5个。
3.请对关键词进行必要的解读,不要直接复述出来。

已知如下告警是误报,请分析原因,并对其中的关键特征进行解读。

调教一番之后,效果并不理想。思考了一下原因,个人认为是BERT的分类和ChatGPT的分析并不一致。BERT分类依据主要来源于微调的过程,即仍然是基于历史数据进行的分析;而ChatGPT是基于公开样本进行的学习,得不到内部历史信息的支撑。

给到ChatGPT一些内部数据做微调,也许能够获得更好的效果。

结论

总体来说,对深度模型做解释仍然是一个很困难的工作,更别提需要在线上实时得出相应的分析结论了。

传统可解释性方法的场景偏向于零星的分析场景,主要用于帮助算法人员去理解和优化模型,和线上的使用场景存在一定的偏差。

从目前的试验来看,应当是需要两个模型分别来完成分类和可解释性任务,但必须共享同一份数据和知识。因此,喂给ChatGPT一些数据做微调(但是缺乏标签,需要走无监督的逻辑),大概是可探索的方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/795427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java中线程池、Lambda表达式、file类、递归

线程池: 在多线程的使用过程中,会存在一个问题:如果并发的线程数量很多,并且每个线程都执行一个时间很短的任务就结束,这样频繁的创建线程就会大大降低系统的效率,因为线程的创建和销毁都需要时间。 线程…

maven编译报错

参考链接:mvn打包No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK_51CTO博客_mvn打包命令 在执行 yum install -y java-1.8.0-opensdk命令后,使用maven去编译打包,结果报错, …

体渲染光线行进算法【NeRF必读】

为了积分由于内散射而沿射线产生的入射光,我们将射线穿过的体块分解为小体块元素,并将每个小体块元素对整个体块对象的贡献结合起来,有点像我们在 2D 编辑软件(例如 Photoshop)中将带有遮罩或 Alpha 通道(通…

ClickHouse(三):ClickHouse单节点搭建

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,Kerberos安全认证,随笔-CSDN博客 📌订阅:拥抱…

pytorch学习——线性神经网络——1线性回归

概要:线性神经网络是一种最简单的神经网络模型,它由若干个线性变换和非线性变换组成。线性变换通常表示为矩阵乘法,非线性变换通常是一个逐元素的非线性函数。线性神经网络通常用于解决回归和分类问题。 一.线性回归 线性回归是一种常见的机…

WebGPU(八):三角形渲染

WebGPU(八):三角形渲染 三角形的渲染其实很简单,只是需要设置很详细的render pipeline以及shader。 // Select which render pipeline to use wgpuRenderPassEncoderSetPipeline(renderPass, pipeline); // Draw 1 instance of a 3-vertices shape wgp…

C# 全局响应Ctrl+Alt+鼠标右键

一、简述 某些应用,我们希望全局自定义热键。按键少了会和别的应用程序冲突,按键多了可定用户操作不变。因此我计划左手用CtrlAlt,右手用鼠标右键呼出我自定义的菜单。 我使用键盘和鼠标事件进行简单测试(Ctrl鼠标右键&#xff…

TypeScript -- 函数

文章目录 TypeScript -- 函数JS -- 函数的两种表现形式函数声明函数的表达式es6 箭头函数 TS -- 定义一个函数TS -- 函数声明使用接口(定义)ts 定义参数可选参数写法 -- ?的使用TS函数 -- 设置剩余参数函数重载 TypeScript – 函数 JS – 函数的两种表现形式 我们熟知js有两…

MySQLExplain详解

Explain使用场景 查询性能优化:EXPLAIN可以帮助开发者分析查询语句的执行计划,判断是否有效地使用了索引、是否有可能导致全表扫描等性能问题。通过EXPLAIN的输出,可以找到潜在的性能瓶颈,并优化查询语句、创建合适的索引或调整表…

Win11虚拟机安装并使用

windows11 虚拟机安装 操作如下:1.进入微软官网2.打开虚拟机应用创建新虚拟机3.选择刚下载IOS文件4 设置虚拟机磁盘空间大小,这个数字可以随便写,反正都是虚拟的,但不可以低于64GB。下面的是否拆分磁盘文件,可更具需要…

大数据课程C4——ZooKeeper结构运行机制

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Zookeeper的特点和节点信息; ⚪ 掌握Zookeeper的完全分布式安装 ⚪ 掌握Zookeeper的选举机制、ZAB协议、AVRO; 一、Zookeeper-简介 1. 特点…

【计网】什么是三次握手四次挥手

文章目录 1、什么是TCP2、什么是TCP连接2.1、连接概念2.2、如何唯一确定一个TCP连接2.3、TCP最大连接数 3、三次握手3.1、为什么需要三次握手3.2、三次握手过程3.3、为什么一定是三次3.3.1、避免历史连接3.3.2、同步双方初始序列号3.3.3、避免资源浪费3.3.4、总结 3.4、握手丢失…

vue实现卡牌数字动态翻牌效果

vue实现卡牌数字动态翻牌效果 1. 实现效果2. 实现代码 1. 实现效果 在大屏项目中&#xff0c;我们尝尝会遇到卡牌式数字显示且能动态翻牌的效果&#xff0c;效果图如下&#xff1a; 2. 实现代码 <template><div class"days-box"><div class"op…

初探PID—速度闭环控制

由于在调PID时意外把板子烧了&#xff0c;目前只完成了比例调节的调试&#xff0c;整个程序也不太完善&#xff0c;本文当前仅作记录&#xff0c;后续会完善更改。 ——2023.07.26 文章目录 一、什么是PID二、PID有什么用三、PID程序实现 一、什么是PID PID是常用的一种控制算…

windows默认编码格式修改

1.命令提示符界面输入 chcp 936 对应 GBK 65001 对应 UTF-8 2.临时更改编码格式 chcp 936(或65001) 3.永久更改编码格式 依次开控制面板->时钟和区域->区域->管理->更改系统区域设置&#xff0c;然后按下图所示&#xff0c;勾选使用UTF-8语言支持。然后重启电脑。此…

上门小程序开发|上门服务小程序|上门家政小程序开发

随着移动互联网的普及和发展&#xff0c;上门服务成为了许多人生活中的一部分。上门小程序是一种基于小程序平台的应用程序&#xff0c;它提供了上门服务的在线平台&#xff0c;为用户提供了便捷的上门服务体验。下面将介绍一些适合开发上门小程序的商家。   家政服务商家&am…

帮助中心内容需要囊括什么?(内含案例分享)

给产品制作一个帮助中心&#xff0c;让用户能够通过访问帮助中心查看产品相关内容&#xff0c;尽快了解产品&#xff0c;熟悉操作。不仅仅局限于售后&#xff0c;在售中售前都能够发挥很大的作用&#xff0c;帮助用户全面了解产品&#xff0c;减少销售的工作量&#xff0c;节约…

数字孪生和 GIS 系统融合将为水利领域带来哪些变化?

随着科技的不断进步&#xff0c;数字孪生和 GIS 系统的融合应用逐渐成为了水利领域的新趋势。数字孪生是指通过数字化技术模拟物理实体和过程&#xff0c;将现实世界与虚拟世界相结合的技术&#xff0c;而 GIS 系统则是地理信息系统&#xff0c;用于收集、存储、管理和分析地理…

Mybatis快速入门,Mybatis的核心配置文件

Mybatis快速入门 一、Mybatis简介1.1Mybatis简化JDBC 二、Mybatis快速入门2.1创建user表&#xff0c;添加数据2.2创建模块&#xff0c;导入坐标2.3编写Mybatis核心配置文件 --> 替换连接信息&#xff0c;解决硬编码问题2.4编写SQL映射文件 --> 统一管理sql语句&#xff0…

7、Java入门教程【面向对象】

面向对象是Java编程的核心概念&#xff0c;如果不能充分了解面向对象的思想&#xff0c;那么会给你在实际的项目开发过程中&#xff0c;带来很多业务设计上的困扰。 一、构造器 我们在设计完一个类&#xff0c;在使用这个类去创建对象实例的时候&#xff0c;有些场景是需要对…