PixelCNNPlusPlus

改进 PixelCNN ,将原始 256-way 灰度级 softmax 输出改为连续分布输出

什么是 PixelCNN++ ?

  • PixelCNN 的改进版,主要包括以下改进:1) 使用 logistic 分布代替 256 路 softmax;2)简化 RGB 子像素之间的约束关系;3)使用 U-Net 架构;4)使用 dropout 正则化

PixelCNN++ 使用 logistic 分布代替 256 路 softmax?

  • 原理:原 PixelCNN 使用 256 路 softmax 建模一个像素的颜色概率分布。首先存在计算量大的问题;其次模型可学习参数的梯度会很稀疏。PixelCNN++ 使用 logistic 分布代替 256 路 softmax,总的来说是:使用 K (K<256) 个连续分布去拟合一个离散分布,这个过程类似 VAE 使用多个高斯分布拟合原始数据分布
  • 结果解析:上图是 K 个 logistic 分布,相当于模型输出 K 个 sigmoid 输出,然后按照以下公式将模型输出转为离散

P(xμ,s)={σ((x+0.5μ)/s)σ(),x=0σ()σ((x0.5μ)/s),x=255σ((x+0.5μ)/s)σ((x0.5μ)/s),else\left.P(x|\mu,s)=\left\{\begin{array}{lr}\sigma((x+0.5-\mu)/s)-\sigma(-\infty),&\quad x=0\\\sigma(\infty)-\sigma((x-0.5-\mu)/s),&\quad x=255\\\sigma((x+0.5-\mu)/s)-\sigma((x-0.5-\mu)/s),&\quad else\end{array}\right.\right.

参考:

  1. 详解自回归模型 PixelCNN 大家族 - 知乎