Zero-Shot Prompting
Grandes modelos de linguagem (LLMs) exigem treinamentos muito longos e computacionalmente caros. Mas, para compensar o investimento, eles apresentam capacidades poderosas e até surpreendentes após serem bem treinados. Uma das técnicas usadas para verificar essas habilidades se chama zero-shot prompting.
Zero-shot prompting é uma técnica em processamento de linguagem natural (NLP). Ela se refere à exposição de modelos de linguagem a solicitações que não fazem parte de seus treinamentos. Essa técnica é comumente empregada com LLMs.
Prompts do tipo zero-shot são usados para verificar se os LLMs conseguem funcionar conforme o desejado sem terem sido treinados exatamente para a tarefa testada. Em poucas palavras, esses prompts são uma forma de verificar se os LLMs podem generalizar. A solicitação zero-shot permite que os modelos lidem com uma ampla gama de tarefas sem exigir dados de treinamento específicos para cada uma.
Um exemplo de zero-shot prompting poderia ser pedir a um LLM como ChatGPT para preparar um procedimento para um experimento científico sem ele ter sido previamente treinado para essa tarefa. Esse tipo de solicitação foi recentemente usado para avaliar o desempenho de vários LLMs famosos.
Além da capacidade de generalização de um LLM, o sucesso de uma solicitação zero-shot depende geralmente de sua qualidade. Ela deve descrever a tarefa concisamente. Em consequência, pode ser um desafio criar prompts eficazes que comuniquem claramente a tarefa desejada ao modelo.
Zero-Shot Learning – um conceito relacionado
Outro conceito que tem ganhado popularidade e está relacionado ao zero-shot prompting é o zero-shot learning.
Zero-shot prompting e zero-shot learning são conceitos intimamente relacionados, muitas vezes usados de forma intercambiável. Ambos envolvem a execução de tarefas sem dados específicos de treinamento. Além disso, ambos dependem do conhecimento e compreensão geral do modelo. Mas há uma diferença sutil entre eles.
Zero-shot prompting é uma técnica específica dentro de zero-shot learning que se aplica apenas a modelos de linguagem.
Já zero-shot learning é um conceito mais geral. Ele se refere à capacidade de um modelo de machine learning para executar uma tarefa sem ter sido exposto a nenhum exemplo de treinamento específico para ela. O modelo depende de seu conhecimento geral e compreensão do mundo para fazer previsões ou classificações.
Zero-Shot Prompting em Ação
Na plataforma Hugging Face, existem vários modelos que podem ser usados para tarefas com zero-shot learning e zero-shot prompting para quem tiver interesse. Veja um exemplo abaixo:
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/mDeBERTa-v3-base-mnli-xnli")
sequence_to_classify = "Esse texto fala sobre um conceito novo de modelos de linguagem em IA."
candidate_labels=["educação", "tecnologia", "negócios"]
output = classifier(sequence_to_classify, candidate_labels, multi_label=False)
print(output)
#{'sequence': 'Esse texto fala sobre um conceito novo de modelos de linguagem em IA.', 'labels': ['tecnologia', 'educação', 'negócios'], 'scores': [0.5836734175682068, 0.2594112455844879, 0.15691536664962769]}
Nesse exemplo, um modelo da familia BERT é utilizado para uma tarefa de classificação zero-shot. Este modelo pode realizar inferência de linguagem natural em 100 idiomas. Ele é adequado para classificação multilíngue zero-shot. Como mostrado no exemplo, ele classifica textos em português corretamente sem ter sido diretamente treinado. Para isso, é preciso apresentar um texto para o modelo classificar com algumas classes como sugestões.
Um bom modelo como o mostrado acima consegue classificar corretamente o texto sem nenhum treino prévio para essa tarefa específica.
Além de modelos de linguagem, a plataforma Hugging Face conta com modelos com zero-shot learning para várias tarefas de visão computacional.