参考:
维基百科, CSDN, 知乎, torch文档, 简书 …
矩阵运算
矩阵乘法:
1. 内积(点积):
2. 外积:
3. 普通乘积(Matrix multiplication):
4. 哈达玛积(Hadamard Product):
矩阵中对应位置上的元素相乘。
5. 克罗内克积(Kronecker Product):
矩阵A的每个元素都与整个矩阵B做乘法。
矩阵加减法:
对应位置上的元素相加减(两个矩阵的形状要一样)。
Pytorch 中的矩阵运算
矩阵乘法:
1. torch.bmm(input, mat2, *, out=None)
带批量的矩阵乘积,
input
和mat2
必须都是 3D tensor。# 来自:https://pytorch.org/docs/stable/generated/torch.bmm.html input = torch.randn(10, 3, 4) mat2 = torch.randn(10, 4, 5) res = torch.bmm(input, mat2) res.size() ## torch.Size([10, 3, 5])
2. torch.mul(input, other, *, out=None)
矩阵的普通乘法,支持广播机制。
矩阵加法:
1. torch.einsum(equation, *operands)
参考:https://zhuanlan.zhihu.com/p/434232512
根据爱因斯坦求和约定,按照指定的维度对输入操作数的元素乘积求和。# 来自:https://pytorch.org/docs/stable/generated/torch.einsum.html As = torch.randn(3, 2, 5) Bs = torch.randn(3, 5, 4) torch.einsum('bij,bjk->bik', As, Bs) ########## # As.shape=[3,2,5] -- [b,i,j] # Bs.shape=[3,5,4] -- [b,j,k] # 'bij,bjk -> bik' = [3,2,4] ##########
矩阵相关:
单位矩阵(identity matrices):
n阶单位矩阵是一个 nxn 的方阵,对角线上元素为1,其余为0.
对角矩阵(diagonal matrix):
除对角线上的元素之外,其他元素都为0.
对称矩阵(symmetric matrix):
对称矩阵中的右上至左下方向元素以主对角线(左上至右下)为轴进行对称。
矩阵的迹(trace):
一个 nxn 的矩阵中,主对角线(从左上方至右下方的对角线)上各个元素的总和,记为 tr(A) 或 Sp(A)。
范数(norm):
范数是对矩阵的一种度量方式。
公式:
范数有多种,L0范数,L1范数,L2范数等。
L0 范数 (p=0),表示 x 中非0元素的个数;
L1范数 (p=1),表示所有元素绝对值之和;
L2范数 (p=2),表示向量或矩阵的元素平方和然后开根号;【机器学习中经常会使用L2范数,所以L2范数经常简化为||x||
,省略下标2】
详见:https://blog.csdn.net/qq_42138662/article/details/109258028
线性相关性和秩:
线性相关性:
一组向量中(x1,x2, …, xn),如果一个向量可以表示为其余向量的线性组合,则称该向量是线性相关的;反之,则是线性无关的。
比如:x1 = [1, 2, 3]; x2 = [4, 1, 5]; x3 = [2, -3, -1];
因为x3 = -2*x1+x2
,所以x1, x2, x3
是线性相关的。
秩:
列秩(或行秩):矩阵中线性无关列(或行)的数量。
关于矩阵秩的计算可参考:https://blog.csdn.net/edward_zcl/article/details/90177159
矩阵的逆:
两个 n 阶方阵 A 和 B,如果 AB = BA = E (E为单位矩阵),那么A和B互为逆矩阵。
正交矩阵:
如果 AA.T = E(A为n阶方阵,A.T是A的转置矩阵,E为单位矩阵),那么A称为正交矩阵。
行列式:
行列式是一个在方阵上计算得到的标量,它等于平行的主对角线元素相乘之和,减去平行的副对角线相乘之和。
(如图所示,红色部分减去蓝色部分)
导数:
偏导数:
多元函数有多个自变量,在对多元函数求导时,只保留其中一个自变量,并将其他的自变量视为常量,再用一元函数求导的方法求出被保留的自变量对于多元函数的导数。
方向导数:
详情见:https://www.zhihu.com/question/36301367
概率论:
随机变量 (random variable):
随机变量可以是离散的或者连续的,离散型变量的概率分布可以用概率质量函数 (probability mass function, PMF) 来描述;连续型变量可以用概率密度函数 (probability density function, PDF)来描述。
联合概率分布 (joint probability distribution):
多个变量的概率分布被称为联合概率分布。比如 P(X=x, Y=y) 表示X=x和Y=y同时发生的概率,可简写为 P(x,y)。
边缘概率分布 (marginal probability distribution):
一组变量的联合概率分布中,某一个子集的概率分布称为 边缘概率分布。
条件概率:
某个事件在特定条件下发生的概率。
事件之间可能是独立的 (比如:随机有放回取球),也可能是相关的 (随机无放回取球)。
信息论:
信息论的研究对象是信息,信息的作用是用来消除事件的不确定性。
信息熵:
P(x)
是事件x发生的概率。
当事件的不确定性越大时,信息熵也就越大(需要弄清一件不确定性很大的事件时,需要的信息量也就越大)。
条件熵:
条件熵:间接作用于事件,并且可以消除事件的不确定性的相关信息。
已知 x和y 的联合概率 P(x,y),y在x条件下发生的概率 P(x|y),由此计算出Y条件下事件X的条件熵 H(X|Y)。
互信息 (mutual information):
量化相关信息之间的相关性(量化两个随机事件之间的相关性)。
假设两个随机事件 X 和 Y是相互独立的,互信息计算公式:
推导可得I(X; Y) = H(X) - H(X|Y)
,就是说,互信息就是事件 X 的信息熵减去事件 Y 条件下发生事件 X 的条件熵,即在了解事件 Y 的条件下,对消除事件 X 不确定性所提供的信息量。
相对熵 (relative entropy):
除了互信息外,还可以用相对熵(也称为 KL散度)来衡量相关性。与互信息不同的是,相对熵用来衡量两个取值为正数的函数的相关性,其衡量对象是两个函数。公式:
交叉熵 (cross entropy):
衡量两个独立概率分布的差异性。公式:
交叉熵 = 信息熵 + 相对熵(KL散度)
在机器学习中,交叉熵通常用于计算模型的损失:用softmax将神经网络最后一层隐藏层输出结果转化为概率分布,之后使用交叉熵损失来估算模型输出的概率分布于真实概率之间的“距离”,即常说的损失。