Table of Contents Table of Contents
Previous Page  34 / 86 Next Page
Information
Show Menu
Previous Page 34 / 86 Next Page
Page Background

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