地方农产品网站建设,资讯型电商网站优缺点,网站建设大赛海报,福建seo顾问【论文极速读】VQ-VAE#xff1a;一种稀疏表征学习方法 FesianXu 20221208 at Baidu Search Team 前言
最近有需求对特征进行稀疏编码#xff0c;看到一篇论文VQ-VAE#xff0c;简单进行笔记下。如有谬误请联系指出#xff0c;本文遵循 CC 4.0 BY-SA 版权协议#xff0c;…【论文极速读】VQ-VAE一种稀疏表征学习方法 FesianXu 20221208 at Baidu Search Team 前言
最近有需求对特征进行稀疏编码看到一篇论文VQ-VAE简单进行笔记下。如有谬误请联系指出本文遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明并且联系笔者谢谢 。
∇\nabla∇ 联系方式
e-mail: FesianXugmail.com
github: https://github.com/FesianXu 图片视频等视觉模态有充足的冗余信息可以通过稀疏编码进行编码以减少储存消耗。Vector-Quantised Variational AutoEncoder (VQ-VAE) 就是进行图片稀疏编码的工作[1]。 如Fig 1. 所示VQ-VAE有三大部分组成EncoderDecoder和储存稀疏编码的Embedding Space字典。其中的Embedding space字典的形状为E∈RK×D\mathcal{E} \in \mathbb{R}^{K \times D}E∈RK×D其中的KKK为字典的大小DDD为字典的特征维度字典中每一个样本ei∈RD,i∈1,⋯,Ke_{i} \in \mathbb{R}^{D}, i\in 1,\cdots,Kei∈RD,i∈1,⋯,K表示了第iii个稀疏编码的特征表达。 Fig 1. VQ-VAE的框架示意。 单从稀疏编码的角度看如Fig 2.所示整个工作中将会考虑将中间特征图的H×W×DH \times W \times DH×W×D通过用离散的稀疏编码表示形状为H×W×1H \times W \times 1H×W×1进行稀疏编码的方式可以通过简单的最近邻方法得到如公式(1-1)所示 q(zk∣x){1forkargminj∣∣ze(x)−ej∣∣20otherwise(1-1)q(zk|x) \begin{cases} 1 for \ k\arg\min_{j} ||z_e(x)-e_j||_{2} \\ 0 otherwise \end{cases} \tag{1-1} q(zk∣x){10for kargminj∣∣ze(x)−ej∣∣2otherwise(1-1) 其中的xxx为原始的图片输入ze(x)z_e(x)ze(x)表示图片输入经过编码器后得到的feature map而q(z∣x)q(z|x)q(z∣x)即是进行稀疏编码后的结果。通过式子(1-2)可以将稀疏编码后的结果恢复为feature map当然这个过程是有损的只保留最为重要的特征信息。整个过程可见Fig 2.示意图应该比较容易理解。 zq(x)ek,wherekargminj∣∣ze(x)−ej∣∣2(1-2)z_q(x) e_k, where \ k\arg\min_j ||z_e(x)-e_j||_2 \tag{1-2} zq(x)ek,where kargjmin∣∣ze(x)−ej∣∣2(1-2) Fig 2. 通过最近邻方法在字典里面查找稀疏令牌作为稀疏编码的结果然后通过反查字典可以对feature map进行恢复。 整个框架中有若干参数需要学习分别是encoderdecoder网络参数和Embedding space字典的参数。然而稀疏编码的过程由于出现了最近邻方法这个过程显然是无法传递梯度的为了实现编码器的更新可以考虑将解码器的梯度直接拷贝到编码器中。假设对于编码后恢复的zq(x)z_q(x)zq(x)而言其每个元素表示为Di,j,kD_{i,j,k}Di,j,k那么对于其中某个元素的梯度表示为∂L∂Di,j,k\dfrac{\partial \mathcal{L}}{\partial D_{i,j,k}}∂Di,j,k∂L同理对于编码后的ze(x)z_e(x)ze(x)而言同样有∂L∂Ei,j,k\dfrac{\partial \mathcal{L}}{\partial E_{i,j,k}}∂Ei,j,k∂L令∂L∂Ei,j,k∂L∂Di,j,k\dfrac{\partial \mathcal{L}}{\partial E_{i,j,k}} \dfrac{\partial \mathcal{L}}{\partial D_{i,j,k}}∂Ei,j,k∂L∂Di,j,k∂L。那么对于编码器的梯度就可以表示为∂L∂WE∂Ei,j,k∂WE∂L∂Ei,j,k\dfrac{\partial \mathcal{L}}{\partial W_E} \dfrac{\partial E_{i,j,k}}{\partial W_E} \dfrac{\partial \mathcal{L}}{\partial E_{i,j,k}}∂WE∂L∂WE∂Ei,j,k∂Ei,j,k∂L。 Fig 3. 通过梯度拷贝将decoder的梯度拷贝到encoder中。 最后的损失函数如(1-3)所示其中的sg(⋅)sg(\cdot)sg(⋅)为停止梯度函数表示该函数无梯度传导。decoder的参数通过第一项损失项进行更新这部分损失可通过MSE损失L(x,x^)\mathcal{L}(\mathbf{x}, \hat{\mathbf{x}})L(x,x^)建模称之为重建损失。encoder参数通过第一项和第三项损失进行更新其中第一项是重建损失第三项是为了encoder编码产出和embedding space进行对齐而设计的由于此时通过sg(⋅)sg(\cdot)sg(⋅)函数停止了梯度因此此时E\mathcal{E}E的参数不会得到更新。Embedding space的参数通过第二项损失项进行更新通过将encoder编码结果进行停止梯度我们只对E\mathcal{E}E进行参数更新。
Llog(p(x∣zq(x)))∣∣sg[ze(x)]−E∣∣22β∣∣ze(x)−sg[E]∣∣22(1-3)\mathcal{L} \log(p(x|z_q(x))) ||sg[z_e(x)]-\mathcal{E}||^2_2 \beta ||z_e(x)-sg[\mathcal{E}]||^2_2 \tag{1-3} Llog(p(x∣zq(x)))∣∣sg[ze(x)]−E∣∣22β∣∣ze(x)−sg[E]∣∣22(1-3)
作者在原论文中贴了不少图片稀疏编码的结果如Fig 4.所示将128×128×3128 \times 128 \times 3128×128×3的原始图片稀疏编码到32×32×132 \times 32 \times 132×32×1K512信息压缩比为128×128×3×8/(32×32×9)42.6128 \times 128 \times 3 \times 8/ (32 \times 32 \times 9)42.6128×128×3×8/(32×32×9)42.6。从效果上看除了在高频细节比如毛发等上有些模糊外其他图片信息都得到了较好的保留。 Fig 4. 将原始图片稀疏编码后再解码出来的图片与原始图片的对比可以发现对于高频信号毛发细节等有些损失。 Reference
[1]. Van Den Oord, Aaron, and Oriol Vinyals. “Neural discrete representation learning.” Advances in neural information processing systems 30 (2017).