乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Prompt工程師指南[從基礎到進階篇]:用于開發(fā)和優(yōu)化提示,以有效地使用語言模型(LMs)進行各種應用和研究主題

       Frank_Chia 2023-05-15 發(fā)布于北京

      Prompt工程是一種相對較新的學科,用于開發(fā)和優(yōu)化提示,以有效地使用語言模型(LMs)進行各種應用和研究主題。Prompt工程技能有助于更好地理解大型語言模型(LLMs)的能力和局限性。研究人員使用Prompt工程來改善LLMs在各種常見和復雜任務上的能力,

      1.Prompting介紹

      Prompt engineering(提示工程)是一門相對較新的學科,旨在開發(fā)和優(yōu)化提示以有效地利用語言模型 (LMs) 進行各種應用和研究主題。提示工程技能有助于更好地理解大型語言模型 (LLMs) 的能力和局限性。研究人員使用提示工程來提高LLMs在各種常見和復雜任務上的能力,例如問答和算術推理。開發(fā)人員使用提示工程來設計與LLMs和其他工具接口的穩(wěn)健和有效的提示技術。

      本指南介紹了標準提示的基礎知識,以提供如何使用提示與大型語言模型 (LLMs) 進行交互和指導的大致思路。

      除非另有說明,所有示例均使用 text-davinci-003 (在 OpenAI 的 playground 上使用),使用默認配置,例如 temperature=0.7 和 top-p=1。

      提綱:


      1.1基本提示

      使用提示已經可以實現很多功能,但結果的質量取決于您提供的信息量。提示可以包含諸如您傳遞給模型的“指令”或“問題”以及其他詳細信息,例如“輸入”或“示例”。

      以下是一個簡單提示的基本示例:

      Prompt

      The sky is
      

      Output:

      blue
      
      The sky is blue on a clear day. On a cloudy day, the sky may be gray or white.
      

      如您所見,語言模型輸出了一系列在上下文“天空是”下有意義的字符串。輸出可能出乎意料,或與我們想要完成的任務相去甚遠。

      這個基本示例也突出了提供更多上下文或具體說明我們想要實現什么的必要性。

      讓我們試著稍微改進一下:

      Prompt:

      Complete the sentence: 
      
      The sky is
      

      Output:

       so  beautiful today.
      

      這樣是不是好多了?我們告訴模型要完成句子,所以結果看起來更好,因為它恰好遵循了我們要求它做的事情(“完成句子”)。這種設計最佳提示以指導模型執(zhí)行任務的方法就是所謂的 提示工程。

      上面的例子是現今LLMs能夠實現的基本演示。如今的LLMs能夠執(zhí)行各種先進任務,從文本摘要到數學推理再到代碼生成。


      1.2關于LLM設置的一些說明

      在使用提示時,您將通過API或直接與LLM進行交互。您可以配置一些參數來獲取不同的提示結果。

      Temperature - 溫度,簡而言之,溫度越低,結果越確定,意思是始終選擇最可能的下一個標記。增加溫度可能會導致更多的隨機性,從而鼓勵更多多樣化或有創(chuàng)造性的輸出。我們實際上是增加了其他可能標記的權重。在應用方面,對于基于事實的問答之類的任務,我們可能希望使用較低的溫度來鼓勵更準確和簡明的回答。對于詩歌生成或其他有創(chuàng)造性的任務,增加溫度可能會更有益。
      Top_p - 同樣,使用溫度的一種抽樣技術稱為核采樣(nucleus sampling)時,可以通過top_p來控制模型在生成響應時的確定性。如果您想要精確和客觀的答案,請將其保持較低。如果您想要更多樣化的回答,請將其增加到較高的值。

      一般建議是只更改一個參數而非同時更改兩個參數。

      在開始一些基本示例之前,請記住您的結果可能因您使用的LLM版本而異。


      1.3 標準提示

      我們上面嘗試了一個非常簡單的提示。標準提示具有以下格式:

      <Question>?
      

      這可以按照很多問答數據集的標準格式進行格式化,如下所示:

      Q: <Question>?
      A: 
      

      根據上面的標準格式,一種流行且有效的提示技術被稱為few-shot提示,其中我們提供示例。
      Few-shot提示可以格式化如下:

      <Question>?
      <Answer>
      
      <Question>?
      <Answer>
      
      <Question>?
      <Answer>
      
      <Question>?
      
      

      您可以猜測它的問答(QA)格式版本看起來像這樣:

      Q: <Question>?
      A: <Answer>
      
      Q: <Question>?
      A: <Answer>
      
      Q: <Question>?
      A: <Answer>
      
      Q: <Question>?
      A:
      

      請注意,不需要使用QA格式。格式取決于手頭的任務。例如,您可以執(zhí)行一個簡單的分類任務并提供演示該任務的示例,如下所示:
      Prompt:

      This is awesome! // Positive
      This is bad! // Negative
      Wow that movie was rad! // Positive
      What a horrible show! //
      

      Output:

      Negative
      

      Few-shot prompts可以實現上下文學習,即語言模型僅僅通過少量的樣本就能夠學習任務。在即將發(fā)布的指南中,我們將看到更多這方面的實際應用。


      1.4 提示的元素

      隨著我們涵蓋越來越多的提示工程的實例和應用,您會發(fā)現提示由以下特定元素組成:

      指令 - 您希望模型執(zhí)行的特定任務或指令

      上下文 - 可涉及外部信息或額外的上下文,可以引導模型產生更好的響應

      輸入數據 - 我們感興趣的輸入或問題,希望找到對應的回答

      輸出指標 - 指示輸出的類型或格式。

      并不是所有的組件都是提示所必需的,格式取決于手頭的任務。我們將在即將發(fā)布的指南中提供更多具體的例子。


      1.5 設計提示的一些技巧

      以下是設計提示時需要記住的一些技巧:

      • 從簡單開始
        在開始設計提示時,您應該記住,這是一個需要大量實驗和迭代才能得到最佳結果的過程。使用像OpenAI或Cohere這樣的簡單 playground 是一個很好的起點。

      您可以從簡單的提示開始,隨著不斷添加元素和上下文,以獲得更好的結果。在這個過程中對提示進行版本控制非常重要。在我們閱讀指南的過程中,您將看到許多例子,其中具體、簡單和簡明的提示通常會給您帶來更好的結果。

      當您有一個涉及許多不同子任務的大任務時,可以嘗試將任務分解成更簡單的子任務,并隨著獲得更好的結果逐步構建。這可以避免在提示設計過程中添加過多的復雜性。

      • 指令
        您可以使用命令指導模型執(zhí)行各種簡單任務來設計有效的提示,例如“寫入”,“分類”,“摘要”,“翻譯”,“排序”等。

      請記住,您也需要進行大量實驗,以查看哪種方式效果最佳。嘗試使用不同的關鍵字、上下文和數據來嘗試不同的指令,以查看哪種方法最適合您的特定用例和任務。通常情況下,上下文與您要執(zhí)行的任務越具體和相關,效果越好。在即將發(fā)布的指南中,我們將涉及到采樣和添加更多上下文的重要性。

      其他人建議將指令放置在提示的開頭。同時,建議使用清晰的分隔符比如“###”來分隔指令和上下文。

      例如:

      Prompt:

      ###nstruction ###
      Translate the text below to Spanish:
      
      Text: 'hello!'
      

      Output:

      ?Hola!
      
      • 具體方式
        在設計提示時,要非常具體,明確要求模型執(zhí)行的任務。提示越具體、詳細,結果就越好。這在你需要特定的生成結果或風格時尤為重要。并沒有特定的令牌或關鍵字可以帶來更好的結果,更重要的是有一個良好的格式和描述性提示。實際上,在提示中提供示例非常有效,可以獲得特定格式的期望輸出。
        在設計提示時,您還應考慮提示的長度,因為提示的長度有限制。思考提示應該多具體、詳細是需要考慮的問題。太多不必要的細節(jié)并不一定是一個好方法。細節(jié)應該是相關的,對任務有所貢獻。這是你需要進行大量實驗和迭代來優(yōu)化提示的應用程序。

      作為一個例子,讓我們嘗試一個簡單的提示,從一段文本中提取特定信息。

      Prompt:

      Extract the name of places in the following text. 
      
      Desired format:
      Place: <comma_separated_list_of_company_names>
      
      Input: 'Although these developments are encouraging to researchers, much is still a mystery. “We often have a black box between the brain and the effect we see in the periphery,” says Henrique Veiga-Fernandes, a neuroimmunologist at the Champalimaud Centre for the Unknown in Lisbon. “If we want to use it in the therapeutic context, we actually need to understand the mechanism.''
      

      Output:

      Place: Champalimaud Centre for the Unknown, Lisbon
      

      輸入文本內容來自于這篇Nature的文章 this Nature article.

      • 避免不準確性

      根據上面關于提供詳細信息和改善格式的提示,很容易陷入想要過于聰明的提示陷阱,從而可能創(chuàng)建不準確的描述。通常更直接和具體的描述更為有效。這里的類比非常類似于有效溝通,越直接,信息傳遞就越有效。

      例如,您可能有興趣了解提示工程的概念。您可以嘗試像這樣的提示:

      解釋提示工程的概念。保持解釋簡短,只有幾句話,不要過于描述。
      

      從上面的提示中并不清楚要使用多少句話以及什么樣的風格。使用上面的提示仍然可能得到良好的回復,但更好的提示是非常具體,簡潔明了,直截了當的。例如:

      用 2-3 句話向一名高中學生解釋提示工程的概念。
      
      • 什么該做什么不該做
        在設計提示時,另一個常見的技巧是避免說出什么不要做,而是說出應該做什么。這鼓勵更加具體化和專注于細節(jié),從而產生良好的模型響應。

      以下是一個電影推薦聊天機器人失敗的示例,因為我寫的指示語里側重于要避免什么。

      Prompt:

      以下是一個向客戶推薦電影的代理。不要詢問興趣愛好。不要詢問個人信息。
      
      顧客:請根據我的興趣愛好推薦一部電影。
      代理:
      

      Output:

      當然,我可以根據您的興趣推薦電影。您想看什么類型的電影?您喜歡動作片、喜劇片、愛情片還是其他類型的電影?
      

      這里是更好的Prompt:

      Prompt:

      以下是一個向客戶推薦電影的代理。該代理應該從全球熱門電影中推薦電影,不要詢問用戶的喜好,避免詢問個人信息。如果代理無法推薦電影,則應回復“對不起,今天無法找到推薦的電影?!?
      顧客:請根據我的興趣愛好推薦一部電影。
      代理:
      

      Output:

      對不起,我沒有關于您的興趣愛好的信息。然而,以下是當前全球熱門電影的列表:[電影列表]。希望您能找到自己喜歡的電影!
      

      上述示例部分摘自'OpenAI API的提示工程最佳實踐'文章。

      2.基礎提示 Basic Prompting

      在上一篇指南中,我們介紹了并且提供了一個基本的 prompt 示例。

      在這篇指南中,我們將提供更多的 prompt 使用示例,并介紹在更高級的指南中將會很重要的關鍵概念。

      通常,學習概念的最佳方法是通過示例進行學習。下面我們將涵蓋一些精心制作的 prompt 的示例,這些 prompt 可以用于執(zhí)行各種有趣和不同的任務。

      主題:


      2.1 文本摘要

      自然語言生成中的一項標準任務是文本摘要。文本摘要可以包含許多不同的風格和領域。語言模型最有前途的應用之一是將文章和概念總結成快速易讀的摘要。讓我們嘗試使用提示來進行基本的摘要任務。

      假設我有興趣了解抗生素,我可以嘗試使用以下提示:

      Prompt:

      解釋什么是抗生素
      
      A:
      

      Output:

      抗生素是一種用于治療細菌感染的藥物。它們通過殺死細菌或防止其繁殖來使機體免疫系統(tǒng)對抗感染??股赝ǔR钥诜幤⒛z囊或液體溶液的形式服用,有時也會靜脈注射。它們對病毒感染無效,不當使用會導致抗生素耐藥性。
      

      在這里,'A:' 是一個顯式的提示格式,用于問題回答。我在這里使用它來告訴模型存在預期的后續(xù)內容。在這個例子中,這并不清楚有什么用處,但我們會在后面的例子中詳細講解。讓我們假設這個輸出信息太多,我們希望進一步摘要。我們可以指示模型進行一句話總結,如下所示:
      Prompt:

      抗生素是一種用于治療細菌感染的藥物。它們通過殺死細菌或防止其繁殖來使機體免疫系統(tǒng)對抗感染??股赝ǔR钥诜幤⒛z囊或液體溶液的形式服用,有時也會靜脈注射。它們對病毒感染無效,不當使用會導致抗生素耐藥性。
      
      請用一句話解釋上面的內容:
      

      Output:

      抗生素是一種藥物,用于通過殺死或防止細菌繁殖來治療細菌感染,但不對病毒有效,不當使用會導致抗生素耐藥性。
      

      在不過多關注上述輸出的準確性的情況下,我們可以看到模型嘗試將段落總結為一句話。您可以聰明地使用指示,但我們將在以后的章節(jié)中介紹。隨時暫停并進行實驗,看看是否可以得到更好的結果。


      2.2 信息提取

      盡管語言模型是被訓練用于執(zhí)行自然語言生成及相關任務的,但它也非常擅長執(zhí)行分類和一系列其他的自然語言處理(NLP)任務。

      以下是一個從給定段落中提取信息的提示示例。

      Prompt:

      研究論文中的作者貢獻聲明和致謝應明確并具體說明作者在撰寫和分析手稿過程中是否以及在什么程度上使用了諸如ChatGPT這樣的AI技術。它們還應指出使用了哪些LLMs。這將提醒編輯和審稿人更仔細地審查手稿,以尋找潛在的偏見、不準確性和不正確的來源證明。同樣,科學期刊應在選擇提交的手稿時透明地公開使用LLMs的情況。
      
      提及該段落中提到的大型語言模型產品是什么?
      

      Output:

      該段落中提到的大型語言模型產品是ChatGPT。
      

      我們可以通過許多方法來改進上述結果,但這已經非常有用了。

      現在顯然可以通過簡單地指示它要做什么來要求模型執(zhí)行不同的任務。這是AI產品構建者已經在使用的強大功能,以構建強大的產品和體驗。

      段落來源: ChatGPT: five priorities for research


      2.3 問答

      獲取模型對特定答案的響應的最佳方法之一是改進提示的格式。如前所述,提示可以結合指令、上下文、輸入和輸出指示符來獲得更好的結果。雖然這些組件并非必需,但隨著您指令越具體,您將獲得更好的結果。以下是如何在更具結構的提示中進行的示例。
      Prompt:

      根據以下內容回答問題。保持答案簡短。如果不確定答案,請回答“不確定答案”。
      
      背景:Teplizumab可以追溯到新澤西州的一家名為Ortho Pharmaceutical的藥品公司。在那里,科學家們生成了一種名為OKT3的抗體的早期版本。該分子最初是從小鼠中提取的,它能夠結合到T細胞的表面,并限制它們的細胞殺傷潛力。1986年,它獲得批準,用于幫助預防腎臟移植后的器官排斥,成為首個允許人類使用的治療性抗體。
      
      問題:OKT3最初是從哪里提取的?
      
      答案:
      

      Output:

      OKT3最初是從小鼠中提取的。
      

      內容來源: Nature.


      2.4 文本分類

      到目前為止,我們已經使用簡單的指令執(zhí)行任務。作為一個 Prompt 工程師,您需要提高提供更好指令的能力。但這還不夠!您還會發(fā)現,在更難的用例中,僅提供指令是不夠的。這就是您需要更多考慮上下文和可以在提示中使用的不同元素的地方。您可以提供的其他元素包括輸入數據或示例。

      讓我們嘗試通過提供文本分類的示例來演示這一點。

      Prompt:

      Classify the text into neutral, negative or positive. 
      
      Text: I think the food was okay. 
      Sentiment:
      

      Output:

      Neutral 
      

      這里的回答是Neutral(首字母大寫),本例子是想讓回答變成小寫的neutral

      我們給出了分類文本的指令,模型以'Neutral'響應,這是正確的。沒有什么錯的,但是假設我們真正需要的是讓模型以我們想要的確切格式返回標簽。所以,我們不想要Neutral,而是想要它返回全小寫的neutral。我們如何做到這一點。有不同的方法來做到這一點。我們關心的是具體性,在提示中提供的信息越多,結果就越好。我們可以嘗試提供示例來指定正確的行為。讓我們再試一次:
      Prompt:

      Classify the text into neutral, negative or positive. 
      
      Text: I think the vacation is okay.
      Sentiment: neutral 
      
      Text: I think the food was okay. 
      Sentiment:
      

      Output:

      neutral
      

      完美!這次模型返回了neutral,這正是我要尋找的具體標簽。似乎提示中提供的示例幫助模型在其輸出中變得更加具體。為了強調為什么有時候具體性很重要,請看這個例子并找出問題:
      Prompt:

      Classify the text into nutral, negative or positive. 
      
      Text: I think the vacation is okay.
      Sentiment:
      

      Output:

      Neutral
      

      這里的問題是什么?


      2.5 對話

      通過prompt engineering,您可以告訴LLM系統(tǒng)如何行事,其意圖和身份,這在構建客戶服務聊天機器人等對話系統(tǒng)時特別有用。

      例如,讓我們創(chuàng)建一個對問題生成更多技術和科學響應的對話系統(tǒng)。請注意,我們通過指令明確告訴它如何行事。這有時被稱為角色提示。

      Prompt:

      下面是與一名技術和科學氣氛的AI研究助理進行的對話。
      
      人類:你好,你是誰?
      AI:問候!我是一個AI研究助手。今天我能幫你什么忙嗎?
      人類:你能告訴我黑洞的形成嗎?
      AI:
      

      Output:

      當然可以!黑洞是時空中引力極強的區(qū)域,甚至連光也無法逃脫。當一個非常質量巨大的恒星死亡并且其核心坍塌時,就會形成一個無限密度的奇點,從而形成黑洞。奇點的強烈引力將周圍的所有物質和輻射吸引進來,從而形成黑洞。
      

      我們的AI研究助手聽起來有點太技術了,對吧?好的,讓我們改變這種行為,指示系統(tǒng)提供更易于理解的答案。

      Prompt:

      下面是與一名AI研究助手的對話。助手的回答應該易于被小學生理解。
      人類:你好,你是誰?
      AI:問候!我是一個AI研究助手。今天我能幫你什么忙嗎?
      人類:你能告訴我黑洞的形成嗎?
      AI:
      

      Output:

      當然可以!黑洞是由于非常質量巨大的恒星耗盡燃料而坍塌形成的。恒星的引力非常強大,甚至連光也無法逃離其吸引。這會在時空中創(chuàng)造一個引力極強的點,稱為黑洞。
      

      我認為我們取得了一些進展。你可以繼續(xù)改進。我相信如果你添加更多的例子,你可能會得到更好的結果。


      2.6 代碼生成

      代碼生成是LLM非常有效的應用之一,Copilot是一個很好的例子。通過巧妙的提示,你可以執(zhí)行大量的代碼生成任務。讓我們看一些下面的例子。

      首先,讓我們嘗試一個簡單的程序來問候用戶。

      Prompt:

      /*
      詢問用戶姓名并說“Hello”
      */
      

      Output:

      let name = prompt('What is your name?');
      console.log(`Hello, ${name}!`);
      

      你可以看到,我們甚至不需要指定要使用的語言。

      讓我們稍微提高一下難度。我想向你展示在設計提示時LLM可以有多強大。

      Prompt:

      '''
      Table departments, columns = [DepartmentId, DepartmentName]
      Table students, columns = [DepartmentId, StudentId, StudentName]
      創(chuàng)建一個MySQL查詢,查詢計算機科學系的所有學生
      '''
      

      Output:

      SELECT StudentId, StudentName 
      FROM students 
      WHERE DepartmentId IN (SELECT DepartmentId FROM departments WHERE DepartmentName = 'Computer Science');
      

      這非常令人印象深刻。在這種情況下,我們提供了關于數據庫模式的數據,并要求它生成一個有效的MySQL查詢。

      2.7 推理

      也許目前對于LLM來說最具挑戰(zhàn)性的任務之一是需要一定推理能力的任務。推理是我最為期待的領域之一,因為LLM可以從中得到各種復雜的應用。

      在涉及到數學能力的任務方面已經有了一些改進。盡管如此,需要注意的是目前的LLM在執(zhí)行推理任務方面仍然存在困難,因此需要更高級的提示工程技術。我們將在下一篇指南中介紹這些高級技術。現在,我們將介紹一些基本示例,以展示LLM的算術能力。

      Prompt:

      9000 * 9000等于多少?
      

      Output:

      81,000,000
      

      讓我們試試更難的題目。

      Prompt:

      這組數字中的奇數加起來是一個偶數:15, 32, 5, 13, 82, 7, 1. 
      
      A: 
      

      Output

      不,這組數字中的奇數加起來是一個奇數:119。
      

      這是錯誤的!讓我們通過改進提示來改進結果。

      Prompt:

      這組數字中的奇數加起來是一個偶數:15, 32, 5, 13, 82, 7, 1. 
      
      通過分步解決問題。首先,識別出奇數,將它們相加,并指示結果是奇數還是偶數。
      

      Output:

      奇數:15, 5, 13, 7, 1
      總和:41
      41是一個奇數。
      

      好多了,對吧?順便說一句,我嘗試了幾次,有時系統(tǒng)會失敗。如果您提供更好的指示結合示例,可能有助于獲得更準確的結果。
      另外GPT4在這方面有很大的改進和提升!

      我們將繼續(xù)在本節(jié)中包含更多常見應用的示例。

      在接下來的指南中,我們將介紹更高級的提示工程概念,以提高在所有這些和更難的任務上的性能。


      2.7 Python 筆記本

      描述 筆記本
      學習如何使用 openai 和 LangChain 庫執(zhí)行許多不同類型的常見任務 開始使用提示工程

      3.高階Prompting

      到這一步,應該很明顯,改進提示有助于在不同任務上獲得更好的結果。這就是Prompt工程背后的整個理念。

      雖然之前的例子很有趣,但在我們深入了解更高級的概念之前,讓我們先正式地介紹一些概念。

      Topics:


      3.1 零樣本Prompting

      目前,通過大量數據訓練并根據指示進行調整的LLM能夠在零樣本情況下執(zhí)行任務。
      我們在前面的章節(jié)中嘗試了一些零樣本的例子。這是我們使用過的其中一個例子:

      Prompt:

      Classify the text into neutral, negative, or positive. 
      
      Text: I think the vacation is okay.
      Sentiment:
      

      輸出:

      Neutral
      

      請注意,上面的提示中我們沒有向模型提供任何示例——這就是零樣本能力的工作方式。當零樣本不起作用時,建議在提示中提供演示或示例。
      下面我們將討論少樣本Prompting這種方法。


      3.2 少樣本Prompting

      盡管大型語言模型已經展示出了非凡的零樣本能力,但在使用零樣本設置時,它們在更復雜的任務上仍然表現不足。為了改進這一點,少樣本Prompting被用作一種技術,以實現上下文學習,即在提示中提供演示以引導模型取得更好的表現。這些演示作為后續(xù)例子的條件,我們希望模型能夠生成一個響應。

      讓我們通過一個由 Brown et al. 2020.
      提出的例子來演示少樣本Prompting。在這個例子中,任務是在句子中正確使用一個新詞。

      Prompt:

      A 'whatpu' is a small, furry animal native to Tanzania. An example of a sentence that uses
      the word whatpu is:
      We were traveling in Africa and we saw these very cute whatpus.
      To do a 'farduddle' means to jump up and down really fast. An example of a sentence that uses
      the word farduddle is:
      

      Output:

      When we won the game, we all started to farduddle in celebration.
      

      我們可以觀察到,僅提供一個示例(即1-shot)即可讓模型學會執(zhí)行任務。對于更難的任務,我們可以嘗試增加示例(例如3-shot,5-shot,10-shot等)來進行實驗。

      根據Min等人Min et al. (2022),的研究結果,以下是一些關于少樣本演示/示例的提示:

      -“標簽空間和演示文本分布對于性能都很重要(無論個別輸入的標簽是否正確)”
      -無論您是否只使用隨機標簽,所使用的格式也對性能起關鍵作用,這要比沒有標簽好得多。
      -其他結果顯示,從真實標簽分布(而不是均勻分布)中選擇隨機標簽也有所幫助。

      讓我們嘗試一些例子。首先,讓我們嘗試一個具有隨機標簽的示例(意味著將“Negative”和“Positive”標簽隨機分配給輸入):

      Prompt:

      This is awesome! // Negative
      This is bad! // Positive
      Wow that movie was rad! // Positive
      What a horrible show! //
      

      Output:

      Negative
      

      我們仍然得到了正確的答案,即使標簽已經被隨機化了。請注意,我們也保留了格式,這也有助于結果。
      實際上,通過進一步的實驗,我們發(fā)現我們正在嘗試的新GPT模型甚至變得更加強大,即使格式是隨機的。例如:

      Prompt:

      Positive This is awesome! 
      This is bad! Negative
      Wow that movie was rad!
      Positive
      What a horrible show! --
      

      Output:

      Negative
      

      正如你所說,我們需要進行更全面的分析以確認這是否適用于不同和更復雜的任務,包括不同變體的提示。

      少樣本(Few-shot) Prompting的限制

      標準的少樣本提示法對許多任務來說效果良好,但在處理更復雜的推理任務時仍然不是完美的技術,讓我們來演示一下為什么會出現這種情況。
      你還記得我們之前提供的以下任務嗎:

      The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
      
      A: 
      

      如果我們重試,模型會有下面的輸出

      Yes, the odd numbers in this group add up to 107, which is an even number.
      

      這不是正確的回答,不僅凸顯了這些系統(tǒng)的局限性,還表明需要更先進的提示工程。
      讓我們嘗試添加一些示例,看看few-shot prompting是否可以改善結果。

      Prompt:

      The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
      A: The answer is False.
      
      The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
      A: The answer is True.
      
      The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
      A: The answer is True.
      
      The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
      A: The answer is False.
      
      The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
      A: 
      

      Output:

      The answer is True.
      

      這不是正確的回答,這不僅突出了這些系統(tǒng)的局限性,而且需要更先進的提示工程。讓我們嘗試添加一些示例,看看少量提示是否會改善結果。

      標準的少量提示在許多任務中表現良好,但在處理更復雜的推理任務時仍然不是完美的技術。讓我們演示一下為什么會出現這種情況。你還記得我們之前提供的任務嗎?

      “請計算以下數學問題:24 ÷ 3”

      答案是8,但如果我們將問題更改為“請計算以下數學問題:3 ÷ 24”,模型的答案將會是0.這表明,對于某些更復雜的推理問題,少量提示是不足以得到可靠的響應的。上面的示例提供了任務的基本信息。如果你仔細觀察,就會發(fā)現我們引入的任務類型涉及更多的推理步驟。換句話說,如果我們將問題分解成步驟并向模型演示,這可能會有所幫助。最近,思維鏈 chain-of-thought (CoT) prompting提示已經流行起來,以解決更復雜的算術、常識和符號推理任務。

      總的來說,提供示例對于解決一些任務是有用的。當零量提示和少量提示不足以滿足需求時,這可能意味著模型所學到的知識不足以在任務中表現良好。從這里開始,建議考慮微調模型或嘗試更高級的提示技術。接下來,我們將介紹一種流行的提示技術,即思維鏈提示,它已經廣受歡迎。


      3.3思維鏈Prompting

      Wei et al. (2022)等人的論文中引入的Chain-of-Thought(CoT)prompting,通過中間推理步驟實現復雜的推理能力。
      您可以將其與few-shot prompting結合使用,以獲得更好的結果,用于需要在回答之前進行推理的更復雜任務。

      Prompt:

      The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
      A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.
      
      The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
      A: Adding all the odd numbers (17, 19) gives 36. The answer is True.
      
      The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
      A: Adding all the odd numbers (11, 13) gives 24. The answer is True.
      
      The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
      A: Adding all the odd numbers (17, 9, 13) gives 39. The answer is False.
      
      The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
      A:
      

      Output:

      Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.
      

      哇!我們可以看到當我們提供了推理步驟時,得到了完美的結果。我們可以通過提供更少的示例來解決這個任務,即,只需要一個示例似乎就足夠了:

      Prompt:

      The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
      A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.
      
      The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
      A:
      

      Output:

      Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.
      

      請注意,作者聲稱這是足夠大的語言模型出現的新興能力。


      3.4零樣本思維鏈zero-shot-cot

      最近提出的一個想法是“零樣本思維鏈”(Zero-Shot CoT) zero-shot CoT (Kojima et al. 2022)。它的基本思想是在原始提示中添加“一步一步地思考”。讓我們嘗試一個簡單的問題,并看看這個模型的表現:

      Prompt:

      I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?
      

      Output:

      11 apples
      

      答案是不正確的!現在讓我們嘗試一下特殊提示。

      Prompt:

      I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?
      
      Let's think step by step.
      

      Output:

      First, you started with 10 apples.
      You gave away 2 apples to the neighbor and 2 to the repairman, so you had 6 apples left.
      Then you bought 5 more apples, so now you had 11 apples.
      Finally, you ate 1 apple, so you would remain with 10 apples.
      

      這個簡單的提示在這個任務中非常有效,令人印象深刻。特別是在你沒有太多示例可用于提示時,它非常有用。


      3.5自洽性Self-Consistency

      也許目前用于提示工程的更高級的技術之一是Self-Consistency。由 Wang et al. (2022)等人提出,Self-Consistency的目標是“替代鏈式思維提示中使用的樸素貪婪解碼方法”。其思想是通過few-shot CoT采樣多個不同的推理路徑,并使用生成的結果選擇最一致的答案。這有助于提高CoT提示在涉及算術和常識推理的任務中的性能。

      讓我們嘗試以下算術推理示例:

      Prompt:

      When I was 6 my sister was half my age. Now
      I’m 70 how old is my sister?
      

      Output:

      35
      

      輸出是錯誤的!我們如何使用Self-Consistency來改善它呢?讓我們試一試。我們將使用Wang等人(2022年)的few-shot示例(表17):

      Prompt:

      Q: There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done,
      there will be 21 trees. How many trees did the grove workers plant today?
      A: We start with 15 trees. Later we have 21 trees. The difference must be the number of trees they planted.
      So, they must have planted 21 - 15 = 6 trees. The answer is 6.
      
      Q: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?
      A: There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.
      
      Q: Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?
      A: Leah had 32 chocolates and Leah’s sister had 42. That means there were originally 32 + 42 = 74
      chocolates. 35 have been eaten. So in total they still have 74 - 35 = 39 chocolates. The answer is 39.
      
      Q: Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops
      did Jason give to Denny?
      A: Jason had 20 lollipops. Since he only has 12 now, he must have given the rest to Denny. The number of
      lollipops he has given to Denny must have been 20 - 12 = 8 lollipops. The answer is 8.
      
      Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does
      he have now?
      A: He has 5 toys. He got 2 from mom, so after that he has 5 + 2 = 7 toys. Then he got 2 more from dad, so
      in total he has 7 + 2 = 9 toys. The answer is 9.
      
      Q: There were nine computers in the server room. Five more computers were installed each day, from
      monday to thursday. How many computers are now in the server room?
      A: There are 4 days from monday to thursday. 5 computers were added each day. That means in total 4 * 5 =
      20 computers were added. There were 9 computers in the beginning, so now there are 9 + 20 = 29 computers.
      The answer is 29.
      
      Q: Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many
      golf balls did he have at the end of wednesday?
      A: Michael initially had 58 balls. He lost 23 on Tuesday, so after that he has 58 - 23 = 35 balls. On
      Wednesday he lost 2 more so now he has 35 - 2 = 33 balls. The answer is 33.
      
      Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left?
      A: She bought 5 bagels for $3 each. This means she spent 5
      
      Q: When I was 6 my sister was half my age. Now I’m 70 how old is my sister?
      A:
      

      Output 1:

      When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70 - 3 = 67. The answer is 67.
      

      Output 2:

      When the narrator was 6, his sister was half his age, which is 3. Now that the narrator is 70, his sister would be 70 - 3 = 67 years old. The answer is 67.
      

      Output 3:

      When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70/2 = 35. The answer is 35.
      

      將最終答案計算出來需要幾個步驟(詳見論文),但為簡單起見,我們可以看到已經出現了絕大多數的答案,因此這實質上將成為最終答案。


      3.6生成知識Prompting

      LLM(大型語言模型)不斷得到改進,其中一種流行的技術是能夠整合知識或信息來幫助模型進行更準確的預測。

      使用類似的思路,模型是否也可以在做出預測之前生成知識?這正是Liu等人 Liu et al. 2022在論文中所嘗試的——生成用作提示的知識。特別是,這對于常識推理等任務有多么有幫助?

      讓我們嘗試一個簡單的提示:

      Prompt:

      Part of golf is trying to get a higher point total than others. Yes or No?
      

      Output:

      Yes.
      

      這種錯誤揭示了LLMs在執(zhí)行需要更多關于世界的知識的任務時的局限性。我們如何通過知識生成來改善這一點呢?

      首先,我們生成一些“知識”:

      Prompt:

      Input: Greece is larger than mexico.
      Knowledge: Greece is approximately 131,957 sq km, while Mexico is approximately 1,964,375 sq km, making Mexico 1,389% larger than Greece.
      
      Input: Glasses always fog up.
      Knowledge: Condensation occurs on eyeglass lenses when water vapor from your sweat, breath, and ambient humidity lands on a cold surface, cools, and then changes into tiny drops of liquid, forming a film that you see as fog. Your lenses will be relatively cool compared to your breath, especially when the outside air is cold.
      
      Input: A fish is capable of thinking.
      Knowledge: Fish are more intelligent than they appear. In many areas, such as memory, their cognitive powers match or exceed those of ’higher’ vertebrates including non-human primates. Fish’s long-term memories help them keep track of complex social relationships.
      
      Input: A common effect of smoking lots of cigarettes in one’s lifetime is a higher than normal chance of getting lung cancer.
      Knowledge: Those who consistently averaged less than one cigarette per day over their lifetime had nine times the risk of dying from lung cancer than never smokers. Among people who smoked between one and 10 cigarettes per day, the risk of dying from lung cancer was nearly 12 times higher than that of never smokers.
      
      Input: A rock is the same size as a pebble.
      Knowledge: A pebble is a clast of rock with a particle size of 4 to 64 millimetres based on the Udden-Wentworth scale of sedimentology. Pebbles are generally considered larger than granules (2 to 4 millimetres diameter) and smaller than cobbles (64 to 256 millimetres diameter).
      
      Input: Part of golf is trying to get a higher point total than others.
      Knowledge:
      

      Knowledge 1:

      The objective of golf is to play a set of holes in the least number of strokes. A round of golf typically consists of 18 holes. Each hole is played once in the round on a standard golf course. Each stroke is counted as one point, and the total number of strokes is used to determine the winner of the game.
      

      Knowledge 2:

      Golf is a precision club-and-ball sport in which competing players (or golfers) use many types of clubs to hit balls into a series of holes on a course using the fewest number of strokes. The goal is to complete the course with the lowest score, which is calculated by adding up the total number of strokes taken on each hole. The player with the lowest score wins the game.
      

      我們正在使用Liu et al. 2022論文中提供的提示。

      接下來的步驟是整合知識并得出預測。我將問題轉換成了問答格式,以指導回答的格式。

      Prompt:

      Question: Part of golf is trying to get a higher point total than others. Yes or No?
      
      Knowledge: The objective of golf is to play a set of holes in the least number of strokes. A round of golf typically consists of 18 holes. Each hole is played once in the round on a standard golf course. Each stroke is counted as one point, and the total number of strokes is used to determine the winner of the game.
      
      Explain and Answer: 
      

      回答 1 (非常有信心):

      No, the objective of golf is not to get a higher point total than others. Rather, the objective is to play a set of holes in the least number of strokes. The total number of strokes is used to determine the winner of the game, not the total number of points.
      
      Question: Part of golf is trying to get a higher point total than others. Yes or No?
      
      Knowledge: Golf is a precision club-and-ball sport in which competing players (or golfers) use many types of clubs to hit balls into a series of holes on a course using the fewest number of strokes. The goal is to complete the course with the lowest score, which is calculated by adding up the total number of strokes taken on each hole. The player with the lowest score wins the game.
      
      Explain and Answer:
      

      回答 2 (信心要低得多):

      Yes, part of golf is trying to get a higher point total than others. Each player tries to complete the course with the lowest score, which is calculated by adding up the total number of strokes taken on each hole. The player with the lowest score wins the game.
      

      這個例子中發(fā)生了一些非常有趣的事情。在第一個回答中,模型非常有信心,但在第二個回答中卻不是那么有信心。我為了演示的目的簡化了過程,但在得出最終答案時還有一些更多的細節(jié)需要考慮。

      3.7 自動提示工程師AutomaticPromptEngineer

      Zhou et al., (2022) 提出了自動提示工程師(APE)框架,用于自動生成和選擇指令。指令生成問題被構建為自然語言合成問題,使用LLMs作為黑盒優(yōu)化問題來生成和搜索候選解。

      第一步涉及一個大型語言模型(作為推理模型),該模型會獲得輸出演示,以生成任務的指令候選方案。這些候選方案將指導搜索過程。指令使用目標模型執(zhí)行,然后基于計算出的評估分數選擇最適合的指令。
      APE發(fā)現了一個更好的零-shot CoT提示,比人工設計的“讓我們逐步思考”提示(Kojima等人,2022)更好。

      提示“讓我們逐步地工作,以確保我們有正確的答案?!币l(fā)了思考鏈,提高了MultiArith和GSM8K基準測試的性能:

      本文涉及到與提示工程相關的一個重要主題,即自動優(yōu)化提示的想法。雖然本指南不深入探討這個話題,但如果您對此感興趣,以下是一些關鍵論文:

      • AutoPrompt - 提出了一種基于梯度引導搜索的自動創(chuàng)建各種任務提示的方法。
      • Prefix Tuning - 一種輕量級的fine-tuning替代方案,為NLG任務準備可訓練的連續(xù)前綴。
      • Prompt Tuning - 提出了一種通過反向傳播學習軟提示的機制。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多