最新国产精品鲁鲁免费视频,A∨无码一区二区,免费AV无码久久一本通,99精品视频九九精品,99热在线都是精品,国产精品亲子乱子伦XXXX裸,亚洲色无码中文字幕伊人,99re6久久免费观看,无码精品久久久久一区二区,日本高清乱理伦片中文字幕

悟空收錄網(wǎng)

在少樣本學習中,用SetFit進行文本分類


文章編號:395 / 更新時間:2023-11-30 18:00:20 / 瀏覽:

在監(jiān)督(Supervised)機器學習中,大量數(shù)據(jù)集被用于模型訓練,以便磨練模型能夠做出精確預測的能力。在完成訓練過程之后,我們便可以利用測試數(shù)據(jù),來獲得模型的預測結(jié)果。然而,這種傳統(tǒng)的監(jiān)督學習方法存在著一個顯著缺點:它需要大量無差錯的訓練數(shù)據(jù)集。但是并非所有領域都能夠提供此類無差錯數(shù)據(jù)集。因此,“少樣本學習”的概念應運而生。

在深入研究SentenceTransformerfine-tuning(SetFit)之前,我們有必要簡要地回顧一下自然語言處理(NaturalLanguageProcessing,NLP)的一個重要方面,也就是:“少樣本學習”。

少樣本學習是指:使用有限的訓練數(shù)據(jù)集,來訓練模型。模型可以從這些被稱為支持集的小集合中獲取知識。此類學習旨在教會少樣本模型,辨別出訓練數(shù)據(jù)中的相同與相異之處。例如,我們并非要指示模型將所給圖像分類為貓或狗,而是指示它掌握各種動物之間的共性和區(qū)別。可見,這種方法側(cè)重于理解輸入數(shù)據(jù)中的相似點和不同點。因此,它通常也被稱為元學習(meta-learning)、或是從學習到學習(learning-to-learn)。

值得一提的是,少樣本學習的支持集,也被稱為k向(k-way)n樣本(n-shot)學習。其中“k”代表支持集里的類別數(shù)。例如,在二分類(binaryclassification)中,k等于2。而“n”表示支持集中每個類別的可用樣本數(shù)。例如,如果正分類有10個數(shù)據(jù)點,而負分類也有10個數(shù)據(jù)點,那么n就等于10。總之,這個支持集可以被描述為雙向10樣本學習。

既然我們已經(jīng)對少樣本學習有了基本的了解,下面讓我們通過使用SetFit進行快速學習,并在實際應用中對電商數(shù)據(jù)集進行文本分類。

由HuggingFace和英特爾實驗室的團隊聯(lián)合開發(fā)的SetFit,是一款用于少樣本照片分類的開源工具。你可以在項目庫鏈接--https://github.com/huggingface/setfit?ref=hackernoon.com中,找到關于SetFit的全面信息。

SetFit的訓練速度非常快,效率也極高。與GPT-3和T-FEW等大模型相比,其性能極具競爭力。請參見下圖:

SetFit與T-Few3B模型的比較

如下圖所示,SetFit在少樣本學習方面的表現(xiàn)優(yōu)于RoBERTa。

為了便于采用少樣本的訓練方法,我們將從四個類別中各選擇八個樣本,從而得到總共32個訓練樣本。而其余樣本則將留作測試之用。簡言之,我們在此使用的支持集是4向8樣本學習。下圖展示的是自定義電商數(shù)據(jù)集的示例:

自定義電商數(shù)據(jù)集樣本

我們采用名為“all-mpnet-base-v2”的SentenceTransformers預訓練模型,將文本數(shù)據(jù)轉(zhuǎn)換為各種向量嵌入。該模型可以為輸入文本,生成維度為768的向量嵌入。

如下命令所示,我們將通過在conda環(huán)境(是一個開源的軟件包管理系統(tǒng)和環(huán)境管理系統(tǒng))中安裝所需的軟件包,來開始SetFit的實施。

!pip3installSetFit!pip3installsklearn!pip3installtransformers!pip3installsentence-transformers

安裝完軟件包后,我們便可以通過如下代碼加載數(shù)據(jù)集了。

fromdatasetsimportload_datasetdataset=load_dataset('csv',data_files={"train":'E_Commerce_Dataset_Train.csv',"test":'E_Commerce_Dataset_Test.csv'})

我們來參照下圖,看看訓練樣本和測試樣本數(shù)。

訓練和測試數(shù)據(jù)

Encoded_Product=le.fit_transform(dataset["train"]['Label'])dataset["train"]=dataset["train"].remove_columns("Label").add_column("Label",Encoded_Product).cast(dataset["train"].features)Encoded_Product=le.fit_transform(dataset["test"]['Label'])dataset["test"]=dataset["test"].remove_columns("Label").add_column("Label",Encoded_Product).cast(dataset["test"].features)

下面,我們將初始化SetFit模型和句子轉(zhuǎn)換器(sentence-transformers)模型。

fromsetfitimportSetFitModel,SetFitTrainerfromsentence_transformers.lossesimportCosineSimilarityLossmodel_id="sentence-transformers/all-mpnet-base-v2"model=SetFitModel.from_pretrained(model_id)trainer=SetFitTrainer(model=model,train_dataset=dataset["train"],eval_dataset=dataset["test"],loss_class=CosineSimilarityLoss,metric="accuracy",batch_size=64,num_iteratinotallow=20,num_epochs=2,column_mapping={"Text":"text","Label":"label"})

初始化完成兩個模型后,我們現(xiàn)在便可以調(diào)用訓練程序了。

trainer.train()

在完成了2個訓練輪數(shù)(epoch)后,我們將在eval_dataset上,對訓練好的模型進行評估。

trainer.evaluate()

經(jīng)測試,我們的訓練模型的最高準確率為87.5%。雖然87.5%的準確率并不算高,但是畢竟我們的模型只用了32個樣本進行訓練。也就是說,考慮到數(shù)據(jù)集規(guī)模的有限性,在測試數(shù)據(jù)集上取得87.5%的準確率,實際上是相當可觀的。

此外,SetFit還能夠?qū)⒂柧毢玫哪P停4娴奖镜?a href="http://www.schoolwires.net.cn/article-402.html" target="_blank">存儲器中,以便后續(xù)從磁盤加載,用于將來的預測。

trainer.model._save_pretrained(save_directory="SetFit_ECommerce_Output/")model=SetFitModel.from_pretrained("SetFit_ECommerce_Output/",local_files_notallow=True)

如下代碼展示了根據(jù)新的數(shù)據(jù)進行的預測結(jié)果:

至此,相信您已經(jīng)基本掌握了“少樣本學習”的概念,以及如何使用SetFit來進行文本分類等應用。當然,為了獲得更深刻的理解,我強烈建議您選擇一個實際場景,創(chuàng)建一個數(shù)據(jù)集,編寫對應的代碼,并將該過程延展到零樣本學習、以及單樣本學習上。

北京市海淀區(qū)中關村南1條甲1號ECO中科愛克大廈6-7層

北京市公安局海淀分局備案編號:110108002980號營業(yè)執(zhí)照

我關注的話題
相關標簽: 機器學習少樣本學習SetFit

本文地址:http://www.schoolwires.net.cn/article-395.html

上一篇:Spring到底是如何解決循環(huán)依賴問題的??...
下一篇:滴滴崩了18小時,事故危機誰買單...

發(fā)表評論

溫馨提示

做上本站友情鏈接,在您站上點擊一次,即可自動收錄并自動排在本站第一位!
<a href="http://www.schoolwires.net.cn/" target="_blank">悟空收錄網(wǎng)</a>