方格精選

[探索] 語言模型基礎: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
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
大語言模型通常會生產自己的「嵌入 Embedding」作為部分的輸入層, 並且在大語言模型的訓練途中不斷優化嵌入的方式, 以對特定的任務特定的數據優化。 而大語言模型使用的「嵌入維度 Embedding Dimension」通常是高維度的, 例如最小的GPT-2模型有1億1千
Thumbnail
上回我們講到 Word Embedding 能夠將字詞表示從使用字典索引改成詞向量表示,且這個詞向量能夠包含一定程度上的語義訊息,今天就讓我們探討 Word Embedding 到底是如何訓練成的。
從頭開始寫大語言模型的程式碼, 是最好理解大語言模型的機制與限制的方風。 從頭開始寫大語言模型的程式碼,可以幫助我們得到預訓練與微調整開源大語言模型架構所需要的知識,並應用到特定領域的數據及以及任務。 客製化大語言模型一般來說比起通用大語言模型有更好的表現。 一個具體的例子是
大語言模型是一種特殊的神經網路,設計來理解,生成與回應人類的文本。 大語言模型是使用大量文本數據訓練的深度神經網路,其訓練使用的文本數據甚至包括了整個網路公開的文本。 大語言模型的「大」,體現於模型的參數個數以及其使用的訓練數據集。如此大的模型可以有百億甚至千億的參數。這些參數都是神經網
大語言模型,例如OpenAI提供的ChatGPT,是過去幾年發展的深度神經網路模型,開啟自然語言處理的新紀元。
Thumbnail
語言模型與文字表示以不同的方式來分析自然語言的詞語分佈及語意關係。本文章簡要介紹了語言模型、Word2vec、FastText、GloVe和Transformer等技術,並提供了實際的應用參考點,幫助讀者深入理解自然語言處理的技術。
Thumbnail
在 AI 研究的領域中,理解和解釋語言模型如何處理和回應特定輸入始終是一項巨大挑戰。這種復雜性不僅限於模型的規模和結構,還涉及到它們如何在內部做出決策。為了應對這一挑戰,OpenAI 推出了一款名為 Transformer Debugger (TDB) 的工具,旨在深入探索小型語言模型的行為
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
對於熱衷於語言科技的你, 大語言模型(LLMs)在自然語言處理(NLP)領域的發展無疑是一個革命性的進展。 從傳統的規則系統到基於深度學習的方法, LLMs展現了在理解、生成和翻譯人類語言方面的巨大突破。 這不僅是技術上的飛躍, 更是開啟了新的應用和可能性。 下面將介紹這一變革帶來的三大
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
大語言模型通常會生產自己的「嵌入 Embedding」作為部分的輸入層, 並且在大語言模型的訓練途中不斷優化嵌入的方式, 以對特定的任務特定的數據優化。 而大語言模型使用的「嵌入維度 Embedding Dimension」通常是高維度的, 例如最小的GPT-2模型有1億1千
Thumbnail
上回我們講到 Word Embedding 能夠將字詞表示從使用字典索引改成詞向量表示,且這個詞向量能夠包含一定程度上的語義訊息,今天就讓我們探討 Word Embedding 到底是如何訓練成的。
從頭開始寫大語言模型的程式碼, 是最好理解大語言模型的機制與限制的方風。 從頭開始寫大語言模型的程式碼,可以幫助我們得到預訓練與微調整開源大語言模型架構所需要的知識,並應用到特定領域的數據及以及任務。 客製化大語言模型一般來說比起通用大語言模型有更好的表現。 一個具體的例子是
大語言模型是一種特殊的神經網路,設計來理解,生成與回應人類的文本。 大語言模型是使用大量文本數據訓練的深度神經網路,其訓練使用的文本數據甚至包括了整個網路公開的文本。 大語言模型的「大」,體現於模型的參數個數以及其使用的訓練數據集。如此大的模型可以有百億甚至千億的參數。這些參數都是神經網
大語言模型,例如OpenAI提供的ChatGPT,是過去幾年發展的深度神經網路模型,開啟自然語言處理的新紀元。
Thumbnail
語言模型與文字表示以不同的方式來分析自然語言的詞語分佈及語意關係。本文章簡要介紹了語言模型、Word2vec、FastText、GloVe和Transformer等技術,並提供了實際的應用參考點,幫助讀者深入理解自然語言處理的技術。
Thumbnail
在 AI 研究的領域中,理解和解釋語言模型如何處理和回應特定輸入始終是一項巨大挑戰。這種復雜性不僅限於模型的規模和結構,還涉及到它們如何在內部做出決策。為了應對這一挑戰,OpenAI 推出了一款名為 Transformer Debugger (TDB) 的工具,旨在深入探索小型語言模型的行為
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是本篇論文取得的成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。跟著我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
Thumbnail
對於熱衷於語言科技的你, 大語言模型(LLMs)在自然語言處理(NLP)領域的發展無疑是一個革命性的進展。 從傳統的規則系統到基於深度學習的方法, LLMs展現了在理解、生成和翻譯人類語言方面的巨大突破。 這不僅是技術上的飛躍, 更是開啟了新的應用和可能性。 下面將介紹這一變革帶來的三大