成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

中文NER的那些事兒5. Transformer相對位置編碼&TENER代碼實(shí)現(xiàn)

tylin / 2492人閱讀

摘要:如果截?cái)嚅L度為,位置編碼的,下圖是的在中給出了一種新的相對位置編碼,幾乎是和經(jīng)典的絕對位置編碼一一對應(yīng)。只是把絕對位置編碼替換成相對位置編碼,在兩個(gè)任務(wù)上都有的效果提升,最終效果也基本和一致。

這一章我們主要關(guān)注transformer在序列標(biāo)注任務(wù)上的應(yīng)用,作為2017年后最熱的模型結(jié)構(gòu)之一,在序列標(biāo)注任務(wù)上原生transformer的表現(xiàn)并不盡如人意,效果比bilstm還要差不少,這背后有哪些原因? 解決這些問題后在NER任務(wù)上transformer的效果如何?完整代碼詳見ChineseNER

Transformer水土不服的原因

Hang(2019)在TENER的論文中給出了兩點(diǎn)原因

1. 三角函數(shù)絕對位置編碼只考慮距離沒有考慮方向

2. 距離表達(dá)在向量project以后也會消失

我們先來回顧下原生Transformer的絕對位置編碼, 最初編碼的設(shè)計(jì)是為了滿足幾個(gè)條件

  • 每個(gè)絕對位置應(yīng)該有獨(dú)一無二的位置表征
  • 相對位置表征應(yīng)該和絕對位置無關(guān)以及句子長度無關(guān)
  • 編碼可以泛化到訓(xùn)練樣本之外的句子長度

于是便有了基于三角函數(shù)的編碼方式,在pos位置,維度是/(d_k/)的編碼中,第i個(gè)元素的計(jì)算如下

/[PE(pos, i)=/begin{cases}sin(w_k /cdot pos)& /text{if i=2k}//cos(w_k /cdot pos),& /text{if i=2k+1}/end{cases}/]

/[w_k = /frac{1}{10000^{2k/d_{model}}}/]

基于三角函數(shù)的絕對位置編碼是常數(shù),并不隨模型更新。在Transformer中,位置編碼會直接加在詞向量上,輸入的詞向量Embedding是E,在self-attention中Q,K進(jìn)行線性變換后計(jì)算attention,對value進(jìn)行加權(quán)得到輸出如下

/[/begin{align}q_i &= (E_i+P_i) /dot W_q^T //k_j &= (E_j+P_j) /dot W_k^T // v_j &= (E_j+P_j) /dot W_v^T // a_{i,j} &= softmax(q_ik_j//sqrt{d_k}) //output &= /sum_{j}v_j * a_{i,j}///end{align}/]

我們來對/(q_ik_j/)部分進(jìn)行展開可以得到

/[/begin{align}q_ik_ j&=E_iW_qW_K^TE_j^T(語義交互)+ P_iW_qW_K^TP_j^T (位置交互)//& + P_iW_qW_K^TE_j^T(query語義*key位置) + E_iW_qW_K^TP_j^T(key語義*query位置) ///end{align}/]

其中位置交互是唯一可能包含相對位置信息的部分,如果不考慮線性變換/(w_k/),/(w_q/)只看三角函數(shù)位置編碼,會發(fā)現(xiàn)位置編碼內(nèi)積是相對距離的函數(shù),如下

/[/begin{align}P_iP_j^T & = P_iP_{i+/Delta}^T //& = /sum_{k=0}^{d_k/2-1}sin(w_k /cdot i)sin(w_k /cdot (i+/Delta)) + cos(w_k /cdot i )cos(w_k /cdot (i+/Delta))//& = /sum_{k=0}^{d_k/2-1}cos(w_k /cdot(i-(i+/Delta))) =/sum_{k=0}^{d_k/2-1} cos(w_k /cdot /Delta)/end{align}/]

不同維度/(d_k/),/(P_iP_j^T/)/(/Delta/)的關(guān)系如下,會發(fā)現(xiàn)位置編碼內(nèi)積是對稱并不包含方向信息,而BiLSTM是可以通過雙向LSTM引入方向信息的。對于需要全局信息的任務(wù)例如翻譯,sentiment analysis,方向信息可能并不十分重要,但對于局部優(yōu)化的NER任務(wù),因?yàn)樾枰袛嗝總€(gè)token的類型,方向信息的缺失影響更大。

看完三角函數(shù)部分,我們把線性變換加上,下圖是加入隨機(jī)線性變換后/(P_iw_iw_j^TP_j^T/)/(/Delta/)的關(guān)系,會發(fā)現(xiàn)位置編碼的相對距離感知消失了,有人會問那這位置編碼有啥用,這是加了個(gè)寂寞???

個(gè)人感覺上圖的效果是加入隨機(jī)變換得到,而/(W_i,W_j/)本身是trainable的,所以如果相對距離信息有用,/(W_iW_j^T/)未必學(xué)不到,這里直接用隨機(jī)/(W_i/)感覺并不完全合理。But Anyway這兩點(diǎn)確實(shí)部分解釋了原生transformer在NER任務(wù)上效果打不過BiLSTM的原因。下面我們來看下基于絕對位置編碼的缺陷,都有哪些改良

相對位置編碼

既然相對位置信息是在self-attention中丟失的,最直觀的方案就是顯式的在self-attention中把相對位置信息加回來。相對位置編碼有很多種構(gòu)建方案,這里我們只回顧TENER之前相對經(jīng)典的兩種(這里參考了蘇神的讓研究人員絞盡腦汁的Transformer位置編碼再一次膜拜大神~)。為了方便對比,我們把經(jīng)典的絕對位置編碼計(jì)算的self-attenion展開再寫一遍

/[/begin{align}q_ik_ j&=E_iW_qW_K^TE_j^T + P_iW_qW_K^TP_j^T + P_iW_qW_K^TE_j^T + E_iW_qW_K^TP_j^T //a_{i,j} &= softmax(q_ik_j//sqrt{d_k}) //output &= /sum_{j}v_j * a_{i,j}///end{align}/]

RPR

(shaw et al,2018) 提出的RPR可以說是相對位置編碼的起源,計(jì)算也最簡單,只保留了以上Attention的語義交互部分,把key的絕對位置編碼,替換成key&Query的相對位置編碼,同時(shí)在對value加權(quán)時(shí)也同時(shí)引入相對位置,得到如下

/[/begin{align}q_ik_ j&=E_iW_qW_K^TE_j^T(語義交互)+ E_iW_qR_{ij}^T(相對位置att語義) //output &= /sum_{j}v_j * (a_{i,j} + R_{ij})///end{align}/]

這里/(R_{ij}/)是query第i個(gè)字符和key/value第j個(gè)字符之間的相對距離j-i的位置編碼,query第2個(gè)字符和key第4個(gè)字符交互對應(yīng)/(R_{-2}/)的位置編碼。這樣的編碼方式直接考慮了距離和方向信息。

這里的位置編碼PE是trainable的變量,為了控制模型參數(shù)的大小,同時(shí)保證位置編碼可以generalize到任意文本長度,對相對位置做了截?cái)?,畢竟?dāng)前字符確實(shí)不太可能和距離太遠(yuǎn)的字符之前存在上下文交互,所以滑動窗口的設(shè)計(jì)也很合理。如果截?cái)嚅L度為k,位置編碼PE的dim=2k+1,下圖是k=3的/(R_{ij}/)

/[R_{ij} = PE[min(max(i-j,-k),k)]/]

Transformer-XL/XLNET

(Dai et al,2019)在Transformer-XL中給出了一種新的相對位置編碼,幾乎是和經(jīng)典的絕對位置編碼一一對應(yīng)。

  • 把key的絕對位置編碼/(p_j/)替換成相對位置編碼/(R_{ij}/)
  • 把query的絕對位置編碼/(W_ip_i/),替換成learnable的兩個(gè)變量u和v,分別學(xué)習(xí)key的語義bias和相對位置bias,就得到了如下的attention計(jì)算,

/[/begin{align}q_ik_ j&=E_iW_qW_K^TE_j^T(語義交互)+ E_iW_qR_{ij}^TW_R^T(相對位置att語義)//&+ uE_jW_k(全局語義bias) + vR_{ij}W_R(全局位置bias)/end{align}/]

以上計(jì)算方案也被XLNET沿用,和RPR相比,Transfromer-XL

  • 只在attention計(jì)算中加入相對位置編碼,在對value加權(quán)時(shí)并沒有使用,之后相對位置的改良基本都只針對attention部分
  • PE沿用了三角函數(shù)而非trainable變量,所以不需要截?cái)鄈=max_seq_len。不過加了線性變換/(W_R/)來保留靈活性,且和絕對位置編碼不同的是,位置編碼和語義用不同的W來做線性變換
  • 加入了全局語義bias和全局位置bias,和絕對位置編碼相比每個(gè)term都有了明確的含義

TENER:相對位置編碼的NER模型

TENER是transformer在NER任務(wù)上的模型嘗試,文章沒有太多的亮點(diǎn),更像是一篇用更合適的方法來解決問題的工程paper。沿用了Transformer-XL的相對位置編碼, 做了兩點(diǎn)調(diào)整,一個(gè)是key本身不做project,另一個(gè)就是在attention加權(quán)時(shí)沒用對attenion進(jìn)行scale, 也就是以下的歸一化不再用/(/sqrt{d_k}/)對query和key的權(quán)重進(jìn)行調(diào)整,得到的attenion會更加sharp。這個(gè)調(diào)整可以讓權(quán)重更多focus在每個(gè)詞的周邊范圍,更適用于局部建模的NER任務(wù)。

/[a_{i,j} = softmax(q_ik_j//sqrt{d_k})/]

我們來直觀對比下,同樣的數(shù)據(jù)集和模型參數(shù)。絕對位置編碼和unscale的相對位置編碼attention的差異,這里都用了兩層的transformer,上圖是絕對位置編碼,下圖是unscale的相對位置編碼??梢悦黠@看到unscale的相對位置編碼的權(quán)重,在第一層已經(jīng)學(xué)習(xí)到部分周圍信息后,第二層的attention范圍進(jìn)一步縮小集中在詞周圍(一定程度上說明可能1層transfromer就夠用了),而絕對位置編碼則相對分散在整個(gè)文本域。

下面來對比下效果,transformer任務(wù)默認(rèn)都是用的bichar輸入,所以我們也和bilstm_bichar進(jìn)行對比,在原paper中作者除了對句子部分使用transformer來提取信息,還在token粒度做了一層transformer,不過這里為了更公平的和bilstm對比,我們只保留了句子層面的transformer。以下是分別在MSRA和PeopleDaily兩個(gè)任務(wù)上的效果對比。

只是把絕對位置編碼替換成相對位置編碼,在兩個(gè)任務(wù)上都有4~5%的效果提升,最終效果也基本和bilstm一致。這里沒做啥hyper search,參數(shù)給的比較小,整體上transformer任務(wù)擴(kuò)大embedding,ffnsize效果會再有提升~


REF

  1. TENER: Adapting Transformer Encoder for Named Entity Recognition, 2019, Hang Yan
  2. Self-attention with relative position represen- tations
  3. Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
  4. XLNet: Generalized Autoregressive Pretraining for Language Understanding
  5. 蘇劍林. (Feb. 03, 2021). 《讓研究人員絞盡腦汁的Transformer位置編碼 》[Blog post]. Retrieved from https://kexue.fm/archives/8130
  6. 工業(yè)界求解NER問題的12條黃金法則

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123761.html

相關(guān)文章

  • caffepython接口deploy形成caffemodel歸類新圖片

      本文主要是給大家介紹了caffe的python插口生成deploy文件學(xué)習(xí)培訓(xùn)及其用練習(xí)好一點(diǎn)的實(shí)體模型(caffemodel)來歸類新的圖片實(shí)例詳細(xì)說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪  caffe的python插口生成deploy文件  假如要將練習(xí)好一點(diǎn)的實(shí)體模型用于檢測新的圖片,那必然必須得一個(gè)deploy.prototxt文件,這一...

    89542767 評論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會不定期更...

    princekin 評論0 收藏0
  • 怎么用python正則表達(dá)式提取/匹配中文漢字

      小編寫這篇文章的一個(gè)主要目的,主要是給大家去做一個(gè)解答,解答的內(nèi)容主要還是python相關(guān)事宜,比如,可以用python正則表達(dá)式去匹配和提取中文漢字,那么,具體的內(nèi)容做法是什么呢?下面就給大家詳細(xì)解答下?! ython用正則表達(dá)式提取中文  Python re正則匹配中文,其實(shí)非常簡單,把中文的unicode字符串轉(zhuǎn)換成utf-8格式就可以了,然后可以在re中隨意調(diào)用  unicode中中...

    89542767 評論0 收藏0
  • Javaweb Q&A

    摘要:方法的參數(shù)不但可以使相對于上下文根的路徑,而且可以是相對于當(dāng)前的路徑。如和都是合法的路徑。 轉(zhuǎn)發(fā)與重定向區(qū)別是什么 在調(diào)用方法上 轉(zhuǎn)發(fā) 調(diào)用 HttpServletRequest 對象的方法 request.getRequestDispatcher(test.jsp).forward(req, resp); 重定向 調(diào)用 HttpServletResponse 對象的方法 res...

    hiyang 評論0 收藏0
  • Python Sklearn中19個(gè)實(shí)用隱藏功能詳解

      小編寫這篇文章的主要目的,主要是用來給大家解釋,Python Sklearn當(dāng)中,一些實(shí)用的隱藏功能,大概有19條,這些實(shí)用的隱藏技能,會給我們的工作和生活帶來很大的便利性,具體下文就給大家詳細(xì)的介紹一下?! 〗裉旄蠹医榻B19個(gè)Sklearn中超級實(shí)用的隱藏的功能,這些功能雖然不常見,但非常實(shí)用,它們可以直接優(yōu)雅地替代手動執(zhí)行的常見操作。接下來我們就一個(gè)一個(gè)介紹這些功能,希望對大家有所幫助!...

    89542767 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<