許久沒(méi)有更新,今天來(lái)水一篇之前在arXiv上看到的論文,這篇NFLAT是對(duì)FLAT的改進(jìn)(其實(shí)也是對(duì)TENER的改進(jìn)),F(xiàn)LAT在文本后面掛單詞的方式可能會(huì)導(dǎo)致文本長(zhǎng)度過(guò)長(zhǎng),論文中講長(zhǎng)度平均會(huì)增加40%,從而導(dǎo)致:
self-attention的時(shí)候計(jì)算量和顯存占用量增大,限制了FLAT對(duì)更大更復(fù)雜的詞表的使用;
有一些冗余計(jì)算,比如“word-word”和“word-character”級(jí)別的self attention是沒(méi)有必要做的,因?yàn)樵贔LAT中word部分在解碼的時(shí)候會(huì)被mask掉(如下圖),不參與后續(xù)計(jì)算,所以只需要"character-character"和“character-word”級(jí)別的self-attention。
FLAT中word部分在解碼的時(shí)候會(huì)被MASK掉
其實(shí)講到這里,相信讀者們也看出來(lái)了,改進(jìn)思路已經(jīng)比較明顯了:既然只要"character-character"和“character-word”級(jí)別的self-attention,那么就拆開(kāi)搞,「不要把word往句子后面拼了,而是character有一個(gè)序列(原始文本序列),word有一個(gè)序列(原始文本序列在外部詞表中匹配出來(lái)的單詞序列)」:
先進(jìn)行“character-word”的attention,獲得融合了word邊界和語(yǔ)義信息的character表征——論文中稱(chēng)這部分叫「InterFormer」;
再做"character-character"級(jí)別的self-attention,獲取最終character表征——「Transformer Encoder」,論文這部分用的TENER對(duì)Transformer Encoder的改動(dòng),所以其實(shí)這篇論文也是對(duì)TENER的改進(jìn)方案,「是TENER+外部詞典的解決方案」。
模型分為上面所說(shuō)的三個(gè)模塊,接下來(lái)我們一個(gè)一個(gè)介紹。
模型
NFLAT模型結(jié)構(gòu)
1. InterFormer
其實(shí)就是Transformer Encoder的改進(jìn)版,InterFormer包含多頭inter-attention和一個(gè)FFN,目的是構(gòu)建non-flat-lattice,可以同時(shí)對(duì)character和word兩個(gè)不同長(zhǎng)度的序列進(jìn)行建模,讓他們交互,從而獲得融合了word邊界和語(yǔ)義信息的character表征。
對(duì)Transformer Encoder的改進(jìn)主要是:
「attention中query/key/value不再同源」,也就不再是self-attention,「character序列作為query的輸入,word序列作為key和value的輸入」。這樣的話attention在character序列中每個(gè)字上的輸出就是word序列中與這個(gè)字相關(guān)的word表征(value)的加權(quán)求和的結(jié)果。
他們?cè)趙ord序列中加入了一個(gè)標(biāo)記
「參考了TransformerXL和FLAT中的相對(duì)位置編碼部分,同時(shí)做了一些改動(dòng)」。
下面直接列公式了:
輸入:character序列embedding ,word序列embedding。
獲取QKV表征:
計(jì)算Inter-Attention
是attention中常規(guī)操作,就是對(duì)序列中padding部分的score賦一個(gè)很小的值,讓softmax后結(jié)果為0的;
的計(jì)算方法參考了TransformerXL,只是相對(duì)距離的表征的計(jì)算方式不太一樣,是參考FLAT,但也做了一些改動(dòng),F(xiàn)LAT中計(jì)算了四種位置距離表征:head-head, head-tail, tail-head, tail-tail,但這里只有兩種位置距離:character head - word head ()和 character tail - word tail ()。
同樣這個(gè)Inter-attention也可以做成multi-head attention的方式:
然后是FFN、殘差連接、PostNorm
通過(guò)上面的這一系列操作,我們就獲得了“「融合了word邊界和語(yǔ)義信息的character表征」”。
2. Transformer Encoder
然后進(jìn)行"character-character"級(jí)別的上下文編碼,用TENER中改造的Transformer Encoder,也就是兩部分改動(dòng):
Un-scaled Dot-Product Attention,TENER中發(fā)現(xiàn)不進(jìn)行scale的attention比進(jìn)行了scale的在NER上的效果要好;
使用了對(duì)方向和距離敏感的相對(duì)位置編碼,其實(shí)和上面Inter-attention中相對(duì)位置編碼差不多,就是就只有query位置-value位置。
所以NFLAT其實(shí)就是在TENER前面加了一個(gè)模塊。
3. 最后就是CRF層
實(shí)驗(yàn)結(jié)果
數(shù)據(jù):
數(shù)據(jù)集
外部詞表:
外部詞表他們主要采用了:https://github.com/jiesutd/RichWordSegmentor
結(jié)果:
如下圖,可以看到,NFLAT在4個(gè)數(shù)據(jù)集上效果都還挺好的,達(dá)到了SOTA。
實(shí)驗(yàn)結(jié)果
效率分析
時(shí)間復(fù)雜度:
n是character序列長(zhǎng)度,m是word序列的長(zhǎng)度,一般n越長(zhǎng),m越長(zhǎng),所以看復(fù)雜度的話NFLAT還是降低了許多了,作者們還做了相關(guān)的實(shí)驗(yàn),每種長(zhǎng)度挑選1000個(gè)句子,用batch_size=1計(jì)算跑完1k條句子的時(shí)間(3090的卡),發(fā)現(xiàn)句子長(zhǎng)度大于400的時(shí)候,NFLAT與FLAT的速度才會(huì)有差距。
運(yùn)行時(shí)間對(duì)比
FLAT:
NFLAT:
空間復(fù)雜度:
顯存占用還是有明顯差別的:
顯存占用對(duì)比
FLAT:O((n+m)^{2})
NFLAT:
差不多,這篇論文就到這里吧。
-
解碼
+關(guān)注
關(guān)注
0文章
181瀏覽量
27389 -
顯存
+關(guān)注
關(guān)注
0文章
108瀏覽量
13659 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24700
原文標(biāo)題:中文NER | 江南大學(xué)提出NFLAT:FLAT的一種改進(jìn)方案
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論