美文网首页
两个多元高斯分布之间的wasserstein 距离

两个多元高斯分布之间的wasserstein 距离

作者: 世界上的一道风 | 来源:发表于2019-04-16 08:10 被阅读0次

    Wasserstein distance

    定义

    • Wasserstein distance 是在度量空间 M,定义概率分布之间距离的距离函数。
    • 定义:让 (M,d) 作为一个度量空间,每一个在 M 上的概率测度是一个Radon 测度,(具体这是什么我也不清楚)。对于 p \ge 1的情况,P_p(M) 表示对于在 M 度量空间上的 x_0,在 M 上有有限个p^{th} 距(moment)的概率测度集合 \mu,等于:
      \int _{{M}}d(x,x_{{0}})^{{p}}\,{\mathrm {d}}\mu (x)<+\infty \tag{1}

    那么,对于两个分布 \mu\nuP_p(M) 中的p^{th}(p阶) Wasserstein距离为:
    W_{{p}}(\mu ,\nu ):=\left(\inf _{{\gamma \in \Gamma (\mu ,\nu )}}\int _{{M\times M}}d(x,y)^{{p}}\,{\mathrm {d}}\gamma (x,y)\right)^{{1/p}}\tag{2}

    集合 \Gamma (\mu ,\nu ) 表示在M \times M 空间上所有测度的集合,并且这些测度的边缘分布分别是 \mu\nu。(又称为 \mu\nu 的耦合(coupling))。

    变换上式得到:
    W_{{p}}(\mu ,\nu )^{{p}}=\inf {\mathbf {E}}{\big [}d(X,Y)^{{p}}{\big ]}\tag{3}


    • 注:什么是距(moments):在数学中,力矩是对函数形状的一种特定的定量度量。定义:关于值 c 的实值连续函数 f(x) 的第 n 阶矩为:
      {\displaystyle \mu _{n}=\int _{-\infty }^{\infty }(x-c)^{n}\,f(x)\,\mathrm {d} x.}

    如果 f 是一个概率密度函数,则上述积分的值称为概率分布的 n 阶矩;如果 F 是任何概率分布的累积概率分布函数,其中可能没有密度函数,随机变量为X,则概率分布的第n个矩为:
    {\displaystyle \mu '_{n}=\operatorname {E} \left[X^{n}\right]=\int _{-\infty }^{\infty }x^{n}\,\mathrm {d} F(x)\,}
    由此我们得到公式 (2)(3) 的表示。

    • 什么是测度:测度(Measure)是一个函数,它对一个给定集合的某些子集指定一个数,这个数可以比作大小、体积、概率等等。 传统的积分是在区间上进行的,后来人们希望把积分推广到任意的集合上,就发展出测度的概念,它在数学分析和概率论有重要的地位。

    Intuition and connection to optimal transport

    在Wiki百科中有

    Wasserstein distance between two gaussian

    • 两个多元高斯分布之间的2阶Wasserstein距离是什么,公式 (3) 中的距离函数 d 如果是欧几里得距离的话,那么两个分布之间的2阶Wasserstein距离是:

    W_2(\mu;\nu):=\inf\mathbb{E}(\Vert X-Y\Vert_2^2)^{1/2}
    两个多元高斯分布之间的2阶Wasserstein距离 {d:=W_2(\mathcal{N}(m_1,\Sigma_1);\mathcal{N}(m_2,\Sigma_2))} 是:

    d^2=\Vert m_1-m_2\Vert_2^2 +\mathrm{Tr}(\Sigma_1+\Sigma_2-2(\Sigma_1^{1/2}\Sigma_2\Sigma_1^{1/2})^{1/2}). \ \ \ \ \ (1)

    当协方差矩阵可以互换 {\Sigma_1\Sigma_2=\Sigma_2\Sigma_1},公式 (1) 退化为:
    W_2(\mathcal{N}(m_1,\Sigma_1);\mathcal{N}(m_2,\Sigma_2))^2 =\Vert m_1-m_2\Vert_2^2 +\Vert\Sigma_1^{1/2}-\Sigma_2^{1/2}\Vert_{Frobenius}^2.\ \ \ \ \ (2)

    • 注:
      \mathrm{Tr}(\Sigma_1+\Sigma_2-2(\Sigma_1^{1/2}\Sigma_2\Sigma_1^{1/2})^{1/2}) = \mathrm{Tr}(\Sigma_1) + \mathrm{Tr}(\Sigma_2) + 2(\mathrm{Tr}(\Sigma_1^{1/2}\Sigma_2\Sigma_1^{1/2})^{1/2})
      AB 都是对称矩阵:\mathrm{Tr}(A^{1/2}BA^{1/2})=\mathrm{Tr}(AB),有:
      = \mathrm{Tr}(\Sigma_1) + \mathrm{Tr}(\Sigma_2) + 2(\mathrm{Tr}(\Sigma_1\Sigma_2)^{1/2}) = \mathrm{Tr}((\Sigma_1^{1/2}-\Sigma_2^{1/2})^2)=\Vert\Sigma_1^{1/2}-\Sigma_2^{1/2}\Vert_{Frobenius}^2

    代码:

    def Wasserstein(mu, sigma, idx1, idx2):
        p1 = torch.sum(torch.pow((mu[idx1] - mu[idx2]),2),1)
        p2 = torch.sum(torch.pow(torch.pow(sigma[idx1],1/2) - torch.pow(sigma[idx2], 1/2),2) , 1)
        return p1+p2
    

    • 矩阵 Frobenius范数表示为 \langle \mathbf{A},\mathbf{B} \rangle_{\mathrm {F}},:

    {\displaystyle \langle \mathbf {A} ,\mathbf {B} \rangle _{\mathrm {F} }=\sum _{i,j}{\overline {A_{ij}}}B_{ij}\,,=\mathrm {tr} \left({\overline {\mathbf {A} ^{T}}}\mathbf {B} \right)}

    上划线表示矩阵A的中每一个数共轭复数。

    • 协方差矩阵:
      • 多元高斯部分的情况:是正定矩阵。
      • 多元高斯部分的情况:考虑一个一般的对称协方差矩阵 Σ,其有D(D + 1)/2个独立的参数。对于µ,又有D个独立的参数。多以一共有D(D + 3)/2个参数。当D变大时,其独立的参数个数以D的二次方增长。只考虑 Σ 是对角阵,即 Σ = diag(σ_i^2),我们就只用关心2D个独立的参数。

    • 参考:

    https://zlearning.netlify.com/computer/prml/PRMLch2dot3-gaussian-again.pdf
    http://www.robots.ox.ac.uk/~davidc/pubs/tt2015_dac1.pdf
    https://en.wikipedia.org/wiki/Wasserstein_metric#cite_note-1
    http://djalil.chafai.net/blog/2010/04/30/wasserstein-distance-between-two-gaussians/
    https://en.wikipedia.org/wiki/Wasserstein_metric#cite_note-1

    相关文章

      网友评论

          本文标题:两个多元高斯分布之间的wasserstein 距离

          本文链接:https://www.haomeiwen.com/subject/jsvjbqtx.html