Generazione di testo di livello umano con la ricerca contrastiva in Transformers 🤗

'Generazione di testo umano con Transformers 🤗'


1. Introduzione:

La generazione di linguaggio naturale (cioè la generazione di testo) è una delle principali attività nell’elaborazione del linguaggio naturale (NLP). In questo blog, presentiamo il metodo di decodifica all’avanguardia, Ricerca Contrastiva, per la generazione di testo neurale. La ricerca contrastiva è stata proposta originariamente in “Un framework contrastivo per la generazione di testo neurale” [1] ([Articolo] [Implementazione ufficiale]) alla conferenza NeurIPS 2022. Inoltre, in questo lavoro successivo, “La ricerca contrastiva è ciò di cui hai bisogno per la generazione di testo neurale” [2] ([Articolo] [Implementazione ufficiale]), gli autori dimostrano ulteriormente che la ricerca contrastiva può generare testo di livello umano utilizzando modelli di linguaggio pre-addestrati in 16 lingue.

[Nota] Per gli utenti che non sono familiari con la generazione di testo, si prega di fare riferimento a questo post del blog per ulteriori dettagli.


La Ricerca Contrastiva è ora disponibile su 🤗 transformers, sia su PyTorch che su TensorFlow. Puoi interagire con gli esempi mostrati in questo post del blog utilizzando il tuo framework preferito in questo notebook di Colab, che è collegato in alto. Abbiamo anche creato questa fantastica demo che confronta direttamente la ricerca contrastiva con altri metodi di decodifica popolari (come la ricerca beam, il campionamento top-k [3] e il campionamento del nucleo [4]).


3. Installazione dell’Ambiente:

Prima di eseguire gli esperimenti nelle sezioni seguenti, installa la versione più aggiornata di transformers come segue:

pip install torch
pip install "transformers==4.24.0"

4. Problemi dei Metodi di Decodifica Esistenti:

I metodi di decodifica possono essere divisi in due categorie: (i) metodi deterministici e (ii) metodi stocastici. Discutiamoli entrambi!

4.1. Metodi Deterministici:

I metodi deterministici, come la ricerca greedy e la ricerca beam, generano testo selezionando la continuazione del testo con la probabilità più alta misurata dal modello di linguaggio. Tuttavia, come ampiamente discusso in studi precedenti [3] [4], i metodi deterministici spesso portano al problema della degenerazione del modello, ovvero il testo generato è innaturale e contiene ripetizioni indesiderate.

Di seguito, vediamo un esempio di testo generato dalla ricerca greedy utilizzando il modello GPT-2.

from transformers import AutoTokenizer, GPT2LMHeadModel

tokenizer = AutoTokenizer.from_pretrained('gpt2-large')
input_ids = tokenizer('DeepMind Company is', return_tensors='pt').input_ids
model = GPT2LMHeadModel.from_pretrained('gpt2-large')

output = model.generate(input_ids, max_length=128)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del Modello:

Output:
----------------------------------------------------------------------------------------------------
DeepMind Company è una società di ricerca leader nell'ambito dell'intelligenza artificiale, con un focus sul deep learning e sui sistemi basati sul deep learning.

La ricerca dell'azienda è incentrata sullo sviluppo di sistemi basati sul deep learning che possono apprendere da grandi quantità di dati e che possono essere utilizzati per risolvere problemi del mondo reale.

La ricerca di DeepMind viene utilizzata anche dal governo britannico per sviluppare nuove tecnologie per il servizio sanitario nazionale del Regno Unito.

La ricerca di DeepMind viene utilizzata anche dal governo britannico per sviluppare nuove tecnologie per il servizio sanitario nazionale del Regno Unito.

La ricerca di DeepMind viene utilizzata anche dal governo britannico per sviluppare nuove tecnologie
----------------------------------------------------------------------------------------------------

[Nota] Dal risultato generato dalla ricerca greedy, possiamo notare un evidente schema di ripetizioni.

4.2. Metodi Stocastici:

Per affrontare i problemi posti dai metodi deterministici, i metodi stocastici generano testo introducendo casualità durante il processo di decodifica. Due metodi stocastici ampiamente utilizzati sono (i) campionamento top-k [3] e (ii) campionamento del nucleo (detto anche campionamento top-p) [4].

Di seguito, illustreremo un esempio di testo generato dal campionamento del nucleo (p=0.95) utilizzando il modello GPT-2.

import torch
from transformers import AutoTokenizer, GPT2LMHeadModel

tokenizer = AutoTokenizer.from_pretrained('gpt2-large')
input_ids = tokenizer('La società DeepMind è', return_tensors='pt').input_ids
model = GPT2LMHeadModel.from_pretrained('gpt2-large')

torch.manual_seed(0.)
output = model.generate(input_ids, do_sample=True, max_length=128, top_p=0.95, top_k=0)
print("Risultato:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Risultato del modello:

Risultato:
----------------------------------------------------------------------------------------------------
La società DeepMind è un'azienda leader nella ricerca, sviluppo e fornitura di soluzioni AI per la sicurezza, l'infrastruttura, l'apprendimento automatico, le comunicazioni, ecc."

"L'AI non è giornalismo"

Ancora peggio è stato il messaggio che i suoi ricercatori speravano di far arrivare ai media del mondo, ovvero che non si trattava realmente di una ricerca, ma piuttosto di uno schema per arricchirsi velocemente a spese dell'ignoranza delle persone.

"Il fatto è che sappiamo che le persone non valutano consapevolmente il valore delle informazioni degli altri. Capiscono che otterranno le stesse informazioni da sole."

Un esempio? Date le informazioni di oggi
----------------------------------------------------------------------------------------------------

[Osservazione] Sebbene il campionamento del nucleo possa generare testo privo di ripetizioni, la coerenza semantica del testo generato non è ben mantenuta. Ad esempio, la frase generata “L’AI non è giornalismo” è incoerente rispetto al prefisso fornito, ovvero “La società DeepMind”.

Notiamo che questo problema di incongruenza semantica può essere in parte risolto abbassando la temperatura. Tuttavia, riducendo la temperatura, il campionamento del nucleo si avvicina alla ricerca avida, che può essere considerata come un compromesso tra la ricerca avida e il campionamento del nucleo. In generale, è difficile trovare una temperatura che eviti sia i problemi della ricerca avida che del campionamento del nucleo, indipendentemente dal prompt e dal modello utilizzati.


In questa sezione, presentiamo un nuovo metodo di decodifica, Ricerca Contrastiva, in dettaglio.

5.1. Obiettivo della decodifica:

Dato il testo di prefisso x < t x_{< t} x < t ​ , la selezione del token di output x t x_{t} x t ​ segue

dove V ( k ) V^{(k)} V ( k ) è l’insieme delle prime k previsioni dalla distribuzione di probabilità del modello del linguaggio p θ ( v ∣ x < t ) p_{\theta}(v|x_{< t}) p θ ​ ( v ∣ x < t ​ ) . Il primo termine, ovvero la fiducia del modello, è la probabilità del candidato v v v previsto dal modello del linguaggio. Il secondo termine, penalità di degenerazione, misura quanto discriminativo sia v v v rispetto al contesto precedente x < t x_{< t} x < t ​ e la funzione s ( â‹… , â‹… ) s(\cdot, \cdot) s ( â‹… , â‹… ) calcola la similarità coseno tra le rappresentazioni dei token. Più specificamente, la penalità di degenerazione è definita come la massima similarità coseno tra la rappresentazione del token v v v , ovvero h v h_{v} h v ​ , e quella di tutti i token nel contesto x < t x_{< t} x < t ​ . Qui, la rappresentazione del candidato h v h_{v} h v ​ è calcolata dal modello del linguaggio dato la concatenazione di x < t x_{< t} x < t ​ e v v v . In modo intuitivo, una penalità di degenerazione maggiore di v v v significa che è più simile (nello spazio delle rappresentazioni) al contesto, quindi è più probabile che si verifichi il problema della degenerazione del modello. L’iperparametro α \alpha α regola l’importanza di questi due componenti. Quando α = 0 \alpha=0 α = 0 , la ricerca contrastiva si degrada alla ricerca avida.

[Osservazione] Nella generazione dell’output, la ricerca contrastiva considera congiuntamente (i) la probabilità prevista dal modello del linguaggio per mantenere la coerenza semantica tra il testo generato e il testo di prefisso e (ii) la similarità rispetto al contesto precedente per evitare la degenerazione del modello.

Di seguito, utilizziamo lo stesso testo di prefisso (cioè “DeepMind Company è”) come nella Sezione 4.1 e 4.2, e generiamo il testo con ricerca contrastiva (k=4 e α = 0.6). Per dimostrare appieno la capacità superiore della ricerca contrastiva, facciamo sì che il modello linguistico generi un lungo documento con 512 token come

from transformers import GPT2Tokenizer, GPT2LMHeadModel

model_name = 'gpt2-large'
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name, pad_token_id=tokenizer.eos_token_id)
model.eval()

# prepara il prefisso
prefix_text = r'DeepMind Company è'
input_ids = tokenizer(prefix_text, return_tensors='pt').input_ids

# genera il risultato con ricerca contrastiva
output = model.generate(input_ids, penalty_alpha=0.6, top_k=4, max_length=512)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Gli argomenti sono i seguenti:

  • --top_k : L’iperparametro k nella ricerca contrastiva.
  • --penalty_alpha : L’iperparametro α nella ricerca contrastiva.

Risultato del modello:

Output:
----------------------------------------------------------------------------------------------------
DeepMind Company è un leader nell'intelligenza artificiale (AI). Abbiamo una lunga storia di collaborazione
con aziende come Google, Facebook, Amazon e Microsoft per sviluppare prodotti che migliorano
la vita delle persone, e oggi siamo entusiasti di annunciare che il programma AlphaGo di DeepMind ha vinto
il gioco del Go, diventando il primo programma a sconfiggere un giocatore professionista di Go.

La vittoria è una testimonianza del potere del deep learning e del lavoro incredibile del nostro
team di ricerca, che è stato all'avanguardia nella ricerca sull'IA negli ultimi cinque anni. AlphaGo
è uno dei programmi Go più avanzati mai creati, e le sue prestazioni rappresentano un passo importante
verso l'obiettivo di un'IA di livello umano.

"Questo è il culmine di un decennio di duro lavoro", ha detto Andy Ng, co-fondatore e CTO di DeepMind.
"Siamo entusiasti di aver raggiunto questo traguardo e non vediamo l'ora di continuare a sviluppare l'IA
che può essere utilizzata in una vasta gamma di applicazioni e per aiutare le persone a vivere meglio".

Il lavoro di DeepMind sul Go è iniziato nel 2010, quando ha iniziato ad addestrare una rete neurale a giocare a Go utilizzando
milioni di partite giocate dai migliori giocatori di Go di tutto il mondo. Da allora, il team ha perfezionato
l'algoritmo, aggiungendo sempre più livelli di apprendimento per rinforzo per renderlo migliore nel riconoscere
i pattern e prendere decisioni basate su tali pattern. Nell'ultimo anno e mezzo, il team ha compiuto
progressi significativi nel gioco, vincendo 13 partite di fila per entrare nella top four della classifica mondiale.

"Il gioco del Go è un gioco complesso in cui i giocatori devono fare molta attenzione a non estendere troppo il loro
territorio, e questo è qualcosa che siamo stati in grado di migliorare sempre di più", ha detto
Dr. Demis Hassabis, co-fondatore e Chief Scientific Officer di DeepMind. "Siamo molto orgogliosi del lavoro del nostro
team e speriamo che possa ispirare gli altri a fare il prossimo passo nella loro ricerca e
applicare le stesse tecniche ad altri problemi".

Oltre alla vittoria nel Go, DeepMind ha anche sviluppato un sistema di intelligenza artificiale in grado di imparare a giocare a
diversi giochi, tra cui poker, Go e scacchi. Questo sistema di intelligenza artificiale, chiamato Tarsier, è stato
sviluppato in collaborazione con la Carnegie Mellon University e l'University of California,
Berkeley, ed è utilizzato per insegnare visione artificiale e apprendimento automatico a identificare oggetti in
immagini e riconoscere il linguaggio naturale. Tarsier è stato addestrato a giocare a Go
e ad altri giochi su un
----------------------------------------------------------------------------------------------------

[Osservazione] Possiamo notare che il testo generato è di eccezionale qualità. L’intero documento è grammaticalmente fluente e coerente dal punto di vista semantico. Nel frattempo, il testo generato mantiene anche correttezza fattuale. Ad esempio, nel primo paragrafo, si approfondisce “AlphaGo” come il “primo programma a sconfiggere un giocatore professionista di Go”.

Per comprendere meglio come funziona la ricerca contrastiva, forniamo un confronto visivo tra la ricerca greedy (Sezione 4.1) e la ricerca contrastiva. In particolare, visualizziamo la matrice di similarità dei token del testo generato dalla ricerca greedy e dalla ricerca contrastiva, rispettivamente. La similarità tra due token è definita come la similarità coseno tra le loro rappresentazioni di token (cioè gli stati nascosti dell’ultimo strato del trasformatore). I risultati della ricerca greedy (in alto) e della ricerca contrastiva (in basso) sono mostrati nella figura sottostante.

[Osservazione] Dal risultato della ricerca greedy, vediamo punteggi di similarità elevati nelle voci fuori diagonale, il che indica chiaramente le ripetizioni generate dalla ricerca greedy. Al contrario, nel risultato della ricerca contrastiva, i punteggi di similarità elevati appaiono principalmente nelle voci diagonali, il che conferma che il problema di degenerazione è stato risolto con successo. Questa bella proprietà della ricerca contrastiva è ottenuta grazie all’introduzione di una penalità di degenerazione (vedi Sezione 5.1) durante il processo di decodifica.


6. Altri Esempi Generati:

In questa sezione, forniamo altri esempi generati per confrontare diversi metodi di decodifica.

6.1. Esempio Uno – GPT-2:

In questa parte, utilizziamo GPT-2 per generare del testo con il prefisso tratto dal blog originale di OpenAI che annunciava il rilascio di GPT-2.

In una scoperta scioccante, gli scienziati hanno scoperto un branco di unicorni che vivono in una valle remota e inesplorata, nelle Ande. Ancora più sorprendente per i ricercatori è stato il fatto che gli unicorni parlavano un inglese perfetto.

Carica il modello di linguaggio e prepara il testo del prefisso:

import torch
from transformers import AutoTokenizer, GPT2LMHeadModel

tokenizer = AutoTokenizer.from_pretrained('gpt2-large')
model = GPT2LMHeadModel.from_pretrained('gpt2-large')

prefix_text = r"In una scoperta scioccante, gli scienziati hanno scoperto un branco di unicorni che vivono in una valle remota e inesplorata, nelle Ande. Ancora più sorprendente per i ricercatori è stato il fatto che gli unicorni parlavano un inglese perfetto."
input_ids = tokenizer(prefix_text, return_tensors='pt').input_ids
6.1.1. Generazione del Testo con Ricerca Greedy:

Codice: [clicca per espandere]

output = model.generate(input_ids, max_length=512)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del Modello: [clicca per espandere]

Output:
----------------------------------------------------------------------------------------------------
In una scoperta scioccante, gli scienziati hanno scoperto un branco di unicorni che vivono in una valle remota e inesplorata, nelle Ande. Ancora più sorprendente per i ricercatori è stato il fatto che gli unicorni parlavano un inglese perfetto.

I ricercatori, guidati dal dottor David R. Williams dell'Università della California, Santa Cruz, hanno scoperto gli unicorni nelle Ande del Perù. L'area è nota per la sua geologia unica ed è sede di numerose specie rare di animali.

I ricercatori hanno trovato gli unicorni nelle Ande del Perù.

"Siamo rimasti sorpresi nel scoprire che gli unicorni erano in grado di comunicare tra loro", ha detto Williams. "Siamo rimasti anche sorpresi nel scoprire che erano in grado di comunicare in inglese."

I ricercatori ritengono che gli unicorni siano discendenti degli antichi Inca, che vivevano nell'area circa 2000 anni fa.

"Gli Inca furono i primi a utilizzare le Ande come rifugio dal clima rigido delle Ande", ha detto Williams. "Furono anche i primi a utilizzare le Ande come luogo per cacciare e raccogliere cibo."

I ricercatori ritengono che gli unicorni siano discendenti degli antichi Inca, che vivevano nell'area circa 2000 anni fa.

"Gli Inca furono i primi a utilizzare le Ande come rifugio dal clima rigido delle Ande", ha detto Williams. "Furono anche i primi a utilizzare le Ande come luogo per cacciare e raccogliere cibo."

I ricercatori ritengono che gli unicorni siano discendenti degli antichi Inca, che vivevano nell'area circa 2000 anni fa.

"Gli Inca furono i primi a utilizzare le Ande come rifugio dal clima rigido delle Ande", ha detto Williams. "Furono anche i primi a utilizzare le Ande come luogo per cacciare e raccogliere cibo."

I ricercatori ritengono che gli unicorni siano discendenti degli antichi Inca, che vivevano nell'area circa 2000 anni fa.

"Gli Inca furono i primi a utilizzare le Ande come rifugio dal clima rigido delle Ande", ha detto Williams. "Furono anche i primi a utilizzare le Ande come luogo per cacciare e raccogliere cibo."

I ricercatori ritengono che gli unicorni siano discendenti degli antichi Inca, che vivevano nell'area circa 2000 anni fa.

"Gli Inca furono i primi a utilizzare le Ande come rifugio dal clima rigido delle Ande", ha detto Williams. "Furono anche i primi a utilizzare le Ande come luogo per cacciare e raccogliere cibo."

I ricercatori ritengono che gli unicorni siano discendenti degli antichi Inca, che vivevano nell'area circa 2000 anni fa.
----------------------------------------------------------------------------------------------------
6.1.2. Generazione di testo con campionamento di nucleo:

Codice: [clicca per espandere]

torch.manual_seed(0.)
output = model.generate(input_ids, do_sample=True, max_length=512, top_p=0.95, top_k=0)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del modello: [clicca per espandere]

Output:
----------------------------------------------------------------------------------------------------
In una scoperta scioccante, gli scienziati hanno scoperto un branco di unicorni che vive in una valle remota e inesplorata, nelle Ande. Ancora più sorprendente per i ricercatori è il fatto che gli unicorni parlano perfettamente l'inglese. Lo studio è stato pubblicato nel Journal of Zoology nel marzo 2016.

I mammiferi poliginici come gli unicorni sono rimasti in gran parte sconosciuti alla scienza. Il professor Gustavo Giacota, dell'Università di Oxford, che ha guidato lo studio, ha detto che erano stati documentati fino all'est della Siberia in Russia, ma erano stati visti solo un paio di volte nel deserto del Gobi.

Piccoli animali con pellicce pallide e lucide vivono in presenza degli esseri umani e sono difficilmente vittime di crudeltà. Tuttavia, ci sono alcune prove che la condizione si manifesti sia negli esseri umani che negli animali nelle regioni remote, che potrebbero avere somiglianze con "talpe nere" che coesistono sulla pelle.

Si pensa che gli unicorni potrebbero essere dentro di loro, che abbiano odori diversi a seconda del loro ambiente attuale, o che semplicemente cadano e ci sono molte leggende su come siano sopravvissuti. Gli esperti ipotizzano che le falene e altri animali potrebbero essere rimanenze di Iside e Caronte degli Yazidi, che letteralmente è sia la parola che significa grande uccello, sia la parola greca per suono. Si dice che Iside e Caronte abbiano insegnato ai loro giovani l'uso della voce sotto forma di richiamo ad altri.

Gli scienziati pensano che potrebbe trattarsi di antiche leggende che sono sopravvissute e non sono più attribuite a un'entità reale.
----------------------------------------------------------------------------------------------------
6.1.3. Generazione di testo con ricerca contrastiva:

Codice:

output = model.generate(input_ids, max_length=512, penalty_alpha=0.6, top_k=4)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del modello:

Output:
----------------------------------------------------------------------------------------------------
In una scoperta scioccante, gli scienziati hanno scoperto un branco di unicorni che vive in una valle remota e inesplorata, nelle Ande. Ancora più sorprendente per i ricercatori è il fatto che gli unicorni parlano perfettamente l'inglese.

Secondo la BBC, un team di scienziati guidato dal dottor David MacKay, dell'Università di Bristol, ha trascorso due anni alla ricerca del branco di unicorni, che hanno scoperto durante un'indagine dell'area.

"È una scoperta molto rara", ha detto MacKay alla BBC. "Ce ne sono alcuni nell'Himalaya, ma questa è la prima volta che siamo riusciti a trovarne uno in un'area così remota."

Il team è rimasto sorpreso nel trovare un branco di unicorni che vive in una regione che è nota per essere un centro di bracconaggio, con molti animali bracconati per le loro corna, che vengono utilizzate nella medicina tradizionale cinese per trattare tutto, dalle reumatismi al cancro.

"Sapevamo che l'area era ricca di corna di rinoceronte, ma non avevamo idea di quanti ce ne fossero o cosa stessero facendo lì", ha detto MacKay. "Questa è un'area con una forte pressione di bracconaggio e volevamo capire cosa stesse succedendo."

Per farlo, il team ha utilizzato collari GPS per tracciare gli animali mentre si spostavano intorno alla montagna e all'area circostante. I dati GPS sono stati poi confrontati con le informazioni raccolte dai villaggi locali, che avevano una ricchezza di informazioni sugli spostamenti degli animali, inclusi dove mangiavano, cosa facevano di notte e quanto tempo trascorrevano in montagna ogni giorno.

Dopo aver analizzato i dati, il team ha determinato che il branco era composto da almeno tre specie di unicorni, tra cui un maschio e due femmine. Una delle femmine era la madre del maschio e le altre due erano le sue figlie. Tutte e tre avevano lo stesso colore delle corna, che si ritiene sia un segno di purezza nel regno animale.

Sebbene la scoperta sia emozionante, non è la prima volta che gli scienziati scoprono un animale che parla inglese. Lo scorso anno, gli scienziati hanno scoperto una specie di porcospino che può essere udita dagli esseri umani ed è stato soprannominato "Uomo porcospino" per la sua capacità di conversare con la razza umana.
----------------------------------------------------------------------------------------------------

6.2. Esempio Due – OPT:

In questa parte, utilizziamo il modello OPT [5] recentemente rilasciato da Meta per generare testo prendendo le prime due frasi dell’abstract del prestigioso articolo ResNet [6].

Reti neurali più profonde sono più difficili da addestrare. Presentiamo un framework di apprendimento residuale per facilitare l’addestramento di reti che sono sostanzialmente più profonde di quelle utilizzate in precedenza.

Carica il modello linguistico e prepara il testo prefisso:

import torch
from transformers import AutoTokenizer, OPTForCausalLM
nome_modello = r'facebook/opt-1.3b'
tokenizer = AutoTokenizer.from_pretrained(nome_modello)
model = OPTForCausalLM.from_pretrained(nome_modello)

testo_prefisso = r"Reti neurali più profonde sono più difficili da addestrare. Presentiamo un framework di apprendimento residuale per facilitare l'addestramento di reti che sono sostanzialmente più profonde di quelle utilizzate in precedenza."
input_ids = tokenizer(testo_prefisso, return_tensors='pt').input_ids
6.2.1. Generazione di Testo con Ricerca Greedy:

Codice: [clicca per espandere]

output = model.generate(input_ids, max_length=256)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del Modello: [clicca per espandere]

Output:
----------------------------------------------------------------------------------------------------
Reti neurali più profonde sono più difficili da addestrare. Presentiamo un framework di apprendimento residuale per facilitare l'addestramento di reti che sono sostanzialmente più profonde di quelle utilizzate in precedenza. Mostriamo che il framework di apprendimento residuale può essere utilizzato per addestrare reti neurali profonde che sono significativamente più difficili da addestrare rispetto a quelle utilizzate in precedenza. Mostriamo anche che il framework di apprendimento residuale può essere utilizzato per addestrare reti neurali profonde che sono significativamente più difficili da addestrare rispetto a quelle utilizzate in precedenza.

L'articolo presenta un nuovo framework di apprendimento residuale per reti neurali profonde basato sul concetto di residui. I residui sono i residui della rete che non vengono utilizzati nel processo di addestramento. I residui vengono calcolati prendendo i residui della rete utilizzati nel processo di addestramento e sottraendo i residui della rete che non vengono utilizzati nel processo di addestramento. I residui vengono quindi utilizzati per addestrare la rete. I residui vengono calcolati prendendo i residui della rete utilizzati nel processo di addestramento e sottraendo i residui della rete che non vengono utilizzati nel processo di addestramento. I residui vengono quindi utilizzati per addestrare la rete. I residui vengono calcolati prendendo i residui della rete utilizzati nel processo di addestramento e sottraendo i residui della
----------------------------------------------------------------------------------------------------
6.2.2. Generazione di Testo con Nucleus Sampling:

Codice: [clicca per espandere]

torch.manual_seed(0.)
output = model.generate(input_ids, do_sample=True, max_length=256, top_p=0.95, top_k=0)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del Modello: [clicca per espandere]

Output:
----------------------------------------------------------------------------------------------------
Reti neurali più profonde sono più difficili da addestrare. Presentiamo un framework di apprendimento residuale per facilitare l'addestramento di reti che sono sostanzialmente più profonde di quelle utilizzate in precedenza. La teoria si concentra su diversi aspetti dell'apprendimento, compresa la dinamica degli aspetti replicativi e non replicativi dell'apprendimento. Questo framework enfatizza l'apprendimento tramite entropia. Nuovi algoritmi casuali consentono l'addestramento di reti con apprendimento residuale, in modo che le reti profonde possano essere implementate in modo affidabile ed efficiente come i loro omologhi più convenzionali.
----------------------------------------------------------------------------------------------------
6.2.3. Generazione di Testo con Ricerca Contrastiva:

Codice:

output = model.generate(input_ids, max_length=256, penalty_alpha=0.6, top_k=6)
print("Output:\n" + 100 * '-')
print(tokenizer.decode(output[0], skip_special_tokens=True))
print("" + 100 * '-')

Output del Modello:

Output:
----------------------------------------------------------------------------------------------------
Reti neurali più profonde sono più difficili da addestrare. Presentiamo un framework di apprendimento residuale per facilitare l'addestramento di reti che sono sostanzialmente più profonde di quelle utilizzate in precedenza.

In questo articolo, proponiamo un framework di apprendimento residuale basato su modelli (MBRL) che si basa su reti neurali addestrate su dati sparsi in termini di dimensionalità (ad esempio, 1, 2, 3, ecc.). I parametri della rete vengono scelti in modo che ci sia una alta probabilità di convergenza, ovvero il numero di iterazioni è sufficientemente grande da ridurre al minimo la varianza dei residui. Ciò viene ottenuto addestrando la rete su un insieme di dati di addestramento, in cui i dati sono sparsi in termini di dimensionalità, e quindi scartando la parte non parametrica dei dati una volta completato l'addestramento.

Mostriamo che MBRL supera altri metodi per l'apprendimento di rinforzo profondo (RL) e le reti neurali convoluzionali profonde (CNN) di almeno un fattore di 2. Inoltre, mostriamo che, rispetto alle CNN, MBRL si comporta meglio nei casi bidimensionali (2D) e tridimensionali (3D).
----------------------------------------------------------------------------------------------------

7. Risorse:

Per ulteriori dettagli sulla ricerca contrastiva, si prega di consultare i nostri articoli e il codice:

  • Un framework contrastivo per la generazione di testo neurale: (1) Articolo e (2) Implementazione ufficiale.
  • La ricerca contrastiva è ciò di cui hai bisogno per la generazione di testo neurale:
    1. Articolo e (2) Implementazione ufficiale.

8. Citazione:

@inproceedings{su2022a,
   title={Un framework contrastivo per la generazione di testo neurale},
   author={Yixuan Su e Tian Lan e Yan Wang e Dani Yogatama e Lingpeng Kong e Nigel Collier},
   booktitle={Advances in Neural Information Processing Systems},
   editor={Alice H. Oh e Alekh Agarwal e Danielle Belgrave e Kyunghyun Cho},
   year={2022},
   url={https://openreview.net/forum?id=V88BafmH9Pj}
}

@article{su2022contrastiveiswhatyouneed,
  title={La ricerca contrastiva è ciò di cui hai bisogno per la generazione di testo neurale},
  author={Su, Yixuan e Collier, Nigel},
  journal={arXiv preprint arXiv:2210.14140},
  year={2022}
}

Riferimenti:

[1] Su et al., 2022 “Un framework contrastivo per la generazione di testo neurale”, NeurIPS 2022

[2] Su e Collier, 2022 “La ricerca contrastiva è ciò di cui hai bisogno per la generazione di testo neurale”, Arxiv 2022

[3] Fan et al., 2018 “Generazione di storie neurali gerarchiche”, ACL 2018

[4] Holtzman et al., 2020 “Il caso curioso della degenerazione del testo neurale”, ICLR 2020

[5] Zhang et al., 2022 “OPT: Modelli di linguaggio basati su trasformatori pre-addestrati aperti”, Arxiv 2022

[6] He et al., 2016 “Apprendimento residuo profondo per il riconoscimento delle immagini”, CVPR 2016


– Scritto da Yixuan Su e Tian Lan


Ringraziamenti:

Vorremmo ringraziare Joao Gante (@joaogante), Patrick von Platen (@patrickvonplaten) e Sylvain Gugger (@sgugger) per il loro aiuto e supporto nell’aggiungere la ricerca contrastiva menzionata in questo post del blog alla libreria transformers.