DIGITAL
ARTIFICIAL INTELLIGENCE
34
- ELETTRONICA OGGI 467 - GENNAIO/FEBBRAIO 2018
per l’addestramento erano utili solamente per reti poco
profonde, ovvero formate solamente da un ingresso,
un’uscita e un singolo strato nascosto (hidden layer).
Ciò in pratica limitava l’impiego delle rete neurali allo
svolgimento dei compiti relativamente semplici su im-
magini a bassa risoluzione. Per questo motivo verso
la metà degli anni 2000 le attività di ricerca&sviluppo
si sono focalizzate su altre tecniche di apprendimento
automatico come ad esempio le SVM (Support Vector
Machine- macchine a vettori di supporto).
La nascita del deep learning
Nel 2006, alcuni ricercatori dell’Università di Toronto
hanno individuato un metodo per utilizzare tecniche
analaoghe a quelle della backpropagation alle reti neu-
rali formate da numerosi strati nascosti. Questa tipolo-
gia di reti, denominate profonde (deep) ha dato origine
al termine deep learning (apprendimento profondo o
approfondito). La presenza di un gran numero di strati
nascosti ha permesso sia di utilizzare le reti neurali
in applicazioni dove sono presenti ingressi molto più
complessi e di adattare l’architettura della rete in fun-
zione di problemi specifici. In parecchi casi, i molteplici
strati nascosti delle reti utilizzate per il deep learning
convertono dati ad alta dimensionalità di un’immagine
bi-dimensionale in forme con molto meno dimensioni.
Questi ingressi a più bassa dimensionalità vengono
analizzati dagli strati in prossimità dell’uscita in modo
da garantire una migliore comprensione e consentire
alla rete di classificare gli oggetti in gruppi.
Il ruolo delle GPU
I meccanismi di apprendimento sviluppati verso la
metà degli anni 2000 richiedono una mole notevole
di calcoli. Per questo motivo i ricercatori hanno ini-
ziato a sfruttare l’elevata velocità di calcolo delle GPU
(Graphics Processor Unit). Le unità di esecuzione per i
calcoli in virgola mobile a singola precisione a elevato
parallelismo delle GPU sono particolarmente indicate
per accelerare sia la fase di addestramento sia i cal-
coli necessari per l’inferenza quando la rete è pronta
per l’impiego. I risultati ottenuti hanno dimostrato che
una GPU è in grado di eseguire gli algoritmi di deep-
learning a una velocità notevolmente superiore rispet-
to a quella ottenibile con un cluster formato da CPU
tradizionali.
In ogni caso la maggiore velocità di una GPU ha un
prezzo. L’architettura di una GPU è stata espressamen-
te concepita per applicazione di rendering 2D e 3D
piuttosto che per lo svolgimento di compiti di elabo-
razione dei segnali e delle immagini in real-time. Una
GPU tradizionale utilizza una gerarchia di memoria
che privilegia le operazioni che richiedono una note-
vole mole di calcoli su dati che possono essere rag-
gruppati in modo compatto in memoria, tipiche delle
pipeline di rendering 3D.
Ciascuna unità di esecuzione ha accesso a un’area di
memoria locale di ridotte dimensioni all’interno della
quale gli elementi dei dati (data element) devono es-
sere caricati in anticipo. Sebbene ciascuna unità di
esecuzione abbia accesso a matrici (array) condivisi
di più ampie dimensioni, una GPU opera principalmen-
te su questa memoria locale per garantire le massime
prestazioni. Un numero troppo elevato di accessi a me-
morie globali provoca conflitti e una notevole riduzio-
ne delle prestazioni.
Gli algoritmi di deep-lerning, dal canto loro, mancano
della località spazio-temporale tipica di una pipeline di
rendering 3D, in particolar modo per quanto riguarda
gli strati completamente connessi di una rete neurale.
Ciascun neurone di uno strato deve elaborare i dati
provenienti da ciascuno dei neuroni che si trovano
nello strato precedente. L’ampiezza di questi accessi
è di molto superiore rispetto a quella che può essere
contenuta nella memoria locale di un’unità di esecu-
zione di una GPU. Per aggirare questo ostacolo l’appli-
cazione deve quindi caricare differenti gruppi di dati
nelle memorie locali su base frequente: tale modalità
di funzionamento fa aumentare i consumi di potenza e
riduce il tasso di utilizzo delle unità in virgola mobile
ad alta velocità.
La necessità di ricaricare su base continuativa le me-
morie locali non è limitata alla applicazioni di deep-le-
arning. Parecchi algoritmi utilizzati per l’apprendimen-
to automatico e l’elaborazione delle immagini in tempo
reale hanno simili proprietà. Molti utilizzano strutture
che prevedono matrici sparse, orientate ai grafi, per
organizzare i loro dati, costringendo una CPU o una
GPU a raccogliere dati da differenti zone della map-
pa di memoria per il loro completamento. Ciò in netto
contrasto con le matrici dense che sono tipiche dei
tradizionali algoritmi di elaborazione dei segnali e del-
le pipeline per il rendering dell’immagine.
Un approccio differente
Fig. 1 – Il riconoscimento facciale è una delle principali applicazioni
dell’intelligenza artificiale