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

A Survey on Neural Network Interpretability

A Survey on Neural Network Interpretability----《神经网络可解释性调查》

摘要

  随着深度神经网络的巨大成功,人们也越来越担心它们的黑盒性质。可解释性问题影响了人们对深度学习系统的信任。它还与许多伦理问题有关,例如算法歧视。此外,可解释性是深度网络成为其他研究领域强大工具的理想属性,例如,药物发现和基因组学。在本次调查中,我们对神经网络可解释性研究进行了全面回顾。我们首先澄清可解释性的定义,因为它已在许多不同的上下文中使用。然后,我们阐述了可解释性的重要性,并提出了一个新的分类方法,沿着三个维度组织:参与的类型(被动和主动解释方法),解释的类型,以及重点(从局部到全局的可解释性)。这种分类法为相关文献中的论文分布提供了一个有意义的3D视图,因为其中的两个维度不是简单的分类,而是允许有序的子类别。最后,我们总结了现有的解释性评价方法,并在此基础上提出了可能的研究方向。

引言

  近年来,深度神经网络(dnn)在计算机视觉[2]、[3]、语音识别[4]、自然语言处理[5]等领域取得了巨大的成功,而最新的应用则出现在这些研究中[7]-[9]。他们不仅击败了许多以前的机器学习技术(例如,决策树,支持向量机),而且在某些现实世界的任务[4],[10]上实现了最先进的性能。由 DNN 支持的产品现已被数十亿人使用,例如面部和语音识别。DNN 也已成为许多科学领域的强大工具,例如医学 [11]、生物信息学 [12]、[13] 和天文学 [14],这些领域通常涉及大量数据。
  然而,深度学习仍然有一些明显的缺点。作为一个具有数百万个自由参数的非常复杂的模型(例如,AlexNet [2],6200 万个),DNN 经常被发现表现出意想不到的行为。例如,即使一个网络可以获得最先进的性能,并且似乎在物体识别任务上表现得很好,Szegedy等人[15]找到了一种方法,通过对输入图像施加某种不可察觉的变化,可以任意改变网络的预测。这种修改后的输入称为“对抗例子”。Nguyen等人[16]展示了另一种产生完全无法识别的图像(例如,看起来像白噪声)的方法,然而,DNN以99.99%的置信度将其识别为特定的对象。这些观察结果表明,尽管DNN可以在许多任务中获得卓越的表现,但它们的潜在机制可能与人类的机制非常不同,而且还没有被很好地理解。

A、可解释性的定义

  为了打开深层网络的黑匣子,许多研究者开始关注模型的可解释性。虽然已在各种文件中探讨了这一主题,但尚未就可解释性的定义达成明确的共识。之前的大部分作品都忽略了澄清问题,将其保留为“一看就知道”。如果我们仔细观察,就会发现可解释性的定义和动机通常是不同的,甚至是不一致的。
  之前对可解释性的一个定义是,在术语“解释”本身仍然难以理解的情况下,用人类[18]可理解的术语提供解释的能力。在回顾了之前的文献之后,我们在[18]的基础上对“解释”和“可理解的术语”做了进一步的澄清。
  可解释性是用可理解的语言向人类提供解释的能力。 其中,(1)理想情况下,解释应该是符合逻辑的决策规则(if-then规则),或者可以转换成符合逻辑的规则。然而,人们通常不要求以规则的形式明确地解释(但只要求一些可以用来构造解释的关键元素)。(2)易于理解的术语应该来自与任务相关的领域知识(或根据任务的常识)。
  我们的定义为可解释性研究提供了新的视角:(1)我们强调解释的形式而不是特定的解释者。毕竟,解释是用某种“语言”来表达的,无论是自然语言、逻辑规则还是其他东西。最近,人们强烈倾向于解释语言尽可能接近逻辑[19]。在实践中,人们并不总是需要一个完整的“句子”,它允许各种解释(规则、显着性掩码等)。这是对现有文献中的研究方法进行分类的一个重要角度。(2)领域知识是构建解释的基本单元。由于深度学习已经显示出其处理原始形式数据的能力,因此人们很难用其原始输入表示来解释模型。有了更多的领域知识,我们就可以得到更多可理解的表示,这些表示可以由领域专家进行评估。表1列出了不同任务中常用的几种表示。
  我们注意到一些研究区分了interpretability和explainability(或understandability、comprehensibility、transparency、human-simulatability等[17]、[23])。在本文中,我们不强调这些术语之间的细微差别。具体来说,我们专注于(深度)神经网络(很少是循环神经网络)的可解释性,其目的是提供对其内部工作原理和输入输出映射的解释。还有一些关于生成对抗网络(GAN)的可解释性研究。然而,作为一种生成模型,它与用作判别模型的常见神经网络略有不同。对于这个主题,我们希望读者参考最新的作品[24]-[29],其中许多作品与本文的“hidden semantics”部分(见第二节)有相似的观点,试图解释隐藏神经元或潜在空间的含义。
  根据我们的定义,Linux 操作系统的源代码是可解释的,尽管它对于开发人员来说可能会令人不知所措。深度决策树或高维线性模型(在可解释的输入表示之上)也是可解释的。有人可能会说它们是不可模拟的[17](即人类能够在短时间内在他/她的脑海中模拟模型从输入到输出的处理过程)。然而,我们声称它们仍然是可以解释的。
  除了上述(训练有素的神经网络)可解释性的限制范围外,还有一个更广泛的理解一般神经网络方法的领域,这是本文无法涵盖的。例如,DNN的经验成功给理论家提出了许多未解决的问题[30]。DNN 架构 [31]、[32] 的优点(或归纳偏差)是什么?DNN 的损失面/临界点 [33]-[36] 有哪些特性?为什么 DNN 仅通过简单的正则化就能很好地泛化 [37]-[39]?DNN 的鲁棒性/稳定性如何[40]-[45]?还有关于如何生成对抗性示例 [46]、[47] 和检测对抗性输入 [48] 的研究。

B、可解释性的重要性

  许多论文[17]、[18]、[49]已经强调了可解释性的必要性,强调缺乏可解释性可能有害的情况。然而,缺乏对此类论证的清晰组织的阐述。我们将可解释性重要性的论点归纳为三类。
  1)高可靠性要求:尽管深度网络在一些相对较大的测试集上表现出了良好的性能,但实际环境仍然要复杂得多。由于一些意外的失败是不可避免的,我们需要一些方法来确保我们仍然在控制中。深度神经网络不提供这样的选择。在实践中,它们经常被观察到在某些情况下会出现意想不到的性能下降,更不用说来自敌对示例[50]、[51]的潜在攻击了。
  可解释性并不总是需要的,但对于一些需要高度可靠的预测系统来说很重要,因为错误可能会导致灾难性结果(例如,人员生命、重大经济损失)。可解释性可以使潜在的故障更容易检测(借助领域知识),避免严重后果。此外,它可以帮助工程师查明根本原因并提供相应的解决方案。可解释性并不会使模型更可靠或其性能更好,但它是构建高度可靠系统的重要组成部分。
  2)伦理和法律要求: 第一个要求是避免算法歧视。由于机器学习技术的性质,经过训练的深度神经网络可能会继承训练集中的偏差,这有时很难注意到。当 DNN 在我们的日常生活中使用时,例如抵押贷款资格、信用和保险风险评估,会存在公平性问题。
  深度神经网络也已用于新药发现和设计[52]。计算药物设计领域由传统的机器学习方法(如随机森林和广义相加模型)主导,部分原因是当时它们的高效学习算法,也因为领域化学解释是可能的。新药要获得监管机构(如食品和药物管理局)的批准,也需要可解释性。除了临床试验的结果,通常还需要支持这些结果的生物学机制。医疗设备也是如此。
  可解释性的另一个法律要求是“解释权”[53]。根据《欧盟通用数据保护条例》(GDPR)[54]第22条,人们有权不受到对其产生法律效力或类似重大影响的自动决策的约束。数据控制者应保障数据所有者获得人为干预、表达观点和对决定提出异议的权利。如果我们不知道网络如何做出决定,就无法确保这些权利。
  3)科学用法:深度神经网络正在成为科学研究领域的强大工具,这些领域的数据可能具有复杂的内在模式(例如基因组学[55]、天文学[14]、物理学[56]甚至社会科学[57])。“科学”一词源自拉丁语“scientia”,意思是“知识”。当深度网络达到比旧模型更好的性能时,它们一定发现了一些未知的“知识”。可解释性是揭示它的一种方式。

C. 相关工作和贡献

  已经有人尝试总结神经网络可解释性的技术。然而,它们大多数只提供基本的分类或枚举,没有明确的分类法。Lipton [17] 指出,可解释性一词并没有明确的定义,并且在不同的研究中通常具有不同的含义。然后,他对可解释性研究中的需求(如信任、因果关系、公平决策等)和方法(事后解释)进行了简单的分类。Doshi-Velez和Kim[18]对可解释性的定义和评价进行了讨论,启发我们制定更严格的定义,并在此基础上对现有的方法进行分类。Montavon等人[58]将解释的定义限定为特征重要性(在其他地方也称为解释向量),并回顾了通过网络解释已学习概念和个体预测的技术。它们的目的不是提供一个全面的概述,只是包括一些有代表性的方法。Gilpin等人[59]将方法分为三类:解释数据处理、解释数据表示和解释生成网络。在这种分类下,线性代理模型方法和规则提取方法同样被视为代理方法,而没有注意到它们之间有很多差异(前者是局部方法,而后者通常是全局方法,并且它们产生的解释不同,我们将请参阅我们的分类法)。Guidotti等人[49]考虑了所有的黑箱模型(包括树集合、支持向量机等),并给出了一个基于四个维度(可解释性问题的类型、解释器的类型、黑箱模型的类型、数据的类型)的细粒度分类。然而,他们将决策树、决策规则、显着性掩模、敏感性分析、激活最大化等视为解释器。在我们看来,有些是某种类型的解释,有些是用于产生解释的方法。Zhang和Zhu[60]回顾了在计算机视觉领域中理解网络中间层表示或使用可解释表示学习网络的方法。
  本调查有以下贡献:(1)在参考文献[18]的基础上,我们进一步向可解释性的定义迈进了一步。在这个定义中,我们强调解释的类型(或格式)(例如,规则形式,包括决策树和决策规则集)。这是我们提出的分类法中的一个重要维度。以前的论文通常将现有方法组织成各种孤立的(在很大程度上)解释器(例如决策树、决策规则、特征重要性、显着性图等)。(2)我们分析了可解释性的真正需求,并将其总结为三组:可解释性作为系统的重要组成部分,应该具有高度可靠性;道德或法律要求;并且可解释性提供增强相关科学领域知识的工具。相比之下,之前的一项调查[49]仅通过提供黑盒模型可能存在危险的几种案例来显示可解释性的重要性。(3)我们提出了一种新的分类法,包括三个维度(被动与主动方法、解释格式以及局部-半局部-全局可解释性)。请注意,尽管以前的文献中已经讨论了分类学的许多成分,但它们要么是在完全不同的上下文中提到的,要么是相互交织的。据我们所知,我们的分类法提供了现有方法最全面、最清晰的分类。
  我们的分类组织的三个自由度允许一个示意图的3D视图,说明了在深层网络可解释性方面的各种尝试是如何相关的。它还通过填补可解释性研究中的一些空白,为可能的未来工作提供了建议(参见图2)。
在这里插入图片描述

分类方法

  我们提出了一种具有三个维度的新分类法(见图 1):(1)被动与主动方法维度,(2)产生的解释的类型/格式,以及(3)分别从局部到全局的可解释性维度。 第一个维度是分类的,有两个可能的值:被动解释和主动可解释性干预。它根据是否需要改变网络架构或优化过程对现有方法进行划分。被动解释过程从经过训练的网络开始,所有权重均已从训练集中学习。此后,这些方法尝试提取逻辑规则或提取一些可理解的模式。而主动方法则需要在训练前进行一些改变,如引入额外的网络结构或修改训练过程。这些修改使网络变得更加可解释(例如,更像一个决策树)。最常见的是,此类主动干预以正则化条款的形式出现。
在这里插入图片描述
  与以前的调查不同,其他两个维度允许序数值。例如,前面提出的解释器[49]的维度类型产生了诸如决策树、决策规则、特征重要性、敏感性分析等子类别。然而,这些预先认可的解释器之间并没有明确的联系(决策树和特征重要性之间的关系是什么)。相反,我们的第二个维度是解释的类型/格式。通过检查不同方法产生的各种解释,我们可以观察到它们的明确程度的差异。逻辑规则提供了最清晰和明确的解释,而其他类型的解释可能是隐含的。例如,显著性映射本身只是某个输入的掩码。通过观察显著性图,人们构建了一种解释:“模型之所以做出这种预测,是因为它聚焦于(输入的)这个高度有影响力的部分和那个部分”。希望这些部分对应于一些领域可理解的概念。严格来说,隐含的解释本身并不是完整的解释,需要进一步的人类解释,而这通常是人们在看到它们时自动完成的。我们在这里认识到四种主要的解释类型,逻辑规则、隐藏语义、归因和举例解释,并按解释能力递减的顺序排列。在之前的文献中也有类似的讨论,例如,Samek等人[61]提供了一个关于“解释类型”的简短小节(包括解释习得表征、解释个体预测等)。然而,它与我们将在下一段中介绍的可解释性研究的另一个独立维度混合在一起。最近的一项调查[62]遵循同样的哲学,将显著性映射和概念归因[63]视为不同类型的解释,而我们认为它们是相同的,只是在下面的维度上有所不同。
  最后一个维度,从局部可解释性到全局可解释性(相对于输入空间),在最近的论文中变得非常常见(例如,[18]、[49]、[58]、[64]),其中全局可解释性意味着能够理解模型的整体决策逻辑,局部可解释性侧重于单个预测的解释。然而,在我们提出的维度中,全局可解释性和局部可解释性(即半局部可解释性)之间存在过渡而不是硬性划分。局部解释通常利用目标输入的信息(例如,它的特征值,它的梯度)。但全局解释试图推广到尽可能广泛的输入(例如,规则学习中的顺序覆盖、特征重要性排名的边际贡献)。这种观点也得到了几种半局部解释方法[65]、[66]的存在的支持。也有人尝试以自下而上的方式将局部解释融合到全局解释中[19],[67],[68]。为了帮助理解后两个维度,表II列出了分类法下不同子类别产生的典型解释的示例。
在这里插入图片描述

相关文章:

A Survey on Neural Network Interpretability

A Survey on Neural Network Interpretability----《神经网络可解释性调查》 摘要 随着深度神经网络的巨大成功,人们也越来越担心它们的黑盒性质。可解释性问题影响了人们对深度学习系统的信任。它还与许多伦理问题有关,例如算法歧视。此外,…...

代码随想录 Day41 动态规划09 LeetCode T121 买卖股票的最佳时机 T122 买卖股票的最佳时机II

前言 这两题看起来是不是有点眼熟,其实我们在贪心章节就已经写过了这两道题,当时我们用的是将利润分解,使得我们始终得到的是最大利润 假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (pri…...

ubuntu18-recvfrom接收不到广播报文异常分析

目录 前言 一、UDP广播接收程序 二、异常原因分析 总结 前言 在ubuntu18.04系统中,编写udp接收程序发现接收不到广播报文,使用抓包工具tcpdump可以抓取到广播报文,在此对该现象分析解析如下文所示。 一、UDP广播接收程序 UDP广播接收程序如…...

漏刻有时百度地图API实战开发(6)多个标注覆盖层级导致不能响应点击的问题

漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案漏刻有时百度地图API实战开发(2)文本标签显示和隐藏的切换开关漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解…...

使用Net2FTP轻松打造免费的Web文件管理器并公网远程访问

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…...

MySQL的表格去重,史上最简便的算法,一看就会

首先,表格my_tab02存在很多重复的数据: #表格的去重 方法一: 详细内容传送门:表格的去重 -- 思路: -- 1.先创建一张临时表 my_tmp,该表的结构和my_tab02一样 -- 2.把my_tmp的记录通过distinct关键字 处理后 把记录复…...

this是指向的哪个全局变量,改变this指向的方法有几种?

在JavaScript中,this关键字指向当前执行上下文中的对象。它的具体指向取决于函数的调用方式。 改变this指向的方法有四种: 1.使用call()方法:call()方法在调用函数时将指定的对象作为参数传递进去,从而改变函数的this指向。用法示…...

电脑msvcp110.dll丢失怎么办,msvcp110.dll缺失的详细修复步骤

在现代科技发展的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,由于各种原因,电脑可能会出现一些问题,其中之一就是msvcp110.dll文件丢失。这个问题可能会导致一些应用程序无法正常运行,给我们的生活和工作…...

cookie 里面都包含什么属性?

结论先行: Cookie 中除了名称和值外,还有几个比较常见的,例如: Domain 域:指定了 cookie 可以发送到哪些域,只有发送到指定域或其子域的请求才会携带该cookie; Path 路径:指定哪些…...

LinuxMySql

结构化查询语言 DDL(数据定义语言) 删除数据库drop database DbName; 创建数据库create database DbName; 使用数据库use DbName; 查看创建数据库语句以及字符编码show create database 43th; 修改数据库属性(字符编码改为gbk)…...

《微服务架构设计模式》之三:微服务架构中的进程通信

概述 交互方式 客户端和服务端交互方式可以从两个维度来分: 维度1:一对一和多对多 一对一:每个客户端请求由一个实例来处理。 一对多:每个客户端请求由多个实例来处理。维度2:同步和异步 同步模式:客户端…...

μC/OS-II---内核:任务调度

目录 内核:调度(oc_core.c文件的函数)OS_TCB(任务控制块)初始化任务控制块列表(ucos_ii.h文件的函数)系统调用,主动让渡CPU发生中断,强制当前任务让渡CPU就绪表(ucos_ii.h文件的函数)设置任务进…...

小程序发成绩

在这个数字化快速发展的时代,让学生能够方便快捷地获取自己的成绩已经成为一项基本的需求。那么,如何实现这一目标呢?对于许多老师来说,可能首先想到的是使用各种代码或者Excel来发布成绩查询。今天,我们就来探讨一下这…...

tensorflow内存泄漏或模型只加载不运行

使用tf2模型进行推理的过程中,发现模型的内存占用在逐步增加,甚至会因为OOM被kill掉进程,有时候模型只加载不运行,搜索得到很多五花八门的答案,有些认为是tf2本身的问题,但在使用内存追踪的时候发现&#x…...

npm和yarn的一些命令

文章目录 前言 前言 提示:生命并不短暂,短暂的是人。 --阿多尼斯 yarn config set registry https://registry.npmjs.org --globalnpm install -g cnpm --registryhttps://registry.npm.taobao.org # 切换淘宝源: yarn config set registry…...

Linux开发工具之自动化构建工具-make/Makefile

文章目录 1.make/Makefile的介绍2.简单编写及使用3.ACM时间4.extern的复习5.多文件的编译5.0复习翻译过程5.1多文件的构成5.2手动编译5.3利用Makefile 1.make/Makefile的介绍 make是一个命令 makefile是一个文件[makefile也对] 之前的学习都没有维护项目结构 当有多个.c文件 先…...

UE5蓝图接口使用方法

在内容区右键创建蓝图接口 命名自定义(可以用好识别的) 双击打开后关闭左边窗口 右键函数 -- 重命名 -- 名称自定义(用好记的) 点击下边输入后面的 号创建一个变量 点击编译并保存 在一个蓝图类里面 -- 点击类设置 在右侧已实现的…...

vue动态修改css样式

<span :style"{backgroundColor:colorHex}">测试文字</span> <button click"changeColor">更改颜色</button>export default{data(){return{colorHex:"#eeeeee",}},methods:{changeColor(){this.colorHex"#000&quo…...

小解List的使用【C++】

小解List的使用【C】 一. List1.1. 与vector的不同1.2 与vector的使用不同1.2.1 迭代器失效1.2.2. insert1.2.3 erase1.2.4 sort1.3. 其他接口 补充迭代器容器与迭代器的关系迭代器的类型 一. List 学习了STL&#xff0c;也已经到了List的内容 因为List与string以及vector比起…...

自动驾驶高效预训练--降低落地成本的新思路(AD-PT)

自动驾驶高效预训练--降低落地成本的新思路 1. 之前的方法2. 主要工作——面向自动驾驶的点云预训练2.1. 数据准备 出发点&#xff1a;通过预训练的方式&#xff0c;可以利用大量无标注数据进一步提升3D检测 https://arxiv.org/pdf/2306.00612.pdf 1. 之前的方法 1.基于对比学…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

从零开始打造 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修改…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...