Informacje o modelach generatywnych

Modele generatywnej sztucznej inteligencji (AI), takie jak model z rodziny Gemini, mogą tworzyć treści z różnych rodzajów danych wejściowych, w tym tekstu, obrazów i dźwięków. Na najbardziej podstawowym poziomie modele te działają jak zaawansowane aplikacje autouzupełniania. Biorąc pod uwagę tekst wejściowy („Możesz sprowadzić konia do wody”), model generatywny może przewidzieć, że wynikowy tekst, który na podstawie danych treningowych ma statystyczne prawdopodobieństwo („ale nie możesz tego pić”). Tej podstawowej właściwości modeli generatywnych możesz używać w różnych aplikacjach:

  • Twórz kreatywne teksty, np. poezję, opowiadania, metafory i posty na blogu.
  • Przekształcanie danych strukturalnych na tekst swobodny
  • Wyodrębnianie i podsumowywanie informacji z tekstu dowolnego
  • Generowanie kodu
  • Tłumacz teksty w różnych językach

Wykorzystywanie modeli generatywnych do tworzenia tych funkcji nie wymaga żadnej wiedzy z zakresu systemów uczących się. Nie musisz zbierać dużego zbioru danych ani trenować modelu. Aby utworzyć pierwszy prototyp, wystarczy w kilku zdaniach opisać, co ma robić model.

Modele generatywne, które obsługują tylko wpisywanie i wyjście tekstu, są też nazywane dużymi modelami językowymi (LLM). Modele z rodziny Gemini mogą przetwarzać nie tylko dane tekstowe. Mogą też wykonywać funkcje LLM, ale lepiej nazywane są modelami generatywnymi.

Przykładowe aplikacje

Poniższe przykłady pokazują typowe dane wejściowe i wyjściowe modelu generatywnego.

Generowanie wiersza

Dane wejściowe użytkownika: Write me a four-line poem about puppies and Android phones. Make sure it rhymes.

Dane wyjściowe modelu:

Puppies are cute,
Android phones are neat,
They both bring joy,
And make life complete.

Wygeneruj listę

Dane wejściowe użytkownika: Generate a bulleted list of items I need to pack for a three-day camping trip.

Dane wyjściowe modelu:

*   Tent
*   Sleeping bag
*   Sleeping pad
*   Camp stove
*   Pots and pans
*   Utensils
*   Food
*   Water
*   First-aid kit
*   Sunscreen
*   Insect repellent
*   ...

Możesz korzystać z modeli generatywnych, aby generować różnego rodzaju przydatne zachowania, takie jak ten, po prostu tworząc odpowiedni tekst wejściowy, zwany także promptem. Sztuka i nauka określania właściwego tekstu w celu uzyskania modeli generatywnych do realizacji tego, co chcesz, nosi nazwę projektu promptów (nazywanego również „inżynierią promptów” lub po prostu „promptem”).

Podstawy projektowania promptów

W poprzedniej sekcji było kilka przykładów promptów zawierających instrukcje, np. „Napisz mi wiersz”. Takie instrukcje mogą się sprawdzić w przypadku niektórych zadań. W innych aplikacjach lepsza może się jednak okazać inna metoda promptów zwana promptami typufew-shot. Prompty typu „few-shot” wykorzystują fakt, że duże modele językowe (LLM) niezwykle dobrze rozpoznają i odwzorowują wzorce w danych tekstowych. Chodzi o to, aby przesłać modelowi generatywnemu wzorzec tekstowy, którego uczy się. Załóżmy na przykład, że chcesz utworzyć aplikację, która jako dane wejściowe wpisze nazwę kraju i zwraca jego stolicę. Oto prompt tekstowy specjalnie w tym celu:

Italy : Rome
France : Paris
Germany :

W tym promptie tworzysz wzorzec: [country] : [capital]. Jeśli wyślesz ten prompt do dużego modelu językowego, automatycznie uzupełni on wzór i zwróci podobny wynik:

     Berlin
Turkey : Ankara
Greece : Athens

Odpowiedź modelu może wyglądać trochę dziwnie. Model zwrócił nie tylko stolicę Niemiec (ostatni kraj w pisanym odręcznie promptu), ale także całą listę dodatkowych par krajów i stoli. Dzieje się tak, ponieważ model generatywny „kontynuuje wzór”. Jeśli jedynym zadaniem jest utworzenie funkcji, która informuje o stolicy kraju wejściowego („Niemcy:Berlin”), prawdopodobnie nie interesuje Cię żaden tekst generowany przez model po „Berlinie”. Twórcy aplikacji prawdopodobnie chętnie skracają te zbędne przykłady. Dodatkowo warto dostosować parametry danych wejściowych, aby Niemcy nie były stałym ciągiem znaków, lecz zmienną dostarczaną przez użytkownika:

Italy : Rome
France : Paris
<user input here> :

Właśnie udało Ci się stworzyć krótką zachętę do budowania stolic krajów.

Jeśli chcesz wykonać wiele zadań, skorzystaj z tego szablonu krótkich promptów. Oto prompt w nieco innym formacie, który konwertuje Pythona na JavaScript:

Convert Python to JavaScript.
Python: print("hello world")
JavaScript: console.log("hello world")
Python: for x in range(0, 100):
JavaScript: for(var i = 0; i < 100; i++) {
Python: ${USER INPUT HERE}
JavaScript:

Możesz też skorzystać z promptu „odwróć słownik”. Podając definicję, zwraca słowo, które pasuje do tej definicji:

Given a definition, return the word it defines.
Definition: When you're happy that other people are also sad.
Word: schadenfreude
Definition: existing purely in the mind, but not in physical reality
Word: abstract
Definition: ${USER INPUT HERE}
Word:

Jak widzisz, dokładny wzorzec promptów typu „few-shot” nieco się różni. Podczas pisania własnych promptów oprócz przykładów warto też brać pod uwagę podawanie instrukcji w promptach, ponieważ pomaga to przekazać modelowi intencje.

Wymaganie a tradycyjne tworzenie oprogramowania

W przeciwieństwie do tradycyjnego oprogramowania, które zostało zaprojektowane pod kątem dokładnie napisanej specyfikacji, działanie modeli generatywnych jest w dużej mierze nieprzejrzyste nawet dla trenerów modeli. W efekcie często nie można z wyprzedzeniem przewidzieć, jakie rodzaje struktur promptów sprawdzą się najlepiej w przypadku konkretnego modelu. Co więcej, działanie modelu generatywnego zależy w dużej mierze od jego danych treningowych, a ponieważ modele są stale dostrajane na nowych zbiorach danych, czasami model się zmienia na tyle, że nieumyślnie zmienia strukturę promptów, która sprawdza się najlepiej. Co to oznacza dla Ciebie? Eksperymentuj! Wypróbuj różne formaty promptów.

Parametry modelu

Każdy prompt, który wysyłasz do modelu, zawiera wartości parametrów, które kontrolują sposób generowania odpowiedzi przez model. Model może generować różne wyniki dla różnych wartości parametrów. Najczęstsze parametry modelu:

  1. Maksymalna liczba tokenów wyjściowych: określa maksymalną liczbę tokenów, które można wygenerować w odpowiedzi. Token ma około 4 znaków. 100 tokenów odpowiada około 60–80 słowom.

  2. Temperatura: temperatura decyduje o stopniu losowości wyboru tokena. Temperatura jest używana do próbkowania podczas generowania odpowiedzi, co następuje, gdy stosowane są topP i topK. Niższe temperatury są przydatne w przypadku promptów, które wymagają bardziej deterministycznej lub mniej otwartej odpowiedzi, a wyższe mogą prowadzić do bardziej różnorodnych lub kreatywnych wyników. Temperatura o wartości 0 jest deterministyczna, co oznacza, że zawsze jest wybierana odpowiedź o najwyższym prawdopodobieństwie.

  3. topK: parametr topK zmienia sposób, w jaki model wybiera tokeny w celu wygenerowania danych wyjściowych. topK o wartości 1 oznacza, że wybrany token jest najbardziej prawdopodobny spośród wszystkich tokenów w słowniku modelu (jest to też nazywane dekodowaniem zachłannym), natomiast topK = 3 oznacza, że następny token jest wybierany spośród 3 najbardziej prawdopodobnych na podstawie temperatury. W każdym kroku wyboru tokenów próbkowane są tokeny topK o najwyższym prawdopodobieństwie. Tokeny są następnie dodatkowo filtrowane według parametru topP. Ostatni token jest wybierany za pomocą próbkowania temperatury.

  4. topP: parametr topP zmienia sposób, w jaki model wybiera tokeny w celu wygenerowania danych wyjściowych. Tokeny są wybierane od najbardziej do najmniej prawdopodobnego do momentu, aż suma ich prawdopodobieństw będzie równa wartości topP. Jeśli na przykład tokeny A, B i C mają prawdopodobieństwo 0,3, 0,2 i 0,1, a wartość topP to 0,5, model wybierze A lub B jako kolejny token, używając temperatury i wykluczy C jako kandydat. Wartość domyślna topP to 0,95.

  5. stop_sequences: ustaw sekwencję zatrzymania, aby poinformować model, że przestał generować treści. Sekwencja zatrzymania może być dowolną sekwencją znaków. Staraj się unikać sekwencji znaków, które mogą występować w wygenerowanych treściach.

Typy promptów

W zależności od zawartych w nich informacji kontekstowych prompty można ogólnie podzielić na 3 rodzaje.

Prompty typu zero-shot

Te prompty nie zawierają przykładów replikacji modelu. Komunikaty „zero-shot” pokazują w zasadzie, że model może wykonać prompt bez podawania dodatkowych przykładów czy informacji. Oznacza to, że aby uzyskać wiarygodną odpowiedź, model musi polegać na jego dotychczasowej wiedzy.

Oto niektóre często używane wzorce promptów typu zero-shot:

  • Treść instrukcji
<Overall instruction>
<Content to operate on>

Przykład:

Summarize the following into two sentences at the third-grade level:

Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds.

Hummingbirds are made up of three main parts: the head, the body, and the tail.
The head is small and round, and it contains the eyes, the beak, and the brain.
The body is long and slender, and it contains the wings, the legs, and the
heart. The tail is long and forked, and it helps the hummingbird to balance
while it is flying.

Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color!

Hummingbirds are very active creatures. They spend most of their time flying,
and they are also very good at hovering. Hummingbirds need to eat a lot of food
in order to maintain their energy, and they often visit flowers to drink nectar.

Hummingbirds are amazing creatures. They are small, but they are also very
powerful. They are beautiful, and they are very important to the ecosystem.
  • Instrukcja-treść-instrukcja
<Overall instruction or context setting>
<Content to operate on>
<Final instruction>

Przykład:

Here is some text I'd like you to summarize:

Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds. Hummingbirds
are made up of three main parts: the head, the body, and the tail. The head is
small and round, and it contains the eyes, the beak, and the brain. The body is
long and slender, and it contains the wings, the legs, and the heart. The tail
is long and forked, and it helps the hummingbird to balance while it is flying.
Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color! Hummingbirds are very active creatures. They spend most
of their time flying, and they are also very good at hovering. Hummingbirds need
to eat a lot of food in order to maintain their energy, and they often visit
flowers to drink nectar. Hummingbirds are amazing creatures. They are small, but
they are also very powerful. They are beautiful, and they are very important to
the ecosystem.

Summarize it in two sentences at the third-grade reading level.
  • Kontynuacja. Czasami tekst może pozostawać bez instrukcji. Oto np. prompt typu zero-shot, w którym model ma kontynuować dane wejściowe:
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow

Używaj promptów typu zero-shot do tworzenia kreatywnych formatów tekstu, takich jak wiersze, kod, skrypty, utwory muzyczne, e-maile czy listy.

Prompty jednorazowe

Te prompty dostarczą modelowi 1 przykład do zreplikowania i kontynuowania wzorca. Umożliwia to generowanie przewidywalnych odpowiedzi modelu.

Możesz na przykład generować pary żywności, takie jak:

Food: Apple
Pairs with: Cheese
Food: Pear
Pairs with:

Prompty typu „few-shot”

Te prompty dostarczają modelowi wiele przykładów do powtórzenia. Używaj promptów typu „few-shot”, aby wykonywać złożone zadania, takie jak syntetyzowanie danych na podstawie wzorca.

Przykładowy prompt może być:

Generate a grocery shopping list for a week for one person. Use the JSON format
given below.
{"item": "eggs", "quantity": "6"}
{"item": "bread", "quantity": "one loaf"}

Modele generatywne

Ta sekcja ma odpowiedzieć na pytanie: Czy odpowiedzi modeli generatywnych są losowe, czy też deterministyczne?

Krótka odpowiedź: tak, obie. Gdy wywołasz model generatywny, odpowiedź tekstowa zostanie wygenerowana w 2 etapach. Na pierwszym etapie model generatywny przetwarza prompt wejściowy i generuje rozkład prawdopodobieństwa w stosunku do możliwych tokenów (słów), które prawdopodobnie pojawią się w następnej kolejności. Jeśli np. wpiszesz tekst wejściowy „Pies przeskoczył nad...”, model generatywny wygeneruje tablicę prawdopodobnych następnych słów:

[("fence", 0.77), ("ledge", 0.12), ("blanket", 0.03), ...]

Ten proces jest deterministyczny – model generatywny wygeneruje ten sam rozkład za każdym razem, gdy wprowadzi ten sam tekst promptu.

Na drugim etapie model generatywny konwertuje te rozkłady na rzeczywiste odpowiedzi tekstowe, korzystając z jednej z kilku strategii dekodowania. Prosta strategia dekodowania może wybrać najbardziej prawdopodobny token na każdym etapie. Taki proces zawsze jest deterministyczny. Możesz jednak zamiast tego wygenerować odpowiedź przez losowe próbkowanie rozkładu zwróconego przez model. Ten proces jest stochastyczny (losowy). Kontroluj stopień losowości dozwolony w tym procesie dekodowania, ustawiając temperaturę. Temperatura o wartości 0 oznacza, że wybierane są tylko najbardziej prawdopodobne tokeny i nie ma losowości. Z kolei wysoka temperatura wprawia wysoki stopień losowości do tokenów wybranych przez model, co prowadzi do bardziej nieoczekiwanych i zaskakujących odpowiedzi modelu.

Więcej informacji