昇思25天學習打卡營第21天|LSTM+CRF序列標注

1. 學習內容復盤

概述

序列標注指給定輸入序列,給序列中每個Token進行標注標簽的過程。序列標注問題通常用于從文本中進行信息抽取,包括分詞(Word Segmentation)、詞性標注(Position Tagging)、命名實體識別(Named Entity Recognition, NER)等。以命名實體識別為例:

輸入序列

輸出標注

B

I

I

I

O

O

O

O

O

B

I

如上表所示,清華大學??北京是地名,需要將其識別,我們對每個輸入的單詞預測其標簽,最后根據標簽來識別實體。

這里使用了一種常見的命名實體識別的標注方法——“BIOE”標注,將一個實體(Entity)的開頭標注為B,其他部分標注為I,非實體標注為O

條件隨機場(Conditional Random Field, CRF)

從上文的舉例可以看到,對序列進行標注,實際上是對序列中每個Token進行標簽預測,可以直接視作簡單的多分類問題。但是序列標注不僅僅需要對單個Token進行分類預測,同時相鄰Token直接有關聯關系。以清華大學一詞為例:

輸入序列

輸出標注

B

I

I

I

輸出標注

O

I

I

I

×

如上表所示,正確的實體中包含的4Token有依賴關系,I前必須是BI,而錯誤輸出結果將字標注為O,違背了這一依賴。將命名實體識別視為多分類問題,則每個詞的預測概率都是獨立的,易產生類似的問題,因此需要引入一種能夠學習到此種關聯關系的算法來保證預測結果的正確性。而條件隨機場是適合此類場景的一種概率圖模型。下面對條件隨機場的定義和參數化形式進行簡析。

考慮到序列標注問題的線性序列特點,本節所述的條件隨機場特指線性鏈條件隨機場(Linear Chain CRF)

x={x0,...,xn}𝑥為輸入序列,y={y0,...,yn}yY為輸出的標注序列,其中n為序列的最大長度,Y表示x對應的所有可能的輸出序列集合。則輸出序列y的概率為:

xi,?yi為序列的第iToken和對應的標簽,則Score需要能夠在計算xiyi的映射的同時,捕獲相鄰標簽yi?1yi之間的關系,因此我們定義兩個概率函數:

  1. 發射概率函數ψEMIT:表示xiyi的概率。
  2. 轉移概率函數ψTRANS:表示yi?1yi的概率。

則可以得到Score的計算公式:

設標簽集合為T,構造大小為|T|x|T|的矩陣P,用于存儲標簽間的轉移概率;由編碼層(可以為DenseLSTM)輸出的隱狀態h可以直接視作發射概率,此時Score的計算公式可以轉化為:

完整的CRF完整推導可參考Log-Linear Models, MEMMs, and CRFs

接下來我們根據上述公式,使用MindSpore來實現CRF的參數化形式。首先實現CRF層的前向訓練部分,將CRF和損失函數做合并,選擇分類問題常用的負對數似然函數(Negative Log Likelihood, NLL),則有:

【】

由公式(1)可得,

根據公式(5),我們稱被減數為Normalizer,減數為Score,分別實現后相減得到最終Loss

Score計算

首先根據公式(3)計算正確標簽序列所對應的得分,這里需要注意,除了轉移概率矩陣P外,還需要維護兩個大小為|T|的向量,分別作為序列開始和結束時的轉移概率。同時我們引入了一個掩碼矩陣mask,將多個序列打包為一個Batch時填充的值忽略,使得Score計算僅包含有效的Token

Normalizer計算

根據公式(5)Normalizerx對應的所有可能的輸出序列的Score的對數指數和(Log-Sum-Exp)。此時如果按窮舉法進行計算,則需要將每個可能的輸出序列Score都計算一遍,共有|T|n個結果。這里我們采用動態規劃算法,通過復用計算結果來提高效率。

假設需要計算從第0至第iToken所有可能的輸出序列得分Scorei,則可以先計算出從第0至第i?1Token所有可能的輸出序列得分Scorei?1。因此,Normalizer可以改寫為以下形式:

其中hi為第iToken的發射概率,P是轉移矩陣。由于發射概率矩陣h和轉移概率矩陣P獨立于y的序列路徑計算,可以將其提出,可得:

Viterbi算法

在完成前向訓練部分后,需要實現解碼部分。這里我們選擇適合求解序列最優路徑的Viterbi算法。與計算Normalizer類似,使用動態規劃求解所有可能的預測序列得分。不同的是在解碼時同時需要將第iToken對應的score取值最大的標簽保存,供后續使用Viterbi算法求解最優預測序列使用。

取得最大概率得分Score,以及每個Token對應的標簽歷史History后,根據Viterbi算法可以得到公式:

從第0個至第iToken對應概率最大的序列,只需要考慮從第0個至第i?1個Token對應概率最大的序列,以及從第i𝑖個至第i?1個概率最大的標簽即可。因此我們逆序求解每一個概率最大的標簽,構成最佳的預測序列。

由于靜態圖語法限制,我們將Viterbi算法求解最佳預測序列的部分作為后處理函數,不納入后續CRF層的實現。

CRF

完成上述前向訓練和解碼部分的代碼后,將其組裝完整的CRF層。考慮到輸入序列可能存在Padding的情況,CRF的輸入需要考慮輸入序列的真實長度,因此除發射矩陣和標簽外,加入seq_length參數傳入序列Padding前的長度,并實現生成mask矩陣的sequence_mask方法。

BiLSTM+CRF模型

在實現CRF后,我們設計一個雙向LSTM+CRF的模型來進行命名實體識別任務的訓練。模型結構如下:

nn.Embedding -> nn.LSTM -> nn.Dense -> CRF

其中LSTM提取序列特征,經過Dense層變換獲得發射概率矩陣,最后送入CRF層。

2.平臺實驗結果

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

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

相關文章

Spring Boot項目中JPA操作視圖會改變原表嗎?

一直有一種認識就是:使用JPA對視圖操作,不會影響到原表。 直觀的原因就是視圖是一種數據庫中的虛擬表,它由一個或多個表中的數據通過SQL查詢組成。視圖不包含數據本身,而是保存了一條SQL查詢,這條查詢是用來展示數據的。 但是在實際項目種的一個場景顛覆和糾正了這個認識…

匯川伺服 (4)FFT、機械特性、閉環、慣量、剛性、抑制振動

一、參數解釋 二、FFT 三、機械特性分析 四、多級配方與對象字典 對機組網配方 對象字典 五、InoServoShop 主要是用于調試620P620N將壓縮報解壓后不需要安裝就可以直接使用 六、InoDriveWorkShop 主要是調試660 670 810 520 等系列 慣量識別 Etune Stune 慣量比調試 大慣…

Error:sql: expected 1 arguments, got 2

一 背景 在測試一個API接口時,看到日志里面突然拋出一個錯誤:Error:sql: expected 1 arguments, got 2 看了下,對應的表里面是有相關數據的,sql語句放在mysql里面執行也是沒問題!那奇了怪了,為啥會產生這樣…

git只列出本地分支

git只列出本地分支 git branch --list git強制刪除本地分支 git branch -D_error: the branch dlx-test is not fully merged. -CSDN博客文章瀏覽閱讀648次。git branch -d 可以通過: git branch 查看所有本地分支及其名字,然后刪除特定分支。git刪除遠程remote分支…

算法之工程化內容(2)—— Git常用命令

目錄 1. git初始化配置 2. 新建倉庫 3. 工作區——>暫存區——>本地倉庫 4. git reset回退版本 5. 查看差異 git diff 6. 刪除文件git rm 7. .gitignore 8. vscode操作git 9. git分支、合并和刪除 10. 解決合并沖突 11. 回退和rebase 12. 添加遠程倉庫 參考鏈接&#xff…

【Go語言】Go語言的占位符

Go語言的占位符 Golang 的字符串占位符在 fmt 包的各種打印函數中使用,如 fmt.Printf、fmt.Sprintf。 變量值與類型的打印 %v: 打印變量的值 %v 會根據變量的類型選擇合適的格式進行打印。對于結構體,%v 會打印出結構體的字段。對于指針類型&#xf…

Linux 網絡--TCP協議收包流程(NAPI機制)

Linux 網絡--TCP協議收包流程(NAPI機制) 平臺環境簡介:宿主機: ubuntu18.04Linux內核源碼版本: Linux-4.15網卡驅動: Intel e1000 (ubuntu 虛擬機默認網卡驅動)協議:TCP協議,本文分析收包過程 本…

緩存新境界:Eureka中服務的分布式緩存實現策略

緩存新境界:Eureka中服務的分布式緩存實現策略 引言 在微服務架構中,服務間的通信和數據交換頻繁,引入分布式緩存可以顯著提高系統性能和響應速度。Eureka作為Netflix開源的服務發現框架,雖然本身不提供緩存機制,但可…

【線程狀態-2】

1、線程禮讓 (1)禮讓線程,讓當前正在執行的線程暫停,但不阻塞 (2)將線程從運行狀態轉為就緒狀態 (3)讓cpu重新調度,禮讓不一定成功!看cpu心情 package st…

單對以太網:工業4.0時代的通信革命

單對以太網連接器概述 單對以太網(Single Pair Ethernet,簡稱SPE)是一種新興的以太網技術,它通過一對雙絞線實現數據傳輸,支持PoDL(Power over Data Line)技術,為終端設備提供電力供…

【AI工具介紹】— webkit簡介

目錄 一、起源與發展 二、核心組件與功能 三、特性與優勢 四、應用與影響 五、結論 一、起源與發展 WebKit起源于蘋果公司,最初是為了開發Safari瀏覽器而創建的。WebKit項目的起源可以追溯到蘋果公司在2001年推出基于Unix的操作系統Mac OS X時,對瀏…

windows JDK11 與JDK1.8自動切換,以及切換后失效的問題

1.windows安裝不同環境的jdk 2.切換jdk 3.切換失敗 原因:這是因為當我們安裝并配置好JDK11之后它會自動生成一個環境變量(此變量我們看不到),此環境變量優先級較高,導致我們在切換回JDK8后系統會先讀取到JDK11生成的…

Java項目:基于SSM框架實現的中小型企業財務管理系統【ssm+B/S架構+源碼+數據庫+答辯PPT+開題報告+畢業論文】

一、項目簡介 本項目是一套基于SSM框架實現的中小型企業財務管理系統 包含:項目源碼、數據庫腳本等,該項目附帶全部源碼可作為畢設使用。 項目都經過嚴格調試,eclipse或者idea 確保可以運行! 該系統功能完善、界面美觀、操作簡單…

Spark實現電商消費者畫像案例

作者/朱季謙 故事得從這一張圖開始說起—— 可憐的打工人準備下班時,突然收到領導發來的一份電商消費者樣本數據,數據內容是這樣的—— 消費者姓名|年齡|性別|薪資|消費偏好|消費領域&#x…

CentOS 7:停止更新后如何下載軟件?

引言 CentOS 7 是一個廣受歡迎的 Linux 發行版,它為企業和開發者提供了一個穩定、安全、且免費的操作系統環境。然而,隨著時間的推移,CentOS 7 的官方支持已經進入了維護階段,這意味著它將不再收到常規的更新和新功能,…

圖像類別生成數字標簽

類別 COCO 2017數據集分類標簽。coco2017數據集下載。 cls [background, person, bicycle, car, motorcycle, airplane, bus,train, truck, boat, traffic light, fire hydrant,stop sign, parking meter, bench, bird, cat, dog,horse, sheep, cow, elephant, bear, zebra,…

2024建博會|博聯AI大模型全屋智能引領智能體驗新紀元

7月8日,2024中國建博會(廣州)在廣交會展館及保利世貿博覽館盛大啟幕。BroadLink博聯智能攜AI大模型全屋智能以及AI商業照明解決方案驚喜亮相,全方位展示AI大模型在智能家居領域的前沿應用成果。 本次建博會,博聯智能帶…

java.lang.annotation包介紹

java.lang.annotation 包是 Java 標準庫中的一個核心包,專門用于定義和支持 Java 注解(Annotation)。該包中包含了一些核心的接口和枚舉類型,用于定義和控制注解在 Java 程序中的行為和使用方式。 主要的類和接口 Annotation 接口 java.lang.annotation.Annotation 所有注…

NPDP含金量高嗎?什么人適合學習NPDP?

PMP考完了,最近在考NPDP,這也是一個有意思的證書,含金量還不錯,非常適合想轉型和升級的人來考。 一、NPDP是什么 NPDP其實就是產品經理國際資格認證(New Product Development Professional),是…

C++慣用法: 通過std::decltype來SFINAE掉表達式

目錄 1.什么是SFINAE 2.SFINAE(替換失敗不是錯誤) 3.通過std::decltype來SFINAE掉表達式 1.什么是SFINAE SFINAE 技術,即匹配失敗不是錯誤,英文Substitution Failure Is Not An Error,其作用是當我們在進行模板特化的時候,會去…