Udostępnij za pośrednictwem


Uczenie zero-shot i kilka strzałów

W tym artykule opisano uczenie zero-shot i uczenie few-shot na potrzeby opracowywania monitów w .NET, w tym ich podstawowe przypadki użycia.

Wydajność modelu GPT korzysta z inżynierii podpowiedzi, praktyki dostarczania instrukcji i przykładów modelowi, aby udoskonalić jego wyniki. Uczenie zero-shot i uczenie kilku strzałów to techniki, których można użyć podczas udostępniania przykładów.

Uczenie zero-shot

Uczenie zero-shot to praktyka przekazywania poleceń, które nie są sparowane z dosłownymi uzupełnieniami, chociaż można uwzględnić uzupełnienia zawierające wskazówki. Uczenie zero-shot opiera się całkowicie na istniejącej wiedzy modelu w celu generowania odpowiedzi, co zmniejsza liczbę utworzonych tokenów i może pomóc w kontrolowaniu kosztów. Jednak uczenie zero-shot nie zwiększa wiedzy ani kontekstu modelu.

Oto przykładowy monit zero-shot, który nakazuje modelowi ocenę danych wejściowych użytkownika w celu określenia, które z czterech możliwych intencji reprezentuje dane wejściowe, a następnie poprzeć odpowiedź "Intencja: ".

prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent: 
""";

Istnieją dwa podstawowe przypadki użycia uczenia zero-shot:

  • Praca z dostrojonymi modellami LLM — ponieważ opiera się ona na istniejącej wiedzy modelu, uczenie zero-shot nie jest tak zasobożerne jak uczenie few-shot i działa dobrze z LLMs, które zostały już dostrojone na zestawach danych instruktażowych. Możesz polegać wyłącznie na uczeniu zero-shot i utrzymywać koszty stosunkowo niskie.
  • Ustalanie bazowych poziomów wydajności — uczenie zero-shot może pomóc w symulowaniu funkcjonowania aplikacji dla rzeczywistych użytkowników. Pozwala to ocenić różne aspekty bieżącej wydajności modelu, takie jak dokładność lub precyzja. W takim przypadku zwykle używasz uczenia zero-shot, aby ustanowić punkt odniesienia, potem przeprowadzasz eksperymenty z uczeniem few-shot, aby poprawić wydajność.

Uczenie na podstawie niewielu przykładów

Uczenie na niewielkiej liczbie przykładów to praktyka sparowania przykładów z dosłownymi uzupełnieniami (przykładami na niewielkiej liczbie omawianych przypadków), aby pokazać modelowi, jak reagować. W porównaniu z uczeniem zero-shot oznacza to, że uczenie kilku strzałów generuje więcej tokenów i powoduje, że model zaktualizuje swoją wiedzę, co może sprawić, że uczenie kilku strzałów będzie bardziej intensywnie korzystające z zasobów. Jednak uczenie się z małej ilości danych pomaga również modelowi w generowaniu bardziej istotnych odpowiedzi.

prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.

User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage

User Input: Can you send the full update to the marketing team?
Intent: SendEmail

User Input: {request}
Intent:
""";

Uczenie z niewielką liczbą przykładów ma dwa podstawowe przypadki użycia.

  • Dostrajanie modelu LLM — ponieważ może ono dodać do wiedzy modelu, uczenie kilku przykładów może poprawić wydajność modelu. Powoduje to również, że model tworzy więcej tokenów niż uczenie bezstrzałowe, co ostatecznie może stać się zbyt kosztowne, a nawet niewykonalne. Jeśli jednak twój LLM nie jest jeszcze dostosowany, nie zawsze uzyskasz dobrą wydajność z komendami zero-shot, a uczenie przy użyciu kilku przykładów jest uzasadnione.
  • Rozwiązywanie problemów z wydajnością — możesz użyć uczenia z nielicznymi przykładami jako kontynuacji uczenia zeroprzykładowego. W takim przypadku używasz uczenia zero-shot, aby ustanowić punkt odniesienia wydajności, a następnie eksperymentujesz z uczeniem few-shot na podstawie użytych podpowiedzi zero-shot. Dzięki temu można dodać do wiedzy modelu po zapoznaniu się z tym, jak obecnie reaguje, dzięki czemu można iterować i poprawiać wydajność przy jednoczesnym zminimalizowaniu liczby wprowadzaniu tokenów.

Zastrzeżenia

  • Uczenie oparte na przykładach nie działa dobrze w przypadku złożonych zadań rozumowania. Jednak dodanie instrukcji może pomóc rozwiązać ten problem.
  • Uczenie z małą liczbą przykładów wymaga utworzenia długich podpowiedzi. Polecenia z dużą liczbą tokenów mogą zwiększyć złożoność obliczeniową i opóźnienia. Zazwyczaj oznacza to zwiększenie kosztów. Istnieje również limit długości monitów.
  • Jeśli używasz kilku przykładów, model może nauczyć się fałszywych wzorców, takich jak "Odczucia są dwukrotnie bardziej prawdopodobne do bycia pozytywnymi niż negatywnymi".