方格精選

[探索] 語言模型基礎:Subword algorithms

閱讀時間約 10 分鐘
一個好的自然語言模型,需要維持一個好的 vocabulary set。一旦我們向語言模型提問,出現了語言模型的 vocabulary set 未曾收錄的單字,語言模型就會產生 Out-of-Vocabulary 或 OOV 的問題。而 OOV 處理的情況,大致上分為兩種,一種就是直白的說了「我不知道」,另一種則是委婉地說了「我再查查看」。
前者語言模型會產生 UNK token,意思就是 Unknown(我不知道)。後者則被需使用 back-off 機制去處理。配有 back-off 的語言模型,需要維持數個不同精度的語言模型,當單詞不在最大精度的模型中,就「退到」次等精度模型查詢。以 n-gram 模型為例,若有一 n-gram 的 token 發生 OOV 的情況,back-off 機制就會「退到」 n-1 gram 的模型去查詢該 token,若仍舊在 unigram model 找不到該單詞,模型就會發出 UNK token。
想在訓練期間,減少執行期間 OOV 產生的方法,若 vocabulary set 仍是維持 word-level 的精度,最直覺的方法,便是使用字彙量㥛多的巨量 corpus 來訓練語言模型。 然而,這麼做有以下下列問題:
  1. 參數量的暴增:字彙的頻率分佈通常呈長尾的指數衰退,也就是在尾端充滿著出現頻率接近零的少見字。如果我們都把這些少見字都放進我們的 word-level vocabulary,我們就有 embedding 參數量的暴增問題,如果你不認識 embedding,建議你先從延伸閱讀讀起。
  2. 無法模擬非標準字和錯字:面對社群網絡中常用的非標準字(如,Goooooood Vibesssssss),領域相關的技術字或錯字,如果沒有特別手工處理,word-level vocabulary 會將這些 tokens 都當作一個非相同且獨特的 vocabulary 。這樣的處理方式等同於將同樣語義的 token 分別用不同的表示法表示。這不僅不符合最簡表示,更進而削弱了統計能力。
  3. 語詞形態(morphemes)豐富的字詞:對於像芬蘭語等語詞形態豐富字詞,word-level vocabulary 不能捕捉在不同字詞中同型態字首或字尾的語義,更無法對拼音相同的字詞產生關聯。如,對英語而言,副詞通常在字尾帶有 “ly” 。
上述的問題們,可以藉由建立一個 character-level 的模型來緩和。character-level 的模型,尤其在翻譯系統,可以採取直接拷貝的方法來進行,如人名等。對於同源的語言對,則可以藉由 character-level 的直接翻譯達成。 然而 character-level 的模型,雖然在解決前述問題相當有效率,但他們無法像 word-level vocabulary 的語言模型,能夠捕捉字詞間的長依賴關係。關於幾個使用不同字詞特徵建立語言模型的方法,可見延伸閱讀連結。
所以就有了第三種方法,那就是利用產生 subwords 的方式來自動建立 vocabulary。Subwords 是一個字詞中可擷取出來部分或全部連續序列。對於語詞形態,使用 subwords 的方法可以保留字詞的字尾或字首。對於沒有固定分割字元,(如,英文使用空白當作字詞間的分割字元)的語言,如中文等,則可以使用 subwords 在 byte-level 進行字詞分割。
目前依照如何納入 subwords 在模型中,主要有兩種方式,一種是當作字彙,另外一種則是將所有可能 subwords 列出,一併併入 word embedding 的計算中。前者,我們會介紹一種 greedy algorithm 來做 subwords segmentation。後者,我們將簡略提到修改 word2vec 模型,引入 subwords counts 的 FastText。
一個典型 subwords segmentation 演算法,名為 Byte Pair Encoding(BPE),最早是應用在 data compression ,除了是最早應用到單字分割的演算法,該演算法也被 Open AI 的 GPT2 使用。而該演算法的步驟如下:
  1. Segment Criterion:將單詞字典裡的單詞都分割為字母大小的長度(byte 長度)。並使用 </W> token 來表示單詞結尾。
  2. 建立一個記錄「字母對」與出現頻率的 dictionary。這個 dictionary 的鍵值是在步驟一產生在同一個單詞內相鄰的「字母對」,而值的部分則是該鍵值的出現頻率。
  3. Merge Criterion:合併出現頻率最高的「字母對」將會被優先合併成一個新的 subword,並以該 subword 取代原來的字母對。
  4. 重複步驟 2 和 3,直到達到所設下的 vocabulary size。
圖片來源:參考資料 [2]
BPE 可以不分割高頻率的字詞,但對於少見字彙分割比字詞還小的 subword,所以大幅減少 OOV 的問題。
BPE 中貪心合併的方法屬於 deterministic 執行,一個 stochastic 版本被稱為 BPE-dropout。在 dropout 版本中,是否進行合併是由一個極小的機率(p=0.1)所決定。使用 stochastic 的版本,主要是在訓練時提供調節的功能,預防 BPE 演算法陷入局部最佳解,而只產生一種 segmentation 結果。在 inference 的時候,仍是以原本的 BPE 演算法為實踐方法。透過應用 BPE-dropout 方法,能建立一個對拼錯字不敏感的強健語言模型。除此之外,BPE-dropout 證明能夠有效訓練低資源的語言模型。
這個簡單演算法,Google 在他們的 Neural Machine Translation (NMT) 經過修改後也使用上了。 Google NMT 更改成兩個版本,一個是 WordPiece,用在 BERT pre-train 模型上,另一個則是 SentencePiece。
WordPiece 和 BPE 最主要的不同在於 Merge Criterion。WordPiece 與 BPE 不同,它並不使用出現頻率來作為合併的條件,相反地它使用 maximizing the likelihood 的方式來最佳化合併的過程。除此之外,WordPiece 原本是應用在日文及韓文的語音系統,所以在演算法步驟一中所使用的 character 數目較多。此外 WordPiece 增加了一些特別的 token。使用 ‘_’ 來表示單字的開始(BPE 使用 </W> 表示字詞的結束’)。以及利用 <B> <M> <E> 分別代表少用單字的開始,中間和結束。使用這些 token prefix 是希望在翻譯系統中可以還原該單字,能以直接拷貝的方式處理。
至於 SentencePiece 則延伸 WordPiece 都是針對 UTF-8 來做為字母的最小單元,而非在 byte-level。使用 UTF-8 切割字元為最小單位有助於學習缺乏自然字詞界限,無法 pre-tokenized 的東方語言,如中文。此外,不像 WordPiece 演算法會先從已被 pre-tokenized Word-level 的字彙開始,SentencePiece 會從全句開始分割,並保留空白字元作為特殊 token。
左為 DPE 機械翻譯流程,右為 DPE transformer 架構
圖片來源:參考資料 [4]
Dynamic Programming Encoding (DPE)則是架構在機械翻譯之上的一個 subword segmentation 演算法。這個方法是基於一個觀察,那就是對於翻譯的輸出而言,如何做 segmentation 方式不是很重要,只要輸出的位置正確即可。所以,使用 dynamic programming 將可能 segmentation 的方法都併入後驗機率的計算中。然而這樣的觀察,是對目標語言來說,來源語言仍需要準確的 segmentation 方式,所以在 DPE 構成的機械翻譯系統中,DPE 只獨立於 preprocessing 的架構中,而來源語言的 subword segmentation 演算法,仍使用 BPE 或 BPE-dropout(見上圖左)。DPE 的學習架構是利用一個混合字元與 subword 的 transformer decoder,負責輸出 subword 的 softmax 層,會在事先以 BPE 方法建立的 subword vocabulary 選出最有可能的 subword 輸出(見上圖右)。DPE 的 segmentation 結果,比起使用 BPE 更符合語言學(見下圖)。如保留單詞複數或副詞字尾的型態。
給定德文輸入,比較 BPE (BPE target)和 DPE (DPE target)兩個方法的輸出。
圖片來源:參考資料 [3]
最後,要提到的是 FastText。這個方法也是利用 subword 的方式解決 OOV。和之前的 subword algorithm 不同的是,FastText 並不為 subword 創造出一個新的 vocabulary entry。相對地, FastText 仍舊使用 word2vec word-level 學習 word embedding 的模型,不一樣的是 FastText 會計算每一個單詞的 n-gram 表示,與原單詞一併相加計算貢獻。

參考資料:

  1. 3 subword algorithms help to improve your NLP model performance(英)
  2. Stanford 2019 CS224N #12 subword(英)
  3. Complete Guide to Subword Tokenization Methods in the Neural Era(英)
  4. Dynamic Programming Encoding for Subword Segmentation in Neural Machine Translation(英,DPE 論文)

延伸閱讀:

  1. 深度學習甜點系列:以字頻為主的語言模型
  2. 深度學習甜點系列:以單字為基礎的語言模型
  3. 深度學習甜點系列:以字母為基礎的語言模型
為什麼會看到廣告
avatar-img
71會員
35內容數
<p>專為年輕的女孩設計的科學/資訊科技寫作計畫,希望讓每位女孩在體脂肪、青春痘與暗戀對象之外,還能找到新的生活樂趣。</p>
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Rene Wang的沙龍 的其他內容
本篇文章前半段先對網路裁減做簡單介紹,後半段針對彩卷假說作文獻式的探討。網路裁減是一種重新發現等價小網路的方法,主要目的在為 over-parameterized 的方式訓練而成的類神經網路提供一個精簡版的網路,有助於在資源受限的平台上運行。彩卷假說則是探討權重初始值和網路裁減之間的關係。
多任務學習指的是使用多個相關的任務目標(Multiple objectives)來學習共享的表示方法。在這篇文章中,我們會介紹 google 的 youtube recommender 系統就是利用 Multi-gate Mixture of Experts 來達成多目標多任務學習的方式。
連同上兩篇文章,我們介紹了機械學習裡的基石,並踩著這些基石了解了改變資料餵送方式,以及動態改變學習率或在更新項中加入動量的方法。我們可以看到這些梯度下降的變化,主要是解決兩個問題:梯度震盪和非最佳的局部最小值造成學習停滯不前的問題。在這篇文章中,我們著重動量和 Adam 的方法來達成克服以上的問題。
這篇文章從類神經網路的起源,也就是單神經元的感知器。簡單的感知器迭代演算法使單神經元可以學習,但卻無法學習超過非線性,如 XOR 的資料分布。另外,本文還介紹了 Logistic regression,藉由透過非線性轉換來使線性輸出近似於機率分佈。最後則以一場大師賭局結束(SVM vs NN)。
在 2018 年,筆者介紹了普華永道(PwC)關於人工智慧的十項預測。我們將要藉由這篇文章,先來回顧在過去的一年中,電腦視覺和自然語言領域有什麼新的發展。在本文的最後,則提及 PwC 在今年提出的六項建議,主要使已投資 AI 的公司能成功商轉,以及關於自動化資料處理和機械學習的現況。
本文提到如何以類神經網路為主的深度學習方法,來進行物體偵測。文中包括基礎的物體偵測簡介:如影像問題分類,影像處理和傳統非類神經網路為主的物體偵測方法。這些傳統方法,仍可以在類神經網路的方法中找到其應用。最後簡略敘述當前使用深度卷積網路作為物體偵測的主要研究方向,並對學術界常用的訓練資料集做分析介紹。
本篇文章前半段先對網路裁減做簡單介紹,後半段針對彩卷假說作文獻式的探討。網路裁減是一種重新發現等價小網路的方法,主要目的在為 over-parameterized 的方式訓練而成的類神經網路提供一個精簡版的網路,有助於在資源受限的平台上運行。彩卷假說則是探討權重初始值和網路裁減之間的關係。
多任務學習指的是使用多個相關的任務目標(Multiple objectives)來學習共享的表示方法。在這篇文章中,我們會介紹 google 的 youtube recommender 系統就是利用 Multi-gate Mixture of Experts 來達成多目標多任務學習的方式。
連同上兩篇文章,我們介紹了機械學習裡的基石,並踩著這些基石了解了改變資料餵送方式,以及動態改變學習率或在更新項中加入動量的方法。我們可以看到這些梯度下降的變化,主要是解決兩個問題:梯度震盪和非最佳的局部最小值造成學習停滯不前的問題。在這篇文章中,我們著重動量和 Adam 的方法來達成克服以上的問題。
這篇文章從類神經網路的起源,也就是單神經元的感知器。簡單的感知器迭代演算法使單神經元可以學習,但卻無法學習超過非線性,如 XOR 的資料分布。另外,本文還介紹了 Logistic regression,藉由透過非線性轉換來使線性輸出近似於機率分佈。最後則以一場大師賭局結束(SVM vs NN)。
在 2018 年,筆者介紹了普華永道(PwC)關於人工智慧的十項預測。我們將要藉由這篇文章,先來回顧在過去的一年中,電腦視覺和自然語言領域有什麼新的發展。在本文的最後,則提及 PwC 在今年提出的六項建議,主要使已投資 AI 的公司能成功商轉,以及關於自動化資料處理和機械學習的現況。
本文提到如何以類神經網路為主的深度學習方法,來進行物體偵測。文中包括基礎的物體偵測簡介:如影像問題分類,影像處理和傳統非類神經網路為主的物體偵測方法。這些傳統方法,仍可以在類神經網路的方法中找到其應用。最後簡略敘述當前使用深度卷積網路作為物體偵測的主要研究方向,並對學術界常用的訓練資料集做分析介紹。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在AI時代中,GPT技術正在改變我們的生活。然而,SLM(小型語言模型)也開始受到關注,具有更高的效率、更低的資源消耗和更快的響應速度。這篇文章將討論LLM和SLM的比較、SLM的應用場景以及未來的發展趨勢。
Thumbnail
在數位化的世界中,用戶介面和信息圖表等視覺元素扮演著越來越重要的角色,而ScreenAI的開發為自然語言處理和計算機視覺的融合開啟了新的可能性。
Thumbnail
在 AI 研究的領域中,理解和解釋語言模型如何處理和回應特定輸入始終是一項巨大挑戰。這種復雜性不僅限於模型的規模和結構,還涉及到它們如何在內部做出決策。為了應對這一挑戰,OpenAI 推出了一款名為 Transformer Debugger (TDB) 的工具,旨在深入探索小型語言模型的行為
Thumbnail
👨‍💻簡介 本文簡單介紹了 Go 語言的流程控制概念,涵蓋了從條件語句到迴圈,再到 range 遍歷數據結構,以及 goto 與標籤 label 的應用。主要知識點為如何使用 if 語句進行條件判斷,以及在不同情況下運用 switch 語句。
Thumbnail
當我 #盡量去看見自己的扭曲與壓抑, 並透過藝術去轉化, 才比較能接受 —— 這些陰影並沒有真的不好...。 即使他比較難被他人(和自我)所接受, 但他就存在於此; 他也需要被看見與承認。
Thumbnail
如果,有一天,台大20個學生,被移動到與世隔絕的荒島。而這個荒島並不荒,基本上有水、食物、所有的礦石、石油...等等,應有盡有,但就是沒有人,沒有文明,也沒有傳染病。有生之年,這20個學生沒辦法回去,只能在這個荒島上建立自己的文明。 100年後,這個文明可以發展到什麼程度呢?
Thumbnail
       我曾經是一個全職的職能治療師(註1)。熱愛學習、熱愛分享,學的又廣又多,學到什麼都用,用在自己、家人、實習學生、個案、同事身上,單純想在工作崗位上做著自已喜愛的事。其實也懷疑過,這樣是否太任性,是否沒有盡到治療師的責任跟義務,沒有能夠好好治療個案?我並不是根據深厚的理論基礎或實證研究而
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在AI時代中,GPT技術正在改變我們的生活。然而,SLM(小型語言模型)也開始受到關注,具有更高的效率、更低的資源消耗和更快的響應速度。這篇文章將討論LLM和SLM的比較、SLM的應用場景以及未來的發展趨勢。
Thumbnail
在數位化的世界中,用戶介面和信息圖表等視覺元素扮演著越來越重要的角色,而ScreenAI的開發為自然語言處理和計算機視覺的融合開啟了新的可能性。
Thumbnail
在 AI 研究的領域中,理解和解釋語言模型如何處理和回應特定輸入始終是一項巨大挑戰。這種復雜性不僅限於模型的規模和結構,還涉及到它們如何在內部做出決策。為了應對這一挑戰,OpenAI 推出了一款名為 Transformer Debugger (TDB) 的工具,旨在深入探索小型語言模型的行為
Thumbnail
👨‍💻簡介 本文簡單介紹了 Go 語言的流程控制概念,涵蓋了從條件語句到迴圈,再到 range 遍歷數據結構,以及 goto 與標籤 label 的應用。主要知識點為如何使用 if 語句進行條件判斷,以及在不同情況下運用 switch 語句。
Thumbnail
當我 #盡量去看見自己的扭曲與壓抑, 並透過藝術去轉化, 才比較能接受 —— 這些陰影並沒有真的不好...。 即使他比較難被他人(和自我)所接受, 但他就存在於此; 他也需要被看見與承認。
Thumbnail
如果,有一天,台大20個學生,被移動到與世隔絕的荒島。而這個荒島並不荒,基本上有水、食物、所有的礦石、石油...等等,應有盡有,但就是沒有人,沒有文明,也沒有傳染病。有生之年,這20個學生沒辦法回去,只能在這個荒島上建立自己的文明。 100年後,這個文明可以發展到什麼程度呢?
Thumbnail
       我曾經是一個全職的職能治療師(註1)。熱愛學習、熱愛分享,學的又廣又多,學到什麼都用,用在自己、家人、實習學生、個案、同事身上,單純想在工作崗位上做著自已喜愛的事。其實也懷疑過,這樣是否太任性,是否沒有盡到治療師的責任跟義務,沒有能夠好好治療個案?我並不是根據深厚的理論基礎或實證研究而