文章目录
线性代数
标量、向量、矩阵和张量
- 标量(scalar) 是一个单独的数
- 向量(vector) 是一列数.
- 矩阵(matrix) 是一个二维数组
- 张量(tensor) 是超过两维的数组
- 广播(broadcasting)
当矩阵和向量相加时, 产生另一个矩阵: C = A + b C=A+b C=A+b, 其中 C i , j = A i , j + b j C_{i,j}=A_{i,j}+b_j Ci,j=Ai,j+bj, 换言之, 向量b和矩阵A的每一行相加.
矩阵和向量相乘
-
矩阵乘积(matrix product)
对 C = A B C=AB C=AB, 要求矩阵A的列数必须和B的行数相等. 如果矩阵A的形状是 m × n m\times n m×n, 矩阵B的形状是 n × p n \times p n×p, 则矩阵C的形状是 m × p m\times p m×p.
写成元素定义:
C i , j = ∑ k A i , k B k , j C_{i, j}=\sum_{k}^{}A_{i,k}B_{k,j} Ci,j=∑kAi,kBk,j -
哈达玛积(Hadamard product), 或叫元素对应乘积(element-wise product)
记作 A ⊙ B A\odot B A⊙B -
向量点积(dot product)
可看作矩阵乘积 x T y x^Ty xTy
矩阵乘积运算性质
-
分配律
A(B+C) = AB + AC -
结合律
A(BC) = (AB)C -
两个向量的点积满足交换律
x T y x^Ty xTy = y T x y^Tx yTx -
可以表示线性方程组
Ax = b
明确地写作:
A 1 , 1 x 1 + A 1 , 2 x 2 + . . . + A 1 , n x n = b 1 A_{1,1}x_1+A_{1,2}x_2+...+A_{1,n}x_n=b_1 A1,1x1+A1,2x2+...+A1,nxn=b1
A 2 , 1 x 1 + A 2 , 2 x 2 + . . . + A 2 , n x n = b 2 A_{2,1}x_1+A_{2,2}x_2+...+A_{2,n}x_n=b_2 A2,1x1+A2,2x2+...+A2,nxn=b2
逆矩阵
矩阵A的逆矩阵记作
A
−
1
A_{-1}
A−1, 其满足如下条件:
A
−
1
A
=
I
n
A_{-1}A=I_n
A−1A=In
逆矩阵可以求线性方程组:
A
x
=
b
Ax=b
Ax=b
A
−
1
A
x
=
A
−
1
b
A_{-1}Ax=A_{-1}b
A−1Ax=A−1b
I
n
x
=
A
−
1
b
I_nx=A_{-1}b
Inx=A−1b
x
=
A
−
1
b
x=A_{-1}b
x=A−1b
范数
-
机器学习中经常使用**范数(norm)**的函数来衡量向量大小 . 形式上, L p L^p Lp 范数定义如下:
∣ ∣ x ∣ ∣ p = ( ∑ i ∣ x i ∣ p ) 1 p \left| \right| x\left| \right|_p=(\sum_{i}^{}\left|x_i \right|^p)^{\frac{1}{p}} ∣∣x∣∣p=(∑i∣xi∣p)p1
直观上, 向量x的范数衡量从原点到x的距离. -
当p等于2时, L 2 L^2 L2 范数称为欧几里得范数(Euclidean norm)
-
平方的 L 2 L^2 L2 范数也常用来衡量向量的大小, 可以简单的通过点积 x T x x^Tx xTx计算
-
平方的 L 2 L^2 L2 范数在数学和计算上都比 L 2 L^2 L2 范数本身更方便。例如,平方的 L 2 L^2 L2 范数对x中每个元素的导数只取决于对应的元素,而 L 2 L^2 L2 范数对每个元素的导数和整个向量相关。
-
但平方的 L 2 L^2 L2 范数在原点附近增长的十分缓慢, 在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下可以使用 L 1 L^1 L1范数, L 1 L^1 L1范数 如下:
∣ ∣ x ∣ ∣ 1 = ∑ i ∣ x i ∣ \left| \right| x\left| \right|_1=\sum_{i}^{}\left|x_i \right| ∣∣x∣∣1=∑i∣xi∣ . 当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L 1 L^1 L1范数。每当x中某个元素从0增加∈,对应的 L 1 L^1 L1范数也会增加∈。 -
最大范数(max norm)
L ∝ L^\propto L∝ 范数表示向量中具有最大幅值元素的绝对值:
∣ ∣ x ∣ ∣ ∝ = m a x i ∣ x i ∣ \left| \right| x\left| \right|_\propto =max_i\left|x_i \right| ∣∣x∣∣∝=maxi∣xi∣ -
衡量矩阵的大小
使用Frobenius范数(Frobenius norm) 衡量矩阵的大小, 即:
∣ ∣ A ∣ ∣ F = ∑ i , j A i , j 2 \left| \right| A\left| \right|_F=\sqrt{\sum_{i,j}A_{i,j}^2} ∣∣A∣∣F=∑i,jAi,j2. 类似于向量的 L 2 L^2 L2范数 -
两个向量的点积可以用范数来表示, 具体如下:
x T y = ∣ ∣ x ∣ ∣ 2 ∣ ∣ y ∣ ∣ 2 c o s θ x^Ty=\left| \right| x\left| \right|_2\left| \right| y\left| \right|_2 cos\theta xTy=∣∣x∣∣2∣∣y∣∣2cosθ
特殊矩阵
-
对角矩阵
只在主对角线含有非0元素, 其他位置都是0. d i a g ( v ) diag(v) diag(v)表示对角元素由向量v中元素给定的一个对角方阵
计算矩阵乘法 d i a g ( v ) x diag(v)\ x diag(v) x, 只需要将向量x中的每个元素 x i x_i xi放大放大 v i v_i vi倍数. 换言之, d i a g ( v ) x diag(v)\ x diag(v) x = v ⊙ x v\odot x v⊙x
当且仅当对角元素都非0, 对角方阵的逆矩阵存在, 其中 d i a g ( v ) − 1 diag(v)^{-1} diag(v)−1 = d i a g ( [ 1 v 1 , . . . . 1 v n ] T ) diag([\frac{1}{v_1}, ....\frac{1}{v_n}]^T) diag([v11,....vn1]T), 其实就是每个元素取倒数 -
对称矩阵
对称矩阵是转置后和自己相等的矩阵 -
正交矩阵
单位向量(unit vector) 是具有单位范数(unit norm)的向量. 即:
∣ ∣ x ∣ ∣ 2 = 1 \left| \right| x\left| \right|_2=1 ∣∣x∣∣2=1
如果 x T y = 0 x^Ty=0 xTy=0, 那么向量x和向量y互相正交(orthogonal) . 如果两个向量都有非0范数, 那么这两个向量之间的夹角是90°.
在 R n R^n Rn也就是n维空间中, 如果有n个范数非0向量互相正交且范数都为1, 则称它们是标准正交
- 正交矩阵是指行向量和列向量是分别标准正交的方阵. 即
A T A = A A T = I A^TA=AA^T=I ATA=AAT=I
这意味着, A − 1 = A T A^{-1}=A^T A−1=AT
特征分解
特征分解(eigendecomposition)将矩阵分解为一组特征向量和特征值.
-
方阵A的特征向量(eigenvector) 是指与A相乘后相当于对该向量进行缩放的非零向量 v v v:
A v = λ v Av=\lambda v Av=λv
其中标量 λ \lambda λ 称为这个特征向量对应的特征值 -
如果v是A的特征向量, 那么任何缩放后的向量sv 也是A的特征向量. 此外, sv和v有相同的特征值, 基于这个原因, 通常只考虑单位特征向量
-
假设矩阵A有n个线性无关的特征向量 { v ( 1 ) , v ( 2 ) , . . . . , v ( n ) } \{v^{(1)},v^{(2)},....,v^{(n)} \} {v(1),v(2),....,v(n)}, 对应着特征值 { λ 1 , λ 2 , . . . . . λ n } \{\lambda_1, \lambda_2, .....\lambda_n\} {λ1,λ2,.....λn}
将特征向量连接成一个矩阵, 每一列是一个特征向量, V = { v ( 1 ) , v ( 2 ) , . . . . , v ( n ) } V=\{v^{(1)},v^{(2)},....,v^{(n)} \} V={v(1),v(2),....,v(n)}
类似的把特征值连接成一个向量. λ = { λ 1 , λ 2 , . . . . . λ n } \lambda=\{\lambda_1, \lambda_2, .....\lambda_n\} λ={λ1,λ2,.....λn}
因此A的特征分解可以记作:
A = V d i a g ( λ ) V − 1 A=Vdiag(\lambda)V^{-1} A=Vdiag(λ)V−1
- 实对称矩阵(实数, 转置后和自己相等的矩阵) 可以分解成实特征向量和实特征值
即 A = Q Λ Q T A=Q\Lambda Q^T A=QΛQT, Q是A的特征向量组成的正交矩阵, Λ \Lambda Λ是对角矩阵.
特征值 Λ i \Lambda_{i} Λi, 其中i对应的特征向量是矩阵Q的第i列. 记作 Q : , i Q_{:, i} Q:,i.
因为Q是正交矩阵, 可以把A看成沿方向 v ( i ) v^{(i)} v(i)延展 λ i \lambda_i λi倍的空间, 如下图所示:
在图中矩阵A有两个标准正交的特征向量, 对应特征值为 λ 1 \lambda_1 λ1的 v ( 1 ) v^{(1)} v(1)以及对应特征值为 λ 2 \lambda_2 λ2的 v ( 2 ) v^{(2)} v(2). 左边是所有单位向量 u ∈ R 2 u∈R^2 u∈R2的集合, 构成一个单位圆. 右边是所有 A u Au Au点的集合, 可以看到 A的效果就是将 v ( i ) v^(i) v(i)方向的空间拉伸了 λ \lambda λ倍
-
虽然任意一个实对称矩阵A都有特征分解, 但是特征分解可能并不唯一. 如果两个或多个特征向量拥有相同的特征值, 那么在由这些特征向量产生的生成子空间中,任意一组正交向量都是该特征值对应的特征向量。因此,我们可以等价地从这些特征向量中构成Q作为替代。按照惯例,我们通常按降序排列Λ的元素。在该约定下,特征分解唯一,当且仅当所有的特征值都是唯一的。
-
所有特征值都是正数的矩阵称为正定(positive definite);所有特征值都是非负数的矩阵称为半正定(positivesemidefinite)。同样地,所有特征值都是负数的矩阵称为负定(negative definite);所有特征值都是非正数的矩阵称为半负定(negative semidefinite)。
奇异值分解
奇异值分解(singular valuedecomposition, SVD)是将矩阵分解为奇异向量和奇异值.
奇异值分解有更广泛的应用。每个实数矩阵都有一个奇异值分解,但不一定都有特征分解。 例如,非方阵的矩阵没有特征分解,这时我们只能使用奇异值分解。
在用特征分解分析矩阵A时, 有:
A
=
V
d
i
a
g
(
λ
)
V
−
1
A=Vdiag(\lambda)V^{-1}
A=Vdiag(λ)V−1
奇异值分解是类似的, 只不过这次将A分解为三个矩阵的乘积:
A
=
U
D
V
T
A=UDV^T
A=UDVT
假设A是一个m×n的矩阵. 那么U是一个m×m的矩阵, D是一个m×n的矩阵, V是一个n×n矩阵.
这些矩阵中的每一个经定义后都拥有特殊的结构。矩阵U和V都定义为正交矩阵,而矩阵D定义为对角矩阵。注意,矩阵D不一定是方阵。
概率
频率派和贝叶斯派的简单理解
简单地说,频率学派与贝叶斯学派探讨「不确定性」这件事时的出发点与立足点不同。频率学派从「自然」角度出发,试图直接为「事件」本身建模,即事件A在独立重复试验中发生的频率趋于极限p,那么这个极限就是该事件的概率。举例而言,想要计算抛掷一枚硬币时正面朝上的概率,我们需要不断地抛掷硬币,当抛掷次数趋向无穷时正面朝上的频率即为正面朝上的概率。
然而,贝叶斯学派并不从试图刻画「事件」本身,而从「观察者」角度出发。贝叶斯学派并不试图说「事件本身是随机的」,或者「世界的本体带有某种随机性」,这套理论根本不言说关于「世界本体」的东西,而只是从「观察者知识不完备」这一出发点开始,构造一套在贝叶斯概率论的框架下可以对不确定知识做出推断的方法。频率学派下说的「随机事件」在贝叶斯学派看来,并不是「事件本身具有某种客观的随机性」,而是「观察者不知道事件的结果」而已,只是「观察者」知识状态中尚未包含这一事件的结果。但是在这种情况下,观察者又试图通过已经观察到的「证据」来推断这一事件的结果,因此只能靠猜。贝叶斯概率论就想构建一套比较完备的框架用来描述最能服务于理性推断这一目的的「猜的过程」。因此,在贝叶斯框架下,同一件事情对于知情者而言就是「确定事件」,对于不知情者而言就是「随机事件」,随机性并不源于事件本身是否发生,而只是描述观察者对该事件的知识状态。
概率分布和概率质量函数
直观上来说, 数据在统计图中的形状, 叫做它的分布。离散型随机变量的概率分布可以用**概率质量函数(probability mass function, PMF)**来描述。
有时我们会先定义一个随机变量, 然后用~
符号来说明它服从的分布, 如 x~P(x)
概率质量函数可以同时用于多个随机变量, 这种多个随机变量的概率分布被称为联合概率分布 (joint probability distribution) .
P(x=x, y=y)
表示x=x和y= y同时发生的概率, 也可简写为P(x,y)
概率密度函数
当研究的对象是连续型随机变量时,用 概率密度函数(probability density function, PDF) 而不是概率质量函数来描述它的概率分布。
概率密度函数p(x)
并没有直接对特定的状态给出概率,相对的,它给出了落在面积为δx
的无限小的区域内的概率为p(x) δx
。
我们可以对概率密度函数求积分来获得点集的真实概率质量。特别是,x落在集合S中的概率可以通过p(x)
对这个集合求积分来得到。在单变量的例子中,x落在区间[a,b]
的概率是
∫
a
b
p
(
x
)
d
x
\int_{a}^{b}p(x)dx
∫abp(x)dx。
给出一个均匀分布的例子:
均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b)
通常用x~U(a,b)
表示x在[a,b]上是均匀分布的
边缘概率
有时,我们知道了一组变量的联合概率分布,但想要了解其中一个子集的概率分布。这种定义在子集上的概率分布被称为边缘概率分布(marginal probability distribution)。
-
对离散型随机变量x和y, 并且知道
P(x,y)
, 可以依据求和法则来计算P(x)
-
对于连续型变量, 只需要用积分代替求和:
p ( x ) = ∫ p ( x , y ) d y p(x)=\int_{}^{}p(x,y)dy p(x)=∫p(x,y)dy
条件概率
某个事件在给定其他事件发生时出现的概率叫条件概率. 在给定x=x, y=y发生的概率记作 P=(y=y|x=x)
. 这个条件概率可以通过下面的公式计算.
条件概率的链式法则
- 任何多维随机变量的联合概率分布,都可以分解成只有一个变量的条件概率相乘的形式
这个规则被称为概率的链式法则(chain rule)或者乘法法则(product rule)
这个公式可以通过条件概率的定义得到:
P
(
a
,
b
,
c
)
=
P
(
a
∣
b
,
c
)
P
(
b
,
c
)
P(a,b,c)=P(a|b,c)P(b,c)
P(a,b,c)=P(a∣b,c)P(b,c)
P
(
b
,
c
)
=
P
(
b
∣
c
)
P
(
c
)
P(b,c)=P(b|c)P(c)
P(b,c)=P(b∣c)P(c)
P
(
a
,
b
,
c
)
=
P
(
a
∣
b
,
c
)
P
(
b
∣
c
)
P
(
c
)
P(a,b,c)=P(a|b,c)P(b|c)P(c)
P(a,b,c)=P(a∣b,c)P(b∣c)P(c)
独立性和条件独立性
两个随机变量x和y,如果它们的概率分布可以表示成两个因子的乘积形式,并且一个因子只包含x,另一个因子只包含y,我们就称这两个随机变量是相互独立的(independent):
因为原来的公式其实是 p(x,y) =p(x|y)p(y)
如果关于x和y的条件概率分布对于z的每一个值都可以写成乘积的形式,那么这两个随机变量x和y在给定随机变量z时是条件独立的(conditionally independent):
可以采用一种简化形式来表示独立性和条件独立性:x⊥y
表示x和y相互独立,x⊥y|z
表示x和y在给定z时条件独立
期望, 方差和协方差
函数f(x)关于某分布P(x)的期望(expectation)或者期望值(expected value)是指,当x由P产生,f作用于x时,f(x)的平均值。对于离散型随机变量,这可以通过求和得到
当然更常见的是下面这种:
对于连续型随机变量,可以通过求积分得到
- 当概率分布在上下文中指明时,我们可以只写出期望作用的随机变量的名称来进行简化, 例如 E x [ f ( x ) ] E_x[f(x)] Ex[f(x)]
- 如果期望作用的随机变量也很明确,我们可以完全不写脚标,就像 E [ f ( x ) ] E[f(x)] E[f(x)]
- 默认地,我们假设
E[.]
表示对方括号内的所有随机变量的值求平均, 当没有歧义时, 还可以省略方括号
方差衡量的时当我们对x依据它的概率分布进行采样时, 随机变量x的函数值会呈现多大的差异:
方差的平方根被称为标准差
协方差(covariance) 在某种意义上给出了两个变量线性相关的强度以及这些变量的尺度:
- 协方差的绝对值如果很大,则意味着变量值变化很大,并且它们同时距离各自的均值很远
- 如果协方差是正的,那么两个变量都倾向于同时取得相对较大的值。如果协方差是负的,那么其中一个变量倾向于取得相对较大的值的同时,另一个变量倾向于取得相对较小的值,反之亦然。
协方差, 相关性,独立性的关系
协方差和相关性是有联系的,但实际上是不同的概念。如果两个变量相互独立,那么它们的协方差为零;如果两个变量的协方差不为零,那么它们一定是相关的。
然而,独立性又是和协方差完全不同的性质。两个变量如果协方差为零,它们之间一定没有线性关系。独立性是比零协方差的要求更强,因为独立性还排除了非线性的关系。两个变量相互依赖,但是具有零协方差是可能的。
例如,假设我们首先从区间[-1,1]上的均匀分布中采样出一个实数x,然后对一个随机变量s进行采样。s以 1 2 \frac{1}{2} 21的概率值为1,否则为-1。我们可以通过令y=sx来生成一个随机变量y。显然,x和y不是相互独立的,因为x完全决定了y的尺度。然而,Cov(x,y)=0。
协方差矩阵是个方阵, 对角线是方差
先验和后验
对变量c来说, 先验概率P(c=i)。“先验”一词表明了在观测到x之前传递给模型关于c的信念。作为对比,P(c|x)是后验概率(posterior probability),因为它是在观测到x之后进行计算的。
贝叶斯规则
我们经常会需要在已知P(y|x)时计算P(x|y)。幸运的是,如果还知道P(x),我们可以用贝叶斯规则(Bayes’rule)来实现这一目的:
- 注意到P(y)出现在上面的公式中,它通常使用 P ( y ) = ∑ x P ( y ∣ x ) P ( x ) P(y)=\sum_{x}P(y|x)P(x) P(y)=∑xP(y∣x)P(x)来计算,所以我们并不需要事先知道P(y)的信息。贝叶斯规则可以从条件概率的定义直接推导得出.
信息论
信息论的基本想法是一个不太可能的事件居然发生了,要比一个非常可能的事件发生,能提供更多的信息。消息说:“今天早上太阳升起”,信息量是如此之少,以至于没有必要发送;但一条消息说:“今天早上有日食”,信息量就很丰富。
我们想要通过这种基本想法来量化信息。特别是:
- 非常可能发生的事件信息量要比较少,并且极端情况下,确保能够发生的事件应该没有信息量。
- 较不可能发生的事件具有更高的信息量。
- 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。
为了满足上述3个性质,我们定义一个**事件x=x的自信息(self-information)**为:
这里的log的底数是e, 单位是奈特(nats)
香农熵
自信息只处理单个的输出。我们可以用香农熵(Shannon entropy) 来对整个概率分布中的不确定性总量进行量化:
也记作H(P)。换言之,一个分布的香农熵是指遵循这个分布的事件所产生的期望信息总量。那些接近确定性的分布(输出几乎可以确定)具有较低的熵;那些接近均匀分布的概率分布具有较高的熵. 当x是连续的,香农熵被称为微分熵(differential entropy)。
下图是二值随机变量的香农熵。
该图说明了更接近确定性的分布是如何具有较低的香农熵,而更接近均匀分布的分布是如何具有较高的香农熵。水平轴是p,表示二值随机变量等于1的概率。当p接近0时,分布几乎是确定的,因为随机变量几乎总是0。当p接近1时,分布也几乎是确定的,因为随机变量几乎总是1。当p=0.5时,熵是最大的,因为分布在两个结果(0和1)上是均匀的
KL散度
如果对于同一个随机变量x有两个单独的概率分布P(x)和Q(x),可以使用KL散度(Kullback-Leibler(KL)divergence) 来衡量这两个分布的差异:
KL散度是不对称的。假设我们有一个分布p(x),并且希望用另一个分布q(x)来近似它。我们可以选择最小化
D
K
L
(
p
∣
∣
q
)
D_{KL}(p||q)
DKL(p∣∣q)或最小化
D
K
L
(
q
∣
∣
p
)
D_{KL}(q||p)
DKL(q∣∣p)。
为了说明每种选择的效果,我们令p是两个高斯分布的混合,令q为单个高斯分布。选择使用KL散度的哪个方向是取决于问题的。一些应用需要这个近似分布q在真实分布p放置高概率的所有地方都放置高概率,而其他应用需要这个近似分布q在真实分布p放置低概率的所有地方都很少放置高概率。KL散度方向的选择反映了对于每种应用,优先考虑哪一种选择。
下图(左)最小化 D K L ( p ∣ ∣ q ) D_{KL}(p||q) DKL(p∣∣q)的效果。在这种情况下,我们选择一个q,使得它在p具有高概率的地方具有高概率。当p具有多个峰时,q 选择将这些峰模糊到一起,以便将高概率质量放到所有峰上。
下图(右)最小化
D
K
L
(
q
∣
∣
p
)
D_{KL}(q||p)
DKL(q∣∣p)的效果。在这种情况下,我们选择一个q,使得它在p 具有低概率的地方具有低概率。当p 具有多个峰并且这些峰间隔很宽时,如该图所示,最小化KL散度会选择单个峰,以避免将概率质量放置在p的多个峰之间的低概率区域中。
是非负的。KL散度为0,当且仅当P和Q在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是“几乎处处”相同的。因为KL散度是非负的并且衡量的是两个分布之间的差异,它经常被用作分布之间的某种距离。然而,它并不是真的距离,因为它不是对称的:对于某些P和Q, D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)= D K L ( Q ∣ ∣ P ) D_{KL}(Q||P) DKL(Q∣∣P)。这种非对称性意味着选择 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)还是 D K L ( Q ∣ ∣ P ) D_{KL}(Q||P) DKL(Q∣∣P)影响很大
交叉熵
交叉熵(cross-entropy),即
H
(
P
,
Q
)
=
H
(
P
)
+
D
K
L
(
P
∣
∣
Q
)
H(P,Q)=H(P)+D_{KL}(P||Q)
H(P,Q)=H(P)+DKL(P∣∣Q),它和KL散度很像,但是缺少左边一项:
针对Q最小化交叉熵等价于最小化KL散度,因为Q并不参与被省略的那一项。
数值计算
基于梯度的优化方法
我们把要最小化或最大化的函数称为目标函数(objective function)或准则(criterion)。当我们对其进行最小化时,也把它称为代价函数(cost function)、损失函数(loss function) 或误差函数(error function)
我们通常使用一个上标∗表示最小化或最大化函数的x值,如记 x ∗ = a r g m i n f ( x ) x^∗=arg minf(x) x∗=argminf(x)。
建议新的点为
其中∈为学习率(learning rate)
下图是梯度下降算法如何使用函数导数的示意图,即沿着函数的下坡方向(导数反方向)直到最小