人工智能数学基础 课件 chap4 矩阵的分解_第1页
人工智能数学基础 课件 chap4 矩阵的分解_第2页
人工智能数学基础 课件 chap4 矩阵的分解_第3页
人工智能数学基础 课件 chap4 矩阵的分解_第4页
人工智能数学基础 课件 chap4 矩阵的分解_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工只智能数学基础

MathematicalBasisofArtificialIntelligence互动启迪智慧Communicationenlightenswisdom参考材料:廖盛斌,人工智能数学基础.电子工业出版社,2023.

3思路:聚焦在机器学习和深度学习框架下理解矩阵分解。目标:本章主要介绍矩阵的LU分解、矩阵的QR分解、矩阵的特征值分解、矩阵的奇异值(SVD)分解的概念。4提纲:

矩阵的LU分解矩阵的QR分解矩阵的特征值分解矩阵的奇异值(SVD)分解矩阵的LU分解

矩阵的LU分解

矩阵的LU分解

第二步:后向计算,从矩阵U求矩阵A矩阵的LU分解

矩阵的LU分解

上面3个条件中的前面两个很好理解,第三条件实际上可以弱化。在例4-1中,对矩阵A进行初等行变换时,没有进行行交换。但是,并不是所有的矩阵A都满足这样的条件,如果矩阵如下将矩阵A的第一行的负4倍和负3倍分别加到第二行和第三行,得到矩阵如下矩阵的LU分解

矩阵的LU分解

矩阵的LU分解

第三步:后向计算,从矩阵U求矩阵PA

第三步,令

这样就得到由于置换矩阵P的逆矩阵等于它的转置矩阵,对上式两边左乘P-1,得到矩阵的LU分解

4.1.3矩阵LU分解的扩展形式

矩阵的LU分解

矩阵的LU分解

矩阵的LU分解

矩阵的QR分解4.2.1矩阵QR分解的定义

矩阵的QR分解由于矩阵Q是正交矩阵,所以有然后将求得的系数带入向量a的线性组合之中,得到向量a的正交分解为

上式说明,将一个向量a沿着一组正交向量进行正交分解,沿任一向量的系数是该向量的转置与向量a的内积。下面我们讲解矩阵的QR分解时将用到这个性质矩阵的QR分解4.2.2利用施密特正交化方法进行矩阵的QR分解

矩阵的QR分解

这里的系数计算利用了4.2.1最后面介绍的性质2[关于系数的计算也可以直接根据迭代关系获得。],上面的过程写成矩阵形式就是这样就得到了矩阵A的QR分解中的正交矩阵Q和上三角矩阵R矩阵的QR分解

矩阵的QR分解

再根据得到矩阵的QR分解

这样就得到上三角矩阵R为

矩阵的特征值分解4.3.1矩阵的特征值分解定义

在前面一章介绍了n阶矩阵A能对角化的充要条件是矩阵A有个n个线性无关的特征向量,并且,矩阵A的特征向量构成的可逆矩阵P,使得AP=PD,其中D是对角矩阵,它的对角元素为矩阵A的n个特征值。这样就有下面的特征特征分解的定义。

如果n阶矩阵A有n个线性无关的特征向量,则存在一个可逆矩阵P,使得矩阵A可以分解为A=PDP-1。其中,D是对角矩阵,它的对角元素为矩阵A的n个特征值;矩阵P是n阶可逆矩阵,它的列为矩阵A的特征向量,排列顺序与对角矩阵D中特征值的排列顺序一致。我们把上面的分解称为矩阵A的特征值分解,也称为谱分解。当然,如果进一步矩阵A是实对称矩阵,则存在正交矩阵P,使得矩阵A可以分解为A=PDP-1=PDPT。其中,D是对角矩阵,它的对角元素为矩阵A的n个特征值;矩阵P是n阶正交矩阵,它的列为矩阵A的正交化特征向量。

矩阵的特征分解有很广泛的应用。从矩阵A的特征分解形式上看,最直接的应用是计算矩阵A的逆矩阵、计算矩阵的多项式、矩阵多项式的特征值,这些内容实际上是上一章介绍的相似变换知识点的扩展。下面介绍矩阵的特征分解的本质含义及其在机器学习中的一个经典应用。

矩阵的特征值分解4.3.2矩阵特征值分解的本质一个n阶矩阵与一个n维向量x相乘,本质上等价于对向量x进行旋转和拉伸缩放,也就是相当于改变向量x的基底。为理解这个问题,以二维矩阵和向量为例,对一般情况也适用

于是矩阵的特征值分解

图4.1矩阵向量乘法的几何意义矩阵的特征值分解

矩阵的特征值分解4.3.3矩阵特征值分解的应用矩阵的特征值分解在机器学习、图像处理、量子力学、数据挖掘中具有广泛的应用。下面介绍一个利用python语言,通过对图像矩阵进行特征值分解,达到图像压缩与恢复目的具体应用。下图4.2是手写体识别数据集中的一张28x28的图片图4.2手写体数字4

首先通过Image.open()函数读取该图片,然后将它转化为numpy数组,就是一个28x28的矩阵,也就是上面说的图像矩阵。有了图像矩阵数据之后,利用numpy中的linalg.eig()函数对该矩阵进行特征分解,得到图像矩阵的特征值和相应的特征向量。有了图像矩阵的特征值和特征向量之后,就可以根据矩阵的特征分解表达式A=PDP-1,选取部分特征值对图像进行压缩与恢复。比如我们选取前面个特征值及相应的特征向量恢复图像,可以根据这n个特征值来构造表达式A=PDP-1中的对角矩阵D,对角矩阵D的前面n个主对角元素为这n个特征值,其他元素置为零。再根据numpy中的linalg.inv()函数求出特征向量构成的矩阵P的逆矩阵P-1,这样就可以用表达式A=PDP-1重构出原来的图像。详细的代码如下:矩阵的特征值分解importosfromPILimportImageimportnumpyasnpimportmatplotlib.pyplotaspltdefIM_restore(cvector,cvalue,n,N):cvector1=np.linalg.inv(cvector)diag=np.append(cvalue[0:n],np.zeros(N-n))lam_new=np.diag(diag)new_image=np.dot(np.dot(cvector,lam_new),cvector1)returnnew_imageimg=Image.open('D:/lsbdata/hw4.png')#这里根据实际图片位置和图片名称调整im=img.convert('L')image_data=np.asarray(im)eig_value,eig_vector=np.linalg.eig(image_data)restored_img=IM_restore(eig_vector,eig_value,18,28)plt.subplot(1,2,1)plt.imshow(im,cmap='gray')plt.xlabel('orginalimage')plt.subplot(1,2,2)plt.imshow(restored_img,cmap='gray')plt.xlabel('restoredimage')矩阵的特征值分解

下面的图4.3和图4.4分别给出了选取前面14和18特征值恢复的效果。从图4.3可以看出,如果选取前面14个特征值,基本上恢复出了原始图像的主要特征,已经不影响我们对该手写体数字的识别了,但还存在一些差别。从图4.4可以看出,如果选取前面18个特征值的话,则几乎完全恢复了原始图像。在实际工作中,可以根据我们要求的精度,选取合适特征值个数来压缩或恢复图像。图4.3选取前面14个特征值恢复效果图图4.4选取前面18个特征值恢复效果图矩阵的奇异值(SVD)分解4.4.1矩阵的奇异值分解的定义

矩阵的奇异值(SVD)分解

矩阵的奇异值(SVD)分解4.4.2矩阵的奇异值分解的计算

矩阵的奇异值(SVD)分解

解:第一步,求矩阵AAT的特征值和特征向量,得到这样就得到矩阵P为矩阵的奇异值(SVD)分解

第二步,求矩阵AAT的特征值和特征向量,得到这样得到矩阵Q为最后得到矩阵A的奇异值分解为矩阵的奇异值(SVD)分解4.4.4矩阵的奇异值分解的意义及逼近

在满足逼近精度要求下,如果我们选取r的远小于m和n,则可以较大地减少计算和存储开销。下面从理论上给出矩阵的低秩逼近[6]。对任意一个mxn的矩阵A,不妨假设它的秩为k,根据它的奇异值分解可以得到矩阵的奇异值(SVD)分解

矩阵的奇异值(SVD)分解

因此有

矩阵的奇异值(SVD)分解

奇异值分解在图像压缩、噪声消除和数据挖掘与分析中有广泛应用。下面首先介绍奇异值分解在图像压缩中的一个经典应用。

下面的图4.5是一张分辨率为1280*720的小狗图片。读取该图片数据之后,获得的是R(红色)、G(绿色)和B(蓝色)三通道的像素矩阵数据,通过调用numpy中的linalg.svd函数,对三个通道的像素矩阵进行奇异值分解,获得不同通道的奇异值及左右奇异值向量。由于得到的奇异值中,可能存在一些比较小的奇异值,我们可以舍去后面影响微小的小奇异值信息,就可以在节省存储空间的同时,保留尽可能多的图像信息,从而实现图像压缩图4.5用于数据压缩的原始图片矩阵的奇异值(SVD)分解上面过程的详细程序代码如下fromPILimportImageimportnumpyasnpimportmatplotlib.pyplotaspltdefget_SVD(data,percent):U,s,VT=np.linalg.svd(data)Sigma=np.zeros(np.shape(data))Sigma[:len(s),:len(s)]=np.diag(s)count=(int)(sum(s))*percentk=-1#k是奇异值总和的百分比的个数curSum=0#初值为第一个奇异值whilecurSum<=count:k+=1curSum+=s[k]D=U[:,:k].dot(Sigma[:k,:k].dot(VT[:k,:]))#SVD还原后的数据D[D<0]=0D[D>255]=255returnnp.rint(D).astype("uint8")defrebuild_img(filename,p,get_SVD):img=Image.open(filename,'r')a=np.array(img)R0=a[:,:,0]

G0=a[:,:,1]B0=a[:,:,2]R=get_SVD(R0,p)G=get_SVD(G0,p)B=get_SVD(B0,p)I=np.stack((R,G,B),2)img_svd=Image.fromarray(I)returnimg_svd矩阵的奇异值(SVD)分解filename='C:/users/liaosb/bobby.jpg'img=Image.open(filename).convert('RGB')img_svd1=rebuild_img(filename,0.2,get_SVD)img_svd2=rebuild_img(filename,0.4,get_SVD)img_svd3=rebuild_img(filename,0.6,get_SVD)img_svd4=rebuild_img(filename,0.8,get_SVD)img_svd5=rebuild_img(filename,1.0,get_SVD)plt.figure(1)plt.subplot(2,3,1)plt.imshow(img)plt.axis('off'),plt.title('原始图片')plt.subplot(2,3,2)plt.imshow(img_svd1)plt.axis('off'),plt.title('p=0.2')plt.subplot(2,3,3)plt.imshow(img_svd2)plt.axis('off'),plt.title('p=0.4')plt.subplot(2,3,4)plt.imshow(img_svd3)plt.axis('off'),plt.title('p=0.6')plt.subplot(2,3,5)plt.imshow(img_svd4)plt.axis('off'),plt.title('p=0.8')plt.subplot(2,3,6)plt.imshow(img_svd5)plt.axis('off'),plt.title('p=1.0')

矩阵的奇异值(SVD)分解下面是程序运用的结果图4.6压缩图片恢复效果图

从图4.6中可以看出,只要存储奇异值占比80%的信息,就可以完全恢复该图片了。事实上,对于一些稀疏数据,压缩的比例更大一些。在文献[7]中,作者提供了一个很好的稀疏数据压缩的例子。假设有一张包含15*25个黑白像素点的图片如下矩阵的奇异值(SVD)分解图4.715*25黑白图片示意图图4.7所示的黑白图片,如果我们用0表示白色的像素点,用1表示黑色的像素点,这样就可以构造一个与该图片对应的的矩阵矩阵的奇异值(SVD)分解

图4.8带瑕疵的15*25黑白图片示意图矩阵的奇异值(SVD)分解

这样重构处理的图像,由于去除了一些噪声数据的影响,图像质量会有一定的提升,效果如下图4.9所示,其中左边是原始图片,右边是噪声消减后的图片图4.9噪声消减对比示意图矩阵的奇异值(SVD)分解

下面介绍采用矩阵奇异值分解在数据分析中的一个应用,该案例也是文献[7]给出的,尽管数据示例很简单,但能很好地表达矩阵奇异值分解的应用。假如我们收集了一些数据,数据分布可视化如下图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论