In queste ore tutto il mondo sta parlando dell’ultima
versione di GPT (ChatGPT Jan 9 Version, 2023).
In questo articolo cercheremo di capirne di più sull’intelligenza artificiale e
quali strumenti sono già disponibili.
Cosa si intente per Intelligenza Artificiale?
L'intelligenza artificiale (IA) è una branca dell'informatica che si concentra
sullo sviluppo di algoritmi e sistemi in grado di svolgere compiti che
richiedono intelligenza umana, come il riconoscimento del linguaggio naturale,
la comprensione del contenuto visivo e la risoluzione di problemi complessi.
L'IA può essere suddivisa in diverse categorie, tra cui l'IA debole (o IA di
base) e l'IA forte (o IA generale).
IA di base
L'IA debole (o IA di base) si riferisce a una forma di
intelligenza artificiale che è specializzata in una singola attività o compito
specifico. Gli algoritmi e i sistemi di IA debole sono progettati per svolgere
un compito specifico, come il riconoscimento delle immagini, il riconoscimento
delle voci o la traduzione automatica. Non hanno la capacità di generalizzare o
di adattarsi a nuove situazioni, come invece avviene nell'IA forte. In
generale, l'IA debole o di base è più facile da implementare e meno costosa
rispetto all'IA forte.
IA generale
L'IA forte (o IA generale) si riferisce ad una forma di
intelligenza artificiale che ha la capacità di generalizzare e di adattarsi a
nuove situazioni e compiti. Gli algoritmi e i sistemi di IA forte sono
progettati per svolgere una vasta gamma di compiti, simili a quelli che
richiedono l'intelligenza umana, come la comprensione del linguaggio naturale,
la risoluzione di problemi e il ragionamento. L'IA forte è più difficile da
implementare rispetto all'IA debole e richiede una quantità maggiore di risorse
computazionali e dati.
L'IA forte ha la capacità di apprendere e migliorare
continuamente, senza essere programmata specificamente per ogni singola
attività. L'IA forte può essere utilizzata in una vasta gamma di applicazioni,
come il riconoscimento vocale, la traduzione automatica, la guida autonoma e
l'elaborazione del linguaggio naturale.
Reti neurali
Una rete neurale è un modello computazionale ispirato alla struttura e al
funzionamento del sistema nervoso umano. È composta da una serie di nodi (noti
anche come neuroni) che sono connessi tra loro da collegamenti, ognuno dei
quali ha un peso associato.
Il funzionamento di una rete neurale è simile a quello del
sistema nervoso umano, poiché i nodi ricevono informazioni dai nodi di input,
elaborano queste informazioni e le trasmettono ai nodi di output. I pesi sui
collegamenti tra i nodi sono utilizzati per controllare l'importanza relativa
delle informazioni in entrata per la risposta di output.
Ci sono diverse librerie di intelligenza artificiale e di apprendimento
automatico che possono essere utilizzate per creare una rete neurale, tra cui
TensorFlow, Keras, PyTorch, Microsoft Cognitive Toolkit (CNTK), TensorFlow.NET
e Accord.NET
Di seguito un esempio di codice per creare una semplice rete
neurale feedforward utilizzando la libreria Accord.NET in C#:
using Accord.Neuro;
using Accord.Neuro.Learning;
using Accord.Math;
// Creazione del modello
var network = new ActivationNetwork(
new SigmoidFunction(2),
8, // 8 input nodes
12, // 12 hidden nodes
1); // 1 output node
// Creazione dell'oggetto di apprendimento
var teacher = new BackPropagationLearning(network);
// Addestramento del modello sui dati di input
double[][] inputs = ...;
double[][] outputs = ...;
for (int i = 0; i < 1000; i++)
{
double error = teacher.RunEpoch(inputs, outputs);
Console.WriteLine("Error: " + error);
}
// Utilizzo del modello per effettuare previsioni
double[] prediction = network.Compute(inputs[0]);
Console.WriteLine("Prediction: " + prediction[0]);
Naturalmente il codice di cui sopra è solo un esempio
semplice e generico. Il codice potrebbe variare a seconda delle esigenze
specifiche del progetto e della libreria utilizzata. Inoltre, sarebbe
necessario utilizzare un dataset di addestramento e di test per addestrare e
valutare la rete neurale.
Le reti neurali feedforward (FNN)
Le reti neurali feedforward (FNN) sono un tipo di
architettura di rete neurale che consiste in una serie di strati di nodi (noti
anche come neuroni) connessi tra loro. Il flusso di informazioni attraversa la
rete in una sola direzione, da input verso output, senza alcun ciclo o ritorno.
In una rete neurale feedforward, gli strati di input
ricevono i dati, mentre gli strati nascosti elaborano i dati e gli strati di
output forniscono la risposta o la previsione. Ogni nodo nella rete elabora i
dati ricevuti dai nodi di input e li passa ai nodi successivi. I pesi sui
collegamenti tra i nodi sono utilizzati per controllare l'importanza relativa
dei dati in entrata per la risposta di output.
Le FNN sono utilizzate per una vasta gamma di applicazioni,
come il riconoscimento delle immagini, il riconoscimento della voce, la
traduzione automatica e l'elaborazione del linguaggio naturale. Sono semplici
da implementare e da capire, ma hanno limitazioni nell'elaborazione di dati
sequenziali o dati con relazioni temporali o di ordine.
Le reti neurali convolutional (CNN)
Le reti neurali convolutionali (CNN) sono una specifica architettura di reti
neurali feedforward utilizzate principalmente per l'elaborazione delle immagini
e del segnale. Sono chiamate "convolutionali" perché utilizzano
un'operazione matematica chiamata "convoluzione" per elaborare i dati
di input.
In una CNN, gli strati di input ricevono i dati (immagini o
segnali), mentre gli strati nascosti elaborano i dati utilizzando una serie di
filtri convolutionali. I filtri convolutionali sono matrici di pesi che vengono
utilizzati per estrarre caratteristiche specifiche dai dati di input. Gli
strati di pooling vengono utilizzati per ridurre la dimensione dei dati, mentre
gli strati di output forniscono la risposta o la previsione.
Le CNN sono particolarmente utili per l'elaborazione delle
immagini, poiché hanno la capacità di identificare caratteristiche specifiche,
come linee, forme e texture, indipendentemente dalla loro posizione
nell'immagine. Inoltre, le CNN sono utilizzate in una vasta gamma di
applicazioni, tra cui il riconoscimento delle immagini, il riconoscimento della
voce, la traduzione automatica e l'elaborazione del linguaggio naturale.
L’apprendimento automatico
In termini informatici, l'IA si basa principalmente su
algoritmi di apprendimento automatico e sull'elaborazione dei dati. Gli
algoritmi di apprendimento automatico sono un insieme di metodi statistici e di
ottimizzazione che consentono ai sistemi di IA di apprendere dai dati e di
migliorare continuamente le loro prestazioni.
Ci sono diverse tecniche di apprendimento automatico, tra
cui l'apprendimento supervisionato, l'apprendimento non supervisionato e
l'apprendimento rinforzato. L'apprendimento supervisionato utilizza dati
etichettati per addestrare un modello a riconoscere determinate caratteristiche
o pattern in dati non etichettati. L'apprendimento non supervisionato utilizza
dati non etichettati per scoprire pattern e relazioni nascosti nei dati.
L'apprendimento rinforzato utilizza un sistema di premi e punizioni per guidare
l'apprendimento.
Una volta addestrato, il modello può essere utilizzato per
effettuare previsioni o decisioni su nuovi dati. Inoltre, l'IA può essere
implementata utilizzando diverse architetture di rete neurale, tra cui le reti
neurali feedforward, le reti neurali ricorrenti e le reti neurali
convolutional.
Il modello può essere addestrato utilizzando una grande
quantità di dati, che vengono utilizzati per "allenare" il modello,
rendendolo in grado di fare previsioni o decisioni accurate su nuovi dati.
ChatGTP!
ChatGPT è un modello di linguaggio basato sull'intelligenza artificiale
sviluppato da OpenAI. È una forma di IA debole, nota anche come IA di base, che
è stata addestrata su un gran numero di testi scritti in lingua inglese. In
particolare, ChatGPT è un modello di generazione di testo basato su una rete
neurale Transformer.
ChatGPT è un modello di linguaggio molto avanzato e molto
preciso, è in grado di generare testo in modo autonomo e di completare frasi o
testi a partire da un input iniziale.
ChatGPT si distingue dagli altri sistemi di IA in quanto è
stato addestrato su un vasto set di dati di testo e quindi in grado di generare
testo in modo molto realistico, inoltre è in grado di generare risposte a
domande complesse e di generare testo in modo autonomo.
La rete neurale transformer
La rete neurale Transformer è un tipo di architettura di rete neurale
utilizzata per l'elaborazione del linguaggio naturale. È stata introdotta nel
2017 in un articolo dal titolo "Attention Is All You Need"
(L'attenzione è tutto ciò di cui hai bisogno).
La caratteristica principale delle reti neurali Transformer
è l'utilizzo di un meccanismo di attenzione che consente al modello di
concentrarsi su parti specifiche del testo di input mentre elabora le
informazioni. Ciò consente al modello di capire il contesto e di generare testo
più preciso e naturale.
Inoltre, le reti neurali Transformer utilizzano una
struttura di auto-attenzione che consente al modello di considerare l'intero
testo di input allo stesso tempo, anziché solo una porzione di esso alla volta.
Ciò consente al modello di comprendere meglio il contesto e di generare testo
più preciso e coerente.
Le reti neurali Transformer sono utilizzate in una vasta
gamma di applicazioni, tra cui la generazione di testo, la traduzione
automatica, la comprensione del linguaggio naturale e il riconoscimento vocale.
GPT-2 e GPT-3 sono esempi di modelli Transformer utilizzati per la generazione
di testo.
Evoluzione
GPT-4 sarà 100 volte più potente di GPT-3, con oltre 100 trilioni di parametri
rispetto ai 175 miliardi di parametri di GPT-3 e con nuove funzionalità come il
servizio clienti e l'istruzione.
Applicazioni pratiche
E’ già possibile utilizzare una vasta gamma di servizi
basati su IA forniti dai principali playes del mondo cloud. Ad esempio, in
Microsoft Azure questi servizi consentono agli sviluppatori di creare,
implementare e distribuire facilmente soluzioni di IA.
Alcuni dei servizi di IA offerti da Azure sono:
·
Azure Cognitive Services: un insieme di API
pre-addestrate che consentono di aggiungere funzionalità di IA come il
riconoscimento delle immagini, il riconoscimento della voce e la comprensione
del linguaggio naturale alle applicazioni.
·
Azure Machine Learning: un servizio di
apprendimento automatico che consente di creare, implementare e distribuire
modelli di IA in modo semplice e veloce.
·
Azure Databricks: un ambiente di elaborazione
dei dati basato su Apache Spark che consente di creare, implementare e
distribuire facilmente soluzioni di IA.
·
Azure IoT Edge: una piattaforma per
l'elaborazione dei dati in dispositivi IoT che consente di eseguire modelli di
IA su dispositivi IoT.
Espandendo un po’ il campo troviamo altre piattaforme altrettanto
interessanti, non sono ovviamente le uniche disponibili ma solo le più popolari:
·
Google Cloud AI: un insieme di servizi di IA
offerti da Google Cloud, tra cui Google Cloud Translation, Google Cloud Natural
Language e Google Cloud Video Intelligence.
·
Amazon Web Services (AWS): un insieme di servizi
di IA offerti da Amazon, tra cui Amazon Transcribe, Amazon Translate e Amazon
Rekognition.
·
IBM Watson: un insieme di servizi di IA offerti
da IBM, tra cui Watson Language Translator, Watson Speech to Text e Watson
Visual Recognition.
·
SAP Leonardo: una piattaforma di intelligenza
artificiale di SAP che offre servizi di machine learning, intelligenza
artificiale, Internet of Things (IoT) e blockchain.
·
Facebook AI: un insieme di servizi di IA offerti
da Facebook, tra cui Face Recognition, Object Detection and Automatic
Alternative Text.
·
OpenAI: una organizzazione di ricerca sull'IA
che offre una serie di servizi di IA, tra cui GPT-3, un modello di generazione
di testo basato sull'IA.
Inoltre, esistono tantissimi siti web basati su AI che hanno
compiti relativamente semplici e specifici come ad esempio:
·
Teachable Machine permette
di sviluppare il proprio modello di machine learning senza bisogno di
programmare. Si può addestrare l'intelligenza artificiale con immagini, suoni e
altro.
·
Thing
Translator usa la fotocamera del cellulare o la webcam del computer per
inquadrare un oggetto o qualsiasi altra cosa e dirci che cos'è in tutte le
lingue del mondo.
·
Autodraw,
il sito Google che disegna da solo, un esperimento di intelligenza artificiale
che indovina cosa stiamo disegnando per poterlo completare prima di finirlo.
·
Il sito thispersondoesnotexist.com usa
l'algoritmo sviluppato dal progetto NVidia StyleGAN2 in modo da mostrare la
fotografia falsa di una persona che non esiste, con un viso che sembra
incredibilmente reale, ogni volta che viene aperto.
·
Infinite Drum
Machine si occupa di organizzare automaticamente i suoni per creare una
base ritmica. E’ possibile spostare i cerchi sullo schermo e scegliere il tipo
di effetto sonoro da utilizzare per la base.
·
Talk
To Books Questo è uno strumento di
intelligenza artificiale sperimentale di Google. Si digita una frase nella
casella di ricerca, l’AI ti aiuterà a scoprire prospettive e libri
entusiasmanti che potresti voler leggere.
·
AI. Image
Enlarger Questo sito web ti aiuterà a migliorare tutte le foto di bassa
qualità, anche in caso di immagini “pixellate”, sfocate e non dettagliate. Si
potrebbe dire come nelle serie e films.
Conclusioni
L’IA negli ultimi anni si è sicuramente sviluppata ad un
punto tale da essere tanto potente quanto incredibile (e preoccupante?). OpenAI
in particolare è stata fondata, indovinate un po’? Dal buon Elon Mask e
attualmente foraggiata da Microsoft. Quest’ultima versione di GTP cambia tutte
le dinamiche di mercato creando una svolta nell’integrazione del linguaggio
naturale. Nei prossimi mesi assisteremo ad una evoluzione ancora più
incredibile dato che gli altri player della Silicon Valley non potranno certo
stare a guardare.