Sfruttare l’allineamento di LLM rendere l’AI più accessibile

Migliorare l'allineamento di LLM per rendere l'AI più accessibile

Nota dell’editore: Sinan Ozdemir è un relatore per ODSC West dal 30 ottobre al 2 novembre. Assicurati di dare un’occhiata al suo intervento, “Allineare Open-source LLMs utilizzando l’apprendimento per rinforzo dal feedback,” ci sarai!

Nel 2020, il mondo è stato introdotto al GPT-3 di OpenAI, una meraviglia nel campo dell’IA per molti. Tuttavia, non è stato fino a due anni dopo, nel 2022, quando OpenAI ha svelato la sua versione allineata alle istruzioni del GPT-3, opportunamente chiamata “InstructGPT”, che il suo pieno potenziale è stato messo in luce e il mondo ha cominciato a prestare attenzione. Quell’innovazione non è stata solo un balzo tecnologico per l’allineamento dell’IA; è stata una dimostrazione del potere dell’apprendimento per rinforzo nel rendere l’IA più accessibile a tutti.

Allineare le nostre aspettative

L’allineamento, ampiamente definito, è il processo di creare un sistema di intelligenza artificiale che si comporta in conformità con ciò che un essere umano desidera. L’allineamento non riguarda solo l’addestramento dell’IA a seguire istruzioni; riguarda anche la progettazione di un sistema che modella un modello di IA già potente in qualcosa di più utilizzabile e vantaggioso sia per gli utenti tecnicamente inclini che per chi ha bisogno solo di aiuto nella pianificazione di una festa di compleanno. È proprio questo aspetto dell’allineamento che ha democratizzato la magia dei Large Language Models (LLMs), consentendo a un pubblico più ampio di trarne valore.

Se l’allineamento è il cuore dell’usabilità dei LLM, cosa mantiene questo cuore in movimento? Ecco dove entra in gioco la complessa danza dell’apprendimento per rinforzo (RL). Sebbene il termine “allineamento” possa essere sinonimo di apprendimento per rinforzo per alcuni, c’è molto di più sotto la superficie. Catturare le sfaccettature multifacetate delle emozioni umane, dell’etica o dell’umorismo all’interno dei confini della previsione del token successivo è un compito colossale, e potenzialmente impossibile. Come si può programmare efficacemente la “neutralità” o il “comportamento etico” in una funzione di perdita? Si potrebbe sostenere che non si possa fare. È qui che l’apprendimento per rinforzo si sviluppa come un modo dinamico per modellare queste sfumature intricate senza codificarle rigidamente.

RLHF, acronimo di Reinforcement Learning from Human Feedback, è la tecnica originariamente utilizzata da OpenAI per allineare il loro modello InstructGPT ed è spesso discussa tra gli appassionati di IA come il principale modo per allineare i LLMs, ma è solo uno strumento tra molti per l’allineamento. Il principio fondamentale di RLHF ruota attorno all’ottenimento di feedback umano di alta qualità e utilizzarlo per dare ai LLMs feedback sul loro rendimento nel compito, nella speranza che l’IA si esprima in modo più user-friendly alla fine del ciclo.

Nel nostro lavoro quotidiano con i LLM, tuttavia, spesso non abbiamo bisogno che l’IA risponda a tutto, ma abbiamo bisogno che risolva i compiti pertinenti a noi/storie attinenti ai nostri affari/progetti. Nel nostro viaggio con RL, esploreremo approcci alternativi a RLHF in cui possiamo utilizzare altre forme di meccanismi di feedback che non si basano sulle preferenze umane.

Studio di caso – Allineamento FLAN-T5 per creare sommari più neutrali

Guardiamo un esempio di utilizzo di due classificatori di Hugging Face per migliorare la capacità del modello FLAN-T5 di scrivere sommari di articoli di notizie che siano sia grammaticalmente corretti che costantemente neutrali nello stile.

Il codice seguente definirà un feedback di ricompensa di questo tipo, utilizzando un classificatore di sentimenti pre-fine-tuned per ottenere i logit per la classe neutrale per ricompensare FLAN-T5 per parlare con un tono neutrale e punirlo altrimenti:

sentiment_pipeline = pipeline( 'text-classification', 'cardiffnlp/twitter-roberta-base-sentiment')def get_neutral_scores(texts):  scores = []  # la funzione_da_applicare='none' restituisce i logit che possono essere negativi  results = sentiment_pipeline(texts, function_to_apply='none', top_k=None)  for result in results:    for label in result:      if label['label'] == 'LABEL_1': # logit per la classe neutrale        scores.append(label['score'])    return scores>> get_neutral_scores(['hello', 'Ti amo!', 'Ti odio']) >> [0.85, -0.75, -0.57]

Possiamo utilizzare questo classificatore insieme a un altro per classificare la correttezza grammaticale di un testo per allineare il nostro modello FLAN-T5 per generare sommari come vogliamo che siano generati.

Il loop di apprendimento per rinforzo dal feedback assomiglia a qualcosa del genere:

  1. Dai a FLAN-T5 un batch di articoli di notizie da riassumere (prendendoli da https://huggingface.co/datasets/argilla/news-summary utilizzando solo gli articoli grezzi)
  2. Assegna una somma ponderata di ricompense da:
    1. Un modello CoLA (valutando la correttezza grammaticale) da textattack/roberta-base-CoLA
    2. Un modello di sentimento (valutando la neutralità) da cardiffnlp/twitter-roberta-base-sentiment 
  3. Usa le ricompense per aggiornare il modello FLAN-T5 utilizzando il pacchetto TRL, tenendo conto di quanto il modello aggiornato si sia discostato dai parametri originali
  4. Ripeti il processo

Ecco un esempio del ciclo di addestramento che creeremo al nostro workshop:

for epoch in tqdm(range(2)):  for batch in tqdm(ppo_trainer.dataloader):    #### prepend the summarize token    game_data["query"] = ['summarize: ' + b for b in batch["text"]]    #### get response from reference + current flan-t5    input_tensors = [_.squeeze() for _ in batch["input_ids"]]    # ....    for query in input_tensors:      response = ppo_trainer.generate(query.squeeze(), **generation_kwargs)      response_tensors.append(response.squeeze())            #### Reward system    game_data["response"] = [flan_t5_tokenizer.decode(...)    game_data['cola_scores'] = get_cola_scores(    game_data["clean_response"])    game_data['neutral_scores'] = get_neutral_scores(    game_data["clean_response"])    #### Run PPO training and log stats    stats = ppo_trainer.step(input_tensors, response_tensors, rewards)    stats['env/reward'] = np.mean([r.cpu().numpy() for r in rewards])    ppo_trainer.log_stats(stats, game_data, rewards)

Ho omesso diverse righe di questo ciclo per risparmiare spazio, ma naturalmente puoi partecipare al mio workshop per vedere il ciclo nella sua interezza!

I risultati

Dopo un paio di epoche di addestramento, il nostro FLAN-T5 inizia a mostrare segni di allineamento migliorato verso il nostro obiettivo di riassunti più corretti dal punto di vista grammaticale e neutrali. Ecco un esempio di come si presentano i diversi riassunti utilizzando i dati di convalida dell’insieme di dati:

Un esempio di FLAN-T5 prima e dopo l’apprendimento per rinforzo. Possiamo vedere che la versione del modello sintonizzata tramite RL utilizza parole come “announced” invece di termini come “scrapped”.

Eseguendo entrambi i nostri modelli (il FLAN-T5 di base non allineato e la nostra versione allineata) su tutto l’insieme di dati di convalida, si nota un aumento (seppur sottile) sia delle ricompense del nostro modello CoLA che del nostro modello di sentimento!

Il modello sta ottenendo ricompense maggiori dal nostro sistema e, a una verifica, c’è uno spostamento sfumato nella generazione dei riassunti. Tuttavia, le sue capacità di riassunto di base rimangono in gran parte coerenti con il modello di base.

Conclusioni

L’allineamento non riguarda solo gli strumenti o le metodologie per la raccolta dei dati e per far sì che i LLM rispondano a tutte le domande. Riguarda anche la comprensione di ciò che vogliamo effettivamente dai nostri LLM. L’obiettivo dell’allineamento, tuttavia, rimane saldo: creare LLM di moda il cui output risuoni con le sensibilità umane, rendendo l’AI non solo uno strumento per gli ingegneri, ma un compagno per tutti. Che tu sia un appassionato di AI o qualcuno che desidera avvicinarsi a questo mondo, qui c’è qualcosa per tutti. Unisciti a noi quest’anno a ODSC mentre attraversiamo insieme il paesaggio dell’allineamento LLM!

Riguardo all’autore/relatore di ODSC West:

Sinan Ozdemir è un matematico, scienziato dei dati, esperto di NLP, docente e autore di successo. Attualmente sto applicando la mia vasta conoscenza e esperienza in Intelligenza Artificiale e Large Language Models (LLMs) come fondatore e CTO di LoopGenius, trasformando il modo in cui gli imprenditori e le startup promuovono i loro prodotti e servizi.

Allo stesso tempo, fornisco servizi di consulenza in Intelligenza Artificiale e Large Language Models a Tola Capital, una società di investimento innovativa. Ha anche lavorato come autore di IA per Addison Wesley e Pearson, creando risorse complete che aiutano i professionisti a navigare nel complesso campo dell’IA e degli LLM.

In precedenza, è stato Direttore Data Science presso Directly, dove il suo lavoro ha influenzato significativamente la loro direzione strategica. Come membro ufficiale del Forbes Technology Council dal 2017 al 2021, ha condiviso le sue conoscenze su processi aziendali legati a IA, apprendimento automatico, NLP e tecnologie emergenti.