Transformer模型在处理序列数据时,引入了一种“集合处理”架构,与传统的序列处理架构如RNN不同,它不是基于序列的顺序进行处理,而是可以同时处理整个序列,这得益于其自注意力机制(Self-Attention):这种机制使得模型能够捕捉序列中任意两个位置之间的依赖关系,无论这些位置之间的距离有多远。
在Transformer中,为了引入序列的顺序信息,通常会在输入的token嵌入中加入位置编码(Positional Encoding)。这个位置编码可以是基于正弦和余弦函数的固定模式,也可以是可学习的参数。这样,模型就能够利用这些位置信息来理解序列中各个元素的相对或绝对位置。
对于非序列化的数据,如2D网格或3D立方体,Transformer同样可以处理。这就需要在位置编码上进行一些创新。例如,可以在token嵌入中加入对应于其在2D网格或3D空间中位置的位置编码。
- 对于2D网格,可以通过将每个网格点的坐标(i,j)嵌入并进行concatenation来实现2D位置嵌入,从而使Transformer能够处理这些非序列化数据。
- 对于3D三维,可以采用类似的方法,通过嵌入三维坐标来实现。
2D网格
现在,您有了一个2D位置嵌入,使您的Transformer能够原生地处理令牌网格!这对ARC-AGI很有用,因为ARC-AGI网格当然是离散令牌的2D网格,而不是序列:
- 首先,如果有足够多的例子,你实际上可以训练一个序列 Transformer 来解决单个 ARC 任务,这表明解决程序的标记化和可表示性并不是问题。
- 其次,你完全不必使用序列! 你可以使用二维位置嵌入,现在你有了一个原生网格感知Transformer。
3D三维
此外,Transformer模型在3D视觉任务中的应用也越来越广泛,包括3D目标检测、分割、点云补全等任务。这些应用通常涉及到将3D数据转换为Transformer能够处理的格式,例如将点云数据转换为一系列向量,然后通过自注意力机制来捕捉点之间的复杂关系。
总的来说,Transformer模型的灵活性和强大的表示能力使其不仅在自然语言处理领域,在3D视觉和处理非序列化数据方面也展现出巨大的潜力。通过合理设计位置编码,Transformer可以被应用于各种不同的数据结构和任务中。
banq注:
Set集合是一种依赖于上下文Context的聚合,这其实来自于DDD领域驱动设计的核心方法,也就是说,Transformer类似人类的领域驱动设计方法,人类是使用从上下文中抽象出聚合模型,然后放入计算机处理,而set集合处理器是直接处理。
上下文是一种离散的数据边界:无以为用,有以为利,这里的“利”是利害、利益,代指一种有形状、有边界的集合,也就是说,想一个东西有用,必须置于上下文中,这其实已经有很早的神经符号了。
世界上任何东西,只要能置于上下文数据集合中,就可以使用Transformer处理,这个成就远远高于诺贝尔奖辛顿的反向传播和波兹曼机,只是不容易被人们理解而已。