2023: L’anno di svolta nell’Intelligenza Artificiale

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.

Figura 1 – Rete neurale

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

 

Figura 2 – GPT-4

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.

Conclusioni

L’AI 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 nella Silicon Valley non potranno certo stare a guardare.

Language »