首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unigram记号器:它是如何工作的?

Unigram记号器:它是如何工作的?
EN

Data Science用户
提问于 2021-02-02 13:28:18
回答 1查看 2.6K关注 0票数 5

我一直在试图了解unigram令牌程序是如何工作的,因为它是在我计划使用的sentencePiece令牌器中使用的,但我无法用它来包装我的头脑。

我试着阅读原来的论文,其中包含的细节太少了,让人觉得这篇论文写得很清楚,让人无法理解。我也读过几篇关于它的博客文章,但没有一篇是真正澄清的(一个直截了当地承认没有完全理解它)。

有人能给我解释一下吗?我对EM算法很熟悉,但我看不出它与损失函数有什么关系,以便找出子词的概率。

EN

回答 1

Data Science用户

回答已采纳

发布于 2021-02-02 15:39:10

拥抱变形金库的文献资料中的解释似乎更为平易近人:

Unigram是在子词正则化:改进多个候选子词的神经网络翻译模型(Kudo,2018年)中引入的一种子词标记化算法。与BPE或WordPiece不同,Unigram将其基词汇表初始化为大量的符号,并逐步缩减每个符号以获得较小的词汇表。例如,基词汇表可以对应所有预标记化的单词和最常见的子字符串。Unigram不是直接用于变压器中的任何模型,而是与SentencePiece一起使用。在每个训练步骤中,Unigram算法定义了给定当前词汇表和一个unigram语言模型的训练数据的损失(通常定义为日志似然)。然后,对于词汇表中的每个符号,算法计算如果将符号从词汇表中删除,总的损失会增加多少。然后,Unigram删除损失增加最少的符号的p(p通常为10%或20%),即对训练数据的总体损失影响最小的符号。这个过程会被重复,直到词汇表达到所需的大小。Unigram算法总是保留基本字符,这样任何单词都可以被标记。由于Unigram不基于合并规则(与BPE和WordPiece相比),因此该算法有几种训练后标记新文本的方法。例如,如果经过训练的Unigram令牌器显示了词汇表:["b", "g", "h", "n", "p", "s", "u", "ug", "un", "hug"],“拥抱”可以标记为“拥抱”,“S”、“h”,“ug”,“S”或“h”,“u”,“g”,“S”。那么选择哪一个呢?在保存词汇表的基础上,将每个标记的概率保存在训练语料库中,以便在训练后计算每个可能的标记化的概率。该算法简单地选择了在实际中最有可能的标记化,但也提供了根据概率对可能的标记化进行采样的可能性。这些概率是由令牌设备受到的损失定义的。假设训练数据包含单词1,…,并且将单词的所有可能的令牌集合定义为(),则总体损失定义为\mathcal{L} = -\sum_{i=1}^{N} \log \left ( \sum_{x \in S(x_{i})} p(x) \right )

有些部分不太详细,例如,它如何将基(种子)词汇表初始化为大量符号“。在第3.2节末尾,原创文章对此部分作了更清楚的解释:

有几种方法来准备种子词汇。自然的选择是使用所有字符的结合和语料库中最频繁的子字符串。频繁子串可以在O(T)时间和O(20T)空间中使用增强后缀数组算法(Nong等人,2009年年)进行枚举,其中T是语料库的大小。

关于用于计算概率的期望最大化算法的细节,所发生的情况如下:

  1. 期望值根据词汇表中相应的频率计数估计每个子词的概率
  2. 最大化使用维特比算法对语料库进行分割,并返回最优片段。

您可以在本教程中查看详细信息以及实际示例。

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/88824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档