在大模型领域,如何将文本数据分解成合适的单元一直是重点研究对象。传统的分词方法,如Byte Pair Encoding等,会预先将文本分割成固定粒度的单元,然后构建一个静态的词汇表供模型使用。但这种方法存在诸多局限性,一旦分词完成,模型在后续处理中就只能局限于这些预设的单元,无法灵活地调整对数据的处理方式和预测范围;
另一方面,对于一些低资源语言或者具有特殊字符结构的文本,这种固定分词方式往往难以有效处理,限制了模型的泛化能力和应用范围。
为了解决这些难题,meta的研究人员开源了创新架构AU-Net,过引入一种自回归的 U-Net 架构,彻底改变了传统语言模型的分词和处理模式。AU-Net 能够直接从原始字节开始学习,动态地将字节组合成单词、词对,甚至多达四个单词的组合,形成一种多尺度的序列表示。
开源地址:https://github.com/facebookresearch/lingua/tree/main/apps/aunet
而扩张路径则负责将这些压缩后的高层次信息逐步还原,恢复到原始的序列长度,并且在这个过程中将高层次的语义信息融入到更细致的局部细节中,使得模型在不同层次上都能够捕捉到文本的重要特征。
收缩路径分为多个阶段,每个阶段都有其特定的功能和结构。在第一阶段,模型直接处理原始字节。这个阶段的维度设置为 512,包含 3 层。由于字节级别的序列是最长的,为了保证计算的可行性,模型在这个阶段会限制注意力机制的作用范围,使其仅在一定的窗口内进行操作。这样的设计既能够充分利用自注意力机制的优势,又能够避免因为序列过长而导致的计算负担过重的问题。
接下来是第二阶段,在这个阶段,模型会在单词边界处进行池化操作。池化操作是通过选择特定位置的向量来实现的,这些位置是由预先定义的分割函数确定的。分割函数会根据单词的起始位置来选取对应的向量,这些向量能够捕捉到单词之前的上下文信息。
然后模型将这些向量投影到下一个阶段的维度,即 2048 维度,并且这个阶段也包含 3 层。通过这种方式,模型能够将字节级别的信息抽象成单词级别的语义信息,为后续的高层次处理提供基础。
第三阶段的池化操作则是在每两个单词处进行。这个阶段的维度进一步增加到 3072,包含 18 层。在这个阶段,模型开始处理更大范围的语义信息,它不仅仅关注单个单词,而是将两个单词作为一个整体来进行处理。这种设计使得模型能够捕捉到单词之间的搭配关系和更复杂的语义结构,从而更好地理解文本的含义。
扩张路径的作用是将收缩路径中压缩后的高层次信息逐步还原,并且在这个过程中将高层次的语义信息与局部细节信息进行融合。在扩张路径中,模型会采用一种称为多线性上采样的策略来进行上采样操作。
模型会将每个粗向量复制多次,以匹配下一个阶段的长度,并且为这些复制的向量应用不同的位置特定线性变换。这种策略使得每个位置的向量都能够根据其在序列中的相对位置进行调整,从而更好地融合高层次的信息和局部细节。
例如,当从每两个单词的表示恢复到单词级别的表示时,模型会为每个单词位置生成一个独特的向量。这些向量不仅包含了来自高层次的语义信息,还能够根据单词的具体位置进行适当的调整,以更好地捕捉单词级别的细节特征。通过这种方式,模型能够逐步恢复序列的长度,并且在这个过程中将高层次的语义信息有效地融入到局部细节中,从而生成更加准确和自然的文本。
在扩张路径中,模型还会利用跳跃连接来传递信息。跳跃连接的作用是将收缩路径中提取到的细节信息直接传递到扩张路径中的相应阶段,从而保证在还原过程中不会丢失重要的局部细节。这些跳跃连接的存在使得模型在不同层次上都能够同时获取到高层次的语义信息和局部细节信息,进一步提高了模型的生成能力和预测准确性。
在推理阶段,AU-Net 采用自回归的生成机制。字节级别的阶段会在每一步都保持活跃,而更深层次的阶段则根据池化模式以较低的频率激活。这种自回归的生成方式不仅保证了生成文本的连贯性和准确性,还提高了推理效率。
自回归生成机制的优势在于它能够确保模型在每一步生成过程中都能够充分考虑到前面已经生成的内容以及深层次的语义信息。通过这种方式,模型能够生成更加自然和准确的文本,避免了可能出现的语义不连贯或者语法错误等问题。同时,由于更深层次的阶段不是在每一步都激活,这大大减少了计算量,提高了推理的速度,使得 AU-Net 在实际应用中更加高效和实用。