当前位置: 首页 > article >正文

【最后203篇系列】010 关于矩阵的一点思考

说明

今天拿起一本矩阵的书又翻了翻,毕竟AI搞到最后还得是数学。

我是感觉自己高数始终有点学的迷迷糊糊的,就打算这一年慢慢把矩阵部分扫一遍,毕竟这快肯定是实打实有用的。其他高级部分就等我发财之后再说了,哈哈。

内容

今天看了点点矩阵乘法的基本概念,这个点我以前就一直在思考,因为并不仅仅是计算,而是为什么有这样的计算。我记得以前还看过一个国外的科普视频,大约讲了一个班级的学生出门玩坐公交啥的,然后用矩阵就可以方便的计算各种费用。

关键点是在于:矩阵这种格式究竟是为什么场景设计的?

先说个抽象点的。

我先画了个图,其实稍微有点不对(结果矩阵的第一个元素应该是第一行乘以第一列),不过大概想表达个意思:矩阵乘法应该想象成一个机关,或者说算子,或者说开关,都行。就是一个可以想象的,很具体的动作。

在这里插入图片描述
这里豆包稍微解读了一下,是这个意思。
在这里插入图片描述
我觉得可以这么想象,矩阵就像一个铡刀:

  • 1 底座(矩阵1): m x n
  • 2 直立的铡刀(矩阵2): n x p

咔嚓一下,铡刀90度旋转切下来,这个过程中,对齐的部分积压为一个元素值。以下面的矩阵为例,A是基座,B要想象横过来,然后A的第一行[1,2,3]是紧贴B的最底下的一行[2,4,6],这两个向量等长,意味着铡刀的长和基座是对齐的。B旋转下来时,[1,2,3]和[2,4,6]挤压(内积),变成了28。旋转完成时,剩下的结果,就是一片新的"板材"。这样可以有一个比较形象的类比,比较好记。
在这里插入图片描述

再说个具体点的应用,这个应该也是MLR概念的一部分。

逻辑回归的公式,大概这样
在这里插入图片描述
我以前更习惯用β那套符号,b也就是β0。

逻辑回归有一个比较经典的问题:变量选择。假设我们生成了1000个x,那么选哪些才最好呢?

如果按照解析思维,就算什么重要性,相关性啥的,嗯,反正我不太想回忆那个。其实一个更简单的思路,就是–试试呗。

暴力破解不太可能,也不经济,1000个特征的组合数还是比较吓人的。

在这里插入图片描述
我随便跑了一些
在这里插入图片描述
所以暴力法一定不太对,那么用遗传算法就可以 x1-x1000,每个变量的选择都可以认为是0,1 Mask的;但是遗传算法也会产生很大的计算量,那么怎么加速呢? 矩阵。

假设A矩阵是参数,B矩阵是变量选择。那么A矩阵应该是 n X 1000的矩阵,那么第一行就是w0,与某一组x挤压(内积)后就得到了一个y‘。

所以A矩阵的n行,代表了n种可能的参数。

我们把B矩阵横过来,此时的形状是p X 1000,那么p是什么呢? p可以是遗传算法生成的种群。

假设我们可以对A的参数可能性进行优化(梯度),那么每一次计算都可以将多种可能性一次性计算出来,然后评估。C矩阵则是评估矩阵。

一种可能的情况是,我们先定住A,然后让B进行遗传进化;然后我们再定住B,让A进行迭代。每次计算完毕后,我们通过评估C来看结果是怎样的。

在这里插入图片描述

如果是1000X1000的矩阵,大约是4MB显存,我们完全可以扩大10倍,例如A矩阵是 1万 x 1千,B矩阵是 1千X1万,这两者的显存大约80MB。然后假设计算的瞬间显存会翻倍,那么是160MB峰值,C矩阵是1万X1万,大约是400MB。总共不到1个G的显存,所有的消费级显卡都可以很容易计算。

关于有多快,这个大模型很打官腔:
在这里插入图片描述
然后我追问了一下:
在这里插入图片描述
嗯,然后我实测了了一下,简单的结论是处理一次是秒级,大部分时间是损耗在从内存搬到显存上的。

3060TI,第一次计算 0.5秒
在这里插入图片描述

再次计算14.8毫秒。所以还是很符合理论估计的。
在这里插入图片描述
再用4060ti试一下:机器配置稍微好一点,0.3秒

在这里插入图片描述
第二次 13.7毫秒。所以4060ti在计算力上没啥提升,显存16G还是方便很多的。
在这里插入图片描述
然后是4090,机器是租用的额,cpu配置稍微弱了点,6核12线程的。
在这里插入图片描述
再算一次就厉害了。
在这里插入图片描述

未来的架构,有可能是直接写显存的(现在豆包的架构已经这么改了),所以这类型的计算,非常具有可行性。

假设我们在进行遗传算法,每次迭代大约1-2秒,这个速度已经很快了,应该可以在很短的时间,比如10分钟左右,找到一组合适解。这种方法最大的好处就是通用,不必将道理。设计好评估的方法就可以了,除了roc,auc之类的,可能同时考虑aic或者bic,不管怎么样,给到一套合理的评估方法就行了。这个本身也是模型验收必然要做的。

相关文章:

【最后203篇系列】010 关于矩阵的一点思考

说明 今天拿起一本矩阵的书又翻了翻,毕竟AI搞到最后还得是数学。 我是感觉自己高数始终有点学的迷迷糊糊的,就打算这一年慢慢把矩阵部分扫一遍,毕竟这快肯定是实打实有用的。其他高级部分就等我发财之后再说了,哈哈。 内容 今…...

Python快捷手册

Python快捷手册 后续会陆续更新Python对应的依赖或者工具使用方法 文章目录 Python快捷手册[toc]1-依赖1-词云小工具2-图片添加文字3-BeautifulSoup网络爬虫4-Tkinter界面绘制5-PDF转Word 2-开发1-多线程和队列 3-运维1-Requirement依赖2-波尔实验室3-Anaconda3使用教程4-CentO…...

DeepSeek崛起:如何在云端快速部署你的专属AI助手

在2025年春节的科技盛宴上,DeepSeek因其在AI领域的卓越表现成为焦点,其开源的推理模型DeepSeek-R1擅长处理多种复杂任务,支持多语言处理,并通过搜索引擎获取实时信息。DeepSeek因其先进的自然语言处理技术、广泛的知识库和高性价比…...

【金融量化】Ptrade中的基础交易与高级量化交易策略的下单接口

1 基础交易与订单管理接口 1. order 功能:用于按指定数量买卖股票或其他金融产品。 参数: security:股票代码(字符串类型)。amount:交易数量(整数类型),正数表示买入&…...

GCC RISCV 后端 -- GCC 后端框架的一些理解

GCC 已经提供了一整套的编译框架,从前端(Frontend / GENERIC-Tree)对编程语言的语法语义处理,到中端(Middle-End / GIMPLE-Tree)的目标机器无关(Target Indepndent)的优化处理&#…...

【前端】HTML 备忘清单(超级详细!)

文章目录 入门hello.html注释 Comment段落 ParagraphHTML 链接Image 标签文本格式标签标题Section Divisions内部框架HTML 中的 JavaScriptHTML 中的 CSS HTML5 标签页面标题导航HTML5 TagsHTML5 VideoHTML5 AudioHTML5 RubyHTML5 kdiHTML5 progressHTML5 mark HTML 表格Table …...

鸿蒙开发新视角:用ArkTS解锁责任链模式

责任链模式:概念与原理 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它将多个处理者对象连接成一条链,并将请求沿着链传递,直到有一个处理者能够处理该请求。这种模式的核心思想是将…...

Linux的用户与权限--第二天

认知root用户(超级管理员) root用户用于最大的系统操作权限 普通用户的权限,一般在HOME目录内部不受限制 su与exit命令 su命令: su [-] 用户名 -符号是可选的,表示切换用户后加载环境变量 参数为用户名&#xff0c…...

【Unity】搭建HTTP服务器并解决IP无法访问问题解决

一、核心目标与背景 在Unity中搭建本地HTTP服务器,可以用于实现Web与游戏交互、本地数据接口测试、跨设备通信等场景。但在实际部署中,开发者常遇到以下问题: ​本机IP无法访问:服务绑定localhost时,局域网设备无法连…...

【C语言】结构体自动对齐问题 解析与解决方案

【C语言】结构体自动对齐问题 解析与解决方案 文章目录 【C语言】结构体自动对齐问题 解析与解决方案一、引言:问题背景二、结构体对齐机制详解2.1 对齐规则2.2 示例分析 三、实际案例与错误复现3.1 问题代码修正 四、 解决方案对比与实现4.1 禁用自动对齐&#xff…...

安卓开发相机功能

相机功能 安卓中的相机调用功能也经历了很多的方案升级,目前可选的官方方案是CameraX、Camera2、Camera(废弃),还有一些第三方免费或者是付费的相机库。对于大多数开发者,建议使用 CameraX。 CameraX CameraX 是 An…...

Zookeeper 及 基于ZooKeeper实现的分布式锁

1 ZooKeeper 1.1 ZooKeeper 介绍 ZooKeeper是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。 原语:操作系统或…...

Ubuntu20.04双系统安装及软件安装(五):VSCode

Ubuntu20.04双系统安装及软件安装(五):VSCode 打开VScode官网,点击中间左侧的deb文件下载: 系统会弹出下载框,确定即可。 在文件夹的**“下载”目录**,可看到下载的安装包,在该目录下…...

【计算机网络入门】初学计算机网络(十一)重要

目录 1. CIDR无分类编址 1.1 CIDR的子网划分 1.1.1 定长子网划分 1.1.2 变长子网划分 2. 路由聚合 2.1 最长前缀匹配原则 3. 网络地址转换NAT 3.1 端口号 3.2 IP地址不够用? 3.3 公网IP和内网IP 3.4 NAT作用 4. ARP协议 4.1 如何利用IP地址找到MAC地址…...

Android Flow操作符分类

Flow操作符分类...

经验分享:用一张表解决并发冲突!数据库事务锁的核心实现逻辑

背景 对于一些内部使用的管理系统来说,可能没有引入Redis,又想基于现有的基础设施处理并发问题,而数据库是每个应用都避不开的基础设施之一,因此分享个我曾经维护过的一个系统中,使用数据库表来实现事务锁的方式。 之…...

C#项目文件.csproj 文件结构解析

以下是对提供的 .csproj 文件内容的详细解析&#xff1a; 1. ‌项目根元素‌ <Project ToolsVersion"12.0" DefaultTargets"Build" xmlns"http://schemas.microsoft.com/developer/msbuild/2003"> ToolsVersion"12.0": 指定使…...

C++-第二十章:智能指针

目录 第一节&#xff1a;std::auto_ptr 第二节&#xff1a;std::unique_ptr 第三节&#xff1a;std::shared_ptr 第四节&#xff1a;std::shared_ptr的缺陷 4-1.循环引用 4-2.删除器 下期预告&#xff1a; 智能指针的作用是防止指针出作用域时忘记释放内存而造成内存泄漏&…...

chrome Vue.js devtools 提示不支持该扩展组件,移除

可能是版本不兼容&#xff0c;可以重新安装&#xff0c;推荐网址极简插件官网_Chrome插件下载_Chrome浏览器应用商店 直接搜索vue&#xff0c;下载旧版&#xff0c;vue2、vue3都支持&#xff0c;上面那个最新版本试了下&#xff0c;vue2的肯定是不能用...

C# 中的Action和Func是什么?Unity 中的UnityAction是什么? 他们有什么区别?

所属范围&#xff1a;Action 和 Func 是 C# 语言标准库中的委托类型&#xff0c;可在任何 C# 项目里使用&#xff1b;UnityAction 是 Unity 引擎专门定义的委托类型&#xff0c;只能在 Unity 项目中使用。 返回值&#xff1a;Action 和 UnityAction 封装的方法没有返回值&…...

【流行病学】Melodi-Presto因果关联工具

title: “[流行病学] Melodi Presto因果关联工具” date: 2022-12-08 lastmod: 2022-12-08 draft: false tags: [“流行病学”,“因果关联工具”] toc: true autoCollapseToc: true 阅读介绍 Melodi-Presto: A fast and agile tool to explore semantic triples derived from …...

Stream在Swift 和 Flutter上的对比

Swift 和 Flutter 都是跨平台开发框架&#xff0c;它们各自提供了强大的工具来处理数据流&#xff0c;尤其是在移动应用开发中。虽然 Swift 主要用于 iOS 开发&#xff0c;而 Flutter 主要用于移动应用的开发&#xff08;包括 iOS 和 Android&#xff09;&#xff0c;但它们各自…...

Vue3 TransitionGroup组件深入解析:结合Element Plus实践指南

引言 在动态列表交互场景中&#xff0c;元素的增删排序需要优雅的过渡效果。Vue3的TransitionGroup组件为这类需求提供了专业解决方案。本文将通过Element Plus等流行UI库的实战案例&#xff0c;深入剖析TransitionGroup的应用技巧。 一、TransitionGroup核心特性 1.1 与Tran…...

关于opencv中solvepnp中UPNP与DLS与EPNP的参数

The methods SOLVEPNP_DLS and SOLVEPNP_UPNP cannot be used as the current implementations are unstable and sometimes give completely wrong results. If you pass one of these two flags, SOLVEPNP_EPNP method will be used instead.、 由于当前的实现不稳定&#x…...

Versal - XRT(CPP) 2024.1

目录 1.简介 2. XRT 2.1 XRT vs OpenCL 2.2 Takeways 2.3 XRT C APIs 2.4 Device and XCLBIN 2.5 Buffers 2.5.1 Buffer 创建 2.5.1.1 普通 Buffer 2.5.1.2 特殊 Buffer 2.5.1.3 用户指针 Buffer 2.5.2 Data Transfer 2.5.2.1 read/write API 2.5.2.2 map API 2…...

【零基础到精通Java合集】第十八集:多线程与并发编程-线程池与Callable/Future应用

课程标题:线程池与Callable/Future应用(15分钟) 目标:掌握线程池的创建与管理,理解Callable任务与Future异步结果处理机制 0-1分钟:课程引入与线程池意义 以“银行窗口服务”类比线程池:复用固定资源(柜员)处理多任务(客户)。说明线程池的核心价值——避免频繁创建…...

windows下安装Open Web UI

windows下安装openwebui有三种方式,docker,pythonnode.js,整合包. 这里我选择的是第二种,非docker. 非Docker方式安装 1. 安装Python&#xff1a; 下载并安装Python 3.11&#xff0c;建议安装路径中不要包含中文字符&#xff0c;并勾选“Add python 3.11 to Path”选项。 安…...

【自用】NLP算法面经(4)

一、deepseek 1、MLA &#xff08;1&#xff09;LLM推理过程 prefill阶段&#xff1a;模型对全部的prompt tokens一次性并行计算&#xff0c;最终生成第一个输出token。decode阶段&#xff1a;每次生成一个token&#xff0c;直到生成EOS&#xff08;end-of-sequence&#xf…...

LeetCode热题100JS(20/100)第四天|​41. 缺失的第一个正数​|​73. 矩阵置零​|​54. 螺旋矩阵​|​48. 旋转图像​

41. 缺失的第一个正数 题目链接&#xff1a;41. 缺失的第一个正数 难度&#xff1a;困难 刷题状态&#xff1a;1刷 新知识&#xff1a; 解题过程 思考 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 [1,2] 中的数字都在数组中…...

【银河麒麟高级服务器操作系统实际案例分享】数据库资源重启现象分析及处理全过程

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer…...