在《...(一)》中,小夕从映射的角度讲解了矩阵及矩阵运算,这也是机器学习中看待矩阵的非常重要的视角。

另一方面说,矩阵当然也是用于存储数据的数据结构,这也是最好理解的形式。另外还可以看做是一个线性方程组(课本上讲烂了的开头),甚至可以将其仅仅看做一般化的张量(tensor)中的一个普通切片(slice),或者说其中一层。所以矩阵代表什么含义,要在不同的场景中灵活对待,不要局限在一种视角哦。

继续从映射的视角来看。

小夕说,不同的矩阵就代表着不同的映射,就像上一篇文章讲的,就可以表示“将输入的空间的第一个维度的坐标轴缩短为原来的一半,将第二个维度的坐标轴拉伸为原来的两倍”。这就是这个矩阵的含义。

例如,输入一个二维空间里的多个样本点:

比如

此时的矩阵就是存储数据的视角啦。这里的矩阵就是每一行就是空间中的一个样本点,所以这个矩阵就代表二维空间里的3个样本点。

所以将A中这个空间的三个样本丢给W这个映射,就得到了三个样本在新的空间的镜像点(跟高一时学的集合的映射是一个概念):

看,是不是新得到的三个样本的第一维都被压缩成了原来的一半,而第二维被拉伸成了原来的两倍呢~

而神经网络中,每一层的输出经过权重矩阵,映射到下一层的输入的过程,就是上述这个过程哦(没有理解的再看看这篇文章《神经网络激活函数》)

好啦。从映射的视角接着走。那么既然矩阵是描述映射的,那么肯定会有更严谨,更直观的形式去描述一个矩阵背后所暗示的映射规则。这个更直观的形式是什么呢?

好,然后我们将映射更加夸张一下,我们来看映射。显然,按照小夕之前的讲解,这个映射就代表将第一维度压缩为原来的0.99倍(几乎没有变化!),将第二维度拉伸为原来的100倍(显然变化十分极其非常的大)。这个映射的作用对象很明显:

1、第一维度坐标轴。怎么描述这个作用对象呢?回顾一下中学数学,在二维空间中,第一维度坐标轴不就是(x,0)嘛~既然是描述坐标轴,我们不妨用一个单位为1的向量表示x轴,即(1,0).

2、第二维度坐标轴。同样的道理,在二维空间中,第二维度坐标轴就是y轴,表示为(0,1)

这个映射对每个作用对象的作用程度也很明显不一样:

1、对第一维度坐标轴的作用程度就很小,对它几乎没有改变(改变成了原来的0.99倍),所以我们直接用0.99来表示作用程度(显然,越接近1表示作用程度越小)。

2、同样,这个映射对第二维度的坐标轴作用程度非常大。所以用100来表示。

好啦~小夕用“作用对象”和“对某作用对象的作用程度”是不是就已经非常清晰的描述清楚了矩阵的映射规则呢~所以理论上说,这两者应该完全等价才对~

学过线代的你有没有灵光一现呢~

没!错!小夕这里讲的“作用对象”就是大学课本讲成一坨的“特征向量”(eigenvector)!小夕这里讲的“对某作用对象的作用程度”就是课本里的“特征值”(eigenvalue)!因此,一个矩阵,或者说一个线性映射,完全可以用它的全部特征向量及其对应的特征值去描述!(当然严谨的说是方阵,先接着开车,下一篇文章再解释细节)

而将矩阵分解为它的特征值与特征向量的过程被称为特征分解”(Eigendecomposition),又称"谱分解"(Spectral decomposition)。特征分解是众多矩阵分解中的一种,因此当然原矩阵A会被分解成几个目标矩阵啦~这里的目标矩阵当然就是两个,一个由特征向量组成的,还有一个是由特征值组成的。

你可以试一下,将上面的两个特征向量叠在一起(一列为一个特征向量):

然后每个特征向量对应的特征值依次放到一个对角矩阵的各位置上

然后由公式即可以恢复出原映射W。(注:是eVec的逆矩阵)

对于这个例子,一眼就能算出来肯定是对的~对于的证明,可以参考各种教材和博客,就不展开啦。(文章末尾有链接推荐)

有了对特征值和特征向量的这一层理解,我们当然很容易继续联想到:

当一个矩阵的特征值中包含0时,就表示要将一个“坐标轴”直接毁灭!(将一个坐标轴映射回原点。这个“坐标轴”就是这个0特征值所对应的特征向量(所描述的方向));

同理,负数特征值就表示将它所对应的特征向量所在的坐标轴反转。因此,-1就表示将该坐标轴反转,但是不拉伸也不压缩。(-1,0)表示反转且压缩,(-∞,-1)表示反转且拉伸。

这就是映射的视角下,矩阵的特征值与特征向量的含义。这也是升华对一些机器学习算法理解的必经之路。

数据存储的视角下,矩阵的特征值与特征向量的含义更容易理解了,毕竟图像就是最直观的数据存储的矩阵嘛~这方面的理解强烈推荐wiki,蒙娜丽莎的例子非常形象:

https://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%81%E5%80%BC%E5%92%8C%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F

当然需要翻墙。(都开始做机器学习了,翻墙这么简单的事情就不用小夕教了吧。。。

想进一步加深对特征值与特征向量的理解的同学,尤其是想从数学形式上去理解的同学,更要看一下上面的Wiki啦~

如何将矩阵分解出它的特征值与对应的特征向量呢?

API小王子/小公主可以在matlab中直接调用

[eVecs,eVal] = eig(A)

得到矩阵A的特征向量和特征值。python中的numpy和scipy库中应该也有相应的API。

如果有同学对特征值分解算法细节感兴趣,小夕推荐从QR算法入手~如果觉得不过瘾,可以继续尝试Hessenburg-QR算法,还不过瘾就再加上shift操作~不过一般来说,做机器学习的话没大有必要对这些算法花太多精力~

QR分解有个好玩的帖子,讲的很详细(虽然排版不忍直视):

http://blog.csdn.net/cinmyheart/article/details/44086369

另外,不知道大家对SVD的细节有没有兴趣呢?因为网上讲SVD的帖子很多啦,有很多讲的很好的,小夕也不知道有没有必要再讲一下了QAQ,丢个投票器吧。

再丢个小狐狸

线性代数应该这样讲(二)相关推荐

  1. 线性代数学习笔记(二十九)——方程组解的结构(一)

    停更2年多了,做事得有始有终,继续更新... 本篇笔记回顾了线性方程组解的三种情况,并讨论了齐次线性方程组解的结构,并介绍了齐次线性方程组解的相关性质.其中重点讨论了基础解系定义,以及基础解系的求法和 ...

  2. 线性代数学习笔记(二十二)——向量间的线性关系(二)

    本篇笔记首先介绍了线性相关和线性无关的概念,关键是找到一组不全为零相关系数使得等成立:然后重点介绍了一些重要的结论,以及向量组线性相关和线性无关的几个充要条件. 1 线性相关与线性无关 线性相关:设 ...

  3. 初识二维码 第二十讲 二维码解码程序的组件之一 摄像头拍照功能

    初识二维码 第二十讲    二维码解码程序的组件之一 摄像头拍照功能 解码程序的第一个环节是通过摄像头这个硬件,得到二维码的图片. 对摄像头的工作原理来说,简单的描述如下:1是从摄像头得到模拟信号, ...

  4. 初识二维码 第二讲 二维码的结构

    初识二维码 第二讲二维码的结构 它分为功能部分与编码部分.功能部分用于定位,与二维码的版本与格式等元数据的存储. 二维码的大小到21*21的格子到177*177的格子.边长数为除4余1.边长数减去17 ...

  5. 线性代数考研笔记(二)

    矩阵: 线性代数考研笔记(二):矩阵 矩阵相关概念: 矩阵初等变换: 逆矩阵相关性质: 分块矩阵的运算法则: 方阵的特征根和特征向量: 正交矩阵: 正交向量组: 相似矩阵: 对角化: 合同矩阵: 二次 ...

  6. 苹果和虫子编程题python_2020智慧树《兽医寄生虫学》免费最全题库2020中国大学mooc《线性代数习题选讲》...

    2020智慧树<兽医寄生虫学>免费最全题库2020中国大学mooc<线性代数习题选讲>章节答案 更多相关问题 [多选题]<合同法>第122条规定,因当事人一方违约行 ...

  7. 初识二维码 第一讲二维码的起源

    初识二维码 第一讲二维码的起源 二维码源于条形码.条形码的编码携带的信息很有限. 二维码有许多种编码方式,最流行的编码是快速响应二维码, 由日本发明,经过JIS标准化,后来通过了ISO,成为国标标准. ...

  8. 蓝桥杯省赛夺奖冲刺营精讲二

    蓝桥杯省赛夺奖冲刺营精讲二 「谈判」 题目描述 在很久很久以前,有 n 个部落居住在平原上,依次编号为 1 到 n.第 i 个部落的人数为. 有一年发生了灾荒.年轻的政治家小蓝想要说服所有部落一同应对 ...

  9. 线性代数应该这样讲(四)-奇异值分解与主成分分析

    在<线性代数这样讲(二)>(以下简称「二」)中,小夕详细讲解了特征值与特征向量的意义,并且简单描述了一下矩阵的特征值分解的意义和原理.本文便基于对这几个重要概念的理解来进一步讲解SVD分解 ...

最新文章

  1. Redis面试连环问:集群、复制以及与其他NOSQL数据库的区别?
  2. 基于Python查找图像中最常见的颜色
  3. 顶级生物信息学 RSS 订阅源
  4. C socket编程
  5. 第8章 多项式回归与模型泛化
  6. 博客申请成功啦,好开心!!!!
  7. [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源
  8. 【Linux】一步一步学Linux——as命令(260)
  9. HDU4633(Polya计数)
  10. Liferay 用PortletSession 实现不同Liferay之间通讯
  11. torch.backends.cudnn.benchmark 加速训练
  12. 机器人动力学建模之牛顿欧拉法推导
  13. Python这些操作,逆天且实用
  14. shell命令之nm
  15. 写字机器人开发之:python opencv linux下合作操作摄像头
  16. 什么是BFC?聊聊BFC及其应用
  17. i5 10400f和i5 11400f参数对比 哪个更好
  18. 【洛谷P4233】— 射命丸文的笔记(竞赛图+多项式求逆)
  19. MBT测试实例:做个“机器人”,使其随机、持续的对“web页面”做交互性测试(二)涉及工具
  20. CellPress | 人工智能在临床试验中的应用

热门文章

  1. drop.delete.trauncat的区别
  2. 简述C++程序编写的过程
  3. 新手必看!单片机掉电检测与数据掉电保存方案
  4. TQ210——S5PV210串口通信
  5. CMapStringToPtr::SetAt\CAsyncSocket
  6. 【Pytorch神经网络基础理论篇】 06 自动求导+导数与微分
  7. pandas处理日期的几种常用方法
  8. Django 模板实现(动态)图片/头像展示到页面
  9. Vue3 Composition API(一)——setup、reactive、ref、readonly
  10. 一、在vue项目中使用mock.js(详解)