發布於 

WizardLM - Empowering Large Language Models to Follow Complex Instructions

本文為 “WizardLM: Empowering Large Language Models to Follow Complex Instructions” (2023.04) 的論文重點摘要

論文全文參考

Demo 參考

Description

Goal

  • 最近的 LLaMA 系列 model 的 instruction 均使用較為普通的 self-instruction 生成方法或是人工生成較簡單的 instruction → 缺乏資料多元性
  • 受到 ChatGPT & GPT4 的啟發, 上述兩模型都經由大量高質量的人工標註保證其資料多元性 → 思考低成本取得高質量的 instruction

Contributions

  • 在複雜的 instruction 資料中, 聲稱比 ChatGPT 表現來的好, 這邊有個疑點是沒有一個好的 benchmark 來做評測標準 (僅用 63 筆測試 & 工讀生判定生成的好壞)
    複雜指令 WizardLM 勝率比較
    複雜指令 WizardLM 勝率比較
  • 在各種難度的 instruction 中, 表現比同種 LLaMA 架構的 Alpaca 和 Vincuna 來得好, 這也驗證了資料多元性或許可以讓模型學習的更好
  • 本文提出一種新的 instruction 產生方式, 有別於一般的 self-instruction, 該 instruction 會衍生出新的複雜分支結果, 作者稱為 “Evol-Instruct”

Methodology

  • “Evol-Instruct” 的核心想法是利用原有的簡單 instruction 透過 ChatGPT API 來產生出進階的 instruction 作為模型訓練資料
  • “Evol-Instruct” 分為兩大類: In-depth Evolving (藍) 和 In-breadth Evolving (紅)
  1. In-depth Evolving 又可以分為 5 小類, 底下列出對應的 prompt 生成方式
    • add constraints
      Please add one more constraints/requirements into #GivenPrompt#
    • deepening
      If #Given Prompt# contains inquiries about certain issues, the depth and breadth of the inquiry can be increased
    • concretizing
      Please replace general concepts with more specific concepts.
    • increase reasoning steps
      If #GivenPrompt# can be solved with just a few simple thinking processes, you can rewrite it to explicitly request multiple-step reasoning.
    • complicate input
      You should try your best not to make the #Rewritten Prompt# become verbose, #Rewritten Prompt# can only add 10 to 20 words into #GivenPrompt#.
  2. In-breadth Evolving 基於廣度提升 instruction 的複雜度, 底下列出 prompt 生成方式
    Your goal is to draw inspiration from the #Given Prompt# to create a brand new prompt. This new prompt should belong to the same domain as the #Given Prompt# but be even more rare. The LENGTH and difficulty level of the #Created Prompt# should be similar to that of the #Given Prompt#. The #Created Prompt# must be reasonable and must be understood and responded by humans. ‘#Given Prompt#’, ‘#Created Prompt#’, ‘given prompt’ and ‘created prompt’ are not allowed to appear in #Created Prompt#.
Evol-Instruct Example
Evol-Instruct Example
  1. Elimination Evolving 透過 ChatGPT API 生成的難免會遇到產生失敗的情況, 作者使用以下 4 點來進行過濾
    a. 剔除沒有加入額外資訊的 instruction, 方法為透過以下 prompt 打 ChatGPT API 所完成
    Here are two Instructions to ChatGPT AI, do you think they are equal to each other,which meet the following requirements: 1.They have same constraints and requirments. 2.They have same depth and breadth of the inquiry. The First Prompt: <Here is first instruction.> The Second Prompt: <Here is second instruction.> Your Judgement (Just answer: Equal or NotEqual. No need to explain the reason.)
    b. 剔除含有 ‘sorry’ 並且較短的 instruction (少於 80), 這類結果通常代表 ChatGPT API 回答得較為吃力
    c. 剔除只包含標點符號和停用詞的 instruction
    d. 剔除包含一開始設定的 prompt 如 “given prompt”, “rewritten prompt”, “#Rewritten Prompt#”
Overview of Evol-Instruct
Overview of Evol-Instruct
  1. Response Generation: 由於經過 “Evol-Instruct” 後的 instruction 可能與原本問題的答案差距甚大, 作者又去打了一輪 ChatGPT API 作為完整的 QA pair 進行訓練

Conclusion

  • 此篇論文提出一種優化 instruction 的方式, 藉由 ChatGPT API 的改寫能力來取得進階的 instruction 以及對應的 output 作為訓練資料
  • 能夠優於 Alpaca, Vincuna 等近期熱門 model, 可以歸功於工程的成功, 雖然資料取得方式較為暴力, 但要養出一支好的羊駝就必須給好的飼料才能有好的成果



本"頁面"訪問 次 | 👀總訪問 次 | 🎎總訪客


本站由 @yifor 使用 Stellar 主題創建。
本 Blog 所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明出處。