赞
踩
by 晖汪汪 仅供参考
题型参考(猜测)
Transformer的核心组件是什么?
Self-Attention
:自注意力机制Self Attention
机制,并发明了Transformer
。Transformer
后来成为GPT
和BERT
的基石。为什么Transformer如此出众?
并行计算: 与RNN不同,Transformer可以并行处理整个输入序列,从而提高计算效率。
自注意力机制能够捕捉全局依赖关系,适用于长序列数据,虽然LSTM和GRU说是有更长时的记忆能力,但是还是远远不及自注意力机制(可以说自注意力机制只受限于计算资源)。
位置编码: Transformer引入了位置编码来保留序列信息,解决了模型本身不含位置信息的问题。
Transformer小总结:
Transformer 与 RNN 不同,可以比较好地并行训练;
Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding(位置编码), 否则 Transformer 就是一个词袋模型;
Transformer 的重点是 Self-Attention
结构,其中用到的
Q
、
K
、
V
Q、K、V
Q、K、V矩阵通过输入进行线性变换得到;
Transformer 中 Multi-Head Attention
中有多个 Self-Attention
,可以捕获单词之间多种维度上的相关系数 attention
分数。
其损失函数是交叉熵损失(Cross-Entropy Loss),公式如下:
L
=
−
1
N
∑
i
=
1
N
log
P
(
w
i
∣
w
1
,
w
2
,
…
,
w
i
−
1
)
\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \log P(w_i | w_1, w_2, \ldots, w_{i-1})
L=−N1i=1∑NlogP(wi∣w1,w2,…,wi−1)
N
N
N是序列的长度,
w
i
w_i
wi 是第
i
i
i个词,
P
(
w
i
∣
w
1
,
w
2
,
…
,
w
i
−
1
)
P(w_i | w_1, w_2, \ldots, w_{i-1})
P(wi∣w1,w2,…,wi−1)是模型预测的第
i
i
i 个词的概率。
下图是《Attention is all you need》中提出的Transformer
网络结构。
- 自注意力机制是如何演算的?(应该会考一个解答题) - 这里的注意力机制应该主要指缩放点积注意力。 - 点积操作要求查询和键*具有相同的长度
d
d
d,基于个
n
n
n个查询
和
m
m
m个键-值
对计算注意力(
n
个
q
,
m
个
k
−
v
n个q,m个k-v
n个q,m个k−v) 其中查询和键的长度为
d
d
d,值的长度为
v
v
v。 查询
Q
∈
R
n
×
d
\mathbf{Q} \in \mathbb{R}^{n \times d}
Q∈Rn×d、 键
K
∈
R
m
×
d
\mathbf{K}\in \mathbb{R}^{m\times d}
K∈Rm×d和值
V
∈
R
m
×
v
\mathbf{V} \in \mathbb{R}^{m\times v}
V∈Rm×v的缩放点积注意力为:
Attention
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
)
V
∈
R
n
×
v
\text{Attention}(Q, K, V) =softmax(\frac{\mathbf{Q}\mathbf{K}^{T}}{\sqrt{d}})\mathbf{V} \in \mathbb{R}^{n \times v}
Attention(Q,K,V)=softmax(d
QKT)V∈Rn×v
其中,
s
o
f
t
m
a
x
softmax
softmax的运算如下。假设输入向量
z
=
[
z
1
,
z
2
,
…
,
z
K
]
\mathbf{z} = [z_1, z_2, \ldots, z_K]
z=[z1,z2,…,zK](个人估计是不用算出
s
o
l
f
m
a
x
solfmax
solfmax的,因为没说让带计算器):
s
o
f
t
m
a
x
(
z
i
)
=
e
z
i
∑
j
=
1
K
e
z
j
softmax(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}
softmax(zi)=∑j=1Kezjezi
Transformer的残差连接是用来做什么的?
梯度消失
问题,并且加速模型的训练。ReLu
**解决梯度爆炸
问题。ReLu
、层归一化(Add&Norm
)。Transformer的重要组件 F N N 前馈神经网络 FNN前馈神经网络 FNN前馈神经网络的作用是什么?
每个Transformer层包括一个位置独立的前馈神经网络(FNN),用于进一步处理和转换自注意力机制输出的特征。
具体地说,因为Attention
没有非线性的特性,**前馈神经网络(FNN)**中的激活函数
可以给模型提供非线性的性质,使得模型可以拟合和学习复杂的函数关系。
输入为 N N N,那么Transformer的复杂度如何计算?(可能会考一个解答题)
Transformer的复杂度决定于:
自注意力机制(Self-Attention Mechanism)
计算注意力权重和应用这些权重进行加权求和。
Q = X W Q , K = X W K , V = X W V Q = XW_Q, \quad K = XW_K, \quad V = XW_V Q=XWQ,K=XWK,V=XWV
X X X是输入矩阵, W Q , W K , W V W_Q,W_K,W_V WQ,WK,WV是权重矩阵。复杂度是 O ( N ⋅ d 2 ) O(N \cdot d^2) O(N⋅d2),其中 d d d是输入向量的维度。
计算查询矩阵
Q
Q
Q和键矩阵
K
K
K的点积,并应用$ softmax$
Attention
(
Q
,
K
,
V
)
=
softmax
(
Q
K
T
d
k
)
V
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V
Attention(Q,K,V)=softmax(dk
QKT)V
复杂度是
O
(
N
2
⋅
d
)
O(N^2 \cdot d)
O(N2⋅d),其中
d
k
d_k
dk是键向量的维度,通常与
d
d
d相同。
将注意力权重与值矩阵相乘
复杂度是 O ( N 2 ⋅ d ) O(N^2 \cdot d) O(N2⋅d)。
则总复杂度为 O ( N ⋅ d 2 + N 2 ⋅ d ) O(N \cdot d^2 + N^2 \cdot d) O(N⋅d2+N2⋅d)
前馈神经网络(FNN)
来自于两层全连接层的计算:
Layer 1
ReLU ( X W 1 + b 1 ) \text{ReLU}(XW_1 + b_1) ReLU(XW1+b1)
复杂度 O ( N ⋅ d ⋅ d f f ) O(N \cdot d \cdot d_{ff}) O(N⋅d⋅dff),其中 d f f d_{ff} dff是前馈神经网络的隐藏层维度,通常大于 d d d。
Layer 2
( X W 1 + b 1 ) W 2 + b 2 (XW_1 + b_1)W_2 + b_2 (XW1+b1)W2+b2
复杂度 O ( N ⋅ d ⋅ d f f ) O(N \cdot d \cdot d_{ff}) O(N⋅d⋅dff)
Total
O ( N ⋅ d ⋅ d f f ) O(N \cdot d \cdot d_{ff}) O(N⋅d⋅dff)
Transformer模型的总体复杂度
O ( N ⋅ d 2 + N 2 ⋅ d + N ⋅ d ⋅ d f f ) O(N \cdot d^2 + N^2 \cdot d + N \cdot d \cdot d_{ff}) O(N⋅d2+N2⋅d+N⋅d⋅dff)
通常, d f f d_{ff} dff比 d d d大一些,例如 d f f = 4 d d_{ff} = 4d dff=4d。因此,总复杂度可以简化为:
O ( N ⋅ d 2 + N 2 ⋅ d ) O(N \cdot d^2 + N^2 \cdot d) O(N⋅d2+N2⋅d)
对于较长的输入序列,复杂度主要由自注意力机制决定:
O ( N 2 ⋅ d ) O(N^2 \cdot d) O(N2⋅d)
看不懂上面没关系——个人猜测,考试考以下两种简单的情况:
假如输入
N
=
1
N = 1
N=1个词到Transformer中,每个词到Embedding
为
d
d
d维,则上面的复杂度可以简化为:
O ( d 2 ) + O ( d ) + O ( d × d f f ) O(d^2) + O(d) + O(d \times d_{ff}) O(d2)+O(d)+O(d×dff)
即 O ( d 2 ) O(d^2) O(d2)
假如输入
N
N
N个词到Transformer中,每个词到Embedding
为
d
d
d维,则上面的复杂度可以简化为:
O ( N ⋅ d 2 + N 2 ⋅ d + N ⋅ d ⋅ d f f ) O(N \cdot d^2 + N^2 \cdot d + N \cdot d \cdot d_{ff}) O(N⋅d2+N2⋅d+N⋅d⋅dff)
即 O ( N ⋅ d 2 + N 2 ⋅ d ) O(N \cdot d^2 + N^2 \cdot d) O(N⋅d2+N2⋅d)
Transformer中什么机制让解码器关注到编码器?**
Encoder- Decoder Attention Layers
**层中使用编码器传过来的
K
和
V
K和V
K和V,这有助于解码器将注意力集中在输入序列中的适当位置。Cross-Attention
),也可以叫编解机制: 解码器在计算注意力时,不仅关注解码器自身的输入,还会结合编码器的输出。多重注意力机制是用来做什么的?
Mask - Attention是用来做什么的?
BERT
和 GPT
有什么相同点和不同点?
相同点
:
Transformer架构:BERT
和GPT
都基于Transformer架构,具体来说:
BERT
使用的是Transformer的**编码器(Encoder)**部分;GPT
使用的是Transformer的**解码器(Decoder)**部分。预训练和微调:两者都采用了预训练和微调的策略。模型首先在大量无标注的文本数据上进行预训练,然后在特定任务上进行微调。
自注意力机制:两者都使用了自注意力机制(self-attention),这使得它们能够捕捉句子中不同词之间的关系。
输入形式:
BERT
使用WordPiece
,GPT
使用Byte Pair Encoding(BPE)
。这种方法有助于处理**未登录词(OOV)**和稀有词。不同点
(更重要):
架构有差异:
BERT
:使用的是Transformer的编码器部分,侧重于理解句子上下文。BERT是双向的**(bidirectional)**,它在预训练时同时考虑了词汇的左侧和右侧上下文。GPT
:使用的是Transformer的解码器部分,主要用于生成任务。GPT是单向的**(unidirectional)**,即在预训练时只考虑了词汇的左侧上下文。预训练目标不同(训练方式):
BERT
:采用了**掩蔽语言模型(Masked Language Model, MLM)和下一句预测(Next Sentence Prediction, NSP)**作为预训练目标。MLM通过随机掩蔽句子中的一些词汇并要求模型预测这些词汇来进行训练,NSP通过让模型判断两个句子是否是连续的来进行训练。GPT
:采用了自回归语言模型(Auto-regressive Language Model),通过预测当前词汇的下一个词来进行训练。输入形式:
特殊标识符:
**BERT
**使用特殊的CLS
(
[
C
L
S
]
)
([CLS])
([CLS])标识符作为句子开始的标识,用于分类任务的输出。使用SEP
(
[
S
E
P
]
)
([SEP])
([SEP])标识符分隔不同的句子。
**GPT
**使用一个特殊的起始标识符(如
<
∣
e
n
d
o
f
t
e
x
t
∣
>
<|endoftext|>
<∣endoftext∣>)来标记文本的开始或结束,但在一般的句子生成中,标记符的使用较少。
输入格式:
BERT
:输入通常包括一个句子或两个句子(如句子对分类任务)。对于单句输入,格式为:
[
C
L
S
]
S
e
n
t
e
n
c
e
[
S
E
P
]
[CLS] Sentence [SEP]
[CLS]Sentence[SEP]。对于句子对输入,格式为:
[
C
L
S
]
S
e
n
t
e
n
c
e
A
[
S
E
P
]
S
e
n
t
e
n
c
e
B
[
S
E
P
]
[CLS] Sentence A [SEP] Sentence B [SEP]
[CLS]SentenceA[SEP]SentenceB[SEP]。
GPT:输入通常是一个连续的文本序列,没有明确的句子分隔符。生成任务中的输入格式为:Prompt
(提示词)加上模型生成的文本。
预处理方式
BERT
需要将输入文本分成固定长度的片段(chunks),并在预训练和微调阶段进行掩蔽处理(masked token)。
GPT
输入文本可以是任意长度的序列,不需要固定长度的分段。在预训练阶段,它通过自回归模型预测下一个词,不进行掩蔽处理。
应用场景不同:
BERT:更适合于理解任务,如文本分类、问答系统、命名实体识别等,因为其双向编码器能够更好地理解句子整体结构。
GPT:更适合于生成任务,如文本生成、对话生成等,因为其自回归解码器能够连续生成文本。
BERT和 GPT分别是如何搭建的?
BERT
(Bidirectional Encoder Representations from Transformers)
主要由Transformer的编码器部分构成。
输入表示:
Token Embeddings:将输入的词转换为词嵌入向量。
Segment Embeddings:如果输入包含两个句子,则添加段嵌入来区分不同的句子。Segment A和Segment B的嵌入向量不同。
Position Embeddings:添加位置嵌入来表示输入词在序列中的位置。也就是位置编码。
T
o
t
a
l
_
E
m
b
e
d
d
i
n
g
=
T
o
k
e
n
_
E
m
b
e
d
d
i
n
g
+
S
e
g
m
e
n
t
_
E
m
b
e
d
d
i
n
g
+
P
o
s
i
t
i
o
n
_
E
m
b
e
d
d
i
n
g
Total\_Embedding =Token\_Embedding + Segment\_Embedding + Position\_Embedding
Total_Embedding=Token_Embedding+Segment_Embedding+Position_Embedding
编码器堆栈:
预训练任务:
GPT
(Generative Pre-trained Transformer)
主要由Transformer的解码器部分构成。其搭建方式如下
输入表示:
Token Embeddings:将输入的词转换为词嵌入向量。
Position Embeddings:添加位置嵌入来表示输入词在序列中的位置。
T
o
t
a
l
_
E
m
b
e
d
d
i
n
g
s
=
T
o
k
e
n
_
E
m
b
e
d
d
i
n
g
s
+
P
o
s
i
t
i
o
n
_
E
m
b
e
d
d
i
n
g
s
Total\_Embeddings =Token\_Embeddings + Position\_Embeddings
Total_Embeddings=Token_Embeddings+Position_Embeddings
解码器堆栈:
预训练任务:
位置编码(Position Encoding)是用来做什么的?
如何设计一个文本分类系统?(如姓氏分类)
1.数据收集与准备
①训练语料的选择:收集包含国籍姓氏的文本数据,训练数据应该以表格形式组织,每行代表一个数据(即姓氏),至少两列,一列是姓氏本身,另一列对应国籍标签。
Surname | Nationality | |
---|---|---|
1 | Guo | Chinese |
2 | Kore | English |
②预处理文本数据:例如去除特殊字符、处理缺失值等
2.特征提取
向量化:将姓氏转化为数值向量,通常包括:
①One-hot embedding
②Word embedding:使用预训练的词嵌入模型(如word2vec
)来获取姓氏的向量表示
3.模型选择
选择前馈神经网络:MLP或CNN模型。
3.模型训练
训练/验证/测试拆分:将数据集分为训练集、验证集和测试集,常见的比例是70%训练,15%验证,15%测试
模型输入:姓氏文本的嵌入表示以及对应的国籍标签 。
模型输出:损失值及梯度信息。
训练目标:通过最小化交叉熵损失函数
来训练模型。
优化算法:采用Adam
、SGD
等优化算法进行梯度下降,更新模型参数。
正则化:应用dropout
、权重衰减等技术防止过拟合
4.模型预测
给定一个姓氏,预测出概率最高的一个国籍或最高的几个国籍。
4.模型评估与优化
评估指标:使用准确率
、精确率
、召回率
和
F
1
−
S
c
o
r
e
F_1-Score
F1−Score等指标来评估模型性能
超参数调整:学习率、批次大小、迭代次数等超参数的调优
如何设计一个机器翻译系统(如从英文到中文)?
1.数据收集与准备
①训练语料的选择:收集大规模中英文平行语料,语料的格式例如:
中文句子
1
E
n
g
l
i
s
h
_
S
e
n
t
e
n
c
e
_
1
中文句子
2
E
n
g
l
i
s
h
_
S
e
n
t
e
n
c
e
_
2
中文句子1 \quad English\_Sentence\_1 \\ 中文句子2 \quad English\_Sentence\_2
中文句子1English_Sentence_1中文句子2English_Sentence_2
②预处理文本数据:对中英文文本进行预处理,包括分词、去除停用词、标点符号等,将文本转化为词语的列表
③为中文和英文分别建立词汇表,将单词映射为唯一的索引,以便后续转换为数值表示,可以进行词嵌入。
2.模型选择
选择神经网络模型、采用Seq2Seq
模型,可以选择带有注意力机制的Transformer
模型。
3.模型训练
模型输入:位置编码与中文句子的嵌入向量相加,形成最终的输入序列
模型输出:英文句子的嵌入表示
训练目标:通过最小化翻译偏差
(如BLEU
)或交叉熵损失函数
来训练模型
优化算法:采用Adam
、SGD
等优化算法进行梯度下降,更新模型参数
正则化:应用dropout
、权重衰减等技术防止过拟合
4.模型评估与优化
评估指标:使用BLEU分数
(Bilingual Evaluastion Understudy)来衡量翻译结果的质量和准确性
超参数调整:学习率、批量大小、层数、注意力头数等超参数的调优
5.模型推理
输入中文句子,模型返回英文翻译结果
6.存储推理模型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。