第二章 线性代数

2.1 名词

标量(scalar)、向量(vector)、矩阵(matrix)、张量(tensor)

2.2 矩阵和向量相乘

1. 正常矩阵乘法; 2. 向量点积; 3. Hadamard乘积(元素对应乘积)

矩阵乘法服从分配律、结合律,两个向量的点积满足交换律,利用两个向量点积的结果是标量(scalar),标量转置是自身。

2.3 单位矩阵和逆矩阵

逆矩阵一般作为理论工具使用,计算机由于精度不足,一般不使用逆矩阵。

2.4 线性相关和生成子空间

线性方程组,解的个数:0、1、∞,不存在有限多个解的情况。

线性方程组,只有方阵,且是非奇异的(所有列向量线性无关)才能用逆矩阵求解。

2.5 范数(norm)

将向量映射到非负值的函数(衡量向量到原点的距离),满足距离三要素。

范数分为x范数和Lx范数,例如L2被称为欧几里得范数。

L0范数(在数学意义上是不对的):非零元素数目个数。

L1范数:常用于数据集中于原点附近;零和非零元素差异非常重要;非零元素数目的替代函数(因为L0范数对向量缩放无感知)

L2范数:欧几里得范数,其平方值常用于衡量向量的大小,可以简单的通过点积运算。(在原点附近增长的十分缓慢,此时推荐用L1范数)

L范数:最大范数,最大的元素的绝对值,即||x||=maxi(|xi|)

Frobenius范数:常用于衡量矩阵的大小,在深度学习中的最常见做法,计算矩阵每个元素的平方和后 开方,类似于向量的L2范数。

2.6 特殊类型的矩阵和向量

单位向量(unit vector)是具有单位范数(unit norm)的向量:||x||2=1(欧几里得距离为1)。

如果两个向量不仅相互正交(点积为0)且范数为1,称为标准正交(orthonormal)。

正交矩阵(orthogonal matrix):行向量和列向量分别是标准正交的方阵。

2.7 特征分解

将矩阵分解为特征值 λ 和特征向量的表示形式。(一般只有方阵才有)

可以看作在二维平面上画出特征向量后,乘上矩阵A表示这个向量被拉伸了 λ 倍,如下图:

λ > 0:正定矩阵(positive definite)

λ ≥ 0:半正定矩阵(positive semidefinite)

λ < 0:负定矩阵(negative definite)

2.8 奇异值分解 SVD

这里书里讲的不是很清楚,推荐一个视频:https://www.bilibili.com/video/av15971352

博主先在这里说说自己对SVD的理解:就是

提取矩阵的特征,按特征的重要程度从大到小排序,每个特征的权重就是奇异值,特征本身就是奇异向量,当保留权重较大的几个特征时,能够很好地还原出原矩阵。

因为非方阵的矩阵无法计算逆矩阵,所以无法进行特征分解,故提出了奇异值分解(singular value decomposition)。

每个实数矩阵都有一个奇异值分解,但不一定都有特征值分解。(例如,非方阵的矩阵没有特征分解,这时只能用奇异值分解)。

且奇异值分解有着更广泛的应用(例如特征降维,矩阵去噪)。

博主对原理的理解:SVD就是分别计算ATA和AAT,让其变成方阵,然后对角化,从对角化后的信息中提取特征,经过转换后作为奇异值,从而复原矩阵A。

2.9 Moore-Penrose伪逆(广义逆矩阵)

A+=VD+UT

UDV是矩阵A奇异值分解(SVD)后得到的矩阵,对角矩阵D的伪逆D+是其非零元素取倒数之后再转置得到的。

当矩阵A的列数多于行数(矮胖)时,用伪逆求解线性方程是众多可能解法中的一种。但是x=A+y是方程所有可行解中欧几里得范数L2最小的一个。

当行数多于列数时,可能没有解(因为没有满秩),在这种情况下,通过伪逆得到的x使得Axy的欧几里得距离||Ax-y||2最小。

(这部分没怎么查资料,暂时不知道其在机器学习中的应用)

2.10 迹运算

没什么好说的,对角线元素的和,以下是迹运算的性质:

一个矩阵的转置不影响迹的大小;

多个矩阵相乘,将最后一个挪到最前面之后,迹是相同的( Tr(ABC)=Tr(CAB)=Tr(BCA) )。

标量在迹运算后仍然是它自己。a=Tr(a);

循环置换后矩阵形状变了,也不影响迹的大小。

2.11 行列式

det(A)等于矩阵特征值的乘积,用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。

2.12 实例:主成分分析 PCA

关键词:单位范数、L2范数、最优化问题、向量微积分、Frobenius范数……

这块有点困难,之后补上。

《Deep Learning》第二章 线性代数 笔记的更多相关文章

  1. Deep learning with Python 学习笔记(8)

    Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...

  2. Deep learning with Python 学习笔记(7)

    介绍一维卷积神经网络 卷积神经网络能够进行卷积运算,从局部输入图块中提取特征,并能够将表示模块化,同时可以高效地利用数据.这些性质让卷积神经网络在计算机视觉领域表现优异,同样也让它对序列处理特别有效. ...

  3. Deep learning with Python 学习笔记(3)

    本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...

  4. Deep learning with Python 学习笔记(2)

    本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...

  5. Deep learning with Python 学习笔记(11)

    总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...

  6. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  7. Deep learning with Python 学习笔记(9)

    神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推 ...

  8. Deep learning with Python 学习笔记(6)

    本节介绍循环神经网络及其优化 循环神经网络(RNN,recurrent neural network)处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息. ...

  9. Deep learning with Python 学习笔记(5)

    本节讲深度学习用于文本和序列 用于处理序列的两种基本的深度学习算法分别是循环神经网络(recurrent neural network)和一维卷积神经网络(1D convnet) 与其他所有神经网络一 ...

随机推荐

  1. 8.Element-ui日期组件上传到后台日期少一天解决办法

    <el-date-picker type="date" value-format="yyyy-MM-dd" placeholder="转出日期& ...

  2. 菜鸟笔记 -- Chapter 6.2.2 标识符

    6.2.2  标识符 Java中使用标识符来作为类.方法.字段的名称,在Java基础中我们已经简单了解过标识符的定义方法和驼峰命名.本节我们来研究一下标识符的长度问题,难道类名.方法名都可以无限长吗? ...

  3. 关于利用HashSet,split,deleteCharAt等方法详解

    1.首先了解一下HashSet的原理: Set接口  Set是对数学上集的抽象,Set中不包含重复的元素.如何界定是否是重复元素?Set最多可含一个null元素;对于任意的非null元素e1和e2,都 ...

  4. pl sql 存储过程、函数

    存储过程用于执行特定的操作,当建立存储过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数,可以将执行部分的数据传递到 ...

  5. 如何用hexo搭建个人博客. 亲测有效

    搭建博客: 安装node.js和git 以管理员身份进入cmd. 输入:  npm install -g cnpm --registry=https://registry.npm.taobao.org ...

  6. jQuery 切换图片(图标)效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. mysql 使用 FIND_IN_SET 来查询数据

    mysql中find_in_set函数很有意思,它的功能是查找以英文逗号隔开的值,我们可以将数据存储类似为1,2,3,4格式.今天我们就来看看在thinkphp中怎样正确地使用find_in_set函 ...

  8. 转:前端安全之XSS攻击

    前端安全 原文链接:https://www.freebuf.com/articles/web/185654.html 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企 ...

  9. android xml实现animation 4种动画效果

    animation有四种动画类型 分别为alpha(透明的渐变).rotate(旋转).scale(尺寸伸缩).translate(移动),二实现的分发有两种,一种是javaCode,另外一种是XML ...

  10. 【基于不同设备厂商在处理vlan之间通信配置例子】

    H3C: Dot1q子接口实现vlan之间的通信 一:根据项目需求搭建好拓扑图如下: 二:配置 HUAWEI: CISCO