向量

介绍

向量是 线性代数 的基础,也是深度学习(比如大模型的词嵌入、注意力机制)中无处不在的工具。

定义

向量(Vector)是既有大小,又有方向的量,可以简单理解为:

  • 数学上:一维有序 数组(比如 [1, 2, 3]);
  • 几何上:空间中的一条 有向线段(比如从原点指向 (1,2) 的箭头);
  • 深度学习中:用来表示特征(如词嵌入向量)、参数(如模型权重)、梯度(如优化时的梯度向量)的基本单元。

与标量区别

标量:只有大小,如 5、3.2,向量的关键是 “有序”—— 顺序不同,向量就不同:

  • [1, 2] ≠ [2, 1](几何上是不同方向的箭头)。

数学属性

1. 向量的维度

向量的维度 = 向量中元素的个数,比如:

  • 2维向量:[x, y](平面直角坐标系中的点);
  • 3维向量:[x, y, z](空间中的点);
  • 高维向量:[a1, a2, ..., an](深度学习中常见,如768维的BERT词嵌入)。

例子

坐标 (x, y) 的含义

  • 第一个数 x:在 x 轴方向 走多少步
  • 第二个数 y:在 y 轴方向 走多少步

所以:

  • (3, 0) = 在 x 轴走 3 步,y 轴不走
  • (0, 3) = 在 y 轴走 3 步,x 轴不走

如下图:

例子:

  • (0.5,0.5)
  • (0.7,0.5)
  • (-0.6,0.5)

2. 向量的基本运算

运算 数学定义(以二维向量为例) 含义
加法 [x1,y1] + [x2,y2] = [x1+x2, y1+y2] 几何上:向量首尾相连
数乘 k * [x,y] = [k*x, k*y] 缩放向量长度,k为负数则反向
点积(内积) [x1,y1] · [x2,y2] = x1x2 + y1y2 结果是标量,衡量向量相似度
模长(长度) v = √(x² + y²) 几何上:向量的长度

3. 关键衍生概念

  • 单位向量:模长=1的向量(用于表示方向,如 [1,0] 是x轴正方向);
  • 余弦相似度:cosθ = (v1·v2) / (||v1||×||v2||),衡量两个向量的方向相似度(θ是夹角,值越接近1,方向越一致);
  • 正交向量:点积=0的两个向量(几何上垂直,如 [1,0] 和 [0,1])。

PyTorch中的向量

在PyTorch中,向量就是一维张量(1阶张量),下面是核心操作示例:

1. 创建向量(一维张量)

import torch

# 1. 从列表创建向量
v1 = torch.tensor([1.0, 2.0, 3.0])  # 3维向量(一维张量)
v2 = torch.tensor([4.0, 5.0, 6.0])

# 2. 验证向量属性(一维张量)
print("向量v1:", v1)
print("维度数(阶):", v1.ndim)  # 1(向量的核心特征:ndim=1)
print("形状:", v1.shape)        # torch.Size([3])(3维向量)
print("元素个数:", v1.numel())  # 3

2. 向量的基本运算

# 1. 向量加法
v_add = v1 + v2
print("向量加法:", v_add)  # tensor([5., 7., 9.])

# 2. 数乘(缩放)
v_mul = 2 * v1
print("数乘(×2):", v_mul)  # tensor([2., 4., 6.])

# 3. 点积(内积,用torch.dot)
dot_product = torch.dot(v1, v2)
print("点积:", dot_product)  # 1×4 + 2×5 + 3×6 = 32 → tensor(32.)

# 4. 模长(用torch.norm)
norm_v1 = torch.norm(v1)
print("v1模长:", norm_v1)  # √(1²+2²+3²)=√14 ≈3.7417 → tensor(3.7417)

# 5. 余弦相似度
cos_sim = dot_product / (norm_v1 * torch.norm(v2))
print("余弦相似度:", cos_sim)  # ≈0.9744(接近1,说明v1和v2方向高度相似)

3. 向量的常见操作

# 1. 转为单位向量(归一化)
v1_unit = v1 / norm_v1
print("v1单位向量:", v1_unit)
print("单位向量模长:", torch.norm(v1_unit))  # tensor(1.)

# 2. 向量减法
v_sub = v2 - v1
print("向量减法:", v_sub)  # tensor([3., 3., 3.])

# 3. 索引访问向量元素
print("v1第0个元素:", v1[0])  # tensor(1.)
print("v1最后一个元素:", v1[-1])  # tensor(3.)

在深度学习中的应用

向量是深度学习的“基本砖块”,核心场景包括:

1. 词嵌入(Word Embedding)

  • 每个单词被表示为一个高维向量(如768维),向量的相似度对应单词的语义相似度;
  • 例:“猫”和“狗”的向量余弦相似度高,“猫”和“汽车”的相似度低。

2. 注意力机制

  • Query/Key/Value都是向量,注意力打分的核心是Query和Key的点积(衡量匹配度);
  • 例:score = Q · K^T(批量点积),分数越高,越关注对应位置的信息。

3. 模型参数与梯度

  • 模型的权重、偏置都是向量/矩阵(高维向量);
  • 梯度下降中,梯度是参数的偏导数组成的向量,优化方向是“负梯度方向”。

4. 特征表示

  • 图像/文本/语音的特征最终都会被编码为向量,作为模型的输入;
  • 例:一张图片经CNN提取特征后,得到一个1024维的特征向量。

注意

  1. 向量 vs 一维张量:在PyTorch中,向量就是ndim=1的张量,shape=[n](而非[1,n]或[n,1],这两个是二维张量/矩阵);
  2. 高维向量的直观性:高维向量(如768维)无法几何可视化,但数学运算规则和低维向量完全一致;
  3. 向量运算的设备一致性:GPU上的向量和CPU上的向量不能直接运算,需用to(device)统一设备。

总结

  1. 向量是有大小、有方向的一维有序数组,在PyTorch中对应ndim=1的张量;
  2. 核心运算:加法、数乘、点积、模长计算,其中点积是衡量向量相似度的关键;
  3. 深度学习中,向量是词嵌入、特征表示、注意力打分、梯度优化的核心载体;
  4. 关键衍生概念:单位向量、余弦相似度(大模型中判断语义相似的核心指标)。

掌握向量的基本概念和运算,就能理解深度学习中大部分基础操作的数学本质——比如注意力机制的打分、词嵌入的相似度计算,本质都是向量的点积和余弦相似度。


原文出处:/show_1GW2ZghpL9o0.html