EO_506
ELETTRONICA OGGI 506 - NOVEMBRE/DICEMBRE 2022 46 TECH FOCUS NEURAL NETS Il risultato finale è una rete che scompone la domanda moltocomplicata“questa immaginemostraunvoltoono” in domande molto semplici a cui è possibile rispondere a livello di singoli pixel. Ciò viene eseguito attraverso una serie di molti livelli, con i livelli iniziali che rispondono a domande molto semplici e specifiche sull’immagine di input, e i livelli successivi che costruiscono una gerarchia di concetti sempre più complessi e astratti. Le reti con questo tipo di struttura a molti strati (due o più strati nascosti) sono chiamate reti neurali profonde (Fig. 3). Certamente non è pratico progettare a mano i pesi e i bias della rete. Invece, preferiremmo utilizzare algoritmi di apprendimento in modo che la rete possa apprendere automaticamente i pesi e i bias (e quindi la gerarchia dei concetti) dai dati di addestramento. I ricercatori negli anni 80 e 90 hanno provato ad utilizzare la discesa stocastica del gradiente e la retro-propagazione per addestrare le reti profonde. Purtroppo, a parte alcune architetture speciali, non hanno avuto molta fortuna, le reti imparerebbero, ma molto lentamente, e in pratica spesso troppo lentamente per essere utili. Dal 2006 è stata sviluppata una serie di tecniche che consentono l’apprendimento in reti neurali profonde. Queste tecniche di deep learning si basano sull’algoritmo “discesa stocastica del gradiente” e sulla retro- propagazione, ma introducono anche nuove idee. Queste tecniche hanno consentito di addestrare reti molto più profonde (e più grandi): ora si possono addestrare regolarmente reti da 5 a 10 livelli nascosti. E si scopre che questi funzionano molto meglio su molti problemi rispetto alle reti neurali poco profonde, cioè le reti con un solo livello nascosto. La ragione, ovviamente, è la capacità delle reti profonde di costruire una complessa gerarchia di concetti. È un po’ come il modo in cui i linguaggi di programmazione convenzionali utilizzano il design modulare e le idee sull’astrazione per consentire la creazione di programmi per computer complessi. Confrontare una rete profonda con una rete superficiale è un po’ come confrontare un linguaggio di programmazione con la capacità di effettuare chiamate di funzione ad un linguaggio ridotto senza la possibilità di effettuare tali chiamate. L’astrazione assume una forma diversa nelle reti neurali rispetto alla programmazione convenzionale, ma è altrettanto importante. Fig. 3 – Le reti neurali profonde sono reti caratterizzate da una certa complessità perché costituite da almeno 2 livelli nascosti – ma che in realtà sono molti di più
Made with FlippingBook
RkJQdWJsaXNoZXIy Mzg4NjYz