Sobre modelos generativos

Modelos de inteligência artificial (IA) generativa, como a família Gemini de são capazes de criar conteúdo a partir de diversos tipos de entrada de dados, incluindo como textos, imagens e áudio. No nível mais básico, esses modelos operam como aplicativos sofisticados de preenchimento automático. Texto de entrada fornecido ("Você pode liderar um cavalo para a água"), um modelo generativo pode prever que o texto de saída estatisticamente propensas a seguir ("mas você não pode beber"), com base em e padrões aprendidos com os dados de treinamento. É possível usar essa propriedade básica de modelos generativos para diversas aplicações:

  • Gere uma escrita criativa, como poesias, contos, metáforas e postagens de blog
  • Converter dados estruturados em texto de formato livre
  • Extrair e resumir informações de textos de formato livre
  • Gerar código
  • Traduzir idiomas

O uso de modelos generativos para criar esses recursos não requer nenhuma máquina de machine learning (ML). Você não precisa coletar um grande conjunto de dados ou treinar um modelo de machine learning. Para começar seu primeiro protótipo, basta descrever o que você quer que o modelo faça em poucas frases.

Os modelos generativos que lidam apenas com entrada e saída de texto também são conhecidos como modelos de linguagem grandes (LLMs). A família de modelos Gemini pode processar mais do que os dados de texto e, embora possam desempenhar as funções de um LLM, são também conhecidos como modelos generativos.

Aplicativos de exemplo

Os exemplos a seguir mostram entradas de texto típicas e saídas de uma um modelo generativo.

Gerar um poema

Entrada do usuário: Write me a four-line poem about puppies and Android phones. Make sure it rhymes.

Saída do modelo:

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

Gerar uma lista

Entrada do usuário: Generate a bulleted list of items I need to pack for a three-day camping trip.

Saída do modelo:

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

É possível usar modelos generativos para produzir vários tipos de comportamentos úteis, como isso é feito apenas criando o texto de entrada correto, também chamado de comando. A arte e a ciência de definir a redação certa para fazer com que os modelos generativos façam o que você quer é chamado de design de comando, também chamado de "engenharia de comando" simplesmente "solicitações").

Introdução ao design de comandos

A seção anterior mostrou alguns exemplos de comandos que contêm uma instrução, como "Escreva um poema". Esse tipo de instrução pode funcionar bem certos tipos de tarefas. No entanto, para outros aplicativos, outro comando chamada comandos few-shot (em inglês) pode funcionar melhor. Os comandos few-shot levam A vantagem é que modelos de linguagem grandes são incrivelmente bons em o reconhecimento e a replicação de padrões em dados de texto. A ideia é enviar ao modelo generativo um padrão de texto que ele aprende a completar. Por exemplo, digamos que você quer criar um aplicativo que tome como entrada um nome de país e produza seus capital. Aqui está um comando de texto criado para fazer exatamente isso:

Italy : Rome
France : Paris
Germany :

Nesta solicitação, você estabelece um padrão: [country] : [capital]. Se você enviar esse comando em um modelo de linguagem grande, ele vai preencher automaticamente o padrão e retornar algo como:

     Berlin
Turkey : Ankara
Greece : Athens

A resposta desse modelo pode parecer um pouco estranha. O modelo retornou não apenas capital da Alemanha (o último país no comando escrito à mão), mas também lista completa de pares de países e capitais adicionais. Isso ocorre porque o modelo generativo é “continuação do padrão”. Se você só está tentando fazer criar uma função que informe a capital de um país de entrada (“Alemanha : Berlim"), você provavelmente não se importa com nenhum texto do modelo é gerada depois de "Berlim". De fato, como designers de aplicativos, é recomendável para truncar esses exemplos irrelevantes. Além do mais, você provavelmente parametrizar a entrada, para que a Alemanha não seja uma string fixa, mas uma variável que o usuário final fornece:

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

Você acabou de escrever um comando few-shot para gerar capitais de países.

É possível realizar diversas tarefas com este comando "few-shot". modelo. Aqui está um comando few-shot com um formato um pouco diferente que converte Python para 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:

Ou pegue este "dicionário reverso" prompt de comando. Com uma definição, ele retorna palavra que se encaixe nessa definição:

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:

Talvez você tenha notado que o padrão exato desses comandos few-shot varia um pouco. Além de conter exemplos, fornecer instruções em seu os comandos são outra estratégia a ser considerada ao escrever seus próprios comandos, isso ajuda a comunicar sua intenção ao modelo.

Comandos versus desenvolvimento de software tradicional

Ao contrário dos softwares tradicionais, projetados com base em especificações cuidadosamente escritas, o comportamento dos modelos generativos é amplamente opaco, mesmo para os treinadores do modelo. Como resultado, muitas vezes não é possível prever com antecedência que tipos de estruturas de comandos funcionam melhor para um modelo específico. Além disso, o comportamento de um é determinado em grande parte pelos dados de treinamento e, como os modelos são continuamente ajustados em novos conjuntos de dados, às vezes o modelo muda o suficiente para que inadvertidamente, altera quais estruturas de comando funcionam melhor. O que isso significa para Experimento Teste diferentes formatos de comando.

Parâmetros do modelo

Cada comando que você envia ao modelo inclui valores de parâmetros que controlam como o modelo gera uma resposta. O modelo pode gerar diferentes resultados para diferentes valores de parâmetros. Os parâmetros de modelo mais comuns são:

  1. Máximo de tokens de saída: especifica o número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 correspondem a aproximadamente 60 a 80 palavras.

  2. Temperatura:a temperatura controla o grau de aleatoriedade no token A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. Temperaturas mais baixas são boas para comandos que exigem uma resposta mais determinista ou menos aberta, enquanto temperaturas mais altas podem gerar resultados mais diversos ou criativos. Um temperatura 0 é determinista, o que significa que a maior probabilidade é sempre selecionada.

  3. topK:o parâmetro topK muda a forma como o modelo seleciona tokens para saída. topK de 1 significa que o token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto topK significa que o próximo token é selecionado entre os três mais prováveis usando a temperatura. Para cada etapa da seleção de tokens, topK tokens com as maiores probabilidades são amostrados. Em seguida, os tokens são são filtrados com base em topP com o token final selecionado usando por amostragem de temperatura.

  4. topP:o parâmetro topP muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados do mais ao menos provável até a soma de as probabilidades deles são iguais ao valor de topP. Por exemplo, se os tokens A, B, e C têm probabilidade de 0,3, 0,2 e 0,1, e o valor de topP é 0,5, o modelo selecionará A ou B como o próximo token usando e excluir C como candidato. O valor padrão de topP é 0,95.

  5. stop_sequences:defina uma sequência de paradas como instrui o modelo a parar de gerar conteúdo. Uma sequência de paradas pode ser qualquer ou sequência de caracteres. Tente evitar uma sequência de caracteres que pode aparecer no conteúdo gerado.

Tipos de comandos

Dependendo do nível de informações contextuais contidas neles, os comandos são podem ser classificadas em três tipos.

Comandos zero-shot

Esses comandos não contêm exemplos para o modelo replicar. Tiro zero basicamente, mostram a capacidade do modelo de concluir o comando exemplos ou informações adicionais. Significa que o modelo precisa confiar conhecimento prévio para gerar uma resposta plausível.

Estes são alguns padrões de comandos zero-shot usados com frequência:

  • Conteúdo das instruções
<Overall instruction>
<Content to operate on>

Por exemplo,

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.
  • Instruções-conteúdo-instrução
<Overall instruction or context setting>
<Content to operate on>
<Final instruction>

Por exemplo,

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.
  • Continuação. Às vezes, é possível fazer com que o modelo continue o texto sem instruções. Por exemplo, este é um comando zero-shot em que o modelo pretende dar continuidade à contribuição fornecida:
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow

Usar os comandos zero-shot para gerar formatos de texto criativo, como poemas, códigos roteiros, peças musicais, e-mail ou cartas.

Comandos one-shot

Esses comandos fornecem ao modelo um único exemplo para replicar e continuar o padrão. Isso permite a geração de respostas previsíveis dos um modelo de machine learning.

Por exemplo, é possível gerar combinações de comida como:

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

Comandos few-shot

Esses comandos fornecem ao modelo vários exemplos para replicar. Usar comandos few-shot para concluir tarefas complicadas, como sintetizar dados com base em um padrão.

Um exemplo de comando pode ser:

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"}

Em segundo plano os modelos generativos

Esta seção visa responder à pergunta: Há aleatoriedade na análise dos modelos respostas ou são deterministas?

A resposta é sim para as duas. Quando você solicita um modelo generativo, um texto resposta é gerada em duas etapas. Na primeira etapa, o modelo generativo processa o comando de entrada e gera uma distribuição de probabilidade sobre possíveis tokens (palavras) que podem vir a seguir. Por exemplo, se você solicitar com o texto de entrada "The dog jump over the ... ", o modelo generativo vai produzir uma matriz de prováveis próximas palavras:

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

Esse processo é determinista; um modelo generativo vai produzir essa mesma sempre que o mesmo comando é inserido.

Na segunda etapa, o modelo generativo converte essas distribuições respostas de texto reais por meio de uma das várias estratégias de decodificação. Um simples a estratégia de decodificação pode selecionar o token mais provável em cada etapa do tempo. Isso processo seria sempre determinista. No entanto, você pode optar por gerar uma resposta por amostragem aleatória sobre a distribuição retornada pelo um modelo de machine learning. Esse processo seria estocástico (aleatório). Controle o grau de aleatoriedade permitida neste processo de decodificação definindo a temperatura. Um a temperatura 0 significa que apenas os tokens mais prováveis serão selecionados e não aleatoriedade. Por outro lado, uma temperatura alta injeta um alto grau de aleatoriedade aos tokens selecionados pelo modelo, levando a resultados as respostas do modelo.

Leitura adicional

  • Agora que você entende melhor os comandos e modelos generativos, tente escrever seus próprios comandos usando Google AI Studio
  • Consulte as Diretrizes de comandos para saber mais mais sobre as práticas recomendadas para criar comandos.