通俗易懂的Gram矩阵讲解

Gram矩阵(Gram matrix)是一个数学工具,常用于线性代数、机器学习和图像处理中。它本质上是一个"相似度表格",用来描述一组向量(或数据点)之间两两的相似程度。咱们用日常生活比喻来讲解,避开复杂公式,先抓本质。

1. 基本想法:向量像"人",Gram矩阵像"朋友圈相似度表"
  • 想象你有几个朋友(对应"向量"),每个朋友有自己的特征,比如身高、体重、性格分数等(这些是向量的"维度")。
  • 你想知道他们之间谁和谁更"相似"?可以用"内积"(dot product)来衡量:两个朋友的特征值相乘再加起来,得分越高越相似(比如都高个子、都外向,得分就高)。
  • Gram矩阵就是一个表格:行和列都对应这些朋友,表格里的每个格子填的就是他们俩的相似度分数。
    • 对角线:每个朋友和自己的相似度(总是正的,代表"强度")。
    • 非对角线:不同朋友间的相似度(可能正、负或零,表示相似、相反或无关)。
2. 怎么计算?(简单步骤)
  • 假设你有一组向量,放在一个矩阵V里(每列一个向量)。
  • Gram矩阵G = V转置() × V(矩阵乘法)。
    • "转置"就是把行变列(像把表格翻转90度)。
    • 乘法结果的每个元素 = 向量 i 和 向量 j 的内积。
  • 如果向量是行向量,就

这张图其实把格拉姆矩阵 (Gram matrix)= "两两做内积的表格"画得很直观:


1)先读图:它在做什么乘法?

图里中间那根彩色"竖条"矩阵写着 A,它的列是

左边是 ,也就是把这些列向量转成行向量:

然后图在算:


2)为什么 就是"格拉姆矩阵"?

矩阵乘法的第 (i,j) 个元素,是"第 i 行"点乘"第 j 列"。

在这里:

  • 的第 i 行就是

  • A 的第 j 列就是

所以

这句话就是格拉姆矩阵的定义:

Gram 矩阵 G 的元素 ​ = 向量 ​ 和 ​ 的内积。

图右侧那一格格小方块,就是把所有 ​ 和 两两"点一下",填成一张表。


3)每个格子在"几何上"是什么意思?

记住内积的几何意义:

所以格拉姆矩阵每一格都在回答一个问题:这两根向量有多"同向/相似"?

  • 对角线

    就是每根向量自己的"长度平方"。

    图里对角线方块颜色"很纯"(同色),表示"自己和自己匹配度最大"。

  • 非对角 (i≠j)

    • 正交 (90°),cos⁡θ=0 ⇒

      这格就"很弱/接近空白"(相似度为 0)。

    • 若夹角小、同向,cos⁡θ>0 ⇒

      这格就"大"(相似)。

    • 若反向,cos⁡θ<0 ⇒

你可以把右边那张矩阵当作:"向量相似度热力图(但用内积计量)"


4)格拉姆矩阵有哪些关键性质(机器学习里很常用)?

  1. 对称

    因为

  2. 半正定(PSD):对任意 x,都有

    这点非常重要:很多优化问题靠它保证"碗状凸性"。

  3. 秩不超过维度

    如果每个 ,则 rank(G)≤d。

    这意味着:就算你有很多向量,它们的"独立信息"也被空间维度限制。


5)它在机器学习里常出现在哪?

  • 线性回归 / 最小二乘 :经典的 (这就是 Gram)

  • 核方法 / SVM :把内积换成核函数 ,得到"核 Gram 矩阵"

  • 相似度矩阵:用点积/余弦相似度衡量样本之间的接近程度

  • PCA/协方差相关 :中心化后 和协方差矩阵只差一个缩放

我们就用一个带具体数字 的小例子,把图里的"点点(内积)"彻底算清楚------你会直观看到:右边那张方格表就是把每两根列向量都"点乘"一遍


1)造一个和图一致的场景:A 的列就是 4 根向量

设 A 有 4 列(对应图里 4 种颜色的竖条),每列是一个 2 维向量:

把它们并排放成矩阵:


2)格拉姆矩阵 :每个格子就是一个"内积"

我们把所有两两内积都算出来(这就是右侧方格表每个格子的数):

先算对角线(自己点自己 = 长度平方)

再算非对角线(两两相似度)

于是整张"方格表"(Gram 矩阵)就是:

你看它天然就对称 (因为 ):左下角就是右上角的镜像------这也和图的方格"左右对称感"一致。


3)把每个数翻译成几何含义:同向、正交、反向

内积和角度关系:

所以:

  • g13=0 ⇒ v1​ 与 v3​ 正交(90°)

  • g14=−1<0 ⇒ v1​ 与 v4​ 偏反向(钝角)

  • g12=1>0 ⇒ v1​ 与 v2​ 偏同向(锐角)

我们甚至能算出角度(用余弦):

所以 Gram 矩阵就是"角度 + 长度"的编码表

对角线管长度,非对角线管夹角(方向相似度)。


4)为什么机器学习里爱用它?一句话就够

如果把 ​ 当成样本(或特征向量),那么 G 就是:

样本两两相似度矩阵(用内积做相似度)

  • 在线性回归里: 就是 Gram(决定曲面形状、可解性、病态程度)

  • 在核方法里:把内积换成 ,得到"核 Gram 矩阵",不用显式进高维也能做相似度

图中**"点最多"**其实是在强调:每个向量里有很多个分量 (图里用一串黑点 + 省略号表示),而 Gram 矩阵里的一个格子 ,就是把这"一长串点"逐个相乘再全部相加得到的。

我就拿图里最典型的那个格子------左上角 g11​ (黄色行 × 黄色列,也就是 ​ 和 v1​)来示范:这格对应的"点"(分量)最多、最直观。


1)把图里的"点点"写成符号

图中黄色那行是:

意思是:v1 有很多个分量。把它写成具体形式就是:

这里每个 ​ 就对应图里的一颗黑点(省略号表示中间还有很多颗)。


2)"一个格子"是怎么来的:逐点相乘 + 全部相加

右侧 Gram 矩阵 的左上角格子是:

按"点乘"的规则:

也就是:

这就是为什么对角线是"长度平方":因为自己跟自己点乘,就是"每个点自己乘自己,再求和"。


3)同理,右上角那种"双色格子"是怎么来的?

比如第一行第三列那个格子(黄色行 × 青色列):

如果

那么:

你可以把它想成:

同一"高度"的点配对相乘(第 1 个点乘第 1 个点,第 2 个点乘第 2 个点......),最后把所有乘积加起来,塞进那个格子。

图里用"双色"表示:这个格子来自"黄色那行的向量"和"青色那列的向量"的配对。


4)一句话把图讲透

  • 左边:很多行 ​(每行很多"点")

  • 中间:很多列 ​(每列很多"点")

  • 右边:每个格子 把这两串点逐点相乘再求和

下面我们来把第一行完全展开成"第1点×第1点 + 第2点×第2点 + ......"的形式,和图里的颜色位置一一对应。

"第一行"在图里就是:最上面那条(黄色那条)行向量 ,去和中间矩阵 A 的每一列 依次"点乘",得到右侧 Gram 矩阵的第一行


1)先把第一行写成公式:第一行 = v1​ 和所有列两两内积

那么 Gram 矩阵第一行就是:

也就是:

  • 第 1 个格子:

  • 第 2 个格子:

  • ...

  • 第 n 个格子:


2)把"点最多"的意思展开:每个格子都是"一长串点逐个相乘再相加"

假设每个向量有 m 个分量(图里黑点很多 + 省略号):

那么第一行第 j 列的格子:

这句话对应图里的动作就是:

黄色那一行的第 1 个点 × 第 j 列的第 1 个点
+ 黄色那一行的第 2 个点 × 第 j 列的第 2 个点
+ ...(一直配对到最后一个点)


3)第一行里最特殊的那个格子:第一个 g11

第一行第一个格子(黄色×黄色):

所以第一行的第一个格子永远是"黄色向量的长度平方",通常也会是这一行里最"显眼/大"的值之一(图上常用更强的视觉强调来画对角线)。


4)用 3 个点做一个"微缩版",你会秒懂第一行怎么填

把"很多点"先缩成 3 个点(只是演示规则):

那么第一行就是:

把 3 换成 m,就是图里"点最多"的真实情况。

注意点(避免坑)
  • Gram矩阵总是方形、对称、正半定(数学上保证它"稳定")。
  • 如果向量是归一化的(长度1),它就类似相关系数矩阵(-1到1)。
  • 在编程中,用NumPy超简单:G = np.dot(V.T, V)。
相关推荐
羊仔AI探索2 小时前
前端已死,未来已来,谷歌Gemini 3 Pro杀回来了!
前端·人工智能·ai·aigc
liulanba2 小时前
AI Agent技术完整指南 第四部分:Transformer架构与实践
人工智能·架构·transformer
永远都不秃头的程序员(互关)2 小时前
【无标题】
人工智能
轻竹办公PPT2 小时前
2026 年 AI PPT 工具市场观察:国产工具与海外竞品的本土化对决,谁更懂中文职场
人工智能·python·powerpoint
咚咚王者2 小时前
人工智能之核心基础 机器学习 第二十章 深度学习入门
人工智能·深度学习·机器学习
Godspeed Zhao2 小时前
从零开始学AI5——数学应知应会0
人工智能
腾讯云大数据2 小时前
【数据湖仓】腾讯云发布面向AI的数据湖方案:TCLake+EMR打造AI-Ready数据底座
人工智能·云计算·腾讯云
橘子师兄2 小时前
C++AI大模型接入SDK—API接入大模型思路
开发语言·数据结构·c++·人工智能
羞儿2 小时前
mAP, AUOCR, AUPR怎么计算、怎么用
人工智能·计算机视觉·指标计算