Skip to content

Commit 860e687

Browse files
committed
update path
1 parent 0fc39aa commit 860e687

File tree

8 files changed

+78
-37
lines changed

8 files changed

+78
-37
lines changed

app/(private)/arabic/page.md

Lines changed: 15 additions & 15 deletions
Large diffs are not rendered by default.

app/(private)/china/page.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ $$
5353

5454
其中 $$ [.;.] $$ 是拼接操作。$$ \mathbf{W}^q_i, \mathbf{W}^k_i \in \mathbb{R}^{d \times d_k/h}, \mathbf{W}^v_i \in \mathbb{R}^{d \times d_v/h} $$ 是将大小为 $$ L \times d $$ 的输入嵌入映射为查询、键和值矩阵的权重矩阵。$$ \mathbf{W}^o \in \mathbb{R}^{d_v \times d} $$ 是输出线性变换。所有权重都应在训练期间学习。
5555

56-
![多头缩放点积注意力](/img/transformer/multi-head-attention.png)
56+
![多头缩放点积注意力](/posts/transformer-family-2/multi-head-attention.png)
5757
_图 1. 多头缩放点积注意力机制的示意图。(图片来源:[Vaswani 等人,2017](https://arxiv.org/abs/1706.03762) 图2)_
5858

5959
## Transformer
@@ -66,7 +66,7 @@ _图 1. 多头缩放点积注意力机制的示意图。(图片来源:[Vaswa
6666

6767
Transformer **解码器** 的功能是从编码表示中检索信息。其架构与编码器相似,不同之处在于解码器的每个重复模块包含两个多头注意力子模块,而不是一个。第一个多头注意力子模块是*掩码*的,以防止位置关注未来的信息。
6868

69-
![Transformer](/img/transformer/transformer.png)
69+
![Transformer](/posts/transformer-family-2/transformer.png)
7070
_图 2. 原始Transformer模型的架构。(图片来源:[图17]_
7171

7272
**位置编码**
@@ -85,7 +85,7 @@ $$
8585

8686
这样,位置编码的每个维度对应于不同维度中的不同波长的正弦波,从 $$ 2\pi $$$$ 10000 \cdot 2\pi $$
8787

88-
![Transformer](/img/transformer/sinoidual-positional-encoding.png)
88+
![Transformer](/posts/transformer-family-2/sinoidual-positional-encoding.png)
8989
_图 3. 正弦位置编码,$$ L=32 $$$$ d=128 $$。值在-1(黑色)和1(白色)之间,值为0时为灰色。_
9090

9191
(2) _学习位置编码_,顾名思义,为每个元素分配一个学习的列向量,编码其*绝对*位置([Gehring 等人,2017](https://arxiv.org/abs/1705.03122))。
@@ -98,7 +98,7 @@ _图 3. 正弦位置编码,$$ L=32 $$ 和 $$ d=128 $$。值在-1(黑色)
9898
- 每个中间Transformer层也用于进行预测。随着训练的进行,较低层的权重对总损失的贡献逐渐减少。
9999
- 序列中的每个位置可以预测多个目标,即未来标记的两个或更多预测。
100100

101-
![Transformer](/img/transformer/transformer-aux-losses.png)
101+
![Transformer](/posts/transformer-family-2/transformer-aux-losses.png)
102102
_图 4. 深度Transformer用于字符级语言建模的辅助预测任务。(图片来源:[Al-Rfou 等人,2018](https://arxiv.org/abs/1808.04444)_
103103

104104
## 自适应计算时间 (ACT)
@@ -137,7 +137,7 @@ $$
137137

138138
最终状态和输出是均值场更新:
139139
$$ s*t = \sum*{n=1}^{N(t)} p*t^n s_t^n, \quad y_t = \sum*{n=1}^{N(t)} p*t^n y_t^n $$
140-
![ACT计算图](/img/transformer/ACT-computation-graph.png)
140+
![ACT计算图](/posts/transformer-family-2/ACT-computation-graph.png)
141141
*图 5. 具有ACT机制的RNN的计算图。(图片来源:[Graves, 2016](https://arxiv.org/abs/1603.08983)\_
142142

143143
为了避免对每个输入进行不必要的思考,ACT在损失函数中添加了*思考成本* $$ \mathcal{P}(x) = \sum\_{t=1}^L N(t) + R(t) $$,以鼓励减少中间计算步骤的数量。
@@ -165,7 +165,7 @@ $$ s*t = \sum*{n=1}^{N(t)} p*t^n s_t^n, \quad y_t = \sum*{n=1}^{N(t)} p*t^n y_t^
165165

166166
通过持续使用前几段的隐藏状态,在模型中引入了段之间的循环连接。
167167

168-
![Transformer-XL的训练阶段](/img/transformer/transformer-XL-training.png)
168+
![Transformer-XL的训练阶段](/posts/transformer-family-2/transformer-XL-training.png)
169169
_图 6. 原始Transformer与Transformer-XL的训练阶段比较,段长度为4。(图片来源:[Dai 等人,2019](https://arxiv.org/abs/1901.02860) 图2左半部分)。_
170170

171171
我们将模型中第 $$ (\tau + 1) $$ 段的第 $$ n $$ 层隐藏状态标记为 $$ \mathbf{h}_{\tau+1}^{(n)} \in \mathbb{R}^{L \times d} $$。除了依赖于同一段的上一层隐藏状态 $$ \mathbf{h}_{\tau+1}^{(n-1)} $$ 外,它还依赖于前一段的同一层隐藏状态 $$ \mathbf{h}\_{\tau}^{(n)} $$。通过纳入前几隐藏状态的信息,模型将注意力跨度扩展到更长的过去,跨越多个段。
@@ -218,7 +218,7 @@ Transformer的一个关键优势是捕捉长期依赖的能力。根据上下文
218218

219219
这就是**自适应注意力跨度**的动机。[Sukhbaatar 等人,2019](https://arxiv.org/abs/1905.07799) 提出了一种自注意力机制,寻求最优的注意力跨度。他们假设不同的注意力头可能在同一上下文窗口内以不同方式分配得分(见图7),因此最优跨度将为每个头单独训练。
220220

221-
![每个头的注意力](/img/transformer/attention-per-head.png)
221+
![每个头的注意力](/posts/transformer-family-2/attention-per-head.png)
222222
_图 7. 同一模型中的两个注意力头A和B在同一上下文窗口内分配注意力的方式不同。头A更多关注最近的标记,而头B均匀地关注更远的过去。(图片来源:[Sukhbaatar 等人,2019](https://arxiv.org/abs/1905.07799)_
223223

224224
给定第 $$ i $$ 个标记,我们需要计算该标记与其他键位置 $$ j \in S_i $$ 之间的注意力权重,其中 $$ S_i $$ 定义了第 $$ i $$ 个标记的上下文窗口。
@@ -235,7 +235,7 @@ $$
235235
$$ m_z(x) = \text{clamp}(\frac{1}{R}(R+z-x), 0, 1) $$
236236
其中 $$ R $$ 是一个超参数,定义了 $$ m_z $$ 的柔和度。
237237

238-
![软掩码函数](/img/transformer/soft-masking-function.png)
238+
![软掩码函数](/posts/transformer-family-2/soft-masking-function.png)
239239
_图 8. 自适应注意力跨度中使用的软掩码函数。(图片来源:[Sukhbaatar 等人,2019](https://arxiv.org/abs/1905.07799))。_
240240

241241
软掩码函数应用于注意力权重中的softmax元素:
@@ -261,7 +261,7 @@ Transformer最初也是最流行的用例是进行语言建模。文本序列是
261261

262262
Image Transformer引入了两种局部化的 $$ \mathbf{M} $$,如下图所示。
263263

264-
![Image Transformer中的注意力模式](/img/transformer/image-transformer-attention.png)
264+
![Image Transformer中的注意力模式](/posts/transformer-family-2/image-transformer-attention.png)
265265
_图 9. Image Transformer中视觉输入的1D和2D注意力跨度的示意图。黑色线条标记查询块,青色轮廓标记像素q的实际注意力跨度。(图片来源:[Parmer 等人,2018](https://arxiv.org/abs/1802.05751) 图2)_
266266

267267
(1) _1D局部注意力_:输入图像按[光栅扫描](https://en.wikipedia.org/wiki/Raster_scan#Scanning_pattern)顺序展平,即从左到右、从上到下。线性化的图像然后被分割成非重叠的查询块。上下文窗口包括与 $$ \mathbf{q} $$ 相同的查询块中的像素以及在此查询块之前生成的固定数量的额外像素。
@@ -299,7 +299,7 @@ $$
299299

300300
Sparse Transformer提出了两种分解注意力类型。以2D图像输入为例,图10更容易理解这些概念。
301301

302-
![稀疏注意力](/img/transformer/sparse-attention.png)
302+
![稀疏注意力](/posts/transformer-family-2/sparse-attention.png)
303303
_图 10. 顶部行展示了(a) Transformer、(b) 具有跨步注意力的Sparse Transformer和(c) 具有固定注意力的Sparse Transformer的注意力连接模式。底部行包含相应的自注意力连接矩阵。注意,顶部和底部行不是同一比例。(图片来源:[Child 等人,2019](https://arxiv.org/abs/1904.10509) + 一些额外注释。)_
304304

305305
(1) *跨步*注意力,跨步 $$ \ell \sim \sqrt{n} $$。这在图像数据上效果很好,因为结构与跨步对齐。在图像情况下,每个像素将关注光栅扫描顺序中的前 $$ \ell $$ 个像素(自然覆盖整个图像宽度),然后这些像素关注同一列中的其他像素(由另一个注意力连接子集定义)。
@@ -354,7 +354,7 @@ Reformer提出了两个主要更改:
354354

355355
哈希方案 $$ x \mapsto h(x) $$ 如果保留了数据点之间的距离信息,则称为*局部敏感*,使接近的向量获得相似的哈希,而远离的向量具有非常不同的哈希。Reformer采用了这样的哈希方案,给定一个固定的随机矩阵 $$ \mathbf{R} \in \mathbb{R}^{d \times b/2} $$(其中 $$ b $$ 是一个超参数),哈希函数为 $$ h(x) = \arg\max([xR; -xR]) $$
356356

357-
![LSH注意力矩阵](/img/transformer/LSH-attention-matrix.png)
357+
![LSH注意力矩阵](/posts/transformer-family-2/LSH-attention-matrix.png)
358358
_图 11. 局部敏感哈希 (LSH) 注意力的示意图。(图片来源:[Kitaev 等人,2020](https://arxiv.org/abs/2001.04451) 图1右半部分)。_
359359

360360
在LSH注意力中,查询只能关注同一哈希桶中的位置,$$ S_i = \{j: h(\mathbf{q}\_i) = h(\mathbf{k}\_j)\} $$。其执行过程如下,如图11所示:
@@ -364,7 +364,7 @@ _图 11. 局部敏感哈希 (LSH) 注意力的示意图。(图片来源:[Kit
364364
- (c) 设置 $$ \mathbf{Q} = \mathbf{K} $$(精确地说 $$ \mathbf{k}\_j = \mathbf{q}\_j / \|\mathbf{q}\_j\| $$),以便一个桶中有相等数量的键和查询,便于批处理。有趣的是,这种"共享QK"配置不影响Transformer的性能。
365365
- (d) 应用批处理,将 $$ m $$ 个连续查询分组在一起。
366366

367-
![LSH注意力](/img/transformer/LSH-attention.png)
367+
![LSH注意力](/posts/transformer-family-2/LSH-attention.png)
368368
_图 12. LSH注意力包括4个步骤:分桶、排序、分块和注意力计算。(图片来源:[Kitaev 等人,2020](https://arxiv.org/abs/2001.04451) 图1左半部分)。_
369369

370370
**可逆残差网络**
@@ -405,7 +405,7 @@ Universal Transformer不经过固定数量的层,而是使用[自适应计算
405405

406406
在高层次上,Universal Transformer可以看作是学习每个标记的隐藏状态表示的循环函数。循环函数在标记位置上并行演化,位置之间的信息通过自注意力共享。
407407

408-
![Universal Transformer循环步骤](/img/transformer/universal-transformer-loop.png)
408+
![Universal Transformer循环步骤](/posts/transformer-family-2/universal-transformer-loop.png)
409409
_图 13. Universal Transformer如何并行地为每个位置反复精炼一组隐藏状态表示。(图片来源:[Dehghani 等人,2019](https://arxiv.org/abs/1807.03819) 图1)。_
410410

411411
给定长度为 $$ L $$ 的输入序列,Universal Transformer在可调数量的步骤中迭代更新表示 $$ \mathbf{H}^t \in \mathbb{R}^{L \times d} $$ 在步骤 $$ t $$。在步骤0,$$ \mathbf{H}^0 $$ 初始化为与输入嵌入矩阵相同。所有位置在多头自注意力机制中并行处理,然后通过循环转换函数。
@@ -429,7 +429,7 @@ $$
429429
\end{cases}
430430
$$
431431

432-
![Universal Transformer](/img/transformer/universal-transformer.png)
432+
![Universal Transformer](/posts/transformer-family-2/universal-transformer.png)
433433
_图 14. Universal Transformer的简化示意图。编码器和解码器共享相同的基本循环结构。但解码器还关注最终编码器表示 $$ \mathbf{H}^T $$。(图片来源:[Dehghani 等人,2019](https://arxiv.org/abs/1807.03819) 图2)。_
434434

435435
在Universal Transformer的自适应版本中,循环步骤数 $$ T $$[ACT](#adaptive-computation-time-act)动态确定。每个位置配备动态ACT停止机制。一旦逐标记循环块停止,它不再接受更多循环更新,而只是将当前值复制到下一步,直到所有块停止或模型达到最大步骤限制。
@@ -454,7 +454,7 @@ $$
454454

455455
门控函数参数明确初始化为接近恒等映射——这就是为什么有 $$ b_g $$ 项。$$ b_g > 0 $$ 大大有助于学习加速。
456456

457-
![GTrXL](../public/img/transformer/gated-transformer-XL.png)
457+
![GTrXL](/posts/transformer-family-2/gated-transformer-XL.png)
458458
_图 15. Transformer-XL、具有重新排序层归一化的Transformer-XL和门控Transformer-XL的模型架构比较。(图片来源:[Parisotto 等人,2019](https://arxiv.org/abs/1910.06764) 图1)。_
459459

460460
---

app/globals.css

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
@import "../styles/typesetting-article.css";
1919

2020
/* @import "../styles/i81n/chinese.css"; */
21-
@import "../styles/i81n/arabic.css";
22-
/* @import "../styles/i81n/vietnamese.css"; */
21+
/* @import "../styles/i81n/arabic.css"; */
22+
@import "../styles/i81n/vietnamese.css";
2323

2424
@custom-variant dark (&:where(.dark, .dark *));
2525
@custom-variant light (&:where(.light, .light *));
@@ -74,9 +74,10 @@
7474
word-spacing: 0;
7575

7676
font-family:
77-
SurveyWithCodeArabicSans,
77+
/* "Amiri", */
78+
/* SurveyWithCodeArabicSans, */
79+
SurveyWithCodeVietnamese,
7880
SurveyWithCode,
79-
/* SurveyWithCodeVietnamese, */
8081
/* SurveyWithCodeChina, */
8182
Katex_Main,
8283
"Segoe UI",
172 KB
Binary file not shown.
177 KB
Binary file not shown.
190 KB
Binary file not shown.
187 KB
Binary file not shown.

styles/i81n/arabic.css

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
/* Define the font family and weights */
21
@font-face {
32
font-family: "SurveyWithCodeArabicSans";
43
src: url("/fonts/arabic/SurveyWithCodeArabicSansRegular.woff2") format("woff2");
54
font-weight: 400;
65
font-style: normal;
76
font-display: swap;
87
font-stretch: normal;
9-
unicode-range: U+0600-06FF; /* Latin + Arabic ranges (optional) */
8+
unicode-range: U+0600-06FF;
109
}
1110

1211
@font-face {
@@ -16,9 +15,50 @@
1615
font-style: normal;
1716
font-display: swap;
1817
font-stretch: normal;
19-
unicode-range: U+0600-06FF; /* Latin + Arabic ranges (optional) */
18+
unicode-range: U+0600-06FF;
2019
}
2120

2221
/* :root {
2322
--ui-font: "SurveyWithCodeArabicSans", "Noto Sans Arabic", "Segoe UI", Tahoma, Arial, sans-serif;
2423
} */
24+
25+
26+
/* @font-face {
27+
font-family: "Amiri";
28+
src: url("/fonts/arabic/Amiri-Regular.woff2") format("woff2");
29+
font-weight: 400;
30+
font-style: normal;
31+
font-display: swap;
32+
unicode-range: U+0000-00FF, U+0600-06FF;
33+
}
34+
35+
@font-face {
36+
font-family: "Amiri";
37+
src: url("/fonts/arabic/Amiri-Italic.woff2") format("woff2");
38+
font-weight: 400;
39+
font-style: italic;
40+
font-display: swap;
41+
unicode-range: U+0000-00FF, U+0600-06FF;
42+
}
43+
44+
@font-face {
45+
font-family: "Amiri";
46+
src: url("/fonts/arabic/Amiri-Bold.woff2") format("woff2");
47+
font-weight: 700;
48+
font-style: normal;
49+
font-display: swap;
50+
unicode-range: U+0000-00FF, U+0600-06FF;
51+
}
52+
53+
@font-face {
54+
font-family: "Amiri";
55+
src: url("/fonts/arabic/Amiri-BoldItalic.woff2") format("woff2");
56+
font-weight: 700;
57+
font-style: italic;
58+
font-display: swap;
59+
unicode-range: U+0000-00FF, U+0600-06FF;
60+
} */
61+
62+
/* :root {
63+
--serif-arabic: "Amiri", "Noto Naskh Arabic", serif;
64+
} */

0 commit comments

Comments
 (0)