一.前言
跟随李沐大神的《动手学深度学习》,在一边理解代码的同时一边学习其中所蕴含的线性代数知识。
二.线性代数知识汇总(部分)
1.矩阵:
矩阵的乘法:拿二维矩阵的乘法为例子:
就是第一个矩阵的横分别乘以第二个矩阵的每一行,位置一一对应。
矩阵的乘法结果还是矩阵。
解释:矩阵的乘法类似是空间的扭曲,
矩阵的乘法:torch.mm()
除此之外还有矩阵按元素的乘法:被称为哈达玛积(A*B)
矩阵计算:
标量导数(高数课的基础导数求导知识,导数的几何意义,链式法则等):
若导数扩展到不可微的函数上:
>使用亚导数
亚导数:用于描述在某些情况下,函数在某点处可能没有导数或导数不唯一的情况
对于一个函数 f(x) 在某一点 x0 处,如果存在一个数值 d,满足以下条件:
-
-
-
- 对于点 x0 左侧的任意 x1,如果 f(x1) 小于等于 f(x0) + d(x1 - x0),则 f(x1) - f(x0) ≤ d(x1 - x0)。
- 对于点 x0 右侧的任意 x2,如果 f(x2) 大于等于 f(x0) + d(x2 - x0),则 f(x2) - f(x0) ≥ d(x2 - x0)。
-
-
在这种情况下,d 被称为函数 f(x) 在 x0 处的亚导数。
亚导数可以看作是对于函数在某一点的变化率的一种下界或上界估计
梯度:将导数扩展到向量
——梯度指向值变化最大的那个方向
情况一:y是标量,x是向量
情况二:y是向量,x是标量
对于情况一和情况二:
前者是行向量,后者是列向量
情况三:x和y都是向量
扩展到矩阵(简单了解即可):
2.范数(矩阵的长度):
- 1.常见范数:矩阵范数:最小的满足上面公式的值
- 2.f范数:就是将矩阵拉为一行的向量,进行平方求和
- 3.特征向量:
不会被矩阵改变方向的向量
对称矩阵总是可以找到特征向量
3.自动求导:
向量链式法则:
对于标量来说,标量的链式法则如下图:
如果扩展到向量来说,向量的链式法则如下:
简单来说,就是把复杂的向量函数求导拆解为,各个分量函数的导数和分量函数之间的关系,比如上图的y对于x拆解为y对u和u对x,需要注意的是:向量链式法则要求每个分量函数都可微分,且各个函数之间的复合满足可微分的条件
自动求导:
自动求导是指计算一个函数在指定值上的导数,它有别于:
1.符号求导;
2.数值求导:
一句话:符号求导通过符号计算得到函数的导数表达式,数值求导通过数值近似方法计算函数的导数值
自动求导涉及到一个计算图的概念
计算图(不需要理解,知道原理即可):
将代码分解成操作子,将计算表示成一个无环图:
自动求导的两种模式(正向累积和反向累积):