chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

采用雙塔BERT模型對(duì)文本字符和label進(jìn)行編碼

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:PaperWeekly ? 作者:SinGaln ? 2022-07-08 10:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這是一篇來(lái)自于 ACL 2022 的文章,總體思想就是在 meta-learning 的基礎(chǔ)上,采用雙塔 BERT 模型分別來(lái)對(duì)文本字符和對(duì)應(yīng)的label進(jìn)行編碼,并且將二者進(jìn)行 Dot Product(點(diǎn)乘)得到的輸出做一個(gè)分類(lèi)的事情。文章總體也不復(fù)雜,涉及到的公式也很少,比較容易理解作者的思路。對(duì)于采用序列標(biāo)注的方式做 NER 是個(gè)不錯(cuò)的思路。

1、模型

1.1 架構(gòu)

▲圖1.模型整體構(gòu)架

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

1.2 Detail

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

這里需要注意的是 BERT 模型的輸出取 last_hidden_state 作為對(duì)應(yīng) Token 的向量。 對(duì)標(biāo)簽進(jìn)行編碼時(shí),對(duì)標(biāo)簽集合中的所有標(biāo)簽進(jìn)行對(duì)應(yīng)編碼,每個(gè)完整的 label 得到的編碼取 部分作為其編碼向量,并且將所有的 label 編碼組成一個(gè)向量集合 ,最后計(jì)算每個(gè) 與 的點(diǎn)積,形式如下:

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

1.3 Label Transfer

在文章中作者還羅列了實(shí)驗(yàn)數(shù)據(jù)集的標(biāo)簽轉(zhuǎn)換表,部分如下所示:

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

1.4 Support Set Sampling Algorithm

采樣偽代碼如下所示:

▲圖3. 采樣偽代碼

2、實(shí)驗(yàn)結(jié)果

▲圖4. 部分實(shí)驗(yàn)結(jié)果

從實(shí)驗(yàn)結(jié)果上看,可以明顯的感受到這種方法在 Few-shot 時(shí)還是有不錯(cuò)的效果的,在 1-50 shot 時(shí)模型的效果都優(yōu)于其他模型,表明了 label 語(yǔ)義的有效性;但在全量數(shù)據(jù)下,這種方法就打了一些折扣了,表明了數(shù)據(jù)量越大,模型對(duì)于 label 語(yǔ)義的依賴(lài)越小。這里筆者還有一點(diǎn)想法就是在全量數(shù)據(jù)下,這種方式的標(biāo)簽語(yǔ)義引入可能會(huì)對(duì)原本的文本語(yǔ)義發(fā)生微小偏移,當(dāng)然,這種說(shuō)法在 Few-shot 下也是成立的,只不過(guò) Few-shot 下的偏移是一個(gè)正向的偏移,能夠增強(qiáng)模型的泛化能力,全量數(shù)據(jù)下的偏移就有點(diǎn)溢出來(lái)的感覺(jué)。 雙塔 BERT 代碼實(shí)現(xiàn)(沒(méi)有采用 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):
#獲取文本和標(biāo)簽的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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4967

    瀏覽量

    73945
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1236

    瀏覽量

    26187

原文標(biāo)題:ACL2022 | 序列標(biāo)注的小樣本NER:融合標(biāo)簽語(yǔ)義的雙塔BERT模型

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是大模型,智能體...?大模型100問(wèn),快速全面了解!

    ,LLM)是大模型中最主要的一類(lèi),專(zhuān)門(mén)用于處理和生成人類(lèi)語(yǔ)言。大語(yǔ)言模型通過(guò)“閱讀”海量的文本數(shù)據(jù)(如書(shū)籍、網(wǎng)頁(yè)、文章等)進(jìn)行預(yù)訓(xùn)練,學(xué)會(huì)語(yǔ)言的模式、知識(shí)和上下文
    的頭像 發(fā)表于 02-02 16:36 ?888次閱讀
    什么是大<b class='flag-5'>模型</b>,智能體...?大<b class='flag-5'>模型</b>100問(wèn),快速全面了解!

    詳解DBC的Signal與JSON文本結(jié)合

    為了優(yōu)化CAN數(shù)據(jù)發(fā)送與接收的操作流程,更改以前手動(dòng)輸入狀態(tài)對(duì)應(yīng)數(shù)據(jù)的模式,采用下拉列表選擇內(nèi)容,但這需要用到超出DBC原有承載能力的信息。因此,將JSON與其結(jié)合,采用JSON格式文本寫(xiě)入Signal的Comment屬性,將C
    的頭像 發(fā)表于 01-06 10:57 ?296次閱讀
    詳解DBC的Signal與JSON<b class='flag-5'>文本</b>結(jié)合

    百度文心大模型5.0 Preview榮登LMArena文本榜國(guó)內(nèi)第一

    12月23日,LMArena大模型競(jìng)技場(chǎng)發(fā)布最新排名,文心新模型ERNIE-5.0-Preview-1203以1451分登上LMArena文本榜,排名國(guó)內(nèi)第一該模型在創(chuàng)意寫(xiě)作、高難度指
    的頭像 發(fā)表于 12-23 15:02 ?532次閱讀

    百度文心大模型5.0-Preview文本能力國(guó)內(nèi)第一

    11月8日凌晨,LMArena大模型競(jìng)技場(chǎng)最新排名顯示,文心全新模型ERNIE-5.0-Preview-1022登上文本排行榜全球并列第二、中國(guó)第一該模型在創(chuàng)意寫(xiě)作、復(fù)雜長(zhǎng)問(wèn)題理解、指
    的頭像 發(fā)表于 11-11 17:15 ?1439次閱讀

    如何給rt-thread studio 2.2.8 ide工具安裝支持其他字符編碼,如gb2312等?

    目前使用的rt-thread studio版本為2.2.8,當(dāng)前支持的字符編碼如下 由于移植的工程,之前的文件編碼格式為gb2312的,因此在此ide中中文顯示為亂碼 請(qǐng)教如何給ide添加新的
    發(fā)表于 09-29 07:41

    淺析多模態(tài)標(biāo)注對(duì)大模型應(yīng)用落地的重要性與標(biāo)注實(shí)例

    ”的關(guān)鍵工序——多模態(tài)標(biāo)注重要性日益凸顯。 一、什么是多模態(tài)標(biāo)注? 多模態(tài)標(biāo)注是指對(duì)文本、圖像、語(yǔ)音、視頻、點(diǎn)云等異構(gòu)數(shù)據(jù)進(jìn)行跨模態(tài)語(yǔ)義關(guān)聯(lián)的標(biāo)注過(guò)程,通過(guò)建立數(shù)據(jù)間的時(shí)空一致性和語(yǔ)義對(duì)齊,為大模型提供結(jié)構(gòu)化的訓(xùn)練素
    的頭像 發(fā)表于 09-05 13:49 ?2214次閱讀

    如何進(jìn)行YOLO模型轉(zhuǎn)換?

    我目前使用的轉(zhuǎn)模型代碼如下 from ultralytics import YOLOimport cv2import timeimport nncaseimport# 加載預(yù)訓(xùn)練的YOLO模型
    發(fā)表于 08-14 06:03

    linux系統(tǒng)awk特殊字符命令詳解

    在Linux系統(tǒng)中,awk?是一種非常強(qiáng)大的文本處理工具,能夠對(duì)文本數(shù)據(jù)進(jìn)行分析、格式化和篩選。利用其內(nèi)置的特殊字符和操作符,用戶(hù)可以實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)處理任務(wù)。以下對(duì)一些常見(jiàn)的awk特殊
    的頭像 發(fā)表于 07-28 16:38 ?635次閱讀

    兆芯率先展開(kāi)文心系列模型深度技術(shù)合作

    心系列大模型的快速適配、無(wú)縫銜接。 ? 文心大模型 ? 文心4.5系列開(kāi)源模型共10款,均使用飛漿深度學(xué)習(xí)框架進(jìn)行高效訓(xùn)練、推理和部署。在大語(yǔ)言模型
    的頭像 發(fā)表于 07-01 10:49 ?967次閱讀

    【正點(diǎn)原子STM32MP257開(kāi)發(fā)板試用】基于 DeepLab 模型的圖像分割

    /deeplabv3_257_int8_per_tensor.nb\', help=\'模型路徑,.nb格式文件\') parser.add_argument(\'--label_file\', type=str, default
    發(fā)表于 06-21 21:11

    從FA模型切換到Stage模型時(shí):module的切換說(shuō)明

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

    在KaihongOS中,可以使用文件管理對(duì)文進(jìn)行基礎(chǔ)的操作

    文件操作 在KaihongOS中,可以使用@ohos.file.fs (文件管理)對(duì)文進(jìn)行基礎(chǔ)的操作。下面簡(jiǎn)單介紹一下關(guān)于本地文件的查詢(xún)、拷貝、刪除、修改的操作。 導(dǎo)入模塊 import fs
    發(fā)表于 05-08 06:39

    小白學(xué)大模型:從零實(shí)現(xiàn) LLM語(yǔ)言模型

    在當(dāng)今人工智能領(lǐng)域,大型語(yǔ)言模型(LLM)的開(kāi)發(fā)已經(jīng)成為一個(gè)熱門(mén)話(huà)題。這些模型通過(guò)學(xué)習(xí)大量的文本數(shù)據(jù),能夠生成自然語(yǔ)言文本,完成各種復(fù)雜的任務(wù),如寫(xiě)作、翻譯、問(wèn)答等。https
    的頭像 發(fā)表于 04-30 18:34 ?1299次閱讀
    小白學(xué)大<b class='flag-5'>模型</b>:從零實(shí)現(xiàn) LLM語(yǔ)言<b class='flag-5'>模型</b>

    ?VLM(視覺(jué)語(yǔ)言模型)?詳細(xì)解析

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

    使用OpenVINO?訓(xùn)練擴(kuò)展對(duì)水平文本檢測(cè)模型進(jìn)行微調(diào),收到錯(cuò)誤信息是怎么回事?

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