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修改
贊
收藏
回復
分享
微博
QQ
微信
舉報

回復
相關推薦