Di tutto un pò sul mondo della tecnologia e non solo!
Di tutto un pò sul mondo della tecnologia e non solo!

Intelligenza Artificiale – I parte –

Costruire un elaboratore in grado di “ragionare” è una delle sfide della moderna società. L’intelligenza artificiale è quella branca della scienza che “tenta” di far assomigliare i computer all’uomo, e le reti neurali aiutano gli scienziati in questo difficile compito. In tal senso, il cervello umano rappresenta il miglior esempio di una rete neurale. Esso è composto da bilioni di neuroni, interconnessi tra loro, ed è a questo modello a cui si dovrebbe pensare per sviluppare una macchina in grado di “pensare” simile all’uomo.

Le reti neurali artificiali e le reti biologiche

Un primo concetto molto importante è la distinzione tra reti neurali artificiali e reti neurali biologiche: le prime rappresentano una simulazione al computer delle seconde. In pratica, con le reti neurali artificiali, l’elaboratore cerca di simulare un ragionamento tipico del cervello, la più importante rete neurale biologica.

In questo, e nei prossimi articoli, forse non affronteremo la struttura del cervello, anche se ciò risulterebbe propedeutico per una buona comprensione delle reti neurali artificiali. Quindi, cercheremo di costruire una rete neurale artificiale con l’ausilio di JOONE, un software scritto in linguaggio java in grado di svolgere questo compito.

Quali problemi possono essere risolti da una rete neurale artificiale?

Per quanto riguarda la soluzione dei problemi, le reti neurali artificiali non possono risolverli tutti, e comprendere quali sono quelli più appropriati è uno dei momenti più importanti che i programmatori e gli scienziati devono affrontare. In pratica, quei problemi che adottano un algoritmo ben preciso dei quali si conoscono tutti i passi della soluzione non sono indicati all’utilizzo di una rete neurale artificiale.

Le reti neurali artificiali possono essere adottate per le operazioni di classificazione dei dati in gruppi, di raccolta dei dati e rielaborazione (data mining), di riconoscimento di un “patterns” (immagine, suono o altro dato) o di predizione di risultati futuri sulla base di una serie storica; Comunque, soltanto in questi ambiti possono esprimere il loro potenziale.

In pratica, da cosa sono costituite le reti neurali artificiali?

Le reti neurali artificiali sono composte da algoritmi che hanno l’incarico di simulare un qualsiasi ragionamento più o meno complesso. Così, ha origine l’intelligenza artificiale. Nel 2014, DeepMind una piccola azienda di Londra, durante l’evento Tech 2014, mostra un algoritmo informatico in grado di imparare a giocare a Breakout, un gioco del 1976 creato da Steve Wozniak.

Breakout Atari 1976 Tech 2014
Fig.1
(Brekaout, l’algoritmo che impara a giocare).

Non contenti, i creativi di DeepMind hanno allenato l’algoritmo in altri 49 giochi, tra i quali i più famosi sono Pinball, Pac-Man, Road Runner e altri ancora.

Recentemente, la ormai nota DeepMind con l’algoritmo AlphaGo ha battuto il campione 9 dan professionistra Lee Sedol. Go, è un gioco di conquista del territorio, assolutamente diverso dagli scacchi e secondo alcuni molto più complesso.

In una fase iniziale sono state “addestrate” due reti neurali “deep neural network” sulla base di 30 milioni di mosse rese disponibili dai Go Server. Successivamente, in una seconda fase, il sistema AlphaGo “impara” da se stesso giocando milioni di partite con l’utilizzo del “reinforcement learning”. L’algoritmo, grazie alle reti neurali (una quindicina di strati per AlphaGo) è riuscito a vincere, e in alcuni casi ha “giocato” in modo semplicemente geniale. In questa partita il sistema “artificiale” ha utilizzato 1202 CPU e 176 GPU.

Aplha Go vs Go
Figura 2.
(Esempio di gioco Go)

E per quanto riguarda GNU/Linux, quali sono gli strumenti in gioco per l’uso delle reti neurali?

Molto interessante risulta il progetto GNU Gneural Network di Jean Michel Sellier che permette di programmare la propria rete neurale artificiale e di implementare il codice nei nostri progetti senza grandi difficoltà in accordo con l’ideale del progetto GNU (e della Free Software Fondation). Il codice è interamente in C, non dipende da nessuna libreria esterna, ed è cross platform (funziona su più sistemi operativi). Il programma permette agli utenti di definire la propria rete neurale, ed appartenendo al “free software”, si può agire sul codice sorgente per modificare metodi e routines adattandolo ai propri scopi. Inoltre, si possono utilizzare metodi differenti per “allenare” la rete neurale, tra i quali: algoritmi genetici, tecniche MonteCarlo e altri ancora.

E’ per tutti l’utilizzo della A.I.?

Attualmente, IBM (es. progetto Watson) e Google (es. progetto AlphaGo) mostrano l’utilizzo e la “forza” dell’intelligenza artificiale nei propri software.

Le tecnologie odierne fanno ricorso alle rete neurali per risolvere qualsiasi problema, ma se tale opportunità è nell’uso e nello sviluppo di pochi, a lungo andare potrebbe rappresentare un pericolo come comunicato dal progetto GNU Gneural Network:

Nowadays, companies such as Google and IBM are doing a great service to all of us by showing what can be achieved by using Artificial Intelligence (AI). […] But the fact that only companies and labs have access to this technology can represent a threat. First of all, we cannot know how money driven companies are going to use this novel technology. Second, this monopoly slows down technology adoption.

E’ per questo motivo, che tutti noi, dovremmo “usare” nei nostri software l’A.I. e rendere tale conoscenza disponibile a tutti.

Rating: 2.5/5. From 2 votes.
Please wait...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

4 × 5 =

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.