PixelCNN风格的自回归模型--学习笔记

  1. 概率密度估计的方法:    
    1. GAN使用模型执行隐式密度估计,模型学习一个随机过程,并使用该过程生成数据,但不提供观测概率的知识,或指定一个条件对数似然函数;
    2. 变分自编码器 (VAE) 使用显式密度估计,定义了一个带有潜在变量的难以处理的密度函数。为训练模型,导出并优化似然的下界(近似密度)
    3. 自回归 (AR) 模型创建了一个显式密度模型,该模型易于处理以最大化训练数据的可能性(可处理密度)。很容易计算数据观察的可能性并获得生成模型的评估指标。
  2. 自回归对多个维度/特征的数据进行建模时需要一些附加条件:
    1. 输入空间 X 需要对其特征进行确定排序。
      1. 这就是自回归模型通常用于具有内在时间步长序列的时间序列的原因。
      2. 可以通过定义例如左侧的像素在右侧的像素之前,顶部的像素在底部的像素之前来用于图像。
    2.  为了在数据观察 (p(x)) 中对特征的联合分布进行易处理的建模,自回归方法将p(x)视为条件分布的乘积。
      1. 给定先前特征的值,自回归模型使用每个特征的条件定义联合分布。
      2. 如,图像中某个像素具有特定强度值的概率取决于所有先前像素的值;而一幅图像的概率(所有像素的联合分布)是它所有像素的概率的组合。因此,自回归模型使用链式法则将数据样本 x 的似然分解为一维分布的乘积    
      3. 分解将联合建模问题转化为序列问题,在给定所有先前生成的像素的情况下,学习预测下一个像素。
    3.  即确定条件分布的顺序和乘积)就是定义自回归模型的主要条件。
  3.  使用通用逼近器(如深度神经网络)定义复杂的分布
  4. pixelcnn
    1. 被用于生成语音、视频和高分辨率图片。
    2. 是一种深度神经网络,它在其参数中捕获像素之间的依赖关系分布。 它沿两个空间维度在图像中一次顺序生成一个像素:像素 i(红色)由所有先前的像素(蓝色)定义。 PixelCNN 可以使用沿深度神经网络的卷积层对它们的关联进行建模。
    3. 使用卷积操作,PixelCNN 可以并行学习图像中所有像素的分布。 但在确定特定像素的概率时,标准卷积层的感受野违反了自回归模型的顺序预测。 在处理一个中心像素的信息时,卷积滤波器会考虑它周围的所有像素来计算输出特征图,而不仅仅是前面的像素。所以这里需要采用掩码来阻止来自尚未预测的像素的信息流。
    4. 两种掩码:(只是对中心像素的控制不同):掩码 A 仅用于第一个卷积层。 掩码 B 用于所有其他层,以允许以像素为中心的卷积操作的信息沿网络传播。
    5. 模型架构:
      1. 第一层是带有 7x7 过滤器的掩码卷积(A 型)。 然后,使用了 15 个残差块。 每个块使用掩码类型 B 的 3x3 卷积层和标准 1x1 卷积层的组合处理数据。 在每个卷积层之间,都有一个非线性 ReLU。
      2. 在序列块之后为RELU-CONV-RELU-CONV 层,其中CONV是使用带有1x1 滤波器标准卷积。 然后,输出层是一个 softmax 层,它预测像素的所有可能值。 模型的输出具有与输入图像大小相同的格式(因为我们想要每个像素的输出值)乘以可能值的数量(根据强度级别进行分类,例如256 个强度级别)。
      3. 如图:
      4. 预处理:
        1. PixelCNN 的输入值被缩放到 [0, 1] 的范围内。通过量化输入值,可以达到快速受收敛的目的。
        2. 输出目标对应于指示像素强度的分类(整数)值。
      5. PixelCNN 模型的优点是联合概率学习技术是非常容易处理的; 其只是尝试在给定所有先前像素值的情况下预测后面的每个像素值。 由于 PixelCNN 是通过最小化负对数似然来训练的,因此与其他方法(例如 GAN——需要找到纳什均衡)相比它的训练更加稳定。 但是由于样本的生成是顺序的(逐像素),原始的 PixelCNN 在可扩展性方面存在困难。

猜你喜欢

转载自blog.csdn.net/weixin_45647721/article/details/127272497