Prompt learning 教學[進階篇]:簡介Prompt框架並給出自然語言處理技術:Few-Shot Prompting、Self-Consistency等;專案實戰搭建知識庫內容機器人

2023-05-12 15:01:30

Prompt learning 教學[進階篇]:簡介Prompt框架並給出自然語言處理技術:Few-Shot Prompting、Self-Consistency等;專案實戰搭建知識庫內容機器人

1.ChatGPT Prompt Framework

看完基礎篇的各種場景介紹後,你應該對 Prompt 有較深的理解。之前的章節我們講的都是所謂的「術」,更多地集中講如何用,但講「道」的部分不多。高階篇除了會講更高階的運用外,還會講更多「道」的部分。高階篇的開篇,我們來講一下構成 prompt 的框架。

1.1Basic Prompt Framework

查閱了非常多關於 ChatGPT prompt 的框架資料,我目前覺得寫得最清晰的是 Elavis Saravia 總結的框架,他認為一個 prompt 裡需包含以下幾個元素:

  • Instruction(必須): 指令,即你希望模型執行的具體任務。
  • Context(選填): 背景資訊,或者說是上下文資訊,這可以引導模型做出更好的反應。
  • Input Data(選填): 輸入資料,告知模型需要處理的資料。
  • Output Indicator(選填): 輸出指示器,告知模型我們要輸出的型別或格式。

只要你按照這個框架寫 prompt ,模型返回的結果都不會差。

當然,你在寫 prompt 的時候,並不一定要包含所有4個元素,而是可以根據自己的需求排列組合。比如拿前面的幾個場景作為例子:

  • 推理:Instruction + Context + Input Data
  • 資訊提取:Instruction + Context + Input Data + Output Indicator

1.2 CRISPE Prompt Framework

另一個我覺得很不錯的 Framework 是 Matt Nigh 的 CRISPE Framework,這個 framework 更加複雜,但完備性會比較高,比較適合用於編寫 prompt 模板。CRISPE 分別代表以下含義:

  • CR: Capacity and Role(能力與角色)。你希望 ChatGPT 扮演怎樣的角色。
  • I: Insight(洞察力),背景資訊和上下文(坦率說來我覺得用 Context 更好)。
  • S: Statement(指令),你希望 ChatGPT 做什麼。
  • P: Personality(個性),你希望 ChatGPT 以什麼風格或方式回答你。
  • E: Experiment(嘗試),要求 ChatGPT 為你提供多個答案。

以下是這幾個引數的例子:

Step Example
Capacity and Role Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer.
把你想象成機器學習框架主題的軟體開發專家,以及專業部落格作者。
Insight The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning.
這個部落格的讀者主要是有興趣瞭解機器學習最新進展技術的專業人士。
Statement Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries.
提供最流行的機器學習框架的全面概述,包括它們的優點和缺點。包括現實生活中的例子,和研究案例,以說明這些框架如何在各個行業中成功地被使用。
Personality When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun.
在迴應時,混合使用 Andrej Karpathy、Francois Chollet、Jeremy Howard 和 Yann LeCun 的寫作風格。
Experiment Give me multiple different examples.
給我多個不同的例子。

2.Zero-Shot Prompting

在基礎篇裡的推理場景,我提到了 Zero-Shot Prompting 的技術,本章會詳細介紹它是什麼,以及使用它的技巧。Zero-Shot Prompting 是一種自然語言處理技術,可以讓計算機模型根據提示或指令進行任務處理。各位常用的 ChatGPT 就用到這個技術。

傳統的自然語言處理技術通常需要在大量標註資料上進行有監督的訓練,以便模型可以對特定任務或領域進行準確的預測或生成輸出。相比之下,Zero-Shot Prompting 的方法更為靈活和通用,因為它不需要針對每個新任務或領域都進行專門的訓練。相反,它通過使用預先訓練的語言模型和一些範例或提示,來幫助模型進行推理和生成輸出。

舉個例子,我們可以給 ChatGPT 一個簡短的 prompt,比如 描述某部電影的故事情節,它就可以生成一個關於該情節的摘要,而不需要進行電影相關的專門訓練。

2.1 Zero-Shot Prompting 缺點

但這個技術並不是沒有缺點的:

  1. Zero-Shot Prompting 技術依賴於預訓練的語言模型,這些模型可能會受到訓練資料集的限制和偏見。比如在使用 ChatGPT 的時候,它常常會在一些投資領域,使用男性的「他」,而不是女性的「她」。那是因為訓練 ChatGPT 的資料裡,提到金融投資領域的內容,多為男性。
  2. 儘管 Zero-Shot Prompting 技術不需要為每個任務訓練單獨的模型,但為了獲得最佳效能,它需要大量的樣本資料進行微調。像 ChatGPT 就是一個例子,它的樣本數量是過千億。
  3. 由於 Zero-Shot Prompting 技術的靈活性和通用性,它的輸出有時可能不夠準確,或不符合預期。這可能需要對模型進行進一步的微調或新增更多的提示文字來糾正。

2.2 技巧 :Zero-Shot Chain of Thought

基於上述的第三點缺點,研究人員就找到了一個叫 Chain of Thought 的技巧。

這個技巧使用起來非常簡單,只需要在問題的結尾裡放一句 Let‘s think step by step (讓我們一步步地思考),模型輸出的答案會更加準確。

這個技巧來自於 Kojima 等人 2022 年的論文 Large Language Models are Zero-Shot Reasoners。在論文裡提到,當我們向模型提一個邏輯推理問題時,模型返回了一個錯誤的答案,但如果我們在問題最後加入 Let‘s think step by step 這句話之後,模型就生成了正確的答案:

論文裡有講到原因,感興趣的朋友可以去看看,我簡單解釋下為什麼(