PEFT 文件

情境感知提示調整:透過對抗性方法推進情境學習

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

情境感知提示調整:透過對抗性方法推進情境學習

CPT 結合了情境學習 (ICL)、提示調整 (PT) 和對抗性最佳化,透過精煉情境嵌入來改善少樣本學習。CPT 透過最佳化情境和訓練樣本來更新情境詞元,將其封裝到一個新穎的損失函式設計中,該設計能最大限度地減少過擬合,實現更有效的最佳化,並顯著提高分類任務的效能。

論文摘要如下:

大型語言模型 (LLM) 可以使用基於最佳化的方法或情境學習 (ICL) 來進行少樣本學習。基於最佳化的方法通常會因為需要用有限的資料更新大量引數而導致過擬合。相比之下,ICL 避免了過擬合,但其效能通常不如基於最佳化的方法,並且對演示樣本的選擇、順序和格式高度敏感。為了克服這些挑戰,我們引入了情境感知提示調整 (CPT),這是一種受 ICL、提示調整 (PT) 和對抗性攻擊啟發的方法。CPT 建立在 ICL 在輸入前拼接樣本的策略之上,並透過結合類似 PT 的學習來擴充套件它,透過迭代最佳化來精煉情境嵌入,從而從訓練樣本中提取更深層次的洞見。我們的方法仔細修改特定的情境詞元,考慮了情境內樣本的獨特結構。除了透過類似 PT 的最佳化更新情境外,CPT 還從對抗性攻擊中汲取靈感,根據情境中存在的標籤調整輸入,同時保留使用者提供資料的固有價值。為確保最佳化過程中的魯棒性和穩定性,我們採用了投影梯度下降演算法,將詞元嵌入約束在接近其原始值的範圍內,以保障情境的質量。我們的方法在多個使用不同 LLM 模型的分類任務上展示了卓越的準確性,超越了現有的基線,並有效解決了少樣本學習中的過擬合挑戰。

請參閱示例,獲取如何使用 CPT 訓練模型的分步指南。

CPTConfig

class peft.CPTConfig

< >

( task_type: typing.Union[str, peft.utils.peft_types.TaskType, NoneType] = None peft_type: typing.Union[str, peft.utils.peft_types.PeftType, NoneType] = None auto_mapping: typing.Optional[dict] = None base_model_name_or_path: typing.Optional[str] = None revision: typing.Optional[str] = None inference_mode: bool = False num_virtual_tokens: int = None token_dim: int = None num_transformer_submodules: typing.Optional[int] = None num_attention_heads: typing.Optional[int] = None num_layers: typing.Optional[int] = None modules_to_save: typing.Optional[list[str]] = None cpt_token_ids: typing.Optional[list[int]] = None cpt_mask: typing.Optional[list[int]] = None cpt_tokens_type_mask: typing.Optional[list[int]] = None opt_weighted_loss_type: typing.Optional[typing.Literal['none', 'decay']] = 'none' opt_loss_decay_factor: typing.Optional[float] = 1.0 opt_projection_epsilon: typing.Optional[float] = 0.1 opt_projection_format_epsilon: typing.Optional[float] = 0.1 tokenizer_name_or_path: typing.Optional[str] = None )

用於情境感知提示調整 (CPT) 的 CPT 配置類,擴充套件自 PeftConfig。

此類引入了 CPT 所需的額外引數,例如

  • 詞元型別掩碼
  • 提示調整初始化
  • 損失加權
  • 投影設定

更多詳情,請參閱論文:https://huggingface.co/papers/2410.17222

CPTEmbedding

class peft.CPTEmbedding

< >

( config word_embeddings )

CPTEmbedding 是一個為 PEFT 中的情境感知提示調整 (CPT) 設計的自定義嵌入層。它初始化嵌入,應用特定於提示的投影,並使用標籤掩碼計算損失。

calculate_loss

< >

( base_model_output labels cpt_type_mask config ) ModelOutput

引數

  • base_model_output (ModelOutput) — 來自基礎模型的輸出,包含 logits。
  • labels (torch.Tensor) — 輸入詞元的真實標籤。
  • cpt_type_mask (torch.Tensor) — 用於過濾有效損失項的詞元型別掩碼。
  • config (Namespace) — 包含與損失相關的超引數的配置物件。

返回

ModelOutput

帶有計算損失的基礎模型輸出。

計算 CPT 模型的損失,可選指數衰減。

forward

< >

( indices ) torch.Tensor

引數

  • indices (torch.Tensor) — 要嵌入的詞元的索引。

返回

torch.Tensor

提示嵌入和增量嵌入的總和。

計算提示嵌入並應用增量調整。

get_projection

< >

( )

將基於 epsilon 的投影應用於增量嵌入以控制其範數。

set_updated_tokens

< >

( )

設定一個反向傳播鉤子,以根據 CPT 詞元型別掩碼選擇性地更新詞元梯度。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.