矩阵乘法的直觉

news2024/11/23 14:59:28

矩阵乘法是什么意思?

一种常见的观点是矩阵乘法缩放/旋转/倾斜几何平面:

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

这在第一次学习向量时很有用:向量输入,新向量输出。不幸的是,这可能导致过度依赖几何可视化。

如果有 20 个家庭来参加你的烧烤,你如何估计你需要的热狗?(嗯……20 个家庭,假设每个家庭 3 人,每人 2 个热狗……大约 20 * 3 * 2 = 120 个热狗。)

你可能不会想“哦,我需要一个邀请-家庭规模-饥饿棱镜的体积!”。对于大型矩阵,我不会考虑 500 维向量,只会考虑要修改的数据。

另一种开发是矩阵乘法组成线性运算。

这是技术上准确的定义:是的,矩阵乘法会产生一个由原始函数组成的新矩阵。但是,有时被操作的矩阵不是线性运算,而是一组向量或数据点。我们需要另一种直觉来了解正在发生的事情。

我将以软件开发人员的观点来看待这个问题:

矩阵乘法与信息流有关,将数据转换为代码并转换回。

我认为线性代数是“数学电子表格”:

  • 我们将信息存储在各种电子表格(“矩阵”)中
  • 一些数据被视为要应用的函数,其他数据被视为要使用的数据点
  • 我们可以根据需要在向量和函数解释之间切换

有时我会将数据视为几何向量,有时我会将矩阵视为组合函数。但我主要考虑的是系统中的信息流动。

1、开发者的直觉:代码就是数据,数据就是代码

拿你最喜欢的食谱来说吧。如果你把这些词解释为指令,你最终会得到馅饼、松饼、蛋糕等。

如果你把这些词解释为数据,那么文本就是可以调整的散文:

  • 将测量单位转换为公制单位
  • 由于过敏而更换配料
  • 根据海拔高度或不同的设备进行调整

结果是一个新的食谱,可以进一步调整,或作为指令执行,制作不同的馅饼、松饼、蛋糕等。编译器将程序视为文本,对其进行修改,并最终输出“指令”——可能是另一层的文本。

这就是线性代数。我们将“3 4 5”等原始信息视为向量或函数,具体取决于它的写法:

按照惯例,垂直列通常是一个向量,水平行通常是一个函数:

  • [3; 4; 5] 表示 x = (3, 4, 5)。这里,x 是一个数据向量(我使用 ; 来分隔每行)。
  • [3 4 5] 表示 f(a, b, c) = 3a + 4b + 5c。这是一个接受三个输入并返回单个结果的函数。

然后就是顿悟时刻:数据就是代码,代码就是数据!

包含水平函数的行实际上可以是三个数据点(每个数据点都有一个元素)。垂直数据列实际上可以是三个不同的函数,每个函数都采用一个参数。

啊。这变得简洁了:根据期望的结果,我们可以以不同的顺序组合数据和代码。

2、矩阵转置

矩阵转置交换行和列。这是它在实践中的含义。

如果 x 是一个有 3 个条目的列向量( [3; 4; 5] ),那么 x' 是:

  • 采用 3 个参数的函数( [3 4 5]
  • x'仍然可以保留为数据向量,但作为三个单独的条目。转置“将其拆分”。

类似地,如果 f = [3 4 5] 是我们的行向量,那么 f' 可以表示:

  • 垂直列中的单个数据向量。
  • f' 分为三个函数(每个函数采用一个输入)。

让我们在实践中使用它。

当我们看到 x' * x 时,我们的意思是:`x'`(作为单个函数)正在对 x(单个向量)进行操作。结果是点积。换句话说,我们将数据应用于自身。

当我们看到 x * x' 时,我们的意思是 x(作为一组函数)正在对 x'(一组单独的数据点)进行操作。结果是一个网格,我们将每个函数应用于每个数据点。在这里,我们以每种可能的排列方式将数据与其自身混合在一起。

我认为 xx 是 x(x)。它是作用于“向量 x”的“函数 x”。这有助于计算协方差矩阵,即数据中自相似性的度量。

3、将直觉付诸实践

这对我们有什么帮助?当我们看到这样的方程式(来自机器学习课程):

我现在立刻感觉到发生了什么。在第一个方程式中,我们将 θ(通常是一组数据参数)视为一个函数,并将 作为一个参数传入。这应该会给我们一个单一的值。

更复杂的推导如下:

可以同样解读。在某些情况下,这会变得很棘手,因为我们将数据存储为矩阵中的行(而不是列),但现在我有更好的工具可以跟进。你可以开始估计何时会得到一个单一的值,或者何时会得到一个“排列网格”。

几何缩放和线性组合都有它们的位置,但在这里我想考虑信息。“x 中的信息正在成为一个函数,我们将它自己作为参数传递。”

长话短说,不要局限于单一的直觉。乘法从重复加法发展而来,到缩放(小数),到旋转(虚数),到“应用”一个数字到另一个数字(积分),等等。为什么矩阵乘法不一样呢?


原文链接:矩阵乘法的直觉 - BimAnt

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript妙笔生花:打造沉浸式中国象棋游戏体验

前言 随着信息技术的飞速发展,Web开发领域也出现了翻天覆地的变化。JavaScript作为前端开发中不可或缺的编程语言,其重要性不言而喻。而当我们谈论到利用JavaScript打造一款沉浸式的中国象棋游戏体验时,我们不仅仅是在开发一个游戏&#xff0…

Web应用安全测试-权限篡改

Web应用安全测试-权限篡改 任意用户密码修改/重置 漏洞描述: 可通过篡改用户名或ID、暴力破解验证码等方式修改/重置任意账户的密码。 测试方法: 密码修改的步骤一般是先校验用户原始密码是否正确,再让用户输入新密码。修改密码机制绕过方式…

【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试

​ 使用 stress 对CPU进行压力测试 我也是一个ubuntu初学者,分享是Linux的优良美德。写的不好请大佬不要喷,多谢支持。 sudo apt-get update 日常先更新再安装东西不容易出错 sudo apt-get upgrade -y 继续升级一波 sudo apt-get install -y linux-to…

微信分销商城小程序源码系统在线搭建 前后端分离 带完整的安装代码包以及搭建教程

系统概述 本微信分销商城小程序源码系统采用先进的前后端分离架构设计,前端使用Vue.js框架开发,后端则基于Spring Boot构建,确保了系统的高可维护性、扩展性和性能。系统集商品展示、在线交易、会员管理、分销推广、订单处理、数据统计等功能…

redis存储结构

概要 首先,redis是一种"键值对"(key-value)数据库,也就是说,redis中存储的用户数据都是以key-value的方式存在的,而这些键值对存储于哈希表,这也解释了为什么redis提供的set、lpush、…

vue标签组

先看样式 再看代码 <div v-else class"relative"><n-tabs ref"tabsInstRef" v-model:value"selectValue" class"min-w-3xl myTabs"><n-tab-panev-for"(tab) in songsTags" :key"tab.name" displ…

Java集合框架源码分析:ArrayList

文章目录 一、ArrayList特性二、ArrayList底层数据结构三、ArrayList继承关系1、Serializable标记性接口2、Cloneable标记性接口3、RandomAccess标记性接口4、AbstractList抽象接口 四、ArrayList源码分析1、构造方法2、添加方法3、删除方法4、修改方法5、获取方法6、转换方法7…

数据结构(DS)C语言版:学习笔记(4):线性表

参考教材&#xff1a;数据结构C语言版&#xff08;严蔚敏&#xff0c;吴伟民编著&#xff09; 工具&#xff1a;XMind、幕布、公式编译器 正在备考&#xff0c;结合自身空闲时间&#xff0c;不定时更新&#xff0c;会在里面加入一些真题帮助理解数据结构 目录 2.1线性…

青书学堂 看视频 耍课时

1. 获取课程节点id ( /nynzy/Student/Course/GetStudyRecordAndScore ) 接口地址 2. 把所有的nodeId 保存下来 保存到 old.txt 格式 课程id 与 nodeId 用 | 隔开 3. 然后创建 test.php 注意把 cookie 换成自己的 <?php$oldFilename ./old.txt; $newFilename ./new.…

idea插件开发之在项目右键添加菜单

写在前面 本文看下如何在右键列表中增加菜单。 正戏 首先创建一个Action&#xff0c;要显示的menu选择ProjectViewPopupMenu&#xff0c;如下&#xff1a; action public class CAction extends AnAction {Overridepublic void actionPerformed(AnActionEvent e) { // …

Excel 常用技巧(四)

Microsoft Excel 是微软为 Windows、macOS、Android 和 iOS 开发的电子表格软件&#xff0c;可以用来制作电子表格、完成许多复杂的数据运算&#xff0c;进行数据的分析和预测&#xff0c;并且具有强大的制作图表的功能。由于 Excel 具有十分友好的人机界面和强大的计算功能&am…

新项目Springboot报错: Whitelabel Error Page

问题&#xff1a; 新项目Springboot报错: Whitelabel Error Page 解析&#xff1a; 一般出现这个问题的原因就是目录结构不正确&#xff0c;导致主应用程序类&#xff08;Main application class&#xff09;扫描不到controller类。 默认情况下主应用程序类&#xff08;Main …

【Git】win本地 git bash:Connect reset by 20.205.243.166 port22报错问题解决

win10 git bash 控制台 reset 22端口拒绝连接问题&#xff1a; Connection reset by 20.205.243.166 port 221、22端口 无法连接 ssh -T gitgithub.com2、尝试用443端口 仍然无法连接 ssh -T -P 443 gitgithub.com3、重写 git clone 地址 url&#xff0c;全局添加 https 前缀…

从零到一,深入浅出大语言模型的奇妙世界

2022 年底&#xff0c;OpenAI 发布的 ChatGPT 模型在全球范围内引起了巨大轰动。本文详细的介绍了大语言模型的发展历程、构建过程和大语言模型如何使用等知识&#xff0c;帮助大家搞懂大语言模型。 一、大语言模型发展历程 大模型技术并不是一蹴而就的&#xff0c;大语言模型…

Neo4j Desktop界面认识以及数据库备份与还原

Neo4j Desktop界面认识以及数据库备份与还原 neo4j 版本信息&#xff1a;Neo4j Desktop Version 1.5.9&#xff1b;neo4j 5.12.0 系统信息&#xff1a;windows 11 Neo4j Desktop 界面 每个 Project 下可以有多个 DBMS&#xff0c;而每个 DBMS 中默认有 system 和 neo4j (def…

揭秘全自动高速开箱机:智能与精细化,打造高效生产

在现代化生产的浪潮中&#xff0c;全自动高速开箱机以其高效、智能的特点&#xff0c;成为众多行业提升生产效率的得力助手。与星派一起走进全自动高速开箱机的世界&#xff0c;探寻其高效背后的智能与精细。 全自动高速开箱机&#xff0c;是一种能够自动完成开箱操作的机械设备…

微信答题扫码答题自己能做吗?微信扫二维码答题快速制作的方法介绍!

在数字化时代&#xff0c;微信扫码答题已经成为一种流行的互动方式&#xff0c;它不仅便捷高效&#xff0c;而且能够极大地提升参与者的体验感。这种新型的答题方式&#xff0c;通过微信平台的广泛覆盖和用户友好的操作界面&#xff0c;为企业和组织提供了一个创新的知识传播和…

25. 一个双高斯照相物镜的设计

导论&#xff1a; 双高斯照相物镜的设计思想&#xff0c;当β-1时&#xff0c;由于其对称&#xff0c;彗差、畸变和倍率色差自动校正为0&#xff0c;利用中间两块厚透镜可以校正场曲&#xff0c;选取合适的光阑位置可以校正像散&#xff0c;在厚透镜中加胶合面使每个半部校正位…

uniapp中Error: project.configjson: libVersion 字段需为 string. string

错误如下 找到manifestjson文件到源码视图 添加这段代码"libVersion": "latest",即可

LabVIEW版本、硬件驱动和Windows版本之间兼容性

在LabVIEW应用开发和部署过程中&#xff0c;确保LabVIEW版本、硬件驱动和Windows版本之间的一致性和兼容性至关重要。这不仅影响程序的稳定性和性能&#xff0c;还关系到项目的成功实施。本文从多角度详细分析这些因素之间的兼容性问题&#xff0c;并提供相关建议。 兼容性考虑…