Uczenie zero-shot i kilka strzałów
W tym artykule opisano uczenie zero-shot i uczenie kilku strzałów na potrzeby inżynierii monitów na platformie .NET, w tym ich podstawowe przypadki użycia.
Wydajność modelu GPT zapewnia korzyści wynikające z inżynierii monitów, praktykę dostarczania instrukcji i przykładów modelowi w celu uściślenia danych wyjściowych. Uczenie zero-shot i uczenie kilku strzałów to techniki, których można użyć podczas udostępniania przykładów.
W przypadku uczenia zero-shot dołączasz monity, ale nie dosłowne uzupełnianie. Można uwzględnić uzupełnienia, które składają się tylko z wskazówek. 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 dodaje się do wiedzy 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ć jego 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:
""";
W przypadku uczenia kilku strzałów dołączono monity sparowane z dosłownymi ukończeniami. 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 z tych samych powodów uczenie kilku strzałów pomaga również modelowi w generować bardziej istotne 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:
""";
Przypadki użycia uczenia zerowego
Uczenie zero-shot to praktyka przekazywania monitów, które nie są sparowane z dosłownymi ukończeniami, chociaż mogą być sparowane z sygnałem. Istnieją dwa podstawowe przypadki użycia uczenia zero-shot:
- Praca z dostrojonym modułami LLMs — ponieważ opiera się ona na istniejącej wiedzy modelu, uczenie zero-shot nie jest tak intensywne, jak uczenie zastrzelone, i działa dobrze z llMs, które zostały już dostosowane do zestawów danych instrukcji. Możesz polegać wyłącznie na uczeniu zero-shot i utrzymywać koszty stosunkowo niskie.
- Ustanawianie punktów odniesienia wydajności — uczenie zero-shot może pomóc w symulowaniu sposobu działania 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 wydajności, a następnie eksperymentować z uczeniem kilku strzałów, aby poprawić wydajność.
Przypadki użycia uczenia kilku strzałów
Uczenie kilku strzałów to praktyka przekazywania monitów sparowanych z uzupełnianiami dosłownymi (monitami o kilka strzałów), aby pokazać modelowi, jak reagować. W przeciwieństwie do uczenia zero-shot uczenie może dodać do wiedzy modelu. Możesz nawet użyć własnych zestawów danych, aby automatycznie wygenerować monity o kilka strzałów, wykonując generowanie rozszerzonego pobierania.
Uczenie kilku strzałów ma dwa podstawowe przypadki użycia:
- Dostrajanie modułu LLM — ponieważ może ono dodać do wiedzy modelu, uczenie kilku strzałów może poprawić wydajność modelu. Powoduje to również, że model tworzy więcej tokenów niż uczenie zero-shot, co ostatecznie może stać się zbyt kosztowne, a nawet niewykonalne. Jeśli jednak twój LLM nie jest jeszcze ukarany grzywną, nie uzyskasz dobrej wydajności z monitami zero-shot, a uczenie kilku strzałów jest uzasadnione.
- Rozwiązywanie problemów z wydajnością — możesz użyć uczenia kilku strzałów jako kontynuacji do uczenia zero-shot. W takim przypadku użyjesz uczenia zero-shot, aby ustanowić punkt odniesienia wydajności, a następnie eksperymentować z uczeniem kilku strzałów na podstawie użytych monitów 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 kilku strzałów wymaga utworzenia długich monitów. Monity z dużą liczbą tokenów mogą zwiększyć obliczenia 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 "Tonacje są dwa razy bardziej pozytywne niż negatywne".