Condividi tramite


Apprendimento zero-shot e few-shot

Questo articolo illustra l'apprendimento zero-shot e l'apprendimento few-shot per la progettazione di richieste in .NET, inclusi i casi d'uso principali.

Le prestazioni del modello GPT beneficiano della progettazione delle richieste, ovvero la pratica di fornire istruzioni ed esempi a un modello per perfezionarne l'output. L'apprendimento zero-shot e l'apprendimento few-shot sono tecniche che è possibile usare quando si forniscono esempi.

Con l'apprendimento zero-shot, si includono richieste ma non completamenti parola per parola. È possibile includere completamenti costituiti solo da segnali. L'apprendimento zero-shot si basa interamente sulle conoscenze esistenti del modello per generare risposte, riducendo così il numero di token creati e aiutando a controllare i costi. Tuttavia, l'apprendimento zero-shot non contribuisce alle conoscenze del modello.

Ecco un esempio di richiesta zero-shot che indica al modello di valutare l'input dell'utente per determinare quali tra quattro possibili finalità sia rappresentata dall'input e quindi precedere la risposta con "Intent: ".

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: 
""";

Con l'apprendimento few-shot, si includono richieste abbinate a completamenti parola per parola. Ciò significa che rispetto all'apprendimento zero-shot, l'apprendimento few-shot produce più token e fa sì che il modello aggiorni le proprie conoscenze, il che può rendere l’apprendimento few-shot più intensivo. Tuttavia, per gli stessi motivi, l'apprendimento few-shot aiuta anche il modello a produrre risposte più pertinenti.

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:
""";

Casi d'uso di apprendimento zero-shot

L'apprendimento zero-shot è la pratica di passare richieste non abbinate a completamenti parola per parola, che tuttavia possono essere abbinate a un segnale. Esistono due casi d'uso principali per l'apprendimento zero-shot:

  • Uso di LLM ottimizzati: poiché si basa sulla conoscenza preesistente del modello, l'apprendimento zero-shot non è intensivo a livello di risorse, ma funziona bene con set di dati di istruzioni già ottimizzati. Si potrebbe essere in grado di basarsi esclusivamente sull'apprendimento zero-shot e mantenere i costi relativamente bassi.
  • Stabilire linee di base per le prestazioni: l'apprendimento zero-shot consente di simulare le prestazioni dell'app per utenti reali. In questo modo, è possibile valutare vari aspetti delle prestazioni correnti del modello, ad esempio l'accuratezza o la precisione. In questo caso, si usa generalmente l'apprendimento zero-shot per stabilire una linea di base delle prestazioni e quindi si sperimenta con l'apprendimento few-shot per migliorare le prestazioni.

Casi d'uso di apprendimento few-shot

L'apprendimento few-shot è la pratica di passare richieste abbinate a completamenti parola per parola (richieste few-shot) per mostrare al modello come rispondere. A differenza dell'apprendimento zero-shot, l'apprendimento few-shot può contribuire alle conoscenze del modello. È anche possibile usare i propri set di dati per generare automaticamente richieste few-shot, eseguendo la generazione con recupero aumentato.

L'apprendimento few-shot ha due casi d'uso principali:

  • Ottimizzazione di un LLM: poiché può contribuire alle conoscenze del modello, l'apprendimento few-shot può migliorare le prestazioni di un modello. Fa anche in modo che il modello crei più token rispetto all'apprendimento zero-shot, il che può sul lungo andare diventare proibitivamente costoso o persino impossibile. Tuttavia, se l'LLM non è ancora ottimizzato, non si otterranno buone prestazioni con richieste zero-shot e sarà necessario l’apprendimento few-shot.
  • Correzione dei problemi di prestazioni: è possibile usare l'apprendimento few-shot come passo successivo all'apprendimento zero-shot. In questo caso, si usa l'apprendimento zero-shot per stabilire una linea di base delle prestazioni e quindi si sperimenta con l'apprendimento few-shot in base alle richieste zero-shot usate. In questo modo, è possibile contribuire alle conoscenze del modello dopo aver osservato come risponde attualmente, così da poter eseguire l'iterazione e migliorare le prestazioni riducendo al minimo il numero di token introdotti.

Precisazioni

  • L'apprendimento basato su esempi non è adatto per attività di ragionamento complesse. Tuttavia, l'aggiunta di istruzioni può essere utile per risolvere questo problema.
  • L'apprendimento few-shot richiede la creazione di richieste lunghe. Le richieste con un numero elevato di token possono aumentare calcolo e latenza. Generalmente, questo comporta un aumento dei costi. Esiste anche un limite alla lunghezza delle richieste.
  • Quando si usano diversi esempi, il modello può apprendere criteri falsi, ad esempio "Valutazioni positive sono due volte più probabili di valutazioni negative."