實現三元組表示的兩個稀疏矩陣的加法_K-BERT | 基于知識圖譜的語言表示模型

6d55e7ddb8a778b1149cf31231f9af57.png

1.研究背景

BERT曾被應用在多項NLP任務中,并且取得了很好的結果。它通過在大規模開放語料庫上進行預訓練以獲得通用的語言表示,然后在特定的下游任務中進行微調,吸收特定領域的知識。但這些模型在不同的領域執行知識驅動任務時,效果不佳。為了解決這個問題,可以在特定領域的數據集上進行預訓練,或者在預訓練時注入特定的領域知識。但這些方法一般非常耗時且昂貴。

有些學者提出將知識圖譜(KG)集成到語言表示(LR)中,為模型配備領域知識,提高模型在特定領域任務上的性能,同時降低大規模預訓練成本。但在知識整合的同時,存在兩個不可避免的問題:1)異構嵌入空間(HES),文本中的詞和KG中的詞嵌入向量空間不一致;2)知識噪音(KN),過多的知識融合會使句子偏離正確的意思。為了解決這些問題,文章提出一種基于知識圖譜的語言表示模型——K-BERT。K-BERT能夠與BERT模型兼容,加載任何預先訓練好的BERT模型,并且通過配置KG可以很容易地將領域知識注入到模型中,而不需要預訓練。另外,該模型引入了軟位置和可見矩陣來限制知識的影響以克服知識噪音。

2.方法

文章詳細介紹了K-BERT的實現,K-BERT的模型體系結構主要由四個模塊組成,即知識層、嵌入層、視圖層和掩碼轉換。其總體框架如圖1所示:

b00501920e5d0096d5c09a861c031578.png
圖1 K-BERT的模型結構

K-BERT模型的每一部分都有著不可或缺的作用。對于輸入的句子,知識層首先從KG向其注入相關的三元組,將原始句子轉換為知識豐富的句子樹。然后將句子樹同時饋送到嵌入層和視覺層,然后將其轉換為符號級嵌入表示和可視矩陣。可見矩陣用于控制每個符號的可見區域,防止由于注入過多的知識而改變原句的意思。

2.1 知識層

知識層(KL)用于句子知識注入和句子樹轉換。給定輸入句子s={w0,w1,w2,...,wn}和知識圖譜K,KL輸出句子樹t={w0,w1,.,wi{(ri0,wi0),...,(rik,wik)},...,wn}。這個過程可以分為兩個步驟:知識查詢(K-Query)和知識注入(K-Inject)。

da1ee912fb469e3f09a5892699aab9ce.png

在K-Query中,從K-Query中選出句子s中涉及的所有實體名稱來查詢其對應的三元組。K-Query可以表示為(1),

(1)

其中E={(wi,ri0,wi0),.,(wi,rik,wik)}是相應三元組的集合。

接下來,K-Inject通過將E中的三元組注入到它們對應的位置,將查詢到的E注入到句子s中,并生成一個句子樹t。在本文中,一棵句子樹可以有多個分支,但其深度固定為1,這意味著三元組中的實體名稱不會迭代地派生分支。K-Inject可以表示為(2),

ffe051fd352ff9065dc12ea0da5c786a.png

2.2 嵌入層

嵌入層(EL)的功能是將語句樹轉換為可以饋送到掩碼轉換器中的嵌入表示。與BERT相似,K-BERT的嵌入表示是由符號嵌入、位置嵌入和段嵌入三部分組成,不同之處在于K-BERT嵌入層的輸入是句子樹,而不是符號序列。因此,如何在保留句子樹結構信息的同時將句子樹轉換成序列是K-BERT的關鍵。

符號嵌入與BERT基本一致,不同之處在于語句樹中的符號在嵌入操作之前需要重新排列。在重新排列策略中,分支中的符號被插入到相應節點,而后續的符號則向后移動。經此操作后句子變得不可讀,丟失了正確的結構信息。但該問題可以通過軟位置可視矩陣來解決。

BERT輸入句子的所有結構信息都包含在位置嵌入中,可以將缺失的結構信息重新添加到不可讀的重新排列的句子中,但句子位置信息會有所改變。要解決這個問題,需要給句子樹重新設置位置標號。但在設置位置編號時又會發生實際沒有聯系的詞匯,因具有相同的軟位置標號而出現聯系,導致句子意思發生改變。這個問題的解決方案是使用掩碼-自我注意機制。

2.3 視圖層

視圖層是K-BERT和BERT的最大區別,也是這種方法如此有效的原因。K-BERT的輸入是一棵句子樹,其中的分支是從KG獲得的知識。但它可能導致原句意思的變化,即KN問題。

在句子樹中,一個實體的三元組應與其他詞匯無關。同時,用于分類的[CLS]標簽不能繞過主體詞匯來獲得修飾三元組的信息。為了解決這個問題,K-BERT使用可見矩陣M來限制每個符號的可見區域防止不相干詞匯相互干擾。可視矩陣可以表示為(3),

fd08642d4f213881a5b922e3b5dd1d7e.png

(3)

其中wi?wj表示在同一分支,wi?wj則不在。i和j是硬位置索引。

嵌入層和可視層的工作原理如圖2所示:

f11d86e4cb91fdc89d14ead99d6af915.png
圖2 句子樹轉換成嵌入表示和可視矩陣工作過程

2.4 掩碼轉換

可視矩陣M包含句子樹的結構信息,但BERT中的編碼器不能接收M作為輸入,所以我們需要將其修改為Mask-Transformer,它可以根據M限制自注意區域。Mask-Transformer是一個由多個掩碼-自我注意塊組成的堆棧。

為了利用M中的句子結構信息來防止錯誤的語義變化,文章提出了一種掩碼-自注意,它是自我注意的擴展。掩碼-自注意表示如(4)。

f943477b81146d7fd508a6802bb018df.png

其中Wq,Wk和Wv表示可訓練的模型參數;hi表示第i個掩碼自我注意塊;dk是比例因子;M是可視矩陣。掩碼轉換的工作原理如圖4所示:

2a4fc11f580fbd2ccb8a8420952d0367.png

圖4 掩碼轉換是多個掩碼自我注意塊的堆棧

3.實驗

3.1 數據集

K-BERT在12個中國自然語言處理任務上進行微調,其中8個是開放領域的,4個是特定領域的。文章采用兩個預訓練語料庫:WikiZh和WebtextZH;三個中文知識圖譜:CN-DBpedia、HowNet和MedicalKG。在文章中,作者將K-BERT和Google BERT和Our BERT模型進行了一個比對,以觀察它的性能。

3.2 實驗分析

在文章中,作者首先比較了KBERT和BERT在八個中文開放領域自然語言處理任務上的性能。這八個任務分別是:Book_revire、Chnsenticorp、Shopping、Weibo、XNLI、LCQMC、NLPCC-DBQA和MSRA-NER。

上述每個數據集分為三個部分:訓練、開發和測試。實驗結果如表1和表2所示:

表1 句子分類任務的不同模型在開放領域任務上的結果(ACC%)

a139b211f6a54afd0342b005130f38f6.png

表2 不同模型對NLPCC-DBQA(MRR%)和MSRA-NER(F1%)的結果

8fcd77586aca01ced622966d87cda2fe.png

從表中可以看出,使用額外的語料庫(WebtextZh)也可以帶來性能提升,但不如KG顯著。

作者在兩個特定領域的任務:Domain Q&A和Law_Q&A上評估了K-BERT的性能。實驗結果如表3所示:

表3 特定領域任務的各種模型的結果(%)

0c992799d322ac6afd64682830059667.png

結果表明,K-BERT在特定領域上的具有明顯的語言表示優勢。

參考資料

https://www.aaai.org/Papers/AAAI/2020GB/AAAI-LiuW.5594.pdf

代碼

https://github.com/autoliuweijie/K-BERT

9f09297659639bd2272b3feea12f47ed.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537324.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Excel單元格“刪除線”的添加與刪除

軟件:windows,WPS 點擊字體設計的小角標,進入更多設置,勾選“刪除線”

excel 表格復制到word后,寬超出word如何調整?

網上很多方法是用“選擇性粘貼----excel表格對象”,這個適用表格行數少的,不超過一頁word的。 步驟 復制到word里后,選中表格,右鍵---自動調整--選擇具體的調整方式。 調整后效果

sql 查詢上個月的數據_數據分析-SQL 進階篇 多表查詢

知識點一、表的加法Union:刪除表中的重復值union al:包含表中所有內容,包括重復值二、表的聯結聯結:join聯結分為以下五種:交叉聯結(cross join)又稱為笛卡爾積:將表中的每一行與另外…

jenkins部署三種構建方式的詳細步驟

部署背景:jenkins: CentOS 7.4C IP:172.16.3.74gitlab-11.5.3: CentOS 7.4D IP:172.16.4.74此上部署都是根據我之前的博客配置完成的;jenkins有三種構建方…

從業回憶,一次大膽的冒險,程序員轉崗項目經理

有些事不必知道得太早 程序員這個行業,被“中年危機”言論導向后,就和洗腳城女技師差不多,年輕,漂亮,技術好,體力好的技師收入高,一邊拿著高薪,賺著外快,一邊吐槽是青春飯,經常熬夜,干不長久。 2010年之前,網上宣傳程序員是青春飯,程序員中年危機的文章很少。近幾…

python中控腳本_Python3.7實現中控考勤機自動連接

由于考勤機與oa對接,oa會在每天定時取考勤機數據,但是需要考勤機是連接狀態,所以搜索了下相關教程,寫了個腳本自動連接。完全是個python小白,代碼爛,僅作為筆記。理論上支持所有程序的每天自動開啟與關閉# …

word轉freemarker和修改的步驟

第一步 編寫好word,用freemarker語法替換內容 第二步 word另存為 word xml 第三步 修改后綴名為:.ftl 第四步 notepad XML插件美化顯示,插件安裝教程:Notepad 7.6以上版本安裝XML Tools插件_lingquan0809的博客-CSDN博客Note…

python編程首選_為什么說學編程首選是python

為什么學編程你可能不會成為一名專業的程序員, 不過學編程的確是有很多的原因的1. 最重要的是你想學!不論是因為業余愛好還是作為職業,編程都是十分有意思的, 都會讓你收獲很多2. 如果你是對計算機感興趣的, 想更多的了…

程序員的職業規劃,程序員的未來趨勢

作者2008年入行,至今15個年頭,從程序員到管理。當初一起入行的,當初帶我的技術大佬,也都轉管理了。 回顧 2008年-2015年:程序員,會ASP.NET、Java、JSP Servlet、SSH、SSM、Mysql、Oracle、Sqlserver、DB2、Sql、H5、Javascript、Jquery、Bootstrap、easy-UI、Android、…

vue-cli 使用better-scroll

better-scroll api文檔https://ustbhuangyi.github.io/better-scroll/doc/zh-hans/ 一:安裝better-scroll 插件 cnpm install better-scroll --save 二:引入 import Bscroll from better-scroll 三:使用 頁面結構要符合這樣的,不…

逐行粒度的vuex源碼分析

vuex源碼分析 了解vuex 什么是vuex vuex是一個為vue進行統一狀態管理的狀態管理器,主要分為state, getters, mutations, actions幾個部分,vue組件基于state進行渲染,當state發生變化時觸發組件的重新渲染,并利用了vue的響應式原理…

Redis設計與實現之事件

目錄 一、事件 1、文件事件 讀事件 寫事件 2、 時間事件 3、時間事件應用實例:服務器常規操作 4、事件的執行與調度 5、事件是否有重要性級別或優先級?需要立即處理還是可以延遲處理? 6、事件的類型是什么?是針對鍵的操作&#xff0…

如何用python32位開發詞典軟件_Python如何實現字典?

I was wondering how python dictionaries work under the hood, particularly the dynamic aspect?When we create a dictionary, what is its initial size?If we update it with a lot of elements, I suppose we need to enlarge the hash table. I suppose we need to r…

信息系統項目管理師:軟件測試、調試及其管理

1.4.5軟件測試及其管理 1、軟件測試方法可分為靜態測試和動態測試。 靜態測試是指被測試程序不在機器上運行,而采用人工檢測和計算機輔助靜態分析的手段對程序進行檢測。靜態測試包括對文檔的靜態測試和對代碼的靜態測試。對文檔的靜態測試…

項目驗收材料整合流程

目標:多份word整合成一份項目驗收材料 第一步:編寫好word;準備好一份驗收材料的封面與目錄word 第二步:用WPS的word轉PDF,批量轉成PDF; 第三步:用Adobe Acrobat DC 合并轉成的多個PDF成為一個…

python調用接口獲取文件_python接口文件使用說明

首先,python接口文件在安裝好的darknet目錄下的python文件夾,打開就可以看到這里的darknet.py文件就是python接口用編輯器打開查看最后部分代碼:使用十分簡單,先將網絡配置加載進去,然后進行檢測就行了。但其實現在還不…

[譯]Kube Router Documentation

體系結構 Kube路由器是圍繞觀察者和控制器的概念而建立的。 觀察者使用Kubernetes監視API來獲取與創建,更新和刪除Kubernetes對象有關的事件的通知。 每個觀察者獲取與特定API對象相關的通知。 在從API服務器接收事件時,觀察者廣播事件。 控制器注冊以獲…

windows11 22H2資源管理器開啟多標簽頁

效果 步驟 windows11 22H2后續可能會推送該功能,現在是隱藏的,需要借助工具把這個隱藏功能開啟 工具:vivetool 下載:Releases thebookisclosed/ViVe GitHub 步驟1:右鍵開始菜單,選擇“終端(…

python像素處理_Python 處理圖片像素點的實例

###在做爬蟲的時候有時需要識別驗證碼,但是驗證碼一般都有干擾物,這時需要對驗證碼進行預處理,效果如下:from PIL import Imageimport itertoolsimg Image.open(C:/img.jpg).convert(L) #打開圖片,convert圖像類型有L,RGBA# 轉化為黑白圖def blackWrite(img):blackXY []# 遍歷…

Mysql更改表名大小寫不敏感

編輯配置文件 vi /etc/my.cnf 在[mysqld]后添加添加 lower_case_table_names1 重啟服務 service mysqld stop service mysqld start 部署會遇到的問題: MySQL在Linux下數據庫名、表名、列名、別名大小寫規則是這樣的:   1、數據庫名與表名是嚴格區分大…