Skip to content

Promptarea cu câteva exemple

Prezentare generală

Deși modelele de limbaj mari demonstrează capacități remarcabile zero-shot, ele încă nu sunt la înălțimea sarcinilor mai complexe când folosesc setarea zero-shot. Promptarea cu câteva exemple poate fi folosită ca o tehnică pentru a permite învățarea în context, unde furnizăm demonstrații în prompt pentru a ghida modelul către o performanță mai bună. Demonstrațiile servesc ca condiționare pentru exemplele ulterioare unde am dori ca modelul să genereze un răspuns.

Conform lui Touvron et al. 2023, proprietățile cu câteva exemple au apărut prima dată când modelele au fost scalate la o dimensiune suficientă (Kaplan et al., 2020).

Exemplu de bază

Să demonstrăm promptarea cu câteva exemple printr-un exemplu care a fost prezentat în Brown et al. 2020. În exemplu, sarcina este să folosești corect un cuvânt nou într-o propoziție.

Prompt:

Un "whatpu" este un animal mic, păros, nativ din Tanzania. Un exemplu de propoziție care folosește cuvântul whatpu este:
Călătoream în Africa și am văzut acești whatpu foarte drăguți.
 
A face un "farduddle" înseamnă să sari în sus și în jos foarte repede. Un exemplu de propoziție care folosește cuvântul farduddle este:

Ieșire:

Când am câștigat jocul, am început cu toții să facem farduddle în sărbătoare.

Putem observa că modelul a învățat cumva cum să execute sarcina prin furnizarea a doar unui exemplu (adică 1-shot). Pentru sarcini mai dificile, putem experimenta cu creșterea demonstrațiilor (de exemplu, 3-shot, 5-shot, 10-shot, etc.).

Cele mai bune practici pentru demonstrații

Urmând descoperirile din Min et al. (2022), iată câteva sfaturi suplimentare despre demonstrații/exemplare când faci promptarea cu câteva exemple:

  1. Distribuția etichetelor: "spațiul etichetelor și distribuția textului de intrare specificată de demonstrații sunt ambele importante (indiferent dacă etichetele sunt corecte pentru intrările individuale)"
  2. Consistența formatului: formatul pe care îl folosești joacă de asemenea un rol cheie în performanță, chiar dacă folosești doar etichete aleatorii, aceasta este mult mai bună decât să nu ai deloc etichete.
  3. Selecția echilibrată: rezultatele suplimentare arată că selectarea etichetelor aleatorii dintr-o distribuție adevărată a etichetelor (în loc de o distribuție uniformă) ajută de asemenea.

Exemple cu etichete aleatorii

Să încercăm câteva exemple. Să încercăm mai întâi un exemplu cu etichete aleatorii (însemnând că etichetele Negative și Positive sunt atribuite aleator intrărilor):

Prompt:

Este minunat! // Negative
Este rău! // Positive
Wow, acel film a fost grozav! // Positive
Ce spectacol oribil! //

Ieșire:

Negative

Încă obținem răspunsul corect, chiar dacă etichetele au fost randomizate. Observă că am păstrat de asemenea formatul, ceea ce ajută de asemenea. De fapt, cu experimentarea suplimentară, pare că modelele GPT mai noi cu care experimentăm devin mai robuste chiar și la formate aleatorii.

Prompt:

Positive Este minunat! 
Este rău! Negative
Wow, acel film a fost grozav!
Positive
Ce spectacol oribil! --

Ieșire:

Negative

Nu există consistență în formatul de mai sus, dar modelul a prezis încă eticheta corectă. Trebuie să conducem o analiză mai temeinică pentru a confirma dacă aceasta se menține pentru sarcini diferite și mai complexe, inclusiv diferite variații de prompturi.

Limitările promptării cu câteva exemple

Promptarea standard cu câteva exemple funcționează bine pentru multe sarcini, dar încă nu este o tehnică perfectă, mai ales când ai de-a face cu sarcini de raționament mai complexe. Să demonstrăm de ce este cazul. Îți amintești exemplul anterior unde am furnizat următoarea sarcină:

Numerele impare din acest grup se adună la un număr par: 15, 32, 5, 13, 82, 7, 1. 
A:

Dacă încercăm din nou, modelul produce următoarea ieșire:

Da, numerele impare din acest grup se adună la 107, care este un număr par.

Acesta nu este răspunsul corect, ceea ce nu doar evidențiază limitările acestor sisteme, dar că există nevoia pentru o inginerie a prompturilor mai avansată.

Să încercăm să adăugăm câteva exemple pentru a vedea dacă promptarea cu câteva exemple îmbunătățește rezultatele.

Prompt:

Numerele impare din acest grup se adună la un număr par: 4, 8, 9, 15, 12, 2, 1.
A: Răspunsul este Fals.
Numerele impare din acest grup se adună la un număr par: 17, 10, 19, 4, 8, 12, 24.
A: Răspunsul este Adevărat.
Numerele impare din acest grup se adună la un număr par: 16, 11, 14, 4, 8, 13, 24.
A: Răspunsul este Adevărat.
Numerele impare din acest grup se adună la un număr par: 17, 9, 10, 12, 13, 4, 2.
A: Răspunsul este Fals.
Numerele impare din acest grup se adună la un număr par: 15, 32, 5, 13, 82, 7, 1. 
A:

Ieșire:

Răspunsul este Adevărat.

Aceasta nu a funcționat. Se pare că promptarea cu câteva exemple nu este suficientă pentru a obține răspunsuri de încredere pentru acest tip de problemă de raționament. Exemplul de mai sus furnizează informații de bază despre sarcină. Dacă te uiți mai atent, tipul de sarcină pe care l-am introdus implică câțiva pași de raționament suplimentari. Cu alte cuvinte, ar putea ajuta dacă împărțim problema în pași și demonstrăm asta modelului. Mai recent, promptarea chain-of-thought (CoT) a fost popularizată pentru a aborda sarcini de raționament aritmetic, de bun simț și simbolic mai complexe.

Concluzii cheie

În general, se pare că furnizarea de exemple este utilă pentru rezolvarea unor sarcini. Când promptarea zero-shot și promptarea cu câteva exemple nu sunt suficiente, ar putea însemna că orice a fost învățat de model nu este suficient pentru a face bine sarcina. De aici se recomandă să începi să te gândești la finetuning-ul modelelor tale sau să experimentezi cu tehnici de promptare mai avansate.

Beneficii cheie

  • Performanță îmbunătățită: Rezultate mai bune la sarcini complexe comparativ cu zero-shot
  • Învățarea în context: Modelele învață din exemplele furnizate în prompt
  • Flexibilitatea formatului: Funcționează cu diverse formate de intrare-ieșire
  • Abordare scalabilă: Poate crește exemplele pentru sarcini mai dificile

Aplicații

  • Clasificarea textului: Analiza sentimentelor, clasificarea temelor
  • Traducerea limbilor: Furnizarea de exemple de traducere
  • Generarea de cod: Arătarea modelelor și exemplelor de cod
  • Răspunsurile la întrebări: Demonstrarea formatelor de răspuns
  • Scrierea creativă: Furnizarea de exemple de stil

Subiecte conexe

Referințe

  • Brown et al. (2020) - Language Models are Few-Shot Learners
  • Min et al. (2022) - Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?
  • Touvron et al. (2023) - LLaMA: Open and Efficient Foundation Language Models