久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > 關于Prompt Engineering你該了解啥?OpenAI應用研究負責人幫你梳理了(2)

關于Prompt Engineering你該了解啥?OpenAI應用研究負責人幫你梳理了(2)

發布人:機器之心 時間:2023-04-23 來源:工程師 發布文章
自動 Prompt 設計

Prompt 是一系列前綴 token,可增加在給定輸入的情況下獲得所需輸出的概率。因此,可以將它們視為可訓練參數,并通過梯度下降直接在嵌入空間上對其進行優化,例如 AutoPrompt [Shin et al., 2020, Prefix-Tuning (Li & Liang (2021)],P-tuning [Liu et al. . 2021)] 和 Prompt-Tuning [Lester et al. 2021]。從 AutoPrompt 到 Prompt-Tuning 的趨勢是設置逐漸簡化。APE [Automatic Prompt Engineer;Zhou et al. 2022] 是一種搜索模型生成的候選指令池,然后根據所選得分函數過濾候選集以最終選擇得分最高的最佳候選的方法。

1、Prompt LLM 根據 input-output 對形式的演示集合生成候選指令。例如。{{Given desired input-output pairs}}\n\nThe instruction is;

2、給定 Dtrain={(x,y)} 的數據集,想要找到一條指令 ρ 使得 ρ?=arg?maxρE (x,y)∈Dtrain [f (ρ,x,y)],其中 f (.) 是每個樣本的得分函數,比如如執行精度 [LM (.|ρ, x)=y] 或對數概率:Plm (y|ρ,x);

3、使用迭代蒙特卡洛搜索方法通過 prompt 提出語義相似的變體來改進最佳候選,例如 Generate a variation of the following instruction while keeping the semantic meaning.\n\nInput: ...\n\nOutput:...


為了自動構建 CoT prompt [ Shum et al. (2023) ] 建議 augment-prune-select,包含三個步驟的過程:

1.Augment:使用 few-shot 或 zero-shot CoT prompt 生成給定問題的多個偽 CoT;

2.Prune:根據生成的答案是否與基本事實相匹配來修剪偽鏈;

3.Select:應用 variance-reduced 梯度策略來學習所選示例的概率分布,同時將示例的概率分布作為策略,將驗證集的準確性作為獎勵。


[Zhang et al. (2023) ] 采用聚類技術對問題進行抽樣,然后生成鏈。他們觀察到 LLM 傾向于犯某些類型的錯誤。一種類型的錯誤在嵌入空間中可能相似,因此被組合在一起。通過只從頻繁錯誤的集群中抽取一個或幾個樣本,可以防止對一種錯誤類型的過多錯誤演示,并收集一組不同的例子。

1. 問題聚類:嵌入問題并運行 k-means 聚類的方法;

2. 示例選擇:從每個簇中選擇一組有代表性的問題;即來自一個簇的一個示例。每個簇中的樣本按到簇質心的距離排序,最接近質心的樣本首先被選擇;

3. 生成推理鏈:使用 zero-shot CoT 為選定的問題生成推理鏈,并構建 few-shot prompt 來運行推理。


增強語言模型[Mialon et al. (2023) ] 對增強語言模型進行的一項調查。涵蓋了多類增強推理技能和使用外部工具能力的語言模型。推薦讀者可以讀一下。檢索通常,我們需要在模型預訓練時間截止或內部 / 私有知識庫之后,完成需要最新知識的任務。在這種情況下,如果不在 prompt 中顯式提供上下文,模型將不知道上下文。開放領域問答的許多方法都依賴于首先在知識庫上進行檢索,然后將檢索到的內容作為 prompt 的一部分。這個過程的準確性取決于檢索和生成步驟的質量。[Lazaridou et al. (2022) ] 研究了如何使用谷歌搜索進行文檔檢索以增強 LLM。給定一個問題 q,從谷歌返回的 20 個 URL 中提取文本,得到一組文檔。由于這些文檔很長,因此每個文檔被拆分為 6 個句子的段落,{p}。段落是根據證據段落和查詢之間基于 TF-IDF 的余弦相似性進行排序的。在 prompt 中只使用最相關的段落來產生答案 a.對于閉卷問答,每個演示的格式如下,以構建 few-shot prompt。發現將問題與證據交換(問題和答案之間的距離更長)在所有數據集中始終產生較低的結果。




Evidence: ...Question: ...Answer: ...


答案的概率以三種方式計算:

1.RAG 風格,圖片,其中 圖片是 TF-IDF 段落和問題表示之間的歸一化余弦相似度。

2. 噪聲信道推斷:圖片

3.Product-of-Experts (PoE),結合上面使用的所有概率,但不包括圖片


根據他們在生成和分類任務的實驗,在三個答案的重新排序得分中,PoE > 噪聲信道推斷 > RAG。在所有概率中,pLM (a|q,pi) 和 pLM (q|pi,a) 提供的信息最多。pLM (q|pi,a) 捕捉到 LM 在給定證據段落和答案的情況下對問題的解釋有多好,并且可以可靠地用于對候選答案進行重新排序。針對基于不同日期的問題的 SituatedQA 數據集進行的一項觀察是,盡管 LM(預訓練截止日期為 2020 年)可以通過 Google 搜索訪問最新信息,但其在 2020 年后問題上的表現仍然比 2020 年前問題差很多。這表明上下文信息和模型內部知識之間存在一些差異或參數沖突。 有趣的是,即使只有 “內部檢索” 也是有益的,即在回答問題之前生成關于某個主題的知識 [Liu et al. 2022]。首先可以使用下面的模板來抽取知識:








Generate some knowledge about the input. Examples:
Input: What type of water formation is formed by clouds?Knowledge: Clouds are made of water vapor.
Input: {question}Knowledge:


然后用模型生成的知識,進一步給 LM 進行 prompt 得到答案。編程語言既有 PAL(程序輔助語言模型) [ Gao et al. 2022] 和 PoT (Program of Thoughts prompting [Chen et al. 2022] 要求 LLM 生成編程語言語句來解決自然語言推理問題,從而將解決方案步驟轉移到運行時,如 Python 解釋器。這樣的設置解耦了復雜的計算和推理。該方法依賴于具有足夠好的編程技能的 LM。圖片圖 2. 比較 CoT 和 PoT.(圖片源自: Chen et al. 2022)。外部 APITALM(Tool Augmented Language Models [ Parisi et al. 2022])是一種通過文本到文本 API 調用增強的語言模型。LM 被引導生成以任務輸入文本為條件的工具調用和工具輸入文本,以構建 API 調用請求。當 result 出現時,調用指定的工具 API,并將返回的結果附加到文本序列。最終輸出是在 output token 之后生成的。

圖片

圖 3. TALM 中調用 API 的格式 (圖片源自: Parisi et al. 2022)。TALM 采用 self-play 的方法來迭代引導工具使用示例的數據集,并用它來微調 LM。這個迭代的 self-play 模仿了一個 RL 過程,其中 LM 是策略網絡,它由帶有二元獎勵信號的策略梯度訓練。

圖片

圖 4. Self-play 迭代提升模型的性能 (圖片源自: Parisi et al. 2022)。Toolformer [Schick et al. 2023] 是一種可以通過簡單的 API 使用外部工具的 LM,通過自我監督的方式構建,每個 API 只需要少量的演示。Toolformer 的工具箱包括:

  • 計算系統:幫助 LM 缺乏精確的數學技能;

  • 問答系統:幫助解決無效內容;

  • 搜索引擎:在預訓練截止時間后提供最新信息;

  • 翻譯系統:提高低資源語言性能;

  • 日歷系統:使 LM 了解時間進程。

 

圖片圖 5. 如何構建 Toolformer.(圖片源自: Schick et al. 2023)。Toolformer 的訓練過程如下:1.Prompt 注釋下的 API 調用。要求預訓練的 LM 通過帶有 API 調用使用示例的 few-shot 學習來注釋數據集。格式化示例:

圖片

圖 6. 數據集如何在調用 API 的時候注釋 (圖片源自: Schick et al. 2023)。每個 API 調用都表示為一個元組(API 名稱,相應的輸入),圖片其對應的結果記為 r。有結果和無結果的 API 調用序列分別標注如下:

圖片

基于概率圖片 的 API 調用,如果概率大于某個閾值,則選擇前 k 個候選在位置 i 進行 API 調用;然后,從 LM 中采樣潛在的 API 調用,其中序列 [prompt (x),x1,…,xi?1,?API?] 作為前綴,?/API? 作為后綴。2. 根據 API 調用是否有助于模型預測未來 token 來過濾注釋。使用自監督損失來確定哪些 API 調用產生實際的幫助。執行每個 API 調用 c_i 得到對應的結果 r_i; 計算 LM 在 token 序列 xi,...,xn 上的加權交叉熵損失,當模型以 prompt 為前綴時。計算了兩個版本,一個帶有 API 結果,另一個帶有空序列 ε;

圖片

僅保留圖片大于閾值的 API 調用,這表示添加此 API 調用及其結果有助于模型預測未來的 token。3. 在注釋數據集上微調 LM。新的訓練序列構造為圖片訓練數據是原始數據集(例如論文中的 CCNet 子集)及其增強版。在推理時,解碼會一直運行,直到模型產生 “→”token,表明它期待接下來來自 API 調用的響應。Toolformer 目前不支持在鏈中使用工具(即使用一個工具的輸出作為另一個工具的輸入)或以交互方式(即在人工選擇后采用 API 響應)。兩者都是未來擴展模型的方向。原文鏈接:https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: AI

相關推薦

技術專區

關閉