论文学习——PixelSNAIL:An Improved Autoregressive Geenrative Model

news2025/1/12 22:56:30

文章目录

    • 引言
    • 论文翻译
      • Abstract
        • 问题
      • Introduction
        • 第一部分
          • 问题
        • 第二部分
          • 问题
      • Model Architecture网络结构
        • 第一部分
        • 问题
        • 第二部分
          • 问题
      • Experiments实验
        • 问题
      • Conclusion结论
        • 问题
    • 总结
    • 参考

引言

  • 这篇文章,是《PixelSNAIL:An Improved Autoregressive Geenrative Model》主要应用到的三个技术之一,我正在复现这篇文章,需要了解一下PixelSNAIL这个序列预测生成的模型。
  • 这篇文章是2017年的,属于近五年的文章,并且来自于Proceedings of Machine Learning Research, PMLR,是一篇顶会,是CCF-A类文章。
  • 出于学习的目的,这里还是翻译一下这篇文章。
  • 自注意力机制:可以获得任何时间信息,但是只能获取少量的信息
  • 因果卷积:可以获得任意数量的信息,但是只能获取的附近上下文的信息,范围有限。
  • 两者完美结合,实现互补。

论文翻译

Abstract

  • 自回归模型在密度估计任务中效果一直都很棒,尤其是针对图片或者音频等高维度数据的生成。自回归模型是将密度估计看作是序列建模任务,也就是使用递归神经网络(RNN)对下一个元素的条件分布进行建模,这个条件分布是基于之前所有的元素的。这类问题中,难点是如何设定RNN,使之能够有效地对长路径依赖进行建模。最常见的方法是使用因果卷积,因果卷积能够更好地访问序列中靠前的数据。受到最近兴起的元强化学习在处理长范围依赖方法的启发,我们引入因果卷积和自我注意力机制相结合的新的生成模型架构。在这篇文章中,我们展示了最终的训练模型,并且展示了最新的对数似然结果,分别是在CIFAR-10和ImageNet两个数据集上进行展示的。

问题

  • 元强化学习?

    • 含义:元强化学习(Meta Reinforcement Learning)是通过在多个任务上的经验,使得智能体能够在新任务上迅速学习和适应。
    • 特点
      • 学习如何学习:该学习方法不仅仅是学习一个特定任务的策略,是学习如何在新任务上快速学习策略
      • 快速适应:智能体能够在看到新任务的少量数据后,能够快速适应
    • 常见算法:MAML(Model-Agnostic Meta-Learning)、Reptile和PEARL(Probabilistic Embeddings for Actor-Critic Reinforcement Learning)
  • 因果卷积网络?

    • 含义:任何时间点的输出仅仅以来于该时间点之前的输入,不依赖于未来的输入,确保了输出和过去输入的因果函数。
    • 常规卷积: 如下图,timeA的这一列的最后的节点,是可以获取的timeB和timeC两列节点的信息,正常的时间顺序应该是timeA > timeB > timeC的顺序,后两者的顺序对于timeA而言,是未来的事件,不应该获得来自未来的信息,所以并不适合序列推列。
      在这里插入图片描述
    • 因果卷积:不同于因果卷积,这里的每一层神经元并不是全连接的,当前节点的数据来源,只能是发生在当前时间点之前的数据。过去可以影响现在,但是未来并不能影响现在
      在这里插入图片描述
    • 具体实现:因果卷积 可以通过适当的填充来实现,对于一维卷积,通过输入序列左侧添加适当数量的零;对于二维卷积,可以使用掩码卷积,根据中心元素进行分割。具体可以看这篇链接
    • 扩展:在我所找到的博客中,他还使用了孔洞卷积,也就是膨胀卷积,来增加卷积的感受野,卷积层能够获得尽可能多的未来数据。
  • 自注意力机制?

    • 含义:自注意力机制允许模型在处理一个序列的时候,对序列中每一个元素分配不同的注意力权重,可以根据每一个元素的上下文来决定他应该给予多少关注
    • 目前这个有点难懂,找机会花时间,找视频好好看看

Introduction

第一部分

  • 在高维度数据上的自回归生成模型能够将联合分布拆解成条件分布的乘积。
    在这里插入图片描述

  • 然后使用一个循环神经网络对特定的某一个条件分布 p ( x i ∣ x 1 : i − 1 ) p(x_i|x_{1:i-1}) p(xix1:i1)进行模拟。这个模拟可以给予额外的全局信息 h h h,如果是生成图片,这个 h h h就是类别标签,然后条件分布 p ( x i ∣ x 1 : i − 1 ) p(x_i|x_{1:i-1}) p(xix1:i1)可以表示为 p ( x i ∣ x 1 : i − 1 , h ) p(x_i|x_{1:i-1},h) p(xix1:i1h)。这种方法效果不错,能够对复杂的依赖关系进行建模。比起GAN,神经自回归模型能够有效地计算似然值,并且训练起来相对容易一些,在某些任务或者是数据集上,神经自回归模型的效果是超过了潜变量模型。

  • 我们设计的核心考虑点就是用来实现循环神经网络(RNN)的网络模型,要能有效调用序列中早期的数据。常见的解决办法如下

    • 传统的RNN,,比如说GRU或者LSTM:这些算法将信息保存在隐藏状态中,然后在训练的过程中,将之传播到下一个状态。他们这种基于时间的线性依赖性,严重限制了他们对于数据中长依赖的获取。
    • 因果卷积:直接对序列数据使用卷积,通过掩码或者转换,使得对于当前数据的预测仅仅会被之前的数据影响。同时,他们能一次性处理更多的数据,也就是说能够接触更多的过去的数据,考虑的更加全面。但是他们的感受野尺寸有限,并且感受野周围的信息衰弱的会更加明显
    • 自我注意力机制:这种方法是将序列转成无序键值对进行保存,同时又可以基于内容进行查询检索。他们的感受野是没有边界的,并且可以实现无衰减的访问时间比较久远的信息。这个刚好弥补了因果卷积的缺点。但是,他们仅仅只能精确访问少量信息,而且需要通过额外的机制,将具体信息和位置信息进行结合。
问题
  • 联合分布如何拆解成条件概率分布

    • 下文是使用条件概率公式进行拆解的,最终的联合分布是若干个条件分布的累乘
      在这里插入图片描述
  • 为什么自回归模型比起GAN之类的模型能够更好地计算似然值

    • 对于自回归模型而言,他的似然函数就是分解之后的条件概率,他的目标就是让最终的条件概率的累乘结果最大。对于每一个数据,我们只需要计算其在给定前面数据点的条件下的概率即可。
    • 对于GAN模型而言, 他并不是直接优化和计算似然函数,而是通过对看过程训练生成器和判别器。
  • 为什么传统RNN无法处理长序列数据

    • 因为传统RNN在处理非常长的序列时,会出现梯度消失和梯度爆炸的问题,影响模型的训练。
    • RNN的特点是在时间步骤上是顺序的,每一个时间步骤必须在前一个时间步骤完成后进行,并行十分困难,并不是擅长处理长序列的数据。

第二部分

  • 因果卷积和自注意力机制彼此的优势和劣势是互补的:因果卷积一次能处理很多的数据,但是仅限于局部时间内的上下文数据。但是自注意力机制能够访问任意时间范围内的上下文,但是只能访问少量的数据。将两者结合,效果最好,同时利用因果卷积的高带宽访问和自注意力机制的长范围访问。整个模型能够访问任何有效的数据,并且没有数量和范围的限制。
  • 具体的合并过程是这样的:卷积是将数据进行聚合,来创建一个上下文,然后在进行注意力查找。这种方法被称为SNAIL,最开始是用在元学习上的,而且效果还不错。主要是因为在元学习中,获取长期时间依赖十分重要,因为智能体的很多决策都是建立在过去的经验上的,SNAIL又刚好解决了这个问题。
  • 在这个文章中,我们也是将相同的想法应用在自回归生成模型上,因为对于自回归生成模型而言,关难点也是获取过去的数据。基于当前生成模型的最先进的技术——PixelCNN,我们提出了新的网络架构,也就是PixelSNAIL,他就是结合SNAIL技术,并应用在CIFAR-10和ImageNet数据集上,取得了最好的生成效果。
问题
  • 元学习是干什么的?
    • 含义:学会学习,目标是设计模型能够快速适应新任务,即使只有少量的数据。元学习是关于如何更好地训练模型,是其能够更快地学习新任务。
    • 特点
      • 快速适应新任务:传统的机器学习模型需要大量的数据训练,才能完成任务。但是元学习只需要少量样本就能快速适应新的数据
      • 训练和测试阶段:不同于传统的机器学习,仅仅只需要学习单个任务。元学习在训练阶段会同时接触多个任务,主要是学习如何快速从一个任务迅速转移到另外一个任务。测试阶段会接触一个新的任务,快速适应对应的知识。
      • 模型结构:有两个部分,一个是学习如何学习的部分,另外一个是针对特定任务进行学习的部分

Model Architecture网络结构

第一部分

  • 在这部分,我们主要是介绍PixelSNAIL的网络结构。主要由两个模块构成,具体见图一,描述如下。
    • 每一个残差模块由若干个卷积层构成,并且都有残差链接。为了实现因果性,对卷积层进行掩码操作,使得当前的像素只能处理左边以及上边的像素。我们使用门激活函数(gate activation function)。在整个模型中,我们每一个残差模块是4个卷积层,每一个卷积层是256个卷积核。
    • 一个注意力模块执行的是单键值对查找。这个模块会将数据映射到较低的维度中,然后在使用低维度的数据生成键值对,借此来减少计算复杂性,并获取输入的重要特征,然后使用soft-max函数来计算 注意力(注意,在这个模块还使用了掩码机制,使得当前的像素仅仅只会关注之前生成的像素)。我们使用的key的维度是16位,value的维度是128位。

在这里插入图片描述

  • 上图的两个模块构成了PixelSNAIL,左边是残差模块,总共是256个滤波器,然后有4个模块了;右边是注意力模块,键的维度是16,然后值的维度是128

问题

  • 门激活函数(gate activation function)

    • 含义:并不是特定的激活函数,在深度学习和神经网络中,用来控制信息流的机制
    • 作用:在处理序列数据时,不是所有的信息都是 同等重要的。门激活函数允许模型有选择性的控制信息的流动,对于捕捉和记忆长期依赖关系十分有用
  • 自注意力机制中的键值对如何生成?如何作用的?

    • 将输入进行线性投影:分别将输入序列应用到三个不同的线性变换中,生成三个矩阵分别是查询Q、键K和值V,计算这三个矩阵分别有对应的权重矩阵
      • Q = X ∗ W Q Q = X * W_Q Q=XWQ
      • K = X ∗ W K K = X * W_K K=XWK
      • V = X ∗ W V V = X * W_V V=XWV
    • 计算注意力分数:这里计算 Q Q Q K K K的权重矩阵点乘来计算注意力分数
    • 应用激活函数:对注意力分数使用softmax函数来计算权重矩阵 W e i g h t Weight Weight
    • 加权求和:使用上面的权重矩阵 W e i g h t Weight Weight和价值矩阵 V V V的点乘,作为最红的输出
    • 效果:使得模型在每一个位置都考虑到整个序列的信息,从而捕捉长距离的依赖关系

第二部分

  • 图2展示了完整的PixelSNAIL的网络结构,他是整合了残差模块和注意力模块。在CIFAR-10的数据集中,每一个残差模块后的第一个卷积层都有一个dropout层,会将一半的数据进行失活,主要是防止模型过拟合,因为数据太少了。在ImageNet中,就没有使用任何的dropout,因为数据集很大,不用担心过拟合。
  • 在两个数据集上,我们使用了Polyak平均法对训练参数进行平均。对于CIFAR-10,使用了0.99995的指数移动平均权重,对于ImageNet,我们使用了0.9997的权重。作为输出分布,我们使用了离散化logistics混合,其中CIFAR-10用了10个混合组件,ImageNet用了32个组件,为了预测子像素的值,我们使用了线性自回归参数化方法。

在这里插入图片描述

问题
  • 为什么要对训练参数进行平均?

    • 参数平均的原因
      • 提升模型的稳定性,参数初始化时,参数的波动会比较大,对参数进行平均,可以减少波动
      • 平滑损失曲线 ,平均过后的参数,损失值变化会更小,曲线更加平滑
      • 提高泛化性能,这部分是通过实验发现的
      • 减少噪声的影响,通过平均的参数,对于噪声的抑制能力会更强
  • 指数移动平均权重是为了什么?

    • 含义:这个简称为EMA,是前一个epoch的指数平均值和当前参数的值的加权和。
      在这里插入图片描述
  • 离散化的logitics混合组件是干什么的?

    • 什么是混合模型:通过组合多个简单的分布来逼近复杂的数据分布
    • logitics混合组件:通过多个简单的logistics分布(逻辑分布)来逼近复杂的分布。
    • 作用
      • 表示多模态分布、逼近复杂分布、更好的似然估计
  • 线性自回归参数化方法是干啥的?

    • 含义:使用线性模型来预测像素值,基于其邻近像素或在某个结构中的其他的像素。

Experiments实验

  • 在表格3中,我们提供了PixelSNAIL在CIFAR-10和ImageNet上的负对数似然结果,我们将PixelSNAIL和其他一些自回归模型进行比较。其他模型包括,PixelRNN(基于LSTM),PixelCNN和PixelCNN++(仅仅使用因果卷积)还有ImageTransformer(仅仅使用了自注意力机制)。PixelSNAIL的效果最好,这表明将这两个结构进行组合,效果确实不错。

  • 表格1,展示了在CIFAR-10和ImageNet两个数据集上的几种不同方法的负对数似然结果,PixelSNIAL的效果是比其他仅仅使用因果卷积或者是自注意力机制的要好。

问题

  • 负对数似然结果(negative log-likehood results)有什么用
    • 含义:评估生成模型性能的常用指标,尤其是针对图像生成模型,越小越好。
    • 计算过程
      • 模型预测:模型对于给定的输入,会预测下一个像素或者下一部分的分布。每一个像素一般都是一个概率值。
      • 获取真实值的概率:概率分布中,真实值的概率
      • 计算对数似然:计算当前像素的对数似然,并且取负数。
      • 计算整个图像的NLL:计算每一个像素的NLL,并进行求和。
      • 平均NLL:对于一个数据集而言,就是计算每一个图片的NLL,然后累加求和,在求平均。

Conclusion结论

  • 我们引入了PixelSNAIL,这是一种自回归生成模型,他将因果卷积和自注意力机制进行结合。我们验证了模型在CIFAR-10和ImageNet上性能,并且将项目公开在github上,链接。
  • 虽然自回归神经网络的似然度很好计算,并且在很多场景下都很有效,但是他有一个明显的缺陷就是生成很慢,主要是每一个像素必须顺序生成。PixelSNAIL的生成速率和其他的采样速率都很慢。所以设计一个模型能够快速采样并且性能有很好的,始终是一个问题。

问题

  • 注意力机制、空间注意力、通道注意力、混合注意力四者有什么区别?

    • 传统注意力机制:通常用于序列数据、例如文本或者时间序列。
    • 空间注意力机制:专门用于图像或者其他的空间数据,允许关注图西那个的某些特征区域。
    • 通道注意力机制:在处理多通道数据时,允许模型关注特定通道的数据
    • 混合注意力机制:通道和空间注意力机制的混合,同时关注通道和空间。
  • 注意力机制的核心

    • 允许模型动态地为其输入分配不同的权重,关注更加重要的部分。

总结

  • 较之于以往常见的PixelCNN,PixelSNAIL就是在PixelCNN的基础上,增加了一个自注意力机制,来弥补因果卷积的只能感知有限上下文的缺点。将这两者进行结合,就可以实现感受野不受影响,并且获取数据量很大的两个特点。使得模型的预测结果更加准确。
  • 通过这个模型,可以学一下具体的自注意力机制是如何实现,不同于之前实现过的空间注意力机制、通道注意力机制以及混合注意力机制。

参考

  • chatGPT -WebBrowser模式,链接
  • 因果卷积神经网络 —— 专为时间序列预测而设计的深度学习网络结构

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

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

相关文章

在自定义数据集上使用 Detectron2 和 PyTorch 进行人脸检测

本文讲讲述如何使用Python在自定义人脸检测数据集上微调预训练的目标检测模型。学习如何为Detectron2和PyTorch准备自定义人脸检测数据集,微调预训练模型以在图像中找到人脸边界。 人脸检测是在图像中找到(边界的)人脸的任务。这在以下情况下…

STM32F40X系列FSMC8路驱动LCD显示屏(LY-TFT30-39P-1509 芯片hx8352)

hx8352_8080_8bit_FMSC板级驱动 1.LCD相关1.1LCD参数1.2 LCD引脚1.3 LCD实物1.4 LCD引脚解释 2.接线关系3.STM32F40x基于FMSC16bit修改1)地址偏移2)删除多余GPIO3)修改FMSC的配置4)LCD初始化寄存器 3.板驱动程序4.运行结果 1.LCD相关 1.1LCD参数 LCD控制芯片&…

C数据结构与算法——无向图(最小生成树) 应用

实验任务 (1) 掌握Kruskal最小生成树算法; (2) 掌握Prim最小生成树算法。 实验内容 (1) 随机生成一个无向网 G ( V, E ),V { A, B, C, D, E, F },| E | 11,边的权值取值范围为 [ 1, 40 ]; (2) 使用Prim算法求出图…

离散化思想——只处理有效数据的优化思想

离散化思想——只处理有效数据的优化思想 什么是离散化离散化题目——校门外的树(超强版,1e9)题目描述输入格式输出格式样例样例输入样例输出 提示 思路分析朴素做法离散化!!代码分析数组循环 什么是离散化 离散化思想…

C语言之浮点数_数据存储篇(2)

目录 浮点数 什么是浮点数呢? 为什么叫浮点数? 浮点数家族 浮点数表示的范围? 浮点数存储的例子 浮点数的存储方式 写成规定形式是怎样的? 那SME在内存中如何分配的呢? 为什么要这样存储? 浮点…

44、TCP报文(二)

接上节内容,本节我们继续TCP报文首部字段含义的学习。上节为止我们学习到“数据偏移”和“保留”字段。接下来我们学习后面的一些字段(暂不包含“检验和”的计算方法和选项字段)。 TCP首部结构(续) “数据偏移”和“保…

人工智能在车牌识别中的应用与影响

引言:车牌识别技术是基于人工智能的一种重要应用,通过对监控视频中的车辆图像进行处理和分析,可以快速、准确地识别车牌号码。这项技术的广泛应用可以帮助交通管理、停车场管理,甚至追踪犯罪嫌疑人的车辆。本文将详细探讨车牌识别…

从LeakCanary看ViewModel生命周期监控

前面两篇文章中已经了解了LeakCanary中Service和Fragment生命周期监控的实现,那么ViewModel生命周期监控又是怎么实现的呢? 同样的,要了解ViewModel生命周期监控,我们首先应该清楚在代码结构中ViewModel是如何存储获取的&#xf…

【零基础自用】理解python为什么要用虚拟环境

不知道学过MATLAB或者R的小伙伴刚刚接触python的时候会不会被各种python版本,包版本,虚拟环境之类的搞的头晕眼花。 问题一 包版本 先来假设,我们自己开发了一个包MyPackage 1.0,里面包含一个模块叫PreTrained,然后去…

Python爬虫(十三)_案例:使用XPath的爬虫

本篇是使用XPath的案例 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载到本地。 #-*- coding:utf-8 -*- #tieba_xpath.py"""作用:本案例使用…

【AGC】Publishing api怎么上传绿色认证审核材料

【问题描述】 华为应用市场会对绿色应用标上特有的绿色标识,代表其通过华为终端开放实验室DevEco云测平台的兼容性、稳定性、安全、功耗和性能的检测和认证,是应用高品质的象征。想要自己的应用认证为绿色应用就需要在发布应用时提供绿色认证审核材料&a…

Go语言基础之基本数据类型

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基本数据类型 整型 整型分为以下两个大类: 按…

echarts 关于折线统计图常用的属性设置--超详细(附加源码)

文章目录 折线统计图设置x轴字体大小及字体颜色设置y轴字体大小及字体颜色设置背景颜色及设置折线颜色设置折线效果图显示阴影折线图位置及标签位置设置鼠标悬浮折线弹出窗口显示对应的数据设置自动横向滚动 总结 大家好!近期我会分享几篇关于echarts方面的技术点&a…

easy-es 使用

1、pom中引入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.14.0</version></dependency><dependency><groupId>org.…

CentOS ens160 显示disconnected

使用nmcli device查看网卡状态&#xff0c;显示如图&#xff1a; 检查宿主机系统VMware DHCP Sevice和VMware NAT Sevice服务是否正常运行。 右键点击我的电脑管理按钮&#xff0c;打开计算机管理点击服务

C语言实例_异或校验算法

一、异或校验算法 异或校验算法&#xff08;XOR校验&#xff09;是一种简单的校验算法&#xff0c;用于检测数据在传输或存储过程中是否发生了错误。通过将数据中的所有比特位相异或&#xff0c;生成一个校验码&#xff0c;然后将该校验码与接收到的数据进行比较&#xff0c;以…

如何大幅提高遥感影像分辨率(Python+MATLAB)

前言: 算法:NSCT算法(非下采样变换) 数据:Landsat8 OLI 遥感图像数据 编程平台:MATLAB+Python 论文参考:毛克.一种快速的全色和多光谱图像融合算法[J].测绘科学,2016,41(01):151-153+98.DOI:10.16251/j.cnki.1009-2307.2016.01.028. 左图:未进行融合的多光谱真彩色合…

ChatGPT逐句逐句地解释代码并分析复杂度的提示词prompt

前提安装chrome 插件 AI Prompt Genius&#xff0c; 请参考 3 个 ChatGPT 插件您需要立即下载 你是首席软件工程师。请解释这段代码&#xff1a;{{code}} 添加注释并重写代码&#xff0c;用注释解释每一行代码的作用。最后分析复杂度。快捷键 / 选择 Explain Code 输入代码提…

内网隧道代理技术(十七)之 NPS的使用

NPS的介绍和使用 NPS介绍 nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,…

RFID技术助力汽车零配件装配产线,提升效率与准确性

随着科技的不断发展&#xff0c;越来越多的自动化设备被应用到汽车零配件装配产线中。其中&#xff0c;射频识别&#xff08;Radio Frequency Identification&#xff0c;简称RFID&#xff09;技术凭借其独特的优势&#xff0c;已经成为了这一领域的重要技术之一。本文将介绍RF…