作者课堂笔记,联系方式humminwang@163.com
这块比较难,表述不清楚的话还是希望读者好好去钻研几篇文章,祝好~
Preview
-
- 最大相关
-
- SVD奇异值分解
-
- Power iteration算法
-
- ACE算法
-
- 编程实现ACE
1 最大相关(Maximal Correlation)
在监督学习中,且
X
,
Y
X,Y
X,Y是离散的,
X
X
X表示数据,
Y
Y
Y表示标签,我们想要更好找到数据和标签之间的联系,也就是在数据中找到关于标签的信息。我们就是想找到
X
Y
XY
XY交集并且使之最大化。
根据HGR(Hirschfeld-Gebelein-Renyi)理论,最大相关是一种有效的方式来测量两个随机变量之间的相关性。在推理问题中,最大相关函数可以被视为观察数据的所谓特征,其携带关于一些潜在变量的大量的信息。 这些特征通常是非线性函数,并且在处理高维观测数据时特别有用。最大相关函数如下,它是一个众所周知的Pearson相关系数的变分推广,最初作为两个随机变量之间依赖关系的标准化度量引入。
其中
f
f
f和
g
g
g可以被理解为数据集的特征信息和标签的特征信息。之后我们介绍的ACE算法是一种计算最大相关的有效方法。
2 SVD奇异值分解
具体可以收看麻省理工学院的线性代数https://www.bilibili.com/video/av14776429/?p=30
任何一个矩阵都可以被奇异值分解并且分解为正交矩阵乘对角矩阵乘正交矩阵。
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
如下图,说明了SVD的真实目标。
SVD的本质就是在行空间中寻找一组正交基变换到列空间中一组正交基。
A
[
v
1
,
v
2
.
.
.
.
v
r
]
=
[
u
1
.
.
.
.
u
r
]
[
σ
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
σ
r
]
A[v_1,v_2....v_r]=[u_1....u_r]\begin{bmatrix}\sigma_1&...&...\\...&...&...\\...&...&\sigma_r\end{bmatrix}
A[v1,v2....vr]=[u1....ur]⎣⎡σ1.....................σr⎦⎤
矩阵表示
A
V
=
U
Σ
AV=U\Sigma
AV=UΣ
存在问题:
- 如何找到在行空间的一组正交基?
我们可以知道利用Graham-Schmidt正交化方法完全可以在列空间找到这样一组正交基。 - 行空间的正交基经过变换到列空间是否仍旧正交?
我们需要找到这样一组正交基使得A作用于行空间基向量上,到列空间也能保持正交。 - 如何找到这样的U和V?
我们通过 A A T AA^T AAT可以找到对应的U,成为左奇艺向量,通过 A T A A^TA ATA可以找到对应的V称为右奇艺向量。
A T A = V Σ T U T U Σ V T = V Σ 2 V T A^TA=V\Sigma^TU^TU\Sigma V^T=V\Sigma^2V^T ATA=VΣTUTUΣVT=VΣ2VT
因为矩阵是对称正定的,那么我们经过特征值分解就可以直接分解为互相正交的单位向量,也就实现了V。同理可以寻找到U。
3 Power Iteration算法
Power iteration 算法可以用来计算矩阵(假设矩阵为M)的最大特征向量。
特征向量:
ψ
1
,
ψ
2
.
.
.
.
.
ψ
n
\psi_1,\psi_2.....\psi_n
ψ1,ψ2.....ψn
特征值:
λ
1
,
λ
2
.
.
.
λ
n
\lambda_1,\lambda_2...\lambda_n
λ1,λ2...λn
满足:
A
ψ
i
=
λ
i
ψ
i
A\psi_i=\lambda_i\psi_i
Aψi=λiψi
算法描述如下:
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
- <1> 选择一个向量 v 1 = α 1 ψ 1 + α 2 ψ 2 + . . . . + α n ψ n v_1=\alpha_1\psi_1+\alpha_2\psi_2+....+\alpha_n\psi_n v1=α1ψ1+α2ψ2+....+αnψn
- <2> 开始计算 v 2 = A v 1 / ∣ ∣ A v 1 ∣ ∣ v_2=Av_1/||Av_1|| v2=Av1/∣∣Av1∣∣
- <3> 迭代步骤<2>,最终收敛于最大的特征向量。
原理: A k v 1 = λ 1 k α 1 ψ 1 + . . . λ n k α n ψ n ≈ λ 1 k α 1 ψ 1 , λ 1 > λ 2 . . . . > λ n A^kv_1=\lambda_1^k\alpha_1\psi_1+...\lambda_n^k\alpha_n\psi_n\approx\lambda_1^k\alpha_1\psi_1,\quad\lambda_1>\lambda_2....>\lambda_n Akv1=λ1kα1ψ1+...λnkαnψn≈λ1kα1ψ1,λ1>λ2....>λn
4 ACE算法(Alternating Conditional Expectations)
我们使用的ACE 算法可以解释为计算概率分布空间之间的线性映射的奇异值分解。
同样回到初始问题:
上式可以通过概率方式转变为:
C
o
n
s
t
r
a
i
n
s
:
∑
P
X
f
(
x
)
=
∑
P
Y
g
(
y
)
=
0
Constrains:\sum P_Xf(x)=\sum P_Yg(y)=0
Constrains:∑PXf(x)=∑PYg(y)=0
∑
P
X
(
x
)
f
2
(
x
)
=
∑
P
Y
(
y
)
g
2
(
y
)
=
1
\sum P_X(x)f^2(x)=\sum P_Y(y)g^2(y)=1
∑PX(x)f2(x)=∑PY(y)g2(y)=1
P
r
i
m
:
E
X
Y
[
f
(
x
)
g
(
y
)
]
=
∑
P
X
Y
f
(
x
)
g
(
y
)
Prim:E_{XY}[f(x)g(y)]=\sum P_{XY}f(x)g(y)
Prim:EXY[f(x)g(y)]=∑PXYf(x)g(y)
.
.
.
=
∑
x
,
y
P
X
Y
(
x
,
y
)
P
X
(
x
)
P
Y
(
y
)
(
P
X
(
x
)
f
(
x
)
)
(
P
Y
(
y
)
g
(
y
)
)
...=\sum_{x,y}\frac{P_{XY}(x,y)}{\sqrt{P_X(x)}\sqrt{P_Y(y)}}(\sqrt{P_X(x)}f(x))(\sqrt{P_Y(y)}g(y))
...=x,y∑PX(x)PY(y)PXY(x,y)(PX(x)f(x))(PY(y)g(y))
.
.
.
=
∑
x
,
y
P
X
Y
(
x
,
y
)
P
X
(
x
)
P
Y
(
y
)
ϕ
(
x
)
ψ
(
y
)
=
ψ
T
B
ϕ
...=\sum_{x,y}\frac{P_{XY}(x,y)}{\sqrt{P_X(x)}\sqrt{P_Y(y)}}\phi(x)\psi(y)=\psi^TB\phi
...=x,y∑PX(x)PY(y)PXY(x,y)ϕ(x)ψ(y)=ψTBϕ
我们使
P
X
(
x
)
f
(
x
)
\sqrt{P_X(x)}f(x)
PX(x)f(x)为
ϕ
(
x
)
\phi(x)
ϕ(x),
P
Y
(
y
)
g
(
y
)
\sqrt{P_Y(y)}g(y)
PY(y)g(y)为
ψ
(
y
)
\psi(y)
ψ(y).
原式可以被化为:
m
a
x
(
ψ
T
B
ϕ
)
s
.
t
.
<
P
X
(
x
)
,
ϕ
>
=
<
P
Y
(
y
)
,
ψ
>
=
0
max(\psi^TB\phi)\quad s.t.<\sqrt{P_X(x)},\phi>=<\sqrt{P_Y(y)},\psi>=0
max(ψTBϕ)s.t.<PX(x),ϕ>=<PY(y),ψ>=0
∣
∣
ψ
∣
∣
=
∣
∣
ϕ
∣
∣
=
1
||\psi||=||\phi||=1
∣∣ψ∣∣=∣∣ϕ∣∣=1
我们可以将B矩阵进行SVD,发现
P
X
,
P
Y
\sqrt{P_X},\sqrt{P_Y}
PX,PY实际上是B的最大奇艺向量。
将B分解如下:
S
i
n
g
u
l
a
r
V
a
l
u
e
:
σ
1
≥
σ
2
.
.
.
.
σ
n
Singular\quad Value:\sigma_1≥\sigma_2....\sigma_n
SingularValue:σ1≥σ2....σn
S
i
n
g
u
l
a
r
V
e
c
t
o
r
:
ψ
1
,
.
.
.
.
ψ
n
;
ϕ
1
,
.
.
.
ϕ
n
Singular\quad Vector:\psi_1,....\psi_n;\phi_1,...\phi_n
SingularVector:ψ1,....ψn;ϕ1,...ϕn
满足
σ
1
=
1
,
B
P
X
=
P
Y
,
B
T
P
Y
=
P
X
\sigma_1=1,B\sqrt{P_X}=\sqrt{P_Y},B^T\sqrt{P_Y}=\sqrt{P_X}
σ1=1,BPX=PY,BTPY=PX
在此我们不能选择
ψ
,
ϕ
\psi,\phi
ψ,ϕ使之为最大奇艺向量,因为不满足原问题约束。
于是我们选择第二大的奇艺向量作为我们的目标解。
ψ
=
ψ
2
ϕ
=
ϕ
2
\psi=\psi_2 \quad\phi=\phi_2
ψ=ψ2ϕ=ϕ2
让
ψ
∗
,
ϕ
∗
\psi^*,\phi^*
ψ∗,ϕ∗是
B
B
B矩阵的第二奇异向量,所以:
f
(
x
)
=
1
P
X
ϕ
∗
(
x
)
,
g
(
y
)
=
1
P
Y
ψ
∗
(
y
)
f(x)=\frac{1}{\sqrt{P_X}}\phi^*(x),\quad g(y)=\frac{1}{\sqrt{P_Y}}\psi^*(y)
f(x)=PX1ϕ∗(x),g(y)=PY1ψ∗(y)
我们可以通过
P
o
w
e
r
I
t
e
r
a
t
i
o
n
Power\quad Iteration
PowerIteration来计算特征向量,根据之前的
S
V
D
SVD
SVD,我们可知
B
B
B的特征向量就是
B
T
B
,
B
B
T
B^TB,BB^T
BTB,BBT的特征向量。
计算
B
B
B的第二奇异向量:
- <1> 选择 ϕ ( 1 ) \phi^{(1)} ϕ(1)
- <2> B ϕ ( 1 ) = ψ ( 1 ) B\phi^{(1)}=\psi^{(1)} Bϕ(1)=ψ(1), B T ψ ( 1 ) = ϕ ( 2 ) B^T\psi^{(1)}=\phi^{(2)} BTψ(1)=ϕ(2)(步骤<2>可以理解为 ϕ ( 2 ) = B T B ϕ ( 1 ) \phi^{(2)}=B^TB\phi^{(1)} ϕ(2)=BTBϕ(1), ψ ( 2 ) = B B T ψ ( 1 ) \psi^{(2)}=BB^T\psi^{(1)} ψ(2)=BBTψ(1))
- <3> 循环做<2>
最终收敛于第二奇异向量。由此可以计算 f ( x ) , g ( y ) f(x),g(y) f(x),g(y)从而计算最大相关函数 E [ f ( x ) g ( y ) ] E[f(x)g(y)] E[f(x)g(y)]。
B
ϕ
(
y
)
=
∑
x
B
(
y
,
x
)
ϕ
(
x
)
B\phi(y)=\sum_xB(y,x)\phi(x)
Bϕ(y)=∑xB(y,x)ϕ(x),使
ϕ
(
x
)
=
P
X
(
x
)
f
(
x
)
\phi(x)=\sqrt{P_X(x)}f(x)
ϕ(x)=PX(x)f(x),
B
ϕ
=
ψ
=
∑
x
P
X
Y
(
x
,
y
)
P
X
(
x
)
P
Y
(
y
)
(
P
X
(
x
)
f
(
x
)
)
B\phi=\psi=\sum_x\frac{P_{XY}(x,y)}{\sqrt{P_X(x)}\sqrt{P_Y(y)}}(\sqrt{P_X(x)}f(x))
Bϕ=ψ=x∑PX(x)PY(y)PXY(x,y)(PX(x)f(x))
.
.
.
=
1
P
Y
(
y
)
∑
x
P
X
Y
(
x
,
y
)
f
(
x
)
=
P
Y
(
y
)
∑
x
P
X
Y
(
x
∣
y
)
f
(
x
)
...=\frac{1}{\sqrt{P_Y(y)}}\sum_xP_{XY}(x,y)f(x)=\sqrt{P_Y(y)}\sum_xP_{XY}(x|y)f(x)
...=PY(y)1x∑PXY(x,y)f(x)=PY(y)x∑PXY(x∣y)f(x)
ψ
(
y
)
=
P
Y
(
y
)
E
[
f
(
x
)
∣
Y
=
y
]
\psi(y)=\sqrt{P_Y(y)}E[f(x)|Y=y]
ψ(y)=PY(y)E[f(x)∣Y=y]
所以:
g
(
y
)
=
E
[
f
(
x
)
∣
Y
=
y
]
g(y)=E[f(x)|Y=y]
g(y)=E[f(x)∣Y=y]
如果
ϕ
=
P
X
(
x
)
f
(
x
)
,
ψ
=
P
Y
(
y
)
g
(
y
)
\phi=\sqrt{P_X(x)}f(x),\psi=\sqrt{P_Y(y)}g(y)
ϕ=PX(x)f(x),ψ=PY(y)g(y),可以推出
ψ
(
1
)
=
B
ϕ
(
1
)
\psi^{(1)}=B\phi^{(1)}
ψ(1)=Bϕ(1),则
g
(
1
)
(
y
)
=
E
[
f
(
1
)
(
x
)
∣
Y
]
g^{(1)}(y)=E[f^{(1)}(x)|Y]
g(1)(y)=E[f(1)(x)∣Y]。
ACE算法:
- <1> 选择 f ( 1 ) ( x ) f^{(1)}(x) f(1)(x),满足约束 E [ f ( 1 ) ( x ) ] = 0 E[f^{(1)}(x)]=0 E[f(1)(x)]=0
- <2-A> g ( 1 ) ( y ) = E [ f ( 1 ) ( x ) ∣ Y = y ] g^{(1)}(y)=E[f^{(1)}(x)|Y=y] g(1)(y)=E[f(1)(x)∣Y=y]
- <2-B> f ( 2 ) ( x ) = E [ g ( 1 ) ( y ) ∣ X = x ] f^{(2)}(x)=E[g^{(1)}(y)|X=x] f(2)(x)=E[g(1)(y)∣X=x]
- <3> 循环做<2-A>,<2-B>,最后 E [ f ( x ) g ( y ) ] E[f(x)g(y)] E[f(x)g(y)]不在增加,收敛;