Aproximación de distancias de Wasserstein con PyTorch学习

https://github.com/dfdazac/wassdistance/tree/master

conocimientos previos

Aprendizaje de transporte óptimo computacional.
Específicamente, se puede ver que las coordenadas de la dualidad de entropía aumentan.

LC ε (a, b) = def. min ⁡ P ∈ U ( a , b ) ⟨ P , C ⟩ − ε H ( P ) \mathrm{L}_{\mathbf{C}}^{\varepsilon}(\mathbf{a}, \mathbf{b }) \stackrel{\text { def. }}{=} \min _{\mathbf{P} \in \mathbf{U}(\mathbf{a}, \mathbf{b})}\angle\mathbf{P}, \mathbf{C}\rangle -\varepsilon\mathbf{H}(\mathbf{P})lCmi( un ,segundo )= definición PAG U ( a , b )min⟨P , _C ε H ( P )
U ( a , b ) = def. { P ∈ R + n × m : P 1 m = a y PT 1 n = b } \mathbf{U}(\mathbf{a}, \mathbf{b}) \stackrel{\text { def. }}{=}\left\{\mathbf{P}\in \mathbb{R}_{+}^{n\times m}: \mathbf{P}\mathbf{1}_m=\mathbf{a} \quad \text { y } \quad \mathbf{P}^{\mathrm{T}} \mathbf{1}_n=\mathbf{b}\right\}U ( una ,segundo )= definición { PAGR+n × m:P1 _m=a y PAGT 1norte=segundo }

Sea
LC ε ( a , b ) = max ⁡ f ∈ R n , g ∈ R m ⟨ f , a ⟩ + ⟨ g , b ⟩ − ε ⟨ ef / ε , K eg / ε ⟩ \mathrm{L}_{ \mathbf{C}}^{\varepsilon}(\mathbf{a}, \mathbf{b})=\max _{\mathbf{f} \in \mathbb{R}^n, \mathbf{g}\ en \mathbb{R}^m}\angle\mathbf{f}, \mathbf{a}\angle+\angle\mathbf{g}, \mathbf{b}\angle-\varepsilon\left\angle e^{\ mathbf{f}/\objectpsilon}, \mathbf{K}e^{\mathbf{g}/\objectepsilon}\right\ranglelCmi( un ,segundo )=f∈R _ _norte ,gramoRmetromáximof ,un +gramo ,segundo mimif / e ,k eg / ε
( u , v ) = ( ef / ε , por ejemplo / ε ) (\mathbf{u}, \mathbf{v})=\left(e^{\mathbf{f} / \varepsilon}, e ^{\mathbf{g} / \varepsilon}\right)( ,v )=( mif / e ,mig / e )

P = diag ( u ) K diag ( v ) , K = exp ( − C ϵ ) \mathbf{P}=\rm{diag}\left(\mathbf{u}\right)\mathbf{K}\rm{ diag}\left(\mathbf{v}\right),\quad\mathbf{K}=exp\left(-\frac{C}{\epsilon}\right)PAG=diagnóstico( )diagnóstico K( v ),k=Exp( -ϵC)

Sea
f (l + 1) = ε log ⁡ a − ε log ⁡ ( K por ejemplo ( l ) / ε ), g ( l + 1 ) = ε log ⁡ b − ε log ⁡ ( KT ef ( l + 1 ) . /ε) \begin{alineado} \mathbf{f}^{(\ell+1)} & =\itempsilon \log \mathbf{a}-\itempsilon \log \left(\mathbf{K} e^{\mathbf{g }^{(\ell)}/\itempsilon}\right), \\\mathbf{g}^{(\ell+1)} & =\itempsilon \log \mathbf{b}-\itempsilon\log\left (\mathbf{K}^{\mathrm{T}} e^{\mathbf{f}^{(\ell+1)} / \varepsilon}\right) \end{alineado}F( + 1 )gramo( + 1 )=miiniciar sesiónamiiniciar sesión( Por ejemplo _gramo( ) /mi),=miiniciar sesiónbmiiniciar sesión( kEso es todoF( + 1 ) /mi).

Hay algunos cambios en el código.

Sea C ∈ R n × m , f ∈ R n , g ∈ R m \mathbf{C}\in\mathbb{R}^{n\times m}, \mathbf{f}\in\mathbb{R}^ n, \mathbf{g}\in\mathbb{R}^mCRnorte × metro ,FRnorte ,gramoRmetro

Iniciar sesión ⁡ ( K por ejemplo / ε ) = Iniciar sesión ⁡ ( [ ∑ je - C i , j - gj ε ] i ) = Iniciar sesión ⁡ ( [ ∑ je - C i , j - gj ε efi ε e - fi ε ] i ) = log ⁡ ( [ ∑ je − C i , j − fi − gj ε ] i ⊙ e − f ε ) = log ⁡ ( [ ∑ je − C i , j − fi − gj ε ] i ) − f ε = logsumexp ⁡ ( − C − f T − g ε , dim = − 1 ) − f ε \begin{aligned} &\log \left(\mathbf{K} e^{\mathbf{g} / \varepsilon}\right) \\ =&\log\left(\left[\sum_{j}e^{-\frac{C_{i,j}-g_j}{\varepsilon}}\right]_i\right)\\ =&\ log\left(\left[\sum_{j}e^{-\frac{C_{i,j}-g_j}{\varepsilon}}e^{\frac{f_i}{\varepsilon}}e^{- \frac{f_i}{\varepsilon}}\right]_i\right)\\ =&\log\left(\left[\sum_{j}e^{-\frac{C_{i,j}-f_i- g_j}{\varepsilon}}\right]_i\odot e^{-\frac{\mathbf{f}}{\varepsilon}}\right)\\ =&\log\left(\left[\sum_{j) }e^{-\frac{C_{i,j}-f_i-g_j}{\varepsilon}}\right]_i\right)-\frac{\mathbf{f}}{\varepsilon}\\ =&\operatorname{logsumexp}\left(-\frac{\ mathbf{C}-\mathbf{f}^T-\mathbf{g}}{\valuepsilon},dim=-1\right)-\frac{\mathbf{f}}{\valuepsilon}\\ \end{ alineado}=====iniciar sesión( Por ejemplo _g / e )iniciar sesión [jmimiCyo , jgramoj]yo iniciar sesión [jmimiCyo , jgramojmimiFyomimiFyo]yo iniciar sesión [jmimiCyo , jfyogramoj]yomimif iniciar sesión [jmimiCyo , jfyogramoj]yo miflogsumexp( -miCFtgramo,soy _=1 )mif
El último paso, la suma de vectores y matrices, implica el mecanismo de transmisión.

Iniciar sesión ⁡ ( KT ef / ε ) = Iniciar sesión ⁡ ( [ ∑ es decir - C i , j - fi ε ] j ) = Iniciar sesión ⁡ ( [ ∑ es decir - C i , j - fi ε egj ε e - gj ε ] j ) = log ⁡ ( [ ∑ es decir − C i , j − fi − gj ε ] j ⊙ e − g ε ) = log ⁡ ( [ ∑ es decir − C i , j − fi − gj ε ] j ) − g ε = logsumexp ⁡ ( − C − f T − g ε , tenue = − 2 ) − g ε = logsumexp ⁡ ( − ( C − f T − g ) T ε , tenue = − 1 ) − g ε \begin{aligned} &\ Iniciar sesión \left(\mathbf{K}^{\mathrm{T}} e^{\mathbf{f} / \varepsilon}\right)\\ =&\log\left(\left[\sum_{i}e ^{-\frac{C_{i,j}-f_i}{\varepsilon}}\right]_j\right)\\ =&\log\left(\left[\sum_{i}e^{-\frac {C_{i,j}-f_i}{\varepsilon}}e^{\frac{g_j}{\varepsilon}}e^{-\frac{g_j}{\varepsilon}}\right]_j\right)\ \ =&\log\left(\left[\sum_{i}e^{-\frac{C_{i,j}-f_i-g_j}{\varepsilon}}\right]_j\odot e^{-\ frac{\mathbf{g}}{\varepsilon}}\right)\\ =&\log\left(\left[\sum_{i}e^{-\frac{C_{i,j}-f_i-g_j}{\varepsilon}}\right]_j\right)-\frac{\mathbf{g}}{\varepsilon}\\ =&\operatorname{logsumexp}\left(-\frac{\ mathbf{C}-\mathbf{f}^T-\mathbf{g}}{\valuepsilon},dim=-2\right)-\frac{\mathbf{g}}{\valuepsilon}\\ =&\ nombre del operador{logsumexp}\left(-\frac{\left(\mathbf{C}-\mathbf{f}^T-\mathbf{g}\right)^T}{\varepsilon},dim=-1\right )-\frac{\mathbf{g}}{\valuepsilon}\\ \end{alineado}======iniciar sesión( kEso es todof / e )iniciar sesión [imimiCyo , jfyo]j iniciar sesión [imimiCyo , jfyomimigramojmimigramoj]j iniciar sesión [imimiCyo , jfyogramoj]jmimigramo iniciar sesión [imimiCyo , jfyogramoj]j migramologsumexp( -miCFtgramo,soy _=2 )migramologsumexp( -mi( CFtgramo )t,soy _=1 )migramo
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_39942341/article/details/131751760
Recomendado
Clasificación