内容来自:https://datawhalechina.github.io/base-llm
前情提要:
词嵌入技术将每个独立的词元转换成一个静态的、稠密的词向量,这解决了文本数值化的问题。
接下来的问题是如何从一个词向量序列中,有效地提取整个序列的特征。即将一句话中的词向量融合成一个能代表整句指令含义的"文本向量"并送入下一阶段。
如果使用词袋模型,将所有词向量相加或取平均,就完全忽略了语序信息,无法体现出不同的词的权重
另一个想法是使用全连接网络(Fully Connected Network, FCN)来处理这些词向量,它们处理词向量的先后顺序有两种方式
一种是先对一句话中的所有词向量求和,然后再将这个和送入全连接网络,但是这样和直接对词向量求和没有本质区别,仍然丢失了语序和权重信息。很容易想到,应该用另一种顺序,即先对每个词向量进行一次FCN变换,然后再将变换后的向量相加。
以下内容来自Qwen-Coder
将词元(Token)使用全连接层(Fully Connected Layer,也叫线性层 Linear Layer 或 Dense Layer)处理,是深度学习模型(尤其是自然语言处理模型)中的一个常见步骤。这样做通常会产生以下几种效果:
- 维度变换 (Dimensionality Transformation):
- 最直接的效果是改变向量的维度。输入的词元通常是一个固定长度的向量(例如,来自嵌入层 `Embedding` 的 d 维向量)。全连接层可以将其映射到另一个维度,可能是更高维(用于提取更复杂的特征)、更低维(用于降维或压缩信息)或者保持相同维度(但变换空间)。
- 例如,如果词元嵌入是 512 维,经过一个权重矩阵为 512x768 的全连接层后,输出向量就变成了 768 维。
- 特征提取与转换 (Feature Extraction and Transformation): >
- 全连接层通过对输入向量的每个元素进行加权求和并加上偏置,可以捕捉输入特征之间的线性组合关系。虽然单个 FC 层只能进行线性变换,但它改变了原始嵌入向量的表示空间,使得新的向量表示可能更适合后续的任务(如分类、序列建模等)。
- 它可以被视为对原始词元信息的一种重新编码或投影,使其进入一个新的表示空间。
- 引入非线性(当结合激活函数时):
- 通常,全连接层后面会跟一个**非线性激活函数**(如 ReLU, GELU, Tanh 等)。在这种情况下,全连接层先进行线性变换,激活函数再引入非线性因素。这是神经网络具备强大表达能力的关键。此时,整个"FC + Activation"模块能够学习输入数据中更复杂、非线性的模式。
- 即使没有显式的激活函数,多个堆叠的全连接层也能模拟非线性变换。
.4. 为下游任务准备 (Preparation for Downstream Tasks):
- 在 NLP 任务中,原始的词元嵌入可能并不直接适用于最终的预测任务。通过全连接层可以将这些嵌入转换成适合特定任务(如文本分类、命名实体识别、机器翻译等)的特征表示。例如,在 BERT 等模型的输出端,通常会有一个额外的全连接层将隐藏状态映射到词汇表大小的维度,用于 Masked Language Model 任务。
- 参数学习 (Parameter Learning):
- 全连接层的权重和偏置是模型参数,会在训练过程中通过反向传播进行学习和优化。这意味着模型会自动学习如何最好地将输入的词元表示转换为对当前任务更有用的表示。
总结 :
将词元通过全连接层处理,主要是为了变换其向量表示的维度和空间 ,使其能够适应模型架构的需求 (如进入下一层、进行任务特定的计算),并潜在地提取或转换出更有意义的特征。如果后面接有激活函数,则能增强模型的非线性表达能力。在包含 Transformer 架构的模型中,全连接层常常出现在 Multi-Head Attention 机制之后,构成 Feed-Forward Network (FFN) 的一部分。
通过RNN引入记忆,使网络记住在处理当前词元之前都看到了哪些信息,最终生成的文本向量是整个句子的动态上下文标识,捕获了整个句子的语序和语义信息,将一个变长的词向量序列编码成了一个蕴含序列信息的固定长度的特征向量
而RNN的问题在其内部状态的更新方式,每一步的新信息都会与旧信息无差别地混合,这会造成无论信息重要与否,都会在反向传播中形成梯度积累导致梯度信号地衰减或爆炸。LSTM赋予网络自行决定信息取舍的额能力,不再强制地混合所有信息,二十引入门控机制,让模型在训练过程中有选择地让信息通过、遗忘旧信息或输出信息
之前的RNN和LSTM都可以处理序列数据,并且在三类任务中表现出色,一种是将整个序列信息压缩成一个特征向量,用于分文分类等分类任务;另一种是打标,即为输入序列的每一个token都生成一个对应的输出,还有一种是从一个固定的输入生成一个可变长度的序列,如图像描述、音乐生成等。
但是还有一类更复杂的任务,它们的输入和输出序列长度没有规定,而且元素之间没有严格的对齐关系,如机器翻译任务,对于这一任务简单的RNN或LSTM难以完成,研究者们提出序列到序列架构应用于这一任务,成功地将一种通用的编码器-解码器(Encoder-Decoder) 架构应用于序列转换任务
关于seq2seq