Update. Transformer里的原始方法

master
ben.guo 1 year ago
parent 316a5636a9
commit 719e43eb7b

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

@ -67,6 +67,24 @@ tensor([[ 0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 0.0000e+00,
> 我们上面参数也参考GPT-2的比如max_seq_len=1024、d_model=768
你也可以根据第二章的"LLM with me"的索引,去获取对应的位置编码。
~~~python
print(positional_encoding[13][:10])
print(positional_encoding[14][:10])
print(positional_encoding[11][:10])
"""out:
tensor([ 0.4202, 0.9074, 0.1252, 0.9921, -0.1744, 0.9847, -0.4519, 0.8921,
-0.6858, 0.7278])
tensor([0.9906, 0.1367, 0.8920, 0.4520, 0.7018, 0.7124, 0.4454, 0.8953, 0.1523,
0.9883])
tensor([-1.0000, 0.0044, -0.9673, -0.2535, -0.8724, -0.4889, -0.7253, -0.6884,
-0.5387, -0.8425])
"""
~~~
<img src="../assets/image-20240427180954246.png" alt="image-20240427180954246" style="zoom:50%;" />
为什么是用正弦和余弦函数对于正弦函sin最大值是 1最小值是 -1。对于余弦函数cos最大值是 1最小值是 -1。也就是它们可以保证值是比较小的而且也是符合深度学习模型可学习的参数。
其中最重要的是允许模型学习相对位置:由于正弦和余弦函数的周期性,对于任意固定偏移量 `k``PE(pos+k)`可以表示为 `PE(pos)` 的线性函数。这意味着模型可以很容易地通过学习注意力权重来关注相对位置,因为相对位置的编码可以通过简单的线性变换来获得。

Loading…
Cancel
Save