【深度学习500问】第一章 数学基础
本文为学习笔记,文章原址为:https://github.com/scutan90/DeepLearning-500-questions
1.1 标量、向量、张量
标量:只有数值大小,没有方向的量。
向量:数学中指具有大小和方向的量;计算机编程语言中是一个存放数据的地方,类似于一维数组和链表。
一维数组:数组中每一个元素都有且仅有一个下标时,这样的数组称为一维数组,数组中每个变量的数据类型是相同的。
链表:物理存储单元上,非连续、非顺序的存储结构。链表由一系列结点组成(链表中每一个元素称为结点),结点可以在运行时动态生成。
张量:是向量的推广,向量是一阶张量,标量是零阶张量,矩阵是二阶张量。张量的维数叫做它的秩。
1.2 张量和矩阵的区别
1 从代数的角度,矩阵是向量的推广。张量的严格定义是利用线性映射来描述。
2 从几何的角度,矩阵是一个真正的几何量,即不随参考系的坐标变化而变化。张量是动态的,服从一个相关的变换规则。
3 任何秩为2的张量都可以表示为一个矩阵,但不是每个矩阵都是秩为2的张量。张量矩阵表示的数值取决于整个系统应用了什么规则。
在深度学习中:
假设神经网络中有3个节点的隐藏层L1,输入流入该层,通过ReLU,得到2.5,4,1.2。将这些节点的输出表示为向量:
假设还存在有3个节点的隐藏层L2,L1的三个节点中的每个节点都有一个权重,每个权重与L2的三个节点关联。故可将权重写为3x3的矩阵。这里假设我们已经对网络进行了多次更新,并得到了权重(这里半随机选择)。
关于数据的流动,如下:
以上都是矩阵和向量的操作。
假设,我们想对每个神经元进行干预并使用自定义**函数。其中一种方法是,从第一层重新缩放每个ReLU函数。本例中,假设我们将第一个节点向上扩展2倍,保留第二个节点,将第三个节点向下扩展1/5。原来的结果如下所示:
修改后的效果是,将第一层生成的值分别乘以2、1和1/5。相当于乘以一个矩阵A:
ReLU函数变化如下:
现在,这些更新后的值,通过原来的权值网络,得到完全不同的输出值,如下:
如果神经网络之前运作正常,输入更新后,就破坏了网络运作,必须重新进行训练以恢复正确的数量。
第一个节点的值是之前的2倍。如果我们将所有输出权值减少1/2,则它对下一层的净贡献不变。
第二个节点未做任何处理,故不考虑权值,不需要改变。
第三个节点是之前的1/5倍,故将输出权值扩大5倍,以补偿该节点上的1/5因子。
从数学上来说,这相当于使用一组新的权值,我们通过将原权值矩阵乘以A的逆矩阵得到:
这里网络可以重新运作。
总结:
当我们把节点的输入、输出和权值看作固定的量时,我们称它们为向量和矩阵,并用它们完成网络运行。
但,一旦我们开始用其中一个向量进行修复,以常规方式对其进行转换,就必须通过相反的方式转换权值来进行补偿。这个附加的、集成的结构将单纯的数字矩阵提升为一个真正的张量对象。
进一步描述它的张量性质。如果我们把对节点的变化称为协变(即,将节点乘以矩阵A),那么权值就变成了一个逆变张量(即,针对节点的变化,乘以A的倒数,矩阵A的逆矩阵)。张量可以在一个维度上是协变的,在另一个维度上是逆变的,但那是另外的事了。
1.3矩阵和向量相乘的结果
的矩阵和的矩阵相乘,得到的行向量。
1.4 向量和矩阵的范数
1.4.1 向量的范数
定义向量:a=[-5,6,8,-10]
向量的1范数:向量的各个元素的绝对值之和,a的1范数:29。
向量的2范数:向量的每个元素的平方和再开算术平方根,a的2范数:15。
向量的负无穷范数:向量所有元素的绝对值中最小的,a的负无穷范数:5。
向量的正无穷范数:向量所有元素的绝对值中最大的,a的正无穷范数:10。
1.4.2 矩阵的范数
定义矩阵:
矩阵的1范数:矩阵的每一列上元素的绝对值先求和,再取最大值(列元素绝对值之和最大),A的1范数:先得到,最大值是:9。
矩阵的2范数:矩阵的最大特征值开算术平方根,A的2范数:10.0623。
矩阵的无穷范数:矩阵每一行元素的绝对值先求和,再取最大值(行元素绝对值之和最大),A的无穷范数:先得到,最大值是:16。
矩阵的核范数:矩阵的奇异值(将矩阵svd分解)之和,这个范数可用低秩表示(最小化核范数,相当于最小化矩阵的秩——低秩),A的核范数:10.9287。
矩阵的L0范数:矩阵的非0元素的个数,通常用来表示稀疏,L0范数越小,0元素越多,也就越稀疏,A的L0范数:6。
矩阵的L1范数:矩阵中每个元素的绝对值之和,是L0范数的最优凸近似,因此也可以表示稀疏,A的L1范数:22。
矩阵的F范数:矩阵中所有元素的平方和再开算术平方根,也叫做矩阵的L2范数,是一个凸函数,可求导求解,易于计算,A的L2范数:10.0995。
矩阵的L21范数:矩阵先以每一列为单位,求每一列的F范数(也可认为是向量的2范数),然后将得到的结果求L1范数(也可认为是向量的1范数),故是介于L1和L2之间的一种范数,A的L21范数:17.1559。
1.5 判断矩阵为正定矩阵
1 顺序主子式全大于0;
2 存在可逆矩阵使等于该矩阵;
3 正惯性指数等于;
4 合同于单位矩阵;
5 标准形中,主对角元素全为正;
6 特征值全为正;
7 是某基的度量矩阵;
1.6 导数和偏导计算
1.7导数和偏导数区别
没有本质区别,都是当自变量的变化量趋于0时,函数值的变化量与自变量变化量比值的极限(如果极限存在)。
一元函数,一个y对应一个x,导数只有一个。
二元函数,一个z对应一个x和一个y,有两个导数:一个是z对x的导数,一个是z对y的导数,称之为偏导。
求偏导时,对一个变量求导,另一个变量视为常数,故将偏导求解转化成一元函数的求导。
1.8 特征值分解与特征向量
特征值分解可以得到特征值与特征向量,特征值表示的是这个特征值到底有多重要,特征向量表示这个特征是什么。
如果一个列向量是方阵的特征向量,则有:
是特征向量对应的特征值。
特征值分解是将一个矩阵分解为如下形式:
其中,是这个矩阵的特征向量组成的矩阵,是一个对角矩阵,每一个对角线元素是一个特征值,特征值按从大到小排列,这些特征值所对应的特征向量,就是描述这个矩阵变化的方向(从主要的变化到次要的变化排列)。即矩阵的信息可由其特征值和特征向量表示。
对于高维矩阵,这个矩阵就是高维空间下的一个线性变换。这个变换也同样由很多的变换方向,我们通过特征值分解得到的前N个特征向量。那么就对应了这个矩阵最主要的N个变化方向,就可以近似这个矩阵(变换)。
1.9 奇异值与特征值的关系
1.10 机器学习为什么使用概率?
机器学习的算法设计通常依赖于对数据的概率假设。
1.11 变量与随机变量的区别