Beam Search、GREEDY DECODER、SAMPLING DECODER等解码器工作原理可视化

简介: Beam Search、GREEDY DECODER、SAMPLING DECODER等解码器工作原理可视化

图像标注的任务让我们可以构建和训练一个为任何给定图像生成字幕的神经网络。在设计时使用了解码器的来完成文字的生成。当我们描述了每个解码器的工作原理时,我发现当它们被可视化时,更容易理解它们。

640.png

图像标注任务流程图

与翻译模型类似,我们的图像字幕模型通过输入图像张量和特殊的句首标记(即<start>)来启动字幕生成过程。这个模型生成了我们单词的概率分布(实际上是logits)。橙色方框显示解码算法的选择,帮助我们选择使用哪个单词。然后,选择的单词和图像再次传递给模型,直到我们满足停止条件,即我们获得特殊的句子结束标记(即<STOP>)作为下一个单词,或者我们超过了预先定义的步骤数。一个步骤是将图像和单词的张量传递给字幕生成器模型,并使用解码算法选择单词。

在这篇文章中,我们关注的是橙色的盒子。帮助我们从整个词汇表的概率分布中选择单词的解码算法。

GREEDY DECODER(贪心解码器)

这是最直接的方法,我们选择的词有最高的可能性(贪婪的行动)。虽然它可以生成单词序列,但与其他解码算法相比,输出的质量往往较低。

640.gif

所以我们选择了前60个单词来可视化。另外,它导致标签在每个时间步上切换。

BEAM SEARCH(定向搜索解码器)

在贪婪解码器中,我们在每一步都考虑一个字。如果我们可以在每一步跟踪多个单词并使用它们来生成多个假设会怎样呢?

这正是定向搜索算法所做的,我们定义了每一步需要保留多少个单词(k)。该算法跟踪k个单词及其得分,每个单词都是从之前得分最高的k个单词中获得种子。分数是由到目前为止生成的假设的概率的和计算出来的。

640.png

其中t为步长,x为输入图像,y为生成的单词。停止条件与贪心搜索相同,贪心搜索假设在遇到<stop>或超出预先定义的最大步数时停止。</stop>最终的结果是一个单词树多个假设),然后选择得分最高的一个作为最终的解。

640.png

单词树结构,橙色表示最终的解

当我们使用k=1时,它的工作方式和贪婪解码器算法一样,同样会产生低质量的输出。当我们增加k时,算法开始产生更好的质量的输出,尽管在更大的k时,输出变得非常短。另外,注意增加k是计算密集型的,因为我们需要在每一步跟踪k个单词。

例如一下图片

640.jpg

使用训练好的模型后生成文字的过程

640.gif

开始和停止单词以绿色和红色突出显示,灰色文本显示该步骤或时间点的序列得分。

PURE SAMPLING DECODER(纯采样解码器)

纯采样译码器与贪婪搜索译码器非常相似,但不是从概率最高的单词中抽取,而是从整个词汇表的概率分布中随机抽取单词。纯抽样和Top-K抽样(下面)等抽样方法提供了更好的多样性,通常被认为更能生成自然语言。

640.jpg

上图的文字描述生成过程

640.gif

您可能已经注意到解码器没有在“street<stop>”处停止,这是因为我们的stop条件需要精确的“<stop>”令牌。</stop></stop>

TOP-K SAMPLING DECODER(TOP-K抽样解码器)

该方法类似于纯采样译码器,但不是使用整个概率分布,而是只对top-k个可能单词进行采样。如果我们用k=1,它和贪婪搜索是一样的如果我们用词汇表的总长度作为k,那么它可以作为纯采样解码器。下面的可视化使用与纯采样示例相同的输入图像。

640.gif

结论

这就是我在关于神经图像标题生成的文章中使用的各种解码算法的可视化。下面是最后一个示例,显示了四个解码器对同一输入图像的输出。

640.png

虽然这里生成的字幕的整体质量不如基于注意力的模式好,但我们可以看到不同的解码器对于结果的影响。

目录
相关文章
|
机器学习/深度学习 PyTorch Go
YOLOv5的Tricks | 【Trick4】参数重结构化(融合Conv+BatchNorm2d)
这篇文章是想要记录yolov5在模型搭建过程中的一个融合模块,就是把卷积与批归一化的参数进行融合,想卷积带有批归一化的性质,使得推理过程中可以加快模型推理速度,简化整个模型结构,实现训练与推理两个阶段的解耦。
780 0
YOLOv5的Tricks | 【Trick4】参数重结构化(融合Conv+BatchNorm2d)
|
1月前
|
机器学习/深度学习 网络架构 计算机视觉
YOLOv5改进有效涨点系列->适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention)
YOLOv5改进有效涨点系列->适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention)
178 0
|
10月前
|
存储 机器学习/深度学习 算法
语义检索系统排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练单塔模型
语义检索系统排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练单塔模型
语义检索系统排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练单塔模型
|
1月前
|
存储 缓存 分布式计算
You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构
YOCO是一种新的解码器-解码器架构,旨在解决大型语言模型推理时的内存限制问题。通过只缓存一次键值对,YOCO显著减少了GPU内存占用,与Transformer相比,内存使用降低了约L倍。模型由自解码器和交叉解码器组成,自解码器使用滑动窗口注意力,而交叉解码器利用全局KV缓存。实验表明,YOCO在保持竞争力的性能同时,提高了推理速度,尤其是在处理长序列时。此外,YOCO还减少了预填充时间,提升了吞吐量。
84 3
|
22天前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】ACmix(Mixed Self-Attention and Convolution) (论文笔记+引入代码)
YOLO目标检测专栏探讨了YOLO的改进,包括卷积和自注意力机制的创新结合。研究发现两者在计算上存在关联,卷积可分解为1×1卷积,自注意力也可视为1×1卷积的变形。由此提出ACmix模型,它整合两种范式,降低计算开销,同时提升图像识别和下游任务的性能。ACmix优化了移位操作,采用模块化设计,实现两种技术优势的高效融合。代码和预训练模型可在相关GitHub和MindSpore模型库找到。 yolov8中引入了ACmix模块,详细配置参见指定链接。
|
3天前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 ODConv(Omni-Dimensional Dynamic Convolution):全维度动态卷积
ODConv是一种增强型动态卷积方法,通过多维注意力机制在卷积的四个维度上学习互补注意力,提升轻量级CNN准确性和效率。与现有动态卷积不同,ODConv覆盖了空间、输入/输出通道和核数维度。在ImageNet和MS-COCO上,对MobileNetV2|ResNet等模型有显著性能提升,减少参数的同时超越传统方法。代码和论文链接可用。在YOLO系列中,ODConv改进了特征学习,优化了目标检测性能。
|
3天前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】MSFN(Multi-Scale Feed-Forward Network):多尺度前馈网络
**HCANet: 高光谱图像去噪新方法**\n混合卷积与注意力网络(Hybrid Convolutional and Attention Network)是针对HSI去噪的创新模型,结合CNN和Transformer,强化全局与局部特征。它使用卷积注意力融合模块捕获长距离依赖和局部光谱相关性,多尺度前馈网络提升多尺度信息聚合。代码可在[GitHub](https://github.com/summitgao/HCANet)获取。
|
1月前
|
机器学习/深度学习 网络架构 计算机视觉
YOLOv8改进有效涨点系列->适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention)
YOLOv8改进有效涨点系列->适合多种检测场景的BiFormer注意力机制(Bi-level Routing Attention)
254 0
|
7月前
|
机器学习/深度学习 自然语言处理 PyTorch
【文本摘要(3)】Pytorch之Seq2seq: attention
【文本摘要(3)】Pytorch之Seq2seq: attention
55 0
|
8月前
|
机器学习/深度学习 自然语言处理 文字识别
初步了解RNN, Seq2Seq, Attention注意力机制
初步了解RNN, Seq2Seq, Attention注意力机制
69 0
初步了解RNN, Seq2Seq, Attention注意力机制