专栏名称: 数据派THU
本订阅号是“THU数据派”的姊妹账号,致力于传播大数据价值、培养数据思维。
目录
相关文章推荐
软件定义世界(SDX)  ·  deepseek你真的会用吗?DeepSee ... ·  昨天  
数据派THU  ·  DeepSeek ... ·  2 天前  
玉树芝兰  ·  Scisapce 的深度文献回顾(Deep ... ·  昨天  
大数据文摘  ·  重磅新书 | ... ·  2 天前  
CDA数据分析师  ·  【干货】5分钟学会数据可视化:使用Pyech ... ·  2 天前  
51好读  ›  专栏  ›  数据派THU

科普之旅 | 解密子词模型:让机器更好地理解人类语言的秘密

数据派THU  · 公众号  · 大数据  · 2025-02-25 17:21

正文

图片

作者:胡赟豪

本文约2000字,建议阅读5分钟
本文将探讨解密子词模型。


导读


在这个信息爆炸的时代,你是否曾幻想过与机器流畅交谈,或是让AI助你笔下生花,创作出惊艳的文章?这一切,都离不开大语言模型的神奇魔力。今天,让我们一起揭开这层神秘的面纱,走进大语言模型的科普奇幻之旅!







图片

一、为什么需要子词模型

通过大语言模型,人们只需要输入自然语言的指令,就能够让模型完成语言生成、翻译、文本分类等等复杂的任务。要做到这一切,首先我们需要将自然语言转化成模型能够处理的数据格式(如向量),让模型“听懂”之后,才能够完成后续的模型计算过程。

将自然语言中的单词映射到 模型易于处理的向量空间的过程,称为词嵌入(Word Embedding)。怎样才能完成这一步呢?如果我们将单词视作离散变量,就可以使用类似One-Hot的方法,让每个单词对应一个向量,第x个单词对应的向量中第x个值置为1,其他值置为0. 这样一来我们可以得到D个D维的向量,其中D为字典大小(所有训练语料中单词的个数),这就是词袋模型(Bag of Words)。


词袋模型成功地将自然语言转化为了向量,但还存在着一些问题:

1.字典:无法处理不在字典中的单词(OOV问题,Out of Vocabulary);而且单纯基于单词层面的构造,可能会不必要地产生非常大的字典。例如,在词袋模型中大量的名词都需要单数和复数形式的两个向量来表达,而-s单独拆出来作为一个向量似乎能更有效地表达信息。

2.向量:One-Hot产生的向量长度非常长也非常稀疏(存在大量的0),而且1出现的位置也没有任何其他含义(比如词之间的相关性),表达信息的效率很低。

本文所介绍的子词模型(Subword Models)将着重处理第一个问题,从单词层面进一步深入到子词(subword),生成描述更小的有意义单元的字典,从而提高后续语言模型的泛化能力。

二、Byte Pair Encoding (BPE) 模型


2016年发表的论文Neural Machine Translation of Rare Words with Subword Units提出了BPE模型。BPE作为经典的子词模型,至今仍被经常使用,其训练过程如下:


1.初始化字典:使用所有字母+标点的集合,以及一个标识单词末尾的符号“·”,作为初始字典。


2.字典训练:每次迭代时,找寻训练样本中相邻两个词组成的词对(pair)的出现频数,每次选择一个频数最高的词对作为一个新的词加入到字典。注意最开始时,这里的“词”实际上是字母等基本字符。在上面的例句中,词对“er”和“r·”的频数为2,而其他均为1,“er”将加入到字典中。下一轮中,“er·”将加入到字典中(或者先加入“r·”也可以,同频数时模型任意选择)。


3.训练停止:人工设置循环次数或者期望的字典大小作为中止条件。


BPE算法能够将英文中的各种后缀、前缀方便地切分出来,提高了字典对自然语言的描述能力,以下是一个可能的分词结果对比:


此外,BPE也能较好地解决OOV问题,一些新的词可以用子词来表达,即使在子词都不能表达的情况,至少也可以用字母等基本字符来覆盖。但BPE在遇到中文、日文等字符空间非常大的语言时,就有些不适用了。2019年的论文Neural Machine Translation with Byte-Level Subwords提出的BBPE模型基于字节进行初始化编码(中文、日文的每个字符由多个字节进行编码),再进行合并过程,一定程度上解决了这一语言兼容的问题。


三、WordPiece和Unigram模型


BPE以训练语料中的频数为依据,产生新的子词加入字典,这一过程中可能会遇到前面案例中出现的两个词对频数相同的情况(“er”和“r·”),这时BPE模型并不能进行区分。WordPiece则使用训练语料X生成的概率作为依据。假设所有的子词是相互独立的,语料中的第i个子词为xi,那么从字典生成出语料的概率将会是各个子词的出现概率p(xi)的乘积:


WordPiece模型将尽量产生一个最大化p(X)的字典。在决策是否合并两个相邻的子词A、B时,WordPiece模型使用合并对总概率的影响大小 来进行判断。在上面的例句中,e、r、“·”出现的频次分别为4、2、5,但“er”和“r·”的频次是相同的,此时p(e)p(r)


Unigram模型也是基于生成概率最大化的思想。和前两个模型的主要区别在于,初始化字典时,Unigram会先启发式地尽可能产生一个非常大的字典(如直接将语料中所有可能的子词组合计算一下频率再取TOP若干个),再逐步缩小到期望的规模。缩小的过程中,模型使用p(xi)和字典进行EM算法来优化目标似然函数(基于生成概率构造)。模型重复进行以下步骤:


1.固定字典,计算所有子词的p(xi)

2.固定p(xi),计算每个子词如果移出字典后,目标似然函数的损失

3.按照损失值排序保留前η%的子词(为解决OOV问题,一直保留所有字母等基本字符)


四、总结


子词模型作为词嵌入的重要技术之一,能够为自然语言处理的各种模型的训练提供更好的字典,加强模型的泛化能力,并解决一些诸如OOV问题、多语言问题等基本问题。如今许多子词模型已经被整理成开源工具包供开发者使用,如谷歌推出的SentencePiece等。


作者简介

胡赟豪 ,硕士毕业于清华大学经济管理学院,现从事于互联网数据科学相关工作,主要技术探索方向为机器学习、大语言模型及其在商业中的应用。
图片

未来,数据派THU将围绕大数据、人工智能等领域推出 “科普之旅” 系列文章。

kepu & zhilv



欢迎

在下方评论区留言

说出你最关心的科普话题吧


编辑:王菁






请到「今天看啥」查看全文