学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA

ByteLuminaPro
• 阅读 3040

Moore-Penrose伪逆(pseudoinverse)。

非方矩阵,逆矩阵没有定义。矩阵A的左逆B求解线性方程Ax=y。两边左乘左逆B,x=By。可能无法设计唯一映射将A映射到B。矩阵A行数大于列数,方程无解。矩阵A行数小于列数,矩阵有多个解。

矩阵A的伪逆A + =lim a->0 (A T A+aI) -1 A T。计算伪逆公式,A + =VD + U T。矩阵U、D、V是矩阵A奇异值分解得到矩阵。对角矩阵D伪逆D + 是非零元素取倒数后再转置。矩阵A列数多于行数,伪逆求解线性方程是可能解法。x=A + y是方程所有可行解中欧几里得范数||x|| 2 最小。矩阵A行数多于列数,没有解。伪逆得到x使得Ax和y的欧几里得距离||Ax-y|| 2 最小。

迹运算。

返回矩阵对角元素和,Tr(A)=Sum i A i,i 。通过矩阵乘法和迹运算符号清楚表示矩阵运算。描述矩阵Frobenius范数,||A|| F =SQRT(Tr(AA T ))。迹运算在转置运算下不变,Tr(A)=Tr(A T )。多个矩阵相乘方阵迹,矩阵最后一个挪到最前面相乘迹相同。需考虑挪动后矩阵乘积定义良好,Tr(ABC)=Tr(CAB)=Tr(BCA),Tr(PRODUCT(n,i=1,F (i) ))=Tr(F (n) PRODUCT(n-1,i=1,F (i) ))。循环置换后矩阵乘积矩阵形状变了,迹运算结果依然不变。矩阵A ELEMENT(R mn ),矩阵B ELEMENT(R nm ),得到 Tr(AB)=Tr(BA)。AB ELEMENT(R mm ),BA ELEMENT(R nn )。标量在迹运算后仍是自己,a=Tr(a)。

行列式。

det(A),方阵A映射到实数函数。行列式等于矩阵特征值的乘积。行列式绝对值衡量矩阵参与矩阵乘法后空间扩大或缩小多少。行列式是0,空间沿着某一维完全收缩,失去所有体积。行列式是1,转换保持空间体积不变。

主成分分析(principal components analysis,PCA)。

简单机器学习算法,基础线性代数知识推导。R n 空间有m个点{x (1) ,…,x (m) },有损压缩,用更少内存,损失精度存储。希望损失精度尽可能少。低维表示,每个点x (i) ELEMENT(R n ),一个对应编码向量c (i) ,按比例放大D :,i ,保持结果不变。为问题有唯一解,限制D所有列向量有单位范数。计算解码器最优编码困难。PCA限制D列向量彼此正交(除非l=n,严格意义D不是正交矩阵)。

想法变算法。明确每一个输入x得到一个最优编码c * 。

最小化原始输入向量x和重构向量g(c )间距离。范数衡量距离。PCA算法,用L 2 范数,c =argmin c ||x-g(c)|| 2 。用平方L 2 范数替代L 2 范数。相同值c上取得最小值。L 2 范数非负。平方运算在非负值上单调递增。c =argmin c ||x-g(c)|| 2 2 。最小化函数简化,(x-g(c)) T (x-g(c))。L 2 范数定义,=x T x-x T g(c)-g(c) T x +g(c) T g(c)。分配律,=x T x-2x T g(c)+g(c) T g(c)。标量g(c) T x转置等于自己。第一项x T x 不依赖c,忽略,优化目标,c =argmin c -2x T g(c)+g(c) T g(c)。代入g(c),c * =argmin c -2x T Dc+c T D T Dc=argmin c -2x T Dc+c T I l c。矩阵D正交性和单位范数约束,=argmin c -2x T Dc+c T c。

向量微积分求解最优化,NABLA(c, (-2x T Dc+c T c))=0,-2D T x+2c=0,c=D T x。算法高效。最优编码x只需要一个矩阵-向量乘法操作。编码向量,编码函数,f(x)=D T x。矩阵乘法,定义PCA重构操作,r(x)=g(f(x))=DD T x。挑选编码矩阵D。相同矩阵D对所有点解码,不能孤立看待每个点。最小化所有维数和所有点上的误差矩阵Frobenius范数。D =argmin D SQRT(SUM(i,j,(x (i) j -r(x (i)) j )) 2 )subject to D T D=Il。推导寻求D 算法,l=1,D是单一向量d。简化D为d,问题简化。d =argmin d SUM(i,||x (i) -dd T x (i) || 2 2 )subject to ||d|| 2 =1。最美观方式。标量d T x (i) 放在向量d右边。标量放在左边写法更传统。d =argmin d SUM(i,||x (i) -d T x (i) d|| 2 2 )subject to ||d|| 2 =1。标量转置和自身相等。d * =argmin d SUM(i,||x (i) -x (i) T dd|| 2 2 )subject to ||d|| 2 =1。重排写法。

单一矩阵重述问题。更紧凑符号。表示各点向量堆叠成矩阵。记X ELEMENT(R mn )。X i,: =x (i) T 。重新表述,d =argmin d ||X-Xdd T || 2 F subject to d T d=1。不考虑约束,Frobenius范数简化。argmin d ||X-Xdd T || 2 F 。=argmin d Tr((X-Xdd T ) T (X-Xdd T ))。=argmin d Tr(X T X-X T Xdd T -dd T X T X+dd T X T Xdd T )。=argmin d Tr(X T X)-Tr(X T Xdd T )-Tr(dd T X T X)+Tr(dd T X T Xdd T )。=argmin d -Tr(X T Xdd T )-Tr(dd T X T X)+Tr(dd T X T Xdd T )。与d无关项不影响argmin,=argmin d -2Tr(X T Xdd T )+Tr(dd T X T Xdd T )。循环改变迹运算相乘矩阵顺序不影响结果,=argmin d -2Tr(X T Xdd T )+Tr(X T X T Xdd T dd T )。考虑约束条件。argmin d -2Tr(X T Xdd T )+Tr(X T X T Xdd T dd T )subject to d T d=1。=argmin d -2Tr(X T Xdd T )+Tr(X T X T Xdd T )subject to d T d=1。=argmin d -Tr(X T X T Xdd T )subject to d T d=1。=argmax d Tr(X T X T Xdd T )subject to d T d=1。=argmax d Tr(d T X T X T Xd)subject to d T d=1。优化问题,特征分解求解。最优d是X T X最大特征值对应特征向量。

以上推导特定于l=1情况,仅得到第一个主成分。得到主成分的基时,矩阵D由前l个最大特征值对应特征向量组成。归纳法证明。

参考资料:

《深度学习》

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

我有一个微信群,欢迎一起学深度学习。

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Python进阶者 Python进阶者
3年前
Python矩阵和Numpy数组的那些事儿
大家好,我是IT共享者,人称皮皮。今天给大家介绍矩阵和NumPy数组。一、什么是矩阵?使用嵌套列表和NumPy包的Python矩阵。矩阵是一种二维数据结构,其中数字按行和列排列。二、Python矩阵1\.列表视为矩阵Python没有矩阵的内置类型。但是,可以将列表的列表视为矩阵。例:A2\.如何使用嵌套列表。A三、NumPy数组1\.
Karen110 Karen110
4年前
人工智能数学基础-线性代数4:矩阵及矩阵运算
一、矩阵定义矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,定义如下:由m×n个数aij排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵。记作:这m×n个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数aij为(i,j)元的矩阵可记为(aij)或(aij)m×n,m×
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
3年前
ARM内核矩阵计算教程(STM32)
我们在嵌入式上跑矩阵运算时候,会遇到这样一个问题。假设将矩阵设置成N\N维的二维数组后,我们想求两个矩阵相乘,那就需要按照矩阵计算规则编写矩阵相乘函数,这样的话4\4矩阵得编一个,5\5矩阵又得编一个,要求逆还得编一个,求行列式还得编。自己写的函数代码效率容易低,将导致本来要跑在单片机上的算法,难达到想象计算速度。这篇教程将教会你如何使用a
Wesley13 Wesley13
3年前
C++矩阵处理库
项目要进行比较多的矩阵操作,特别是二维矩阵。刚开始做实验时,使用了动态二维数组,于是写了一堆Matrix函数,作矩阵的乘除加减求逆求行列式。实验做完了,开始做代码优化,发现Matrix.h文件里适用性太低,而且动态二维数组的空间分配与释放也影响效率,于是寻找其他解决方案。首先考虑的是与Matlab混合编程,折腾了半天把Matlab环境与VS2010环境之
Wesley13 Wesley13
3年前
1050 螺旋矩阵
1050 螺旋矩阵 (25分)本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N;m≥n;且 m−n 取所有可能值中的最小值。输入格式:输入在第1行中给出一个正整数 N,第2行给出 N
Stella981 Stella981
3年前
OpenCV常用库函数[典]
_一、core_ 模块1、Mat基本图像容器     Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。        创建Mat对象方法:1.1Mat()构造函数:
Stella981 Stella981
3年前
Leet Code 74 Search a 2D Matrix
写一个高效的算法,在m×n的二维矩阵中搜索一个值。矩阵有以下性质:每一行从左到右为升序。每一行的第一个数都比上一行最后一个数大。例如,有以下矩阵:\  \1,  3, 5, 7\,  \10,11,16,20\,  \23,30,34,50\\给定target3,返
Wesley13 Wesley13
3年前
R语言相关关系可视化函数梳理(附代码)
当考察多个变量间的相关关系时,通常将多个变量的两两关系以矩阵的形式排列起来,R提供了散点图矩阵、相关矩阵等多种可视化方案,囊括了众多函数。本文对R语言相关关系可视化的函数进行了初步梳理(全篇框架如下),后续大家可根据个人需求及函数功能择优选择。!ca2a37780049afa7173657f022b8b242bc816d00(https://yqfi
Wesley13 Wesley13
3年前
CNN中常用的四种卷积详解
卷积现在可能是深度学习中最重要的概念。正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段。这期我们一起学习下深度学习中常见的卷积有哪些?1\.一般卷积卷积在数学上用通俗的话来说就是输入矩阵与卷积核(卷积核也是矩阵)进行对应元素相乘并求和,所以一次卷积的结果的输出是一个数,最后对整个输入输入矩阵进行遍历,