# data[].attributes.body
Cosa ti viene in mente quando pensi alla comunicazione? In che modo le persone comunicano tra loro? Certamente la comunicazione implica parlare e ascoltare, ma ci sono anche altre forme di comunicazione. Ad esempio, luci e LED vengono spesso utilizzati come indicatori visivi sui macchinari per comunicarne lo stato. I veicoli hanno luci che indicano il basso livello di carburante, la bassa pressione dell'olio, la batteria scarica o altri problemi al motore. Anche i semafori ad esempio comunicano quando attraversare o meno un incrocio. Tutti questi esempi, e molti altri, richiedono un preciso controllo del flusso di elettricità in un circuito. Questo controllo viene spesso eseguito da un programma che indica alle luci quando accendersi o spegnersi.

# data[].attributes.body
Vocabolario

Anodo – l'elettrodo o il cavo attraverso il quale la corrente entra in un dispositivo, ad esempio un LED, in cui la corrente può fluire solo in una direzione

Breadboard – una basetta per la prototipazione di circuiti elettronici che permette la facile connessione di ogni componente

Catodo – l'elettrodo o il cavo attraverso il quale la corrente esce da un dispositivo, ad esempio un LED, in cui la corrente può fluire solo in una direzione

Circuito – un percorso attraverso il quale può scorrere la corrente

Conduttore – un materiale che permette agli elettroni di attraversarlo facilmente

Conduttanza – la misura relativa dell'attitudine di un conduttore ad essere percorso da corrente elettrica; misurata in siemens

Corrente – la misura del numero di elettroni (o quantità di carica) che attraversano un punto di un circuito in un tempo specifico; misurata in ampere (amp)

Elettrone – la parte caricata negativamente di un atomo, può essere passato da un atomo all'altro, creando un flusso di elettricità

Isolante – un materiale che non permette agli elettroni di attraversarlo

Legge di Ohm – la legge scientifica che afferma che la tensione è direttamente proporzionale alla corrente. V = I • R

Prototipo – un modello iniziale di un dispositivo che può essere utilizzato per i test e le modifiche da cui sviluppare il prodotto finale

Resistenza – la misura relativa all'attitudine di un materiale ad opporsi al passaggio di corrente elettrica; misurata in ohm

Resistenza – un componente elettronico che riduce la corrente in un circuito

Tensione – la misura della differenza di energia elettrica tra due punti; misurata in volt

# data[].attributes.body
https://tecnologia.libero.it/come-e-fatto-smartphone-9216#viewall

# data[].attributes.body
La generazione e la classificazione del testo con un NLP Natural Language Processing sottobranca di linguistica, informatica e intelligenza artificiale che tratta l'interazione tra i computer e il linguaggio umano

# data[].attributes.attachment_link.readable_text
Tutti parlano di ChatGPT, ossia questo magnifico chatbot in grado di conversare su ogni argomento in tante lingue e fornire risposte sensate, lunghe e diverse.

Ma quello che vogliamo provare a illustrare qui è che ChatGPT non è magia, è matematica molto avanzata, è il tentativo dell'uomo di modellizzare con i numeri i processi che adottiamo per comprendere ed interagire col linguaggio.

ChatGPT, perché ora l'intelligenza artificiale ci stupisce e spaventa

Il funzionamento di ChatGPT, semplificato

Il Web è pieno di prompt, ossia questioni/quesiti da porre a ChatGPT, di ogni genere; infatti, questo sistema è in grado di scrivere testi nuovi, poesie, fare riassunti, parafrasi, traduzioni, creare anche una presentazione di slides su un argomento, scrivere codice informatico per creare software e tantissimo altro.

In quest'articolo proverò a semplificare al massimo il funzionamento di questo sistema di Deep Learning, branca dell'Intelligenza Artificiale (IA), per comprendere come funziona, dato che per molti sembra quasi una stregoneria.

Su come sono strutturate le cosidette "IA" c'è molta letteratura e video per ogni livello culturale, in sintesi i modelli di IA (Machine Learning, Deep Learning), si basano su una fase di addestramento su dei dataset (enormi banche di dati) e poi, grazie a complicati algoritmi matematici, riescono a "prevedere" un risultato per un nuovo input di dati a loro sconosciuti.

Tutto questo si fa per approssimazione, statistica, probabilità, il che rende un dato nuovo più vicino ad un dato conosciuto; da qui la foto di una pantera ha delle caratteristiche più vicine ad un gatto che ad un cane, ed ecco che una CNN (Convolutional Neural Network) potrebbe classificare la foto della pantera come quella di un gatto.

Così anche per altre cose, tipo testi, numeri, audio, ecc..

Le reti generative

Ma arriviamo alle reti generative; queste nascono con l'intento di creare qualcosa di nuovo; quindi, partono da un dato sconosciuto e, tramite delle particolari reti come le RNN (Recursive Neural Network) o le GAN (Generative Adversarial Network), riescono a generare un qualcosa che potrebbe essere classificato da qualcosa già imparato dalla rete.

Facciamo un esempio con una GAN:

Un'immagine casuale viene generata da una rete che chiameremo "Generatore"

Il Generatore ha il compito di ingannare una rete avversaria chiamata Discriminatore e fargli credere che il dato da lui generato possa essere un qualcosa che il Discriminatore ha già "imparato", ad esempio un volto umano.

Il Discriminatore valuta l'input fornitogli dal Generatore e gli fornisce un punteggio, chiamiamolo di "plausibilità", oppure un punteggio di "perdita".

Il Generatore allora migliorerà il proprio input da passare al discriminatore, magari migliorando l'immagine.

Quando il Discriminatore sarà ingannato a dovere, quindi giudicherà quell'input abbastanza bene da poter dire che è un volto, allora l'immagine sarà generata e fornita in output.

Ecco che la GAN ha creato un volto umano dal nulla, il volto di una persona inesistente nel mondo; con questo stesso sistema si possono creare anche suoni e testi, ecc..

Per l'NLP (Natural Language Processing), l'IA applicata ai testi ed al linguaggio naturale, ci sono tante soluzioni, come le Bag Of Words, le RNN, LSTM, ecc.. Ma sono limitate a classificazioni o a ridotte previsioni di testo successivo e sono lente, perché sequenziali e non riescono a trattare lunghe sequenze di testo.

Arrivano i Transformers

Il modello Transformer è un tipo di rete neurale utilizzata per il natural language processing (NLP). È stato introdotto nel 2017 da Google in un articolo scientifico intitolato " Attention Is All You Need ".

Il modello Transformer si differenzia dalle reti neurali tradizionali perché utilizza l' attenzione per elaborare il testo ed è principalmente composto da strati di Encoders (codificatori) e strati di Decoders (decodificatori).

L'attenzione consente al modello di concentrarsi su parti specifiche del testo mentre lo elabora, permettendogli di capire meglio il contesto e di generare risposte più appropriate; è stato utilizzato con successo in molte applicazioni NLP, come la traduzione automatica, la generazione e la classificazione del testo ed è stato applicato in sistemi come BERT, GPT-2 e GPT-3 e ChatGPT.

In sintesi, è una tecnica utilizzata per identificare quali parti di un input sono più rilevanti per la generazione di un output.

Vediamo i vari step che utilizza il modello Transformer:

Immaginiamo di avere la frase " il gatto è sul " e vogliamo completarla utilizzando un modello Transformer; elenchiamo i vari passaggi che il modello potrebbe seguire:

Tokenizzazione: Il primo passo è quello di dividere la frase in token, ovvero singole parole; in questo caso, la frase sarebbe divisa in ["il","gatto","è","sul"]

Embedding: Ogni parola viene convertita in un vettore numerico, chiamato embedding, in modo che il modello possa lavorare con esso e rappresenta la parola in uno spazio numerico e viene utilizzato per l'elaborazione dei dati.

Positional Encoding: In questo passaggio il modello utilizza una tecnica chiamata "positional encoding" per tenere conto dell'ordine delle parole nella frase, ciò significa che il modello capisce che "il" è all'inizio della frase e "sul" è alla fine. Per implementare il posizionamento delle parole, i modelli Transformer utilizzano un vettore di posizione per ogni parola in una frase. Il vettore di posizione è un vettore numerico che rappresenta la posizione relativa della parola all'interno della frase.

Multi-head attention: Il modello utilizza una tecnica chiamata "multi-head attention" (modello di self-attention a più teste) per calcolare l'attenzione tra le parole della frase. In questo caso, il modello calcolerà l'attenzione tra la parola "sul" e le altre parole della frase, come "il" e "gatto", per capire meglio il contesto e il significato della parola "sul" e così per le altre parole componenti la frase. I vettori di attenzione generati da ciascuna testa vengono poi concatenati e sottoposti ad una nuova trasformazione per generare una rappresentazione globale dell'input.

Feed-forward layer: infine, il modello utilizza una rete neurale feed-forward per generare una risposta plausibile e coerente; in questo caso, il modello potrebbe generare la risposta "il gatto è sul tavolo" o "il gatto è sul letto" in base alla relazione tra le parole della frase e al contesto generale.

Figura 1 - Fonte: https://arxiv.org/pdf/1706.03762.pdf

In sintesi, i Transformers utilizzano una serie di trasformazioni e calcoli per comprendere il significato di una frase e generare una risposta plausibile e coerente.

Per generare una risposta lunga a partire da una domanda breve, il modello Transformer utilizza una combinazione di tecniche come la Language Modeling, la Multi-head Attention, il Fine-tuning e la Generazione Autoregressiva.

La Language Modeling permette di imparare a generare testo plausibile e coerente, mentre la Multi-head Attention consente di capire il contesto e il significato delle parole e delle frasi nella domanda.

Il Fine-tuning permette di adattare il modello ad un dataset specifico per generare risposte più pertinenti.

Infine, la Generazione Autoregressiva consente di generare frasi e paragrafi in modo autonomo, una parola alla volta, utilizzando le informazioni precedentemente generate.

Come funziona il sistema dell'attenzione

Ma cerchiamo di capire come funziona il sistema dell'"attenzione", che è il cuore del modello Transformer.

Iniziamo con l'embedding, che sulla frase " il gatto è sul " potrebbe essere:

"il": [0.1, 0.2, -0.3, 0.4, ...]

"gatto": [0.5, -0.1, 0.2, -0.3, ...]

"è": [-0.2, 0.3, 0.1, -0.4, ...]

"sul": [0.3, -0.2, 0.5, -0.1, ...]

In questo esempio ogni parola è rappresentata da un vettore numerico di lunghezza n, chiamato embedding.

Gli embeddings vengono pre-calcolati, prima di essere utilizzati come input per il Transformer, utilizzando una grande quantità di dati di testo e un algoritmo di apprendimento automatico, tramite metodi come word2vect, GloVe, ecc..

Il modello utilizza questi embedding per capire il contesto e il significato delle parole e delle frasi nella domanda e generare una risposta pertinente.

Una dimensione di embedding più alta significa che il modello avrà più flessibilità per rappresentare le parole in uno spazio numerico, ma richiederà anche più memoria e potrebbe essere più difficile da addestrare.

In generale, una dimensione di embedding più alta consente al modello di r appresentare in modo più preciso le parole e i loro contesti, migliorando le prestazioni del modello. Tuttavia, una dimensione troppo alta può causare overfitting (scarsa capacità d'approssimazione) mentre una dimensione troppo bassa può causare una perdita di informazioni ( underfitting).

Il modello Transformer dopo aver calcolato gli embedding della parole componenti la frase " il gatto è sul", combina i vettori di embedding con i vettori di positioning per formare l'input da passare all'architettura di attenzione multi-testa (multi-head attention) per capire il contesto e il significato delle parole e delle frasi nella frase.

La tecnica di attenzione multi-testa funziona creando diverse " teste" che calcolano l'attenzione tra le parole della frase in modo indipendente.

Per la frase " il gatto è sul ", il modello potrebbe utilizzare tre multi-head attention:

La prima testa di attenzione potrebbe calcolare l'attenzione tra la parola "sul" e le altre parole della frase, come "il" e "gatto", per capire meglio il contesto e il significato della parola "sul".

La seconda testa di attenzione potrebbe calcolare l'attenzione tra la parola "gatto" e le altre parole della frase, per capire meglio il contesto e il significato della parola "gatto".

La terza testa di attenzione potrebbe calcolare l'attenzione tra la parola "il" e le altre parole della frase, per capire meglio il contesto e il significato della parola "il".

Dopo aver calcolato l'attenzione tra le parole della frase, le multi-head attentions combinano le loro risposte per generare una rappresentazione globale della frase, che tiene conto del contesto e del significato delle parole e viene utilizzata per generare una risposta plausibile e coerente alla domanda.

Il calcolo di una testa d'attenzione

Il calcolo di una testa d'attenzione si basa su tre componenti principali:

Query (Q): un vettore che rappresenta la parola o le parole per cui si sta cercando attenzione.

Key (K): un vettore che rappresenta la parola o le parole su cui si sta concentrando l'attenzione.

Value (V): un vettore che rappresenta l'informazione associata alla parola o alle parole chiave.

I vettori query, key e value vengono calcolati utilizzando tre diverse matrici di peso, una per ciascun componente; il modello quindi, calcola una matrice di attenzione utilizzando questi vettori; la matrice di attenzione generata determina la quantità di attenzione che ogni parola riceve da ogni altra parola nel testo di input.

Insomma, Q e K sono come la query che facciamo ai motori di ricerca e K le keywords che corrispondono meglio alla query.

Infine, c'è la rete neurale feedforward, che una volta che riceve in input la frase " il gatto è sul", utilizza la rappresentazione globale della frase generata dalle multi-head attention per prevedere la prossima parola.

Il modello è stato addestrato su un grande dataset di testi; quindi ha già visto molte frasi simili o uguali a " il gatto è sul " e ha imparato a capire il contesto e il significato delle parole nella frase.

La rete neurale feedforward utilizza queste conoscenze per generare una distribuzione di probabilità per ciascuna parola del vocabolario, dove ciascuna parola ha una probabilità di essere la prossima parola nella frase. Inoltre, la rete feed-forward può essere utilizzata per eliminare le informazioni non rilevanti e mettere in evidenza le relazioni più importanti tra le parole nell'input, permettendo al modello di generare una risposta più precisa e pertinente.

Riepilogando, il modello Transformer utilizza la rappresentazione globale della frase generata dalle multi-head attention e dagli embeddings, che sono combinati con i vettori di posizione, per prevedere la prossima parola, utilizzando le conoscenze che ha acquisito durante l'addestramento su un grande dataset di testi, per capire il contesto e il significato delle parole e delle frasi nella frase e generare una distribuzione di probabilità per ciascuna parola del vocabolario.

Encoder e decoder

Tutto il meccanismo si sintetizza in una serie di Encoders e di Decoders.

Gli encoders sono utilizzati per codificare la frase in ingresso in una rappresentazione numerica, utilizzando le tecniche di embedding, multi-head attention e feed forward network; essi analizzano l'input e generano una rappresentazione numerica della frase che tiene conto del contesto e del significato delle parole/frasi contenute.

I decoders, invece, sono utilizzati per generare la risposta; essi utilizzano la rappresentazione numerica generata dagli encoders e il meccanismo dell'auto-attenzione ( self-attention) per generare una distribuzione di probabilità per ciascuna parola del vocabolario, dove ciascuna di esse ha una probabilità di essere la prossima parola nella risposta o frase che devono generare. I decoders ricevono come input gli embeddings delle parole della frase o domanda, insieme alla rappresentazione globale della frase o domanda generata dalla matrice d'attenzione degli encoders; inoltre, utilizzano un meccanismo di auto-regressione per generare una risposta lunga a partire da una domanda breve. Quindi, i decoders applicano il meccanismo dell'attenzione per valutare ciò che stanno scrivendo in output, tenendo anche conto dell'input elaborato dagli encoders.

In sintesi, gli encoders sono utilizzati per codificare la frase in ingresso in una rappresentazione numerica, che viene usata dai decoders per generare la risposta.

Se volete divertirvi a creare un vostro piccolo GPT ecco poche righe di codice Python che utilizzano i Trasformers:

Conclusioni

ChatGPT non è sicuramente perfetta ma la strada è aperta e prevedo che in pochi anni vedremo qualcosa di ancora più strabiliante.

P.S.: per scrivere questo articolo mi sono consultato con LEI/LUI...ChatGPT.

# data[].attributes.attachment_link.title
ChatGPT è matematica non magia: ecco come funziona - Agenda Digitale

# data[].attributes.attachment_link.description
Tutti parlano di ChatGPT , ossia questo magnifico chatbot in grado di conversare su ogni argomento in tante lingue e fornire risposte sensate, lunghe e diverse. Ma quello che vogliamo provare a illustrare qui è che ChatGPT non è magia, è matematica molto avanzata, è il tentativo dell'uomo di modellizzare con i numeri i processi che adottiamo per comprendere ed interagire col linguaggio.

# data[].attributes.body
A: voti in decimi 10-9, B 8-7, C 6, D 4-5
dal D.M. 35 del 22.06.2020 “Linee guida per l’insegnamento dell’educazione civica”, allegato C:

Rispettare l’ambiente, curarlo, conservarlo, migliorarlo, assumendo il principio di responsabilità.

Esercitare i principi della cittadinanza digitale, con competenza e coerenza rispetto al sistema integrato di valori che regolano la vita democratica.

Compiere le scelte di partecipazione alla vita pubblica e di cittadinanza coerentemente agli obiettivi di sostenibilità sanciti a livello comunitario attraverso l’Agenda 2030 per lo sviluppo sostenibile.

# data[].attributes.headline
Presentazioni degli studenti con i link (8 gruppi)

# data[].attributes.subject
Presentazioni degli studenti con i link (8 gruppi)

# data[].attributes.body
Gruppo 8 https://view.genial.ly/63e4ba99bd805f001415ba6a/presentation-la-comunicazione
Gruppo 1 https://view.genial.ly/63d78c12fead56001ad0a308/presentation-comunicazione
Gruppo 2
https://prezi.com/view/IKAWML8qNvb3LMwzYpDf/
Gruppo 3
https://www.canva.com/design/DAFadi4juqc/QnzZPv2BQ7q9AVyrYTnNkw/view?utm_content=DAFadi4juqc&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton
Gruppo 4
https://prezi.com/view/gcLyDGIzPDd7Ou3Qpmic/
Gruppo 5
https://www.canva.com/design/DAFZ4_YIu1Y/oh62cmcnDp3updEhesTS5w/view?utm_content=DAFZ4_YIu1Y&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton
Gruppo 6
https://www.canva.com/design/DAFaMSQVLqk/x_RdgdTzV-7kI2Y8Zyw4MQ/view?utm_content=DAFaMSQVLqk&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton
Gruppo 7
https://view.genial.ly/63e3979f5fa26c001aaeefdc/interactive-content-mappa-concettuale

# data[].attributes.attachment_link.description
Il verbo latino communicare è un'estensione semantica della parola communis, aggettivo composto dalla preposizione cum (con, insieme a) e il sostantivo munus, ossia dono. L'opposto di communis è proprius, cioè di proprietà privata, non a caso la parola comunità condivide la stessa origine. Dunque comunicare significa condividere, costruire un legame con l'altro.