简单理解格拉姆矩阵(Gram matrix)

从向量点乘角度有助于理解格拉姆矩阵。向量点乘可以看作衡量两个向量的相似程度,对于二维向量来说,两个单位向量,方向一致,点乘为1,相互垂直,点乘为0,方向相反,点乘为-1.因为在单位向量的情况下,结果由两个向量夹角cos的值决定。而对于多维向量,向量点乘就是对应位置乘积之后相加,得到的结果仍然是标量,含义和二维向量一样。格拉姆矩阵就是由两两向量内积组成,如果到这里直接提出格拉姆矩阵可以度量各个维度自己的特性以及各个维度之间的关系的结论,我当时刚看到的时候还是不太懂。可以举个例子来看:
在这里插入图片描述
我们可以记图中红色channel为feature map的通道i,黄色为通道j,吴恩达的例子是通道i用于分辨图片中是否有竖条纹,通道j用于分辨图片中的橙色,那么把这两层flatten之后进行对应元素点乘相加的操作,得到的格拉姆矩阵中的值便可以用之前向量点乘的概念来理解,即便表示通道i和j在flatten之后的相似度,这里就是图片中竖条纹和橙色是否倾向于同时出现。格拉姆矩阵的维度由通道数决定的,这里在只有i,j两个通道的情况下,矩阵维度是2*2。到这里我们就可以看出格拉姆矩阵中的值便是在衡量不同通道之间的相关性。值得一提的是,因为点乘的对象包括通道自身,所以格拉姆矩阵的对角线元素还可以体现出特征在图片中出现的量。到这里格拉姆矩阵可以度量自己的特性以及各个维度之间的特性好像也就不难理解。

作者:核桃
链接:https://www.zhihu.com/question/49805962/answer/781814635
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,格拉姆角场(Grammian)通常用于处理线性代数中的特征值问题,特别是矩阵的秩和奇异值分解(SVD)。格拉姆矩阵是由原矩阵与其转置相乘得到的,而角场则涉及到矩阵的秩变化情况。以下是一个简单的示例,展示了如何在Python中计算并可视化一个矩阵格拉姆角场: ```python import numpy as np from scipy.linalg import svd import matplotlib.pyplot as plt def gram_schmidt_field(matrix, num_points=100): # 计算格拉姆矩阵 gram = matrix @ matrix.T # SVD分解 u, s, vh = svd(gram) # 创建网格 x, y = np.meshgrid(np.linspace(-1, 1, num_points), np.linspace(-1, 1, num_points)) xy = np.stack([x.flatten(), y.flatten()]) # 将二维点映射到特征向量空间 projected_points = u @ xy # 检查每个点对应的秩 ranks = np.linalg.matrix_rank(projected_points, tol=1e-6, hermitian=True) # 归一化并绘制 scaled_ranks = (ranks - ranks.min()) / (ranks.max() - ranks.min()) plt.imshow(scaled_ranks.reshape(num_points, num_points), cmap='hot', extent=(-1, 1, -1, 1)) plt.xlabel('Column Index') plt.ylabel('Row Index') plt.title('Gauss-Newton Field for Matrix') plt.colorbar() plt.show() # 示例用法 matrix = np.random.rand(10, 10) # 假设这是一个10x10的随机矩阵 gram_schmidt_field(matrix) ``` 这个代码首先计算给定矩阵格拉姆矩阵,然后通过奇异值分解(SVD)找到它的左奇异向量。之后,它将二维坐标点映射到这些奇异向量的空间,并计算每个点对应的小秩区域,最终可视化为热力图。 相关问题: 1. SVD在格拉姆角场中起到了什么作用? 2. 如何理解矩阵秩在格拉姆角场中的意义? 3. 在实际问题中,使用格拉姆角场有什么应用场景?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值