【自然语言处理 | Transformer】Transformer:Attention is All You Need论文讲解

news2024/11/19 15:19:29

Transformer由论文《Attention is All You Need》提出:

在这里插入图片描述

论文地址为:

https://arxiv.org/pdf/1706.03762.pdf

文章目录

  • 一、Transformer 整体结构
  • 二、Transformer 的输入
    • 2.1 单词 Embedding
    • 2.2 位置 Embedding
  • 三、Self-Attention(自注意力机制)
    • 3.1 Self-Attention 结构
    • 3.2 Q, K, V 的计算
    • 3.3 Self-Attention 的输出
    • 3.4 Multi-Head Attention
  • 四、Encoder 结构
    • 4.1 Add & Norm
    • 4.2 Feed Forward
    • 4.3 组成 Encoder
  • 五、Decoder 结构
    • 5.1 第一个 Multi-Head Attention
    • 5.2 第二个 Multi-Head Attention
    • 5.3 Softmax 预测输出单词
  • 六、Transformer 总结

一、Transformer 整体结构

首先介绍 Transformer 的整体结构,下面是 Transformer 用于中英文翻译的整体结构:

在这里插入图片描述

上图是 Transformer 的整体结构,左图 Encoder 和右图 Decoder

可以看到 TransformerEncoderDecoder 两个部分组成,EncoderDecoder 都包含 6 个 blockTransformer 的工作流程大体如下:

第一步:获取输入句子的每一个单词的表示向量 X,X由单词的 EmbeddingEmbedding 就是从原始数据提取出来的 Feature) 和单词位置的 Embedding 相加得到。

在这里插入图片描述

第二步:将得到的单词表示向量矩阵 (如上图所示,每一行是一个单词的表示 x x x) 传入 Encoder 中,经过 6 个 Encoder block 后可以得到句子所有单词的编码信息矩阵 C C C,如下图。单词向量矩阵用 X n × d X_{n \times d} Xn×d表示, n n n 是句子中单词个数, d d d 是表示向量的维度 (论文中 d = 512 d = 512 d=512)。每一个 Encoder block 输出的矩阵维度与输入完全一致。

在这里插入图片描述
上图展示了 Transformer Encoder 编码句子信息。

第三步:将 Encoder 输出的编码信息矩阵 C C C 传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 1~ i 翻译下一个单词 i + 1 i + 1 i+1,如下图所示。在使用的过程中,翻译到单词 i + 1 i + 1 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i + 1 i + 1 i+1 之后的单词。

在这里插入图片描述
Transofrmer Decoder 预测。

上图 Decoder 接收了 Encoder 的编码矩阵 C C C,然后首先输入一个翻译开始符 “”,预测第一个单词 “I”;然后输入翻译开始符 “” 和单词 “I”,预测单词 “have”,以此类推。这是 Transformer 使用时候的大致流程,接下来是里面各个部分的细节。

二、Transformer 的输入

Transformer 中单词的输入表示 x x x 由单词 Embedding 和位置 EmbeddingPositional Encoding)相加得到。

在这里插入图片描述

2.1 单词 Embedding

单词的 Embedding 有很多种方式可以获取,例如可以采用 Word2VecGlove 等算法预训练得到,也可以在 Transformer 中训练得到。

2.2 位置 Embedding

Transformer 中除了单词的 Embedding,还需要使用位置 Embedding 表示单词出现在句子中的位置。因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于 NLP 来说非常重要。

所以 Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。

位置 Embedding 用 PE表示,PE 的维度与单词 Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,计算公式如下:
P E ( p o s , 2 i ) = sin ⁡ ( p o s / 1000 0 2 i / d ) P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s / 1000 0 2 i / d ) PE_{(pos,2i)}=\sin(pos / 10000^{2i / d})\\ PE_{(pos,2i+1)}=\cos(pos / 10000^{2i / d}) PE(pos,2i)=sin(pos/100002i/d)PE(pos,2i+1)=cos(pos/100002i/d)
其中,pos表示单词在句子中的位置, d d d表示 PE 的维度(与词 Embedding 一样), 2 i 2i 2i表示偶数的维度, 2 i + 1 2i+1 2i+1表示奇数维度(即 2 i ≤ d 2i \leq d 2id 2 i + 1 ≤ d 2i+1 \leq d 2i+1d)。使用这种公式计算 PE 有以下的好处:

  • 使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding
  • 可以让模型容易地计算出相对位置,对于固定长度的间距 k k k P E ( p o s + k ) PE_{(pos + k)} PE(pos+k) 可以用 P E ( p o s ) PE_{(pos)} PE(pos) 计算得到。

因为 sin ⁡ ( A + B ) = sin ⁡ ( A ) cos ⁡ ( B ) + cos ⁡ ( A ) sin ⁡ ( B ) , cos ⁡ ( A + B ) = cos ⁡ ( A ) cos ⁡ ( B ) − sin ⁡ ( A ) sin ⁡ ( B ) \sin(A + B) = \sin(A) \cos(B) + \cos(A) \sin(B), \cos(A + B) = \cos(A) \cos(B) - \sin(A) \sin(B) sin(A+B)=sin(A)cos(B)+cos(A)sin(B),cos(A+B)=cos(A)cos(B)sin(A)sin(B)

将单词的词 Embedding 和位置 Embedding 相加,就可以得到单词的表示向量 x x x x x x 就是 Transformer 的输入。

三、Self-Attention(自注意力机制)

在这里插入图片描述
上图是论文中 Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block

红色圈中的部分为 Multi-Head Attention,是由多个 Self-Attention 组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

因为 Self-AttentionTransformer 的重点,所以我们重点关注 Multi-Head Attention 以及 Self-Attention,首先详细了解一下 Self-Attention 的内部逻辑。

3.1 Self-Attention 结构

在这里插入图片描述

上图是 Self-Attention 的结构,在计算的时候需要用到矩阵 Q Q Q(查询), K K K(键值), V V V(值)。

在实际中,Self-Attention 接收的是输入(单词的表示向量 x x x 组成的矩阵 X X X ) 或者上一个 Encoder block 的输出。而 Q Q Q, K K K, V V V正是通过 Self-Attention 的输入进行线性变换得到的。

3.2 Q, K, V 的计算

Self-Attention 的输入用矩阵 X X X 进行表示,则可以使用线性变阵矩阵 W Q W_Q WQ, W K W_K WK, W V W_V WV 计算得到 Q Q Q, K K K, V V V。计算如下图所示,注意 X X X, Q Q Q, K K K, V V V 的每一行都表示一个单词。

在这里插入图片描述

3.3 Self-Attention 的输出

得到矩阵 Q Q Q, K K K, V V V 之后就可以计算出 Self-Attention 的输出了,计算的公式如下:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}}) Attention(Q,K,V)=softmax(dk QKT)
d k d_k dk Q Q Q K K K 矩阵的列数,即向量维度。

公式中计算矩阵 Q Q Q K K K 每一行向量的内积,为了防止内积过大,因此除以 d k d_k dk 的平方根。 Q Q Q 乘以 K K K 的转置后,得到的矩阵行列数都为 n n n n n n 为句子单词数,这个矩阵可以表示单词之间的 attention 强度。下图为 Q Q Q 乘以 K T K^T KT,1234 表示的是句子中的单词。

在这里插入图片描述
Q Q Q 乘以 K K K 的转置的计算】

得到 Q K T QK^T QKT 之后,使用 Softmax 计算每一个单词对于其他单词的 attention 系数,公式中的 Softmax 是对矩阵的每一行进行 Softmax,即每一行的和都变为 1。

在这里插入图片描述
【对矩阵的每一行进行 Softmax

得到 Softmax 矩阵之后可以和 V V V 相乘,得到最终的输出 Z Z Z

在这里插入图片描述
Self-Attention 输出】

上图中 Softmax 矩阵的第 1 行表示单词 1 与其他所有单词的 attention 系数,最终单词 1 的输出 Z 1 Z_1 Z1 等于所有单词 i i i 的值 V i V_i Vi 根据 attention 系数的比例加在一起得到,如下图所示:
在这里插入图片描述
Z i Z_i Zi 的计算方法】

3.4 Multi-Head Attention

在上一步,我们已经知道怎么通过 Self-Attention 计算得到输出矩阵 Z Z Z,而 Multi-Head Attention 是由多个 Self-Attention 组合形成的,下图是论文中 Multi-Head Attention 的结构图:

在这里插入图片描述

从上图可以看到 Multi-Head Attention 包含多个 Self-Attention 层,首先将输入 X X X 分别传递到 h h h 个不同的 Self-Attention 中,计算得到 h h h 个输出矩阵 Z Z Z。下图是 h = 8 h = 8 h=8 时候的情况,此时会得到 8 个输出矩阵 Z Z Z

在这里插入图片描述

得到 8 个输出矩阵 Z 1 Z_1 Z1 Z 8 Z_8 Z8 之后,Multi-Head Attention 将它们拼接在一起 (Concat),然后传入一个 Linear 层,得到 Multi-Head Attention 最终的输出 Z Z Z

在这里插入图片描述
可以看到 Multi-Head Attention 输出的矩阵 Z Z Z 与其输入的矩阵 X X X 的维度是一样的。

四、Encoder 结构

在这里插入图片描述
Transformer Encoder block

上图红色部分是 TransformerEncoder block 结构,可以看到是由 Multi-Head Attention, Add & Norm, Feed Forward, Add & Norm 组成的。刚刚已经了解了 Multi-Head Attention 的计算过程,现在了解一下 Add & NormFeed Forward 部分。

4.1 Add & Norm

Add & Norm 层由 AddNorm 两部分组成,其计算公式如下:
L a y e r N o r m ( X + M u l t i H e a d A t t e n t i o n ( X ) ) LayerNorm(X + MultiHeadAttention(X)) LayerNorm(X+MultiHeadAttention(X))
L a y e r N o r m ( X + F e e d F o r w a r d ( X ) ) LayerNorm(X + FeedForward(X)) LayerNorm(X+FeedForward(X))
其中 X X X 表示 Multi-Head Attention 或者 Feed Forward 的输入,MultiHeadAttention( X X X) 和 FeedForward( X X X) 表示输出 (输出与输入 X X X 维度是一样的,所以可以相加)。

Add X X X + MultiHeadAttention( X X X),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在 ResNet 中经常用到:

在这里插入图片描述

NormLayer Normalization,通常用于 RNN 结构,Layer Normalization 会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。

4.2 Feed Forward

Feed Forward 层比较简单,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数,对应的公式如下:
max ⁡ ( 0 , X W 1 + b 1 ) W 2 + b 2 \max(0, XW_1 + b_1)W_2 + b_2 max(0,XW1+b1)W2+b2
X X X 是输入,Feed Forward 最终得到的输出矩阵的维度与 X X X 一致。

4.3 组成 Encoder

通过上面描述的 Multi-Head Attention, Feed Forward, Add & Norm 就可以构造出一个 Encoder blockEncoder block 接收输入矩阵 X ( n × d ) X_{(n \times d)} X(n×d),并输出一个矩阵 O ( n × d ) O_{(n \times d)} O(n×d)。通过多个 Encoder block 叠加就可以组成 Encoder

第一个 Encoder block 的输入为句子单词的表示向量矩阵,后续 Encoder block 的输入是前一个 Encoder block 的输出,最后一个 Encoder block 输出的矩阵就是编码信息矩阵 C C C,这一矩阵后续会用到 Decoder 中。

在这里插入图片描述
Encoder 编码句子信息】

五、Decoder 结构

在这里插入图片描述
上图红色部分为 TransformerDecoder block 结构,与 Encoder block 相似,但是存在一些区别:

  • 包含两个 Multi-Head Attention 层;
  • 第一个 Multi-Head Attention 层采用了 Masked 操作;
  • 第二个 Multi-Head Attention 层的 K K K, V V V 矩阵使用 Encoder 的编码信息矩阵 C C C 进行计算,而 Q Q Q 使用上一个 Decoder block 的输出计算;
  • 最后有一个 Softmax 层计算下一个翻译单词的概率。

5.1 第一个 Multi-Head Attention

Decoder block 的第一个 Multi-Head Attention 采用了 Masked 操作,因为在翻译的过程中是顺序翻译的,即翻译完第 i i i 个单词,才可以翻译第 i + 1 i + 1 i+1 个单词。通过 Masked 操作可以防止第 i i i 个单词知道 i + 1 i + 1 i+1 个单词之后的信息。下面以 “我有一只猫” 翻译成 “I have a cat” 为例,了解一下 Masked 操作。

下面的描述中使用了类似 Teacher Forcing 的概念,不熟悉 Teacher Forcing 的童鞋可以参考以下上一篇文章 Seq2Seq 模型详解。在 Decoder 的时候,是需要根据之前的翻译,求解当前最有可能的翻译,如下图所示。首先根据输入 “” 预测出第一个单词为 “I”,然后根据输入 “ I” 预测下一个单词 “have”。

在这里插入图片描述

Decoder 预测】

Decoder 可以在训练的过程中使用 Teacher Forcing 并且并行化训练,即将正确的单词序列 ( I have a cat) 和对应输出 (I have a cat ) 传递到 Decoder。那么在预测第 i i i 个输出时,就要将第 i + 1 i + 1 i+1 之后的单词掩盖住,注意 Mask 操作是在 Self-AttentionSoftmax 之前使用的,下面用 0 1 2 3 4 5 分别表示 “ I have a cat ”。

第一步:是 Decoder 的输入矩阵和 Mask 矩阵,输入矩阵包含 “ I have a cat” (0, 1, 2, 3, 4) 五个单词的表示向量,Mask 是一个 5 × 5 5\times 5 5×5 的矩阵。在 Mask 可以发现单词 0 只能使用单词 0 的信息,而单词 1 可以使用单词 0, 1 的信息,即只能使用之前的信息。

在这里插入图片描述
【输入矩阵与 Mask 矩阵】

第二步:接下来的操作和之前的 Self-Attention 一样,通过输入矩阵 X X X 计算得到 Q Q Q, K K K, V V V 矩阵。然后计算 Q Q Q K T K^T KT 的乘积 Q K T QK^T QKT

在这里插入图片描述
Q Q Q 乘以 K K K 的转置】

第三步:在得到 Q K T QK^T QKT 之后需要进行 Softmax,计算 attention score,我们在 Softmax 之前需要使用 Mask 矩阵遮挡住每一个单词之后的信息,遮挡操作如下:
在这里插入图片描述
Softmax 之前 Mask

得到 Mask Q K T QK^T QKT 之后在 Mask Q K T QK^T QKT 上进行 Softmax,每一行的和都为 1。但是单词 0 在单词 1, 2, 3, 4 上的 attention score 都为 0。

第四步:使用 Mask Q K T QK^T QKT 与矩阵 V V V 相乘,得到输出 Z Z Z,则单词 1 的输出向量 Z 1 Z_1 Z1 是只包含单词 1 信息的。

在这里插入图片描述
Mask 之后的输出】

第五步:通过上述步骤就可以得到一个 Mask Self-Attention 的输出矩阵 Z i Z_i Zi ,然后和 Encoder 类似,通过 Multi-Head Attention 拼接多个输出 Z i Z_i Zi 然后计算得到第一个 Multi-Head Attention 的输出 Z Z Z Z Z Z 与输入 X X X 维度一样。

5.2 第二个 Multi-Head Attention

Decoder block 第二个 Multi-Head Attention 变化不大, 主要的区别在于其中 Self-Attention K K K, V V V 矩阵不是使用 上一个 Decoder block 的输出计算的,而是使用 Encoder 的编码信息矩阵 C C C 计算的。

根据 Encoder 的输出 C C C 计算得到 K K K, V V V,根据上一个 Decoder block 的输出 Z Z Z 计算 Q Q Q (如果是第一个 Decoder block 则使用输入矩阵 X X X 进行计算),后续的计算方法与之前描述的一致。

这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息 (这些信息无需 Mask)。

5.3 Softmax 预测输出单词

Decoder block 最后的部分是利用 Softmax 预测下一个单词,在之前的网络层我们可以得到一个最终的输出 Z Z Z,因为 Mask 的存在,使得单词 0 的输出 Z 0 Z_0 Z0 只包含单词 0 的信息,如下:

在这里插入图片描述
Decoder Softmax 之前的 Z Z Z

Softmax 根据输出矩阵的每一行预测下一个单词:

在这里插入图片描述
Decoder Softmax 预测】

这就是 Decoder block 的定义,与 Encoder 一样,Decoder 是由多个 Decoder block 组合而成。

六、Transformer 总结

  • TransformerRNN 不同,可以比较好地并行训练;
  • Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding,否则 Transformer 就是一个词袋模型了;
  • Transformer 的重点是 Self-Attention 结构,其中用到的 Q Q Q, K K K, V V V 矩阵通过输出进行线性变换得到;
  • TransformerMulti-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score

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

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

相关文章

.net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃

目标 在一个网站内,用一套proto即提供gPRC 调用,又提供 Web API 调用。 实现方法 根据微软官方James Newton King(Newtonsoft.json 作者)的文章,.net7 里面提供了 JsonTranscoding 特性,只需要三步&#x…

听我一句劝,别去外包,干了6年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了6年的功能测试&…

NANK OE骨传导开放式蓝牙耳机发布,极致体验拉满!

近日,中国专业音频品牌NANK南卡发布了全新一代——骨传导开放式蓝牙耳机NANK OE,耳机采用了传统真无线和骨传导的结合方式,带来更加舒适的佩戴体验和音质升级,同时还支持单双耳自由切换,全新的设计收获了市场的喜爱和认…

SignOff Criteria——POCV(Parametric OCV) introduction

文章目录 1. O v e r v i e w Overview Overview2. P O C V A n a l y s i s POCV\ Analysis POCV Analysis3. P O C V F l o w POCV\ Flow POCV Flow4. P O C V R e p o r t POCV\ Report POCV Report 1. O v e r v i e w Overview Overview P r o c e s s v a r i a t i…

数据发送流程

在发送模式下,UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR),TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位,可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…

JavaScript原型链污染学习记录

1.JS原型和继承机制 0> 原型及其搜索机制 NodeJS原型机制,比较官方的定义: 我们创建的每个函数都有一个 prototype(原型)属性,这个属性是一个指针,指向一个对象, 而这个对象的用途是包含可…

为什么用Selenium做自动化测试,你真的知道吗?

目录 手工测试的问题 为什么用自动化 选择合适的测试方式 什么时候引入自动化测试 以Jmeter为代表的测试工具 编程能力既重要又不重要 为什么是Selenium 没有最好的技术,只有合适的技术 web自动化测试效率不高 手工测试的问题 手工操作点点点借助的是人脑的…

知识变现海哥|这3种课程定价最容易爆单

这3种课程定价最容易爆单 一门课怎么才能卖到100万,定价很关键。我卖了160万的课,总结了3种课程定价,组合起来最容易爆单!引流课定价0、1、9.9、19.9一般讲3天结束,用低价吸引大量潜在学员 信任课定价99、699、999等…

C++—非递归【循环】遍历二叉树(前序,中序,后序)思路讲解+代码实现

非递归遍历二叉树 前序中序后序 接下来我们在研究如何使用循环实现遍历二叉树时,以下面的二叉树为例: 在下文的讲解中,不对如何构建这颗二叉树做讲解,直接给出代码,如果有不懂的地方欢迎私信我。 文章中的完整源代码链…

一篇文章搞定《Android内存泄漏》

------《Android内存泄漏》 什么是内存泄漏常见的内存泄漏以及规避方式单例模式引用Activity非静态内部类注册的反注册定时器TimerWebView的内存泄漏资源未关闭属性动画 怎么定位内存泄漏LeakCanary接入:使用:检测: Android Proflier开始检测…

Linux驱动编程(分层分离编程思想)

1、面向对象 ⚫ 字符设备驱动程序抽象出一个 file_operations 结构体; ⚫ 我们写的程序针对硬件部分抽象出 led_operations 结构体。 2、分层 上层实现硬件无关的操作,比如注册字符设备驱动:leddrv.c 下层实现硬件相关的操作,比如…

【R语言】鉴于计算10亿以内训练模型记录for循环的加速

文章目录 1 前言2 几个循环2.1 100以内的和2.2 100以内奇数和/偶数和 3 多重循环3.1 向量化3.2 合并循环3.3 apply函数3.4 矩阵运算3.5 foreach分解任务 4 讨论 1 前言 笔者主力机是MBAM1芯片(8256),某个下午巩固循环突然思考到个问题&#…

App违反Google数据安全政策,解决方案

前言 google隐私政策阶段性会进行更新,时长关注隐私政策变化,避免app被强制下架,影响后续运营工作。 邮件内容 摘录邮件详情 我们在以下区域发现了问题: SPLIT_BUNDLE 2:政策声明,数据安全部分:“https:…

中国社科院与美国杜兰大学金融管理硕士项目,引领你走在金融行业前沿

作为金融领域从业人员时刻都在关注行业最新资讯,只有掌握一手的前沿讯息,才能在职场上无往不胜。针对在职的你,如何利用业余时间让自己更增值呢,中国社科院与美国杜兰大学金融管理硕士项目引领你走在金融行业前沿。 金融管理硕士…

ecology9-嵌入第三方系统,特定情况下在嵌套页提示“登录超时,请重新登录”

ecology9-嵌入第三方系统,特定情况下在嵌套页提示“登录超时,请重新登录” 问题描述尝试1尝试2尝试3√尝试4参考 问题描述 A系统对接了ecology9的单点登录。A系统在某个边栏菜单嵌入ecology9的流程页面。当清空浏览器缓存时,A系统在单点登录…

从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题

目录 1. 日期类详细实现 1.1 构造函数和打印函数 1.2 六个比较运算符重载 1.3 日期天数 和 日期天数 1.4 日期 - 天数 和 日期 - 天数 1.5 日期 和 日期 1.6 日期-- 和 --日期 1.7 日期 - 日期 operator- 1.8 打印*this是星期几 2. 日期类完整代码 Date.h: Date.…

计算机智能系统有哪些SCI期刊? - 易智编译EaseEditing

计算机智能系统是计算机科学中的一个重要分支,其主要研究计算机智能和人工智能等方面的问题。以下是一些SCI期刊的推荐: IEEE Transactions on Neural Networks and Learning Systems: 该期刊是IEEE计算智能学会的官方期刊,涵盖了…

JavaWeb——数据链路层详解

目录 一、以太网 1、定义 2、以太网格式帧 二、MTU 1、定义 2、MTU对IP协议的影响 3、MTU对UDP协议的影响 4、MTU对TCP协议的影响 三、ARP协议 1、定义 2、ARP协议的作用 3、ARP协议的工作流程 一、以太网 1、定义 "以太网" 不是一种具体的网络&#xff…

谷歌浏览器 | Chrome DevTools系统学习篇-概述

Chrome DevTools是一套直接内置到谷歌Chrome浏览器的web开发工具。DevTools可以帮助您即时编辑页面并快速诊断问题,最终帮助您更快地构建更好的网站。我们今天的概述主要讲述谷歌浏览器的日常使用和几大常见控制面板的介绍。 目录 1.打开谷歌浏览器 2.谷歌浏览器的…

MySQL 页、页结构、页目录、索引

MySQL中,数据存到了什么地方? 存储到了硬盘的文件上,被称为:数据文件 或 表空间 每个数据库都是由 一组数据文件 组成,这些文件包含了:所有表、索引、其他相关对象的数据 MySQL 以什么样的方式访问&#…