线性代数
文章平均质量分 89
Paul-LangJun
凡事预则立,不预则废。
展开
-
快速方阵幂算法
一、问题描述 给定一个方阵,求方阵的次幂,例如,。二、简单算法实现 解决该问题的一个直接想法是利用for循环不断进行方阵乘法,直到求出,算法时间复杂度是,如此高的时间复杂度在实践中是走不通的。三、快速算法实现 下面是用python实现的方阵的快速实现,关键代码处已经给出了注释。从算法上看,右移一位最多执行 次就会变成 0,故该算法的时间复杂度是,表示方阵的行数或列数,基本思想是重复利用子问题的解,减少重复计算。# !/...原创 2021-04-26 15:35:10 · 554 阅读 · 3 评论 -
理解Batch Normalization(批标准化)
一、前言 Batch Normalization的原始论文读了有几遍,每次读起来都感觉内容很晦涩,很长时间都没有理解透彻其中的基本概念和一些细节。最近因为工作原因,深入的进行了一次研读,终于把主要脉络和细节搞清楚了,所以,本文试着将自己对BN的理解进行整理,希望能帮到也在研究BN的同学,也欢迎对BN有深入理解的同学批评指正。二、背景 在讲一个复杂的概念的时候,搞清楚其出现的背景很重要,因果关系搞清楚了,后面在实践过程中才能理解的更加透彻。BN的提出源于一个概念: covariv...原创 2021-01-26 16:04:28 · 619 阅读 · 0 评论 -
对PCA的理解
一、概要 高维数据不同维度之间往往存在相关性,比如人的收入和职位,西瓜的色泽和光照强度等。 因此,为了便于分析数据,理解数据中的基本结构,需要将数据映射到一个维度互不相关的新坐标空间中,同时还要最大程度的保留原有数据的信息。 而主成分分析,就是满足这种需求的一种技术。二、准备工作 对数据进行主成分分析之前,需要将数据规范化,这主要是为了解决不同维度间标度不一致问题。主要做法是将数据每一维度的均值变为0,方差变为1。 为什么要这样做那? ...原创 2020-11-09 22:52:17 · 743 阅读 · 0 评论 -
深入理解SVD
本篇文章不会对SVD、PCA的相关理论过于深入的讲解,因为相关的优秀文章太多了。本文仅仅是对SVD以及PCA进行提纲挈领的一些介绍,忽略一些细节上的讲解。一、SVD概要 首先,SVD要干什么?它的作用是把任何一个实矩阵分解为三个子矩阵的乘积: ...原创 2020-11-07 15:20:40 · 1232 阅读 · 0 评论 -
矩阵乘法的优化
本文转载在矩阵乘法的优化,其文概要思想便是利用缓存命中率和程序的局部性原理来优化两个矩阵之间的乘法。原文内容如下。代码部分的正确性没有亲自验证。 矩阵乘法的定义是十分简单的,如果按照数学上的定义,可以写出下面的程序: 从计算机专业的角度来看,上面的代码是幼稚的。主要表现在:B[k][j]读取内存中的数据,是不连续的。在最底层的循环中,随着k不断加1,B[k][j...转载 2020-03-01 17:29:26 · 9250 阅读 · 11 评论 -
关于矩阵乘法运算顺序上的技巧
如果存在A, B, C三个矩阵,其中 B 为方阵,且 C 的列数较 A 的行数少时,则计算 A(BC) 比(AB)C 更省算力。 分析: 若假定HOR(A) = 100,COL(C) = 50,HOR(B) = COL(B) = N, 则 A(BC) 的计算量为: HOR(A) * COL(BC) +...原创 2019-04-12 18:16:34 · 6895 阅读 · 0 评论 -
求A^{-1}B的快速方法
在机器学习的文章中,经常碰到 的情况,本文给出在 和 满足一定条件下如何应用更加高效的方法求解。 假定 为可逆 矩阵, 为 矩阵,则 可由如下的行化简求得 由此可推出两个结论: (1) (2...原创 2019-07-24 11:39:10 · 716 阅读 · 0 评论