赞
踩
根据字母搭配出现的频率组成词根。
初始vocabulary:["b", "g", "h", "n", "p", "s", "u"]
假设训练数据中有10个hug,5个pug,12个pun,4个bun和5个hugs:
("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)
那么此时tokenizer会将其分割成:
("h" "u" "g", 10), ("p" "u" "g", 5), ("p" "u" "n", 12), ("b" "u" "n", 4), ("h" "u" "g" "s", 5)
然后计数字母搭配出现的频率,比如"hu"=10+5=15次,"ug"=10+5+5=20次,"un"=12+4=16次
每次选取频率最高的搭配进行更新vocabulary,那么此时vocabulary:["b", "g", "h", "n", "p", "s", "u","ug"]
再次对语料进行分割,结果为:
("h" "ug", 10), ("p" "ug", 5), ("p" "u" "n", 12), ("b" "u" "n", 4), ("h" "ug" "s", 5)
再次计数,再次更新,此时vocabulary:["b", "g", "h", "n", "p", "s", "u","ug","un"]
第三次对语料进行分割,结果为:
("hug", 10), ("p" "ug", 5), ("p" "un", 12), ("b" "un", 4), ("hug" "s", 5)
以此不断更新,直到遇到<unk>(unkonwn,没见过的字母/字符),而vocabulary size和更新次数都是tokenizer训练时的超参数。例如,GPT 的词汇量为 40478,因为它们有 478 个基本字符,并在 40000 次合并后选择停止训练。
BPE是基于char的维度进行的,但这样对于某些语言来说,vocabulary会很大。BBPE将文本的UTF-8编码中的一个字节(每个字节有8位的2进制编码,2的8次方=256位。UTF-8可以保证任何语言通用)不同的编码作为vocabulary的base。再加上一些处理标点符号的附加规则。 GPT-2 的词汇量为 50257,对应于 256 字节的基本标记、特殊的文本结束标记以及通过 50,000 次合并学习的符号。
与BPE类似,但是与 BPE 相比,WordPiece 不会选择最常见的符号对,而是选择在添加到词汇表后使训练数据的可能性最大化(似然概率最大)的符号对:
P(tx) = freq(x) 就是单词 x 出现的频率,选择x和y合并为z之后句子似然值的变化为freq(z)/(freq(x)*freq(y)),取似然值变化最大的进行合并。
初始vocabulary的size很大,然后以最大似然的log值作为Loss,选取删掉后对Loss影响最小的约10~20%个symbols从vocabulary中删除
使用“_"代替空格,用于BPE或者Unigram
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。