回复
Tokenizer不存在了?Meta开源BLT算法!
分词化/tokenize 化,是模型理解自然语言的最小单元。但是一些问题,如多语言、错别字、计算开销等问题,基于Byte的分词更为流行。
Meta的这个工作开源Byte Latent Transformer(BLT)的方法。
BLT 的核心思想:
- 直接处理原始字节:与传统的基于词元的模型不同,BLT 直接使用构成文本的最小数字单位-字节进行处理。这从根本上消除了对分词的需求,避免了分词可能带来的误差和局限性。
- 动态 patching:这是 BLT 的关键创新。它根据文本的复杂度将字节组合成不同长度的“patch”(可以理解为小块)。对于简单的字节序列,BLT 会使用较大的 patch,从而节省计算资源;而对于复杂的区域,则使用较小的 patch,以提高精度。这种动态调整的方式使得 BLT 能够更有效地利用计算资源。
Patching(分块): 是BLT的核心,将原始字节分成更小的“块”进行处理,优化计算效率和上下文相关性。它比传统的分词更灵活。
几种常见分块方法:
- 固定步长分块:按固定大小分割字节,简单易用,但对复杂数据效果不佳。
- 空格分块:以空格为界分割,适合自然语言,但不适用于不使用空格的语言。
- 基于熵的分块:根据字节的不可预测性分割,更智能,能更好地处理复杂和噪声数据。
- BPE分词器和增量分块:类似BPE分词,但无需固定词汇表,更灵活。
BLT整体架构,先使用Local Encoder 对字节转换成patch,然后使用Latent Transformer进行语义层面的编码学习,最后使用Local Decoder解码出字节
Local Encoder,负责将原始字节数据动态分组为块:
- 基于熵的分组:根据数据复杂程度(熵值高低)分配计算资源,高熵区域分配更多资源。
- 哈希n-gram嵌入:将字节序列(n-gram)哈希成特征,捕捉字符级模式,尤其适用于噪声或多语言数据。
- 交叉注意力层:汇集字节信息到块表示,捕捉局部和全局上下文。
Latent Transformer,全局处理块表示,并根据每个块的复杂度动态调整计算量:
- 自适应计算分配:不同于传统Transformer平等对待所有token,潜在Transformer将计算力集中在复杂数据区域,例如化学公式或多语言短语比填充词需要更多计算。
- 全局上下文感知:使用块因果注意力机制处理块,同时保持序列的整体上下文,确保高信息密度的块对下游任务做出有意义的贡献。
Local Decoder 将经过Latent Transformer处理的块转换回字节序列:
- 字节级解码:保留BLT的字节级粒度,高保真地重建文本,适用于拼写校正或低资源语言处理等需要精度的任务。
- 交叉注意力优化:类似于编码器,解码器使用交叉注意力层优化输出,确保生成文本的连贯性和准确性。
在与 LLaMA 3 等领先模型进行评估时,BLT 在效率和准确性方面都表现出非常好的性能,MMLU,HellaSwag,Noisy and Real-World Inputs等相比llama3都获得了更好的结果。
通过摒弃分词并采用基于字节的建模方法,BLT 解决了目前长期存在的一些问题:
- 提供了跨语言和文字的一致性表现。
- 确保了在处理真实世界中混乱、嘈杂的数据时的鲁棒性。
- 显著降低计算成本,使得更大规模、更复杂的 NLP 应用成为可能。
已于2024-12-18 10:54:01修改
赞
收藏
回复
相关推荐