李宏毅深度学习-自注意力机制

输入是向量序列的情况

在图像识别的时候,假设输入的图像大小都是一样的。但如果问题变得复杂,如图6.2所示,输入是一组向量,并且输入的向量的数量是会改变的,即每次模型输入的序列长度都不一样,这个时候应该要怎么处理呢?我们通过具体的例子来讲解处理方法。

第一个例子是文字处理,假设网络的输入是一个句子,每一个句子的长度都不一样(每个句子里面词汇的数量都不一样)。如果把一个句子里面的每一个词汇都描述成一个向量,用向量来表示,模型的输入就是一个向量序列,而且该向量序列的大小每次都不一样(句子的长度不一样,向量序列的大小就不一样)。

将词汇表示成向量最简单的做法是独热编码,创建一个很长的向量,该向量的长度跟世
界上存在的词汇的数量是一样多的。假设英文是十万个词汇,创建一个十万维的向量,每一
个维度对应到一个词汇,如式(6.1)所示。但是这种表示方法有一个非常严重的问题,它假设
所有的词汇彼此之间都是没有关系的
。cat 和 dog 都是动物,它们应该比较像;cat 是动物,
apple 是植物,它们应该比较不像。但从独热向量中不能看到这件事情,其里面没有任何语义
的信息。

除了独热编码,词嵌入(word embedding)也可将词汇表示成向量。词嵌入使用一个向量来表示一个词汇,而这个向量是包含语义信息的。如图6.3所示,如果把词嵌入画出来,所有的动物可能聚集成一团,所有的植物可能聚集成一团,所有的动词可能聚集成一团等等。词嵌入会给每一个词汇一个向量,而一个句子就是一组长度不一的向量。
在这里插入图片描述
接下来举一些把一个向量的序列当做输入的例子。如图6.4 所示,一段声音信号其实是一组向量。我们会把一段声音信号取一个范围,这个范围叫做一个窗口(window),把该窗口里面的信息描述成一个向量,这个向量称为一帧(frame)。通常这个窗口的长度就是25毫秒。为了要描述一整段的声音信号,我们会把这个窗口往右移一点,通常移动的大小是10毫秒。

Q:为什么窗口的长度是25毫秒,窗口移动的大小是10毫秒?
A:前人帮我们调好了。他们尝试了大量可能的值,这样得到的结果往往最理想。

总之,一段声音信号就是用一串向量来表示,而因为每一个窗口,他们往右移都是移动10 毫秒,所以一秒钟的声音信号有 100 个向量,所以一分钟的声音信号就有这个 100 乘以60,就有 6000 个向量。所以语音其实很复杂的。一小段的声音信号,它里面包含的信息量其实是非常可观的,所以声音信号也是一堆向量。

在这里插入图片描述
一个图(graph)也是一堆向量。社交网络是一个图,在社交网络上面每一个节点就是一个人。每一个节点可以看作是一个向量。每一个人的简介里面的信息(性别、年龄、工作等等)都可以用一个向量来表示。所以一个社交网络可以看做是一堆的向量所组成的。药物发现(drugdiscovery)跟图有关,如图 6.5 所示,一个分子也可以看作是一个图。如果把一个分子当做是模型的输入,每一个分子可以看作是一个图,**分子上面的每一个球就是一个原子,每个原子就是一个向量。每个原子可以用独热向量来表示,**比如氢、碳、氧的独热向量表示如式(6.2) 所示。

H=[1,0,0,0,0,…]
C=[0,1,0,0,0,…]
O=[0,0,1,0,0,…]

如果用独热向量来表示每一个原子,一个分子就是一个图,它就是一堆向量。

在这里插入图片描述

类型 1:输入与输出数量相同

模型的输入是一组向量,它可以是文字,可以是语音,可以是图。而输出有三种可能性,第一种可能性是每一个向量都有一个对应的标签。如图6.6所示,当模型看到输入是4个向量的时候,它就要输出4个标签。如果是回归问题,每个标签是一个数值。如果是分类问题,每个标签是一个类别。但是在类型1的问题里面,输入跟输出的长度是一样的。模型不需要去烦恼要输出多少的标签,输出多少的标量。反正输入是4个向量,输出就是4个标量。这是第一种类型。

什么样的应用会用到第一种类型的输出呢?举个例子,如图6.7所示,在文字处理上,假设我们要做的是词性标注(Part-Of-Speech tagging,POS tagging)。机器会自动决定每一个词汇的词性,判断该词是名词还是动词还是形容词等等。这个任务并不是很容易,举个例子,现在有一个句子:Isawasaw,这句话的意思是我看到一个锯子,第二个saw是名词锯子。所以机器要知道,第一个saw是个动词,第二个saw是名词,每一个输入的词汇都要有一个对应的输出的词性。这个任务就是输入跟输出的长度是一样的情况,属于第一个类型的输出。如果是语音,一段声音信号里面有一串向量。每一个向量都要决定它是哪一个音标。这不是真正的语音识别,这是一个语音识别的简化版。如果是社交网络,给定一个社交网络,模型要决定每一个节点有什么样的特性,比如某个人会不会买某个商品,这样我们才知道要不要推荐某个商品给他。以上就是举输入跟输出数量一样的例子,这是第一种可能的输出。
在这里插入图片描述

类型 2:输入是一个序列,输出是一个标签

第二种可能的输出如图6.8所示,整个序列只需要输出一个标签就好

举例而言,如图6.9 所示,输入是文字,比如情感分析。情感分析就是给机器看一段话,模型要决定说这段话是积极的(positive)还是消极的(negative)。情感分析很有应用价值,假设公司开发的一个产品上线了,想要知道网友的评价,但又不可能一则一则地分析网友的留言。而使用情感分析就可以让机器自动去判别当一则贴文里面提到某个产品的时候,它是积极的还是消极的,这样就可以知道产品在网友心中的评价。给定一整个句子,只需要一个标签(积极的或消极的)。如果是语音,机器听一段声音,再决定是谁讲的这个声音。如果是图,比如给定一个分子,预测该分子的亲水性。
在这里插入图片描述

类型 3:序列到序列

还有第3个可能的输出:我们不知道应该输出多少个标签,机器要自己决定输出多少个标签。如图6.10所示,输入是N 个向量,输出可能是N′个标签。N′是机器自己决定的。这种任务又叫做序列到序列的任务。翻译就是序列到序列的任务,因为输入输出是不同的语言,它们的词汇的数量本来就不会一样多。真正的语音识别输入一句话,输出一段文字,其实也是一个序列到序列的任务。

自注意力的运作原理

特点

我们就先只讲第一个类型:输入跟输出数量一样多的状况,以序列标注(sequencelabeling)为例。序列标注要给序列里面的每一个向量一个标签。要怎么解决序列标注的问题呢?直觉的想法就是使用全连接网络。如图6.11所示,虽然输入是一个序列,但可以不要管它是不是一个序列,各个击破,把每一个向量分别输入到全连接网络里面得到输出。这种做法有非常大的瑕疵,以词性标注为例,给机器一个句子:Isawasaw。对于全连接网络,这个句子中的两个saw 完全一模一样,它们是同一个词汇。既然全连接网络输入同一个词汇,它没有理由输出不同的东西。但实际上,我们期待第一个saw要输出动词,第二个saw要输出名词。但全连接网络无法做到这件事,因为这两个saw是一模一样的。有没有可能让全连接网络考虑更多的信息,比如上下文的信息呢?这是有可能的,如图6.12所示,把每个向量的前后几个向量都“串”起来,一起输入到全连接网络就可以了
在这里插入图片描述
在这里插入图片描述
在语音识别里面,我们不是只看一帧判断这个帧属于哪一个音标,而是看该帧以及其前后5个帧(共11个帧)来决定它是哪一个音标。所以可以给全连接网络一整个窗口的信息,让它可以考虑一些上下文,即与该向量相邻的其他向量的信息。如图6.13所示。但是这种的方法还是有极限的,如果有某一个任务不是考虑一个窗口就可以解决的,而是要考虑一整个序列才能够解决,那要怎么办呢?有人可能会想说这个还不容易,把窗口开大一点啊,大到可以把整个序列盖住,就可以了。但是序列的长度是有长有短的,输入给模型的序列的长度,每次可能都不一样。如果要开一个窗口把整个序列盖住,可能要统计一下训练数据,看看训练数据里面最长序列的长度。接着开一个窗口比最长的序列还要长,才可能把整个序列盖住。但是开一个这么大的窗口,意味着全连接网络需要非常多的参数,可能不只运算量很大,还容易过拟合如果想要更好地考虑整个输入序列的信息,就要用到自注意力模型

自注意力模型的运作方式如图6.14 所示,自注意力模型会“吃”整个序列的数据,输入几个向量,它就输出几个向量。图6.14中输入4个向量,它就输出4个向量。而这4个向量都是考虑整个序列以后才得到的,所以输出的向量有一个黑色的框,代表它不是一个普通的向量,它是考虑了整个句子以后才得到的信息。接着再把考虑整个句子的向量丢进全连接网络,再得到输出。因此全连接网络不是只考虑一个非常小的范围或一个小的窗口,而是考虑整个序列的信息,再来决定现在应该要输出什么样的结果,这就是自注意力模型
在这里插入图片描述
自注意力模型不是只能用一次,可以叠加很多次。如图6.15所示,自注意力模型的输出通过全连接网络以后,得到全连接网络的输出。全连接网络的输出再做一次自注意力模型,再重新考虑一次整个输入序列的数据,将得到的数据输入到另一个全连接网络,就可以得到最终的结果。

全连接网络和自注意力模型可以交替使用。全连接网络专注于处理某一个位置的信息,自注意力把整个序列信息再处理一次

有关自注意力最知名的相关的论文是“Attention Is All You Need”。在这篇论文里面,谷歌提出了 Transformer 网络架构。其中最重要的模块是自注意力,就像变形金刚的火种源。有很多更早的论文提出过类似自注意力的架构,只是叫别的名字,比如叫Self-Matching。“Attention Is All You Need” 这篇论文将自注意力模块发扬光大。
在这里插入图片描述

基本原理

其输入是一串的向量,这个向量可能是整个网络的输入,也可能是某个隐藏层的输出,所以不用x来表示它,而用a来表示它,代表它有可能是前面已经做过一些处理,是某个隐藏层的输出。输入一组向量a,自注意力要输出一组向量b,每个b都是考虑了所有的a以后才生成出来的。b1、b2、b3、b4 是考虑整个输入的序列a1、a2、a3、a4 才产生出来的。
在这里插入图片描述
具体步骤如下:
1.以 a 1 a^1 a1为例,根据 a 1 a^1 a1这个向量,找出整个 sequence 中跟 a 1 a^1 a1相关的其他向量 ⇒ 计算哪些部分是重要的,求出 a i a^i ai a 1 a^1 a1的相关性(影响程度大的就多考虑点资讯),用 α \alpha α表示

在这里插入图片描述
2. 计算相关性:有 点积 和 additive 两种方法计算相关性,我们主要讨论 点积 这个方法。输入的两个向量分别乘不同的矩阵,左边这个向量乘上矩阵 W q W^q Wq 得到矩阵 q(query),右边这个向量乘上矩阵 W k W^k Wk 得到矩阵 k(key),再把 q 跟 k 做 dot product(点积),逐元素相乘后累加得到一个 scalar 就是 相关性 α \alpha α
在这里插入图片描述
a 1 a^1 a1乘上 W q W^q Wq 得到 q,叫做 Query(就像是搜寻相关文章的关键字,所以叫做 Query)

然后将 a i a^i ai都要乘 W q W^q Wq 得到 k,叫做 Key,把这个Query q 1 q^1 q1 和 Key k i k^i ki进行 点积操作 就得到 相关性 α( α 叫做 Attention Score,表示 Attention计算出的 vector 之间的相关性)
在这里插入图片描述
attention score 还要经过一层 softmax 才能用于后续处理,其中 softmax 也可以换成其他的 activation function
在这里插入图片描述
3. 分别抽取重要信息,根据关联性作加权求和得到 b i b^i bi(一次性并行计算出 b i b^i bi,不需要依次先后得出)
在这里插入图片描述
在这里插入图片描述
优点: b i b^i bi 是并行计算得出

矩阵的角度表示 Self-attention 计算过程

① 计算 k,q,v (其中 W q W^q Wq W k W^k Wk W v W^v Wv 都是要学习的网络参数矩阵)
在这里插入图片描述
② 计算 α 并 Normalization
在这里插入图片描述
③ 计算 b
在这里插入图片描述
其中,

  • I 是 Self-attention 的 input(一排 vector),每个 vector 拼起来当作矩阵的 column
  • 这个 input 分别乘上三个矩阵, 得到 Q K V
  • 接下来 Q 乘上 K 的 transpose,得到 A 。可能会做一些处理,得到 A’ ,叫做Attention Matrix ,生成 Q 矩阵就是为了得到 Attention 的 score
  • A’ 再乘上 V,就得到 O,O 就是 Self-attention 这个 layer 的输出

多头注意力

自注意力有一个进阶的版本——多头自注意力(multi-head self-attention)。多头自注意力的使用是非常广泛的,有一些任务,比如翻译、语音识别,用比较多的头可以得到比较好的结果。至于需要用多少的头,这个又是另外一个超参数,也是需要调的。为什么会需要比较多的头呢?在使用自注意力计算相关性的时候,就是用q去找相关的k。但是相关有很多种不同的形式,所以也许可以有多个q,不同的q负责不同种类的相关性,这就是多头注意力。

特点

使用多个 q k v 组合,不同的 q k v 负责不同种类的相关性

例如在下图中,一共有2类, 1类的放在一起算,2类的放在一起算。相关性变多了,所以参数也增加了,原来只需要三个 W 矩阵,现在需要六个 W 矩阵
在这里插入图片描述

计算步骤

先把 a 乘上一个矩阵得到 q

再把 q 乘上另外两个矩阵,分别得到 q 1 q^1 q1 q 2 q^2 q2,代表有两个 head;同理可以得到 k 1 k^1 k1 k 2 k^2 k2 v 1 v^1 v1 v 2 v^2 v2

同一个 head 里的 k q v 计算 b.

在这里插入图片描述
将各个 head 计算得到的 b i b^i bi 拼接,通过一个 transform得到 b i b^i bi,然后再送到下一层去
在这里插入图片描述

位置编码

讲到目前为止,自注意力层少了一个也许很重要的信息,即位置的信息。对一个自注意力层而言,每一个输入是出现在序列的最前面还是最后面,它是完全没有这个信息的。有人可能会问:输入不是有位置1、2、3、4吗?但1、2、3、4是作图的时候,为了帮助大家理解所标上的一个编号。对自注意力而言,位置1、位置2、位置3跟位置4没有任何差别,这四个位置的操作是一模一样的。但是这可能会有一个问题:位置的信息被忽略了,而有时候位置的信息很重要。

每个向量所处的“位置”需要被编码

方法:每个位置用一个 vector e i e^i ei 来表示它是 sequence 的第 i 个。加和到原向量中。
在这里插入图片描述

自注意力与卷积神经网络对比

自注意力还可以被用在图像上。到目前为止,在提到自注意力的时候,自注意力适用的范围是输入为一组向量的时候。一张图像可以看作是一个向量序列,如图6.36所示,一张分辨率为5×10 的图像(图6.36a)可以表示为一个大小为5×10×3 的张量(图6.36b),3 代表RGB 这3个通道(channel),每一个位置的像素可看作是一个三维的向量,整张图像是5 ×10 个向量。所以可以换一个角度来看图像,图像其实也是一个向量序列,它既然也是一个向量序列,完全可以用自注意力来处理一张图像
在这里插入图片描述
CNN 可以看成简化版的 self-attention,CNN 就是只计算感受域中的相关性的self-attention。

  • CNN:感知域(receptive field)是人为设定的,只考虑范围内的信息
  • Self-attention:考虑一个像素和整张图片的信息 ⇒ 自己学出“感知域”的形状和大小

结论:
CNN 就是 Self-attention 的特例,Self-attention 只要设定合适的参数,就可以做到跟 CNN 一模一样的事情
self attention 是更 flexible 的 CNN
⇒ self-attention需要 更多的数据 进行训练,否则会 欠拟合;否则CNN的性能更好

  • Self-attention 它弹性比较大,所以需要比较多的训练资料,训练资料少的时候,就会 overfitting
  • 而 CNN 它弹性比较小,在训练资料少的时候,结果比较好,但训练资料多的时候,它没有办法从更大量的训练资料得到好处

在这里插入图片描述

自注意力与循环神经网络对比

  • 对 RNN 来说,最终的输出要考虑最左边一开始的输入 vector,意味着必须要把最左边的输入存到 memory 里面并且在计算过程中一直都不能够忘掉,一路带到最右边,才能够在最后一个时间点被考虑(依次按顺序输出)
  • 对 Self-attention 可以在整个 sequence 上非常远的 vector之间轻易地抽取信息(并行输出,速度更快,效率更高)

在这里插入图片描述

自注意力与图神经网络对比

  • 在 Graph 上面,每一个 node 可以表示成一个向量
  • node 之间是有相连的,每一个 edge 标志着 node 跟 node 之间的关联性
  • 比如:在做Attention Matrix 计算的时候,只需计算有 edge 相连的 node
  • 因为这个 Graph 往往是人为根据某些 domain knowledge 建出来的,已知这两个向量彼此之间没有关联(图矩阵中对应结点 i 与 结点 j 之间没有数值),就没有必要再用机器去学习这件事情

在这里插入图片描述

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

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

相关文章

DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)

本文章的素材与知识来自李国良老师和王珊老师。 数据操纵语言DML(Data Manipulation Language) SELECT 一.SELECT的语法与构成 1.语法 2.构成 二.投影 投影操作可以选择表中的若干列,主要体现在SELECT子句后的列表达式。 1.列表达式 2.…

鸿蒙开发(NEXT/API 12)【穿戴设备模板化通知】手机侧应用开发

手机侧应用向穿戴设备发送通知,并在穿戴设备上按模板显示,支持穿戴设备收到通知后同步振动或响铃(跟随穿戴设备系统设置)。执行成功后,穿戴设备上会显示下图所示通知界面。 该接口无需用户授权,仅需要确保…

视频转文字免费的软件有哪些?6款工具一键把视频转成文字!又快又方便!

视频转文字免费的软件有哪些?在视频制作剪辑过程中,我们经常进行视频语音识别成字幕,帮助我们更好地呈现视频内容的观看和宣传,市场上有许多免费的视频转文字软件,可以快速导入视频,进行视频内音频的文字转…

Vueron引领未来出行:2026年ADAS激光雷达解决方案上市路线图深度剖析

Vueron ADAS激光雷达解决方案路线图分析:2026年上市展望 Vueron近期发布的ADAS激光雷达解决方案路线图,标志着该公司在自动驾驶技术领域迈出了重要一步。该路线图以2026年上市为目标,彰显了Vueron对未来市场趋势的精准把握和对技术创新的坚定…

【Mybatis篇】Mybatis的注解开发

🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 文章目录 🎯 Select注解 …

Gridview配置数据源--信任服务器证书

目录 背景过程Gridview配置数据源GridView与数据源:数据库连接与安全:信任服务器证书:配置信任服务器证书:注意事项: 生成连接字符串程序运行报错问题解决 总结 背景 Gridview配置数据源之后,程序报错 过…

一篇文章教会你DHT11读取温湿度,附STM32代码示例

目录 一、DHT11说明: 1.典型电路: 2.串行通信说明(单线双向): 单总线说明: 单总线传送数据位定义: 校验位数据定义: 二、DHT11读取时为啥要切换模式: 1. 通信时序…

【Linux】进程第三弹(虚拟地址空间)

目录 现象 底层原因 数据不发生修改 数据修改 小总结 地址空间本质 为什么要有地址空间 现象 来看代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h>int val 50;int main() {printf("father process is running…

【springboot】简易模块化开发项目整合Redis

接上一项目&#xff0c;继续拓展项目 1.整合Redis 添加Redis依赖至fast-demo-config模块的pom.xml文件中 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependenc…

九、3 串口发送+printf函数移植+打印汉字

1、接线图 TX与RX交叉连接&#xff0c;TXD接STM32的PA10&#xff0c;RXD接STM32的PA9 VCC与3.3V用跳线帽连接 2、函数介绍 3、代码部分 &#xff08;1&#xff09;发送字节的函数&#xff08;Byte&#xff09; 可直接发送十六进制数 如0x41&#xff0c;也可直接发送字符 如A …

关于函数模板的一些不为人知的用法

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 关于函数模板&#xff0c;大家都不陌生。但是如下的函数模板&#xff0c;大家肯定没有见过 没有提供任何特例化的模板 不管我们传入的是什么类型的参数&#xff0c;都可以匹配到这个模板【所以又被称为…

基于Springboot+Vue的在线问诊系统的设计与实现(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

动手学大模型应用开发之大模型简介

动手学大模型应用开发之大模型简介 主要学习目标什么是大语言模型大模型的能力和特点涌现能力作为基座模型支持多元应用的能力支持对话作为统一入口的能力大模型特点 常见大模型ChatGpt通义千问 LangChainLangChain的核心模块 总结相关学习链接 主要学习目标 学习如何进行大模…

Alignment与Correspondence,用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法

Alignment与Correspondence&#xff0c;用于量化衡量MLLM中视觉特征的视觉语义对齐与视觉结构程度的方法 FesianXu 20241006 at Wechat Search Team 前言 在多模态大模型&#xff08;Multimodal Large Language Model&#xff0c; MLLM&#xff09;中&#xff0c;视觉特征就像…

ai智能论文生成系统有用吗?分享5款ai文献综述自动生成器

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术在学术写作领域的应用越来越广泛&#xff0c;尤其是在文献综述的自动生成方面。AI智能论文生成系统通过深度学习和自然语言处理技术&#xff0c;能够帮助研究人员快速生成高质量的文献综述&#xff0c;从而提高写作效…

安可数据库产品目录

‌国家安可数据库产品目录包括以下主要产品‌&#xff1a; ‌华为GaussDB、openguass&#xff1a; 由华为云计算技术有限公司提供。‌金仓数据库管理系统&#xff1a;由中电科金仓&#xff08;北京&#xff09;科技股份有限公司提供。‌神通数据库管理系统&#xff1a;由天津神…

【Python】Python知识总结浅析

Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年首次发布。它以简洁的语法和强大的功能著称&#xff0c;适用于多种应用场景&#xff0c;包括Web开发、数据分析、人工智能、自动化脚本等。 易于学习和使用&#xff1a;Python的语法简洁明了&#xff0c;适合初…

AEye激光雷达公司的战略调整与成本控制分析

AEye激光雷达公司的战略调整与成本控制分析 当地时间9月3日,美国激光雷达领域的知名上市公司AEye在其向美国证券交易委员会(SEC)提交的8-K报告中披露了一项重大战略调整措施。报告指出,作为公司全面成本控制计划的一部分,AEye已对员工总数进行了大幅缩减,减少比例约达三分…

容器领航者:Kubernetes集群部署秘籍

目录 前言 一、ubernetes简介 1.1 应用部署方式演变 1.2 容器编排应用 1.3 kubenetes简介 二、Kubernetes核心概念 2.1 K8S各个组件用途 2.2 K8S 各组件之间的调用关系 2.3 K8S 的常用名词感念 2.4 k8S的分层架构​编辑 三、部署前的准备 3.1 k8s中容器的管理方式 3…

Java体系中的异常

1. 异常 1.1 异常的概念 在Java中&#xff0c;我们将程序执行过程中发生的不正常行为称为异常。异常是在程序运行过程中发生的错误或意外情况&#xff0c;它打破了程序的正常执行流程。在Java中通过面向对象的编程思想&#xff0c;我们也将这些扰乱程序正常执行的行为用类组织…