【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵

一、对角矩阵

对角矩阵(Diagonal Matrix)是一种特殊的方阵,其非对角线上的元素均为零,只有对角线上的元素可能非零。具体来说,对于一个 n×n的矩阵 A=[^{a_{ij}}],如果满足

则 AA 称为对角矩阵。对角矩阵通常表示为:

例子

一个 3×3的对角矩阵可以写成:

性质

  1. 对角矩阵的加法和乘法:两个对角矩阵相加或相乘,结果仍是对角矩阵。

  2. 逆矩阵:如果对角矩阵的所有对角线元素均不为零,则其逆矩阵也是对角矩阵,且每个对角线元素为原矩阵对应元素的倒数。

  3. 行列式:对角矩阵的行列式等于其对角线元素的乘积。

应用

1. 高效存储与计算

  • 存储优化:对角矩阵只需要存储对角线上的元素,而不是整个矩阵,这大大减少了存储空间。例如,一个 n×nn×n 的对角矩阵只需要存储 nn 个元素,而不是 n2n2 个。

  • 快速运算:对角矩阵的加法、乘法和求逆等操作非常高效。例如,两个对角矩阵相乘只需要将对角线上的元素相乘,时间复杂度为 O(n)O(n)。


2. 线性代数与数值计算

  • 特征值与特征向量:对角矩阵的特征值就是其对角线上的元素,特征向量是标准基向量。这在求解特征值问题时非常有用。

  • 矩阵分解:在许多数值算法中,矩阵被分解为对角矩阵与其他矩阵的乘积(如奇异值分解、特征值分解等),以简化计算。

  • 迭代法求解线性方程组:对角矩阵常用于预处理(Preconditioning),以加速迭代法的收敛速度。


3. 图像处理

  • 图像滤波:对角矩阵可以用于表示某些线性滤波器,例如对图像的每个像素进行独立的缩放操作。

  • 颜色变换:在图像处理中,对角矩阵可以表示颜色空间的线性变换(如 RGB 到 YUV 的转换)。


4. 机器学习与数据科学

  • 协方差矩阵:在对数据进行标准化或降维时,协方差矩阵可能近似为对角矩阵,表示各特征之间相互独立。

  • 正则化:在机器学习中,对角矩阵常用于正则化项(如 L2 正则化),以控制模型的复杂度。

  • 优化算法:在梯度下降等优化算法中,对角矩阵可以用于调整学习率(如 AdaGrad、RMSProp 等自适应优化算法)。


5. 图论与网络分析

  • 图的拉普拉斯矩阵:在图论中,拉普拉斯矩阵的对角部分表示节点的度数,用于分析图的结构和性质。

  • 网络权重矩阵:在神经网络中,对角矩阵可以表示权重或激活函数的缩放因子。


6. 物理仿真与工程计算

  • 有限元分析:在工程仿真中,对角矩阵可以表示材料的刚度矩阵或质量矩阵。

  • 控制系统:在控制理论中,对角矩阵可以表示系统的状态转移矩阵或输入输出矩阵。


7. 稀疏矩阵计算

  • 对角矩阵是稀疏矩阵的一种特例,许多稀疏矩阵算法会特别优化对角矩阵的处理,以提高计算效率。

python演示对角矩阵

import numpy as np
import matplotlib.pyplot as plt# 创建一个对角矩阵
diagonal_elements = [1, 2, 3, 4]
diagonal_matrix = np.diag(diagonal_elements)print("对角矩阵:")
print(diagonal_matrix)# 可视化对角矩阵
plt.matshow(diagonal_matrix, fignum=1)
plt.title('对角矩阵可视化')
plt.colorbar()
plt.show()

二、对称矩阵

对称矩阵(Symmetric Matrix)是指一个方阵 A满足 A=AT ,即矩阵与其转置矩阵相等。换句话说,对于矩阵 A=[aij],如果满足:

      

则 AA 称为对称矩阵。

例子

一个 3×3  的对称矩阵如下:

 

可以看到,矩阵关于主对角线对称。


对称矩阵的性质

  1. 特征值为实数:对称矩阵的特征值都是实数。

  2. 特征向量正交:对称矩阵的特征向量是正交的。

  3. 可对角化:对称矩阵可以通过正交变换对角化,即 A=QΛQTA=QΛQT,其中 QQ 是正交矩阵,ΛΛ 是对角矩阵。


对称矩阵在计算机领域的应用

1. 机器学习与数据科学
  • 协方差矩阵:在统计学和机器学习中,协方差矩阵是对称的,用于描述数据集中各特征之间的线性关系。

  • 核函数矩阵:在支持向量机(SVM)等算法中,核函数矩阵是对称的,用于表示样本之间的相似性。

2. 图像处理
  • 图像滤波:某些滤波器(如高斯滤波器)的权重矩阵是对称的。

  • 结构张量:在图像分析中,结构张量是对称矩阵,用于描述图像的局部结构。

3. 图论与网络分析
  • 邻接矩阵:无向图的邻接矩阵是对称的,表示节点之间的连接关系。

  • 拉普拉斯矩阵:图的拉普拉斯矩阵是对称的,用于图分割和聚类分析。

4. 数值计算与优化
  • Hessian矩阵:在优化问题中,目标函数的 Hessian 矩阵是对称的,用于描述函数的二阶导数信息。

  • 预处理矩阵:在求解线性方程组时,对称矩阵常用于构造预处理子(Preconditioner)。

5. 物理仿真与工程计算
  • 刚度矩阵:在有限元分析中,刚度矩阵是对称的,用于描述结构的力学性质。

  • 质量矩阵:在动力学仿真中,质量矩阵通常是对称的。

6. 计算机图形学
  • 变换矩阵:在某些几何变换中,对称矩阵用于表示旋转、缩放等操作。

  • 惯性张量:在刚体动力学中,惯性张量是对称矩阵,用于描述物体的转动惯量。


python演示对称矩阵

import numpy as np
import matplotlib.pyplot as plt# 创建一个对称矩阵
symmetric_matrix = np.array([[1, 2, 3],[2, 5, 6],[3, 6, 9]
])print("对称矩阵:")
print(symmetric_matrix)# 可视化对称矩阵
plt.matshow(symmetric_matrix, fignum=2)
plt.title('对称矩阵可视化')
plt.colorbar()
plt.show()

     三、正交矩阵

    正交矩阵(Orthogonal Matrix)是指一个方阵 Q满足 Q^{T}Q=QQ^{T}=I,其中 Q^{T}是 Q 的转置矩阵,I是单位矩阵。换句话说,正交矩阵的列向量(或行向量)是标准正交的,即:

    1. 列向量两两正交:任意两个列向量的点积为零。

    2. 列向量长度为1:每个列向量的范数为1。

    正交矩阵的性质:

    • 正交矩阵的逆矩阵等于其转置矩阵:Q^{-1}=^{}Q^{T}

    • 正交矩阵的行列式为 ±1。

    • 正交矩阵保持向量的长度和夹角不变,因此表示旋转或反射变换。

    例子

    一个 2×2 的正交矩阵如下:

    这是一个旋转矩阵,表示将向量旋转角度 θ。


    正交矩阵在计算机领域的应用

    1. 计算机图形学
    • 旋转与反射:正交矩阵用于表示几何变换中的旋转和反射操作。例如,在3D图形中,旋转矩阵是正交矩阵。

    • 坐标系变换:正交矩阵用于将物体从一个坐标系转换到另一个坐标系。

    2. 机器学习与数据科学
    • 主成分分析(PCA):在PCA中,数据的主成分是通过正交变换(特征向量)得到的,这些特征向量构成正交矩阵。

    • 正交正则化:在深度学习中使用正交正则化(Orthogonal Regularization)来约束权重矩阵,以改善模型的泛化能力。

    3. 数值计算
    • QR分解:正交矩阵在QR分解中用于将矩阵分解为正交矩阵和上三角矩阵的乘积,广泛应用于求解线性方程组和特征值问题。

    • 奇异值分解(SVD):SVD将矩阵分解为两个正交矩阵和一个对角矩阵的乘积,用于降维和数据压缩。

    4. 信号处理
    • 傅里叶变换:离散傅里叶变换(DFT)的基函数构成正交矩阵,用于信号分析和滤波。

    • 小波变换:小波变换中的滤波器组通常由正交矩阵表示。

    5. 密码学
    • 正交编码:正交矩阵用于设计纠错码和加密算法,利用其正交性质确保数据的完整性和安全性。

    6. 物理仿真
    • 刚体动力学:正交矩阵用于描述刚体的旋转和姿态变化。

    • 量子计算:在量子计算中,量子门操作通常由酉矩阵(复数域的正交矩阵)表示。

    7. 计算机视觉
    • 相机标定:正交矩阵用于相机的内外参数标定,将3D世界坐标转换为2D图像坐标。

    • 姿态估计:正交矩阵用于估计物体的姿态(位置和方向)。


    python演示正交矩阵

    import numpy as np
    import matplotlib.pyplot as plt# 创建一个正交矩阵
    orthogonal_matrix = np.array([[1/np.sqrt(2), 1/np.sqrt(2)],[-1/np.sqrt(2), 1/np.sqrt(2)]
    ])# 验证是否为正交矩阵
    assert np.allclose(np.dot(orthogonal_matrix.T, orthogonal_matrix), np.eye(2)), "矩阵不是正交矩阵"print("正交矩阵:")
    print(orthogonal_matrix)# 可视化正交矩阵
    plt.matshow(orthogonal_matrix, fignum=2)
    plt.title('正交矩阵可视化')
    plt.colorbar()
    plt.show()

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37615.html

    如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    C语言 数据结构【动态顺序表】详解

    引言 详细介绍了顺序表中各个接口的实现,一定要亲自动手敲一遍,要能想象出具体的图像 第一次敲可能不能完全靠自己敲出来(很正常),过一段时间可以根据顺序表的原理敲第二遍 孰能生巧 一、线性表 在介绍顺序表之前先…

    人脸表情识别系统分享(基于深度学习+OpenCV+PyQt5)

    最近终于把毕业大论文忙完了,众所周知硕士大论文需要有三个工作点,表情识别领域的第三个工作点一般是做一个表情识别系统出来,如下图所示。 这里分享一下这个表情识别系统: 采用 深度学习OpenCVPyQt5 构建,主要功能包…

    集成学习(下):Stacking集成方法

    一、Stacking的元学习革命 1.1 概念 Stacking(堆叠法) 是一种集成学习技术,通过组合多个基学习器(base learner)的预测结果,并利用一个元模型(meta-model)进行二次训练&#xff0c…

    tcping 命令的使用,ping IP 和端口

    1. ‌Windows系统安装‌ ‌下载tcping工具‌:根据系统位数(32位或64位)下载对应的tcping.exe文件。‌安装步骤‌: 将下载的tcping.exe文件复制到C:\Windows\System32目录下。如果下载的是64位版本,需将文件名改为tcpi…

    浅谈跨平台框架的演变(H5混合开发->RN->Flutter)

    引言 这里分为四个阶段: 第一阶段 : 原生开发 第二阶段 : H5混合开发 第三阶段: 跨平台RN 第四阶段: 跨平台Flutter 正文 第一阶段: 原生开发 开发成本比较大 : 需要Android 和ios 开发两…

    《TCP/IP网络编程》学习笔记 | Chapter 20:Windows 中的线程同步

    《TCP/IP网络编程》学习笔记 | Chapter 20:Windows 中的线程同步 《TCP/IP网络编程》学习笔记 | Chapter 20:Windows 中的线程同步用户模式和内核模式用户模式同步内核模式同步 基于 CRITICAL_SECTION 的同步内核模式的同步方法基于互斥量对象的同步基于…

    力扣45.跳跃游戏

    45. 跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09; 代码区&#xff1a; #include<vector> class Solution {public:int jump(vector<int>& nums) {int ans[10005] ;memset(ans,1e4,sizeof(ans));ans[0]0;for(int i0;i<nums.size();i){for(int j1;j…

    深入理解 Collections.emptyList():优雅处理空列表的利器!!!

    &#x1f680; 深入理解 Collections.emptyList()&#xff1a;优雅处理空列表的利器&#xff01;&#x1f527; 大家好&#xff01;&#x1f44b; 今天我们来聊聊 Java 中一个非常实用但容易被忽视的小工具——Collections.emptyList()。&#x1f389; 如果你经常需要返回一个…

    SpringBoot教程(十四) SpringBoot之集成Redis

    SpringBoot教程&#xff08;十四&#xff09; | SpringBoot之集成Redis 一、Redis集成简介二、集成步骤 2.1 添加依赖2.2 添加配置2.3 项目中使用之简单使用 &#xff08;举例讲解&#xff09;2.4 项目中使用之工具类封装 &#xff08;正式用这个&#xff09;2.5 序列化 &…

    VC6.0图文安装教程

    VC6.0图文安装教程 ​ 1、首先&#xff0c;右击安装包&#xff0c;以管理员身份运行 2、点击下一步 ​​​​ 3、点击下一步 4、选择安装路径&#xff0c;点击下一步 5、点击下一步 6、点击安装 7、安装ing 8、点击完成 至此&#xff0c;安装完成&#xff01;

    用户说 | 零基础用通义灵码 AI 程序员开发个人笔记网站

    作者&#xff1a;宋镇江&#xff0c;安阳幼儿师范高等专科学校数字媒体技术专业教师 通义灵码是一款基于通义大模型的智能编码辅助工具&#xff0c;支持自然语言生成代码、单元测试生成、代码注释生成等功能&#xff0c;兼容多种主流IDE和编程语言。对于零基础用户&#xff0c…

    试验一 mybatis 入门操作

    试验一 mybatis 入门操作 一 实验目的 1.掌握mybatis基础操作&#xff0c;包括如何在maven工程中引入依赖&#xff0c;创建mapper文件&#xff0c;核心配置文件&#xff0c;映射文件&#xff0c;并测试对数据库表基本的的CRUD操作&#xff1b; 2.掌握核心配置文件中几个重要标…

    使用Gitee Go流水线部署个人项目到服务器指南

    使用Gitee Go流水线部署个人项目到服务器指南 前言&#xff01;&#xff01;&#xff01; 本文解决的问题&#xff1a; 你有一台ECS服务器&#xff0c;你在上面部署了一个Java服务也就是一个jar&#xff0c;你觉着你每次手动本地打包&#xff0c;上传&#xff0c;在通过命令去…

    LCCI ESG 中英联合认证国际分析师适合的岗位

    LCCI ESG中英联合认证国际分析师领域热门岗位大揭秘&#xff01;&#x1f30d; 大家好&#xff01;今天我们来探讨LCCI ESG中英联合认证国际分析师领域的热门岗位&#xff0c;看看是否有适合你的选择。 1️⃣ LCCI ESG中英联合认证国际分析师报告专员&#xff1a;主要负责编制…

    Compose 实践与探索十五 —— 自定义触摸

    1、自定义触摸与一维滑动监测 之前我们在讲 Modifier 时讲过如下与手势检测相关的 Modifier&#xff1a; Modifier.clickable { } Modifier.combinedClickable { } Modifier.pointerInput {detectTapGestures { } }这里对以上内容就不再赘述了&#xff0c;直接去讲解更复杂的…

    【Linux】Makefile秘籍

    > &#x1f343; 本系列为Linux的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:【小编的个人主页】 >小编将在这里分享学习Linux的心路历程✨和知识分享&#x1f50d; >如果本篇文章有问题&#xff0c;还请多多包涵&a…

    LDAP从入门到实战:环境部署与配置指南(上)

    #作者&#xff1a;朱雷 文章目录 一、LDAP 简介1.1. 什么是目录服务1.2. 什么是 LDAP1.3. LDAP的基本模型 二、Ldap环境部署2.1.下载软件包2.2.安装软件2.3.编辑配置文件2.4.启动服务 一、LDAP 简介 1.1. 什么是目录服务 目录是专门为搜索和浏览而设计的专用数据库&#xff…

    《C++智能指针:建议使用 make_shared 代替 shared_ptr》

    《C 智能指针&#xff1a;长达数十年的血泪史&#xff0c;一步步征服内存泄漏》-CSDN博客 shared_ptr<int> sp1(new int(10)); 这句代码实际存在两个内存开辟&#xff0c;一是开辟我们要托管的内存资源 &#xff0c;二是开辟引用计数的资源&#xff0c;引用技术也是new出…

    代码随想录刷题day50|(回溯算法篇)131.分割回文串▲

    目录 一、回溯算法基础知识 二、分割回文串思路 2.1 如何切割 2.2 判断回文 2.3 回溯三部曲 2.4 其他问题 三、相关算法题目 四、总结 一、回溯算法基础知识 详见&#xff1a;代码随想录刷题day46|&#xff08;回溯算法篇&#xff09;77.组合-CSDN博客 二、分割回文…

    vivo 湖仓架构的性能提升之旅

    作者&#xff1a;郭小龙 vivo互联网 大数据高级研发工程师 导读&#xff1a;本文整理自 vivo互联网 大数据高级研发工程师 郭小龙 在 StarRocks 年度峰会上的分享&#xff0c;聚焦 vivo 大数据多维分析面临的挑战、StarRocks 落地方案及应用收益。 在 即席分析 场景&#xff0c…