当前位置: 首页 > news >正文

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

最近尝试了使用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一些数据做微调(但是缺乏标签,需要走无监督的逻辑),大概是可探索的方向。

相关文章:

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

最近尝试了使用BERT将告警信息当成一个文本去做分类,从分类的准召率上来看,还是取得了不错的效果(非结构化数据强标签训练,BERT确实是一把大杀器)。但准召率并不是唯一追求的目标,在安全场景下,…...

web APIs-练习二

轮播图点击切换&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…...

rpc通信原理浅析

rpc通信原理浅析 rpc(remote procedure call)&#xff0c;即远程过程调用&#xff0c;广泛用于分布式或是异构环境下的通信&#xff0c;数据格式一般采取protobuf。 protobuf&#xff08;protocol buffer&#xff09;是google 的一种数据交换的格式&#xff0c;它独立于平台语…...

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法&#xff1f;2、K-近邻算法API3、…...

Spring Security 6.x 系列【64】扩展篇之多线程支持

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 本系列Spring Authorization Server 版本 1.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 问题演示2. 解决方案:…...

Elasticsearch 简单搜索查询案例

1.MySql表结构/数据 SET FOREIGN_KEY_CHECKS0;-- ---------------------------- -- Table structure for user_lables -- ---------------------------- DROP TABLE IF EXISTS user_lables; CREATE TABLE user_lables (id varchar(255) DEFAULT NULL COMMENT 用户唯一标识,age…...

【RabbitMQ(day1)】RabbitMQ的概述和安装

入门RabbitMQ 一、RabbitMQ的概述二、RabbitMQ的安装三、RabbitMQ管理命令行四、RabbitMQ的GUI界面 一、RabbitMQ的概述 MQ&#xff08;Message Queue&#xff09;翻译为消息队列&#xff0c;通过典型的【生产者】和【消费者】模型&#xff0c;生产者不断向消息队列中生产消息&…...

Too many files with unapproved license: 2 See RAT report

解决方案 mvn -Prelease-nacos -Dmaven.test.skiptrue -Dpmd.skiptrue -Dcheckstyle.skiptrue -Drat.numUnapprovedLicenses100 clean install 或者 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.numUnapprovedLicenses100 clean install...

Windows11的VTK安装:VS201x+Qt5/Qt6 +VTK7.1/VTK9.2.6

需要提前安装好VS2017和VS2019和Qt VS开发控件以及Qt VS-addin。 注意Qt6.2.4只能跟VTK9.2.6联合编译&#xff08;目前VTK9和Qt6的相互支持版本&#xff09;。 首先下载VTK&#xff0c;需要下载源码和data&#xff1a; Download | VTKhttps://vtk.org/download/ 然后这两个文…...

大数据时代个人信息安全保护小贴士

个人信息安全保护小贴士 1. 朋友圈“五不晒”2. 手机使用“四要”、“六不要”3. 电脑使用“七注意”4. 日常上网“七注意”5. 日常生活“五注意” 互联网就像公路&#xff0c;用户使用它&#xff0c;就会留下脚印。 每个人都在无时不刻的产生数据&#xff0c;在消费数据的同时…...

windows 修改 RDP 远程桌面端口号

打开 PowerShell &#xff0c; 执行regedit 依次展开 PortNumber HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Terminal Server \WinStations \RDP-Tcp 右边找到 PortNumber &#xff0c;对应修改自己的端口号 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Co…...

面试题-TS(四):如何在 TypeScript 中使用类和继承?

面试题-TS(4)&#xff1a;如何在 TypeScript 中使用类和继承&#xff1f; 在TypeScript中&#xff0c;类是一种重要的概念&#xff0c;它允许我们使用面向对象的编程风格来组织和管理代码。类提供了一种模板&#xff0c;用于创建具有相同属性和行为的对象。通过继承&#xff0…...

React之JSX的介绍与使用步骤,注意事项,条件渲染,列表渲染以及css样式处理

React之JSX的介绍与使用 一、JSX的介绍二、JSX使用步骤三、JSX注意事项四、JSX中使用JavaScript表达式五、条件渲染六、列表渲染七、CSS样式处理八、JSX 总结 一、JSX的介绍 简介 JSX是JavaScript XML的简写&#xff0c;表示了在Javascript代码中写XML(HTML)格式的代码 优势 声…...

sql进阶:求满足某列数值相加无限接近90%的行(90分位)

sql 一、案例分析二、思路三、代码实现一、案例分析 表中有某个id列和数值列,求数值列占比为90%的id,如有个用户表,存储id和消费金额order_cnt,求一条sql查出消费占比无限接近90%的所有客户,如表中总消费为10000,占比最高的是4000、3000、2800,对应A、B、C用户,查出A、B、C用户…...

设计模式大白话——观察者模式

文章目录 一、概述二、示例三、模式定义四、其他 一、概述 ​ 与其叫他观察者模式&#xff0c;我更愿意叫他叫 订阅-发布模式 &#xff0c;这种模式在我们生活中非常常见&#xff0c;比如&#xff1a;追番了某个电视剧&#xff0c;当电视剧有更新的时候会第一时间通知你。当你…...

机器学习小记-序

机器学习是人工智能的一个重要分支&#xff0c;根据学习任务的不同&#xff0c;可以将机器学习分为以下几类&#xff1a; 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a; 应用场景&#xff1a;监督学习适用于已标记数据集的任务&#xff0c;其中每个样本都有…...

IP基础知识总结

IP他负责的是把IP数据包在不同网络间传送&#xff0c;这是网络设计相关的&#xff0c;与操作系统没有关系。所以这部分知识&#xff0c;不是网络的重点。IP和路由交换技术联系紧密。但是要作为基本知识点记住。 一、基本概念 网络层作用&#xff1a;实现主机与主机之间通信。 …...

Java设计模式-单例模式

单例模式 1.单例模式含义 单例模式就是保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 其实单例模式很好理解&#xff0c;当我们new一个对象实例的时候&#xff0c;这个对象会被放到一个内存中&#xff0c;当我们再次new同一个对象的实例的时候&#xf…...

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…...

GitLab 删除项目

1.点击头像 2.点击Profile 3.选择要删除的项目点进去 4.settings-general-Advances-expand 5.然后在弹出框中输入你要删除的项目名称即可...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...