NLP基礎(chǔ)(分詞):wordpiece 算法

原文鏈接:NLP基礎(chǔ)(分詞):wordpiece 算法


導(dǎo)讀:在之前的文章中,我們介紹了BPE(Byte Pair Encoding)算法如何通過(guò)合并高頻字符對(duì)解決未登錄詞問(wèn)題(NLP基礎(chǔ)(分詞):BPE 算法)。今天,我們將深入探討其升級(jí)版算法——WordPiece。作為BERT、GPT等主流模型的分詞核心,WordPiece在BPE的基礎(chǔ)上引入了更智能的合并策略。它究竟有何獨(dú)特之處?為何能成為預(yù)訓(xùn)練模型的標(biāo)配?本文將通過(guò)原理剖析、代碼實(shí)戰(zhàn)和實(shí)例對(duì)比,帶你徹底掌握WordPiece!

1、WordPiece vs BPE

BPE的核心是合并高頻字符對(duì)(例如將“u”和“g”合并為“ug”),而WordPiece的合并策略更進(jìn)一步——每次選擇合并后能最大化語(yǔ)言模型概率的字符對(duì)。簡(jiǎn)而言之,BPE是“頻率驅(qū)動(dòng)”,而WordPiece是“概率驅(qū)動(dòng)”。

舉個(gè)栗子

假設(shè)詞匯表包含以下單詞:

low: 5次

lowest: 3次

newer: 6次

wider: 4次

BPE的選擇:合并頻率最高的字符對(duì)(如e和r,共出現(xiàn)10次)。

WordPiece的選擇:計(jì)算合并后句子的整體概率提升,優(yōu)先合并語(yǔ)義更連貫的字符對(duì)(如low和est)。

點(diǎn)擊原文(NLP基礎(chǔ)(分詞):wordpiece 算法),后臺(tái)回復(fù)“wordpiece”可免費(fèi)獲得上述論文和代碼

2、算法原理

1. 核心公式:概率最大化

WordPiece通過(guò)以下公式選擇合并的字符對(duì):

其中,freq(A)和freq(B)是字符A和B的獨(dú)立頻率,freq(A,B)是它們連續(xù)出現(xiàn)的頻率。分?jǐn)?shù)越高,說(shuō)明A和B的共現(xiàn)越有意義

2. 算法步驟

初始化:將所有單詞拆分為字符(如“chat”拆為c, h, a, t)。

統(tǒng)計(jì)字符對(duì)得分:根據(jù)公式計(jì)算每對(duì)相鄰字符的得分。

合并最高分字符對(duì):將得分最高的字符對(duì)合并為一個(gè)新符號(hào)。

重復(fù)迭代:直到詞表大小達(dá)到預(yù)設(shè)值或無(wú)法繼續(xù)合并。

3. 實(shí)例演示

假設(shè)有一個(gè)簡(jiǎn)單的訓(xùn)練語(yǔ)料庫(kù),包含以下單詞及其頻率:

{'hug': 10, 'pug': 5, 'pun': 12, 'bun': 4, 'hugs': 5}

通過(guò)WordPiece算法進(jìn)行3次合并,生成子詞。

第一次合并:

最高得分字符對(duì):(g, s)(得分0.05)。

合并結(jié)果:將?g s?合并為?gs,更新訓(xùn)練語(yǔ)料:{'h' 'u' 'g': 10, 'p' 'u' 'g': 5, 'p' 'u' 'n': 12, 'b' 'u' 'n': 4, 'h' 'u' 'gs': 5}

第二次合并:

最高得分字符對(duì):所有得分相同(0.0278),按順序選擇第一個(gè)?(h, u)。

合并結(jié)果:將?h u?合并為?hu,更新訓(xùn)練語(yǔ)料:{'hu' 'g': 10, 'p' 'u' 'g': 5, 'p' 'u' 'n': 12, 'b' 'u' 'n': 4, 'hu' 'gs': 5}

第三次合并:

最高得分字符對(duì):(hu, g)(得分0.0667)。

合并結(jié)果:將?hu g?合并為?hug,更新訓(xùn)練語(yǔ)料:{'hug': 10, 'p' 'u' 'g': 5, 'p' 'u' 'n': 12, 'b' 'u' 'n': 4, 'hugs': 5}

最終,保留了高頻詞'hug',原'hugs'被拆成'hug'和's'。

點(diǎn)擊原文(NLP基礎(chǔ)(分詞):wordpiece 算法),后臺(tái)回復(fù)“wordpiece”可免費(fèi)獲得上述論文和代碼

3、python實(shí)現(xiàn)

下面通過(guò)python代碼實(shí)現(xiàn)上述示例:

得到結(jié)果如下:

4、優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

語(yǔ)義優(yōu)先:通過(guò)概率最大化合并,子詞更貼合語(yǔ)義(如優(yōu)先合并##ing而非i和n)。

適配預(yù)訓(xùn)練模型:BERT等模型依賴上下文,WordPiece能捕捉詞根、詞綴等語(yǔ)義單元。

歧義處理:對(duì)多義詞(如“bank”)可生成不同子詞組合,增強(qiáng)模型魯棒性。

缺點(diǎn)

計(jì)算復(fù)雜:每次合并需重新計(jì)算概率得分,訓(xùn)練效率低于BPE。

依賴初始分詞:需預(yù)拆分為字符,對(duì)中文等無(wú)空格語(yǔ)言需額外處理。

不可逆性:合并后的子詞無(wú)法拆分,可能導(dǎo)致錯(cuò)誤累積。


參考文獻(xiàn):

1. Wu, Y., et al. (2016). Google’s Neural Machine Translation System. arXiv:1609.08144.

2. Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.

點(diǎn)擊原文(NLP基礎(chǔ)(分詞):wordpiece 算法),后臺(tái)回復(fù)“wordpiece”可免費(fèi)獲得上述論文和完整代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容