大模型登场:切哪儿?
大模型登场:切哪儿?
Transformer带着“自注意力机制”上场,告诉大家:切哪儿不那么关键了!单个汉字行,词典分词也行,甚至脑洞大到把汉字拆成像素点——只要算力扛得住,随你怎么玩儿。但更牛的还在后头:效率最高的切法压根儿不纠结逻辑,也不盯着语义,而是直接祭出普适的数据驱动的“信息压缩”大法。
啥叫信息压缩?简单说,就是把语言当成一串数据,用最经济的方式“打包”,让信息量最大、冗余最少。比如,常见的词组“长江大桥”老一块儿出现,那就打包成一个单位;“南京市”也常连着,那就别拆开。而像“的”“了”这种高频小零碎,就单拎出来。这样切,既不费脑子,也不挑语言,中文、英文、日文都能用。Transformer再一挥“注意力魔法棒”,每个元素都能跟全篇其他元素充分勾搭,篇章上下文信息一点不漏,包括发生远距离关系的元素。模型就像个超级聪明的厨师,不管你把食材切多细、多粗,它都能自适应地炒出一盘好菜。只要模型够大、层数够深,最后端上桌的语义味道都差不多。无论系统选择了切成“南京/市长/江大桥”还是“南京市/长江大桥”?别慌,模型最终自己会搞明白到底指的是人、还是桥。
其实大模型像BERT用的WordPiece、GPT玩的BPE(Byte Pair Encoding),都是信息压缩法。这些方法不问“这词啥意思”,只看数据中“哪些组合出现多、切开浪费少”,然后一刀下去,干净利落。结果呢?不管句子多怪,模型都能自适应调整,语义照样抓得准。
数据驱动的切法最经济
数据驱动的切法最经济
拿最流行的GPT来说。GPT(Generative Pre-trained Transformer)是OpenAI搞出来的,初代在2018年,后面GPT-2、GPT-3一路迭代,都用的是BPE通用切词法。BPE本来是个压缩算法,1994年Philip Gage提出,后来被GPT拿来分词。GPT用的是“byte-level BPE”,直接把文本转成UTF-8字节流(在 UTF-8 编码中,一个汉字通常由 3 个字节 表示,例如:“你” 的 UTF-8 编码是 e4 bd a0,占 3 个字节),再按频率合并字节对。这样有个好处:基础词汇表只有256个字节(涵盖所有可能的UTF-8字符),然后靠频率合并子字符串,词汇表可以视数据规模扩展到10万到百万。比如“人工智能”,如果语料里“人工智能”整体出现频率很高,可能整个是个token;如果“人工”和“智能”分开更常见,就拆成“人工”和“智能”。再比如“大数据”,可能直接是“大数据”,也可能切成“大”和“数据”(取决于语料统计)。词表固定以后,切词就是一个机械的最大匹配(maximum match)查词典的操作,与传统NLP中最简单的分词法一样。
那問題來了:这种简单粗暴的tokenizer 是不是會切錯?答案其實是——會,但不怕。為什麼?因為:
一、tokenizer 不需要基于語義,分出的词也不必是意义完整的语素,它的任務只是把文字序列分解为token序列。
二、真正理解語境和篇章的是後面的 Transformer 模型,尤其是其中的自注意力(self-attention)机制,它负责一步步融合上下文窗口中所有相关tokens 之间的相互影响和关系,包括远距离依赖关系。我们知道,只有篇章才能真正消解歧义,而 self-attention 就是解碼歧義的大杀器。换句话说,模型通过注意力机制透過上下文窗口中相关的「左右文」,把切分错了的序列重新「黏合」成語義上的整體,反映在每个token的内部向量表示的不断更新上。這種「上下文重建語義」的深度理解能力,是傳統 NLP无法企及的,因為以前的句法语义分析建立在固定的分词基础之上——一旦切錯就难以挽回。而現在是「先切碎、再讓模型自己組裝」,語義成了 self-attention 經過訓練後自然學出的關係結構。
结语:注意力魔法的“降维打击”
结语:注意力魔法的“降维打击”
大模型这一波操作,把中文分词的“边界歧义”难题踩在脚下,告诉我们:语言这玩意儿,核心在上下文,边界只是个铺垫。自注意力机制就像个魔法棒,轻轻一挥,不管你是切得细如发丝,还是粗如大饼,模型都能笑眯眯地说:“没事儿,我自己会调整。” 效率最好的分词法也不是基于逻辑或语义,而是以信息压缩为基础的通用切分,适用于包括中文在内的各种语言。
今日责编:甜瓜返回搜狐,查看更多