1. 相关系数
称为Correlation coefficient,又称皮尔逊相关系数,衡量了两个变量的线性相关程度。定义变量XXX与YYY的协方差Cov(X,Y)Cov(X,Y)Cov(X,Y):
Cov(X,Y)=E{[X−E(x)][Y−E(Y)]}Cov(X,Y)=E\{[X-E(x)][Y-E(Y)]\}Cov(X,Y)=E{[X−E(x)][Y−E(Y)]}
随机变量XXX与YYY的相关系数ρXY\rho_{XY}ρXY:
ρXY=Cov(X,Y)D(x)D(y)\rho_{XY}=\frac{Cov(X,Y)}{\sqrt{D(x)}\sqrt{D(y)}}ρXY=D(x)D(y)Cov(X,Y)
相关系数有如下的性质:
1.∣ρXY∣≤1|\rho_{XY}|\leq 1∣ρXY∣≤1,∣ρXY∣|\rho_{XY}|∣ρXY∣越大,标明线性相关程度越高,当∣ρXY∣=0|\rho_{XY}|=0∣ρXY∣=0,表示为不相关。
2.∣ρXY∣=1|\rho_{XY}|=1∣ρXY∣=1的充要条件是,存在常数a,ba,ba,b使得 P{Y=a+bX}=1P\{Y=a+bX\}=1P{Y=a+bX}=1,即XXX和YYY一定存在线性关系。
3.线性相关和独立的关系:
- 当XXX和YYY相互独立时,Cov(X,Y)=0Cov(X,Y)=0Cov(X,Y)=0,因此∣ρXY∣=0|\rho_{XY}|=0∣ρXY∣=0,此时XXX和YYY一定不相关。
- 当XXX和YYY不相关,XXX和YYY不一定相互独立。因为不相关针对线性关系来说的,相关独立是就一般关系来说的。
1.1相关矩阵
相关系数针对两个随机变量,相关矩阵是对相关系数在nnn个随机变量的扩展:(X1,X2,...,Xn)(X_{1},X_{2},...,X_{n})(X1,X2,...,Xn),
R=[ρ11ρ12...ρ1nρ21ρ22...ρ2n............ρn1ρn2...ρnn]R=\begin{bmatrix}
\rho_{11} & \rho_{12}&... &\rho_{1n} \\
\rho_{21} & \rho_{22}&... &\rho_{2n} \\
... & ...&... &... \\
\rho_{n1} & \rho_{n2}&... &\rho_{nn} \\
\end{bmatrix}R=⎣⎢⎢⎡ρ11ρ21...ρn1ρ12ρ22...ρn2............ρ1nρ2n...ρnn⎦⎥⎥⎤
2.向量的相似度
当前最常用的衡量向量相似度的是余弦相似度,或者是两者的点积。设两个向量X=[x1,x2,...,xn]TX=[x_{1},x_{2},...,x_{n}]^{T}X=[x1,x2,...,xn]T,Y=[y1,y2,...,yn]TY=[y_{1},y_{2},...,y_{n}]^{T}Y=[y1,y2,...,yn]T,点积也成为了内积(inner product),
XTY=x1∗y1+x1∗y1+...+xn∗ynX^{T} Y=x_{1}*y_{1}+x_{1}*y_{1}+...+x_{n}*y_{n}XTY=x1∗y1+x1∗y1+...+xn∗yn
cos<X,Y>=XTY∣∣X∣∣ ∣∣Y∣∣\cos<X,Y>=\frac{X^{T} Y}{||X||\ ||Y||}cos<X,Y>=∣∣X∣∣ ∣∣Y∣∣XTY
- 余弦相似度衡量了两个向量的夹角,cos<X,Y>∈[−1,1]\cos<X,Y>\in [-1,1]cos<X,Y>∈[−1,1],值越大,标明两个向量夹角越小,相似度越高。
- 点积,X⋅Y=cos<X,Y>∣∣X∣∣ ∣∣Y∣∣X\cdot Y=\cos<X,Y>||X||\ ||Y||X⋅Y=cos<X,Y>∣∣X∣∣ ∣∣Y∣∣。点积反映了夹角以及向量的长度因素,在余弦相似度的基础上,两个向量的模越大,相关性越大。点积被用在capsule network时的参数更新计算。
2.1 Gram矩阵
点积运算可以被扩展到3D的feature map,论文:A Gift from Knowledge Distillation:
Fast Optimization, Network Minimization and Transfer Learning中采用Gram矩阵来tranfer的teacher的解过程的流动。
设X∈RH×W×MX\in R^{H\times W\times M}X∈RH×W×M,Y∈RH×W×NY\in R^{H\times W\times N}Y∈RH×W×N,H,WH,WH,W是spatial维度,M,NM,NM,N为channel维度,Gram矩阵G∈RM×NG\in R^{M\times N}G∈RM×N。
Gi,j=∑h=1H∑w=1WXh,w,i×Yh,w,jH×WG_{i,j}=\sum_{h=1}^{H}\sum_{w=1}^{W}\frac{X_{h,w,i}\times Y_{h,w,j}}{H\times W}Gi,j=h=1∑Hw=1∑WH×WXh,w,i×Yh,w,j
得到的Gram矩阵相当于抓住了特征图XXX与YYY之间的channel-wise相关度。
实现代码:
import torch
def GramMatrix(A, B):
"""
Argument:
A -- matrix of shape (batch_size, n_C,n_H, n_W)
Returns:
GA -- Gram matrix of A, of shape (n_C, n_C)
"""
A_batch_size, A_n_C, A_n_H, A_n_W = A.size()
B_batch_size, B_n_C, B_n_H, B_n_W = B.size()
A = A.view(A_batch_size, A_n_C, -1)
B = B.view(B_batch_size, B_n_C, -1)
GA = torch.bmm(A, B.transpose(1, 2))
return GA
x = torch.randn(2, 3, 4, 4)
y = torch.randn(2, 5, 4, 4)
print(GramMatrix(x,y).size()) # torch.Size([2, 3, 5])