文章ID:395時間:2023-11-30人氣:
在監督(Supervised)機器學習中,大量數據集被用于模型訓練,以便磨練模型能夠做出精確預測的能力。在完成訓練過程之后,我們便可以利用測試數據,來獲得模型的預測結果。然而,這種傳統的監督學習方法存在著一個顯著缺點:它需要大量無差錯的訓練數據集。但是并非所有領域都能夠提供此類無差錯數據集。因此,“少樣本學習”的概念應運而生。
在深入研究SentenceTransformerfine-tuning(SetFit)之前,我們有必要簡要地回顧一下自然語言處理(NaturalLanguageProcessing,NLP)的一個重要方面,也就是:“少樣本學習”。
少樣本學習是指:使用有限的訓練數據集,來訓練模型。模型可以從這些被稱為支持集的小集合中獲取知識。此類學習旨在教會少樣本模型,辨別出訓練數據中的相同與相異之處。例如,我們并非要指示模型將所給圖像分類為貓或狗,而是指示它掌握各種動物之間的共性和區別。可見,這種方法側重于理解輸入數據中的相似點和不同點。因此,它通常也被稱為元學習(meta-learning)、或是從學習到學習(learning-to-learn)。
值得一提的是,少樣本學習的支持集,也被稱為k向(k-way)n樣本(n-shot)學習。其中“k”代表支持集里的類別數。例如,在二分類(binaryclassification)中,k等于2。而“n”表示支持集中每個類別的可用樣本數。例如,如果正分類有10個數據點,而負分類也有10個數據點,那么n就等于10。總之,這個支持集可以被描述為雙向10樣本學習。
既然我們已經對少樣本學習有了基本的了解,下面讓我們通過使用SetFit進行快速學習,并在實際應用中對電商數據集進行文本分類。
由HuggingFace和英特爾實驗室的團隊聯合開發的SetFit,是一款用于少樣本照片分類的開源工具。你可以在項目庫鏈接--https://github.com/huggingface/setfit?ref=hackernoon.com中,找到關于SetFit的全面信息。
SetFit的訓練速度非常快,效率也極高。與GPT-3和T-FEW等大模型相比,其性能極具競爭力。請參見下圖:
如下圖所示,SetFit在少樣本學習方面的表現優于RoBERTa。
為了便于采用少樣本的訓練方法,我們將從四個類別中各選擇八個樣本,從而得到總共32個訓練樣本。而其余樣本則將留作測試之用。簡言之,我們在此使用的支持集是4向8樣本學習。下圖展示的是自定義電商數據集的示例:
我們采用名為“all-mpnet-base-v2”的SentenceTransformers預訓練模型,將文本數據轉換為各種向量嵌入。該模型可以為輸入文本,生成維度為768的向量嵌入。
如下命令所示,我們將通過在conda環境(是一個開源的軟件包管理系統和環境管理系統)中安裝所需的軟件包,來開始SetFit的實施。
!pip3installSetFit!pip3installsklearn!pip3installtransformers!pip3installsentence-transformers
安裝完軟件包后,我們便可以通過如下代碼加載數據集了。
fromdatasetsimportload_datasetdataset=load_dataset('csv',data_files={"train":'E_Commerce_Dataset_Train.csv',"test":'E_Commerce_Dataset_Test.csv'})
我們來參照下圖,看看訓練樣本和測試樣本數。
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模型和句子轉換器(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"})
初始化完成兩個模型后,我們現在便可以調用訓練程序了。
trainer.train()
在完成了2個訓練輪數(epoch)后,我們將在eval_dataset上,對訓練好的模型進行評估。
trainer.evaluate()
經測試,我們的訓練模型的最高準確率為87.5%。雖然87.5%的準確率并不算高,但是畢竟我們的模型只用了32個樣本進行訓練。也就是說,考慮到數據集規模的有限性,在測試數據集上取得87.5%的準確率,實際上是相當可觀的。
此外,SetFit還能夠將訓練好的模型,保存到本地存儲器中,以便后續從磁盤加載,用于將來的預測。
trainer.model._save_pretrained(save_directory="SetFit_ECommerce_Output/")model=SetFitModel.from_pretrained("SetFit_ECommerce_Output/",local_files_notallow=True)
如下代碼展示了根據新的數據進行的預測結果:
至此,相信您已經基本掌握了“少樣本學習”的概念,以及如何使用SetFit來進行文本分類等應用。當然,為了獲得更深刻的理解,我強烈建議您選擇一個實際場景,創建一個數據集,編寫對應的代碼,并將該過程延展到零樣本學習、以及單樣本學習上。
北京市海淀區中關村南1條甲1號ECO中科愛克大廈6-7層
北京市公安局海淀分局備案編號:110108002980號營業執照
內容聲明:1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違規信息,如您發現違規內容,請聯系我們進行清除處理!
4、本文地址:http://www.gootek.com.cn/article-395.html,復制請保留版權鏈接!
產品針對數據分片策略部分做的不多,主要是對兼容類的評估工具;即根據數據庫自身能力,評估原有對象、SQL語句需要做哪些改造等。
2023-11-30 18:00:15
“科技昨夜今晨”時間,大家好,現在是2023年11月25日星期六,今天的重要科技資訊有:
2023-11-25 22:49:16
EditGPT是一個強大的免費人工智能瀏覽器擴展插件工具,當我們通過ChatGPT潤色文本(科研/論文/提案等),或者改寫文章/糾錯語法表達等,EditGPT可以很直觀的對比修改了文本哪些內容,讓我們更有把握的處理文案需求。接下來狂人SEO講下EditGPT工具的用法。EditGPT是免費的瀏覽器擴...
2023-09-17 17:21:53
歷時三年的疫情現已逐步恢復常態化,大眾的消費信心也在逐漸恢復。作為經濟復蘇后的首年,國內廚電市場也正呈現出穩步增長的態勢。據悉,今年上半年,油煙機零售額達177
2023-09-15 19:54:09
微軟雅黑哎總有一種別人出生就在羅馬而這家機構一出生就是牛馬的感覺微軟雅黑真的是作惡多端微軟雅黑暴雷也是有原因的前幾年作弊丑聞還沒冷卻現在又來一出學術竊取為了賺錢也蠻拼的其實國外新聞都已經滿天飛了之前報過易維教育在學生不知情的情況下提供作弊服務而且這事還被校方發現了涉事的名學生被嚴厲處罰甚至有人被退學微軟雅黑今年又被多倫...
本站公告 2022-07-23 21:02:24