Diffusion理论知识学习-预备

news2025/2/5 0:37:37

马尔科夫链

  • 总体思想: 过去的所有信息都被保存在了现在的状态中,只使用现在状态就能预测到之后的状态,换句话说就是某个时刻的状态转移概率只依赖于它的前一个状态。

  • 公式化表达: P ( x t + 1 ∣ x t , x t − 1 , . . . , x 1 , x 0 ) = P ( x t + 1 ∣ x t ) P(x_{t+1}|x_t,x_{t-1},...,x_1,x_0)=P(x_{t+1}|x_t) P(xt+1xt,xt1,...,x1,x0)=P(xt+1xt)

  • 举例:

    • 股市涨跌:当前股市的涨、跌、平的状态概率分别为[0.3,0.4,0.3],当前股市的涨、跌、平的状态概率分别为[0.3,0.4,0.3],且转移概率矩阵为:
      [ 0.9 , 0.075 , 0.025 0.15 , 0.5 , 0.05 0.25 , 0.25 , 0.5 ] (1) \left[\begin{matrix} 0.9,&0.075,&0.025\\ 0.15,&0.5,&0.05 \tag{1}\\ 0.25,&0.25,&0.5 \end{matrix}\right] 0.9,0.15,0.25,0.075,0.5,0.25,0.0250.050.5 (1)
      比如第二行第三列的0.05表示今天跌,明天平的概率。

      根绝上面的状态转移方程和今天的故事概率,可以依次得到后面每一轮涨、跌、平的概率:

      [ 0.405 , 0.4175 , 0.1775 ] → [ 0.4715 , 0.49875 , 0.11975 ] → . . . → [ 0.625 , 0.315 , 0.0625 ] [0.405,0.4175,0.1775]\rightarrow[0.4715,0.49875,0.11975]\rightarrow...\rightarrow[0.625,0.315,0.0625] [0.405,0.4175,0.1775][0.4715,0.49875,0.11975]...[0.625,0.315,0.0625]

      并且轮数在尽可能大的时候(60轮),那么状态概率就一直保持在 [ 0.625 , 0.315 , 0.0625 ] [0.625,0.315,0.0625] [0.625,0.315,0.0625],这也是马尔科夫链的状态转移稳定性。

    • 放回袋中的取球问题:当前取球颜色的概率只与上次取完后的结果有关。

高斯分布的可加性

两个独立高斯分布相加仍然是高斯分布,且相加后的高斯分布均值为原两个高斯分布均值之和,方差为原方差之和:
N ( x 1 ; μ 1 , σ 1 2 ) + N ( x 2 ; μ 2 , σ 2 2 ) = N ( x 1 + x 2 ; μ 1 + μ 2 , σ 1 2 + σ 2 2 ) (2) \mathcal N(x_1;\mu_1,\sigma_1^2)+\mathcal N(x_2;\mu_2,\sigma_2^2)=\mathcal N(x_1+x_2;\mu_1+\mu_2,\sigma_1^2+\sigma_2^2) \tag{2} N(x1;μ1,σ12)+N(x2;μ2,σ22)=N(x1+x2;μ1+μ2,σ12+σ22)(2)

AE和VAE

  • AE(AutoEncoder)

    • **基本概念:**输入的图片数据X经过Encoder后会得到一个比较确切的latent code Z(对这个latent code无其他约束),这个Z通过Decoder重建出图像X’,损失函数就是X和X’的重建MSE损失值。
    • **用处:**数据去噪、数据降维(配合适当的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影)
  • VAE(Variational AutoEncoder)

    • **区别于AE:**相比于AE,VAE更倾向于数据生成。只要训练好了Decoder,我们就可以从latent space的某一个标准正态分布采样latent code作为解码器Decoder的输入,来生成类似的、但是但不完全相同于训练数据的新数据,也许是我们从来没见过的数据,作用类似GAN

    • 重点: 在训练过程中,就像AE一样输入数据x被输入到Encoder输入通过一系列层(由超参数控制)来减少其维度,以获得压缩的latent code z。但是Encoder并不是直接输出latent code z,而是输出每个潜在变量的平均值和标准差,注意这里说的是每个!即对于每一个输入样本x我们都期望其经过encoder得到的latent code也是一个正态分布中采样得到的,那么对于k个样本x就有k个正态分布,然后就有k个分别从这k个正态分布中采样得到的latent code用于输入到decoder中重建原输入x。而为了得到这k个正太分布我们就需要有k组均值和方差。

      Latent code的方差不能为 0,因为我们还想要给模型一些训练难度。如果方差为 0,模型永远只需要学习高斯分布的均值,这样就丢失了随机性,VAE就变成AE了……**这就是为什么VAE要在AE前面加一个Variational:我们希望方差能够持续存在,从而带来噪声!**那如何解决这个问题呢?不仅需要保证有方差,还要让所有 P ( Z ∣ X ) P(Z|X) P(ZX) 趋于标准正态分布 N ( 0 , I ) \mathcal N(0,\Iota) N(0,I)
      在这里插入图片描述

    • 损失函数: 除了和AE中的重构MSE损失之外,VAE还有一个相似度损失,即latent space与标准高斯(零均值和单位方差)之间的KL散度
      在这里插入图片描述

参考:

  • 如何通俗理解扩散模型?
  • 深度学习《再探AE和VAE的区别》
  • AutoEncoder (AE) 和 Variational AutoEncoder (VAE) 的详细介绍和对比

重参数技巧

如果我们需要从某个随机分布(如高斯噪声)中采样一个样本,这个过程是不可微的也无法进行反向传播,此时我们可以通过重采参数技巧使其可微。比如我们想要从一个普通高斯分布 z ∼ N ( z ; μ , σ 2 ) z\sim\mathcal N(z;\mu,\sigma^2) zN(z;μ,σ2)中采样一个 z z z,那么我们就可以额外引入一个服从于标准高斯分布的独立随机变量 ϵ ∼ N ( 0 , 1 ) \epsilon\sim\mathcal N(0,1) ϵN(0,1),然后对这个随机变量缩放或偏移以接近原始待采样的分布,这个缩放和偏移的过程就是重参数的主要公式:
z = μ + σ ⋅ ϵ ,  其中  ϵ ∼ N ( 0 , I ) (3) z=\mu+\sigma\cdot\epsilon,\text{ } 其中\text{ }\epsilon\sim\mathcal N(0,\Iota) \tag{3} z=μ+σϵ, 其中 ϵN(0,I)(3)
即对一个标准高斯分布按照指定的标准差和均值进行缩放、偏移,就能获得符合原高斯分布 N ( z ; μ , σ 2 I ) \mathcal N(z;\mu,\sigma^2\Iota) N(z;μ,σ2I)的采样结果。

积分、求和、期望的关系

  • 离散随机变量的期望:将该离散随机变量的每个观测值 f ( x ) f(x) f(x)乘以各自的出现的概率 p ( x ) p(x) p(x),最后求和就得到期望:
    E p ( x ) [ f ( x ) ] = E [ f ( x ) ] = ∑ i p ( x i ) f ( x i ) ,且概率总和 ∑ i p ( x i ) = 1 (4) E_{p(x)}[f(x)]=E[f(x)]=\sum_{i}p(x_i)f(x_i),且概率总和\sum_{i}p(x_i)=1 \tag{4} Ep(x)[f(x)]=E[f(x)]=ip(xi)f(xi),且概率总和ip(xi)=1(4)

​ 举一个掷骰子的例子,6个面每个面的向上的概率是 1 6 \frac16 61,那么其向上的点数值的期望就是:
1 × 1 6 + 2 × 1 6 + 3 × 1 6 + 4 × 1 6 + 5 × 1 6 + 6 × 1 6 = 3.5 (5) 1\times\frac16+2\times\frac16+3\times\frac16+4\times\frac16+5\times\frac16+6\times\frac16=3.5 \tag{5} 1×61+2×61+3×61+4×61+5×61+6×61=3.5(5)

  • 一个连续随机变量将它的概率密度 p ( x ) p(x) p(x)和观测值 f ( x ) f(x) f(x)的相乘,再把这个随机变量所有取值都算上后做定积分,就能得到这个随机变量的期望值:
    E p ( x ) [ f ( x ) ] = E [ f ( x ) ] = ∫ p ( x ) f ( x ) d x ,且概率密度总积分 ∫ p ( x ) d x = ∫ x p ( x ) = 1 (6) E_{p(x)}[f(x)]=E[f(x)]=\int p(x)f(x)dx,且概率密度总积分\int p(x) dx=\int_{x}p(x)=1 \tag{6} Ep(x)[f(x)]=E[f(x)]=p(x)f(x)dx,且概率密度总积分p(x)dx=xp(x)=1(6)

条件概率、边缘概率、联合概率

  • 联合概率:多个条件同时成立的概率,记作 P ( A , B ) P(A, B) P(A,B)
  • 边缘概率:与联合概率相对应,记作P(A)或P(B),在不考虑其他白能量取值的情况下其中某个单个随机变量有关的概率。
  • 条件概率:在事件B发生的前提下事件A发生的概率,记作 P ( A ∣ B ) P(A|B) P(AB)

边缘、联合概率的关系 : P ( A ) = ∑ i P ( A , B i ) 或 P ( A ) = ∫ B P ( A , B ) 边缘、联合、条件概率的关系 : P ( A ∣ B ) = P ( A , B ) P ( B ) \begin{align} 边缘、联合概率的关系: P(A)&=\sum_iP(A,B_i)或P(A)=\int_BP(A,B) \tag{7} \\ 边缘、联合、条件概率的关系:P(A|B)&=\frac{P(A,B)}{P(B)} \tag{8} \end{align} 边缘、联合概率的关系:P(A)边缘、联合、条件概率的关系:P(AB)=iP(A,Bi)P(A)=BP(A,B)=P(B)P(A,B)(7)(8)

  • 全概率:某一个单独事件发生概率等于这个事件在其他完备事件的条件概率之和:
    P ( A ) = ∑ i P ( A ∣ B i ) P ( B i ) (9) P(A)=\sum_iP(A|B_i)P(Bi) \tag{9} P(A)=iP(ABi)P(Bi)(9)
    其实就是公式(7)的 P ( A , B i ) P(A,B_i) P(A,Bi)利用公式(8)进行展开

贝叶斯公式

贝叶斯公式由条件概率公式可以进一步推导得到:
P ( A ∣ B ) = P ( A , B ) P ( B ) = P ( B ∣ A ) P ( A ) P ( B ) P ( A ∣ B , C ) = P ( B ∣ A , C ) P ( A ∣ C ) P ( B ∣ C ) \begin{align} P(A|B)&=\frac{P(A,B)}{P(B)}=P(B|A)\frac{P(A)}{P(B)} \tag{10-1}\\ P(A|B,C)&=P(B|A,C)\frac{P(A|C)}{P(B|C)} \tag{10-2} \end{align} P(AB)P(AB,C)=P(B)P(A,B)=P(BA)P(B)P(A)=P(BA,C)P(BC)P(AC)(10-1)(10-2)
其中 P ( A ∣ B , C ) P(A|B,C) P(AB,C)表示在时间B和C同发生时,事件A发生的概率。

此外针对公式10-2有一些衍生的公式如下:
P ( A ∣ B , C ) = P ( A , B , C ) P ( B , C ) = P ( B ∣ A , C ) ∗ P ( A ∣ C ) ∗ P ( C ) P ( B ∣ C ) ∗ P ( C ) = P ( B ∣ A , C ) P ( A ∣ C ) P ( B ∣ C ) \begin{align} P(A|B,C)&=\frac{P(A,B,C)}{P(B,C)} \notag{ } \\ &= \frac{P(B|A,C)*P(A|C)*P(C)}{P(B|C)*P(C)} \tag{11} \\ &=P(B|A,C)\frac{P(A|C)}{P(B|C)} \notag{} \\ \end{align} P(AB,C)=P(B,C)P(A,B,C)=P(BC)P(C)P(BA,C)P(AC)P(C)=P(BA,C)P(BC)P(AC)(11)

此外对于公式(11)的第一步的分子分母同时除以 P ( C ) P(C) P(C)有:
P ( A ∣ B , C ) = P ( A , B , C ) / P ( C ) P ( B , C ) / P ( C ) = P ( A , B ∣ C ) P ( B ∣ C ) \begin{align} P(A|B,C)&=\frac{P(A,B,C)/P(C)}{P(B,C)/P(C)} \notag{} \\ &=\frac{P(A,B|C)}{P(B|C)} \tag{12} \end{align} P(AB,C)=P(B,C)/P(C)P(A,B,C)/P(C)=P(BC)P(A,BC)(12)
其中 P ( A , B ∣ C ) P(A,B|C) P(A,BC)表示在事件C发生时,事件A和事件B同时发生发生的概率。

最大似然估计(MLE)

最大似然估计是被使用最为广泛一种参数估计方法,其核心思想就是:那么既然事情已经发生了,为什么不让这个出现的结果的可能性最大呢?。在深度学习中通俗来讲就是利用已知的样本信息(比如我们的训练数据集),去反推最有可能“完美”生成这批样本的模型的参数值,其满足的一个前提就是样本独立同分布。
这个参考文献中举了一个“袋中摸球”的例子,很形象讲的很精彩,此外再完全引用其中的一段话
" 对于函数 P ( x ∣ θ ) P(x|\theta) P(xθ)输入有两个: x x x表示某一个具体的数据/样本; θ \theta θ表示模型的参数。

  • 如果 θ \theta θ是已知确定的, x x x是变量,这个函数叫做概率函数(probability function),它描述在模型时对于不同的样本点x,其出现概率是多少。
  • 如果 x x x是已知确定的, θ \theta θ是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现x这个样本点的概率是多少。"

在深度学习中我们通常是样本 x x x已知去计算未知的模型参数 θ \theta θ,即 P ( x ∣ θ ) P(x|\theta) P(xθ)变成了一个似然函数,最大似然估计就是要求得参数 θ \theta θ使得该似然函数的值最大。

所以最大似然估计的函数表达式也很简单,就是最大化下面的函数:
E q ( x ) log ⁡ ( p ( x ∣ θ ) ) (13) E_{q(x)}\log(p(x|\theta)) \tag{13} Eq(x)log(p(xθ))(13)
再举一个平时我自己用的一个例子:

对于深度学习中的分类问题,假定 y = f θ ( x ) y=f_\theta(x) y=fθ(x)即样本x经过参数为 θ \theta θ的网络 f θ f_\theta fθ后输出的类别概率分布为 y y y,如果类别数是n,则y是一个长度为n的概率分布,其中元素 y j y^j yj表示预测为第j类的概率,样本的GT我们规定为是一个长度为n的one-hot向量 y ~ j \widetilde y^j y j,那么我们最好的网络肯定是希望预测的概率 y i y^i yi和真实的标签 y ~ i \widetilde y^i y i是近乎相同的(),那么可以将这种相似性写成如下形式:
P ( y ~ ∣ θ ) = ∏ j = 1 n ( y j ) y ~ j (14) P(\widetilde y|\theta)=\prod_{j=1}^n(y^j)^{\widetilde y^j} \tag{14} P(y θ)=j=1n(yj)y j(14)
通俗点理解就是希望在 y ~ \widetilde y y 中为1的位置 y y y也为1;在 y ~ \widetilde y y 中为0的位置 y y y也为0,对上式左右取log得:
log ⁡ P ( y ~ ∣ θ ) = ∑ j = 1 n y ~ j ⋅ log ⁡ ( y j ) (15) \log P(\widetilde y|\theta)=\sum_{j=1}^n\widetilde y^j\cdot \log(y^j) \tag{15} logP(y θ)=j=1ny jlog(yj)(15)
可以发现上面其实就是计算两个离散分布 y ~ \tilde y y~ y y y的交叉熵的负数,最大化上面的结果就等于最小化这两个分布的交叉熵。而交叉熵其实这也就是分类任务中普遍常用的损失函数。

拓展:最大后验概率估计(MAP)

相比较于最大似然估计,最大后验概率估计是最大化 p ( x ∣ θ ) p ( θ ) p(x|\theta) p(\theta) p(xθ)p(θ),即最合适的 θ \theta θ不仅仅让似然函数 p ( x ∣ θ ) p(x|\theta) p(xθ)最大,也要让 p ( θ ) p(\theta) p(θ)尽量大,因为根据贝叶斯公式有: p ( θ ∣ x ) = p ( x ∣ θ ) p ( θ ) p ( x ) p(\theta|x)=\frac{p(x|\theta)p(\theta)}{p(x)} p(θx)=p(x)p(xθ)p(θ),因为 p ( x ) p(x) p(x)是真实数据分布,所以最大后验估计优化的上式分子最大值,其实也就是整体 p ( θ ∣ x ) p(\theta|x) p(θx)的最大,即后验证概率,这也就是"最大后验概率估计"的名字由来。 参考文献讲的很好。

最大似然估计(MLE)和最大后验概率估计(MAP)的区别在于:MAP就是多个作为因子的先验概率 p ( θ ) p(\theta) p(θ)。或者也可以反过来认为MLE是把先验概率 p ( θ ) p(\theta) p(θ)认为等于1,即认为 θ \theta θ是均匀分布。

变分下限(Variational Lower Bound)

变分下限(VLB)也叫evidence lower bound (ELBO).

在最大似然估计中,有时候难以直接计算并最大化似然函数 p ( x ∣ θ ) p(x|\theta) p(xθ)–也可以写成 p θ ( x ) p_\theta(x) pθ(x)那么如果我们可以知道他的一个下界,那么最大化他的一个下界,也就可以保证原始的似然函数 p ( x ∣ θ ) p(x|\theta) p(xθ)尽可能大。这里我们要引入另一个分布 q ( z ) q(z) q(z),我们可以理解为 x x x z z z分别是VAE中的观测值(原始数据)和隐变量,两者的关系为我们将隐变量 z z z输入到一个decoder中得到结果 x x x,其中隐变量 z z z一般我们可以规定其从高斯分布中采样而来,即 q ( x ) q(x) q(x)可以假定为一个高斯分布,现在我们从两个角度求原似然函数 p ( x ∣ θ ) p(x|\theta) p(xθ)的下界,其中 p ( x ∣ θ ) p(x|\theta) p(xθ)均简写为 p ( x ) p(x) p(x)

  • 琴生不等式:
    log ⁡ p ( x ) = log ⁡ ∫ z p ( x , z ) = log ⁡ ∫ z p ( x , z ) q ( z ) q ( z ) = log ⁡ ( E q ( z ) p ( x , z ) q ( z ) ) ≥ E q ( z ) log ⁡ p ( x , z ) q ( z ) = E q ( z ) log ⁡ p ( x , z ) − E q ( z ) log ⁡ q ( z ) = E q ( z ) log ⁡ p ( x , z ) + H ( q ) = V L B \begin{align} \log p(x)&=\log \int_z p(x,z) \tag{全概率公式} \\ &=\log\int_zp(x,z)\frac{q(z)}{q(z)} \notag{} \\ &=\log(E_{q(z)}\frac{p(x,z)}{q(z)}) \tag{积分求和变期望} \\ &\geq E_{q(z)}\log\frac{p(x,z)}{q(z)} \tag{\textcolor{red}{琴生不等式}} \\ &=E_{q(z)}\log p(x,z)-E_{q(z)}\log q(z) \notag{}\\ &=E_{q(z)}\log p(x,z)+H(q) \tag{熵的公式}\\ &=VLB \tag{16} \end{align} logp(x)=logzp(x,z)=logzp(x,z)q(z)q(z)=log(Eq(z)q(z)p(x,z))Eq(z)logq(z)p(x,z)=Eq(z)logp(x,z)Eq(z)logq(z)=Eq(z)logp(x,z)+H(q)=VLB(全概率公式)(积分求和变期望)(琴生不等式)(熵的公式)(16)

  • KL散度:
    log ⁡ p ( x ) = log ⁡ p ( x ) ∫ z q ( z ) = ∫ z q ( z ) log ⁡ p ( x ) = ∫ z q ( z ) log ⁡ p ( x , z ) p ( z ∣ x ) = ∫ z q ( z ) log ⁡ p ( x , z ) q ( z ) q ( z ) p ( z ∣ x ) = ∫ z q ( z ) log ⁡ p ( x , z ) − ∫ z q ( z ) log ⁡ q ( z ) + ∫ z q ( z ) log ⁡ q ( z ) p ( z ∣ x ) = E q ( z ) log ⁡ p ( x , z ) − E q ( z ) log ⁡ q ( z ) + E q ( z ) log ⁡ q ( z ) p ( z ∣ x ) = E q ( z ) log ⁡ p ( x , z ) + H ( q ) + K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) ≥ E q ( z ) log ⁡ p ( x , z ) + H ( q ) = V L B \begin{align} \log p(x)&=\log p(x)\int_z q(z) \tag{概率密度积分$\int_z q(z)=1$} \\ &=\int_z q(z)\log p(x) \notag{} \\ &=\int_z q(z)\log \frac{p(x,z)}{p(z|x)} \notag{} \\ &=\int_z \textcolor{red}{q(z)}\log \frac{p(x,z)\textcolor{red}{q(z)}}{q(z)\textcolor{red}{p(z|x)}} \tag{同乘$q(z)$} \\ &=\int_z q(z)\log p(x,z)-\int_z q(z)\log q(z)+\int_z \textcolor{red}{q(z)\log\frac{q(z)}{p(z|x)}} \notag{} \\ &=E_{q(z)}\log p(x,z)-E_{q(z)}\log q(z)+E_{q(z)}\log\frac{q(z)}{p(z|x)} \notag{}\\ &=E_{q(z)}\log p(x,z)+H(q)+KL(q(z)||p(z|x)) \notag{}\\ &\geq E_{q(z)}\log p(x,z)+H(q) \tag{\textcolor{red}{KL散度的非负性}} \\ &=VLB \tag{17} \end{align} logp(x)=logp(x)zq(z)=zq(z)logp(x)=zq(z)logp(zx)p(x,z)=zq(z)logq(z)p(zx)p(x,z)q(z)=zq(z)logp(x,z)zq(z)logq(z)+zq(z)logp(zx)q(z)=Eq(z)logp(x,z)Eq(z)logq(z)+Eq(z)logp(zx)q(z)=Eq(z)logp(x,z)+H(q)+KL(q(z)∣∣p(zx))Eq(z)logp(x,z)+H(q)=VLB(概率密度积分zq(z)=1)(同乘q(z))(KL散度的非负性)(17)

琴生不等式

凸函数 f ( x ) f(x) f(x)满足对于任意点集 x i {x_i} xi有:
离散型表示 : ∑ i λ i f ( x i ) ≥ f ( ∑ i λ i x i ) 概率论中表示 : E [ f ( x ) ] ≥ f ( E ( x ) ) 连续性表示 : ∫ f ( x ) λ ( x ) d x ≥ f ( ∫ x λ ( x ) d x ) , 其中 λ ( x ) 为概率密度 \begin{align} 离散型表示: \sum_i\lambda_if(x_i)&\geq f(\sum_i\lambda_ix_i) \tag{18-1}\\ 概率论中表示: E[f(x)]&\geq f(E(x)) \tag{18-2}\\ 连续性表示: \int f(x)\lambda(x)dx &\geq f(\int x\lambda(x)dx) ,其中\lambda(x)为概率密度 \tag{18-3} \end{align} 离散型表示:iλif(xi)概率论中表示:E[f(x)]连续性表示:f(x)λ(x)dxf(iλixi)f(E(x))f(xλ(x)dx),其中λ(x)为概率密度(18-1)(18-2)(18-3)
而凸函数的定义也很简单,其实就是向下凸的函数,常见的凸函数有 log ⁡ ( x ) 、 x 2 \log(x)、x^2 log(x)x2

换句话说就是:函数值的加权和 ≥ \geq 加权和的函数值

KL散度计算

KL散度又称相对熵,用于描述两个概率分布 P P P Q Q Q的差异性

  • 一般分布的KL散度求解:
    D K L ( P ∣ ∣ Q ) = ∑ P ( x ) log ⁡ P ( x ) Q ( x ) = − ∑ P ( x ) log ⁡ Q ( x ) + ∑ P ( x ) log ⁡ ( P ( x ) ) = H ( P , Q ) − H ( P ) \begin{align} D_{KL}(P||Q)&=\sum P(x)\log\frac{P(x)}{Q(x)} \notag{}\\ &=-\sum P(x)\log{Q(x)}+\sum P(x)\log(P(x)) \notag{}\\ &=H(P,Q)-H(P)\tag{19} \end{align} DKL(P∣∣Q)=P(x)logQ(x)P(x)=P(x)logQ(x)+P(x)log(P(x))=H(P,Q)H(P)(19)
    可以看到最终KL散度其实可以转化成交叉熵 H ( P , Q ) H(P,Q) H(P,Q)和熵 H ( P ) H(P) H(P)的差,且KL散度有两个重要性质:

    • 非对称性: D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q)\neq D_{KL}(Q||P) DKL(P∣∣Q)=DKL(Q∣∣P)
    • 非负性: D K L ( P ∣ ∣ Q ) ≥ 0 D_{KL}(P||Q)\geq0 DKL(P∣∣Q)0,仅在 P = Q P=Q P=Q时取0

拓展: JS散度

正是由于KL散度的不对称性问题使得在某些训练过程中可能存在一些问题,为了解决这个问题则在KL散度基础上引入了JS散度,假定 M = 1 2 ( P + Q ) M=\frac12(P+Q) M=21(P+Q),则JS散度可以表示为:
J D S ( P ∣ ∣ Q ) = 1 2 K L ( P ∣ ∣ M ) + 1 2 K L ( Q ∣ ∣ M ) = 1 2 ∑ p ( x ) log ⁡ ( p ( x ) p ( x ) + q ( x ) ) + 1 2 ∑ q ( x ) log ⁡ ( q ( x ) p ( x ) + q ( x ) ) + log ⁡ 2 \begin{align} JDS(P||Q)&=\frac12KL(P||M)+\frac12KL(Q||M) \notag{}\\ &=\frac12\sum p(x)\log\Big(\frac{p(x)}{p(x)+q(x)}\Big)+\frac12\sum q(x)\log\Big(\frac{q(x)}{p(x)+q(x)}\Big)+\log2 \tag{20} \end{align} JDS(P∣∣Q)=21KL(P∣∣M)+21KL(Q∣∣M)=21p(x)log(p(x)+q(x)p(x))+21q(x)log(p(x)+q(x)q(x))+log2(20)
参考文献中的一段内容: JS散度是对称的,其取值是 0 到 1 之间。如果两个分布 P和Q 离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而公式(11)中JS散度值两个 ∑ \sum 是0,所以总体JS散度是一个常数(log2),这在学习算法中是比较致命的,这就意味这这一点的梯度为 0,梯度消失了。

证明P、Q不重叠时JS散度其实也很简单,就是因为不重叠,所以任意一个x, p ( x ) p(x) p(x) q ( x ) q(x) q(x)中至少有一个为0,再计算公式(11)就很容易得到两个 ∑ \sum 都是0,最后JS散度就变成了常数log2.

思考:为什么会出现两个分部没有重叠的现象?
真实数据的分布其实是高维空间下的一个低维流行(可以类比想象成立体3维空间里的一个2维平面,而真实情况下可能空间维度),我们的数据没有"撑满"整个空间,这就导致很难重合。原始GAN的损失函数的最终优化目标就是优化真实数据分布和生成数据分布的JS散度,所以GAN有时候可能会出现训练崩塌的情况。

高斯分布的KL散度的快速求解

对于特殊的分布-高斯分布,我们可以直接通过其均值和方差快速求解KL散度:
KaTeX parse error: Multiple \tag

上面分别表示一元高斯分布和多元高斯分布的KL散度直接求解,其中 d e t ( A ) det(A) det(A) t r ( A ) tr(A) tr(A)分别表示矩阵的模和迹。
参考链接

重积分下的Fubini定理

富比尼定理提供了逐次积分的方法计算双重积分的条件。不但可以用逐次积分计算双重积分,而且在交换逐次积分的顺序时,保证了积分结果不会变

  • 如果 : f ( x , y ) = h ( x ) g ( x ) ,则 ∫ A h ( x ) d x ⋅ ∫ B g ( y ) d y = ∫ A × B d ( x , y ) 如果:f(x,y)=h(x)g(x),则\int_Ah(x)dx\cdot\int_Bg(y)dy=\int_{A\times B}d(x,y) 如果:f(x,y)=h(x)g(x),则Ah(x)dxBg(y)dy=A×Bd(x,y)
  • ∫ A [ ∫ B f ( x , y ) d y ] d x = ∫ B [ ∫ A f ( x , y ) d x ] d y = ∫ A × B f ( x , y ) d ( x , y ) \int_A\Big[\int_Bf(x,y)dy\Big]dx=\int_B\Big[\int_Af(x,y)dx\Big]dy=\int_{A\times B}f(x,y)d(x,y) A[Bf(x,y)dy]dx=B[Af(x,y)dx]dy=A×Bf(x,y)d(x,y)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打造钢材行业智能制造新业态,B2B电商平台系统赋能企业交易全链路数字化

钢铁行业是制造业的“脊梁”,是工业的“粮食”,在我国由制造大国向制造强国挺进的过程中,钢铁行业由全球“老大”变“强大”至关重要,而数字化转型将发挥不可替代的作用,实施绿色制造、智能制造和精益制造,…

阿里中间件的源与流

目录前言从中间件->中台->阿里云从五彩石项目说起从HSF到EDAS从TDDL到PolarDB-XTDDL阶段DRDS阶段PolarDB-X 1.0阶段PolarDB-X 2.0阶段从Notify到RocketMQ阿里中间件一览参考链接前言 阿里中间件如雷贯耳,听上去高深莫测,那到底是哪几样神兵利器呢…

【MySQL】1.MySQL基础

文章目录1.0 数据库基本概念1.1 主流数据库介绍2.0 MySQL数据库架构2.1 MySQL软件分层2.1 MySQL存储引擎2.2 SQL语句分类1.0 数据库基本概念 想要理解数据库的概念,首先要了解数据库为何存在,它存在的价值是什么? 在之前的学习中&#xff0c…

用Python绑定调用C/C++/Rust库

用Python绑定调用C/C/Rust库 在《让你的Python程序像C语言一样快》我们学习了如何利用Python API来用C语言编写Python模块,通过将核心功能或性能敏感运算用C语言实现,Python程序可以运行地像C语言一样快。然而,很多时候我们需要的功能已经有…

Mycat(11):分片详解之字符串ID处理

1 找到conf/schema.xml并备份 2 字符串ID处理的分区算法 conf/rule.xml <tableRule name"jch"><rule><columns>id</columns><algorithm>jump-consistent-hash</algorithm></rule></tableRule><function name&qu…

css之grid布局个人学习笔记

前置 只是个人学习,内容只会记录自己想知道,有问题的知识点具体可以看看bilibili的耕耕技术宅-grid布局地址视频对应的耕耕技术宅-grid布局ppt地址学有余力的可以通关下这个小游戏通过给萝卜浇水&#xff0c;学习 CSS 网格布局CSS Grid 网格布局教程- 阮一峰 明确基本概念 下…

品牌创建百科怎么写?品牌百度百科怎么创建?

每年都会有很多新成立的品牌&#xff0c;但是能够被大众所熟知的却是寥寥无几&#xff0c;众多品牌都被淹没在了大千世界里。 一个品牌的创建&#xff0c;难的就在于宣传&#xff0c;宣传力度不到位&#xff0c;就没有用户会愿意为这个品牌买单。 那么怎么快速提升品牌的知名度…

肝完这在“牛客网”难倒万人的Java面试题后,已收获9个大厂offer

上周在牛客网看到了这几百道面试题之后&#xff0c;看到评论区全是太难了&#xff01;太难了&#xff0c;就深深被其吸引&#xff0c;索性直接花了一周的时间才把它们全部解析出来做成了这份文档&#xff0c;发给了最近面试的粉丝&#xff0c;他刷爆之后居然能拿到了好几个大厂…

IDEA集成docker-JDK11版本

IDEA集成docker 1. docker 服务器开启远程访问 登录 docker 所在的远程服务器&#xff0c;使用命令 vim /usr/lib/systemd/system/docker.service 修改配置文件&#xff0c;需注意&#xff0c;修改时确认自己的账户拥有相应权限 主要操作是找到 ExecStart/usr/bin/dockerd -H…

能量原理和变分法笔记1:变分法简介

上个学期在学校学了多体系统动力学的课&#xff0c;其中老师讲了变分原理&#xff0c;觉得很有启发&#xff0c;决定再学学相关的知识&#xff0c;在B站找到了一个这样的视频能量原理与变分法&#xff0c;做点笔记&#xff0c;加深一下理解。 第0章序言-微元、功和能(P2)第1章1…

常用的wxpython控件使用方法总结

写在开头&#xff1a;总结下现阶段我常用到wxpython控件的一些使用方法&#xff0c;便于记录和查询。 我一般是借助wxFormBuilder工具搭建基础的界面生成代码&#xff0c;这样做的好处自然是方便设计界面增加界面的美观度&#xff0c;再在.py文件手写代码设置控件的事件驱动&a…

【论文阅读总结】Batch Normalization总结

批量规范化&#xff1a;通过减少内部协变量转移加快深度网络训练1. 摘要2. 序言2.1 min-batches的优缺点2.2 批量归一化解决内部协变量转移的优点3.减少内部协变量转移实现思想3.1 白化的问题3.2 解决白化问题4.小批量统计进行标准化4.1.白化简化的两种方式4.1.1 对通道维度进行…

mybatis实现分页查询(两种方式:1pageHelper插件 2手写)

方法1&#xff1a;整合pageHelper分页插件 优点&#xff1a;快捷&#xff0c;只需要你有一个查询全部数据的方法即可 缺点&#xff1a;对于初学者来说&#xff0c;不了解内部的原理 前提&#xff1a;需要先实现一个最简单的 查询全部数据的方法&#xff0c;不会的可以先去搭建一…

C++零基础项目:俄罗斯方块!详细思路+源码分享

游戏介绍 这是使用 C 和 EasyX 写的一个俄罗斯方块小游戏&#xff0c;里面用到的 C 特性并不多。 游戏主要分成了两个类来实现&#xff1a;Game 和 Block 类&#xff0c;分别用来实现游戏逻辑和单独的俄罗斯方块&#xff0c;里面顶多就用到了静态成员函数和变量的特性&#x…

nexus上传自定义starter

nexus上传自定义starter1、starter上传简介2、上传方法2.1、setting.xml文件2.2、项目中的pom文件3、具体部署1、starter上传简介 在我们自定义了springboot的starter后&#xff0c;starter一般有是一个父子级maven工程&#xff0c;如下图所示&#xff0c;对于 autoconfigure 来…

H5 导航栏示例

本文是通过:hover更新元素样式&#xff0c;通过递归树形菜单渲染到页面。 效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"&…

基于ssm框架的汽车故障维修管理系统源码+开题报告+论文+远程安装部署+视频讲解

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于ssm框架的汽车故障维修管理系统源码开题报告论文远程安装部署视频讲解 演示视频 视频去哪了呢&#xff1f;_哔哩哔哩_bilibili 系统介绍 项目介绍…

dependencies与dependencyManagement的区别

最近再看项目的时候&#xff0c;无意间注意到项目中的pom文件既有dependencyManagement&#xff0c;也有dependencies&#xff0c;有点疑惑为什么要同时有这两个标签&#xff0c;可能之前没太注意过吧。 dependencies与dependencyManagement的区别&#xff1a; a…

js基础面试题

js基础 h5新特性 1. 新增选择器&#xff1a;querySelector、querySelectorAll 2. 拖拽功能&#xff1a;drag和drop 3. 媒体播放&#xff1a;video和audio 4. 本地存储&#xff1a;localStorage和sessionStorage 5. 语义化标签&#xff1a;article、footer、header、nav、sect…

D. Maximum Sum of Products(二维数组记录改变区间)

Problem - 1519D - Codeforces 给你两个长度为n的整数数组a和b。 你最多可以扭转数组a的一个子数组&#xff08;连续子段&#xff09;。 你的任务是反转这样一个子数组&#xff0c;使其总和∑i1nai⋅bi达到最大。 输入 第一行包含一个整数n&#xff08;1≤n≤5000&#xff0…