【Tokenizer原理篇】超详细!AIGC口试系列 大模型进阶(5) ...

打印 上一主题 下一主题

主题 931|帖子 931|积分 2793

本期问题聚焦于大模型Tokenizer相干问题

  
模型中的Tokenization是指的什么

在模型中,Tokenization(分词)是指将文本转换为一系列的tokens(标记)的过程。这些tokens可以是单个字符、单词的一部门,甚至是整个单词或句子片断。分词的目的是为了将文本转换成计算模型可以或许更容易分析的格式。在大型语言模型(LLMs)如OpenAI的GPT系列中,分词是明白和天生人类语言的关键步骤。
分词的方法会影响模型的性能、复杂性以及其明白语言细微差别的本事。比方,许多LLMs使用一种修改版的字节对编码(BPE)来进行分词,这种方法从最根本的元素——单个字符——开始,逐渐归并最常见的相邻字符或字符序列成为单个tokens。这使得模型可以或许有效地处理各种语言现象,包括常见词汇、罕见术语、习语,甚至是心情符号。
References

  • Introduction to Tokenizers in Large Language Models (LLMs … - Medium
  • Understanding Tokenization in Large Language Models
  • Understanding “tokens” and tokenization in large language models
  • What is Tokenization in NLP & Machine Learning? | Deepgram
常用的Tokenization方法相识有哪些吗


  • 词粒度Tokenization:这种方法将文本分割成单词。对于英文,常用的工具有NLTK、SpaCy等;对于中文,则常用jieba、LTP等工具。这种方法可以或许很好地生存语义信息,但对于拼写错误或缩写等情况的鲁棒性较差。
  • 字粒度Tokenization:这种方法将文本分割成单个字符。对于英文,可能会以字母为单元;对于中文,则以单个汉字为单元。这种方法的鲁棒性较强,词表也相对较小。
  • Subword粒度Tokenization:这种方法介于词粒度和字粒度之间。它不会转换最常见的单词,而是将有数单词分解成有意义的子词单元。比方,“unfriendly"可能会被分解为"un-friendly-ly”。这种方法可以处理未知标记,而且生存了一定的词汇含义和语义细节。
  • BPE(Byte Pair Encoding):这是一种迭代归并频繁出现的字符序列的方法,可以有效地淘汰词表巨细,同时处理未知词汇。
  • Unigram Language Model:这种方法基于概率模型,通过优化下一个词出现的概率来进行Tokenization,它可以输出具有概率的多个分段。
  • WordPiece:这种方法雷同于BPE,但它基于可能性而不是频率来形成新的子词单元。
这些方法各有优缺点,通常根据详细的应用场景和需求来选择符合的Tokenization方法。
References

  • 机器怎样认识文本 ?NLP中的Tokenization方法总结 - 知乎
  • 6种Tokenization的独特方法 - 知乎 - 知乎专栏
  • 深度学习中的tokenization:明白与应用-百度开辟者中心
  • 【自然语言处理】一篇文章入门分词(Tokenization)-CSDN博客
  • NLP中的Tokenization - 知乎
相识什么是Byte-Pair Encoding(BPE)吗

Byte-Pair Encoding(BPE)是一种在自然语言处理(NLP)中常用的数据压缩技能。它最初是为了压缩文件而计划的,但后来在NLP领域,尤其是在处理大型词汇表时,被广泛应用于各种任务,如机器翻译、文本分类和文本天生。
BPE的焦点思想是将常见的字符对(byte pairs)归并成一个单独的新字符,这个过程会反复进行,直到到达预设的词汇巨细或者迭代次数。这种方法可以有效地淘汰须要处理的唯一词汇的数量,同时生存了词汇的大部门语义信息。
比方,假如我们有一个包含以下单词的数据集:“low”, “lower”, “newest”, “widest”,BPE会如许工作:

  • 起首,它会将所有单词分解成字符,并在每个单词的末端添加一个特别的竣事标记,如“low”变成“l o w ”。
  • 然后,算法会在整个数据集中查找最常见的字符对,并将它们归并。假设“e s”是最常见的字符对,那么“newest”就会被重新编码为“n e w e s t”。
  • 这个过程会不断重复,每次都会归并最常见的字符对,直到到达预设的词汇限制。
BPE的上风在于它可以或许均衡词汇表的巨细和文本的表示本事,同时处理未知或罕见词汇的问题。这使得BPE成为了许多当代NLP模型,如GPT-2、RoBERTa、XLM等的基础组件。
References

  • 明白NLP最重要的编码方式 — Byte Pair Encoding (BPE),这一篇就够了 - 知乎
  • Byte-Pair Encoding: Subword-based tokenization algorithm
  • Byte-Pair Encoding (BPE) in NLP - GeeksforGeeks
  • Unraveling the Byte Pair Encoding (BPE) Algorithm in NLP
  • BPE Explained | Papers With Code
先容下Byte-Pair EncodingBPE的焦点算法

Byte-Pair Encoding(BPE)是一种在自然语言处理(NLP)中常用的数据压缩算法,它通过迭代归并文本中最频繁出现的字节对或字符对来构建一个更小的子词单元集合。这个算法最初由Sennrich等人在2016年提出,并已广泛应用于机器翻译、文本分类和文本天生等多种NLP任务。
BPE算法的焦点步骤如下:

  • 初始化词汇表:将文本中的所有字节或字符作为初始词汇表。
  • 计算频率:统计每个字节或字符在文本中出现的频率。
  • 迭代归并:重复以下步骤直到到达预定的词汇表巨细:

    • 找出文本中出现频率最高的连续字节对或字符对。
    • 将这对字节或字符归并成一个新的子词单元。
    • 更新所有包含归并对的字节或字符的频率计数。
    • 将新的子词单元添加到词汇表中。

  • 表示文本:使用词汇表中的子词单元来表示原始文本。
比方,假设我们有一个包含以下四个单词的文本语料库:“ab”、“bc”、“bcd”和“cde”。初始词汇表由文本中的所有字节或字符组成:{“a”, “b”, “c”, “d”, “e”}。然后,算法会迭代地归并出现频率最高的字符对,比如“bc”,并将其作为一个新的子词单元添加到词汇表中。
BPE算法的上风在于它可以或许有效地处理大词汇量问题,同时淘汰未知词(OOV)的出现。它在处理具有丰富形态变化的语言或须要处理词级以下布局的语言时尤其有用。此外,BPE算法支持模型学习到词根和词缀之间的关系,从而进步了模型对文本的明白本事。
References

  • Byte-Pair Encoding (BPE) in NLP - GeeksforGeeks
  • Byte-Pair Encoding: Subword-based tokenization algorithm
  • Unraveling the Byte Pair Encoding (BPE) Algorithm in NLP
  • algorithm - Explain bpe (Byte Pair Encoding) with examples? - Stack …
相识什么是WordPiece吗

WordPiece是一种在自然语言处理中使用的子词分割算法。它通过将词汇初始化为语言中的单个字符,然后迭代地将词汇中符号的最频繁组合添加到词汇中。这个过程包括以下步骤:

  • 用文本中的所有字符初始化词单元库。
  • 使用第一步中的库在练习数据上构建一个语言模型。
  • 通过结合当前词库中的两个单元来天生一个新的词单元,从而使词单元库增加一个。
  • 在所有可能的新词单元中选择一个,当添加到模型中时,它能最大水平地进步练习数据的可能性。
  • 重复第二步,直到到达预定义的词单元限制或可能性增加低于某个阈值。
WordPiece在BERT和谷歌的神经机器翻译系统中得到了应用,它资助模型更好地处理词汇表外的词,并在各种NLP任务上进步性能。此外,WordPiece的练习算法与BPE(字节对编码)雷同,但实际的分词操作差别。
References

  • WordPiece Explained | Papers With Code
  • WordPiece tokenization - Hugging Face NLP Course
  • What is WordPiece? - h2o.ai
  • WordPiece: Subword-based tokenization algorithm
先容一下 WordPiece 思路

WordPiece 是一种用于自然语言处理(NLP)中的子词(subword)分割算法。它重要用于解决传统词表方法中的一些问题,如词汇表过大和无法处理未知词(OOV)的问题。WordPiece 的思路是在词和字符之间找到一个均衡点,通过将词分解为更小的单元,这些单元可以是词根、前缀、后缀等。
WordPiece 算法的根本步骤如下:

  • 初始化词表:从最基础的字符开始,构建初始词表。
  • 统计频数:在练习数据上统计相邻字符对的频数。
  • 归并字符对:选择可以或许进步语言模型概率最大的相邻字符对进行归并,形成新的子词。
  • 迭代过程:重复统计频数和归并字符对的步骤,直到到达预设的词表巨细或者增益变得非常小。
这种方法允许模型有效地处理罕见词和未知词,同时保持了一定的语义信息,而且可以淘汰模型的复杂性。WordPiece 在 Google 的 BERT 模型中得到了广泛应用,用于改善模型对文本的明白和处理本事。它通过迭代地归并频繁出现的字符对,逐渐构建出一个既不会太大也不会丢失太多语义信息的词表。
References

  • NLP三大Subword模型详解:BPE、WordPiece、ULM - 知乎
  • 明白tokenizer之WordPiece: Subword-based tokenization algorithm - 知乎
  • WordPiece是怎样基于词表对文本进行切分的-CSDN博客
  • [wordpiece]论文分析:Google’s Neural Machine Translation System
相识什么是SentencePiece吗

SentencePiece 是一个开源的文本处理工具,重要用于神经网络模型中的文本天生系统。它是一种无监视的文本 tokenizerdetokenizer,可以从原始文本中直接练习出词汇表。这个工具特别得当处理多语言数据,由于它不依赖于特定语言的预处理和后处理。
SentencePiece 支持两种子词算法:Byte-Pair Encoding (BPE)Unigram Language Model。BPE 算法通过归并频繁出现的字符对来淘汰词汇表的巨细,而 Unigram 算法则通过优化语言模型的概率来选择生存哪些词汇。这两种方法都能有效地处理未知词(OOV)问题,而且可以或许在词汇表巨细和语义表达本事之间取得均衡。
一个重要的特点是,SentencePiece 将空格也视为一个普通的符号,并将其包含在词汇表中。如许做的好处是可以生存原始文本的空格信息,使得分词和归并词(detokenization)过程可逆,这对于像中文和日文如许的语言尤其有用,由于这些语言中的词之间通常没有明白的空格分隔。
References

  • 大模型词表扩充必备工具SentencePiece - 知乎 - 知乎专栏
  • 【LLM】大语言模型学习笔记-3 一文详解sentencepiece(关于大语言模型的词表扩充) - 知乎
  • 深入探究SentencePiece分词器:中文语境下的应用与实践
  • 分词工具使用系列——sentencepiece使用-CSDN博客
先容一下 SentencePiece 思路

SentencePiece 是一个由谷歌开辟的开源文本处理工具,它重要用于神经网络文本天生系统中的无监视文本分词(tokenization)和合词(detokenization)。这个工具的焦点思想是将文本分词问题视为一个无监视学习问题,它不依赖于语言特定的预处理或后处理。
SentencePiece 的特点包括:


  • 数据驱动:SentencePiece 直接从原始文本句子中练习分词和合词模型,不须要预先的分词处理。
  • 语言无关性:它将句子视为Unicode字符序列,不包含任何依赖于特定语言的逻辑。
  • 支持多种子词算法:SentencePiece 支持字节对编码(Byte-Pair Encoding, BPE)和unigram语言模型等算法。
  • 子词规则化:SentencePiece 实现了子词采样和BPE-dropout,这有助于进步神经机器翻译模型的鲁棒性和正确性。
  • 快速且轻量:分词速率约为每秒50k句子,内存占用约为6MB。
  • 自包含:只要使用雷同的模型文件,就能得到雷同的分词和合词效果。
  • 直接词汇ID天生:SentencePiece 管理词汇到ID的映射,可以直接从原始句子天生词汇ID序列。
  • 基于NFKC的文本规范化:SentencePiece 执行基于NFKC的文本规范化。
References

  • 大模型词表扩充必备工具SentencePiece - 知乎 - 知乎专栏
  • GitHub - google/sentencepiece: Unsupervised text tokenizer for Neural …
  • 分词工具使用系列——sentencepiece使用-CSDN博客
  • 大语言模型之十 SentencePiece-CSDN博客
  • 深入探究SentencePiece分词器:中文语境下的应用与实践
Byte-Pair Encoding, WordPiece, SentencePiece这三者有什么区别

Byte-Pair Encoding (BPE)、WordPiece和SentencePiece是自然语言处理中用于子词分词的三种差别算法。它们的重要区别在于它们选择将符号对添加到词汇表中的方式。


  • BPE:最初用于数据压缩,后来被应用于NLP中的分词。它通过归并文本中最常见的字符对来迭代地构建词汇表。这种方法可以有效地处理罕见词汇和词汇外(OOV)词汇。
  • WordPiece:与BPE雷同,但在选择要归并的符号对时,WordPiece不仅思量频率,还思量归并后对练习数据似然度的最大化。这意味着WordPiece在添加新符号对到词汇表时,会选择那些能使团体数据的似然度最大化的符号对。
  • SentencePiece:与BPE和WordPiece的重要区别在于,SentencePiece直接在原始文本上操作,而不是预先分词的文本。这允许SentencePiece在差别语言和空格使用不一致的情况下更加机动。此外,SentencePiece实现了BPE和unigram语言模型的分词算法,提供了更快的C++实现,而且可以处理多种语言。
总的来说,这三种算法都旨在通过创建子词单元来淘汰词汇表的巨细,从而解决OOV问题,并进步模型的泛化本事。选择哪一种算法取决于特定任务的需求和语料库的特性。
References

  • A comprehensive guide to subword tokenisers | by Eram Munawwar …
  • Summary of the tokenizers - Hugging Face
  • BPE vs WordPiece Tokenization - when to use / which?
  • WordPiece: Subword-based tokenization algorithm
  • BPE vs WordPiece Tokenization - when to use / which?
差别大模型LLMs 的分词方式

差别的大型语言模型(LLMs)在处理分词时接纳了各种方法。一般来说,这些模型会使用以下几种分词技能:

  • 基于规则的分词:这种方法根据预定义的规则来辨认词汇界限。比方,中文分词可能依赖于辞书和语法规则来确定词语。
  • 统计分词:使用大量语料库中的统计信息来预测词汇界限。这种方法通常涉及机器学习算法,如隐马尔可夫模型(HMM)或条件随机场(CRF)。
  • 基于神经网络的分词:比年来,基于深度学习的方法,尤其是使用Transformer架构的模型,如BERT和GPT系列,已经成为分词的主流。这些模型通常使用一个称为“子词分割”的技能,它可以将词汇分解为更小的单元(如字节对编码BPE或WordPiece)。
  • 端到端分词:一些最新的LLMs,如GPT-3或T5,可以直接在没有明白分词步骤的情况下处理文本,由于它们可以或许在内部学习到词汇的表示。
每种方法都有其上风和局限性,而且差别的LLMs可能会结合使用多种技能来优化分词的效果。
References

  • 大型语言模型(Large Language Models,LLMs)概览 - 知乎
  • LLM之汇总:相识所有大型语言模型(LLMs) - 知乎
  • 怎样使用LLMS大语言模型进行中文分词 - LangChain中文网
  • 什么是LLMs大语言模型,它的布局和原理是什么?并用代码举例说明 - 知乎
  • 大模型怎样构建和部署?微软等最新《大型语言模型》综述,详述GPT, LLaMA, PaLM技能细节,Tomas等大牛撰写

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表