引入注意力機制的細粒度實體分類

2021-08-18 07:23:34 字數 2458 閱讀 5553

這篇**來自ucl自然語言處理實驗室,發表於2023年。

細粒度實體分類是在構建知識圖譜過程中非常重要的內容,關於實體分類相關的文獻也比較多,也有不少分類方法,但是我們如何在非結構化的文字中確定出乙個我們想要的細粒度實體,並把它分入相應的大類中去呢?

舉個例子,「掘金勝森林狼,約基奇準三雙助球隊贏下爭八關鍵戰。」我們該如何從文字中識別出「掘金」,「森林狼」屬於nba球隊,「約基奇」屬於籃球運動員呢?本篇**給出了解決方案。

這是整篇**實現的模型,接下來我們會一一進行講解。

首先這個神經網路輸入的是一段話,比如上圖中的"she got a ph.d from new your in feb. 1995.",這句話被分為了三個部分,第一部分是被標註為實體的new york,第二部分是它的上文got a ph.d from,最後一部分是它的下文in feb. 1995.輸入的均是這些詞的詞向量。(詞向量:通過word embedding的方法將詞彙對映到稠密的連續的向量空間)

輸入的模型如下:

c代表選取的上文或下文的長度,l,r代表上下文中的乙個單詞,m代表實體的長度,m代表實體中的乙個單詞。如果原句的長度達不到上下文的長度,比如實體在句末,不存在下文,相應的位置用佔位符代替,比如用「#」代替。

在這個模型中我們的輸出是一組yk,假如我們把實體分為k類,yk代表該實體是某一型別的可能性。當yk>0.5且是所有可能性中最高的那個時,我們認為該實體屬於k這個大類。

輸出公式如下:

符號意義如下:

vm和vc分別代表由實體和上下文獲得的向量。

損失函式的定義如下:

這是分類問題中常用的損失函式,可以根據最大似然估計推導得出。

**中關於實體的表示,作者選取的模型十分簡單,直接取了實體各個單詞詞向量的平均值。

作者在**中提到,在實體表示方面,用神經網路做實體表示效果反而並不好,他們認為這和標籤在測試集和訓練集中的差異性有關。舉個例子,monday可能在測試集中被標記為time,而訓練集中被標註為別的,而顯示宣告的日期如feb. 24則在測試集訓練集中都被標記為time,這種差異性越是應用在越複雜的模型上,產生的危害就越大。(雖然根據我為數不多的經驗,這種取平均值的做法並不能體現實體原有的語義,效果並不好。)

1.使用詞向量平均值表示

(這種方法效果肯定不大好)

2.lstm編碼

lstm是rnn的一種特例,可以避免常規rnn的梯度消失的問題,因而在工業界得到廣泛應用。

這是傳統rnn的模型:

這是lstm模型:

根據上文中介紹的lstm模型,我們不難知道當前輸出和當前細胞狀態是有三個變數決定的:之前輸出,之前細胞狀態和當前輸入。並且,我們可以將上下文正序輸入,接著再倒敘輸入可以得到兩個向量,這最終組成了我們的上下文向量。

三.引入注意力機制的lstm編碼

這是全文的精華重點所在,具體我也不是很明白(主要是注意力機制沒怎麼接觸過)。

上圖是**中注意力機制的完整實現,作者用兩層神經網路去訓練這兩個a,從公式可以看出這是乙個soft attention。

**講解到這裡,本篇文章第一張圖就相當清晰明了了。

在第一張圖中,實體的處理很簡單,直接選取詞向量的平均值,上下文輸入處理比較麻煩,依次經過了詞嵌入,lstm編碼,注意力層,最終得到的結果與實體一起丟入output layer得到最終的答案。

當然了,作者給出的方法效果最好( ̄▽ ̄)~*

下圖是作者的衡量標準:

下圖是資料展示:

可以看到,在大部分情況下,引入注意力機制的lstm模型取得的效果最好。

引入知識注意力機制的實體分類

細粒度實體型別分類的神經網路結構 這篇 來自清華大學劉知遠老師,發表於2018年。關於這篇 還是有許多沒有讀懂的地方,暫時先簡要的說一下 的核心 知識是怎樣被引入注意力神經網路的。首先貼一下整體的模型 不難看出,和前兩篇 的模型相比,最大的區別還是右側query vector,也就是將知識庫知識引入...

注意力機制的理解(借鑑)

如圖是在文字處理領域的encoder decoder框架。encoder 對輸入句子進行編碼,通過非線性比變換轉化為中間語義表示c decoder 根據中間語義c和之前的歷史資訊,生成輸出語句 每個yi都是依次產生的。上圖中展示的encoder decoder框架是沒有體現出 注意力模型 的,可以看...

(多頭)自注意力機制的PyTorch實現

用於學習和複習的兩份自注意力機制實現 使用了縮放點積作為打分函式,因此key和query的維數是一樣的,實現很簡單。from math import sqrt import torch import torch.nn as nn class selfattention nn.module dim i...