0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Subword Model的兩種模型解析

深度學(xué)習(xí)自然語言處理 ? 來源:博客 ? 作者:芙蕖 ? 2020-08-31 10:56 ? 次閱讀

之前介紹的模型都是基于詞向量的, 那么能不能換一個(gè)角度來表示語言。說英文的時(shí)候, 每個(gè)單詞都是由音節(jié)構(gòu)成的, 而人們聽到了連續(xù)的音節(jié)就可以理解其中的含義, 而音節(jié)顯然比詞粒度更細(xì)。

首先,來梳理下word-level存在的幾個(gè)問題:

需要系統(tǒng)需要極大的詞匯量;

如果遇到了不正式的拼寫, 系統(tǒng)很難進(jìn)行處理;

做翻譯問題時(shí), 音譯姓名比較難做到。

為了解決這些問題, 一開始想到的是采用character級(jí)別的模型,即對(duì)26個(gè)字母訓(xùn)練word2vec,每個(gè)詞由其字母的embedding拼接或者求平均得到。但這種方法梯度消失(爆炸)的問題也會(huì)更嚴(yán)重。

后來,人們就想用subword模型作為character和word的折中模型。subword模型主要有兩種,它們都能解決未登錄詞(OOV)的問題。第一種是模型結(jié)構(gòu)和word模型完全一樣,只不過把word換成了subword。第二種則是word和character模型的雜交模型。

一、人類語言聲音:語音學(xué)和音系學(xué)

語音學(xué)(Phonetics)是一種非常基本的理論,只要是正常人,有著相同的人體器官和相同的發(fā)聲結(jié)構(gòu),就會(huì)遵循著相同的發(fā)聲規(guī)則和原理。

語音體系(Phonology)是有語義的聲音的合集,各國(guó)各文明的人都會(huì)制定自己的語音體系。

音素(Phoneme)是語音中劃分出來的最小的語音單位,分為元音和輔音

國(guó)際音標(biāo)(由音素構(gòu)成)按理來說可以表示所有的語音,但是會(huì)發(fā)現(xiàn)好多語音是沒有語義的,這時(shí)我們采取的辦法就是看音素的下一級(jí)(part of words)。

詞法學(xué):一個(gè)n-grams的代替方案。在基于單詞的模型中存在一些問題:需要處理很大的詞匯表,在英語中單詞只要變個(gè)形態(tài)就是另一個(gè)單詞了,比如說:gooooood bye

二、字符級(jí)模型(Character-LevelModels)

通常針對(duì)字符級(jí)的模型有兩種處理思路:一種是把原有的詞向量分解處理,一種是把連接的語言分解成字符。

單詞嵌入可以由字符嵌入表示:

能為不知道的單詞生成嵌入

相似的拼寫有相似的嵌入

解決了oov問題

這兩種方法都被證明是成功的。后續(xù)也有很多的工作使用字符級(jí)的模型來解決NMT任務(wù)。但這些任務(wù)有一些共同的缺點(diǎn),由于從單詞替換成字符導(dǎo)致處理的序列變長(zhǎng),速度變慢;由于序列變長(zhǎng),數(shù)據(jù)變得稀疏,數(shù)據(jù)之間的聯(lián)系的距離變大,不利于學(xué)習(xí)。于是2017年,Jason等人發(fā)表了論文Fully Character-Level Neural MachineTranslation without Explicit Segmentation 解決了這些問題。

論文的模型結(jié)構(gòu)如圖所示:

首先是對(duì)輸入的character首先做一個(gè)embedding, 然后分別與大小為3,4,5的filter進(jìn)行卷積運(yùn)算,就相當(dāng)于3-grams, 4-grams和5-grams。之后進(jìn)行max-pooling操作,相當(dāng)與選出了有語義信息的segment-embedding。之后將這些embedding送入Highway Network(相當(dāng)于resnet, 解決了深層神經(jīng)網(wǎng)絡(luò)不容易訓(xùn)練的問題)后再通過一個(gè)單層的雙向GRU,得到最終的encoder的output。之后經(jīng)過一個(gè)character-level的GRU(作為decoder)得到最終結(jié)果。

還有一篇2018年的文章(Revisiting Character-Based Neural Machine Translation with Capacity andCompression. 2018.Cherry, Foster, Bapna, Firat, Macherey, Google AI)中展示了純字符級(jí)模型的效果。此論文表明在一些復(fù)雜的語言中(比如捷克語),character級(jí)別的模型會(huì)大幅提高翻譯準(zhǔn)確率,但在較為簡(jiǎn)單的語言中(如英語法語),character級(jí)別的模型提升效果不顯著。同時(shí),研究發(fā)現(xiàn)在模型較小時(shí)word-level的模型效果更好,在模型較大時(shí)character-level 的效果更好。如圖所示:

總之,現(xiàn)有的character-level的模型在NMT任務(wù)上可以更好的處理OOV的問題,可以理解為我們可以學(xué)習(xí)一些字符級(jí)別的語義信息幫助我們進(jìn)行翻譯。

三、子詞模型(Sub-word models)

所謂subword,就是取一個(gè)介于字符和單詞之間成分為基本單元建立的模型。而所謂Byte Pair Encoding(一下簡(jiǎn)稱BPE),就是尋找經(jīng)常出現(xiàn)在一起的Byte對(duì),合并成一個(gè)新的Byte加入詞匯庫中。即若給定了文本庫,若我們的初始詞匯庫包含所有的單個(gè)字符,則我們會(huì)不斷的將出現(xiàn)頻率最高的n-gram的pair作為新的n-gram加入詞匯庫中,直到達(dá)到我們的要求。

課程在這里介紹了介于word-level和char-leval之間的Sub-word models,主要一般有兩種結(jié)構(gòu),一種是仍采用和word-level相同的結(jié)構(gòu),只不過采用更小的單元word pieces來代替單詞;另一種是hybrid architectures, 主要部分依然是基于word, 但是其他的一些部分用characters

Hybrid architectures:主要的模型含有單詞,一些其他的含有字符、字節(jié)對(duì)的編碼。使用的是一個(gè)壓縮算法:將大部分頻繁出現(xiàn)的字節(jié)對(duì)標(biāo)記為新的字節(jié)對(duì)。

3.1 Byte Pair Encoding(BPE)

Byte Pair Encoding,簡(jiǎn)稱BPE,是一種壓縮算法。

給定了文本庫,我們的初始詞匯庫僅包含所有的單個(gè)的字符,然后不斷的將出現(xiàn)頻率最高的n-gram pair作為新的n-gram加入到詞匯庫中,直到詞匯庫的大小達(dá)到我們所設(shè)定的某個(gè)目標(biāo)為止。如圖所示:

上述例子是,比如有一個(gè)初始的文本庫和詞匯庫。首先,可見此時(shí)出現(xiàn)頻率最高的n-gram pair是“e,s”,出現(xiàn)了9次,因此我們將“es”作為新詞加入到詞匯庫中同時(shí)更新文本庫。然后,這時(shí)詞匯庫中出現(xiàn)頻率最高的n-gram pair是“es,t”,出現(xiàn)了9次,因此我們將“est”加入詞匯庫中同時(shí)更新文本庫。依次類推,可以逐漸的通過增加新的n-gram的方式達(dá)到我們的目標(biāo)。對(duì)于現(xiàn)實(shí)生活中有很多詞匯量非常大的task,這種通過BPE逐步建立詞匯庫的方式就顯得非常有用了。

使用這種方法可以自動(dòng)生成vocab。

谷歌的NMT模型有兩個(gè)版本,版本一采用的是BPE模型,版本二對(duì)BPE模型進(jìn)行了改進(jìn),稱為wordpiece mode。這種方法不在使用n-gram的計(jì)算來算,而是使用搜索算法搜索最大化的該語言模型的片段去選擇pieces。

另外還有一種模型叫sentencepiece,它直接從raw text中獲取,同時(shí)把空格視為一種特殊的token(_)

課程介紹了幾篇在這方面發(fā)展的論文,有用Character-level去產(chǎn)生詞向量的(LearningCharacter-level Representations for Part-of Speech Tagging),還有用char-level結(jié)合high-way網(wǎng)絡(luò)進(jìn)行機(jī)器翻譯的。

課程分析用char-level得到詞向量的特點(diǎn),經(jīng)由他們直接輸出的word-embedding更傾向于在形狀上相似,輸入high-way之后,形狀上的相似會(huì)朝含義上的相似發(fā)展。如圖所示:

使用char-level的可以輕易解決,此沒有出現(xiàn)在詞庫的情況,如圖所示:

四、混合字符和詞級(jí)模型

4.1 Hybrid NMT

核心思想:大部分時(shí)候都使用word-level的模型來做translate,只有在遇到rare or unseen的words的時(shí)候才會(huì)使用character-level的模型協(xié)助。這種做法產(chǎn)生了非常好的效果。

混合模型即兩種方式并存的模型,在正常處理時(shí)采用word-level的模型,當(dāng)出現(xiàn)奇怪的詞的后,使用char-level級(jí)的模型。

一篇論文的結(jié)構(gòu)如圖所示:

可以看到輸入未知的單詞時(shí),采用char-level進(jìn)行編碼,輸出《 unk 》時(shí)也采用char-level級(jí)的進(jìn)行解碼。同時(shí)訓(xùn)練跟beam-search也時(shí)要同時(shí)對(duì)兩個(gè)結(jié)構(gòu)進(jìn)行。

4.2 Chars for word embeddings

采用subword的方式長(zhǎng)生詞向量,課程中提到了FastText。主要思路如圖所示:

字符的卷積來生成詞嵌入

使用pos標(biāo)記固定的窗口

五、FastText

使用n-grams和整個(gè)單詞來代表單詞。我們知道在word2vec方法中我們基于word-level的模型來得到每一個(gè)單詞的embedding,但是對(duì)于含有許多OOV單詞的文本庫word2vec的效果并不好。由此很容易聯(lián)想到,如果將subword的思想融入到word2vec中是不是會(huì)產(chǎn)生更好的效果呢?

FastText embeddings是一個(gè)word2vec like embedding。用where舉例, 它把單詞表示成了: “where = 《wh, whe, her,ere, re》, 《where》”這樣的形式。 注意這里的“《》”符號(hào)是表達(dá)了開始和結(jié)束。 這樣就可以有效地解決OOV的問題, 并且速度依然很快。

然后把它們加起來:

于是,就可以使用原有的word2vec算法來訓(xùn)練得到對(duì)應(yīng)單詞的embedding。其保證了算法速度快的同時(shí),解決了OOV的問題,是很好的算法。

5.1 FastText和word2vec的區(qū)別

1. 相似處:

圖模型結(jié)構(gòu)很像,都是采用embedding向量的形式,得到word的隱向量表達(dá)。

都采用很多相似的優(yōu)化方法,比如使用Hierarchicalsoftmax優(yōu)化訓(xùn)練和預(yù)測(cè)中的打分速度。

2. 不同處:

模型的輸出層:word2vec的輸出層,對(duì)應(yīng)的是每一個(gè)term,計(jì)算某term的概率最大;而fasttext的輸出層對(duì)應(yīng)的是分類的label。不過不管輸出層對(duì)應(yīng)的是什么內(nèi)容,起對(duì)應(yīng)的vector都不會(huì)被保留和使用。

模型的輸入層:word2vec的輸出層,是 context window 內(nèi)的term;而fasttext 對(duì)應(yīng)的整個(gè)sentence的內(nèi)容,包括term,也包括 n-gram的內(nèi)容。

3. 兩者本質(zhì)的不同,體現(xiàn)在 h-softmax的使用:

Word2vec的目的是得到詞向量,該詞向量 最終是在輸入層得到,輸出層對(duì)應(yīng)的 h-softmax也會(huì)生成一系列的向量,但最終都被拋棄,不會(huì)使用。

fastText則充分利用了h-softmax的分類功能,遍歷分類樹的所有葉節(jié)點(diǎn),找到概率最大的label(一個(gè)或者N個(gè))

FastText是一個(gè)能用淺層網(wǎng)絡(luò)取得和深度網(wǎng)絡(luò)相媲美的精度,并且分類速度極快的算法。按照作者的說法“在標(biāo)準(zhǔn)的多核CPU上,能夠訓(xùn)練10億詞級(jí)別語料庫的詞向量在10分鐘之內(nèi),能夠分類有著30萬多類別的50多萬句子在1分鐘之內(nèi)”。但是它也有自己的使用條件,它適合類別特別多的分類問題,如果類別比較少,容易過擬合。

六、寫到最后

本文介紹了Subword Model的兩種模型。對(duì)于第一種模型,其關(guān)鍵點(diǎn)在于怎樣得到subword,在此采用BPE算法來提取高頻Subword的形式。第二種被稱為雜交模型的方法相對(duì)簡(jiǎn)單,是在文本中有這個(gè)word時(shí)就用word embedding,沒有的時(shí)候就用char embedding來學(xué)習(xí)word embedding,非常簡(jiǎn)單。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Model
    +關(guān)注

    關(guān)注

    0

    文章

    337

    瀏覽量

    24953

原文標(biāo)題:【NLP入門】通俗講解Subword Models

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問如何將HSPICE和 IBIS兩種模型怎么轉(zhuǎn)換成TINA軟件中用?

    TI網(wǎng)站里,給出了一些期間的HSPICE和IBIS模型,但是現(xiàn)有的仿真工具 只有TINA這種,請(qǐng)問如何將HSPICE和 IBIS兩種模型怎么轉(zhuǎn)換成TINA軟件中用? 請(qǐng)高手給予解答。感謝!
    發(fā)表于 09-02 07:56

    請(qǐng)問這兩種機(jī)械手模型哪種實(shí)驗(yàn)性能更好,可擴(kuò)展性更好

    `我打算買個(gè)六軸機(jī)械手模型用來驗(yàn)證自動(dòng)運(yùn)行算法,但不知道從機(jī)械角度上來來說哪種實(shí)驗(yàn)性能更好,可擴(kuò)展性更好,這兩種都是數(shù)字舵機(jī)帶動(dòng)的。麻煩給出為什么的理由,謝謝!左上角那種好像是工業(yè)機(jī)械手的模型,右下角那種是什么呢?
    發(fā)表于 07-15 17:00

    突然發(fā)現(xiàn)有兩種電壓源和電流源等效模型

    今天看書才發(fā)現(xiàn)有兩種電壓源電流源等效變換, 之前一直沒注意. 1. 我以前一直是 電壓源和電阻串聯(lián), 電流源和電阻并聯(lián)的模型. 這可以解釋得通 I*R = U2. 今天發(fā)現(xiàn)高頻書上是 電流源和電導(dǎo)
    發(fā)表于 03-14 14:31

    IC設(shè)計(jì)基礎(chǔ):說說wire load model

    說起wire load model,IC設(shè)計(jì)EDA流程工程師就會(huì)想到DC的兩種工具模式:線負(fù)載模式(wire load mode)和拓?fù)淠J?topographicalmode)。為什么基本所有深亞
    發(fā)表于 05-21 18:30

    怎么實(shí)現(xiàn)兩種智能小車的建模與仿真?

    1.兩種智能小車的構(gòu)造簡(jiǎn)介在市面上常見的兩種智能小車都是基于輪式的,在某寶上面賣的最多的,各位在學(xué)生時(shí)代拿來應(yīng)付課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)用的各種小車分為兩種。1.后輪驅(qū)動(dòng),前輪阿克曼轉(zhuǎn)向的,通常后軸通過有
    發(fā)表于 08-30 06:08

    了解實(shí)際電源的兩種模型及其等效變換

    。 2 .了解實(shí)際電源的兩種模型及其等效變換。 3 .了解非線性電阻元件的伏安特性和靜態(tài)電阻、動(dòng)態(tài)電阻的概念以及簡(jiǎn)單的非線性電阻電路的圖解分析法。第1章電路的分析方法、1.3.3電壓源和電流源的等效變換、圖...
    發(fā)表于 09-06 07:57

    keras順序模型與函數(shù)式模型

    keras提供兩種搭建模型的方式: 1. 順序模型(也可看做是函數(shù)式模型的一特殊情況) 2. 函數(shù)式
    發(fā)表于 08-18 06:01

    機(jī)器人運(yùn)動(dòng)控制的兩種模型

    以六自由度模塊化機(jī)器人為對(duì)象,利用D-H坐標(biāo)變換方法進(jìn)行運(yùn)動(dòng)學(xué)分析,計(jì)算出各桿之間的齊次坐標(biāo)變換矩陣,建立求解機(jī)器人逆運(yùn)動(dòng)學(xué)問題的兩種模型。并根據(jù)兩種模型應(yīng)用vc++
    發(fā)表于 08-05 11:34 ?14次下載

    PWM控制器SG3525的兩種模型

    高頻開關(guān)電源的計(jì)算機(jī)輔助分析與設(shè)計(jì)(CAA/ CAD) 要求建立脈沖寬度調(diào)制(PWM) 控制器的有效模型. 介紹了SG3525 的兩種不同的宏模型. 模型Ⅰ提供了全功能等效電路, 可應(yīng)
    發(fā)表于 01-10 12:12 ?94次下載

    機(jī)器人運(yùn)動(dòng)控制的兩種模型

    以六自由度模塊化機(jī)器人為對(duì)象,利用D-H坐標(biāo)變換方法進(jìn)行運(yùn)動(dòng)學(xué)分析,計(jì)算出各桿之間的齊次坐標(biāo)變換矩陣,建立求解機(jī)器人逆運(yùn)動(dòng)學(xué)問題的兩種模型。并根據(jù)兩種模型應(yīng)用vc++程
    發(fā)表于 07-20 15:33 ?24次下載

    兩種基于測(cè)量的微波非線性電路頻域黑箱模型

    大信號(hào)網(wǎng)絡(luò)分析和建模是射頻微波電路測(cè)量和設(shè)計(jì)中的關(guān)鍵技術(shù)。論文研究了兩種微波非線性電路頻域黑箱建模的新方法, X 參數(shù)和非線性散射函數(shù)模型。推出了兩種模型的相互關(guān)系,
    發(fā)表于 09-01 16:11 ?18次下載

    Verilog的兩種塊語句解析

    1. 塊語句有兩種,一是 begin-end 語句, 通常用來標(biāo)志()執(zhí)行的語句;一是 fork-join 語句,通常用來標(biāo)志()執(zhí)行的語句。 答案:順序,并行 解析: (1)be
    的頭像 發(fā)表于 06-18 15:16 ?2956次閱讀

    兩種MOS冗余驅(qū)動(dòng)方案

    兩種MOS冗余驅(qū)動(dòng)方案
    發(fā)表于 10-28 12:00 ?2次下載
    <b class='flag-5'>兩種</b>MOS冗余驅(qū)動(dòng)方案

    理解什么是NLP Subword算法

    Subword算法如今已經(jīng)成為了一個(gè)重要的NLP模型性能提升方法。自從2018年BERT橫空出世橫掃NLP界各大排行榜之后,各路預(yù)訓(xùn)練語言模型如同雨后春筍般涌現(xiàn),其中Subword算法
    的頭像 發(fā)表于 02-22 14:16 ?478次閱讀

    兩種常見的移相器電路原理解析

    移相器的電路原理可以有多種實(shí)現(xiàn)方式,以下是兩種常見的移相器電路原理。
    的頭像 發(fā)表于 09-19 11:02 ?2546次閱讀