)
教程文档深度学习计算机视觉【免费下载链接】cs231n.github.ioPublic facing notes page项目地址https://gitcode.com/gh_mirrors/cs/cs231n.github.io点击查看免费下载本篇技术指南以 cs231n 课程公开笔记仓库中的 pixelrnn.md 为主体系统讲解 PixelRNN——一种将图像生成建模为**全可见信念网络FVBN**的显式密度估计模型。你将掌握 PixelRNN 如何用链式法则把图像联合似然分解为逐像素条件分布、如何用 Row LSTM 与 Diagonal BiLSTM 两种二维 LSTM 层捕捉空间上下文以及它在 ImageNet / CIFAR-10 上的负对数似然NLL评测结果并对比同仓库 generative-models.md 中 PixelCNN 的并行化改进思路。从生成建模到 PixelRNN显式密度估计的定位在深入 PixelRNN 之前先明确它在生成建模谱系中的位置。根据同仓库 generative-models.md 的概述生成建模有两大目标一是学习模型分布 $p_{\text{model}}(x)$ 以逼近真实数据分布 $p_{\text{data}}(x)$二是能从 $p_{\text{model}}(x)$ 中采样出新的样本。围绕这两个目标密度估计被划分为两条路线显式密度估计Explicit density estimation显式定义并求解 $p_{\text{model}}(x)$PixelRNN / PixelCNN 属于此类隐式密度估计Implicit density estimation不显式定义密度函数直接训练模型从数据分布采样GAN 属于此类。显式路线在图像这种高维空间上通常难以找到似然函数的解析表达而 PixelRNN 的核心贡献正是给出了一条**可处理tractable**的显式建模路径。PixelRNN 属于**全可见信念网络fully visible belief networkFVBN**一族其中数据似然 $p(x)$ 在给定图像输入 $x$ 时被显式建模为图像中每个像素的联合似然$$p(x) p(x_1, x_2, \dots, x_n)$$等号左侧是整幅图像 $x$ 的似然右侧是图像中每个像素的联合似然。借助概率论中的链式法则Chain Rule这个联合似然可以被分解为一组一维条件分布的乘积$$p(x) \prod_{i 1}^n p(x_i \mid x_1, \dots, x_{i - 1})$$于是建模整幅图像的联合分布被转化为序列建模问题预测下一个像素 $x_i$ 时只需以其之前的所有像素 $x_1, \dots, x_{i-1}$ 为条件。训练目标即最大化训练数据的似然由此得到 PixelRNN 模型。模型逐像素扫描与二维 LSTM 架构PixelRNN 由 van der Oord 等人于 2016 年首次提出其思想是用类似 RNN 的结构一个像素一个像素地建模上述似然函数。生成建模中较难的挑战之一就是构造可处理的模型PixelRNN 通过把像素联合分布可处理地分解为条件分布之积来回应这一挑战——分解将联合建模问题转化为与序列相关的问题即给定所有先前生成的像素来预测下一个像素。由于 RNN 天然按顺序学习PixelRNN 采用**循环神经网络具体为 LSTM**来完成这一任务。更精确地说生成过程从图像左上角开始用 RNNLSTM建模每个像素对之前像素的依赖关系。具体而言PixelRNN 框架由十二个二维 LSTM 层构成并对数据的每个维度施加卷积操作其中包含两种层类型Row LSTM 层卷积沿每一行施加Diagonal BiLSTM 层卷积施加在图像的对角线方向上。此外与许多此前把像素建模为连续值的方法不同PixelRNN 把像素值建模为离散值通过 softmax 层实现的多项分布multinomial distribution输出每个像素取值的条件概率。从模型工作方式看RNN 按行扫描每个像素在给定网络已掌握的上文context的情况下预测所有可能像素值上的条件分布。二维 LSTM 网络从图像左上角开始扫描一路推进到右下角。选择 LSTM 的一个重要原因是LSTM 能更好地捕捉像素之间较远距离的依赖关系这对理解图像构图至关重要而选择二维结构则是为了保证信号能良好地在从左到右、从上到下两个方向上传播。输入表示与条件分布分解送入网络的输入图像被表示为一维像素值向量 ${x_1, \dots, x_{n^2}}$其中 ${x_1, \dots, x_n}$ 代表 $n \times n$ 图像的第一行像素。目标是利用这些像素值为每幅图像 $X$ 求出概率分布 $p(X)$定义如下$$p(x) \prod_{i 1}^{n^2} p(x_i \mid x_1, \dots, x_{i - 1})$$这是图像中所有像素条件分布的乘积——对像素 $x_i$其条件分布为 $p(x_i \mid x_1, \dots, x_{i - 1})$。而每一个这样的条件分布又由与图像中**三个颜色通道红、绿、蓝**对应的三个值共同确定$$p(x_i \mid x_1, \dots, x_{i - 1}) p(x_{i,R} \mid \textbf{x}{i}) \cdot p(x{i,G} \mid \textbf{x}{i}, x{i,R}) \cdot p(x_{i,B} \mid \textbf{x}{i}, x{i,R}, x_{i,G})$$也就是说红色通道 $x_{i,R}$ 只依赖此前所有像素 $\textbf{x}{i}$绿色通道 $x{i,G}$ 额外以红色通道为条件蓝色通道 $x_{i,B}$ 则进一步以红、绿两通道为条件。这种依通道序贯分解的方式将单个像素的联合条件分布拆成了三个更易建模的一维分布。同仓库 generative-modeling.md 的 Pixel RNN 章节也印证了同一思路条件分布依赖过多像素时计算昂贵因此用 RNN 的内部状态表达新像素对先前像素的依赖形成把预测出的像素反馈回网络、再生成下一像素的顺序生成过程。架构Row LSTM 与 Diagonal BiLSTM二维 LSTM 的两个构成组件——Row LSTM 与 Diagonal BiLSTM——各自以不同的扫描方式捕捉空间上下文。下图展示了这两种 LSTM 作用于 RGB 图像时的运作方式Row LSTM逐行单向扫描Row LSTM是一个单向层它从顶部到底部逐行处理图像使用一维卷积一次性为整行计算特征。如上图所示Row LSTM 为给定像素捕捉的是一个三角形上下文triangle-shaped context。一个 LSTM 层包含 input-to-state输入到状态与 recurrent state-to-state循环状态到状态两个组件二者共同决定 LSTM 核心内部的四个门。在 Row LSTM 中input-to-state 组件通过逐行的一维卷积在整个二维输入图上计算卷积输出是一个 $4h \times n \times n$ 的张量其中第一个维度表示输入图中每个位置对应的四个门向量$h$ 为输出特征图数量。使用前一隐藏状态 $h_{i-1}$ 与前一细胞状态 $c_{i-1}$state-to-state 组件的计算如下$$[o_i, f_i, i_i, g_i] \sigma(\textbf{K}^{ss} \circledast h_{i-1} \textbf{K}^{is} \circledast \textbf{x}_{i})$$$$c_i f_i \odot c_{i-1} i_i \odot g_i$$$$h_i o_i \odot \tanh(c_{i})$$其中$\textbf{x}_i$ 是输入表示的第 $i$ 行$\textbf{K}^{ss}$、$\textbf{K}^{is}$ 分别是 state-to-state 与 input-to-state 的卷积核权重$g_i, o_i, f_i, i_i$ 分别对应内容门content、输出门output、遗忘门forget与输入门input$\sigma$ 表示激活函数内容门使用 tanh 激活其余门使用 sigmoid 激活$\circledast$ 表示卷积操作$\odot$ 表示逐元素相乘。Diagonal BiLSTM沿对角线的双向扫描Diagonal BiLSTM通过沿图像的两条对角线扫描能够捕捉整幅图像的上下文。计算分为两步input-to-state 组件对每个方向而言它就是一个 $1 \times 1$ 卷积 $K^{is}$同样生成 $4h \times n \times n$ 的张量这里维度同样表示输入图中每个位置的四个门向量$h$ 为输出特征图数量state-to-state 组件使用核大小为 $2 \times 1$ 的 $K^{ss}$ 计算。这一步接收前一隐藏状态与细胞状态结合 input-to-state 组件的贡献按上文 Row LSTM 的公式产生下一隐藏状态与细胞状态。上述过程对两个方向各重复一遍即双向 LSTM从而使模型既能利用左上方上下文也能利用右下方上下文形成对全图上下文的覆盖。性能评估ImageNet 与 CIFAR-10 上的 NLLPixelRNN 最初提出时在计算机视觉领域最具代表性的数据集——ImageNet 与 CIFAR-10——上进行了评测部分结果达到了当时的最优水平state-of-the-art数据集图像尺寸NLL 分数ImageNet32×323.86ImageNet64×643.63CIFAR-1032×323.00其中 CIFAR-10 上的 NLL 3.00 在论文发表时即为当时最优。这里的 NLLnegative log-likelihood负对数似然越低说明模型对训练数据分布拟合得越好这也是显式密度模型最自然的评测指标——它能直接评估模型学到的 $p_{model}(x)$ 对 $p_{data}(x)$ 的逼近程度这一点在 generative-modeling.md 的评测讨论中亦有体现。对比视角PixelRNN 与 PixelCNN同仓库的 generative-models.md 给出了 PixelRNN 的延伸阅读视角可帮助我们更完整地理解 PixelRNN 的取舍像素顺序与计算效率链式分解中先前像素previous的排序选择会影响训练与推理的计算效率。PixelRNN 采用对角线式的像素顺序从左上角出发向右下推进这带来了一定程度的并行化使训练与生成稍快。PixelRNN 的固有短板即便采用对角顺序生成过程本质上仍是顺序的因此训练昂贵。为此同一篇论文提出PixelCNN用掩码卷积masked convolution在上下文区域内建模像素依赖其感受野是以中心像素为中心的不完整正方形保证每个像素只依赖区域内已生成的像素。论文表明堆叠足够多的掩码卷积层后有效感受野与 PixelRNN 直接建模全部先前像素的效果相同。训练快、生成慢由于上下文区域的值在训练图像中已知PixelCNN 借助卷积的并行化在训练上更快但生成仍是固有的顺序过程——例如对一张 $32 \times 32$ 的图像模型需要做1024 次前向传播才能生成一张完整图像。这解释了后续工作如基于流的深度生成模型努力在训练与生成效率间取得更好平衡的动因。综合来看PixelRNN / PixelCNN 这类模型显式计算似然、相对易于优化主要缺点即耗时的顺序生成过程。小结PixelRNN 以链式法则为数学骨架把图像联合似然分解为逐像素的条件分布之积再用二维 LSTMRow LSTM Diagonal BiLSTM对每个像素的依赖关系进行可处理建模并用 softmax 多项分布输出离散像素值。它在 ImageNet 与 CIFAR-10 上取得的 NLL 结果3.86 / 3.63 / 3.00在当时达到最优水平验证了显式密度估计路线的可行性。其顺序生成的效率瓶颈则直接催生了 PixelCNN 的掩码卷积并行化方案——两者的演进脉络在 cs231n 课程笔记仓库的 pixelrnn.md、generative-modeling.md 与 generative-models.md 中均有完整记录。参考资料CS231n Lecture 11 Generative Modeling见仓库 generative-modeling.mdPixel Recurrent Neural Networksvan den Oord et al.2016仓库内相关实现与配图pixelrnn.md、generative-models.md、assets/pixelrnn.png、assets/Screen Shot 2021-06-15 at 9.41.08 AM.png赞分享教程文档深度学习计算机视觉【免费下载链接】cs231n.github.ioPublic facing notes page项目地址https://gitcode.com/gh_mirrors/cs/cs231n.github.io点击查看免费下载相关推荐如何快速搭建AI股票分析平台多智能体金融分析框架终极指南如何快速搭建AI股票分析平台多智能体金融分析框架终极指南 还在为复杂的金融分析系统而困惑吗想要利用AI技术进行专业股票研究却无从下手TradingAgen人工智能大模型AI Agent多智能体金融科技后端前端5分钟免费上手Akagi你的雀魂AI助手完整使用指南5分钟免费上手Akagi你的雀魂AI助手完整使用指南 你是否想在雀魂对局中拥有专业AI教练实时分析牌局并提供精准决策建议Akagi麻将AI助手正是为你量身桌面应用人工智能详解Jukebox音乐生成模型从架构原理到实战应用详解Jukebox音乐生成模型从架构原理到实战应用 引言 在人工智能音乐创作领域Jukebox模型无疑是一项突破性的成果。该模型由Prafulla Dhar人工智能深度学习大模型音视频上一篇ViGEmBus终极指南5分钟解决Windows游戏手柄兼容性问题下一篇WindowsCleaner终极指南如何快速解决C盘爆红问题并让Windows系统重获新生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考