文章目录

  • (高能预警)为什么Gram矩阵可以代表图像风格
    • 简介
    • 风格迁移概述
    • 领域适应
    • 相关知识
      • Gram矩阵
      • 特征值分解
      • 核函数
      • 希尔伯特空间
      • 可再生核希尔伯特空间
      • 最大平均差异(MMD)
    • 图像风格计算方法回顾
    • 开始证明
    • 结论
    • 参考资料

(高能预警)为什么Gram矩阵可以代表图像风格

简介

在本文中我将以如下方式进行阐述。
我们先了解了图像风格迁移的概念和问题,知道了Gram矩阵是什么。从特征值分解进行类比得到核函数的概念。简介希尔伯特空间,引入再生核函数得到再生核希尔伯特空间。最后介绍统计学方法最大平均差异(MMD)。知道上述数学知识后,我们再回顾图像风格迁移中的计算风格的代价函数。然后从原来的代价函数出发,利用我们的数学知识进行推导,最后得出我们原来计算的图像风格的代价值其实就是两个图片特征的最大平均差异(MMD)。

风格迁移概述


现在图像风格迁移有了很多方法,人们用各种方式来自加快图像迁移的速度,改善图像风格迁移的效果。尽管这些方法比原始的神经样式转换有了进一步的改进,但它们都忽略了图像风格转换中的基本问题:为什么Gram矩阵可以代表图像的风格样式? 这种模糊的理解限制了对图像风格转移的进一步研究。

领域适应

领域适应属于迁移学习领域。 它旨在将在源域上学习的模型转移到未标记的目标域。 域适应的关键部分是测量和最小化源和目标分布之间的差异。 最常见的差异度量是最大均值差异(MMD),该度量值测量了可再生核希尔伯特空间中样本均值的差异。 在领域适应性工作中,它是一个流行的选择。通过对源域中的数据进行白化然后重新关联到目标域来对齐二阶统计量。 通过简单地调制所有批归一化(BN)层中的统计信息,提出了一种无参数的深度自适应方法。

相关知识

Gram矩阵

A A T 就 是 A 的 G r a m 矩 阵 AA^T就是A的Gram矩阵 AAT就是A的Gram矩阵Gram矩阵实际上可看做是不同特征之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),在每一个特征层中,每一个数字都来自于一个特定卷积核在特定位置的卷积,因此每个数字就代表一个特征的强度,而Gram矩阵的计算的实际上是两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等,同时,Gram矩阵的对角线元素,还体现了每个特征在图像中出现的量,因此,Gram矩阵有助于把握整个图像的大体风格。有了表示风格的Gram矩阵,要度量两个图像风格的差异,只需比较他们Gram矩阵的差异即可。

特征值分解

对于一个实对称矩阵 A A A,存在一个实数 λ \lambda λ和向量 x x x使得 A x = λ x Ax=\lambda x Ax=λx这样, λ \lambda λ就是 A A A的特征值, x x x就是对应的特征向量,如果 A A A有两个不同的特征值 λ 1 \lambda_1 λ1​和 λ 2 \lambda_2 λ2​ ( λ 1 ≠ λ 2 ) (\lambda_1 \ne \lambda_2) (λ1​​=λ2​),分别对应特征向量 x 1 x_1 x1​和 x 2 x_2 x2​。经过变换可以得到 λ 1 x 1 T x 2 = ( λ 1 x 1 ) T x 2 = x 1 T A T x 2 = x 1 T A x 2 = λ 2 x 1 T x 2 \lambda_1 x_1^T x_2 = (\lambda_1x_1)^Tx_2=x_1^TA^Tx_2=x_1^TAx_2=\lambda_2 x_1^Tx_2 λ1​x1T​x2​=(λ1​x1​)Tx2​=x1T​ATx2​=x1T​Ax2​=λ2​x1T​x2​因为 λ 1 ≠ λ 2 \lambda_1\ne \lambda_2 λ1​​=λ2​,所以有 x 1 T x 2 = 0 x_1^Tx_2=0 x1T​x2​=0,因此得到实对称矩阵不同特征值对应的特征向量相互正交
对于实对称矩阵 A ∈ R n × n A\in \mathcal{R}^{n\times n} A∈Rn×n,我们可以找到 n n n个特征值和 n n n个特征向量,把 A A A分解成如下形式
A = Q D Q T A=QDQ^T A=QDQT其中Q是一个正交矩阵矩阵 ( Q Q T = I ) (QQ^T=I) (QQT=I), D = d i a g ( λ 1 , λ 2 , ⋯ , λ n ) D=diag(\lambda_1,\lambda_2,\cdots,\lambda_n) D=diag(λ1​,λ2​,⋯,λn​),把 A A A进行特征值分解后展开可以得到 A = Q D Q T = ( q 1 , q 2 , ⋯ , q n ) ( λ 1 λ 2 ⋱ λ n ) ( q 1 T q 2 T ⋮ q n T ) = ( λ 1 q 1 , λ 2 q 2 , ⋯ , λ n q n ) ( q 1 T q 2 T ⋮ q n T ) = ∑ i = 1 n λ i q i q i T \begin{aligned}A=QDQ^T&=\begin{pmatrix}q_1,q_2,\cdots,q_n\end{pmatrix}\begin{pmatrix} \lambda_1&&&\\ &\lambda_2&&\\ &&\ddots&\\ &&&\lambda_n \end{pmatrix}\begin{pmatrix} q_1^T\\ q_2^T\\ \vdots\\ q_n^T \end{pmatrix}\\ &=\begin{pmatrix}\lambda_1q_1,\lambda_2q_2,\cdots,\lambda_nq_n\end{pmatrix}\begin{pmatrix} q_1^T\\ q_2^T\\ \vdots\\ q_n^T \end{pmatrix}\\ &=\sum_{i=1}^n\lambda_iq^iq_i^T \end{aligned} A=QDQT​=(q1​,q2​,⋯,qn​​)⎝⎜⎜⎛​λ1​​λ2​​⋱​λn​​⎠⎟⎟⎞​⎝⎜⎜⎜⎛​q1T​q2T​⋮qnT​​⎠⎟⎟⎟⎞​=(λ1​q1​,λ2​q2​,⋯,λn​qn​​)⎝⎜⎜⎜⎛​q1T​q2T​⋮qnT​​⎠⎟⎟⎟⎞​=i=1∑n​λi​qiqiT​​其中 { q i } i = 1 n \{q_i\}_{i=1}^n {qi​}i=1n​是 R n \mathcal{R}^n Rn的一组正交基。

核函数

一个函数 f ( x ) f(x) f(x)可以看成是一个无限维向量,具有两个自变量的函数 K ( x , y ) K(x,y) K(x,y),可以看成是一个无限维矩阵。如果 K ( x , y ) = K ( y , x ) 并 且 ∬ f ( x ) K ( x , y ) f ( y ) ≥ 0 K(x,y)=K(y,x)并且\iint f(x)K(x,y)f(y)\ge0 K(x,y)=K(y,x)并且∬f(x)K(x,y)f(y)≥0对于任意的函数 f f f都成立,那么 K ( x , y ) K(x,y) K(x,y)就是对称并且半正定的,具有这样性质的 K ( x , y ) K(x,y) K(x,y)就是一个正定核函数。
正定核函数还有一个等价的定义:如果 K ( x , y ) K(x,y) K(x,y)可以表示成以下形式 K ( x , y ) = < ϕ ( x ) , ϕ ( y ) > K(x,y)=<\phi(x),\phi(y)> K(x,y)=<ϕ(x),ϕ(y)>其中 ϕ \phi ϕ是希尔伯特空间空间的一个映射(可以做到从低维映射到高维,让本来不是线性可分的变成线性可分,比如异或操作), < ϕ ( x ) , ϕ ( y ) > <\phi(x),\phi(y)> <ϕ(x),ϕ(y)>代表两者的内积,那么称 K ( x , y ) K(x,y) K(x,y)是一个正定核函数。
类似与矩阵的特征值和特征函数,存在特征值 λ \lambda λ和本征函数 ψ ( x ) \psi(x) ψ(x)使得 ∫ K ( x , y ) ψ ( x ) d x = λ ψ ( y ) \int K(x,y)\psi(x)dx=\lambda\psi(y) ∫K(x,y)ψ(x)dx=λψ(y)对于不同的特征值 λ 1 \lambda_1 λ1​和 λ 2 \lambda_2 λ2​以及对于的本征函数 ψ 1 ( x ) \psi_1(x) ψ1​(x)和 ψ 2 ( x ) \psi_2(x) ψ2​(x)我们可以通过变换得到 ∫ λ 1 ψ 1 ( x ) ψ 2 ( x ) d x = ∫ ∫ K ( y , x ) ψ 1 ( y ) d y ψ 2 ( x ) d x = ∫ ∫ K ( x , y ) ψ 2 ( x ) d x ψ 1 ( y ) d y = ∫ λ 2 ψ 2 ( y ) ψ 1 ( y ) d y = ∫ λ 2 ψ 2 ( x ) ψ 1 ( x ) d x \begin{aligned} \int \lambda_1\psi_1(x)\psi_2(x)dx&=\int \int K(y,x) \psi_1(y)dy\psi_2(x)dx\\ &=\int \int K(x,y)\psi_2(x)dx\psi_1(y)dy\\ &=\int \lambda_2\psi_2(y)\psi_1(y)dy\\ &=\int \lambda_2\psi_2(x)\psi_1(x)dx \end{aligned} ∫λ1​ψ1​(x)ψ2​(x)dx​=∫∫K(y,x)ψ1​(y)dyψ2​(x)dx=∫∫K(x,y)ψ2​(x)dxψ1​(y)dy=∫λ2​ψ2​(y)ψ1​(y)dy=∫λ2​ψ2​(x)ψ1​(x)dx​所以我们可以得到 < ψ 1 , ψ 2 > = ∫ ψ 1 ( x ) ψ 2 ( x ) d x = 0 <\psi_1,\psi_2>=\int \psi_1(x)\psi_2(x)dx=0 <ψ1​,ψ2​>=∫ψ1​(x)ψ2​(x)dx=0不同的本征函数之间相互正交。
对于一个核函数,有着无穷个特征值 { λ i } i = 1 ∞ \{\lambda_i\}_{i=1}^{\infty} {λi​}i=1∞​和对应的本征函数 { ψ i } i = 1 ∞ \{\psi_i\}_{i=1}^{\infty} {ψi​}i=1∞​类似于矩阵的特征值分解, K ( x , y ) K(x,y) K(x,y)可以表示成本征函数的组合 K ( x , y ) = ∑ i = 0 ∞ λ i ψ i ( x ) ψ i ( y ) K(x,y)=\sum_{i=0}^{\infty}\lambda_i\psi_i(x)\psi_i(y) K(x,y)=i=0∑∞​λi​ψi​(x)ψi​(y)因为我们知道 < ψ i , ψ j > = ∫ ψ i ( x ) ψ j ( x ) d x = 0 ( i ≠ j ) <\psi_i,\psi_j>=\int \psi_i(x)\psi_j(x)dx=0(i\ne j) <ψi​,ψj​>=∫ψi​(x)ψj​(x)dx=0(i​=j),所以 { ψ i } i = 1 ∞ \{\psi_i\}_{i=1}^{\infty} {ψi​}i=1∞​是函数空间的正交基。
常用的核函数如下:

  • 多项式核函数 K ( x , y ) = ( γ x T y + C ) d K(x,y)=(\gamma x^Ty+C)^d K(x,y)=(γxTy+C)d
  • 高斯径向基核 K ( x , y ) = e x p ( − γ ∣ ∣ x − y ∣ ∣ 2 ) K(x,y)=exp(-\gamma||x-y||^2) K(x,y)=exp(−γ∣∣x−y∣∣2)
  • Sigmoid核 K ( x , y ) = t a n h ( γ x T y + C ) K(x,y)=tanh(\gamma x^Ty+C) K(x,y)=tanh(γxTy+C)
    例子:证明 k ( x , y ) = e x p ( − γ ∣ ∣ x − y ∣ ∣ 2 ) k(x,y)=exp(-\gamma||x-y||^2) k(x,y)=exp(−γ∣∣x−y∣∣2)是一个核函数 e x p ( − γ ∣ ∣ x − y ∣ ∣ 2 ) = e x p ( − γ x 2 ) e x p ( 2 γ x y ) e x p ( − γ y 2 ) = e x p ( − γ x 2 ) ∑ n = 0 ∞ ( 2 γ n x n y n n ! ) e x p ( − γ y 2 ) ( 利 用 泰 勒 展 开 ) = e x p ( − γ x 2 ) ψ ( x ) ψ ( y ) e x p ( − γ y 2 ) = ϕ ( x ) ϕ ( y ) \begin{aligned}exp(-\gamma||x-y||^2)&=exp(-\gamma x^2)exp(2\gamma xy)exp(-\gamma y^2)\\ &=exp(-\gamma x^2)\sum_{n=0}^{\infty}(\frac{2\gamma^n x^ny^n}{n!})exp(-\gamma y^2)(利用泰勒展开)\\ &=exp(-\gamma x^2)\psi(x)\psi(y)exp(-\gamma y^2)\\ &=\phi(x)\phi(y)\end{aligned} exp(−γ∣∣x−y∣∣2)​=exp(−γx2)exp(2γxy)exp(−γy2)=exp(−γx2)n=0∑∞​(n!2γnxnyn​)exp(−γy2)(利用泰勒展开)=exp(−γx2)ψ(x)ψ(y)exp(−γy2)=ϕ(x)ϕ(y)​ ϕ ( x ) = e x p ( − γ x 2 ) ⋅ ( 1 , 2 γ 1 ! x , 2 γ 2 2 ! , ⋯ ) \phi (x)=exp(-\gamma x^2)·(1,\sqrt{\frac{2\gamma}{1!}}x,\sqrt{\frac{2\gamma^2}{2!}},\cdots) ϕ(x)=exp(−γx2)⋅(1,1!2γ​ ​x,2!2γ2​ ​,⋯)
    例子:证明 K ( x , y ) = ( γ x T y + C ) d K(x,y)=(\gamma x^Ty+C)^d K(x,y)=(γxTy+C)d 是一个核函数 ( γ x T y + C ) d = ∑ n = 0 d C d n γ n x n y n C d − n ( 利 用 二 项 式 定 理 ) = ϕ ( x ) ϕ ( y ) \begin{aligned}(\gamma x^Ty+C)^d&=\sum_{n=0}^{d}C_d^n\gamma^nx^ny^nC^{d-n}(利用二项式定理)\\ &=\phi(x)\phi(y)\end{aligned} (γxTy+C)d​=n=0∑d​Cdn​γnxnynCd−n(利用二项式定理)=ϕ(x)ϕ(y)​ ϕ ( x ) = ∑ n = 0 d C d n C d − n γ n x n \phi(x)=\sum_{n=0}^d\sqrt{C_d^nC^{d-n}\gamma^n}x^n ϕ(x)=n=0∑d​Cdn​Cd−nγn ​xn

希尔伯特空间

在数学里,希尔伯特空间(英语:Hilbert space)即完备的内积空间,也就是说一个带有内积的完备向量空间。希尔伯特空间是有限维欧几里得空间的一个推广,使之不局限于实数的情形和有限的维数,但又不失完备性(而不像一般的非欧几里得空间那样破坏了完备性)。与欧几里得空间相仿,希尔伯特空间也是一个内积空间,其上有距离和角的概念(及由此引申而来的正交性与垂直性的概念)。此外,希尔伯特空间还是一个完备的空间,其上所有的柯西序列会收敛到此空间里的一点,从而微积分中的大部分概念都可以无障碍地推广到希尔伯特空间中。
完备性: 对极限是封闭的,如果有一个序列 { k n } ∈ H , lim ⁡ n → ∞ k n = k ∈ H \{k_n\}\in \mathcal{H},\lim_{n\to \infty}k_n=k\in \mathcal{H} {kn​}∈H,limn→∞​kn​=k∈H这样就是封闭的。
举个例子比如 1.4 , 1.41 , 1.414 , 1.4142 , 1.41421 … … 最 终 收 敛 于 2 1.4,1.41,1.414,1.4142,1.41421……最终收敛于\sqrt{2} 1.4,1.41,1.414,1.4142,1.41421……最终收敛于2 ​所以有理数空间对于极限运算是不封闭的。
无限维: 就是有无限个维度。
内积空间:

  1. 对称性: < f , g > = < g , f > <f,g>=<g,f> <f,g>=<g,f>
  2. 正定性: < f , f > ≥ 0 , < f , f > = 0 ⇔ f = 0 <f,f>\ge 0 ,<f,f>=0\Leftrightarrow f=0 <f,f>≥0,<f,f>=0⇔f=0
  3. 对第一变元的线性性: < a f 1 + b f 2 , g > = a < f 1 , g > + b < f 2 , g > <af_1+bf_2,g>=a<f_1,g>+b<f_2,g> <af1​+bf2​,g>=a<f1​,g>+b<f2​,g>

线性空间: 希尔伯特空间满足线性空间的所有性质。加法的交换律,结合律,零元,负元,数乘的交换律,单位一,数乘与加法的结合律。

可再生核希尔伯特空间

{ λ i ψ i } i = 1 ∞ \{\sqrt{\lambda_i} \psi_i\}_{i=1}^{\infty} {λi​ ​ψi​}i=1∞​是希尔伯特空间 H \mathcal{H} H的正交基的集合。那么,希尔伯特空间的所有函数或是向量都可以表示成这些基的线性组合。 f = ∑ i = 1 ∞ f i λ i ψ i f=\sum_{i=1}^{\infty}f_i\sqrt{\lambda_i}\psi_i f=i=1∑∞​fi​λi​ ​ψi​我们可以把 f f f表示成希尔伯特空间 H \mathcal{H} H的一个无限维向量 f = ( f 1 , f 2 , ⋯ ) H T f=(f_1,f_2,\cdots)_{\mathcal{H}}^{T} f=(f1​,f2​,⋯)HT​对于另一个函数 g = ( g 1 , g 2 , ⋯ ) H T g=(g_1,g_2,\cdots)_\mathcal{H}^T g=(g1​,g2​,⋯)HT​,我们有 < f , g > H = ∑ i = 1 ∞ f i g i <f,g>_\mathcal{H}=\sum_{i=1}^{\infty}f_ig_i <f,g>H​=i=1∑∞​fi​gi​对于核函数 K K K, K ( x , y ) K(x,y) K(x,y)代表 K K K在 x , y x,y x,y处的值, K ( ⋅ , ⋅ ) K(·,·) K(⋅,⋅)表示核函数本身(无限维矩阵),我们使用 K ( x , ⋅ ) K(x,·) K(x,⋅)来表示 x x x行的一元函数或无限维向量,也就是把核函数的一个参数固定为 x x x。由此我们可以得到 K ( x , ⋅ ) = ∑ i = 0 ∞ λ i ψ i ( x ) ψ i K(x,·)=\sum_{i=0}^{\infty}\lambda_i\psi_i(x)\psi_i K(x,⋅)=i=0∑∞​λi​ψi​(x)ψi​在希尔伯特空间 H \mathcal{H} H中我们可以这样表示 K ( x , ⋅ ) = ( λ 1 ψ 1 ( x ) , λ 2 ψ 2 ( x ) , ⋯ ) H T K(x,·)=(\sqrt{\lambda_1}\psi_1(x),\sqrt{\lambda_2}\psi_2(x),\cdots)^T_\mathcal{H} K(x,⋅)=(λ1​ ​ψ1​(x),λ2​ ​ψ2​(x),⋯)HT​因此 < K ( x , ⋅ ) , K ( y , ⋅ ) > H = ∑ i = 1 ∞ λ i ψ i ( x ) ψ i ( y ) = K ( x , y ) <K(x,·),K(y,·)>_\mathcal{H}=\sum_{i=1}^\infty \lambda_i\psi_i(x)\psi_i(y)=K(x,y) <K(x,⋅),K(y,⋅)>H​=i=1∑∞​λi​ψi​(x)ψi​(y)=K(x,y)这就是核的可再生性,因此 H \mathcal{H} H是可再生核希尔伯特空间。
现在我们的问题是如何把一个点映射到我们想要的特征空间,我们定义如下映射 Φ ( x ) = K ( x , ⋅ ) = ( λ 1 ψ ( x ) , λ 2 ψ 2 ( x ) , ⋯ ) T \Phi(x)=K(x,·)=(\sqrt{\lambda_1}\psi(x),\sqrt{\lambda_2}\psi_2(x),\cdots)^T Φ(x)=K(x,⋅)=(λ1​ ​ψ(x),λ2​ ​ψ2​(x),⋯)T然后我们把点 x x x映射到 H \mathcal{H} H。这里 Φ \Phi Φ不是函数,因为它指向特征空间中的向量或函数,它是一个映射。 < Φ ( x ) , Φ ( y ) > H = < K ( x , ⋅ ) , K ( y , ⋅ ) > H = K ( x , y ) <\Phi(x),\Phi(y)>_{\mathcal{H}}=<K(x,·),K(y,·)>_{\mathcal{H}}=K(x,y) <Φ(x),Φ(y)>H​=<K(x,⋅),K(y,⋅)>H​=K(x,y)因此,我们实际上不需要知道映射是什么样的,特征空间是什么或什么是特征空间的基。对于对称的正定函数 K K K一定会存在至少一个映射 Φ \Phi Φ和一个特征空间 H \mathcal{H} H满足 < Φ ( x ) , Φ ( y ) > = K ( x , y ) <\Phi(x),\Phi(y)>=K(x,y) <Φ(x),Φ(y)>=K(x,y)这就是核技巧。

最大平均差异(MMD)

基本假设: 对于所有以分布生成的样本空间为输入的函数 ϕ \phi ϕ,如果两个分布生成的足够多的样本在 ϕ \phi ϕ上的对应的像的均值都相等,那么那么可以认为这两个分布是同一个分布。
假设有两个样本集合 X = { x i } i = 1 n X=\{x_i\}_{i=1}^n X={xi​}i=1n​和 Y = { y i } i = 1 m Y=\{y_i\}_{i=1}^m Y={yi​}i=1m​其中 x i x_i xi​和 y j y_j yj​分别来自不同的分布 p p p和 q q q。最大平均差异(MMD)是常用两个样本检测的检验统计量,我们的零假设是 p = q p=q p=q。因为总体MMD消失当且仅当 p = q p=q p=q,所以使用MMD来衡量两个分布之间的差异。这个通过将MMD和一个给定的阈值相比较得到,如果MMD大于阈值,那么就拒绝原假设,也就是两个分布不同。如果MMD小于某个阈值,就接受原假设。我们得到MMD的平方如下( ϕ ( x ) 是 x 在 可 再 生 核 希 尔 伯 特 空 间 的 映 射 \phi(x)是x在可再生核希尔伯特空间的映射 ϕ(x)是x在可再生核希尔伯特空间的映射) M D D 2 [ X , Y ] = ∣ ∣ E x [ ϕ ( x i ) ] − E y [ ϕ ( x i ) ] ∣ ∣ 2 = ∣ ∣ 1 n ∑ i = 1 n ϕ ( x i ) − 1 m ∑ j = 1 m ϕ ( y i ) ∣ ∣ 2 = 1 n 2 ∑ i = 1 n ∑ i ′ = 1 n ϕ ( x i ) T ϕ ( x i ′ ) + 1 m 2 ∑ j = 1 m ∑ j ′ = 1 m ϕ ( y j ) T ϕ ( y j ′ ) − 2 n m ∑ i = 1 n ∑ j = 1 m ϕ ( x i ) T ϕ ( y j ′ ) = 1 n 2 ∑ i = 1 n ∑ i ′ = 1 n k ( x i , x i ′ ) + 1 m 2 ∑ j = 1 m ∑ j ′ = 1 m k ( y j , y j ′ ) − 2 n m ∑ i = 1 n ∑ j = 1 m k ( x i , y i ) \begin{aligned}MDD^2[X,Y]&=||E_x[\phi(x_i)]-E_y[\phi(x_i)]||^2\\ &=||\frac{1}{n}\sum_{i=1}^n\phi(x_i)-\frac{1}{m}\sum_{j=1}^m\phi(y_i)||^2\\ &=\frac{1}{n^2}\sum_{i=1}^n\sum_{i'=1}^n\phi(x_i)^T\phi(x_{i'})+\frac{1}{m^2}\sum_{j=1}^m\sum_{j'=1}^m\phi(y_j)^T\phi(y_{j'})-\frac{2}{nm}\sum_{i=1}^n\sum_{j=1}^m\phi(x_i)^T\phi(y_{j'})\\ &=\frac{1}{n^2}\sum_{i=1}^n\sum_{i'=1}^nk(x_i,x_{i'})+\frac{1}{m^2}\sum_{j=1}^m\sum_{j'=1}^mk(y_j,y_{j'})-\frac{2}{nm}\sum_{i=1}^n\sum_{j=1}^mk(x_i,y_i)\end{aligned} MDD2[X,Y]​=∣∣Ex​[ϕ(xi​)]−Ey​[ϕ(xi​)]∣∣2=∣∣n1​i=1∑n​ϕ(xi​)−m1​j=1∑m​ϕ(yi​)∣∣2=n21​i=1∑n​i′=1∑n​ϕ(xi​)Tϕ(xi′​)+m21​j=1∑m​j′=1∑m​ϕ(yj​)Tϕ(yj′​)−nm2​i=1∑n​j=1∑m​ϕ(xi​)Tϕ(yj′​)=n21​i=1∑n​i′=1∑n​k(xi​,xi′​)+m21​j=1∑m​j′=1∑m​k(yj​,yj′​)−nm2​i=1∑n​j=1∑m​k(xi​,yi​)​

图像风格计算方法回顾

代价函数分为以下两个部分
J c o n t e n t ( C , G ) J_{content}(C,G) Jcontent​(C,G)第一部分被称作内容代价,这是一个关于内容图片和生成图片的函数,它是用来度量生成图片 G G G的内容与内容图片 C C C的内容有多相似。
J s t y l e ( S , G ) J_{style}(S,G) Jstyle​(S,G)第二部分被称作风格代价,这是一个关于风格图片和生成图片的函数,它是用来度量生成图片 G G G的内容与风格图片 S S S的内容有多相似。
J ( G ) = α J c o n t e n t ( C , G ) + β J s t y l e ( S , G ) J(G)=\alpha J_{content}(C,G)+\beta J_{style}(S,G) J(G)=αJcontent​(C,G)+βJstyle​(S,G)
S S S图片的内容函数如下,我们令这个 a [ l ] [ C ] a^{[l][C]} a[l][C]和 a [ l ] [ G ] a^{[l][G]} a[l][G](其中 a [ l ] [ C ] a^{[l][C]} a[l][C]代表 C C C图片的第 l l l层),代表这两个图片的指定层的激活函数值。如果这两个激活值大小接近,那么就意味着两个图片的内容相似。
J c o n t e n t ( C , G ) = 1 2 ∣ ∣ a [ l ] [ C ] − a [ l ] [ G ] ∣ ∣ 2 J_{content}(C,G)=\frac{1}{2}||a^{[l][C]}-a^{[l][G]}||^2 Jcontent​(C,G)=21​∣∣a[l][C]−a[l][G]∣∣2
S S S图片的每个位置的风格函数如下,其中 G [ l ] [ S ] G^{[l][S]} G[l][S]是一个 n C [ l ] × n C [ l ] n_C^{[l]}\times n_C^{[l]} nC[l]​×nC[l]​的矩阵, a i j k [ l ] [ S ] a_{ijk}^{[l][S]} aijk[l][S]​表示 i i i行 k k k列 k k k信道的数值。简单来说就是不同的信道之间的对应位置两两相乘。
G k k ′ [ l ] [ S ] = ∑ i = 1 n H [ l ] ∑ j = 1 n W [ l ] a i j k [ l ] [ S ] a i j k ′ [ l ] [ S ] G_{kk'}^{[l][S]}=\sum_{i=1}^{n_H^{[l]}}\sum_{j=1}^{n_W^{[l]}}a_{ijk}^{[l][S]}a_{ijk'}^{[l][S]} Gkk′[l][S]​=i=1∑nH[l]​​j=1∑nW[l]​​aijk[l][S]​aijk′[l][S]​ G G G图片的每个位置的风格函数对应如下:
G k k ′ [ l ] [ G ] = ∑ i = 1 n H [ l ] ∑ j = 1 n W [ l ] a i j k [ l ] [ G ] a i j k ′ [ l ] [ G ] G_{kk'}^{[l][G]}=\sum_{i=1}^{n_H^{[l]}}\sum_{j=1}^{n_W^{[l]}}a_{ijk}^{[l][G]}a_{ijk'}^{[l][G]} Gkk′[l][G]​=i=1∑nH[l]​​j=1∑nW[l]​​aijk[l][G]​aijk′[l][G]​我们算出来的风格矩阵如下:
J s t y l e [ l ] ( S , G ) = 1 ( 2 n H [ l ] n W [ l ] n C [ l ] ) 2 ∑ k n C [ l ] ∑ k ′ n C [ l ] ( G k k ′ [ l ] [ S ] − G k k ′ [ l ] [ G ] ) 2 J_{style}^{[l]}(S,G)=\frac{1}{(2n_H^{[l]}n_W^{[l]}n_C^{[l]})^2}\sum_{k}^{n_C^{[l]}}\sum_{k'}^{n_C^{[l]}}(G_{kk'}^{[l][S]}-G_{kk'}^{[l][G]})^2 Jstyle[l]​(S,G)=(2nH[l]​nW[l]​nC[l]​)21​k∑nC[l]​​k′∑nC[l]​​(Gkk′[l][S]​−Gkk′[l][G]​)2

开始证明

为了叙述简单,我们把矩阵平铺成一维的,令 n M [ l ] = n H [ l ] × n W [ l ] n_M^{[l]}=n_H^{[l]}\times n_W^{[l]} nM[l]​=nH[l]​×nW[l]​。
得到 J s t y l e [ l ] ( S , G ) = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ k n C [ l ] ∑ k ′ n C [ l ] ( ∑ i = 1 n M [ l ] a i k [ l ] [ S ] a i k ′ [ l ] [ S ] − ∑ i = 1 n M [ l ] a i k [ l ] [ G ] a i k ′ [ l ] [ G ] ) 2 = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ k n C [ l ] ∑ k ′ n C [ l ] ( ( ∑ i = 1 n M [ l ] a i k [ l ] [ S ] a i k ′ [ l ] [ S ] ) 2 + ( ∑ i = 1 n M [ l ] a i k [ l ] [ G ] a i k ′ [ l ] [ G ] ) 2 ) 2 − 2 ( ∑ i = 1 n M [ l ] a i k [ l ] [ S ] a i k ′ [ l ] [ S ] ) ( ∑ i = 1 n M [ l ] a i k [ l ] [ G ] a i k ′ [ l ] [ G ] ) 2 ) ) = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ k n C [ l ] ∑ k ′ n C [ l ] ∑ i = 1 n M [ l ] ∑ j = 1 n M [ l ] ( a i k [ l ] [ S ] a i k ′ [ l ] [ S ] a j k [ l ] [ S ] a j k ′ [ l ] [ S ] + a i k [ l ] [ G ] a i k ′ [ l ] [ G ] a j k [ l ] [ G ] a j k ′ [ l ] [ G ] − 2 ( a i k [ l ] [ S ] a i k ′ [ l ] [ S ] a j k [ l ] [ G ] a j k ′ [ l ] [ G ] ) = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ i = 1 n M [ l ] ∑ j = 1 n M [ l ] ∑ k n C [ l ] ∑ k ′ n C [ l ] ( a i k [ l ] [ S ] a i k ′ [ l ] [ S ] a j k [ l ] [ S ] a j k ′ [ l ] [ S ] + a i k [ l ] [ G ] a i k ′ [ l ] [ G ] a j k [ l ] [ G ] a j k ′ [ l ] [ G ] − 2 ( a i k [ l ] [ S ] a i k ′ [ l ] [ S ] a j k [ l ] [ G ] a j k ′ [ l ] [ G ] ) = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ i = 1 n M [ l ] ∑ j = 1 n M [ l ] ( ( ∑ k = 1 n C [ l ] a i k [ l ] [ S ] a j k [ l ] [ S ] ) 2 + ( ∑ k = 1 n C [ l ] a i k [ l ] [ G ] a j k [ l ] [ G ] ) 2 − 2 ( ∑ i = 1 n C [ l ] a i k [ l ] [ S ] a j k [ l ] [ G ] ) 2 ) = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ i = 1 n M [ l ] ∑ j = 1 n M [ l ] ( ( s i T s j ) 2 + ( g i T g j ) 2 − 2 ( s i T g j ) 2 ) ( 使 用 k ( x , y ) = ( x T y ) 2 的 核 函 数 ) = 1 ( 2 n C [ l ] n M [ l ] ) 2 ∑ i = 1 n M [ l ] ∑ j = 1 n M [ l ] ( k ( s i , s j ) + k ( g i , g j ) − 2 k ( s i , g j ) ) = 1 4 ( n C [ l ] ) 2 M M D 2 [ S [ l ] , G [ l ] ] \begin{aligned}J_{style}^{[l]}(S,G)&=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{k}^{n_C^{[l]}}\sum_{k'}^{n_C^{[l]}}(\sum_{i=1}^{n_M^{[l]}}a_{ik}^{[l][S]}a_{ik'}^{[l][S]}-\sum_{i=1}^{n_M^{[l]}}a_{ik}^{[l][G]}a_{ik'}^{[l][G]})^2\\ &=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{k}^{n_C^{[l]}}\sum_{k'}^{n_C^{[l]}}\left((\sum_{i=1}^{n_M^{[l]}}a_{ik}^{[l][S]}a_{ik'}^{[l][S]})^2+(\sum_{i=1}^{n_M^{[l]}}a_{ik}^{[l][G]}a_{ik'}^{[l][G]})^2)^2-2(\sum_{i=1}^{n_M^{[l]}}a_{ik}^{[l][S]}a_{ik'}^{[l][S]})(\sum_{i=1}^{n_M^{[l]}}a_{ik}^{[l][G]}a_{ik'}^{[l][G]})^2)\right)\\ &=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{k}^{n_C^{[l]}}\sum_{k'}^{n_C^{[l]}}\sum_{i=1}^{n_M^{[l]}}\sum_{j=1}^{n_M^{[l]}}(a_{ik}^{[l][S]}a_{ik'}^{[l][S]}a_{jk}^{[l][S]}a_{jk'}^{[l][S]}+a_{ik}^{[l][G]}a_{ik'}^{[l][G]}a_{jk}^{[l][G]}a_{jk'}^{[l][G]}-2(a_{ik}^{[l][S]}a_{ik'}^{[l][S]}a_{jk}^{[l][G]}a_{jk'}^{[l][G]})\\ &=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{i=1}^{n_M^{[l]}}\sum_{j=1}^{n_M^{[l]}}\sum_{k}^{n_C^{[l]}}\sum_{k'}^{n_C^{[l]}}(a_{ik}^{[l][S]}a_{ik'}^{[l][S]}a_{jk}^{[l][S]}a_{jk'}^{[l][S]}+a_{ik}^{[l][G]}a_{ik'}^{[l][G]}a_{jk}^{[l][G]}a_{jk'}^{[l][G]}-2(a_{ik}^{[l][S]}a_{ik'}^{[l][S]}a_{jk}^{[l][G]}a_{jk'}^{[l][G]})\\ &=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{i=1}^{n_M^{[l]}}\sum_{j=1}^{n_M^{[l]}}\left((\sum_{k=1}^{n_C^{[l]}}a_{ik}^{[l][S]}a_{jk}^{[l][S]})^2+(\sum_{k=1}^{n_C^{[l]}}a_{ik}^{[l][G]}a_{jk}^{[l][G]})^2-2(\sum_{i=1}^{n_C^{[l]}}a_{ik}^{[l][S]}a_{jk}^{[l][G]})^2\right)\\ &=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{i=1}^{n_M^{[l]}}\sum_{j=1}^{n_M^{[l]}}\left((s_i^Ts_j)^2+(g_i^Tg_j)^2-2(s_i^Tg_j)^2\right)(使用k(x,y)=(x^Ty)^2的核函数)\\ &=\frac{1}{(2n_C^{[l]}n_M^{[l]})^2}\sum_{i=1}^{n_M^{[l]}}\sum_{j=1}^{n_M^{[l]}}\left(k(s_i,s_j)+k(g_i,g_j)-2k(s_i,g_j)\right)\\ &=\frac{1}{4({n_C^{[l]})}^2}MMD^2[S^{[l]},G^{[l]}]\end{aligned} Jstyle[l]​(S,G)​=(2nC[l]​nM[l]​)21​k∑nC[l]​​k′∑nC[l]​​(i=1∑nM[l]​​aik[l][S]​aik′[l][S]​−i=1∑nM[l]​​aik[l][G]​aik′[l][G]​)2=(2nC[l]​nM[l]​)21​k∑nC[l]​​k′∑nC[l]​​⎝⎛​(i=1∑nM[l]​​aik[l][S]​aik′[l][S]​)2+(i=1∑nM[l]​​aik[l][G]​aik′[l][G]​)2)2−2(i=1∑nM[l]​​aik[l][S]​aik′[l][S]​)(i=1∑nM[l]​​aik[l][G]​aik′[l][G]​)2)⎠⎞​=(2nC[l]​nM[l]​)21​k∑nC[l]​​k′∑nC[l]​​i=1∑nM[l]​​j=1∑nM[l]​​(aik[l][S]​aik′[l][S]​ajk[l][S]​ajk′[l][S]​+aik[l][G]​aik′[l][G]​ajk[l][G]​ajk′[l][G]​−2(aik[l][S]​aik′[l][S]​ajk[l][G]​ajk′[l][G]​)=(2nC[l]​nM[l]​)21​i=1∑nM[l]​​j=1∑nM[l]​​k∑nC[l]​​k′∑nC[l]​​(aik[l][S]​aik′[l][S]​ajk[l][S]​ajk′[l][S]​+aik[l][G]​aik′[l][G]​ajk[l][G]​ajk′[l][G]​−2(aik[l][S]​aik′[l][S]​ajk[l][G]​ajk′[l][G]​)=(2nC[l]​nM[l]​)21​i=1∑nM[l]​​j=1∑nM[l]​​⎝⎛​(k=1∑nC[l]​​aik[l][S]​ajk[l][S]​)2+(k=1∑nC[l]​​aik[l][G]​ajk[l][G]​)2−2(i=1∑nC[l]​​aik[l][S]​ajk[l][G]​)2⎠⎞​=(2nC[l]​nM[l]​)21​i=1∑nM[l]​​j=1∑nM[l]​​((siT​sj​)2+(giT​gj​)2−2(siT​gj​)2)(使用k(x,y)=(xTy)2的核函数)=(2nC[l]​nM[l]​)21​i=1∑nM[l]​​j=1∑nM[l]​​(k(si​,sj​)+k(gi​,gj​)−2k(si​,gj​))=4(nC[l]​)21​MMD2[S[l],G[l]]​其中 S [ l ] S^{[l]} S[l]和 G [ l ] G^{[l]} G[l]分别代表两张图片的特征集。这样,将得到某个卷积层不同信道的结果都视为一个单独的样本,因此计算风格损失函数的时候会忽略特征的位置,这是图像风格迁移所需要的。所以我们知道了我们算出的两个图像Gram矩阵的差异,并不断减小这个差异的过程。其实是在减小 M M D 2 MMD^2 MMD2,让两个图像的分布更接近于同一个分布。所以图像的风格其实就是图像的特征分布,而图像风格迁移就是在减小分布的差异。

结论

  1. 图像的风格可以由CNN不同层中的特征分布本质上表示。
  2. 图像风格迁移可以看作是从内容图像到样式图像的分布对齐(distribution alignment )过程。

参考资料

http://songcy.net/posts/story-of-basis-and-kernel-part-2/
https://arxiv.org/pdf/1701.01036.pdf
http://www.umiacs.umd.edu/~hal/docs/daume04rkhs.pdf
http://open.163.com/newview/movie/free?pid=M8PTB0GHI&mid=M8PTBUHT0

(高能预警!)为什么Gram矩阵可以代表图像风格?带你揭开图像风格迁移的神秘面纱!相关推荐

  1. Gram矩阵+Gram矩阵和协方差矩阵的关系

    目录 Gram矩阵简介 协方差矩阵 Gram矩阵 和 协方差矩阵的关系 Gram Matrix代码 Gram矩阵简介 gram矩阵是计算每个通道 i 的feature map与每个通道 j 的feat ...

  2. Gram矩阵及其实际含义

    1.Gram矩阵的定义 2.意义 格拉姆矩阵可以看做feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),在feature map中,每个数字都来自于一个特定滤波器在特定位置的卷积,因此每 ...

  3. 风格迁移-风格损失函数(Gram矩阵)理解

    吴恩达教授卷积神经网络的课程中,有一部分是关于风格迁移的内容.组合内容图片,风格图片生成新的图片 主体思路是: 随机生成一张图片(可以基于原内容图片生成,从而加速训练) 计算其与内容图片之间的内容损失 ...

  4. Gram矩阵与卷积网络中的卷积的直观理解

    Gram矩阵其实是一种度量矩阵.矩阵分析中有这样的定义. 设 V V是nn维欧式空间 ϵ1,⋯,ϵn \mathbf{\epsilon_1, \cdots, \epsilon_n }是它的一个基, g ...

  5. python numpy.array 与list类似,不同点:前者区分元素不用逗号,中间用空格,矩阵用[]代表行向量,两个行向量中间仍无逗号;  而list区分元素用逗号

    python numpy.array 与list类似,不同点:前者区分元素不用逗号,中间用空格,矩阵用[]代表行向量,两个行向量中间仍无逗号: 而list区分元素用逗号.而 numpy.array 的 ...

  6. 如何对batch的数据求Gram矩阵

    Gram矩阵概念和理解 在风格迁移中,我们要比较生成图片和风格图片的相似性,评判标准就是通过计算Gram矩阵得到的.关于Gram矩阵的定义,可以参考[1]. 由这个矩阵的样子,很容易就想到协方差矩阵. ...

  7. OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))

    Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...

  8. Gram 矩阵性质及应用

    v1,v2,-,vnv_1,v_2,\ldots,v_n 是内积空间的一组向量,Gram 矩阵定义为: Gij=⟨vi,vj⟩G_{ij}=\langle v_i,v_j\rangle,显然其是对称矩 ...

  9. Gram矩阵和核函数

    Gram矩阵定义 内积空间中的一组向量 v 1 , v 2 , ⋯   , v n \bm v_1,\bm v_2,\cdots,\bm v_n v1​,v2​,⋯,vn​的Gram矩阵是内积的Her ...

最新文章

  1. python 跳出两层循环,跳出多层循环
  2. Python Module_subprocess_调用 Powershell
  3. CV之路 —— Opencv学习
  4. Android中ProgressBar的使用-通过Handler与Message实现进度条显示
  5. 【Servlet】Tomcat公共 / 项目独立的 web.xml / server.xml 文件讲解
  6. Fluent UDF【4】:C语言
  7. 电脑主板跳线_DIY电脑主板的跳线安装及排序规则
  8. 并查集 删除节点 求集合的个数set hdu 2473
  9. gin -get请求的小示例1-Handle处理GET请求
  10. 山海经异兽录找不到服务器,星辰山海经异兽录
  11. outlook设置263邮件服务器,如何设置Outlook邮件客户端收发邮件?
  12. 关于http响应200 OK的问题
  13. raid控制器缓存和硬盘缓存
  14. 图计算思维与实践 (一)概览
  15. 内网环路怎么解决_利用生成树协议巧妙解决局域网二层环路
  16. matlab实用小程序,matlab100常用小程序
  17. 解决多个数独重叠联系
  18. android 全景usb 全景,汽车360度全景USB高清数字信号输出系统的制作方法
  19. JAVA飞机移动斜着走_java复习 做一个简易的飞机游戏
  20. python公园售票小程序(身份证获取简单信息+简单数据分析+简单多线程)

热门文章

  1. 解决西门子ebr设备模块更新报错,EQP_STATEVALUE more than one row
  2. Java生鲜电商平台-异常模块的设计与架构
  3. C语言中int、long等类型所占的字节数
  4. IDEA打包时clean报错Failed to delete
  5. Java小游戏-幸运抽奖-进阶版(可多抽取多次)
  6. 三菱4轴控制伺服案例,三菱PLC FX3U加三菱1PG定位模 块控制4个松下伺服,有完整的注释,结构清晰明了。伺服控制程序JOG HOME 定位 全部写成了功能块FB .你可以直接拿过去用
  7. 【转】怎样运行 Vue 打包后的项目
  8. HTTP Status 404(The requested resource is not available)(转)
  9. smarty实例教程一
  10. mysql error unpacking_error: unpacking of archive failed on file错误的解决