diff --git a/docs/en/week12/12-3.md b/docs/en/week12/12-3.md index 8fdda9a9f..cdcbcad04 100644 --- a/docs/en/week12/12-3.md +++ b/docs/en/week12/12-3.md @@ -63,7 +63,7 @@ $$ \vect{a} = \text{[soft](arg)max}_{\beta} (\boldsymbol{X}^{\top}\boldsymbol{x}) $$ -Where $\beta$ represents the inverse temperature parameter of the $\text{soft(arg)max}(\cdot)$. $\boldsymbol{X}^{\top}\in\mathbb{R}^{t \times n}$ is the transposed matrix representation of the set $\lbrace\boldsymbol{x}_i \rbrace\_{i=1}^t$, and $\boldsymbol{x}$ represents a generic $\boldsymbol{x}_i$ from the set. Note that the $j$-th row of $X^{\top}$ corresponds to an element $\boldsymbol{x}_j\in\mathbb{R}^n$, so the $j$-th row of $\boldsymbol{X}^{\top}\boldsymbol{x}$ is the scalar product of $\boldsymbol{x}_j$ with each $\boldsymbol{x}_i$ in $\lbrace \boldsymbol{x}_i \rbrace\_{i=1}^t$. +Where $\beta$ represents the inverse temperature parameter of the $\text{soft(arg)max}(\cdot)$. $\boldsymbol{X}^{\top}\in\mathbb{R}^{t \times n}$ is the transposed matrix representation of the set $\lbrace\boldsymbol{x}_i \rbrace\_{i=1}^t$, and $\boldsymbol{x}$ represents a generic $\boldsymbol{x}_i$ from the set. Note that the $j$-th row of $X^{\top}$ corresponds to an element $\boldsymbol{x}_j\in\mathbb{R}^n$, so the $j$-th row of $\boldsymbol{X}^{\top}\boldsymbol{x}$ is the scalar product of $\boldsymbol{x}_j$ with each $\boldsymbol{x}_i$ in $\lbrace \boldsymbol{x}_i \rbrace_{i=1}^t$. The components of the vector $\vect{a}$ are also called "scores" because the scalar product between two vectors tells us how aligned or similar two vectors are. Therefore, the elements of $\vect{a}$ provide information about the similarity of the overall set to a particular $\boldsymbol{x}_i$. diff --git a/docs/zh/week12/12-2.md b/docs/zh/week12/12-2.md index b274572bf..3a2541ac6 100644 --- a/docs/zh/week12/12-2.md +++ b/docs/zh/week12/12-2.md @@ -27,9 +27,9 @@ Translator: Shengkun Tang 为什么(在NMT中)很大的集束通常会导致空的平移? -在训练时,该算法通常不使用波束,因为它非常珍贵。 相反,它使用自回归因式分解(鉴于先前的正确输出,预测$ n + 1 $个第一个单词)。 该模型在训练期间不会暴露于自身的错误,因此“胡说八道”有可能出现在光束中。 +在训练时,该算法通常不使用波束,因为它非常珍贵。 相反,它使用自回归因式分解(鉴于先前的正确输出,预测$n + 1$个第一个单词)。 该模型在训练期间不会暴露于自身的错误,因此“胡说八道”有可能出现在光束中。 -总结:持续进行集束搜索,直到所有$ k $假设都产生结束令牌或直到达到最大解码限制T。 +总结:持续进行集束搜索,直到所有$k$假设都产生结束令牌或直到达到最大解码限制T。 ### 采样 @@ -41,7 +41,7 @@ Translator: Shengkun Tang ### Top-K 采样 -一种纯采样技术,您可以将分布截断为$ k $最佳值,然后对分布重新进行归一化和采样。 +一种纯采样技术,您可以将分布截断为$k$最佳值,然后对分布重新进行归一化和采样。

diff --git a/docs/zh/week12/12-3.md b/docs/zh/week12/12-3.md index 397f887ee..02f712f80 100644 --- a/docs/zh/week12/12-3.md +++ b/docs/zh/week12/12-3.md @@ -19,13 +19,13 @@ Translator: Shengkun Tang ### 自我注意力 (I) -考虑一组$ t $输入$ \ boldsymbol {x} $: +考虑一组$t$输入$\boldsymbol{x}$: $$ \lbrace\boldsymbol{x}_i\rbrace_{i=1}^t = \lbrace\boldsymbol{x}_1,\cdots,\boldsymbol{x}_t\rbrace $$ -其中每个 $\boldsymbol{x}_i$是一个$n$维向量. 由于集合具有$ t $个元素,每个元素都属于$ \ mathbb {R} ^ n $,因此我们可以将集合表示为矩阵$ \ boldsymbol {X} \ in \ mathbb {R} ^ {n \ times t} $。 +其中每个 $\boldsymbol{x}_i$是一个$n$维向量. 由于集合具有$t$个元素,每个元素都属于$\mathbb{R}^n$,因此我们可以将集合表示为矩阵$\boldsymbol{X} \in \mathbb{R}^{n \times t}$。 通过自我注意,隐藏表示$ h $是输入的线性组合: $$ @@ -42,36 +42,36 @@ $$ 请注意,这与我们到目前为止看到的隐藏表示形式不同,在隐藏表示形式中,输入乘以权重矩阵。 -根据我们施加在向量$ \ vect {a} $上的约束,我们可以获得硬或软的注意力。 +根据我们施加在向量$\vect{a}$上的约束,我们可以获得硬或软的注意力。 #### 硬注意力 -格外注意,我们对alpha施加了以下约束:$ \ Vert \ vect {a} \ Vert_0 = 1 $。 这意味着$ \ vect {a} $是一个热门向量。 因此,输入的线性组合中除一个系数外的所有系数都等于零,并且隐藏表示减小为与元素$ \ alpha_i = 1 $相对应的输入$ \ boldsymbol {x} _i $。 +格外注意,我们对alpha施加了以下约束:$\Vert\vect{a}\Vert_0 = 1$。 这意味着$\vect{a}$是一个热门向量。 因此,输入的线性组合中除一个系数外的所有系数都等于零,并且隐藏表示减小为与元素$\alpha_i = 1$相对应的输入$\boldsymbol{x}_i$。 #### 软注意力 -对于软注意力,我们强加$ \ Vert \ vect {a} \ Vert_1 = 1 $。 隐藏的表示形式是系数总和为1的输入的线性组合。 +对于软注意力,我们强加$\Vert\vect{a}\Vert_1 = 1$。 隐藏的表示形式是系数总和为1的输入的线性组合。 ### 自我注意力 (II) -$ \ alpha_i $来自哪里? +$\alpha_i$来自哪里? -我们通过以下方式在\ mathbb {R} ^ t $中获得向量$ \ vect {a} \ +我们通过以下方式获得向量$\vect{a} \in \mathbb{R}^t$ $$ \vect{a} = \text{[soft](arg)max}_{\beta} (\boldsymbol{X}^{\top}\boldsymbol{x}) $$ -其中$ \ beta $表示$ \ text {soft(arg)max}(\ cdot)$的逆温度参数。 $ \ boldsymbol {X} ^ {\ top} \ in \ mathbb {R} ^ {t \ times n} $是集合$ \ lbrace \ boldsymbol {x} _i \ rbrace \ _ {i = 1} ^ t $,而$ \ boldsymbol {x} $代表集合中的通用$ \ boldsymbol {x} _i $。 请注意,$ X ^ {\ top} $的第$ j $行对应于元素$ \ boldsymbol {x} _j \ in \ mathbb {R} ^ n $,因此$$的$ j $行 \ boldsymbol {X} ^ {\ top} \ boldsymbol {x} $是$ \ boldsymbol {x} _j $与$ \ lbrace中每个$ \ boldsymbol {x} _i $的标量乘积\ bracesymbol {x} _i \ rbrace \ _ {i = 1} ^ t $。 +其中$\beta$表示$\text{soft(arg)max}(\cdot)$的逆温度参数。 $\boldsymbol{X}^{\top}\in\mathbb{R}^{t \times n}$是集合$\lbrace\boldsymbol{x}_i \rbrace\_{i=1}^t$的转置矩阵表示,而$\boldsymbol{x}$代表集合中的通用$\boldsymbol{x}_i$。 请注意,$X^{\top}$的第$j$行对应于元素$\boldsymbol{x}_j\in\mathbb{R}^n$,因此$\boldsymbol{X}^{\top}\boldsymbol{x}$的$j$行是$\boldsymbol{x}_j$与$\lbrace \boldsymbol{x}_i \rbrace_{i=1}^t$中每个$\boldsymbol{x}_i$的标量乘积。 -向量$ \ vect {a} $的分量也称为“分数”,因为两个向量之间的标量积告诉我们两个向量的对齐方式或相似程度。因此,$ \ vect {a} $的元素提供有关整个集合与特定$ \ boldsymbol {x} _i $的相似性的信息。 +向量$\vect{a}$的分量也称为“分数”,因为两个向量之间的标量积告诉我们两个向量的对齐方式或相似程度。因此,$\vect{a}$的元素提供有关整个集合与特定$\boldsymbol{x}_i$的相似性的信息。 -方括号代表可选参数。请注意,如果使用$ \ arg \ max(\ cdot)$,我们将获得一个很热的alpha向量,这引起了大家的注意。另一方面,$ \ text {soft(arg)max}(\ cdot)$引起柔和的注意。在每种情况下,所得向量$ \ vect {a} $的分量总和为1。 +方括号代表可选参数。请注意,如果使用$\arg\max(\cdot)$,我们将获得一个alpha的独热向量,也就是硬注意力。另一方面,$\text{soft(arg)max}(\cdot)$则得到软注意力。在每种情况下,所得向量$\vect{a}$的分量总和为1。 -这样生成$ \ vect {a} $可以得到一组,每个$ \ boldsymbol {x} _i $一个。此外,每个$ \ vect {a} _i \位于\ mathbb {R} ^ t $中,因此我们可以将alphas堆叠在矩阵$ \ boldsymbol {A} \中\ mathbb {R} ^ {t \ times t} $中。 +以这种方式生成$\vect{a}$,我们可以得到一组由$\boldsymbol{x}_i$组成的集合。此外,对于每个$\vect{a}_i \in \mathbb{R}^t$中,我们可以将其堆叠为矩阵$\boldsymbol{A}\in \mathbb{R}^{t \times t}$。 -由于每个隐藏状态都是输入$ \ boldsymbol {X} $和向量$ \ vect {a} $的线性组合,因此我们获得了一组$ t $隐藏状态,可以将它们堆叠成矩阵$ \ boldsymbol {H} \ in \ mathbb {R} ^ {n \ times t} $。 +由于每个隐藏状态都是输入$\boldsymbol{X}$和向量$\vect{a}$的线性组合,因此我们获得了一组$t$隐藏状态,可以将它们堆叠成矩阵$\boldsymbol{H}\in\mathbb{R}^{n\times t}$。 $$ \ boldsymbol {H} = \ boldsymbol {XA} @@ -97,36 +97,36 @@ $$ \end{aligned} $$ -每个向量$ \ vect {q},\ vect {k},\ vect {v} $都可以简单地视为特定输入$ \ vect {x} $的旋转。 其中$ \ vect {q} $只是$ \ vect {x} $旋转了$ \ vect {W_q} $,而$ \ vect {k} $只是$ \ vect {x} $旋转了$ \ vect {W_k } $,以及类似的$ \ vect {v} $。 请注意,这是我们第一次引入“可学习的”参数。 由于注意力完全基于方向,因此我们也不包括任何非线性。 +每个向量$\vect{q},\vect{k},\vect{v}$都可以简单地视为特定输入$\vect{x}$的旋转。 其中$\vect{q}$只是$\vect{x}$旋转了$\vect{W_q}$,而$\vect{k}$只是$\vect{x}$旋转了$\vect{W_k}$,以及类似的$\vect{v}$。 请注意,这是我们第一次引入“可学习的”参数。 由于注意力完全基于方向,因此我们也不包括任何非线性。 -为了将查询与所有可能的键进行比较,$ \ vect {q} $和$ \ vect {k} $必须具有相同的维数,即* ie * $ \ vect {q},\ vect {k} \ in \ mathbb {R} ^ {d'} $。 +为了将查询与所有可能的键进行比较,$\vect{q}$和$\vect{k}$必须具有相同的维数,即$\vect{q}, \vect{k} \in \mathbb{R}^{d'}$。 -但是,$ \ vect {v} $可以是任何维度。 如果继续我们的千层面食谱示例-我们需要查询以维度作为关键字,即*,即我们正在搜索的不同食谱的标题。 但是,检索到的相应配方的尺寸$ \ vect {v} $可以任意长。 因此我们在\ mathbb {R} ^ {d''} $中有$ \ vect {v} \。 +但是,$\vect{v}$可以是任何维度。 如果继续我们的千层面食谱示例-我们需要查询以维度作为关键字,即*,即我们正在搜索的不同食谱的标题。 但是,检索到的相应配方的尺寸$\vect{v}$可以任意长。 因此我们有$\vect{v} \in \mathbb{R}^{d''}$。 -为简单起见,在此我们假设所有元素的维数均为$ d $,即 +为简单起见,在此我们假设所有元素的维数均为$d$,即 $$ d' = d'' = d $$ -所以现在我们有了一组$ \ vect {x} $,一组查询,一组键和一组值。 由于我们堆叠了$ t $个向量,因此我们可以将这些集合堆叠到每个具有$ t $列的矩阵中。 每个向量的高度为$ d $。 +所以现在我们有了一组$\vect{x}$,一组查询,一组键和一组值。 由于我们堆叠了$t$个向量,因此我们可以将这些集合堆叠到每个具有$t$列的矩阵中。 每个向量的高度为$d$。 $$ \{ \vect{x}_i \}_{i=1}^t \rightsquigarrow \{ \vect{q}_i \}_{i=1}^t, \, \{ \vect{k}_i \}_{i=1}^t, \, \, \{ \vect{v}_i \}_{i=1}^t \rightsquigarrow \vect{Q}, \vect{K}, \vect{V} \in \mathbb{R}^{d \times t} $$ -我们将一个查询$ \ vect {q} $与所有键$ \ vect {K} $的矩阵进行比较: +我们将一个查询$\vect{q}$与所有键$\vect{K}$的矩阵进行比较: $$ \vect{a} = \text{[soft](arg)max}_{\beta} (\vect{K}^{\top} \vect{q}) \in \mathbb{R}^t $$ -然后,隐藏层将是$ \ vect {V} $的列的线性组合,并由$ \ vect {a} $中的系数加权: +然后,隐藏层将是$\vect{V}$的列的线性组合,并由$\vect{a}$中的系数加权: $$ \vect{h} = \vect{V} \vect{a} \in \mathbb{R}^d $$ -由于我们有$ t $个查询,因此我们将获得$ t $个对应的$ \ vect {a} $权重,因此将得到一个维度为$ t \ times t $的矩阵$ \ vect {A} $。 +由于我们有$t$个查询,因此我们将获得$t$个对应的$\vect{a}$权重,因此将得到一个维度为$t\times t$的矩阵$\vect{A}$。 $$ \{ \vect{q}_i \}_{i=1}^t \rightsquigarrow \{ \vect{a}_i \}_{i=1}^t, \rightsquigarrow \vect{A} \in \mathbb{R}^{t \times t} @@ -138,15 +138,15 @@ $$ \vect{H} = \vect{VA} \in \mathbb{R}^{d \times t} $$ -顺便说一句,我们通常将$ \ beta $设置为: +顺便说一句,我们通常将$\beta$设置为: $$ \beta = \frac{1}{\sqrt{d}} $$ -这样做是为了使温度在不同尺寸的$ d $的选择中保持恒定,因此我们将其除以尺寸$ d $的平方根。 (想想向量$ \ vect {1} \ in \ R ^ d $的长度是多少。) +这样做是为了使温度在不同尺寸的$d$的选择中保持恒定,因此我们将其除以尺寸$d$的平方根。 (想想向量$\vect{1}\in\R^d$的长度是多少。) -为了实现,我们可以通过将所有$ \ vect {W} $堆叠到一个高$ \ vect {W} $中,然后计算$ \ vect {q},\ vect {k},\ vect { v} $: +为了实现,我们可以通过将所有$\vect{W}$堆叠到一个高$\vect{W}$中,然后计算$\vect{q},\vect{k},\vect{v}$: $$ \begin{bmatrix} @@ -161,7 +161,7 @@ $$ \end{bmatrix} \vect{x} \in \mathbb{R}^{3d} $$ -还有“头”的概念。 上面我们看到了一个带有一个头的示例,但是我们可以有多个头。 例如,假设我们有$ h $头,那么我们有$ h $ $ \ vect {q} $,$ h $ $ \ vect {k} $和$ h $ $ \ vect {v} $ ,最后得到$ \ mathbb {R} ^ {3hd} $中的向量: +还有“头”的概念。 上面我们看到了一个带有一个头的示例,但是我们可以有多个头。 例如,假设我们有$h$头,那么我们有$h$ $\vect{q}$,$h$ $\vect{k}$和$h$ $\vect{v}$ ,最后得到$\mathbb{R}^{3hd}$中的向量: $$ \begin{bmatrix} @@ -218,7 +218,7 @@ $$

-Figure 2: Transformer编码, 它接受一组输入$ \ vect {x} $,并输出一组隐藏表示 $\vect{h}^\text{Enc}$. +Figure 2: Transformer编码, 它接受一组输入$\vect{x}$,并输出一组隐藏表示 $\vect{h}^\text{Enc}$.
编码器模块接受一组输入,这些输入同时通过自我关注模块馈送,并绕过它到达`Add, Norm` 模块。 在这一点上,它们再次同时通过1D卷积和另一个`Add, Norm`块,并因此作为隐藏表示集输出。 然后,这组隐藏的表示形式要么通过任意数量的编码器模块(即*更多的层)发送,要么发送到解码器。 现在我们将更详细地讨论这些块。 @@ -226,7 +226,7 @@ $$ ### 自我注意力 -自我注意模型是简单的注意力模型。 查询,键和值是从顺序输入的同一项生成的。 在尝试为顺序数据建模的任务中,在此输入之前添加位置编码。 该块的输出是注意力加权值。 自我注意块接受一组输入,从$ 1,\ cdots,t $开始,输出$ 1,\ cdots,t $注意加权值,这些值通过编码器的其余部分馈入。 +自我注意模型是简单的注意力模型。 查询,键和值是从顺序输入的同一项生成的。 在尝试为顺序数据建模的任务中,在此输入之前添加位置编码。 该块的输出是注意力加权值。 自我注意块接受一组输入,从$1, \cdots , t$, and outputs $1, \cdots, t$注意加权值,这些值通过编码器的其余部分馈入。

@@ -241,7 +241,7 @@ $$ #### 1D-卷积 -在此步骤之后,将应用一维卷积(也称为位置前馈网络)。 该块由两个密集层组成。 根据设置的值,此块允许您调整输出$ \ vect {h} ^ \ text {Enc} $的尺寸。 +在此步骤之后,将应用一维卷积(也称为位置前馈网络)。 该块由两个密集层组成。 根据设置的值,此块允许您调整输出$\vect{h}^\text{Enc}$的尺寸。 ### 解码模块 @@ -255,12 +255,12 @@ Tranformer解码器遵循与编码器类似的过程。 但是,还有一个额 #### 交叉注意力 -交叉注意遵循用于自注意块的查询,键和值设置。 但是,输入要复杂一些。 解码器的输入是数据点$ \ vect {y} \ _ i $,然后将其传递给自注意并添加范数块,最后到达交叉注意块。 这用作交叉注意的查询,其中键和值对是输出$ \ vect {h} ^ \ text {Enc} $,其中此输出是使用所有过去的输入$ \ vect {x} \ _ 1来计算的 ,\ cdots,\ vect {x} \ _ {t} $。 +交叉注意遵循用于自注意块的查询,键和值设置。 但是,输入要复杂一些。 解码器的输入是数据点$\vect{y}\_i$,然后将其传递给自注意并添加范数块,最后到达交叉注意块。 这用作交叉注意的查询,其中键和值对是输出$\vect{h}^\text{Enc}$,其中此输出是使用所有过去的输入$\vect{x}\_1, \cdots, \vect{x}\_{t}$来计算的。 ## 总结 -集合$ \ vect {x} \ _ 1 $到$ \ vect {x} \ _ {t} $通过编码器输入。 使用自我注意和更多块,获得输出表示$ \ lbrace \ vect {h} ^ \ text {Enc} \ rbrace_ {i = 1} ^ t $,该输出表示被馈送到解码器。 在对其施加自注意力之后,进行交叉注意力。 在此块中,查询与目标语言$ \ vect {y} \ _ i $中的符号表示相对应,并且键和值从源语言语句($ \ vect {x} \ _ 1 $到$ \ vect {x} \ _ {t} $)。 凭直觉,交叉注意会发现输入序列中的哪些值与构造$ \ vect {y} \ _ t $最相关,因此应获得最高的注意系数。 然后,这个交叉注意力的输出将通过另一个1D卷积子块进行馈送,我们得到$ \ vect {h} ^ \ text {Dec} $。 对于指定的目标语言,可以通过将$ \ lbrace \ vect {h} ^ \ text {Dec} \ rbrace_ {i = 1} ^ t $与某些目标数据进行比较,从此处直接了解培训的开始方式。 +集合$\vect{x}\_1$到$\vect{x}\_{t}$通过编码器输入。 使用自我注意和更多块,获得输出表示$\lbrace\vect{h}^\text{Enc}\rbrace_{i = 1}^t$,该输出表示被馈送到解码器。 在对其施加自注意力之后,进行交叉注意力。 在此块中,查询与目标语言$\vect{y}\_i$中的符号表示相对应,并且键和值从源语言语句($\vect{x}\_1$到$\vect{x}\_{t}$)。 凭直觉,交叉注意会发现输入序列中的哪些值与构造$\vect{y}\_t$最相关,因此应获得最高的注意系数。 然后,这个交叉注意力的输出将通过另一个1D卷积子块进行馈送,我们得到$\vect{h}^\text{Dec}$。 对于指定的目标语言,可以通过将$\lbrace\vect{h}^\text{Dec}\rbrace_{i = 1}^t$与某些目标数据进行比较,从此处直接了解培训的开始方式。 ### 单词语言模型