diff --git a/assets/image-20240427180954246.png b/assets/image-20240427180954246.png new file mode 100644 index 0000000..9fa37a6 Binary files /dev/null and b/assets/image-20240427180954246.png differ diff --git a/人人都能看懂的Transformer/第三章——位置编码.md b/人人都能看懂的Transformer/第三章——位置编码.md index b579e38..e5f353f 100644 --- a/人人都能看懂的Transformer/第三章——位置编码.md +++ b/人人都能看懂的Transformer/第三章——位置编码.md @@ -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]) +""" +~~~ + +image-20240427180954246 + 为什么是用正弦和余弦函数,对于正弦函(sin):最大值是 1,最小值是 -1。对于余弦函数(cos):最大值是 1,最小值是 -1。也就是它们可以保证值是比较小的,而且也是符合深度学习模型可学习的参数。 其中最重要的是允许模型学习相对位置:由于正弦和余弦函数的周期性,对于任意固定偏移量 `k`,`PE(pos+k)`可以表示为 `PE(pos)` 的线性函数。这意味着模型可以很容易地通过学习注意力权重来关注相对位置,因为相对位置的编码可以通过简单的线性变换来获得。