CLUSTERLLM:將大型語言模型作為文本聚類的指南 原創(chuàng)
摘要:我們介紹了CLUSTERLLM,這是一種利用經(jīng)過指令微調(diào)的大型語言模型(如ChatGPT)反饋的新型文本聚類框架。與建立在“小”嵌入器上的傳統(tǒng)無監(jiān)督方法相比,CLUSTERLLM具有兩個有趣的優(yōu)勢:(1)即使其嵌入不可訪問,它也享有LLM的突現(xiàn)能力;(2)它通過文本指令和/或少量標注數(shù)據(jù)理解用戶對聚類的偏好。首先,我們通過構(gòu)建困難的三重問題<是否A比C更對應(yīng)B>來提示ChatGPT,以獲取聚類視角的見解,其中A、B和C是根據(jù)小嵌入器屬于不同簇的相似數(shù)據(jù)點。我們通過實驗證明,這種策略對微調(diào)小嵌入器有效且成本效益高,可查詢ChatGPT。其次,我們通過精心設(shè)計的成對問題<是否A和B屬于同一類別>,提示ChatGPT幫助確定聚類的粒度,并從最符合ChatGPT答案的聚類層次結(jié)構(gòu)中調(diào)整粒度。在14個數(shù)據(jù)集上的廣泛實驗表明,CLUSTERLLM始終提高了聚類質(zhì)量,每個數(shù)據(jù)集的平均成本約為$0.61。代碼將發(fā)布在:??https://github.com/zhang-yu-wei/ClusterLLM??。
1 引言
文本聚類作為自然語言處理(NLP)中的一項基礎(chǔ)任務(wù),具有廣泛的應(yīng)用,如從社交媒體中識別公眾觀點(Park等,2022),分析事故原因(Xu等,2022),以及檢測新興研究課題(Martínez等,2022)。一種常見的文本聚類實踐是將聚類算法(MacQueen,1967;Zhang等,2021a)應(yīng)用于預(yù)訓練嵌入器之上(Muennighoff等,2022;Wang等,2022;Su等,2022),通過更好的預(yù)訓練質(zhì)量實現(xiàn)更高性能。最新的最先進的大型語言模型(LLMs),如近期的GPT系列(Brown等,2020;Ouyang等,2022;OpenAI,2023),在各種NLP應(yīng)用中展示了非凡的語言能力。然而,這些GPT模型只能通過API使用,無法訪問用于聚類的嵌入向量。因此,LLMs不能直接應(yīng)用于文本聚類任務(wù)。
在本文中,我們探討了一個問題:我們能否有效利用基于API的LLMs來指導文本聚類?我們從一個觀察中汲取靈感來解決這個具有挑戰(zhàn)性的問題,即人類通過與其他實例比較來表示一個實例(Nosofsky,2011)。例如,人們通常通過將新音樂片段與熟悉的音樂進行比較來將其分類為特定的流派。實際上,成對關(guān)系早已在譜聚類中被利用(Donath和Hoffman,1972;Cheeger,1970)。然而,天真地遍歷數(shù)據(jù)集中所有成對關(guān)系顯然是不可行的,而且查詢LLMs的成本過高。
我們提出了CLUSTERLLM,一個利用LLM以低成本指導小嵌入器尋找文本簇的框架,如圖1所示。它包括兩個階段,分別專注于聚類的兩個方面:(1)視角,即分組標準,如主題、意圖和情感;(2)粒度,即簇的范圍。
圖 1:由于嵌入不可訪問,像 ChatGPT 這樣的 LLM 不能直接用于文本聚類。CLUSTERLLM 通過利用 LLM 作為文本聚類的指南解決了這一難題。
在階段1中,我們通過一個三重任務(wù)提示LLMs,預(yù)測兩個候選選擇中的哪個更接近錨實例,以了解用戶偏好的視角。我們選擇這個三重任務(wù)是因為(a)它與聚類粒度無關(guān);(b)生成的三重關(guān)系可以微調(diào)小嵌入器以符合正確的視角。為了提高樣本效率,我們進一步提出了基于熵的三重采樣策略,以找到最有信息量的三重。具體來說,我們首先根據(jù)聚類分配概率計算每個實例的熵,然后識別出熵最高的實例。然后從其最近的簇中采樣兩個候選選擇,以確保它們足夠接近錨點。
在階段2中,我們首先獲得從實例級別簇開始的聚類層次結(jié)構(gòu),并迭代合并兩個最近的簇直到整個數(shù)據(jù)集。然后我們通過少量標注的數(shù)據(jù)對提示LLMs以確定聚類粒度。我們通過從每一步層次聚類中合并的兩個簇中采樣數(shù)據(jù)對來構(gòu)建提示,以涵蓋廣泛的粒度范圍。最終決定是通過測量每個聚類級別與預(yù)測的一致性來做出的。
我們在包含多樣任務(wù)(如意圖發(fā)現(xiàn)、主題挖掘、類型發(fā)現(xiàn)、領(lǐng)域發(fā)現(xiàn)和情感檢測)的14個數(shù)據(jù)集上對CLUSTERLLM進行了廣泛評估。這些任務(wù)的簇數(shù)從10到150個不等。我們展示了CLUSTERLLM在提高聚類質(zhì)量方面的整體有效性,其聚類性能優(yōu)于深度聚類基線和自監(jiān)督基線。此外,消融研究表明,與隨機采樣基線相比,我們的采樣策略更有效。最后,CLUSTERLLM在確定聚類粒度方面也優(yōu)于基于聚類錯誤的方法。
總之,我們的貢獻有三點:(i)我們提出了一個框架CLUSTERLLM,該框架利用API-based LLMs預(yù)測的句子關(guān)系來指導聚類。此外,它允許用戶提供文本指令和/或少量注釋來指定聚類偏好。(ii)為了減少API查詢,我們提出了一種新穎的基于熵的采樣策略,以找到最有信息量的三重。此外,我們利用從層次聚類中采樣的成對數(shù)據(jù)來確定聚類粒度。(iii)廣泛的實驗表明,我們提出的方法可以以每個數(shù)據(jù)集約$0.2的成本改善聚類視角,以約$0.4的成本改善粒度,使用GPT-3.5。
2 預(yù)備知識
文本聚類將一個未標注的語料庫 D = {xi} (i=1,...,N) 作為輸入,輸出一個聚類分配 Y = {yi} (i=1,...,N),將輸入文本映射到聚類索引。為了明確用戶的需求,CLUSTERLLM 整合了額外的文本指令(例如,“選擇與查詢在實體類型上更對應(yīng)的例子。”)以理解視角,以及少量注釋(例如,“句子1和句子2具有相同的實體類型...”)來確定聚類粒度。
(注釋:文本聚類的任務(wù)是將一組未標注的文本數(shù)據(jù)作為輸入,然后輸出每個文本對應(yīng)的聚類標簽。具體來說,就是把輸入的每個文本分配到一個特定的聚類中。
為了更好地滿足用戶的需求,CLUSTERLLM在進行聚類時會使用額外的文本指令和少量示例注釋:
1. 文本指令:這些指令幫助模型理解用戶希望如何進行聚類。例如,用戶可能會提供一個指令,說“選擇在實體類型上更符合查詢的例子”,以便模型了解聚類的視角。
2. 少量示例注釋:這些是用戶提供的少量標注數(shù)據(jù),用來幫助模型確定聚類的具體粒度。例如,用戶可能會提供兩個句子,并說明它們屬于相同的實體類型,這幫助模型理解如何對相似的文本進行分組。)
3 我們的CLUSTERLLM
CLUSTERLLM基于一個預(yù)訓練的小型嵌入器(Wang等,2022;Su等,2022),通常用于單獨表示句子。相反,受到人類認知能力的啟發(fā)(Nosofsky,2011),CLUSTERLLM通過提示遵循人類指令訓練的大型語言模型(LLMs)(Ouyang等,2022;OpenAI,2023)來考慮句子對或三重句子。具體來說,CLUSTERLLM是一個兩階段框架(見圖2)。在第3.1節(jié)中,我們介紹了利用三重任務(wù)根據(jù)用戶指定的視角提高聚類質(zhì)量的階段1,并提出了一種減少API查詢數(shù)量的采樣策略。在第3.2節(jié)中,我們介紹了利用成對任務(wù)根據(jù)LLMs預(yù)測確定聚類粒度的階段2。
(注釋:預(yù)訓練的小型嵌入器是一種已經(jīng)通過大規(guī)模數(shù)據(jù)集進行訓練的模型,它的目的是將文本轉(zhuǎn)換為固定長度的向量(嵌入表示),這些向量可以捕捉文本的語義信息。預(yù)訓練的小型嵌入器通常是在大型語料庫上訓練的,可以在各種自然語言處理任務(wù)中提供通用的文本表示。這些嵌入器的“預(yù)訓練”意味著它們已經(jīng)在訓練過程中學到了有用的語言模式和特征,可以用于下游任務(wù),如文本分類、文本聚類等。
常見的預(yù)訓練嵌入器包括BERT、GPT-2、FastText、Word2Vec等。盡管它們被稱為“小型”嵌入器,是因為它們相對于一些最新的超大型語言模型(如GPT-3、ChatGPT)來說,規(guī)模更小,計算和存儲需求也更低。盡管如此,它們依然在許多應(yīng)用中表現(xiàn)出色,尤其是當需要高效處理大規(guī)模文本數(shù)據(jù)時。)
圖 2:CLUSTERLLM概述。它利用LLM來指導嵌入器進行低成本的文本聚類。
3.1 視角的三重任務(wù)
在本節(jié)中,我們探討如何利用三重任務(wù)根據(jù)用戶指定的視角優(yōu)化聚類結(jié)構(gòu)。三重任務(wù)的輸入是一個包含三個句子的元組t = (a, c1, c2),其中a是錨點,(c1, c2)是兩個選擇。然后,我們提示LLMs選擇(c1, c2)中哪個更符合a,使用提示PT。此外,為了指定用戶的視角,PT還需要任務(wù)指令I(lǐng)T作為輸入。LLM應(yīng)該做出選擇
cj = PT (IT , t),
其中cj ∈ {c1, c2}表示LLM選擇的一個正選,另一個為負選c\j。
(注釋:### 什么是三重任務(wù)?
三重任務(wù)涉及三個句子:
1. 錨點句子(a):這是你用來比較的基準句子。
2. 兩個候選句子(c1和c2):你需要從這兩個句子中選一個更像錨點句子的。
### 三重任務(wù)是怎么做的?
1. 你給大型語言模型(LLM)提供這三個句子。
2. 你還需要提供一個任務(wù)指令,這個指令說明你想要模型根據(jù)什么標準來進行選擇。例如,“選擇與錨點句子在主題上更相似的句子”。
3. 模型根據(jù)這個指令(IT)和三重句子(t = (a, c1, c2))來做出選擇。
### 模型的選擇是什么樣的?
模型會選擇c1或c2中更符合錨點句子的一個。選中的句子叫做正選(positive),未選中的句子叫做負選(negative)。)
3.1.1 基于熵的三重采樣
雖然可以隨機采樣三重來查詢LLM(注釋:隨機采樣的意思是從大量句子中隨機選擇三組句子,組成一個三重(a, c1, c2)。將這些隨機采樣的三重提供給LLM,詢問LLM哪個候選句子(c1或c2)與錨點句子(a)更相似或更符合某個特定的標準(根據(jù)用戶提供的指令)。),但我們在實驗中證明這效率不高。在本節(jié)中,我們提出如何挖掘有信息量的三重以節(jié)省查詢LLMs的成本并優(yōu)化聚類。為實現(xiàn)這一目標,我們依賴于從提取的嵌入Z = {zi = f(xi)}(i=1...N)得到的當前聚類結(jié)果(注釋:預(yù)訓練嵌入器會把每個輸入文本(xi)轉(zhuǎn)換成一個固定長度的向量(zi)。公式中的f(xi)表示用嵌入器f處理文本xi,得到其向量表示zi。Z是所有文本的嵌入表示的集合。也就是說,如果你有N個文本,每個文本都有一個對應(yīng)的嵌入表示,那么Z就是這些嵌入表示的集合:Z = {zi = f(xi)}(i=1...N)。使用這些嵌入表示(Z)進行聚類分析,可以得到當前的聚類結(jié)果。也就是說,我們利用這些向量表示來分組,看看哪些文本是相似的并將它們歸為一類。)??偨Y(jié)來說,我們的算法包含兩個步驟:
步驟1:根據(jù)熵找到最模糊的實例作為錨點。(注釋:選擇那些在聚類中具有最大不確定性的實例作為錨點。這些實例被認為是“最模糊”的,因為它們在不同簇之間的歸屬不確定性最高。)
步驟2:對于每個錨點實例,從其最近的兩個簇中采樣兩個選擇(注釋:在選擇了錨點實例之后,從錨點實例所屬的聚類中挑選出最接近的兩個簇,然后從這兩個簇中各選擇一個實例,作為與錨點實例進行比較的兩個候選實例。)。參見算法1了解整個過程。
在步驟1中,由于當前階段粒度未知,我們在Z上執(zhí)行聚類,其中聚類超參數(shù)在數(shù)據(jù)集之間一致,僅針對嵌入器模型f。然后,通過平均分配到簇的嵌入計算每個簇的簇中心μk。按照(Xie等,2016;Van der Maaten和Hinton,2008),我們使用Student的t分布計算每個實例的軟分配:
(注釋:這個公式用來計算每個實例分配到每個簇的概率,這種方法被稱為“軟分配”,因為它允許一個實例同時屬于多個簇,只是屬于每個簇的概率不同。我們使用了Student's t分布來計算這些概率。
Pik 是實例i被分配到簇 k 的概率,
zi是實例i的嵌入向量。
μk 是簇k的中心(質(zhì)心)
α 是自由度參數(shù),這里設(shè)置為1。
k 和 k’ 分別表示當前簇和所有可能的簇)
其中α=1為自由度。然后,我們將實例i的最近簇定義為具有最大軟分配pik的Kclosest簇。這里,Kclosest與簇的總數(shù)K成比例。
(注釋:如何為某個實例找到“最近的簇”,具體是指在軟分配概率最大的簇中進行選擇。對于每個實例 i,最近的簇是指那些實例被分配概率最高的簇。
K:總的簇的數(shù)量。
Kclosest:表示實例i的最近簇的數(shù)量。
公式表示最近的簇的數(shù)量 Kclosest 是總簇數(shù)的一定比例?K 和2之間的最大值。這樣做是為了確保最近簇的數(shù)量不會太少(至少是2個),即使?K可能小于2。)
我們固定?為一個小值,如2%。然后,我們基于這些最近簇用重新歸一化的概率p'ik計算熵,
(注釋:熵 hi 衡量了實例i在最近簇中的不確定性。如果一個實例均勻分布在這些簇中(即概率相等),那么熵會較高。如果一個實例主要集中在一個簇中(即概率分布很不均勻),那么熵會較低。)
其中。
(注釋:pik’重新歸一化概率 ,這是實例i在最近的 Kclosest個簇中的歸一化概率。)
我們根據(jù)熵H={hi}(i=1...N)按降序排列整個數(shù)據(jù)集。我們引入了兩個超參數(shù)γhigh和γlow,以控制從排序數(shù)據(jù)集中過濾出的比例區(qū)間。我們的假設(shè)是,較高熵(較小的γhigh和γlow)的錨點形成更有信息量的三重,在第4.6節(jié)中驗證。在步驟2中,我們從Kclosest最近的簇中隨機采樣兩個簇C1和C2,然后從每個簇中分別采樣兩個句子c1和c2作為選擇(見第11行和第12行)。換句話說,這些選擇要么是正選要么是錨點的負選。最后,我們還移除重復或選擇和錨點相同的三重。我們繼續(xù)采樣三重,直到達到預(yù)算Q。
備注:(1) 由于Q由用戶定義,與數(shù)據(jù)集大小無關(guān),我們的采樣是成本高效的。例如,在我們的實驗中,使用1024次查詢可以在約3000和約50000的數(shù)據(jù)集規(guī)模上提高性能。(2) 從真實情況來看,采樣的三重可能包含“兩個都是對的”或“以上皆非”。然而,我們認為即使這些三重也可能提供軟對齊信息,即選擇之間的親近排名。(3) 我們的采樣方法也可以用于主動學習,在沒有類別先驗知識時獲取人類注釋。
3.1.2 微調(diào)嵌入器
現(xiàn)在我們有了三重預(yù)測,但如何在聚類中利用它們?nèi)圆磺宄?。之前的研究依賴于深度約束聚類(Zhang等,2020;Manduchi等,2021),這些方法通常對噪聲標簽敏感(Basu等,2008)。在本文中,我們專注于微調(diào)基礎(chǔ)嵌入器f,以產(chǎn)生更好地解釋用戶視角的嵌入空間。我們利用了難負和批內(nèi)負樣本。按照(Su等,2022;Ni等,2022b),對于具有正選cj和負選c\j的三重t = (a, cj , c\j),我們優(yōu)化以下目標:
其中B結(jié)合了cj, c\j和其他批內(nèi)負樣本。τ是溫度參數(shù)。按照原始實現(xiàn),我們也計算了交換a和cj的損失。最終,微調(diào)后的嵌入器可以應(yīng)用于我們的方法中找到更有信息量的三重,從而以迭代方式進一步提高性能。我們通過在提取的嵌入上運行聚類算法獲得聚類分配。
3.2 粒度的成對任務(wù)
在本節(jié)中,我們基于第3.1節(jié)中優(yōu)化的嵌入空間來確定聚類粒度。本文中,我們將確定粒度的問題轉(zhuǎn)換為在聚類層次中找到最佳步驟的問題(見圖2右),其中每個步驟表示一個唯一的粒度(或相同數(shù)量的簇)。這并不簡單,因為相同的數(shù)據(jù)集可以應(yīng)用不同的粒度(如領(lǐng)域或主題)。為了解決這個挑戰(zhàn),我們使用成對任務(wù)查詢LLM,預(yù)測一對數(shù)據(jù)p是否屬于同一簇,提示PP,
其中w ∈ {相同,不同}是二元決策,IP是任務(wù)指令,{p?d}D=1是用于上下文學習的少量示例對(通常D=4)。我們假設(shè)這些示例對是由有特定簇粒度預(yù)期的用戶標注的。我們還結(jié)合了每個示例對的簡短理由(見表12底部示例)。
3.2.1 使用成對層次采樣確定粒度
我們?nèi)缓蠼榻B如何從聚類層次中采樣成對以查詢LLMs并確定粒度。我們假設(shè)最大和最小簇數(shù)(分別為kmax和kmin),這取決于用戶對粒度的期望。然后我們從每一步要合并的兩個簇中隨機采樣λ(在我們的實驗中為1或3)對數(shù)據(jù)以形成候選對{pi}(i=1...Np),其中Np =λ(kmax?kmin)。這些對覆蓋了從kmax到kmin的整個粒度范圍,將用于查詢LLMs。之后,每個粒度級別可以根據(jù)LLM預(yù)測進行檢驗,以選擇一致性最高的粒度,
其中Wp = {wip}(i=1...Np)表示從方程6得到的預(yù)測,Wk表示一組二元值,指示每對數(shù)據(jù)在粒度k時是否在同一簇中。經(jīng)驗上,我們發(fā)現(xiàn)以下方法在我們的框架中表現(xiàn)更好:使用F-beta分數(shù)(精確率和召回率的加權(quán)調(diào)和平均)作為測量M,并將Wp/Wk作為標簽/預(yù)測。最后,對于大規(guī)模數(shù)據(jù)集,我們通過在小批量K均值基礎(chǔ)上應(yīng)用層次聚類解決高時間復雜度問題。詳見附錄A。
備注:與第3.1.1節(jié)類似,成對層次采樣也可以用于獲取人類注釋。然而,算法的可靠性仍取決于簇的質(zhì)量。在一個極端情況下,如果簇完全隨機,即使所有成對預(yù)測都是正確的,也無法找到粒度。
4 結(jié)論
在本文中,我們研究了如何利用基于API的大型語言模型(LLMs)來指導小型嵌入器進行文本聚類,以從LLMs的高級語言能力和用戶的聚類指令中受益。我們提出通過兩種句子關(guān)系任務(wù)來提示LLMs:三重任務(wù)和成對任務(wù)。三重任務(wù)選擇與錨點最相似的句子,并結(jié)合用戶的視角指令。預(yù)測的三重用于微調(diào)小型嵌入器。成對任務(wù)判斷一對句子是否屬于少量示例提示的同一類別,然后使用預(yù)測結(jié)果通過一致性測量來確定聚類粒度。廣泛的實驗表明,我們提出的CLUSTERLLM框架可以提高聚類質(zhì)量,并以極低的成本提出合理的聚類粒度。然而,CLUSTERLLM仍然依賴于嵌入模型本身,這在黑箱嵌入模型上效率低且不可行。我們鼓勵未來的研究探索無模型訓練的潛力,如約束聚類。
局限性
我們列出幾項工作中的局限性,希望在未來得到改進:
1. 依賴預(yù)訓練嵌入器:為了找到最有信息量的數(shù)據(jù),我們必須依賴能夠指示最大聚類分配熵的預(yù)訓練嵌入器。我們希望將自監(jiān)督三重和LLM預(yù)測的三重結(jié)合起來解決這個問題。
2. 微調(diào)的計算成本:我們最初的想法是利用約束聚類,這是一種不需要更新小型嵌入器的輕量級算法。然而,不可避免的不穩(wěn)定訓練將受到LLM預(yù)測錯誤的嚴重影響。我們通過引入嵌入器進行微調(diào)來暫時解決這個問題,但希望在未來的工作中減少計算成本。
3. 領(lǐng)域發(fā)現(xiàn)上的次優(yōu)性能:我們注意到,在如Massive(D)和CLINC(D)等領(lǐng)域發(fā)現(xiàn)數(shù)據(jù)集上,性能通常不如原始的Instructor嵌入器。我們在附錄H中對此問題進行了討論。
Zhang Y, Wang Z, Shang J. Clusterllm: Large language models as a guide for text clustering[J]. arXiv preprint arXiv:2305.14871, 2023.
University of California
本文轉(zhuǎn)載自公眾號AIRoobt ,作者:AIRoobt
原文鏈接:??https://mp.weixin.qq.com/s/Y1fGTuh8m_oGwMjPXg9U8w??
