ByteNet模型分析

前言背景

在学习transformer时,文中出现的各种特殊结构的行业黑话使我大受打击,所以从头开始学习,势必要弄懂行业黑话,打不过就加入他们。为了了解Encoder-Decoder结构,所以选择这篇文章ByteNet进行分析。
介绍Transformer的源论文:Arxiv:Attention Is All You Need
Transformer论文中提供的源代码:Github:Tensor2Tensor

ByteNet原文

ByteNet的设计者是来自Google DeepMind(London UK)的研究人员。这是一篇基于CNN的Encoder-Decoder架构的文章。原文为:Arxiv:Neural Machine Translation in Linear Time

1. Introduction详解

Introduction部分可以分为:1.任务综述;2.模型综述;3.结构综述;4.本文内容简介。
主要详解第四部分,从想象的角度一步一步分析。
ByteNet方法族的特征有两点:1.解码器压在编码器上;2.动态展开技术。所以整个结构应该长下面这个样子。
结构图
具体到ByteNet就是,ByteNet使用固定深度的一维卷积神经网络做编码器和解码器,并且使用了参数膨胀技术快速增加感知域,同时解码器中的卷积层是加掩码的。具体细节

2. Translation Model的要求

翻译可以用条件概率模型来看。假设源字符串为s,翻译后的字符串为t。
那么可以把它看成条件概率: P ( t ∣ s ) P(t|s) P(ts)
对于给定的s,我们选择使得 P ( t ∣ s ) P(t|s) P(ts)最大的那个t作为s的翻译。为了计算的方便,对该公式进行分解:
P ( t ∣ s ) = P ( t 0 , t 1 , ⋯   , t n ∣ s ) = P ( t 0 ∣ s ) × P ( t 1 ∣ s , t 0 ) × ⋯ × P ( t n ∣ s , t 0 , t 1 , t 2 , t 3 , ⋯   , t n − 1 ) = P ( t 0 ∣ s ) × P ( t 1 ∣ s , t 0 ) × ⋯ × P ( t n ∣ s , t ( k ∣ k < n , k ≥ 0 , k ∈ Z ) ) = ∏ i = 0 n P ( t i ∣ s , t ( k ∣ k < i , k ≥ 0 , k ∈ Z ) ) \begin{split} P(t|s)=&P(t_0,t_1,\cdots,t_n|s) \\=&P(t_0|s)\times P(t_1|s,t_0)\times \cdots \times P(t_n|s,t_0,t_1,t_2,t_3,\cdots,t_{n-1}) \\=&P(t_0|s)\times P(t_1|s,t_0)\times \cdots \times P(t_n|s,t_{(k|k<n,k\geq0,k\in Z )}) \\=&\prod_{i=0}^{n}P(t_i|s,t_{(k|k<i,k\geq 0,k\in Z )}) \end{split} P(ts)====P(t0,t1,,tns)P(t0s)×P(t1s,t0)××P(tns,t0,t1,t2,t3,,tn1)P(t0s)×P(t1s,t0)××P(tns,t(kk<n,k0,kZ))i=0nP(tis,t(kk<i,k0,kZ))
模型结构如下所示:
请添加图片描述

2.1 模型的三点要求

  1. 模型运行时间应该与输入输出字符串的长度成正比。
  2. 编码器的输出的长度应该与输入的长度成正比。也就是(resolution perserving)可以理解为尺寸相同。
  3. 前向信号和反向信号传播给所有参数的路径应该尽可能短。

其中专业黑话有:
long-range dependicies:计算多个乘积项的结果。

3. ByteNet结构

3.2 动态展开

因为输入序列s与翻译序列t长度很可能是不一致的,但是一般来说是正相关的,所以为了信息的保存,编码器要尽可能地保留信息,所以设置编码器的输出信息表示的长度为 ∣ t ^ ∣ |\hat{t}| t^。关键在于这句话:
关键
论文中设计的编码器输出信息的长度与输入序列的长度之间的关系为:
∣ t ^ ∣ = a ∣ s ∣ + b |\hat{t}|=a|s|+b t^=as+b
动态展开就是在编码器得到的信息基础上,根据条件概率分布以自回归: y t = f ( y k < t , x ) y_t=f(y_{k<t},x) yt=f(yk<t,x)的方式逐步生成目标序列。目标序列长度可以与表示序列的长度不同,以最终结束标志为准。这个过程得到的字符串可能是不定长的所以叫动态展开。
在动态展开过程中解码器每一步生成的字符 t i t_i ti都是基于编码器的信息表示和之前的生成的 t k < i t_{k<i} tk<i来生成的。也就是服从上面的条件概率公式。
动态展开示例如下

3.3 embedding tensor(嵌入张量)

3.4 掩码一维卷积

参考文献:Arxiv:Pixel Recurrent Neural Networks
解码器使用一维加掩码的卷积层对输入嵌入张量进行分析。
掩码核尺寸大小为k。掩码可以用下式来表示:
掩码

通过这个掩码可以确保每次的预测不会用到之后的信息。

3.5 膨胀

本部分参考文献:Arxiv:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
用膨胀增加感知域。本论文借研究图像语义分割(即像素点分类)问题介绍了带有条件随机场的密集卷积神经网络,提出了“DeepLab”系统。
本论文主要参考文献为:

  1. Arxiv:Untangling Local and Global Deformations in Deep Convolutional Networks for Image Classification and Sliding Window Detection
  2. Arxiv:Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials

第一个参考文献是该模型的第一部分:带孔的atrous算法
第二个参考文献是该模型的第二部分:全连接条件随机场
本文中模型结构为:

模型结构
语义分割的常见系统:
语义分割系统结构

带孔的atrous算法

稀疏采样为:
稀疏采样
通过对核的尺寸和步幅(stride)的控制可以控制输出的大小。
通过分析不难发现:假设源序列长度为n,output_stride(os)=1。采样后序列长度为m。m、n与kernel_size(ks)、input_stride(is)之间的关系为:
m = n − ( k s − 1 ) × i s m=n-(ks-1)\times{is} m=n(ks1)×is
对于上图我们有: 3 = 7 − 2 × 2 = 7 − 4 3=7-2\times2=7-4 3=72×2=74,也就是通过控制步幅可以控制采样大小。
所以如果进行t轮采样那么尺寸大小会变为: n − t × ( k s − 1 ) × i s n-t\times{(ks-1)\times{is}} nt×(ks1)×is

3.1 EFFICIENT DENSE SLIDING WINDOW FEATURE EXTRACTION WITH THE HOLE ALGORITHM

好像是这样的:
模型结构
左边为原始VGG-16结构,池化层后面有采样过程,丢失了大量信息,这样导致最后步幅为32。但是通过两个池化层不采样,大大保留了信息量,然后让卷积层和全连接层采样,实现步幅为8的信息提取。

3.2 CONTROLLING THE RECEPTIVE FIELD SIZE AND ACCELERATING DENSE COMPUTATION WITH CONVOLUTIONAL NETS

感知野与filter的尺寸有什么关系?看原文好像是说改了filter会影响感知野。
感知野的计算公式什么?
通过计算可以发现: 224 ∗ 224 = 0.25 ∗ 7 ∗ 7 ∗ 4096 224*224=0.25*7*7*4096 224224=0.25774096, 128 ∗ 128 = 0.25 ∗ 4 ∗ 4 ∗ 4096 128*128=0.25*4*4*4096 128128=0.25444096
换句话说感知野 n ∗ n n*n nn与全连接层所得到的尺寸大小 m ∗ m m*m mm之间的关系为:
n ∗ n = m ∗ m ∗ 4096 ∗ 0.25 n*n=m*m*4096*0.25 nn=mm40960.25
但是好奇怪,为什么是0.25?同时对第二个内容又不存在这种关系。

VGG-16网络的感知野尺寸是 224 × 224 224\times224 224×224,包含零前缀部分。在将网络变为卷积网络以后,感知野尺寸为 404 × 404 404\times404 404×404
还是借助于前面画的结构图,左边的源VGG-16的感知野尺寸为 224 × 224 224\times224 224×224,后面这个感知野尺寸为: 404 × 404 404\times404 404×404

在网络变为完全卷积层时,第一个全连接层有4096个filter,每个尺寸为 7 × 7 7\times7 7×7。并成为计算瓶颈。块越大计算越慢。
这个尺寸与感知野之间的关系可能还要看论文才能理解。但是论文中此节并没有列出参考文献。所以我目前构思不出来。

结论

所以结论就是通过采样算法实现了感知野的控制。。。。。,也就是通过采样实现膨胀?

3.6 残差模块

参考文献:Arxiv:Identity Mappings in Deep Residual Networks
残差模块是为了解决梯度消失问题。从数学公式上来说就是: y = f ( x ) + x y=f(x)+x y=f(x)+x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值