Illustrazione dell’apprendimento per rinforzo da feedback umano (RLHF)

Illustrazione di RLHF

Questo articolo è stato tradotto in cinese semplificato 简体中文 e vietnamita đọc tiếng việt . Interessato a tradurre in un’altra lingua? Contatta Nathan su huggingface.co .

I modelli di linguaggio hanno dimostrato capacità impressionanti negli ultimi anni generando testi diversi e convincenti a partire da input umani. Tuttavia, definire cosa renda un testo “buono” è intrinsecamente difficile in quanto è soggettivo e dipende dal contesto. Ci sono molte applicazioni, come la scrittura di storie in cui si desidera creatività, pezzi di testo informativo che dovrebbero essere veritieri o frammenti di codice che devono essere eseguibili.

Scrivere una funzione di perdita per catturare queste caratteristiche sembra inattuabile e la maggior parte dei modelli di linguaggio sono ancora addestrati con una semplice perdita di previsione del token successivo (ad esempio, entropia incrociata). Per compensare le limitazioni della perdita stessa, le persone definiscono metriche che sono progettate per catturare meglio le preferenze umane, come BLEU o ROUGE. Pur essendo più adatte della funzione di perdita stessa per misurare le prestazioni, queste metriche confrontano semplicemente il testo generato con riferimenti utilizzando regole semplici e sono quindi limitate. Non sarebbe fantastico se usassimo il feedback umano per il testo generato come misura delle prestazioni o se andassimo ancora un passo avanti e usassimo quel feedback come perdita per ottimizzare il modello? Questa è l’idea del Reinforcement Learning from Human Feedback (RLHF); utilizzare metodi di apprendimento per rinforzo per ottimizzare direttamente un modello di linguaggio con il feedback umano. RLHF ha permesso ai modelli di linguaggio di iniziare ad allineare un modello addestrato su un corpus generale di dati testuali a quello dei complessi valori umani.

Il successo più recente di RLHF è stato il suo utilizzo in ChatGPT . Dato l’impressionante capacità di ChatGPT, gli abbiamo chiesto di spiegarci RLHF:

Si comporta sorprendentemente bene, ma non copre tutto. Colmeremo quelle lacune!

Il reinforcement learning dal feedback umano (noto anche come RL dalle preferenze umane) è un concetto impegnativo perché coinvolge un processo di addestramento a più modelli e diverse fasi di implementazione. In questo post del blog, suddivideremo il processo di addestramento in tre fasi principali:

  1. Preallenamento di un modello di linguaggio (LM),
  2. raccolta dati e addestramento di un modello di ricompensa e
  3. aggiustamento fine del LM con il reinforcement learning.

Per iniziare, vedremo come vengono preallenate i modelli di linguaggio.

Preallenamento dei modelli di linguaggio

Come punto di partenza, RLHF utilizza un modello di linguaggio che è già stato preallentato con gli obiettivi classici di preallenamento (vedi questo post del blog per ulteriori dettagli). OpenAI ha utilizzato una versione più piccola di GPT-3 per il suo primo modello RLHF popolare, InstructGPT. Anthropic ha utilizzato modelli trasformatore da 10 milioni a 52 miliardi di parametri addestrati per questo compito. DeepMind ha utilizzato il loro modello Gopher con 280 miliardi di parametri.

Questo modello iniziale può anche essere sintonizzato ulteriormente su testo o condizioni aggiuntivi, ma non è necessario. Ad esempio, OpenAI ha sintonizzato ulteriormente il testo generato dall’umanità che era “preferibile” e Anthropic ha generato il loro modello LM iniziale per RLHF distillando un LM originale su indizi di contesto per i loro criteri “utili, onesti e innocui”. Queste sono entrambe fonti di ciò che io chiamo dati costosi e arricchiti, ma non è una tecnica richiesta per capire RLHF.

In generale, non c’è una risposta chiara su “quale modello” sia il migliore come punto di partenza per RLHF. Questo sarà un tema comune in questo blog: lo spazio di progettazione delle opzioni nell’addestramento RLHF non è stato esplorato approfonditamente.

Successivamente, con un modello di linguaggio, è necessario generare dati per addestrare un modello di ricompensa , che integra le preferenze umane nel sistema.

Addestramento del modello di ricompensa

Generare un modello di ricompensa (RM, anche chiamato modello di preferenza) calibrato con le preferenze umane è il punto di partenza della ricerca relativamente nuova in RLHF. L’obiettivo sottostante è ottenere un modello o un sistema che riceva una sequenza di testo e restituisca una ricompensa scalare che dovrebbe rappresentare numericamente la preferenza umana. Il sistema può essere un LM end-to-end o un sistema modulare che restituisce una ricompensa (ad esempio, un modello classifica le uscite e il ranking viene convertito in una ricompensa). L’output che è una ricompensa scalare è cruciale per integrare successivamente in modo trasparente gli algoritmi RL esistenti nel processo RLHF.

Questi LMs per la modellazione del reward possono essere sia un altro LM sintonizzato o un LM addestrato da zero sui dati delle preferenze. Ad esempio, Anthropic utilizza un metodo specializzato di sintonizzazione per inizializzare questi modelli dopo il preaddestramento (preaddestramento del modello delle preferenze, PMP) perché hanno scoperto che è più efficiente in termini di campioni rispetto alla sintonizzazione, ma nessuna variante della modellazione del reward è considerata la scelta migliore oggi.

Il dataset di addestramento di coppie di generazione di prompt per il RM viene generato campionando un insieme di prompt da un dataset predefinito (i dati di Anthropic generati principalmente con uno strumento di chat su Amazon Mechanical Turk sono disponibili su Hub, e OpenAI ha utilizzato prompt inviati dagli utenti all’API GPT). I prompt vengono passati attraverso il modello di linguaggio iniziale per generare nuovo testo.

Sono utilizzati annotatori umani per classificare i risultati del testo generato dal LM. Inizialmente si potrebbe pensare che gli esseri umani dovrebbero applicare un punteggio scalare direttamente a ciascun pezzo di testo per generare un modello di reward, ma ciò è difficile da fare nella pratica. I diversi valori degli esseri umani fanno sì che questi punteggi siano non calibrati e rumorosi. Invece, vengono utilizzate classifiche per confrontare le uscite di più modelli e creare un dataset molto migliore regolarizzato.

Ci sono diversi metodi per classificare il testo. Un metodo che ha avuto successo è quello di far confrontare agli utenti il testo generato da due modelli di linguaggio condizionati allo stesso prompt. Confrontando le uscite dei modelli in confronti diretti, è possibile utilizzare un sistema Elo per generare una classifica dei modelli e delle uscite relative tra loro. Questi diversi metodi di classificazione vengono normalizzati in un segnale di reward scalare per l’addestramento.

Un aspetto interessante di questo processo è che i sistemi RLHF di successo finora hanno utilizzato modelli di linguaggio di reward di dimensioni variabili rispetto alla generazione di testo (ad es. OpenAI 175B LM, modello di reward da 6B, Anthropic ha utilizzato LM e modelli di reward da 10B a 52B, DeepMind utilizza modelli Chinchilla da 70B sia per LM che per reward). L’intuizione sarebbe che questi modelli di preferenza debbano avere una capacità simile a quella di comprendere il testo loro fornito come un modello avrebbe bisogno per generare detto testo.

A questo punto nel sistema RLHF, abbiamo un modello di linguaggio iniziale che può essere utilizzato per generare testo e un modello di preferenza che prende in input qualsiasi testo e gli assegna un punteggio su come gli umani lo percepiscono. Successivamente, utilizziamo apprendimento per rinforzo (RL) per ottimizzare il modello di linguaggio originale rispetto al modello di reward.

Sintonizzazione fine con RL

Addestrare un modello di linguaggio con l’apprendimento per rinforzo era, per molto tempo, qualcosa che le persone avrebbero pensato come impossibile sia per ragioni ingegneristiche che algoritmiche. Quello a cui sembra che molte organizzazioni siano riuscite è la sintonizzazione fine di alcuni o tutti i parametri di una copia del LM iniziale con un algoritmo RL a gradienti di politica proximal (PPO). I parametri del LM sono congelati perché sintonizzare un modello con 10B o più parametri è proibitivamente costoso (per maggiori dettagli, vedere Low-Rank Adaptation (LoRA) per LM o il modello Sparrow di DeepMind). PPO è esistito per un periodo relativamente lungo – ci sono tonnellate di guide su come funziona. La maturità relativa di questo metodo lo ha reso una scelta favorevole per la scalabilità alla nuova applicazione di addestramento distribuito per RLHF. Si scopre che molti dei progressi principali di RL per RLHF hanno riguardato come aggiornare un modello così grande con un algoritmo familiare (ne parleremo più avanti).

Formuliamo prima questa attività di sintonizzazione fine come un problema RL. Inizialmente, la politica è un modello di linguaggio che prende in input un prompt e restituisce una sequenza di testo (o solo distribuzioni di probabilità sul testo). Lo spazio delle azioni di questa politica è costituito da tutti i token corrispondenti al vocabolario del modello di linguaggio (spesso nell’ordine dei 50.000 token) e lo spazio delle osservazioni è la distribuzione delle possibili sequenze di token di input, che è anch’essa piuttosto ampia dato l’utilizzo precedente di RL (la dimensione è approssimativamente uguale alla dimensione del vocabolario ^ lunghezza della sequenza di token di input). La funzione di reward è una combinazione del modello di preferenza e di un vincolo sullo spostamento della politica.

La funzione di reward è dove il sistema combina tutti i modelli che abbiamo discusso in un unico processo RLHF. Dato un prompt, x, dal dataset, il testo y viene generato dall’iterazione corrente della politica sintonizzata. Concatenato con il prompt originale, tale testo viene passato al modello di preferenza, che restituisce una nozione scalare di “preferibilità”, r θ r_\theta r θ ​ . Inoltre, le distribuzioni di probabilità per token dalla politica RL vengono confrontate con quelle dal modello iniziale per calcolare una penalità sulla differenza tra loro. In diversi articoli di OpenAI, Anthropic e DeepMind, questa penalità è stata progettata come una versione scalata della divergenza di Kullback-Leibler (KL) tra queste sequenze di distribuzioni su token, r KL r_\text{KL} r KL ​ . Il termine della divergenza KL penalizza la politica RL per spostarsi notevolmente lontano dal modello preaddestrato iniziale con ogni batch di addestramento, il che può essere utile per assicurarsi che il modello produca frammenti di testo ragionevolmente coerenti. Senza questa penalità, l’ottimizzazione può iniziare a generare testo che è assurdo ma inganna il modello di reward per dare un alto reward. In pratica, la divergenza KL viene approssimata campionando entrambe le distribuzioni (spiegato da John Schulman qui ). Il reward finale inviato alla regola di aggiornamento RL è r = r θ − λ r KL r = r_\theta – \lambda r_\text{KL} r = r θ ​ − λ r KL ​ .

Alcuni sistemi RLHF hanno aggiunto termini aggiuntivi alla funzione di ricompensa. Ad esempio, OpenAI ha sperimentato con successo su InstructGPT mescolando gradienti di pre-training aggiuntivi (dall’insieme di annotazioni umane) nella regola di aggiornamento per PPO. È probabile che, man mano che RLHF viene ulteriormente studiato, la formulazione di questa funzione di ricompensa continuerà a evolversi.

Infine, la regola di aggiornamento è l’aggiornamento dei parametri da PPO che massimizza le metriche di ricompensa nel batch corrente di dati (PPO è on-policy, il che significa che i parametri vengono aggiornati solo con il batch corrente di coppie prompt-generazione). PPO è un algoritmo di ottimizzazione con regione di fiducia che utilizza vincoli sul gradiente per garantire che il passo di aggiornamento non destabilizzi il processo di apprendimento. DeepMind ha utilizzato una configurazione di ricompensa simile per Gopher, ma ha utilizzato l’attore-critico di vantaggio sincrono (A2C) per ottimizzare i gradienti, che è notevolmente diverso ma non è stato riprodotto esternamente.

Nota tecnica: il diagramma sopra sembra suggerire che entrambi i modelli generino risposte diverse allo stesso prompt, ma quello che accade realmente è che la politica RL genera testo e quel testo viene inserito nel modello iniziale per produrre le relative probabilità per la penalità KL.

Opzionalmente, RLHF può continuare da questo punto aggiornando iterativamente il modello di ricompensa e la politica insieme. Man mano che la politica RL si aggiorna, gli utenti possono continuare a classificare queste uscite rispetto alle versioni precedenti del modello. La maggior parte degli articoli deve ancora discutere l’implementazione di questa operazione, poiché la modalità di distribuzione necessaria per raccogliere questo tipo di dati funziona solo per agenti di dialogo con accesso a una base di utenti impegnati. Anthropic discute questa opzione come RLHF online iterato (vedi l’articolo originale), in cui le iterazioni della politica sono incluse nel sistema di classificazione ELO tra i modelli. Questo introduce dinamiche complesse dell’evoluzione della politica e del modello di ricompensa, che rappresentano una questione di ricerca complessa e aperta.

Il primo codice rilasciato per eseguire RLHF su LMs è stato di OpenAI in TensorFlow nel 2019.

Oggi, ci sono già alcuni repository attivi per RLHF in PyTorch che sono nati da questo. I repository principali sono Transformers Reinforcement Learning (TRL), TRLX che originariamente era un fork di TRL e Reinforcement Learning for Language models (RL4LMs).

TRL è progettato per l’ottimizzazione fine-tuning di LMs preaddestrati nell’ecosistema Hugging Face con PPO. TRLX è un fork ampliato di TRL costruito da CarperAI per gestire modelli più grandi per l’addestramento online e offline. Al momento, TRLX ha un’API in grado di RLHF pronto per la produzione con PPO e Implicit Language Q-Learning ILQL alle scale richieste per il deployment di LLM (ad esempio, 33 miliardi di parametri). Le future versioni di TRLX permetteranno modelli di linguaggio fino a 200 miliardi di parametri. Di conseguenza, l’interfacciamento con TRLX è ottimizzato per ingegneri di machine learning con esperienza a questa scala.

RL4LMs offre blocchi di costruzione per l’ottimizzazione fine-tuning e la valutazione di LLMs con una vasta gamma di algoritmi RL (PPO, NLPO, A2C e TRPO), funzioni di ricompensa e metriche. Inoltre, la libreria è facilmente personalizzabile, il che consente l’addestramento di qualsiasi LM basato su encoder-decoder o encoder transformer su qualsiasi funzione di ricompensa specificata dall’utente. In particolare, è stato ampiamente testato e sottoposto a benchmark su una vasta gamma di compiti in recenti lavori fino a 2000 esperimenti, evidenziando diverse intuizioni pratiche sulla comparazione del budget di dati (dimostrazioni esperte vs. modellazione di ricompensa), gestione dell’hacking della ricompensa e delle instabilità di addestramento, ecc. I piani attuali di RL4LMs includono l’addestramento distribuito di modelli più grandi e nuovi algoritmi RL.

Sia TRLX che RL4LMs sono in fase di sviluppo avanzato, quindi ci si aspettano presto ulteriori funzionalità oltre a queste.

C’è un ampio dataset creato da Anthropic disponibile su Hub.

Anche se queste tecniche sono estremamente promettenti e di grande impatto e hanno attirato l’attenzione dei più importanti laboratori di ricerca in AI, ci sono ancora limitazioni chiare. I modelli, pur essendo migliori, possono comunque produrre testo dannoso o inesatto dal punto di vista fattuale senza alcuna incertezza. Questa imperfezione rappresenta una sfida a lungo termine e una motivazione per RLHF: operare in un dominio di problema intrinsecamente umano significa che non ci sarà mai una chiara linea finale da superare per etichettare il modello come completo.

Quando si distribuisce un sistema che utilizza RLHF, raccogliere i dati di preferenza umana è piuttosto costoso a causa dell’integrazione diretta di altri lavoratori umani al di fuori del ciclo di addestramento. Le prestazioni di RLHF sono tanto buone quanto la qualità delle sue annotazioni umane, che assumono due varianti: testo generato dall’uomo, come il fine-tuning dell’LM iniziale in InstructGPT, e etichette di preferenze umane tra le uscite del modello.

La generazione di testo umano ben scritto in risposta a domande specifiche è molto costosa, poiché spesso richiede l’assunzione di personale a tempo parziale (anziché poter fare affidamento sugli utenti del prodotto o su crowdsourcing). Fortunatamente, la scala dei dati utilizzati per addestrare il modello di ricompensa per la maggior parte delle applicazioni di RLHF (~50k campioni di preferenza etichettati) non è così costosa. Tuttavia, è comunque un costo più elevato di quanto i laboratori accademici probabilmente sarebbero in grado di permettersi. Attualmente, esiste solo un dataset su larga scala per RLHF su un modello di linguaggio generale (da Anthropic) e un paio di dataset più piccoli specifici per compiti (come i dati di riepilogo da OpenAI). La seconda sfida dei dati per RLHF è che gli annotatori umani spesso possono essere in disaccordo, aggiungendo una considerevole varianza potenziale ai dati di addestramento senza una verità fondamentale.

Con queste limitazioni, ampie porzioni di opzioni di progettazione inesplorate potrebbero ancora consentire a RLHF di compiere progressi significativi. Molte di queste rientrano nel campo del miglioramento dell’ottimizzatore RL. PPO è un algoritmo relativamente vecchio, ma non ci sono motivi strutturali per cui altri algoritmi non potrebbero offrire vantaggi e permutazioni sul flusso di lavoro RLHF esistente. Un grande costo della fase di feedback per il raffinamento della politica del LM è che ogni pezzo di testo generato dalla politica deve essere valutato sul modello di ricompensa (poiché agisce come parte dell’ambiente nel framework RL standard). Per evitare questi costosi passaggi in avanti di un grande modello, potrebbe essere utilizzato RL offline come ottimizzatore di politica. Recentemente sono emersi nuovi algoritmi, come il Q-learning implicito del linguaggio (ILQL) [Talk su ILQL presso CarperAI], che si adattano particolarmente bene a questo tipo di ottimizzazione. Altri trade-off fondamentali nel processo di RL, come il bilanciamento tra esplorazione e sfruttamento, non sono stati nemmeno documentati. Esplorare queste direzioni svilupperebbe almeno una comprensione sostanziale di come funzioni RLHF e, se non altro, fornirebbe prestazioni migliorate.

Abbiamo ospitato una lezione martedì 13 dicembre 2022 che approfondisce questo post; puoi guardarla qui!

Ulteriori letture

Ecco un elenco dei lavori più diffusi su RLHF fino ad oggi. Il campo è stato recentemente popolarizzato con l’emergere di DeepRL (intorno al 2017) ed è diventato uno studio più ampio delle applicazioni di LLM da molte grandi aziende tecnologiche. Ecco alcuni lavori su RLHF che precedono il focus sul LM:

  • TAMER: Addestramento di un agente manualmente tramite rinforzo valutativo (Knox and Stone 2008): Proposto un agente appreso in cui gli esseri umani fornivano punteggi sulle azioni intraprese iterativamente per apprendere un modello di ricompensa.
  • Apprendimento interattivo dal feedback umano dipendente dalla policy (MacGlashan et al. 2017): Proposto un algoritmo attore-critico, COACH, in cui il feedback umano (sia positivo che negativo) viene utilizzato per regolare la funzione di vantaggio.
  • Apprendimento profondo del rinforzo da preferenze umane (Christiano et al. 2017): RLHF applicato alle preferenze tra traiettorie Atari.
  • Deep TAMER: Plasmare l’agente interattivo in spazi di stato ad alta dimensione (Warnell et al. 2018): Estende il framework TAMER in cui viene utilizzata una rete neurale profonda per modellare la previsione della ricompensa.

Ecco anche una panoramica dell’insieme crescente di lavori “chiave” che mostrano le prestazioni di RLHF per i LM:

  • Perfezionamento dei modelli di linguaggio da preferenze umane (Zieglar et al. 2019): Un lavoro iniziale che studia l’impatto dell’apprendimento della ricompensa su quattro compiti specifici.
  • Apprendimento per riepilogare con feedback umano (Stiennon et al., 2020): RLHF applicato al compito di riepilogare il testo. Inoltre, Riepilogando ricorsivamente libri con feedback umano (OpenAI Alignment Team 2021), lavoro di approfondimento per riepilogare libri.
  • WebGPT: Navigazione assistita dal browser con feedback umano (OpenAI, 2021): Utilizzare RLHF per addestrare un agente a navigare sul web.
  • InstructGPT: Addestramento di modelli di linguaggio per seguire istruzioni con feedback umano (OpenAI Alignment Team 2022): RLHF applicato a un modello di linguaggio generale [Articolo sul blog su InstructGPT].
  • GopherCite: Insegnare ai modelli di linguaggio a supportare risposte con citazioni verificate (Menick et al. 2022): Allenare un LM con RLHF per fornire risposte con citazioni specifiche.
  • Sparrow: Miglioramento dell’allineamento degli agenti di dialogo tramite giudizi umani mirati (Glaese et al. 2022): Perfezionamento di un agente di dialogo con RLHF.
  • ChatGPT: Ottimizzazione dei modelli di linguaggio per il dialogo (OpenAI 2022): Addestramento di un LM con RLHF per un uso appropriato come chatbot universale.
  • Leggi di scala per sovraottimizzazione del modello di ricompensa (Gao et al. 2022): studia le proprietà di scala del modello di preferenza appreso in RLHF.
  • Addestrare un assistente utile e innocuo con apprendimento tramite rinforzo dal feedback umano (Anthropic, 2022): Una documentazione dettagliata dell’addestramento di un assistente LM con RLHF.
  • Red Teaming Language Models per ridurre i danni: metodi, comportamenti di scaling e lezioni apprese (Ganguli et al. 2022): Una documentazione dettagliata degli sforzi per “scoprire, misurare e cercare di ridurre le produzioni potenzialmente dannose [dei modelli di linguaggio].”
  • Pianificazione dinamica in dialogo a fine aperto utilizzando apprendimento per rinforzo (Cohen at al. 2022): Utilizzare RL per migliorare la capacità conversazionale di un agente di dialogo a fine aperto.
  • Il reinforcement learning è (non) per l’elaborazione del linguaggio naturale?: Benchmark, baselines e blocchi di costruzione per l’ottimizzazione della politica di linguaggio naturale (Ramamurthy e Ammanabrolu et al. 2022): Discute lo spazio di progettazione di strumenti open-source in RLHF e propone un nuovo algoritmo NLPO (Natural Language Policy Optimization) come alternativa a PPO.

Il campo è la convergenza di molteplici settori, quindi è possibile trovare risorse anche in altre aree:

  • Apprendimento continuo delle istruzioni (Kojima et al. 2021, Suhr e Artzi 2022) o apprendimento tramite bandit dal feedback degli utenti (Sokolov et al. 2016, Gao et al. 2022)
  • Storia precedente sull’uso di altri algoritmi di RL per la generazione di testo (non tutti con preferenze umane), come le reti neurali ricorrenti (Ranzato et al. 2015), un algoritmo attore-critico per la previsione del testo (Bahdanau et al. 2016) o un lavoro precedente che aggiunge preferenze umane a questo framework (Nguyen et al. 2017).

Citazione: Se hai trovato utile questo lavoro per la tua attività accademica, ti preghiamo di considerare la citazione del nostro lavoro, nel testo:

Lambert, et al., "Illustrating Reinforcement Learning from Human Feedback (RLHF)", Hugging Face Blog, 2022.

Citazione BibTeX:

@article{lambert2022illustrating,
  author = {Lambert, Nathan and Castricato, Louis and von Werra, Leandro and Havrilla, Alex},
  title = {Illustrating Reinforcement Learning from Human Feedback (RLHF)},
  journal = {Hugging Face Blog},
  year = {2022},
  note = {https://huggingface.co/blog/rlhf},
}

Grazie a Robert Kirk per aver corretto alcuni errori di fatto riguardanti implementazioni specifiche di RLHF. Grazie a Peter Stone, Khanh X. Nguyen e Yoav Artzi per aver contribuito ad ampliare ulteriormente i lavori correlati nella storia.

Grazie a Stas Bekman per aver corretto alcuni errori di battitura o frasi confuse.

Grazie a Igor Kotenkov per aver segnalato un errore tecnico nel termine di penalità KL della procedura RLHF, nel suo diagramma e nella descrizione testuale.