分类 二、深度学习 下的文章
tokenize
一、 背景与基础
在使用GPT BERT模型输入词语常常会先进行tokenize ,tokenize具体目标与粒度是什么呢?tokenize也有许多类别及优缺点,这篇文章总结一下各个方法及实际案例。
tokenize的目标是把输入的文本流,切分成一个个子串,每个子串相对有完整的语义,便于学习embedding表达和后续模型的使用。
二、切分粒度
tokenize有三种粒度:word/subword/char
1.词粒度-word
词粒度的切分就跟人类平时理解文本原理一样,常常用一些工具来完成,例如英文的NLTK、SpaCy,中文的jieba、LTP等。举个栗子:
英文
live in New York ------> live / in / New York /
中文
在纽约生活 -----> 在 / 纽约 / 生活
词粒度的切分能够非常好地保留完整语义信息,但是如果出现拼写错误、英文中的缩写等情况,鲁棒性一般。另一方面,词切分会产生非常巨大的词表,而且这都不能确保不会出现out of vocabulary问题。
2.字粒度-char-字符粒度
字粒度最早应该是2015年Karpathy[1]提出,简单说英文就是以字母为单位(对于大小写不敏感的任务,甚至可以先转小写再切分),中文就是以字为单位,举个栗子,
英文
live in New York -----> l / i / v /e / i / n / N / e / w / Y / o / r /k
中文
在纽约生活 -----> 在 / 纽 / 约 / 生 / 活
可以看出,字粒度的切分很好地解决了词粒度的缺陷,鲁棒性增强、词表大大减小。但另一方面,也会带来一些麻烦:
「毫无意义」:一个字母或一个单字本质上并没有任何语义意义;
「增加输入计算压力」:减小词表的代价就是输入长度大大增加,从而输入计算变得更耗时耗力;
如果词粒度不理想,而且字粒度似乎也有自己的问题,那么还有什么替代方法呢?Here comes subword tokenization。
3.Subword粒度
我们需要的tokenization需要满足:
- 它能够在不需要无限词汇表的情况下处理缺失的标记,即通过有限的已知单词列表来处理无限的潜在词汇。
- 此外,我们不希望将所有内容分解为单个字符的额外复杂性,因为字符级别可能会丢失单词级别的一些含义和语义细节。
为此,我们需要考虑如何重新利用『小』单词来创建『大』单词。subword tokenization不转换最常见的单词,而是将稀有单词分解成有意义的子词单元。如果unfriendly被标记为一个稀有词,它将被分解为un-friendly-ly,这些单位都是有意义的单位,un的意思是相反的,friend是一个名词,ly则变成副词。这里的挑战是如何进行细分,我们如何获得un-friend-ly而不是unfr-ien-dly。
NLP最火的网红 Transformer 和 BERT 就是Subword的带盐人,来看个它们做tokenization的栗子,
I have a new GPU ----> [’i’, ’have’, ’a’, ’new’, ’gp’, ’##u’, ’.’]
subword粒度切分算法又有一下几种:
1.BPE
2.WordPiece
3.ULM(unigram LM)
SentencePiece集成了两种subword算法,BPE和UniLM, WordPiece 则是谷歌内部的子词包,没对外公开
参考:
1.https://cloud.tencent.com/developer/article/1865689
2.https://zhuanlan.zhihu.com/p/340473354
Ernie-1.0算法
一、 ERNIE-B的掩码机制
ERNIE-B的掩码机制如图1所示,它由BERT的随机掩码再加前面我们介绍的短语级别掩码和实体级别掩码。
图1:ERNIE-B的三种掩码
基本级别掩码(Basic-Level Masking):
这里采用了和BERT完全相同的掩码机制,在进行中文语料时,这里使用的是字符级别的掩码。在这个阶段并没有加入更高级别的语义知识。
短语级别掩码(Phrase-Level Masking):
在这个阶段,首先使用语法分析工具得到一个句子中的短语,例如图1中的“a serious of”,然后随机掩码掉一部分,并使用剩下的对这些短语进行预测。在这个阶段,词嵌入中加入了短语信息。
实体级别掩码(Entity-Level Masking):
在这个阶段,将句子中的某些实体掩码掉,这样模型就有了学习更高级别的语义信息的能力。
二、 DLM
得益于百度贴吧强大的数据量,ERNIE-B使用了海量的对话内容,因此在ERNIE-B中使用了对话语言模型(Dialogue Language Model,DLM)。作者认为一组对话可能有多种形式,例如QRQ,QRR,QQR等(Q:Query,R:Response)。为了处理这种多样性,ERNIE-B给输入嵌入中加入了对话嵌入(Dialogue Embedding)特征。另外在ERNIE-B中,DLM是可以和掩码语言模型的兼容的,如图2所示。
各向异性
一、定义
各向异性(Anisotropic) 的概念在BERT-flow的文章中有明确的定义:
(1)“Anisotropic” means word embeddings occupy a narrow cone in the vector space.
翻译过来就是:“各向异性”表示词嵌入在向量空间中占据了一个狭窄的圆锥形体。但这个定义有点过于场景化,实际上各向异性的表现形式并不一定是锥形。