diff --git a/.DS_Store b/.DS_Store index 4186fe5..1fbb0fd 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/人人都能看懂的Transformer/第一章——Transformer网络架构.md b/人人都能看懂的Transformer/第一章——Transformer网络架构.md index 7367063..9ab2ed3 100644 --- a/人人都能看懂的Transformer/第一章——Transformer网络架构.md +++ b/人人都能看懂的Transformer/第一章——Transformer网络架构.md @@ -76,7 +76,7 @@ ### 语义关系学习(多头注意力) -> Multi-HeadAttention +> Multi-Head Self-Attention > > WHY:捕捉多种语义关系,提高模型的表达能力。如LLM是大模型的缩写,同时也是法学硕士的缩写。亦或者冬天里的能穿多少穿多少,跟夏天里的能穿多少穿多少。 @@ -92,7 +92,7 @@ ### 数值缩放 -> Add & Norm +> Addition and Normalization > > WHY:前面我们讲到,矩阵里的数字越大,表示跟其它词的语义关系越紧密,如果两个大值相加,很可能就造成大的值特别大,小的值特别小。所以要统一到一个维度,特别是深度学习场景里,由于深度学习是矩阵乘法, 所以大值或者小值都会被无限放大,导致模型不稳定。 @@ -106,6 +106,8 @@ Add & Norm的过程可以理解为相同位置元素相加,再做层归一化 ### 前馈神经网络 +> Feed Forward Neural Network +> > WHAT:数学上,对于每个位置的输入向量`x`,FFNN可以表示为: > > ~~~ @@ -122,3 +124,51 @@ Add & Norm的过程可以理解为相同位置元素相加,再做层归一化 当数据输入到神经网络后,经过一系列运算(点积),输出的数据一般是非线形的。而且维度输出的维度与输入的维度是不变的。种设计允许FFN在不改变输入和输出维度的情况下,增加网络的非线性和复杂性,从而使模型能够学习更加复杂的特征表示。 + + +### 最后一个数据缩放 + +同样,当数据进行点积后,大值会越来越大,小值也会越来越小,所以再做一次数值缩放。另外整个子模块会进行多次叠加,即前面说到的如GPT叠加了175层。 + + + +### 特征变换映射(全数字列表) + +> Linear + +前面数据经过最后一次缩放后,线形变换用于将模型的内部表示转换为最终输出,通常是一个预测任务,如语言模型中的下一个词(话)预测。 + +里面包含着我们输入的文字,如果是3个,就会有3个字的列表(1万个字就是1万个字的列表),每个字都有一个概率。预测下一个字,就是找出3个字里概率最高的。当然训练过程肯定不止3个字,如GPT就有xxx个字,那么"LLM with me"的下一个词的概率,一般展示如下: + +``` +{ + "is": 0.10, + "the": 0.05, + "a": 0.03, + ... + "learning": 0.07, + ... +} +``` + +如果是预测下一个句子,通常会采用一种称为“自回归语言生成”的方法,在这种方法中,模型会一次生成一个词,然后将生成的词作为下一个预测的上下文的一部分。这个过程会重复进行,直到生成一个终止符号(如句号或特殊的结束标记),或者达到预设的最大长度限制。中间阶段的展示一般如下: + +~~~ +[ + {"sequence": "The cat is", "probability": 0.09, "next_words": {"sitting": 0.5, "sleeping": 0.3, ...}}, + {"sequence": "She went to", "probability": 0.07, "next_words": {"the store": 0.4, "school": 0.2, ...}}, + ... +] +~~~ + +> 当然,模型一般会采用某种策略(如贪婪搜索、束搜索(beam search)或采样)来逐步构建句子,而不是会生成这么庞大的组合,因为一个句子可能有几千甚至几万个词。 + +每个条目包含了当前的候选序列("sequence"),该序列的累积概率("probability"),以及下一个可能的词及其概率("next_words")。模型会在每一步更新这些候选序列,直到生成完整的句子。 + +~~~ +[ + {"sequence": "The cat is sitting by the window.", "probability": 0.08}, + {"sequence": "She went to the store to buy some groceries.", "probability": 0.06}, + ... +] +~~~