模型架构
模型概括
- 先把语言模型看成黑盒,以便于了解整体功能
- 后拆分成:分词、模型架构
分词
首先要知道:语言模型 p 是建立在词元(token)序列的上的一个概率分布输出,其中每个词元来自某个词汇表V,词元(token)一般在NLP(自然语言处理)中来说,通常指的是一个文本序列中的最小单元,可以是单词、标点符号、数字、符号或其他类型的语言元素。
- 基于空格的分词(存在明显缺陷)
- Byte pair encoding
- BPE分词器需要通过模型训练数据进行学习,获得需要分词文本的一些频率特征
- BPE算法在这里的作用是为了进一步减少数据的稀疏性
- Unigram model (SentencePiece)
- 这是SentencePiece工具(Kudo&Richardson,2018年)所支持的一种分词方法,与BPE一起使用。 它被用来训练T5和Gopher模型。
- 算法流程:给定 V ,使用EM算法优化 p(x) 和 T 。计算每个词汇 x∈V 的 loss(x) ,衡量如果将 x 从 V 中移除,似然值会减少多少。按照 loss 进行排序,并保留 V 中排名靠前的80%的词汇。
模型架构
- 语言模型分类:编码端(Encoder-Only),解码端(Decoder-Only)和编码-解码端(Encoder-Decoder)
- 编码端(Encoder-Only)架构:编码端架构的著名的模型如BERT、RoBERTa等。这些语言模型生成上下文向量表征,但不能直接用于生成文本。
- 解码器(Decoder-Only)架构:解码器架构的著名模型就是大名鼎鼎的GPT系列模型。
- 编码-解码端(Encoder-Decoder)架构:编码-解码端架构就是最初的Transformer模型,其他的还有如BART、T5等模型。
- 语言模型理论
- 基础架构
- 首先,我们需要将词元序列转换为序列的向量形式。
- 定义一个抽象的 SequenceModel 函数,它接受这些上下文无关的嵌入,并将它们映射为上下文相关的嵌入。
- 递归神经网络(具体不展开)
- 基本形式的RNN通过递归地计算一系列隐藏状态来进行计算。
- Transformer:这是真正推动大型语言模型发展的序列模型
注意力机制
解释:Transformer的关键是注意机制,我们可以将注意力看作是具有多个方面(例如,句法、语义)的匹配。为了适应这一点,我们可以同时使用多个注意力头,并简单地组合它们的输出。自注意力使得所有的词元都可以“相互通信”,而前馈层提供进一步的连接。
残差连接和归一化
残差连接:计算机视觉中的一个技巧是残差连接(ResNet)。
层归一化:另一个技巧是层归一化,它接收一个向量并确保其元素不会太大
位置嵌入