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

文章目录

    • 引言
    • 论文翻译
      • 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模式,链接
  • 因果卷积神经网络 —— 专为时间序列预测而设计的深度学习网络结构

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑上安装,多版本node

手上有一个vue3的项目,sass配置如下图所示: 安装了Python3.10和node 16.14.0,项目能正常install 跟run。 因工作需要,收上有一个vue2的项目,sass配置如下图所示: 执行npm intsall 的时候一直报Python2找不…

Influxdb数据库(centos7)

Influxdb数据库 1、简介与使用场景 简介 InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上排名第一: InfluxDB广泛应用于DevOps…

ElasticSearch索引库、文档、RestClient操作

文章目录 一、索引库1、mapping属性2、索引库的crud 二、文档的crud三、RestClient 一、索引库 es中的索引是指相同类型的文档集合,即mysql中表的概念 映射:索引中文档字段的约束,比如名称、类型 1、mapping属性 mapping映射是对索引库中文…

MyBatis入门配置及CURD实现

目录 一、MyBatis简介 1. 什么是 MyBatis ? 2. MyBatis的特性 3. 什么是持久层框架? 二、MyBatis环境配置 2.1 创建maven工程 2.2 导入相关pom依赖 2.3 导入jdbc配置文件 2.4 Mybatis相关插件安装 3.5 Mybatis-cfg.xml 核心配置 2.6 引入Log4j2日志文件…

在项目中如何解除idea和Git的绑定

在项目中如何解除idea和Git的绑定 1、点击File--->Settings...(CtrlAltS)--->Version Control--->Directory Mappings--->点击取消Git的注册根路径: 2、回到idea界面就没有Git了: 3、给这个项目初始化 这样就可以重新绑定远程仓库了&#x…

前端vue自定义柱形图 选中更改柱形图颜色及文字标注颜色

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现…

船舶法兰盘法兰管件3D扫描尺寸测量|三维扫描检测|CAV测量-CASAIM

第一章 服务背景 船舶建造多采用分段建造法,即将零件、预装好的部件在胎架上组合焊接成分段或总段,然后由船台装配成整船的建造方法。而当船体合拢组装时,在船体上遍布着各种各样的管道,这些管道都需要互相完全适配以确保船体安装…

第8章:集成学习

个体与集成 同质:相同的基学习器,实现容易,但是很难保证差异性。异质:不同的基学习器,实现复杂,不同模型之间本来就存在差异性,但是很难直接比较不同模型的输出,需要复杂的配准方法。…

python基础5——正则、数据库操作

文章目录 一、数据库编程1.1 connect()函数1.2 命令参数1.3 常用语句 二、正则表达式2.1 匹配方式2.2 字符匹配2.3 数量匹配2.4 边界匹配2.5 分组匹配2.6 贪婪模式&非贪婪模式2.7 标志位 一、数据库编程 可以使用python脚本对数据库进行操作,比如获取数据库数据…

前后端分离------后端创建笔记(09)密码加密网络安全

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

Pixar、Adobe 和苹果等成立 OpenUSD 联盟推行 3D 内容开放标准

导读Pixar、Adobe、Apple、Autodesk 与 NVIDIA 联手 Linux 基金会旗下的联合开发基金会(JDF)宣布建立 OpenUSD 联盟(AOUSD)以推行 Pixar 创建的通用场景描述技术的标准化、开发、进化和发展。 联盟寻求通过推进开放式通用场景描述…

Crimson:高性能,高扩展的新一代 Ceph OSD

背景 随着物理硬件的不断发展,存储软件所使用的硬件的情况也一直在不断变化。 一方面,内存和 IO 技术一直在快速发展,硬件的性能在极速增加。在最初设计 Ceph 的时候,通常情况下,Ceph 都是被部署到机械硬盘上&#x…

Git问题:解决“ssh:connect to host github.com port 22: Connection timed out”

操作系统 Windows11 使用Git IDEA 连接方式:SSH 今天上传代码出现如下报错:ssh:connect to host github.com port 22: Connection timed out 再多尝试几次,依然是这样。 解决 最终发现两个解决方案:(二选一&#xf…

Android 9.0 Vold挂载流程解析(上)

前言 我们分2篇文章来介绍Android 9.0中存储卡的挂载流程,本篇文章先介绍总体的挂载模块、Vold进程的入口main函数的详细分析,有了这些基础知识,下一篇中我们再详细介绍收到驱动层消息是怎么挂载和卸载存储卡的,还有framework层如…

合宙Air724UG LuatOS-Air LVGL API--对象

对象 概念 在 LVGL 中,用户界面的基本构建块是对象。例如,按钮,标签,图像,列表,图表或文本区域。 属性 基本属性 所有对象类型都共享一些基本属性: Position (位置) Size (尺寸) Parent (父母…

申请部署阿里云SSL免费证书

使用宝塔自动创建的证书有时候会报NET::ERR_CERT_COMMON_NAME_INVALID,并且每次只能三个月,需要点击续期非常麻烦,容易遗忘。 阿里云免费SSL证书 前往阿里云管理控制台【数字证书管理服务】【SSL证书】,每年20个额度,一…

阿里云无影云电脑/云桌面收费价格表_使用申请方法

阿里云无影云电脑配置具体收费价格表,4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同价格不同,无影云电脑费用是由云桌面配置、云盘、互联网访问带宽、AD Connector 、桌面组共用桌面session 等费用组成,阿里云百科分…

Golang使用消息队列(RabbitMQ)

最近在使用Golang做了一个网盘项目(类似百度网盘),这个网盘项目有一个功能描述如下:用户会删除一个文件到垃圾回收站,回收站的文件有一个时间期限,比如24h,24h后数据库中记录和oss中文件会被删除…

vue中实现订单支付倒计时

需求 创建订单后15分钟内进行支付,否则订单取消。 实现 思路: 获取当前时间和支付超时时间(在创建时间的基础上增加15分钟即为超时时间,倒计时多久根据自己的实际需求,这里为15分钟),支付超时…

后端开发12.商品模块

概述 简介 商品模块这个设计的非常复杂 效果图 数据库