日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java调用bert_NLP(十九)首次使用BERT的可视化指导

發(fā)布時(shí)間:2023/12/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java调用bert_NLP(十九)首次使用BERT的可视化指导 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文是關(guān)于如何使用BERT的變異版本來(lái)進(jìn)行句子分類的簡(jiǎn)單教程。該例子足夠簡(jiǎn)單,因此可以作為首次使用BERT的介紹,當(dāng)然,它也包含了一些關(guān)鍵性的概念。

數(shù)據(jù)集:SST2

本文中使用的數(shù)據(jù)集為SST2,它包含了電影評(píng)論的句子,每一句帶有一個(gè)標(biāo)簽,或者標(biāo)注為正面情感(取值為1),或者標(biāo)注為負(fù)面情感(取值為0)。

模型:句子情感分類

我們的目標(biāo)是創(chuàng)建一個(gè)模型,它能夠處理一個(gè)句子(就行我們數(shù)據(jù)集中的句子那樣)并且輸出1(表明該句子具有正面情感)或者0(表明該句子具有負(fù)面情感)。我們?cè)O(shè)想它長(zhǎng)這樣:

事實(shí)上,該模型包含兩個(gè)模型:

DistillBERT會(huì)處理句子并把它提取后的信息傳遞給下一個(gè)模型。DistillBERT是BERT的變異版本,由HuggingFace小組開發(fā)和開源。它是BERT的更輕量、更快速的版本,同時(shí)它的表現(xiàn)基本與BERT相近。

下一個(gè)模型,從scikit learn中導(dǎo)入的一個(gè)基本的邏輯回歸模型(Logistic Regression model),它會(huì)利用 DistillBERT的處理結(jié)果,然后將句子進(jìn)行分類成正面情感或者負(fù)面情感(分別為1或者0)。

在兩個(gè)模型之間傳遞的數(shù)據(jù)為1個(gè)768維的向量。我們可以把這個(gè)向量理解為這個(gè)句子的嵌入向量(Embedding Vector),用于分類。

模型訓(xùn)練

盡管我們用了兩個(gè)模型,但是我們只會(huì)訓(xùn)練邏輯回歸模型。對(duì)于DistillBERT,我們會(huì)使用已經(jīng)預(yù)訓(xùn)練好的英語(yǔ)模型。該模型,既不會(huì)被訓(xùn)練也不會(huì)做微調(diào)(fine-tuned),直接進(jìn)行句子分類。這是因?yàn)?#xff0c;我們可以從BERT中獲得句子分類的能力。這尤其適合BERT輸出的第一個(gè)位置(跟[CLS]標(biāo)志相關(guān))。我相信這是由于BERT的第二個(gè)訓(xùn)練模型——下一句分類(Next sentence classification)。該模型的目標(biāo)在于封裝句子級(jí)別的語(yǔ)料進(jìn)行訓(xùn)練,并輸出第一個(gè)位置。transformers庫(kù)已經(jīng)提供了DistillBERT的操作,作為其預(yù)訓(xùn)練模型版本。

教程總覽

以下是該教程的計(jì)劃安排。首先我們會(huì)使用DistillBERT來(lái)產(chǎn)生2000個(gè)句子的句子向量。

這一步之后我們不會(huì)接觸DistillBERT。接下去只是Scikit Learn的操作。我們將數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集。

接下來(lái)我們?cè)谟?xùn)練集上使用邏輯回歸模型進(jìn)行訓(xùn)練。

單次預(yù)測(cè)如何計(jì)算

在我們講解代碼和解釋如何訓(xùn)練模型之前,讓我們看一下已預(yù)訓(xùn)練好的模型如何進(jìn)行預(yù)測(cè)。

我們嘗試著預(yù)測(cè)句子“a visually stunning rumination on love”。第一步是使用BERT tokenizer 將句子劃分成tokens。然后加上句子分類的特殊tokens([CLS]在開始位置,[SEP]在句子結(jié)尾)。

第三步是通過(guò)已預(yù)訓(xùn)練好的模型的嵌入表(embedding table)將每一個(gè)tokens映射成各自的id。這一步可以參考word embedding,參考閱讀文章The Illustrated Word2vec。

我們注意到,tokenizer僅需要一行代碼就能完成以上步驟。

tokenizer.encode("a visually stunning rumination on love", add_special_tokens=True)

我們的輸入句子現(xiàn)在已經(jīng)處理成DistilBERT可以處理的格式了。

如果你已經(jīng)讀過(guò)Illustrated BERT,那么這一步的可視化如下:

DistilBERT處理流程

DistilBERT處理輸入向量的流程類似于BERT。輸出是每一個(gè)token對(duì)應(yīng)一個(gè)向量。每個(gè)向量由768個(gè)浮點(diǎn)型數(shù)字組成。

因?yàn)檫@是一個(gè)句子分類任務(wù),故我們忽略其他向量而只取第一個(gè)向量(跟[CLS]相關(guān)的那個(gè))。這個(gè)向量我們會(huì)作為邏輯回歸模型的輸入。

從這里開始,就是邏輯回歸模型的事兒了,它負(fù)責(zé)將輸入的向量進(jìn)行分類。我們?cè)O(shè)想一個(gè)預(yù)測(cè)的流程長(zhǎng)這樣:

代碼

文章中用到的數(shù)據(jù)集下載網(wǎng)址為:https://github.com/clairett/pytorch-sentiment-classification/raw/master/data/SST2/train.tsv。下載DistillBERT模型文件,網(wǎng)址為:https://www.kaggle.com/abhishek/distilbertbaseuncased 。

原文中這部分的代碼講解比較多,我這邊忽略過(guò)去了,筆者想按自己的思路來(lái)處理,因此這部分內(nèi)容會(huì)有調(diào)整。完整的思路如下:

下載數(shù)據(jù)集和模型文件,與代碼放在同一目錄下。建立jupyter腳本,先載入必要的模塊:

接著我們利用pandas讀取訓(xùn)練集數(shù)據(jù),并統(tǒng)計(jì)標(biāo)簽值的頻數(shù):

讀取DistillBERT模型文件并創(chuàng)建tokenizer:

通過(guò)tokenizer完成句子切分成tokens,并映射到id:

由于每個(gè)句子的長(zhǎng)度可能會(huì)不同,因此需要對(duì)句子進(jìn)行填充(Padding),保持每個(gè)句子的輸入維度一致,句子填充的長(zhǎng)度為該數(shù)據(jù)集中句子長(zhǎng)度的最大值。

對(duì)句子進(jìn)行填充后,然后再進(jìn)行Masking。這是因?yàn)槿绻覀冎苯訉added傳入BERT,這會(huì)造成一定的困擾。我們需要?jiǎng)?chuàng)建另一個(gè)變量,來(lái)告訴模型去mask之前的填充結(jié)果。這就是attention_mask的作用:

我們的輸入已經(jīng)準(zhǔn)備完畢,接下來(lái)我們嘗試著用DistillBERT來(lái)獲取向量,也就是之前說(shuō)的第一步。這一步的處理結(jié)果會(huì)返回last_hidden_states,而我們的分類模型只需要獲取[CLS]這個(gè)token對(duì)應(yīng)的輸出向量。

可視化的操作說(shuō)明如下圖:

這樣,我們就把之前的每一個(gè)句子映射成了1個(gè)768維的句子向量,然后就利用邏輯回歸模型直接進(jìn)行訓(xùn)練就可以了。

最后,我們來(lái)看一下這個(gè)模型在測(cè)試集上的效果:

總結(jié)

關(guān)于找一找教程網(wǎng)

本站文章僅代表作者觀點(diǎn),不代表本站立場(chǎng),所有文章非營(yíng)利性免費(fèi)分享。

本站提供了軟件編程、網(wǎng)站開發(fā)技術(shù)、服務(wù)器運(yùn)維、人工智能等等IT技術(shù)文章,希望廣大程序員努力學(xué)習(xí),讓我們用科技改變世界。

[NLP(十九)首次使用BERT的可視化指導(dǎo)]http://www.zyiz.net/tech/detail-105698.html

總結(jié)

以上是生活随笔為你收集整理的java调用bert_NLP(十九)首次使用BERT的可视化指导的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。