【最后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,不管怎么样,给到一套合理的评估方法就行了。这个本身也是模型验收必然要做的。

相关推荐
დ旧言~41 分钟前
【Python】使用库
python
哥是黑大帅1 小时前
Milvus向量数据库部署
数据库·python·milvus
补三补四2 小时前
Django与数据库
数据库·python·django
lczdyx2 小时前
Transformer 代码剖析6 - 位置编码 (pytorch实现)
人工智能·pytorch·python·深度学习·transformer
云天徽上2 小时前
【目标检测】目标检测中的数据增强终极指南:从原理到实战,用Python解锁模型性能提升密码(附YOLOv5实战代码)
人工智能·python·yolo·目标检测·机器学习·计算机视觉
weixin_307779132 小时前
PySpark实现获取S3上Parquet文件的数据结构,并自动在Amazon Redshift里建表和生成对应的建表和导入数据的SQL
数据仓库·python·spark·云计算·aws
冷琴19962 小时前
基于Python+Vue开发的婚恋交友管理系统-相亲系统-课程作业
vue.js·python·交友
黄小耶@2 小时前
如何快速创建Fastapi项目
linux·python·fastapi
jambinliang3 小时前
工业零件不良率、残次率的智能数据分析和数字化管理
大数据·python·sql·数据分析