Google: 在新知識上微調大語言模型是否會鼓勵產生幻覺?

摘要

當大型語言模型通過監督式微調進行對齊時,它們可能會遇到在預訓練期間沒有獲得的新事實信息。人們經常推測,這可能會教導模型產生事實上不正確的回應的行為,因為模型被訓練成生成沒有基于其預先存在的知識的事實。在這項工作中,Google研究了這種暴露在新知識下對微調后模型利用其預先存在知識的能力之影響。為此,他們設計了一個受控的設置,專注于閉書問答,改變引入新知識的微調樣本的比例證明,大型語言模型在通過微調獲得新的事實知識方面存在困難,因為引入新知識的微調樣本的學習速度明顯慢于與模型知識一致的樣本。然而, Google也發現,隨著最終學習到具有新知識的樣本,它們線性地增加了模型產生幻覺的傾向。綜合起來結果凸顯了通過微調引入新事實知識的風險,并支持這樣的觀點:大型語言模型主要通過預訓練獲得事實知識,而微調教導它們更有效地使用這些知識。

https://arxiv.org/pdf/2405.05904

1 引言

在文本語料庫上預訓練大型語言模型(LLMs)可以將大量事實知識嵌入到它們的參數中,這對于在各種下游應用中取得優異表現至關重要。這些模型通常需要進一步對齊到所需的行為,通常是通過監督式微調指令跟隨任務和從人類反饋進行偏好學習來實現。

在這里插入圖片描述

圖1:當對50%已知和50%未知的樣本進行微調時,訓練和開發準確度隨微調持續時間的變化。未知樣本的擬合速度明顯慢于已知樣本。當LLM擬合大部分已知的訓練樣本但只有少數未知樣本時,可以獲得最佳的開發表現。從這一點開始,擬合未知樣本會降低性能。

在微調階段,模型通常在由人類標注者或其他LLM創建的輸出上進行訓練。因此,模型可能會遇到新的事實信息,超出了它在預訓練期間獲得的知識。這就引出了一個問題:LLMs如何整合其預先存在知識之外的新事實。一種可能性是,模型只是通過學習這些新的事實信息來適應。然而,一個常見的推測認為,這種暴露在新知識下可能會鼓勵模型產生事實上不正確的回應,因為模型本質上被訓練成生成沒有基于其預先存在知識的事實。

在這項工作中,我們研究了通過微調學習新的事實知識如何影響模型相對于其預先存在知識產生幻覺的傾向,探索上述推測。為了研究新知識的影響,我們必須能夠評估單個微調樣本是否與模型的知識一致。我們提出了SliCK,一個由四個知識類別組成的層次結構,這些類別是從一個連續的度量衍生出來的,該度量量化了模型生成的答案與基本事實標簽之間的一致性。在SliCK中,樣本首先被分類為已知和未知兩種類型,其中后者對應于包含模型最可能不知道的事實的樣本。已知的樣本隨后被分成三個類別:高度已知、可能已知和微弱已知(圖2)。

借助上述方法,我們仔細設計了一個受控的研究,專注于閉書問答(QA),我們改變了被歸類為未知的微調樣本的比例,同時控制其他因素。

我們的研究經驗證明,從未知的微調樣本中學習與模型相對于其預先存在知識產生幻覺的傾向呈線性相關(§4)。相反,從已知樣本中學習與更好地利用預先存在的知識相關。

通過對訓練動態的分析,我們發現LLM擬合未知的微調樣本的速度明顯慢于已知樣本(圖1頂部)。這表明,在微調期間,LLMs難以整合新的事實知識(存在于未知的微調樣本中)。相反,它們主要學習如何公開其預先存在的知識(使用已知的微調樣本)。

從實踐的角度來看,使用提前停止(圖1中的垂直虛線)來減輕過度擬合可以最大限度地降低由擬合未知樣本引起的幻覺風險,因為它們主要出現在后期的訓練階段作為一種過度擬合的形式(如圖1底部的開發性能下降所示) .或者,我們還表明,過濾掉未知的微調樣本可以大大降低過度擬合的風險,而不會犧牲性能。

我們進一步評估了來自我們三個已知知識類別中的每一個的微調樣本對性能的影響(§5)。出乎意料的是,我們發現僅在最高知識程度(表示為高度已知)的樣本上微調的模型并沒有產生最佳結果。我們的分析揭示,結合可能已知的微調樣本(代表具有較低確定性程度的事實)在測試時正確處理此類樣本方面起著重要作用。這表明微調樣本的組成顯著影響LLMs有效利用其預先存在知識的程度。

總而言之,我們通過設計一個隔離這個因素的受控設置來研究微調數據中新事實知識的影響。我們發現引入新知識的微調樣本學習緩慢,這表明LLMs難以通過微調整合新知識,并支持這樣的觀點:LLMs主要通過預訓練獲得知識。然而,我們也發現,隨著模型最終通過微調學習新知識,它變得更容易相對于其預先存在的知識產生幻覺。總的來說,我們的發現凸顯了通過微調引入新知識時可能產生意想不到的后果,并暗示微調可能更有用作增強預先存在知識利用率的機制。

2 研究設置

給定一個微調數據集 D D D和一個預訓練的LLM M M M,我們用 M D M_D MD? 表示通過在 D D D上微調 M M M獲得的模型。為了研究新知識在 D D D中如何影響 M D M_D MD? 的性能,我們設計了一個受控的設置,創建具有不同比例未知樣本的 D D D變體。

在構建D時,我們的目標是反映對多樣化知識密集型任務的指令調整,同時保持對實驗設置的控制。因此,我們專注于可以結構化為(主題,關系,對象)三元組的事實知識,這些三元組被轉換為閉書QA格式。在這個設置中, D = { ( q i , a i ) } i = 1 N D = \{(q_i, a_i)\}_{i=1}^N D={(qi?,ai?)}i=1N?,其中 q q q是一個尋求知識的問題,對應于一個特定的三元組(例如,“巴黎位于哪里?”), a a a是基本事實答案(例如,“法國”)。

在這里插入圖片描述
為此,我們使用ENTITYQUESTIONS,其中來自Wikidata的各種關系的三元組被轉換為QA對。這些關系包含了廣泛的事實知識,包括傳記信息、地理數據、所有權和作者詳情、歷史等。我們使用原始的開發和測試分割,并對訓練分割進行子采樣以創建D的不同變體。我們專注于12個不同的關系,并為out-of-distribution測試集保留7個額外的關系,該測試集(僅)在§4.5中使用。

作為 M M M,我們使用PaLM 2-M基礎模型。我們專注于精確匹配(EM)作為我們的評估指標。完整技術細節在§A中。

3 量化LLMs中的知識

為了評估 D D D中的新知識對MD性能的影響,我們必須注釋 D D D中的每個 ( q , a ) (q, a) (q,a)對,即M是否知道 q q q的答案是 a a a。為了估計這一點,我們定義了一個基于M的樣本的連續 P Correct P_{\text{Correct}} PCorrect?度量,并使用它將 ( q , a ) (q, a) (q,a)對分為四個知識類別。我們將這種方法命名為SliCK(基于采樣的知識分類)。

定義 P Correct P_{\text{Correct}} PCorrect?。我們采用這樣的觀點:如果 M M M在提示回答 q q q時生成 a a a,則 M M M知道 q q q的答案是 a a a。由于 M M M是一個尚未專門微調以遵循指令的基礎模型,因此我們使用少樣本示例進行上下文學習來提示 M M M

在實踐中, M M M可以預測不同的答案,因為(1)示例的選擇會影響個別預測,以及(2)如果使用溫度采樣,則會引入隨機性。為了反映這一點,我們將 P Correct ( q , a ; M , T ) P_{\text{Correct}}(q, a; M, T) PCorrect?(q,a;M,T)定義為一個估計,即在使用隨機少樣本示例提示并使用解碼溫度T時,M產生正確答案a到q的可能性有多大。

出于我們研究的目的,我們使用 N ex = 10 N_{\text{ex}} = 10 Nex?=10不同的隨機4樣本提示來近似 P Correct P_{\text{Correct}} PCorrect?的值。對于每個4樣本提示,我們使用 T = 0 T = 0 T=0預測貪婪答案,并使用 T = 0.5 T = 0.5 T=0.5采樣16個答案。 P Correct ( q , a ; M , T = 0 ) P_{\text{Correct}}(q, a; M, T = 0) PCorrect?(q,a;M,T=0)通過正確的貪婪答案的比例來估計, P Correct ( q , a ; M , T > 0 ) P_{\text{Correct}}(q, a; M, T > 0) PCorrect?(q,a;M,T>0)通過正確的樣本答案的比例來估計。完整的細節在§C中。

P Correct P_{\text{Correct}} PCorrect?衍生知識類別。
我們將未知類別(圖2a和2b的底部行)定義為代表 ( q , a ) (q, a) (q,a)對的類別,對于這些 ( q , a ) (q, a) (q,a)對, M M M從不預測 q q q的正確答案。在我們的符號中,這意味著 P Correct ( q , a ; M , T ≥ 0 ) = 0 P_{\text{Correct}}(q, a; M, T \geq 0) = 0 PCorrect?(q,a;M,T0)=0。另一方面,如果 P Correct ( q , a ; M , T ≥ 0 ) > 0 P_{\text{Correct}}(q, a; M, T \geq 0) > 0 PCorrect?(q,a;M,T0)>0,即 M M M有時預測 q q q的正確答案,我們認為 ( q , a ) (q, a) (q,a)是已知的。在這個選擇中,我們假設如果提示 M M M回答 q q q有時會產生正確的答案 a a a,那么 M M M一定對相關的事實有一些關聯。

認識到知識可以在確定性和范圍方面有不同的程度,我們將已知的 ( q , a ) (q, a) (q,a)對分為三個不同的類別(表2a和2b的前三行)。基于 M M M應該始終預測 a a a,如果 ( q , a ) (q, a) (q,a)是已知的這一原則,我們強調貪婪解碼的結果,用 P Correct ( q , a ; M , T = 0 ) P_{\text{Correct}}(q, a; M, T = 0) PCorrect?(q,a;M,T=0)表示。

高度已知代表 ( q , a ) (q, a) (q,a)對,對于這些對, M M M總是貪婪地預測 a a a。如果 M M M有時(但不總是)貪婪地預測 a a a,我們認為 ( q , a ) (q, a) (q,a)可能已知。最后,如果 M M M從不貪婪地預測 a a a,我們將 ( q , a ) (q, a) (q,a)歸類為微弱已知。在這里插入圖片描述
我們應用SliCK來注釋我們數據集中的每個 ( q , a ) (q, a) (q,a)對,根據 M M M的知識類別。我們在§6中分析了我們類別的質量。

4 未知樣本有多大危害?

在本節中,我們研究了微調數據集 D D D中的新知識對性能的影響。為了隔離這種影響,我們改變了 D D D中被歸類為未知的樣本的比例,同時控制了其他因素。具體而言,我們固定 ∣ D ∣ |D| D并創建具有 X X% X未知和 ( 100 ? X ) (100 ? X)% (100?X)已知樣本的 D D D變體(完整細節在§E中)。我們將已知類別集體處理(參見圖2a),并在§5中提供每個類別的分析。我們將基于開發集的提前停止表示為EARLY_STOP(在5-10個epoch后發生),將50個微調epoch表示為CONVERGENCE,因為在這一點上M總是完全擬合 D D D(即100%的訓練準確度)。我們測量測試性能作為幻覺的代理,因為我們處于具有不相交的訓練/測試分割的閉書QA設置中,其中模型必須使用其預先存在的知識來回答測試問題(有關進一步討論,請參見§B)。

4.1 更高的未知比例與性能下降成正比

圖3a顯示了對于不同的微調持續時間,性能隨 D D D中未知樣本百分比的變化。無論微調持續時間如何,更高的未知百分比都會導致性能下降,這表明未知樣本比已知樣本的用處要小。性能也受到微調持續時間的強烈影響,EARLY_STOP通常會產生最佳性能。訓練更多的epoch通常會降低性能(CONVERGENCE觀察到最低的性能),這可以歸因于過度擬合 D D D。有趣的是,這種影響隨著更大的未知百分比而增加(來自EARLY_STOP的行間距沿正x軸單調增加),這表明更高的未知百分比增加了過度擬合的風險。

4.2 未知樣本:有害還是中性?

由于 ∣ D ∣ |D| D是固定的,因此更高的未知百分比會導致性能下降,這可能僅僅源于已知微調樣本的數量減少。因此,仍然不清楚未知樣本是有害還是中性。為了解決這個問題,我們測量了從 D D D中過濾掉所有未知樣本的影響。對于每個 D D D變體,我們創建一個相應的削減變體 D Known D_{\text{Known}} DKnown?,僅包含 D D D中的已知樣本。例如,如果D有25%未知,我們將它們過濾掉,剩下剩余的75%已知樣本,得到 ∣ D Known ∣ = 0.75 × ∣ D ∣ |D_{\text{Known}}| = 0.75 \times |D| DKnown?=0.75×D

圖3b顯示了結果。也許令人驚訝的是,對于EARLY_STOP,D的結果與 D Known D_{\text{Known}} DKnown?幾乎相同,這表明未知樣本對性能有中性影響(因為去除它們對性能的影響很小)。相反,CONVERGENCE結果表明,隨著訓練時間的延長,未知樣本實際上是非常有害的。在這種情況下, D D D的表現不如 D Known D_{\text{Known}} DKnown?,它們之間的差距與未知比例成正比。
在這里插入圖片描述

有趣的是,對于 D Known D_{\text{Known}} DKnown?,EARLY_STOP和CONVERGENCE之間的差距非常小(虛線),而對于 D D D,這個差距非常大(實線)。這表明未知樣本的存在是使具有更高未知比例的變體更容易過度擬合的原因。

4.3 未知樣本的擬合速度慢于已知樣本

我們表明未知樣本是有害的,但它們的負面影響主要體現在訓練的后期階段,因此可以通過提前停止來實證地避免。為了更好地理解這些趨勢,我們通過檢查M在各種微調階段擬合了 D D D中的哪些微調樣本來分析訓練動態。圖1顯示了已知和未知子集的 D D D的訓練準確度,作為微調持續時間的函數。開發準確度在底部的放大圖中顯示,因為它落在更窄的范圍內。我們在§F中包括了每個已知類別的訓練準確度細分。

M擬合未知微調樣本的速度明顯慢于已知樣本。在EARLY_STOP(垂直虛線)中,M在開發集上達到最高性能,同時擬合大多數已知樣本但只有少數未知樣本。在圖4中,我們表明這種行為在我們所有的 D D D變體中都是一致的。這可以解釋為什么在EARLY_STOP中,未知樣本對性能有中性影響(§4.2),因為在這一點上M仍然沒有擬合它們中的大部分。

在這里插入圖片描述
最后,由于未知樣本很可能引入新的事實知識,它們的顯著緩慢的擬合率表明LLMs難以通過微調獲得新的事實知識,相反,它們學習使用已知樣本公開其預先存在的知識。

4.4 未知與已知對準確度的影響:線性模型視角

圖1表明,在開發性能在EARLY_STOP(垂直虛線)達到峰值后,隨著M逐漸擬合更多的未知樣本,性能會下降。在本節中,我們旨在通過評估一個簡單的線性依賴關系是否可以將擬合已知和未知訓練樣本的影響與測試準確度聯系起來,從而更準確地描述這種關系。為此,我們使用以下線性回歸模型:

Accuracy = β 0 + β kn ? N kn ∣ D ∣ + β unk ? N unk ∣ D ∣ \text{Accuracy} = \beta_0 + \beta_{\text{kn}} \cdot \frac{N_{\text{kn}}}{|D|} + \beta_{\text{unk}} \cdot \frac{N_{\text{unk}}}{|D|} Accuracy=β0?+βkn??DNkn??+βunk??DNunk?? (1)

其中 N Kn N_{\text{Kn}} NKn? N Unk N_{\text{Unk}} NUnk?是M擬合的D中的已知和未知樣本的數量。

我們通過從所有 D D D變體的微調模型中收集每個epoch后的(Accuracy, N Kn N_{\text{Kn}} NKn?, N Unk N_{\text{Unk}} NUnk?)值來估計系數。表1顯示了結果(頂行)。高 R 2 R^2 R2表明測試準確度與擬合的訓練樣本類型之間存在很強的線性關系。我們的模型意味著擬合未知樣本會損害性能( β unk < 0 \beta_{\text{unk}} < 0 βunk?<0),而擬合已知樣本會改善性能( β kn > 0 \beta_{\text{kn}} > 0 βkn?>0)。未知的估計負面影響大致與已知的正面影響相匹配( ∣ β ukn ∣ ≈ ∣ β kn ∣ |\beta_{\text{ukn}}| \approx |\beta_{\text{kn}}| βukn?βkn?)。

4.5 泛化到新關系

在上述設置中,測試集中的(q, a)對應于在D中出現的相同12個關系的三元組。我們現在研究我們觀察到的動態是否對模型的知識有更廣泛的影響,并轉移到微調期間沒有出現的關系。

為了測試這一點,我們為out-of-distribution(OOD)測試集保留了一部分關系,將它們從訓練和開發分割中排除。有關詳細信息,請參見§A以及表4和表5中的in-distribution與OOD關系。

我們在OOD測試集上的結果揭示了類似的關鍵見解:(1)更高的未知比例導致更低的OOD測試性能;(2)未知樣本對OOD性能有害,但主要是在M擬合它們時。OOD測試準確度的線性模型(等式(1))顯示了類似的趨勢: β unk < 0 \beta_{\text{unk}} < 0 βunk?<0, β kn > 0 \beta_{\text{kn}} > 0 βkn?>0, ∣ β ukn ∣ ≈ ∣ β kn ∣ |\beta_{\text{ukn}}| \approx |\beta_{\text{kn}}| βukn?βkn? R 2 = 0.95 R^2 = 0.95 R2=0.95(見表1)。更多細節在§H中。

總的來說,我們的見解跨關系轉移。這本質上表明,在諸如"[E1]位于何處?“等未知樣本上進行微調,可能會在看似不相關的問題上鼓勵幻覺,例如"誰創立了[E2]?”。這進一步支持了這樣的結論:觀察到的效應可能源于模型學習生成未基于其預先存在知識的答案的行為。

5 理解知識類型:它們的價值和影響

在解決我們關于未知微調樣本效應的主要研究問題時,為了簡單起見,我們將已知類別集體處理(參見圖2a)。我們現在檢查每個類別的影響,探討以下問題:

Q1:每個類別的訓練樣本如何影響測試性能?Q2:模型在每個類別的測試樣本上的性能如何?為了解決Q1,我們創建了微調數據集D的單一類別變體。僅由類別CAT的樣本組成的D變體表示為 D CAT D_{\text{CAT}} DCAT?。作為參考,我們包括一個具有ENTITYQUESTIONS中自然類別分布的變體,表示為 D Natural D_{\text{Natural}} DNatural? ∣ D ∣ |D| D是固定的,與§4中的實驗相同。為了解決Q2,我們進一步按類別細分了測試集性能。表2顯示了結果。

在這里插入圖片描述

可能已知樣本是必不可少的。由于未知樣本是有害的,人們可能期望在最典型的高度已知樣本上進行微調會最好。令人驚訝的是, D HighlyKnown D_{\text{HighlyKnown}} DHighlyKnown?并沒有獲得最佳的整體結果,因為它在高度已知的測試樣本上表現出色,但在其余類別上的性能較差。 D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown?產生了最佳的整體性能。與 D HighlyKnown D_{\text{HighlyKnown}} DHighlyKnown?相比, D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown?提高了 M D M_D MD?在可能已知上的性能(60.1 → 69.9),而沒有損害高度已知上的性能(98.7 → 98.4)。這表明可能已知的微調樣本對于 M D M_D MD?在推理期間正確處理此類樣本至關重要。它還表明,通過正確的微調樣本, M D M_D MD?變得更有能力利用其預先存在的知識。

有限的知識增強了過度擬合。在§4.2中,我們證明了未知微調樣本增加了過度擬合的風險。我們現在觀察到這也適用于微弱已知,盡管程度較低。具體而言,在CONVERGENCE時, D WeaklyKnown D_{\text{WeaklyKnown}} DWeaklyKnown? D Unknown D_{\text{Unknown}} DUnknown?與EARLY_STOP相比經歷了顯著的性能下降(39.2 → 35.4和37.5 → 25.8)。隨著訓練時間的延長,這些變體在微弱已知和未知上顯示出適度的改進,但是,它們在高度已知和可能已知上大幅下降。這突出表明,性能下降主要歸因于相對于在預訓練后已知的事實產生幻覺的比率增加。

有趣的是, D Natural D_{\text{Natural}} DNatural?在EARLY_STOP時的表現與 D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown?不相上下,這表明即使 D D D有來自其他類別的其他樣本, D D D中可能已知樣本的存在就足以在可能已知上獲得高性能。然而, D Natural D_{\text{Natural}} DNatural?的性能在CONVERGENCE后顯著下降,表現不如 D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown?——表明它仍然受到過度擬合的影響,最有可能是由于微弱已知和未知樣本的存在。綜合這些結果表明, D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown?無論在頂級性能還是降低過度擬合風險方面都很突出。

6 SliCK知識類別分析

評估模型的知識仍然是一個開放的問題,特別是因為由于缺乏關于模型真正知道什么的基本事實,評估此類方法的質量具有挑戰性。在這項工作中,我們提出了SliCK(§3):一個關于模型知識的四類分類的事實。我們現在進一步分析和討論我們的設計選擇,希望SliCK可以作為一個有用的分類法來指導未來關于這個主題的研究。

細粒度的已知類別 我們首先反思我們根據貪婪解碼結果將已知拆分為更細粒度的類別的選擇是否被證明是有意義的。如表2所示,高度已知確實捕獲了高程度知識的事實,因為它在微調后始終超過95%的準確度,而可能已知和微弱已知似乎代表較弱的知識程度。正如預期的那樣,微弱已知的性能比可能已知差,但優于未知。此外,我們所做的精確類別區分被證明是有用的,因為它揭示了可能已知微調樣本重要性的重要見解,正如§5中詳細討論的那樣。

基準測試未知測試樣本 對于出現在測試集中的被歸類為未知的(q, a)對,一個理想的特性是M在微調后會錯誤地回答q(否則它們并非真正未知)。在表2中,我們可以看到未知上的準確度非常低(3.2%或更低),這是一個有力的指標,表明大多數未知樣本實際上對M是未知的。

在這里插入圖片描述

圖5:SliCK未知分類與將 P ( True ) < T P(\text{True}) < T P(True)<T的樣本分類為未知。x軸是被分類為未知的測試樣本的百分比,y軸是微調后這些樣本的準確度。黃線是 T ∈ [ 0 , 1 ] T \in [0, 1] T[0,1] P ( True ) P(\text{True}) P(True)。我們的未知類別是藍色圓圈,藍線對應于用少于10個隨機4樣本示例近似 P Correct P_{\text{Correct}} PCorrect?(參見§3和§C)。

作為比較的案例研究,我們分析了 P ( True ) P(\text{True}) P(True)方法:一個連續分數,估計模型分配給特定答案正確性的概率。 P ( True ) P(\text{True}) P(True)最初用于自我評估模型生成的答案,而我們使用它來評估M是否認為基本事實答案是正確的。在圖5中,我們探索將 P ( True ) P(\text{True}) P(True)閾值以下的樣本分類為未知,并將此方法與SliCK進行比較。我們的結果表明,至少在我們的設置中,我們的方法對未知樣本進行分類,其中模型在微調后的性能顯著更差。

具體而言,查看x軸上的固定值表明,如果我們使用兩種方法將類似比例的測試樣本標記為未知,則 P ( True ) P(\text{True}) P(True)式未知樣本上的準確度將在微調后更高。

最后,藍線表明,使用來自多個少樣本提示的樣本來近似 P Correct P_{\text{Correct}} PCorrect?至關重要,因為使用 N ex < 10 N_{\text{ex}} < 10 Nex?<10會導致SliCK未知樣本上的測試準確度更高。

7 討論

實踐意義。這項工作凸顯了使用監督式微調來更新LLMs知識的風險,因為我們提供了經驗證據,表明通過微調獲得新知識與相對于預先存在的知識產生幻覺相關。此外,這項工作提出了未來探索的重要問題,關于微調實踐。我們看到,未知樣本的擬合速度慢于已知樣本,因此它們的負面影響表現為過度擬合的一種形式,這強調了使用提前停止而不是固定數量微調步驟的重要性。然而,當在具有不同最佳停止點的眾多任務上進行微調時,提前停止可能效果較差。另一種解決方案可以是通過過濾掉未知樣本來使微調數據與模型的知識保持一致。我們展示了初步證據,表明這可以在不犧牲性能的情況下降低過度擬合的風險。過濾的一個可能缺點是,未知微調樣本仍然可以用于教導LLMs在未知測試樣本上表達不確定性。這引發了一個問題:如果我們用不確定性表達式(例如,“我不知道”)重新標記未知微調樣本,它們是否仍然有害?我們的初步實驗(在§K中描述)表明答案是否定的,這表明這種方法可能是最有希望的。探索這一點是未來工作的一個有趣方向。

表層對齊假說。Zhou等人(2023)假設LLMs的知識和能力主要是在預訓練期間學習的,而對齊是一個簡單的過程,模型學習與用戶交互的風格或格式。他們通過表明僅在1k個高質量樣本上進行微調就可以產生一個有競爭力的助手LLM(名為LIMA)來證實這一假設。正如§4.3中討論的那樣,我們展示了證據表明LLMs難以獲取未知樣本中存在的新知識,并且主要學習如何利用其預先存在的知識。我們還表明,在高度已知樣本上進行微調導致次優地利用預先存在的知識,盡管我們的任務格式比LIMA的更簡單,并且我們的數據集大六倍。綜合起來,我們的發現表明,即使LLM的大部分知識確實是通過預訓練獲得的,但模型通過微調學習的不僅僅是風格或格式,因為微調樣本的選擇顯著影響模型在微調后利用其預先存在知識的能力。

8 相關工作

新知識和幻覺。Schulman(2023)、Goldberg(2023)和Gudibande等人(2023)提到了這樣的推測,即在新的事實知識上進行微調可能會鼓勵幻覺。Huang等人(2023)將幻覺原因分類,并正式將這種情況定義為能力錯位。他們強調,由于定義LLMs的知識邊界具有挑戰性,有限的研究解決了由于能力錯位造成的問題。Kang等人(2024)表明,當微調后的LLM在測試時遇到未知查詢時,其回應會模仿與微調數據中的未知樣本相關的回應。Yin等人(2023)表明,當LLMs在其輸入上下文中面臨新知識時,它們的性能并不令人滿意,Lee等人(2023)分析了未知上下文學習樣本的影響。據我們所知,我們的工作是第一個經驗評估暴露在新知識下通過微調對微調后模型產生幻覺傾向的影響的工作。
量化LLMs中的知識。SliCK可以被視為基本事實標簽的置信度引出方法(如果M確信a是q的答案,則M知道(q, a))。現有工作通過檢查多個樣本之間的一致性(Kuhn等人,2023;Manakul等人,2023;Tian等人,2023a;Lyu等人,2024)、探測內部表示(Azaria和Mitchell,2023;Burns等人,2022)、引出口頭概率(Tian等人,2023b)或直接提示(Kadavath等人,2022)從LLMs中得出校準的置信度。Kadavath等人還訓練了一個單獨的 P ( IK ) P(\text{IK}) P(IK)模型來預測LLM是否知道q的答案。 P ( IK ) P(\text{IK}) P(IK)的標簽通過正確樣本答案的比例來近似,這在概念上與 P Correct P_{\text{Correct}} PCorrect?(§3)一致。一個關鍵區別是我們還定義了SliCK類別,并提供證據表明我們捕獲到了有意義和有用的類別。

9 結論

我們研究了通過微調整合新的事實知識對模型產生幻覺傾向的影響。我們首先提出了SliCK,一種關于LLM知識的事實分類。然后,我們設計了一個受控研究,隔離了新知識的影響并嚴格評估其效果。我們提供了多個關于微調動態的見解,主要發現如下:(1)通過監督式微調獲得新知識的速度比利用預先存在的知識慢得多;(2)隨著最終學會新知識,模型更容易相對于其預先存在的知識產生幻覺。我們的發現凸顯了使用微調來引入新知識的風險,并為開發更穩健的對齊方法提供了動力。

A 數據預處理

本節擴展了§2中關于Google數據預處理步驟的其他細節。ENTITYQUESTIONS數據集(Sciavolino et al., 2021)由訓練、開發和測試分割組成,涵蓋24個關系。Google的訓練、開發和測試集是基于ENTITYQUESTIONS的原始分割創建的。然而,Google只使用了12個關系,因為Google想為out-of-distribution測試集保留一些關系。為了避免刻意挑選,Google在訓練、開發和測試集中使用的12個關系是隨機抽樣的。產生的關系在表3和表4中呈現。

Google為out-of-distribution測試集保留了其余的12個關系。然而,Google發現在這12個保留的關系中,有5個與Google訓練的一些關系太相似(表3),因此Google懷疑這可能導致測試集不是真正的out-of-distribution。為了解決這個問題,Google過濾掉了這些關系,只剩下7個關系用于Google的out-of-distribution。具體來說,Google過濾掉了以下關系:

  • P276被過濾掉,因為它與P131直接重疊,因為對于這兩個關系,ENTITYQUESTIONS中的問題都是"[E]位于何處?“的形式。P276代表"位置”,P131代表"位于行政領土實體內"。
  • P20的問題模板是"[E]在哪里去世的?“,被過濾掉,因為它可能需要與P19相關的知識,P19的問題模板是”[E]出生于何處?“。P20代表"死亡地點”,P19代表"出生地點"
  • P106的問題模板是"[E]從事什么工作?“,被過濾掉,因為它可能需要與P800相關的知識,P800的問題模板是”[E]以什么聞名?“。P106代表"職業”,P800代表"著名作品"
  • P413的問題模板是"[E]打什么位置?“,被過濾掉,因為它可能需要與P800相關的知識,P800的問題模板是”[E]以什么聞名?“。P413代表"在團隊/專業中的位置”,P800代表"著名作品"。
  • P159的問題模板是"[E]的總部位于何處?“,被過濾掉,因為它可能需要與P36相關的知識,P36的問題模板是”[E]的首都是什么?“。P159代表"總部所在地”,P36代表"首都"。

用于out-of-distribution測試集的7個關系在表5中呈現。

最后,Google執行兩個額外的過濾步驟:

(1)為了簡化根據M的知識對樣本進行分類的過程(§3),Google過濾掉了具有多個正確答案的樣本。
(2)Google確保訓練集和測試集之間的主題或對象不重疊,通過從訓練集中過濾掉重疊的樣本。

B 測試性能作為幻覺的代理

Google現在詳細說明了在其設置中測試性能與幻覺之間的聯系。在Google的研究中,與另一個微調模型 M D 2 M_{D2} MD2?相比,微調模型 M D 1 M_{D1} MD1?在測試集上的較差性能可歸因于 M D 1 M_{D1} MD1?中相對較高的幻覺率,相對于其預先存在的知識,由于以下解釋。

測試集在概念上可以分為兩種類型的問題。首先,有一些問題的答案對 M M M來說是未知的。這些問題在微調后仍將保持未知,因為Google確保訓練集與測試集不相交(§A)。這意味著 M D 1 M_{D1} MD1? M D 2 M_{D2} MD2?都將無法回答這些問題。因此, M D 1 M_{D1} MD1? M D 2 M_{D2} MD2?之間的測試性能差異主要歸因于第二種類型的問題:那些 M M M已知的問題,即 M M M可以正確回答它們,因為它擁有相關的知識。因此, M D 1 M_{D1} MD1? M D 2 M_{D2} MD2?必須依賴它們預先存在的知識來回答這些問題,而在這些問題上的較低性能只能被歸類為相對于預先存在的知識的幻覺。

在這里插入圖片描述
在這里插入圖片描述

C P Correct P_{\text{Correct}} PCorrect?近似

本節擴展了§3中關于Google的 P Correct P_{\text{Correct}} PCorrect?近似的其他細節。在Google的研究中,Google基于從 M M M采樣的正確答案 q q q的比例來近似 P Correct ( q , a ; M , T ) P_{\text{Correct}}(q, a; M, T) PCorrect?(q,a;M,T)

Google首先為其數據集中的每個關系隨機采樣 N ex N_{\text{ex}} Nex?個不同的k-shot示例(§A)。然后,為了近似 P Correct ( q , a ; M , T ) P_{\text{Correct}}(q, a; M, T) PCorrect?(q,a;M,T),Google使用 M M M為每個來自與 q q q對應的關系的 N ex N_{\text{ex}} Nex?個示例生成q的答案。

Google首先對每個 N ex N_{\text{ex}} Nex?示例使用溫度采樣 T = 0.5 T = 0.5 T=0.5來采樣 N sample N_{\text{sample}} Nsample?個答案。然后通過 N ex ? N sample N_{\text{ex}} \cdot N_{\text{sample}} Nex??Nsample?個預測中正確答案的比例來近似 P Correct ( q , a ; M , T > 0 ) P_{\text{Correct}}(q, a; M, T > 0) PCorrect?(q,a;M,T>0)。Google還為每個 N ex N_{\text{ex}} Nex?示例生成貪婪解碼預測( T = 0 T = 0 T=0)。然后通過 N ex N_{\text{ex}} Nex?個預測中正確答案的比例來近似 P Correct ( q , a ; M , T = 0 ) P_{\text{Correct}}(q, a; M, T = 0) PCorrect?(q,a;M,T=0)

Google使用 k = 4 k = 4 k=4,因為Google發現它足以讓M以正確的格式輸出答案。Google使用 N ex = 10 N_{\text{ex}} = 10 Nex?=10 N sample = 16 N_{\text{sample}} = 16 Nsample?=16。使用 T = 0.5 T = 0.5 T=0.5 N sample = 16 N_{\text{sample}} = 16 Nsample?=16個樣本是從Top 40中采樣的。

k k k個示例是從開發分割中采樣的。Google采樣 N ex N_{\text{ex}} Nex?個不同的樣本,因為Google發現,即使按關系采樣少樣本示例,它們的確切選擇仍會影響預測。在§6和圖5中,Google展示了證據,表明這也提高了Google類別的質量。

在這里插入圖片描述
在這里插入圖片描述

下面是ENTITYQUESTIONS中來自關系P 106(代表職業)的4-shot提示格式的一個真實示例。在這種情況下,問題是"Ron Konopka從事什么工作?“,基本事實答案是"遺傳學家”。

在這里插入圖片描述

Q: Nicolas Roeg從事什么工作?
A: 電影導演

Q: Crystal Geoffré從事什么工作?
A: 演員

Q: Maurice Blondel從事什么工作?
A: 哲學家

Q: Javier de Burgos從事什么工作?
A: 政治家

Q: Ron Konopka從事什么工作?
A:

為了決定采樣的答案是否正確,Google使用精確匹配(EM)指標將其與基本事實答案進行比較。這個選擇的主要優點是,當EM為True時,Google知道答案是100%正確的。與此選擇相關的主要潛在風險是,由于釋義或不同粒度級別的答案,Google可能錯誤地將答案分類為不正確。為了解決這個問題,Google對100個EM為False的預測進行錯誤分析。Google隨機采樣50個貪婪預測( T = 0 T = 0 T=0)和50個樣本( T = 0.5 T = 0.5 T=0.5)。

結果在表6中。該分析表明,在90%的情況下,當EM為False時,預測的答案確實是不正確的。考慮到當EM為True時,答案是100%正確的(這在任何其他指標中都不會發生),這對于Google的目的來說是一個合理的性能。

D 數據注釋

Google首先使用 P Correct ( ? ) P_{\text{Correct}}(\cdot) PCorrect?(?)近似為Google預處理數據集中的每個 ( q , a ) (q, a) (q,a)對計算 P Correct ( q , a ; M , T = 0 ) P_{\text{Correct}}(q, a; M, T = 0) PCorrect?(q,a;M,T=0) P Correct ( q , a ; M , T > 0 ) P_{\text{Correct}}(q, a; M, T > 0) PCorrect?(q,a;M,T>0)。然后,Google使用這些值將每個 ( q , a ) (q, a) (q,a)對分類到Google的四個類別之一。

Google在表3、4和5中提供了訓練集、測試集以及out-of-distribution測試集上每個關系的類別的完整統計數據。

E 關于微調數據集 ( D ) (D) (D)變體的更多細節

在§4中,Google通過改變 D D D中未知樣本的比例來檢查微調數據集 D D D中新知識對 M D M_D MD?性能的影響。當Google創建具有X%未知和 ( 100 ? X ) (100 ? X) (100?X)%已知樣本的D的變體時,Google確保關系分布保持一致。為了實現這一點,Google從每個關系中抽取X%的未知樣本。

在§5中,Google創建了 D D D的單一類別變體。由于Google希望在所有變體中使用固定的 ∣ D ∣ |D| D,因此Google要確保每個類別都有 ∣ D ∣ |D| D個樣本。為了確保這一點,Google測量每個關系中最小類別的大小(參見表3中的"Min"列),并將 ∣ D ∣ |D| D定義為它們的總和。換句話說,對于每個關系,Google計算最小類別的大小,并將這些值相加。這導致 ∣ D ∣ = 6142 |D| = 6142 D=6142,如表3的最后一列所示。

在這里插入圖片描述

更正式地說,對于訓練分割中的每個關系 r r r,以及Google的4個SliCK類別中的每個類別CAT,Google定義 CAT r \text{CAT}_r CATr?是來自類別CAT和關系 r r r的樣本。因此, size ( CAT r ) \text{size}(\text{CAT}_r) size(CATr?) CAT r \text{CAT}_r CATr?中的樣本數量。例如, size ( HighlyKnown P 131 ) = 553 \text{size}(\text{HighlyKnown}_{P131}) = 553 size(HighlyKnownP131?)=553(見表3)。然后Google定義:

∣ D ∣ = ∑ r ∈ R Train min ? { size ( CAT r ) ∣ CAT ∈ { HighlyKnown , MaybeKnown , WeaklyKnown , Unknown } } |D| = \sum_{r \in R_{\text{Train}}} \min \left\{ \text{size}(\text{CAT}_r) \mid \text{CAT} \in \{\text{HighlyKnown}, \text{MaybeKnown}, \text{WeaklyKnown}, \text{Unknown}\} \right\} D=rRTrain??min{size(CATr?)CAT{HighlyKnown,MaybeKnown,WeaklyKnown,Unknown}}

其中 R Train R_{\text{Train}} RTrain?是訓練集中的12個關系。

以下是Google在訓練、開發和測試集中的數據格式的一個示例,來自ENTITYQUESTIONS中表示職業的關系P106的真實示例。在這種情況下,問題是"Ron Konopka從事什么工作?“,基本事實答案是"遺傳學家”。

在這里插入圖片描述

F 不同已知類別的訓練準確度

在§4.3中,Google分析了微調動態,并在圖1中將訓練準確度呈現為微調持續時間的函數。為了簡單起見,Google將已知類別集體處理。為了參考,Google還在圖6中包括了每個類別細分的完整情況。

G 線性模型

在§4.4和§4.5中,Google使用了一個線性模型(等式(1)),預測測試準確度和out-of-distribution測試準確度。Google基于§4中使用的所有D變體的結果估計了這個線性模型的參數。對于所有這些變體,Google在不同的微調階段測量了測試準確度以及M擬合的已知和未知微調樣本的數量。這樣,Google收集了一個形式為 ( A c c u r a c y , N K n , N U n k ) (Accuracy, N_{Kn}, N_{Unk}) (Accuracy,NKn?,NUnk?)的數據集,Google用它來擬合線性回歸模型。

H Out-of-distribution (OOD) 評估

在§4.5中,Google討論了out-of-distribution (OOD)結果。在這些實驗中,Google只是使用了Google的OOD測試集,該測試集由7個在微調期間未見過的關系組成(參見§A)。當Google執行§4.1和§4.2中討論的分析時,Google還在OOD測試集上評估了模型。為了完整性,Google在此添加圖7,它是圖3的out-of-distribution版本。圖7a將OOD測試性能呈現為不同微調持續時間下D中未知樣本百分比的函數。相應的in-distribution結果(圖3a)在§4.1中討論。圖7b顯示了過濾掉未知微調樣本的消融實驗的OOD測試性能。相應的in-distribution結果(圖3b)在§4.2中討論。Google注意到類似的趨勢,只是性能下降的總體幅度較小,in-distribution最多下降14個百分點,而OOD最多下降6個百分點。這種較小的下降幅度也反映在 ∣ β u k n ∣ |\beta_{ukn}| βukn? ∣ β k n ∣ |\beta_{kn}| βkn?的較小值上(見表1)。

I 統計顯著性檢驗

在§5中,Google呈現了表2。如表格標題中所述,Google對每一列執行統計顯著性檢驗。為此,Google將所有值與該列的最大值進行比較。

在這里插入圖片描述
在這里插入圖片描述

對于測試集的每個子集,Google隨機打亂其中的所有樣本,將它們分成100個大小大致相等的子集,并計算所有感興趣模型的每個子集的準確度。然后,Google應用配對樣本t檢驗, p < 0.05 p < 0.05 p<0.05 p < 0.01 p < 0.01 p<0.01

在表2中,最佳結果以粗體顯示,以及與最佳結果差異在 p < 0.05 p < 0.05 p<0.05下不顯著的結果。Google還包括表2的副本,其中詳細注明了統計顯著性檢驗結果,參見表7。Google可以看到,在幾乎所有情況下,差異在 p < 0.01 p < 0.01 p<0.01下都是統計學顯著的,除了兩種情況,即 D Natural D_{\text{Natural}} DNatural? Unk和 D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown? Mkn,它們只在 p < 0.05 p < 0.05 p<0.05下顯著。

由于Google還討論了"水平"比較,即將EARLY_STOP與CONVERGENCE進行比較,因此Google還對All運行顯著性檢驗(未在表2中注釋),比較EARLY_STOP與CONVERGENCE。 D MaybeKnown D_{\text{MaybeKnown}} DMaybeKnown?的差異不顯著,而所有其他(包括 D Natural D_{\text{Natural}} DNatural?)在 p < 0.01 p < 0.01 p<0.01下顯著。

J P ( True ) P(\text{True}) P(True)案例研究

在§6中,Google使用了Kadavath等人(2022)的 P ( True ) P(\text{True}) P(True)指標作為比較的案例研究。在圖5中,Google將Google的未知類別與基于 P ( True ) P(\text{True}) P(True)閾值將樣本分類為未知進行了比較。Google使用Kadavath等人(2022)的提示計算了測試集中每個 ( q , a ) (q, a) (q,a)對的 P ( True ) P(\text{True}) P(True):

在這里插入圖片描述

然后,Google將 P ( True ) P(\text{True}) P(True)低于閾值的 ( q , a ) (q, a) (q,a)對視為未知。Google嘗試了 [ 0 , 1 ] [0, 1] [0,1]中的每個可能閾值T。對于每個閾值T,Google測量了(1)測試集中有多少樣本被歸類為未知,(2)微調后這些樣本的準確度是多少。Google在圖5中繪制結果,其中 P ( True ) P(\text{True}) P(True)用黃線表示,Google的未知用藍色圓圈表示。如§C中所述,它使用10個不同的4-shot示例樣本近似得到( N ex = 10 N_{\text{ex}} = 10 Nex?=10)。Google還檢查了較小的 N ex N_{\text{ex}} Nex?值,并用藍線繪制結果。對于所有結果,微調后的準確度是在使用 D Natural D_{\text{Natural}} DNatural?(§5)微調后測量的。

在這里插入圖片描述

K 用不確定性表達式重新標記未知微調樣本:初步實驗

在這項工作中,Google表明擬合未知微調樣本會對測試性能產生負面影響。然而,這種負面影響表現為過度擬合的一種形式。從實踐的角度來看,Google表明Google可以通過使用提前停止或從微調數據集中過濾掉未知的樣本來緩解過度擬合。

Google現在進行一個初步實驗,檢查讓模型在未知樣本上學會棄權是否也是一種潛在的緩解方法。具體來說,Google用表達式"我不知道"替換未知微調樣本的標簽,并測試這是否能緩解觀察到的過度擬合。

表8顯示了被回答的測試問題的百分比(即 M D M_D MD?沒有回答"我不知道")以及這些問題的準確度。這個實驗是在未知比例為50%的 D D D變體上進行的。第一行是原始結果,以 D D D作為參考,第二行是 D IDK D_{\text{IDK}} DIDK?的結果,其中 D D D中50%的未知樣本的基本事實標簽被替換為"我不知道"。

與之前的工作(Zhang等人,2023)的發現一致,Google觀察到在主動回答的測試樣本上準確度有所提高(比較 D D D D IDK D_{\text{IDK}} DIDK?)。當Google比較D的EARLY_STOP與CONVERGENCE時,Google觀察到性能下降(43.0 → 38.8),這說明了過度擬合效應。然而,Google觀察到,用不確定性表達式重新標記未知樣本似乎降低了過度擬合的風險。具體來說, D IDK D_{\text{IDK}} DIDK?的準確度在EARLY_STOP和CONVERGENCE都保持在61.8,而主動回答的問題的數量略有下降(58.7 → 55.6)。

通過這項研究,Google系統性地探索了向語言模型引入新知識對其產生幻覺傾向的影響。一些關鍵發現包括:

  1. 語言模型通過監督微調學習新知識的速度明顯慢于已知知識,表明其在獲取新知識方面存在內在困難。
  2. 隨著模型最終通過微調學習到新知識,其產生幻覺的傾向也隨之線性增加。
  3. 未知樣本的危害主要體現為一種過擬合現象,在早停時影響有限,但完全訓練后會顯著降低性能。
  4. 通過精心設計的對照實驗,Google證實了以上現象在不同關系類型間都能得到一致觀察。

此外,Google還提出了SliCK方法來評估語言模型的知識狀態,并通過消融實驗證明了其有效性。Google還探索了不同知識類型的樣本對模型行為的影響,強調了合理選擇微調樣本的重要性。

最后,Google討論了這些發現的實踐意義,提出了一些緩解策略,并對比了不同的知識評估方法。Google指出,引入新知識雖然是擴展語言模型能力的必經之路,但如何通過技術手段降低其負面影響,提高模型輸出的可靠性,仍是一個亟需研究的開放性問題。

總的來說,這項工作對于理解語言模型的知識獲取與更新機制具有重要價值,為后續研究指明了方向。在追求模型性能的同時兼顧其魯棒性與可解釋性,是實現可控可信的人工智能的關鍵。

以下是我對這項工作的一些想法:

  1. 該研究強調了評估語言模型知識狀態的重要性。提出的SliCK方法為探索模型內在知識提供了一個有前景的框架。未來的工作可以在此基礎上,開發出更精確、更全面的知識評估技術。
  2. 實驗結果表明,語言模型在吸收新知識方面存在內在困難。這提示我們在通過微調等方式擴展模型能力時需要格外謹慎。在引入新知識的同時,還需要采取措施防止模型遺忘或誤用已有知識。
  3. 該研究揭示了微調樣本選擇的重要性。恰當的樣本組成不僅有助于模型學習新知識,還能增強其利用已有知識的能力。這為改進微調策略提供了一個有趣的方向。
  4. 盡管該研究聚焦于事實知識的獲取,但其觀察到的現象可能具有更廣泛的意義。語言模型處理新信息時出現的困難,可能在其他類型的知識和任務中同樣存在。這值得在更多場景下進行驗證和分析。
  5. 該研究雖然沒有直接解決幻覺問題,但它揭示了問題的潛在根源,并提示我們反思當前主流的微調范式。開發更穩健的知識獲取和更新機制,是實現可靠、可解釋的語言模型的關鍵。
  6. 作者提出的一些思路,如過濾未知樣本、用不確定表達重新標記等,為緩解幻覺問題提供了可能的解決方案。未來研究可以在這些初步發現的基礎上,設計和實施更系統的應對策略。

這項工作以實證的方式研究了語言模型的知識獲取問題,取得了有價值的發現,并為未來工作指明了方向。它不僅有助于我們深入理解語言模型的行為特性,也為開發更可靠、更智能的語言模型提供了重要的見解和啟示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11144.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11144.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11144.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于springboot實現高校教師電子名片系統項目【項目源碼+論文說明】計算機畢業設計

基于springboot實現高校教師電子名片系統演示 摘要 傳統信息的管理大部分依賴于管理人員的手工登記與管理&#xff0c;然而&#xff0c;隨著近些年信息技術的迅猛發展&#xff0c;讓許多比較老套的信息管理模式進行了更新迭代&#xff0c;名片信息因為其管理內容繁雜&#xff…

C++的數據結構(五):樹和存儲結構及示例

在計算機科學中&#xff0c;樹是一種抽象數據類型&#xff08;ADT&#xff09;或是實現這種抽象數據類型的數據結構&#xff0c;用來模擬具有樹狀結構性質的數據集合。這種數據結構以一系列連接的節點來形成樹形結構。在C中&#xff0c;樹的概念和存儲結構是實現各種復雜算法和…

Java--初識類和對象

前言 本篇講解Java類和對象的入門版本。 學習目的&#xff1a; 1.理解什么是類和對象。 2.引入面向對象程序設計的概念 3.學會如何定義類和創建對象。 4.理解this引用。 5.了解構造方法的概念并學會使用 考慮到篇幅過長問題&#xff0c;作者決定分多次發布。 面向對象的引入 J…

Docker之grep: (standard input): binary file matches

使用 docker compose logs -f | grep 命令時遇到了 grep: (standard input): binary file matches 錯誤。 這個錯誤通常發生在 grep 嘗試搜索包含二進制內容的文件時。docker compose logs 命令會輸出容器的日志&#xff0c;而這些日志可能包含二進制數據&#xff0c;導致 gre…

MySQL查詢篇-集合運算

文章目錄 union &#xff08;并集&#xff09;union distinctunion all intersect(交集)intersect allintersect distinct except 差集except distinctexcept distinctexcept all union &#xff08;并集&#xff09; union distinct 使用前提&#xff1a;a和c數據類型一致&a…

互聯網摸魚日報(2024-05-13)

互聯網摸魚日報(2024-05-13) 36氪新聞 當綠色飛行成為潮流&#xff0c;這家航空公司定下了新目標 | 最前線 回收雨水澆花&#xff0c;廚余垃圾變肥料&#xff0c;我們打卡了阿里北京新園區 | 最前線 本周雙碳大事&#xff1a;中美就氣候問題進行會談&#xff1b;鋰電池行業迎…

GIAT: 蛋白質結構預測的新利器

瑞典Karolinska研究院在瑞典政府贊助下由Ben Murrell等研究團隊在AlphaFold 3最新報告后提出這篇論文提出了一種非常有趣和創新的方法來生成蛋白質骨架結構,稱為生成式不變角度轉換器(GIAT)。與現有的主要基于擴散模型和流匹配的方法不同,GIAT采用了類似于大型語言模型(如GPT)中…

【C語言|數據結構】雙向鏈表

文章目錄 前言1、初步認識雙向鏈表1.1 定義&#xff1a;1.2 結構1.3 節點的存儲 2、雙向鏈表的接口函數2.1 鏈表的節點的動態申請2.2 鏈表的初始化2.3 尾插2.4 頭插2.5 頭刪2.5 尾刪2.6 在pos節點后面添加數據2.6 刪除pos節點 3、雙向鏈表的實現&#xff1a; 前言 各位小伙伴大…

C控制語句:分支和跳轉

1.1if語句 //colddays.c --找出0攝氏度以下的天數占總天數的百分比 #include <stdio.h>int main(void) {const int FREEZING 0;float temperature;int cold_days 0;int all_days 0;printf("Enter the list of daily low temperature.\n");printf("Use…

電子學會C/C++編程等級考試2024年03月(八級)真題解析

C/C編程&#xff08;1~8級&#xff09;全部真題?點這里 第1題&#xff1a;道路 N個以 1 … N 標號的城市通過單向的道路相連:。每條道路包含兩個參數&#xff1a;道路的長度和需要為該路付的通行費&#xff08;以金幣的數目來表示&#xff09; Bob and Alice 過去住在城市 1.在…

藍海創業商機小吃配方項目,日入200+ ,小白可上手,圖文創作轉現快

小吃技術銷售&#xff0c;一單價格從幾元到幾百元不等&#xff0c;行業競爭相對較小&#xff0c;是一個相對冷門的領域。只需一部手機&#xff0c;就可以發布圖文并茂的內容&#xff0c;配上背景音樂&#xff08;BGM&#xff09;&#xff0c;即使是對視頻剪輯不熟悉的新手&…

面試中算法(金礦)

有一位國王擁有5座金礦&#xff0c;每座金礦的黃金儲量不同&#xff0c;需要參與挖掘的工人人數也不同。 例如&#xff0c;有的金礦儲量是5ookg黃金&#xff0c;需要5個工人來挖掘;有的金礦儲量是2ookg黃金&#xff0c;需要3個工人來挖掘...... 如果參與挖礦的工人的總數是10。…

【Oracle impdp導入dmp文件(windows)】

Oracle impdp導入dmp文件&#xff08;windows&#xff09; 1、連接數據庫2、創建與導出的模式相同名稱的用戶WIRELESS2&#xff0c;并賦予權限3、創建directory 的物理目錄f:\radio\dmp&#xff0c;并把.dmp文件放進去4、連接新用戶WIRELESS25、創建表空間的物理目錄F:\radio\t…

試衣不再有界:Tunnel Try-on開啟視頻試衣應用新紀元

論文&#xff1a;https://arxiv.org/pdf/2404.17571 主頁&#xff1a;https://mengtingchen.github.io/tunnel-try-on-page/ 一、摘要總結 隨著虛擬試衣技術的發展&#xff0c;消費者和時尚行業對于能夠在視頻中實現高質量虛擬試衣的需求日益增長。這項技術允許用戶在不實際穿…

目標檢測——印度車輛數據集

引言 親愛的讀者們&#xff0c;您是否在尋找某個特定的數據集&#xff0c;用于研究或項目實踐&#xff1f;歡迎您在評論區留言&#xff0c;或者通過公眾號私信告訴我&#xff0c;您想要的數據集的類型主題。小編會竭盡全力為您尋找&#xff0c;并在找到后第一時間與您分享。 …

弱監督語義分割學習筆記

目錄 partial cross entropy loss GitHub - LiheYoung/UniMatch: [CVPR 2023] Revisiting Weak-to-Strong Consistency in Semi-Supervised Semantic Segmentation partial cross entropy loss import torch import torch.nn.functional as Fdef partial_cross_entropy_loss…

區塊鏈中的APP與傳統APP的區別

一、技術 區塊鏈中的APP是基于區塊鏈技術開發的&#xff0c;而傳統APP則基于傳統的應用程序商店或網頁。區塊鏈中的APP利用區塊鏈技術的去中心化、數據不可篡改等特點&#xff0c;使得應用程序的開發和分發更加安全、透明和可信。與傳統APP相比&#xff0c;區塊鏈中的APP無需中…

如何實現嵌套路由

實現步驟 1. 新建子頁面 2. 在router/index.js中的父路由節點添加children數組 3. 在children中添加子路由 {path: /,name: home,component: HomeView,children: [ {path: /pageA,name: pageA,component: pageA},{path: /pageB,name: pageB,component: pageB}] }, 5.在父路…

Web安全:SQL注入之布爾盲注原理+步驟+實戰操作

「作者簡介」&#xff1a;2022年北京冬奧會網絡安全中國代表隊&#xff0c;CSDN Top100&#xff0c;就職奇安信多年&#xff0c;以實戰工作為基礎對安全知識體系進行總結與歸納&#xff0c;著作適用于快速入門的 《網絡安全自學教程》&#xff0c;內容涵蓋系統安全、信息收集等…

前端VUE基礎之創建腳手架

創建腳手架 第一步&#xff08;僅第一次執行&#xff09;&#xff1a;全局安裝vue/cli。 npm install -g vue/cli 到你要創建項目的目錄&#xff0c;然后使用命令創建項目 vue create xxxx 第三步&#xff1a;啟動項目 npm run serv 備注&#xff1a; 1. 如出現下載緩慢請…