abstract
sinkhorn knopp algorithm compute D 1 D_1 D1 and D 2 D_2 D2 iteratively normalizing all rows and all columns in A A A.
根据一个非负矩阵
A
A
A得到一个双重随机矩阵double stochastic matrix。通过对矩阵
A
A
A进行交替缩放
A
A
A的行和列,使用两个主对角线正矩阵
D
1
D_1
D1、
D
2
D_2
D2使得
B
=
D
1
A
D
2
B=D_1AD_2
B=D1AD2
其中
B
B
B是双重随机矩阵(行和与列和都为1).
这样的矩阵序列收敛到一个双重随机矩阵的充要条件是矩阵
A
A
A至少包含以一个正对角线。
- 存在具有正主对角线的对角矩阵 D 1 D_1 D1和 D 2 D_2 D2使得 D 1 A D 2 D_1AD_2 D1AD2是双重随机矩阵并且有限迭代 ↔ \leftrightarrow ↔ A ≠ 0 A\neq 0 A=0且A的每个正项都包含在一个正对角线。
- D 1 A D 2 D_1AD_2 D1AD2是唯一的,并且 D 1 D_1 D1和 D 2 D_2 D2是唯一的 ↔ \leftrightarrow ↔ A A A是完全 indecomposable。
definitions
- A A A是一个非负方阵, σ \sigma σ 是一个排列 1 , … , N {1,\dots, N} 1,…,N,那么以元素 a 1 , σ ( 1 ) , … , a N , σ ( N ) a_{1,\sigma (1)},\dots,a_{N,\sigma (N)} a1,σ(1),…,aN,σ(N)的序列称为the diagonal of A A A corresponding to σ \sigma σ. If σ \sigma σ is the identify,那么这条对角线称为主对角线。
- 一个非负矩阵有一条正对角线,就称为这个矩阵have total support.
-
A
A
A is fully indecomposable if it is impossible to find permutation matrices
P
P
P and
Q
Q
Q so that
P A Q = { A 1 0 A 2 A 3 } PAQ= \left\{ \begin{matrix} A_1 & 0 \\ A_2 & A_3 \end{matrix} \right\} PAQ={A1A20A3}
theorem
A A A是一个非负的 N × N N\times N N×N矩阵。
- 存在一个双重随机矩阵 B B B(形如 D 1 A D 2 D_1AD_2 D1AD2),其中 D 1 D_1 D1和 D 2 D_2 D2是对角矩阵且是正主对角 ↔ \leftrightarrow ↔ A A A has totsl support.
- 如果 B B B存在那么就是唯一的。同样 D 1 D_1 D1和 D 2 D_2 D2是唯一的对于a scalar multiple 当且仅当 A A A is fully indecomposable.
- 交替归一化 A A A的行列将收敛于一个双重随机极限 ↔ \leftrightarrow ↔A has support. 如果A has total support,这个极限可以被描述为 D 1 A D 2 D_1AD_2 D1AD2。如果A has support which is not total,那么这个极限就不能描述为 D 1 A D 2 D_1AD_2 D1AD2。
- 该算法将以等于 B B B的奇异值的平方的渐近速率线性收敛the algorithm will converge linearly with asymptotic rate equal to the square of the subdominant singular value of B
algorithm
假设有向量
r
r
r,则
D
(
r
)
D(r)
D(r)表示以
r
r
r为主对角线元素的对角矩阵。
令
D
1
=
D
(
r
)
,
D
2
=
D
(
c
)
,
e
=
o
n
e
s
(
N
,
1
)
,
A
∈
R
N
×
N
D_1=D(r),D_2=D(c),e=ones(N,1),A\in R^{N\times N}
D1=D(r),D2=D(c),e=ones(N,1),A∈RN×N,则有
D
(
r
)
A
D
(
c
)
e
=
D
(
r
)
A
c
=
D
(
A
c
)
r
=
e
D
(
c
)
A
T
D
(
r
)
e
=
D
(
c
)
A
T
r
=
D
(
A
T
r
)
c
=
e
D(r)AD(c)e=D(r)Ac=D(Ac)r=e\\ D(c)A^TD(r)e=D(c)A^Tr=D(A^Tr)c=e
D(r)AD(c)e=D(r)Ac=D(Ac)r=eD(c)ATD(r)e=D(c)ATr=D(ATr)c=e
当
A
A
A是对程矩阵,则有
r
=
c
=
z
r=c=z
r=c=z,满足
D
(
A
z
)
z
=
D
(
z
)
A
z
=
e
D(Az)z=D(z)Az=e
D(Az)z=D(z)Az=e,SK算法表示为
c
k
+
1
=
D
−
1
(
A
T
r
k
)
e
r
k
+
1
=
D
−
1
(
A
c
k
+
1
)
e
c_{k+1}=D^{-1}(A^Tr_k)e\\r_{k+1}=D^{-1}(Ac_{k+1})e
ck+1=D−1(ATrk)erk+1=D−1(Ack+1)e
在对称的情况下
z
k
+
1
=
D
−
1
(
A
z
k
)
e
z_{k+1}=D^{-1}(Az_k)e
zk+1=D−1(Azk)e.
drawback
所有这些迭代算法的共同缺点是即使在看似简单的情况下也表现出缓慢的收敛行为。
c
k
+
1
=
D
−
1
(
A
T
r
k
)
e
=
D
−
1
(
A
T
D
−
1
(
A
c
k
)
e
)
e
,
k
>
=
0
c_{k+1}=D^{-1}(A^Tr_k)e=D^{-1}(A^TD^{-1}(Ac_k)e)e, k>=0
ck+1=D−1(ATrk)e=D−1(ATD−1(Ack)e)e,k>=0
按元素写成
(
c
k
+
1
)
s
=
(
∑
m
=
1
n
a
m
,
s
(
∑
l
=
1
n
a
m
,
l
(
c
k
)
l
)
−
1
)
−
1
(c_{k+1})_s=(\sum^n_{m=1}a_{m,s}(\sum^n_{l=1}a_{m,l}(c_k)_l)^{-1})^{-1}
(ck+1)s=(m=1∑nam,s(l=1∑nam,l(ck)l)−1)−1
这等价于一个定点迭代
c
k
+
1
=
T
(
c
k
)
,
T
(
x
)
s
=
(
∑
m
=
1
n
a
m
,
s
(
∑
l
=
1
n
a
m
,
l
x
l
)
−
1
)
−
1
c_{k+1}=T(c_k), T(x)_s=(\sum^n_{m=1}a_{m,s}(\sum^n_{l=1}a_{m,l}x_l)^{-1})^{-1}
ck+1=T(ck),T(x)s=(m=1∑nam,s(l=1∑nam,lxl)−1)−1
也就是解决一个关于非线性计算
T
T
T的迭代问题
x
=
T
(
x
)
,
x
>
=
0
x=T(x), x>=0
x=T(x),x>=0
The optimal transport problem
这个人写得好
https://michielstock.github.io/OptimalTransport/