docs(chapter2): 修复Transformer文档中的格式和空格问题

This commit is contained in:
KMnO4-zx
2025-07-10 10:23:13 +08:00
parent 4a8feba16b
commit ed8879e80c

View File

@@ -87,7 +87,7 @@ $$
根据词向量的定义语义相似的两个词对应的词向量的点积应该大于0而语义不相似的词向量点积应该小于0。
那么,我们就可以用点积来计算词之间的相似度。假设我们的 Query 为“fruit”对应的词向量为 $q$;我们的 Key 对应的词向量为 $k = [v_{apple} v_{banana} v_{chair}]$,则我们可以计算 Query 和每一个键的相似程度:
那么,我们就可以用点积来计算词之间的相似度。假设我们的 Query 为“fruit”对应的词向量为 $q$ ;我们的 Key 对应的词向量为 $k = [v_{apple} v_{banana} v_{chair}]$ ,则我们可以计算 Query 和每一个键的相似程度:
$$
x = qK^T
@@ -337,7 +337,7 @@ class MultiHeadAttention(nn.Module):
### 2.2.1 Seq2Seq 模型
Seq2Seq即序列到序列是一种经典 NLP 任务。具体而言,是指模型输入的是一个自然语言序列 $input = (x_1, x_2, x_3...x_n)$,输出的是一个可能不等长的自然语言序列 $output = (y_1, y_2, y_3...y_m)$。事实上Seq2Seq 是 NLP 最经典的任务,几乎所有的 NLP 任务都可以视为 Seq2Seq 任务。例如文本分类任务,可以视为输出长度为 1 的目标序列(如在上式中 $m$ = 1词性标注任务可以视为输出与输入序列等长的目标序列如在上式中 $m$ = $n$)。
Seq2Seq即序列到序列是一种经典 NLP 任务。具体而言,是指模型输入的是一个自然语言序列 $input = (x_1, x_2, x_3...x_n)$ ,输出的是一个可能不等长的自然语言序列 $output = (y_1, y_2, y_3...y_m)$ 。事实上Seq2Seq 是 NLP 最经典的任务,几乎所有的 NLP 任务都可以视为 Seq2Seq 任务。例如文本分类任务,可以视为输出长度为 1 的目标序列(如在上式中 $m$ = 1词性标注任务可以视为输出与输入序列等长的目标序列如在上式中 $m$ = $n$ )。
机器翻译任务即是一个经典的 Seq2Seq 任务例如我们的输入可能是“今天天气真好”输出是“Today is a good day.”。Transformer 是一个经典的 Seq2Seq 模型即模型的输入为文本序列输出为另一个文本序列。事实上Transformer 一开始正是应用在机器翻译任务上的。
@@ -618,7 +618,7 @@ $$
上式中pos 为 token 在句子中的位置2i 和 2i+1 则是指示了 token 是奇数位置还是偶数位置,从上式中我们可以看出对于奇数位置的 token 和偶数位置的 tokenTransformer 采用了不同的函数进行编码。
我们以一个简单的例子来说明位置编码的计算过程:假如我们输入的是一个长度为 4 的句子"I like to code",我们可以得到下面的词向量矩阵$\rm x$,其中每一行代表的就是一个词向量,$\rm x_0=[0.1,0.2,0.3,0.4]$对应的就是“I”的词向量它的pos就是为0以此类推第二行代表的是“like”的词向量它的pos就是1
我们以一个简单的例子来说明位置编码的计算过程:假如我们输入的是一个长度为 4 的句子"I like to code",我们可以得到下面的词向量矩阵 $\rm x$ ,其中每一行代表的就是一个词向量, $\rm x_0=[0.1,0.2,0.3,0.4]$ 对应的就是“I”的词向量它的pos就是为0以此类推第二行代表的是“like”的词向量它的pos就是1
$$
\rm x = \begin{bmatrix} 0.1 & 0.2 & 0.3 & 0.4 \\ 0.2 & 0.3 & 0.4 & 0.5 \\ 0.3 & 0.4 & 0.5 & 0.6 \\ 0.4 & 0.5 & 0.6 & 0.7 \end{bmatrix}
@@ -671,13 +671,13 @@ $$
\begin{equation}\tilde{f}(\cdots,\boldsymbol{x}_m,\cdots,\boldsymbol{x}_n,\cdots)=f(\cdots,\boldsymbol{x}_m + \boldsymbol{p}_m,\cdots,\boldsymbol{x}_n + \boldsymbol{p}_n,\cdots)\end{equation}
$$
这里加上的 $p_m$$p_n$ 就是位置编码。接下来我们将 $f(...,x_m+p_m,...,x_n+p_n)$ 在 m,n 两个位置上做泰勒展开:
这里加上的 $p_m$ $p_n$ 就是位置编码。接下来我们将 $f(...,x_m+p_m,...,x_n+p_n)$ 在 m,n 两个位置上做泰勒展开:
$$
\begin{equation}\tilde{f}\approx f + \boldsymbol{p}_m^{\top} \frac{\partial f}{\partial \boldsymbol{x}_m} + \boldsymbol{p}_n^{\top} \frac{\partial f}{\partial \boldsymbol{x}_n} + \frac{1}{2}\boldsymbol{p}_m^{\top} \frac{\partial^2 f}{\partial \boldsymbol{x}_m^2}\boldsymbol{p}_m + \frac{1}{2}\boldsymbol{p}_n^{\top} \frac{\partial^2 f}{\partial \boldsymbol{x}_n^2}\boldsymbol{p}_n + \underbrace{\boldsymbol{p}_m^{\top} \frac{\partial^2 f}{\partial \boldsymbol{x}_m \partial \boldsymbol{x}_n}\boldsymbol{p}_n}_{\boldsymbol{p}_m^{\top} \boldsymbol{\mathcal{H}} \boldsymbol{p}_n}\end{equation}
$$
可以看到第1项与位置无关25项仅依赖单一位置第6项f 分别对 m、n 求偏导)与两个位置有关,所以我们希望第六项($p_m^THp_n$)表达相对位置信息,即求一个函数 g 使得:
可以看到第1项与位置无关25项仅依赖单一位置第6项f 分别对 m、n 求偏导)与两个位置有关,所以我们希望第六项( $p_m^THp_n$ )表达相对位置信息,即求一个函数 g 使得:
$$
p_m^THp_n = g(m-n)