女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

采用雙塔BERT模型對文本字符和label進行編碼

深度學習自然語言處理 ? 來源:PaperWeekly ? 作者:SinGaln ? 2022-07-08 10:38 ? 次閱讀

這是一篇來自于 ACL 2022 的文章,總體思想就是在 meta-learning 的基礎上,采用雙塔 BERT 模型分別來對文本字符和對應的label進行編碼,并且將二者進行 Dot Product(點乘)得到的輸出做一個分類的事情。文章總體也不復雜,涉及到的公式也很少,比較容易理解作者的思路。對于采用序列標注的方式做 NER 是個不錯的思路。

1、模型

1.1 架構

▲圖1.模型整體構架

從上圖中可以清楚的看到,作者采用了雙塔 BERT 來分別對文本的 Token 和每個 Token 對應的 label 進行編碼。這里作者采用這種方法的思路也很簡單,因為是 Few-shot 任務,沒有足夠的數(shù)據(jù)量,所以作者認為每個 Token 的 label 可以為 Token 提供額外的語義信息。 作者的 Meta-Learning 采用的是 metric-based 方法,直觀一點理解就是首先計算每個樣本 Token 的向量表征,然后與計算得到的 label 表征計算相似度,這里從圖上的 Dot Product 可以直觀的體現(xiàn)出來。然后對得到的相似度矩陣 ([batch_size,sequence_length,embed_dim]) 進行 softmax 歸一化,通過 argmax 函數(shù)取最后一維中值最大的 index,并且對應相應的標簽列表,得到當前 Token 對應的標簽。

1.2 Detail

此外,作者在對標簽進行表征時,也對每個標簽進行了相應的處理,總體分為以下三步: 1. 將詞語的簡寫標簽轉為自然語言形式,例如 PER--》person,ORG--》organization,LOC--》local 等等; 2. 將標注標簽起始、中間的標記轉為自然語言形式,例如以 BIO 形式進行標記的就可以轉為 begin、inside、other 等等,其他標注形式的類似。 3. 按前兩步的方法轉換后進行組合,例如 B-PER--》begin person,I-PER--》inside person。 由于進行的是 Few-shot NER 任務,所以作者在多個 source datasets 上面訓練模型,然后他們在多個 unseen few shot target datasets 上面驗證經(jīng)過 fine-tuning 和不經(jīng)過 fine-tuning 的模型的效果。 在進行 Token 編碼時,對應每個 通過 BERT 模型可以得到其對應的向量 ,如下所示:

這里需要注意的是 BERT 模型的輸出取 last_hidden_state 作為對應 Token 的向量。 對標簽進行編碼時,對標簽集合中的所有標簽進行對應編碼,每個完整的 label 得到的編碼取 部分作為其編碼向量,并且將所有的 label 編碼組成一個向量集合 ,最后計算每個 與 的點積,形式如下:

由于這里使用了 label 編碼表征的方式,相比于其他的 NER 方法,在模型遇到新的數(shù)據(jù)和 label 時,不需要再初始一個新的頂層分類器,以此達到 Few-shot 的目的。

1.3 Label Transfer

在文章中作者還羅列了實驗數(shù)據(jù)集的標簽轉換表,部分如下所示:

▲圖2. 實驗數(shù)據(jù)集Label Transfer

1.4 Support Set Sampling Algorithm

采樣偽代碼如下所示:

▲圖3. 采樣偽代碼

2、實驗結果

▲圖4. 部分實驗結果

從實驗結果上看,可以明顯的感受到這種方法在 Few-shot 時還是有不錯的效果的,在 1-50 shot 時模型的效果都優(yōu)于其他模型,表明了 label 語義的有效性;但在全量數(shù)據(jù)下,這種方法就打了一些折扣了,表明了數(shù)據(jù)量越大,模型對于 label 語義的依賴越小。這里筆者還有一點想法就是在全量數(shù)據(jù)下,這種方式的標簽語義引入可能會對原本的文本語義發(fā)生微小偏移,當然,這種說法在 Few-shot 下也是成立的,只不過 Few-shot 下的偏移是一個正向的偏移,能夠增強模型的泛化能力,全量數(shù)據(jù)下的偏移就有點溢出來的感覺。 雙塔 BERT 代碼實現(xiàn)(沒有采用 metric-based 方法):

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#@Time:2022/5/2313:49
#@Author:SinGaln

importtorch
importtorch.nnasnn
fromtransformersimportBertModel,BertPreTrainedModel


classSinusoidalPositionEmbedding(nn.Module):
"""定義Sin-Cos位置Embedding
"""

def__init__(
self,output_dim,merge_mode='add'):
super(SinusoidalPositionEmbedding,self).__init__()
self.output_dim=output_dim
self.merge_mode=merge_mode

defforward(self,inputs):
input_shape=inputs.shape
batch_size,seq_len=input_shape[0],input_shape[1]
position_ids=torch.arange(seq_len,dtype=torch.float)[None]
indices=torch.arange(self.output_dim//2,dtype=torch.float)
indices=torch.pow(10000.0,-2*indices/self.output_dim)
embeddings=torch.einsum('bn,d->bnd',position_ids,indices)
embeddings=torch.stack([torch.sin(embeddings),torch.cos(embeddings)],dim=-1)
embeddings=embeddings.repeat((batch_size,*([1]*len(embeddings.shape))))
embeddings=torch.reshape(embeddings,(batch_size,seq_len,self.output_dim))
ifself.merge_mode=='add':
returninputs+embeddings.to(inputs.device)
elifself.merge_mode=='mul':
returninputs*(embeddings+1.0).to(inputs.device)
elifself.merge_mode=='zero':
returnembeddings.to(inputs.device)


classDoubleTownNER(BertPreTrainedModel):
def__init__(self,config,num_labels,position=False):
super(DoubleTownNER,self).__init__(config)
self.position=position
self.num_labels=num_labels
self.bert=BertModel(config=config)
self.fc=nn.Linear(config.hidden_size,self.num_labels)

ifself.position:
self.sinposembed=SinusoidalPositionEmbedding(config.hidden_size,"add")

defforward(self,sequence_input_ids,sequence_attention_mask,sequence_token_type_ids,label_input_ids,
label_attention_mask,label_token_type_ids):
#獲取文本和標簽的encode
#[batch_size,sequence_length,embed_dim]
sequence_outputs=self.bert(input_ids=sequence_input_ids,attention_mask=sequence_attention_mask,
token_type_ids=sequence_token_type_ids).last_hidden_state
#[batch_size,embed_dim]
label_outputs=self.bert(input_ids=label_input_ids,attention_mask=label_attention_mask,
token_type_ids=label_token_type_ids).pooler_output
label_outputs=label_outputs.unsqueeze(1)

#位置向量
ifself.position:
sequence_outputs=self.sinposembed(sequence_outputs)
#Dot交互
interactive_output=sequence_outputs*label_outputs
#full-connection
outputs=self.fc(interactive_output)
returnoutputs

if__name__=="__main__":
pretrain_path="../bert_model"
fromtransformersimportBertConfig

token_input_ids=torch.randint(1,100,(32,128))
token_attention_mask=torch.ones_like(token_input_ids)
token_token_type_ids=torch.zeros_like(token_input_ids)

label_input_ids=torch.randint(1,10,(1,10))
label_attention_mask=torch.ones_like(label_input_ids)
label_token_type_ids=torch.zeros_like(label_input_ids)
config=BertConfig.from_pretrained(pretrain_path)
model=DoubleTownNER.from_pretrained(pretrain_path,config=config,num_labels=10,position=True)

outs=model(sequence_input_ids=token_input_ids,sequence_attention_mask=token_attention_mask,sequence_token_type_ids=token_token_type_ids,label_input_ids=label_input_ids,
label_attention_mask=label_attention_mask,label_token_type_ids=label_token_type_ids)
print(outs,outs.size())

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4888

    瀏覽量

    70277
  • 數(shù)據(jù)集

    關注

    4

    文章

    1223

    瀏覽量

    25284

原文標題:ACL2022 | 序列標注的小樣本NER:融合標簽語義的雙塔BERT模型

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    從FA模型切換到Stage模型時:module的切換說明

    的能力,采用字符串數(shù)組的格式表示。/Stage模型不支持。 metaData該標簽標識ability的元信息。metadata具體差異見表2。 type標識Ability的類型。/Stage模型不支持
    發(fā)表于 06-05 08:16

    ?VLM(視覺語言模型)?詳細解析

    的詳細解析: 1. 核心組成與工作原理 視覺編碼器 :提取圖像特征,常用CNN(如ResNet)或視覺Transformer(ViT)。 語言模型 :處理文本輸入/輸出,如GPT、BERT
    的頭像 發(fā)表于 03-17 15:32 ?2815次閱讀
    ?VLM(視覺語言<b class='flag-5'>模型</b>)?詳細解析

    使用OpenVINO?訓練擴展對水平文本檢測模型進行微調(diào),收到錯誤信息是怎么回事?

    已針對水平文本檢測模型運行OpenVINO?訓練擴展中的 微調(diào) 步驟,并收到錯誤消息: RuntimeError: Failed to find annotation files
    發(fā)表于 03-05 06:48

    【「基于大模型的RAG應用開發(fā)與優(yōu)化」閱讀體驗】+Embedding技術解讀

    引入外部知識庫來增強生成模型的能力。而Embedding在 Embedding模型將用戶的問題和文檔庫中的文本轉換為向量表示,這是RAG系統(tǒng)進行信息檢索和
    發(fā)表于 01-17 19:53

    字符串與字符數(shù)組的區(qū)別

    在編程語言中,字符串和字符數(shù)組是兩種基本的數(shù)據(jù)結構,它們都用于存儲和處理文本數(shù)據(jù)。盡管它們在功能上有一定的重疊,但在內(nèi)部表示、操作方式和使用場景上存在顯著差異。 1. 內(nèi)部表示 字符
    的頭像 發(fā)表于 01-07 15:29 ?1003次閱讀

    【「大模型啟示錄」閱讀體驗】如何在客服領域應用大模型

    訓練模型BERT、GPT等。這些模型在理解自然語言、生成文本、處理對話等方面具有不同的能力。因此,在選擇模型時,需要了解每個
    發(fā)表于 12-17 16:53

    Linux三劍客之Sed:文本處理神器

    關于linux三劍客 grep,過濾關鍵字信息數(shù)據(jù)。主要是用于查文本內(nèi)的數(shù)據(jù) sed ,對文本數(shù)據(jù)進行編輯,修改原文件內(nèi)容 awk,對文件數(shù)據(jù)過濾,提取,并且能實現(xiàn),格式化輸出 awk
    的頭像 發(fā)表于 12-16 15:58 ?635次閱讀
    Linux三劍客之Sed:<b class='flag-5'>文本</b>處理神器

    如何優(yōu)化自然語言處理模型的性能

    的噪聲和無關信息,如HTML標簽、特殊字符、停用詞等,使模型更專注于關鍵信息。 分詞與詞干化 :對于中文文本,需要進行準確的分詞;對于英文文本
    的頭像 發(fā)表于 12-05 15:30 ?1535次閱讀

    如何在文本字段中使用上標、下標及變量

    為“Revision”,值為“0.0”的文本變量: 這些變量允許您用變量名替換任何文本字符串。這種替換發(fā)生在變量名稱在${VARIABLENAME}?的變量替換語法中使用的任何地方。例如,您可以創(chuàng)建一個名為 VERSION 的變量并將
    的頭像 發(fā)表于 11-12 12:23 ?530次閱讀
    如何在<b class='flag-5'>文本字</b>段中使用上標、下標及變量

    base64編碼和解碼的使用方法

    Base64編碼是一種廣泛使用的編碼方案,用于將二進制數(shù)據(jù)轉換為純文本格式。這種編碼方式特別適用于在不支持二進制數(shù)據(jù)的系統(tǒng)之間傳輸數(shù)據(jù),例如電子郵件、網(wǎng)頁等。 1. Base64
    的頭像 發(fā)表于 11-10 10:48 ?3872次閱讀

    如何使用ASCII碼進行編碼

    ASCII碼(American Standard Code for Information Interchange,美國信息交換標準代碼)是一種字符編碼標準,用于文本電子交換。它主要包括128個
    的頭像 發(fā)表于 11-10 09:37 ?1530次閱讀

    如何使用 Llama 3 進行文本生成

    使用LLaMA 3(Large Language Model Family of AI Alignment)進行文本生成,可以通過以下幾種方式實現(xiàn),取決于你是否愿意在本地運行模型或者使用現(xiàn)成的API
    的頭像 發(fā)表于 10-27 14:21 ?981次閱讀

    【《大語言模型應用指南》閱讀體驗】+ 基礎知識學習

    收集海量的文本數(shù)據(jù)作為訓練材料。這些數(shù)據(jù)集不僅包括語法結構的學習,還包括對語言的深層次理解,如文化背景、語境含義和情感色彩等。 自監(jiān)督學習:模型采用自監(jiān)督學習策略,在大量無標簽文本數(shù)據(jù)
    發(fā)表于 08-02 11:03

    llm模型有哪些格式

    Representations from Transformers):BERT是一種雙向預訓練模型,通過大量文本數(shù)據(jù)進行預訓練,可以用于各種NLP任務,如
    的頭像 發(fā)表于 07-09 09:59 ?1303次閱讀

    llm模型和chatGPT的區(qū)別

    LLM(Large Language Model)是指大型語言模型,它們是一類使用深度學習技術構建的自然語言處理(NLP)模型。LLM模型可以處理各種語言任務,如文本生成、
    的頭像 發(fā)表于 07-09 09:55 ?1895次閱讀