Tensore (apprendimento automatico)
Nell'apprendimento automatico, il termine tensore si riferisce informalmente a due concetti diversi: (1) un modo di organizzare i dati e (2) una trasformazione (tensore) multilineare. I dati possono essere organizzati in un array multidimensionale (M-way array), informalmente denominato "tensore dati"; tuttavia, in senso matematico stretto, un tensore è una mappatura multilineare definita su un insieme di spazi vettoriali di dominio in uno spazio vettoriale di codominio. Osservazioni che rappresentano immagini, filmati, volumi, suoni e relazioni tra parole e concetti, memorizzate in un array M -way ("tensore dati"), possono essere analizzate tramite reti neurali artificiali o metodi tensoriali.[1][2][3][4][5]
La decomposizione tensoriale fattorizza i tensori di dati in tensori più piccoli.[1][6] Le operazioni sui tensori di dati possono essere espresse in termini di moltiplicazione di matrici e prodotto di Kronecker.[7] Il calcolo dei gradienti, un aspetto cruciale dell'algoritmo di retropropagazione, può essere eseguito utilizzando librerie software quali PyTorch e TensorFlow.[8][9]
I calcoli sono spesso eseguiti su unità di elaborazione grafica (GPU) tramite CUDA o su hardware dedicato come la Tensor Processing Unit di Google o il Tensor Core di Nvidia. Gli sviluppi in questo settore hanno reso notevolmente più efficienti le architetture delle reti neurali e consentito di aumentare dimensioni e complessità dei modelli che possono essere addestrati.
Storia
[modifica | modifica wikitesto]Definizione
[modifica | modifica wikitesto]Sia un campo come quelli dei numeri reali o dei numeri complessi . Un tensore è una trasformazione multilineare da un insieme di spazi vettoriali (dominio) a uno spazio vettoriale (codominio):
Qui, e sono numeri interi positivi e è il numero di modi di un tensore (noto anche come numero di dimensioni di un array multidimensionale). La dimensionalità della modalità è , per .[5][10][11][12]
In statistica e nell'apprendimento automatico, un'immagine viene vettorializzata se considerata come un'osservazione singola, per cui una raccolta di immagini vettorializzate può essere organizzata come un "tensore di dati". Ad esempio, un insieme di immagini di volti con pixel che derivano da più fattori causali, come una geometria dei volti , un'espressione , una condizione di illuminazione e una condizione di visualizzazione può essere strutturato come tensore di dati (ad esempio un array multidimensionale) dove rappresenta il numero totale di geometrie, il numero totale di espressioni, il numero totale di condizioni di illuminazione e il numero totale di condizioni di visualizzazione. Metodi di fattorizzazione tensoriale come TensorFaces e l'analisi delle componenti indipendenti multilineari (tensoriali) fattorizzano il tensore dei dati in un insieme di spazi vettoriali che si estende a ricomprendere le diverse rappresentazioni dei fattori causali, dove un'immagine è il risultato della trasformazione tensoriale che mappa un insieme di rappresentazioni di fattori causali nello spazio dei pixel.
Un altro approccio all'utilizzo dei tensori nell'apprendimento automatico consiste nell'incorporare direttamente vari tipi di dati. Ad esempio, un'immagine a livelli di grigio, viene comunemente rappresentata come array discreto a 2 dimensioni con dimensionalità dove rappresenta il numero di righe e il numero di colonne. Quando un'immagine viene trattata come un array a 2 dimensioni ossia come tensore del 2° ordine (ovvero come una raccolta di osservazioni colonna/riga), i metodi di fattorizzazione tensoriale calcolano lo spazio colonnare dell'immagine, lo spazio riga dell'immagine e i coefficienti PCA normalizzati o i coefficienti ICA.
Analogamente, un'immagine a colori con canali RGB, può essere considerata come un tensore di dati di terzo ordine o un array a 3 dimensioni.
Nell'elaborazione del linguaggio naturale, una parola può essere espressa come vettore tramite algoritmi quali Word2vec. Quindi diventa un tensore di modalità 1
L'embedding della semantica dell'espressione soggetto-oggetto-verbo richiede di incorporare relazioni fra tre parole. Poiché una parola è essa stessa un vettore, la semantica di soggetto-oggetto-verbo potrebbe essere espressa utilizzando tensori di ordine 3.
In pratica, il progettista di una rete neurale si occupa principalmente della specifica degli embedding, della connessione degli strati tensoriali e delle operazioni eseguite su di essi in una rete. I framework di apprendimento automatico moderni sono in grado di gestire automaticamente l'ottimizzazione, la fattorizzazione tensoriale e la retropropagazione.
Come valori di unità neurali
[modifica | modifica wikitesto]
I tensori possono essere utilizzati come valori delle unità delle reti neurali, estendendo le nozioni di valori scalari, vettoriali e matriciali al caso di più dimensioni.
Il valore di output dell'unità a strato singolo è la combinazione lineare delle sue unità di input con i pesi di connessione filtrato attraverso la funzione di attivazione :
dove

Se ciascun elemento di output di è uno scalare, allora si ha la definizione classica di una rete neurale artificiale. Sostituendo ogni componente unitaria con un tensore, la rete è in grado di rappresentare dati di dimensione superiore come immagini o video:
L'utilizzo di tensori per sostituire i valori delle unità è comune nelle reti neurali convoluzionali, dove ogni unità può essere un'immagine elaborata attraverso più strati. Incorporando i dati nei tensori, tali strutture di rete consentono l'apprendimento di tipi di dati complessi.
In strati completamente connessi
[modifica | modifica wikitesto]
I tensori possono essere usati anche per calcolare gli strati di una rete neurale completamente connessa nella quale il tensore viene applicato all'intero strato anziché ai singoli valori delle unità.
Il valore di output dell'unità a strato singolo è la combinazione lineare delle sue unità di input e dei pesi di connessione filtrata attraverso la funzione di attivazione :
I vettori e dei valori di output possono essere espressi come tensori di ordine 1, mentre i pesi nascosti possono essere espressi come tensori di ordine 2. Nell'esempio che segue, i valori unitari sono scalari, mentre il tensore assume le dimensioni degli strati della rete:
In tale notazione, i valori di output possono essere calcolati come prodotto tensoriale dei tensori relativi all'input e al peso:
che calcola la combinazione lineare come moltiplicazione tensoriale (simile alla moltiplicazione di matrici).
Tale formulazione in termini di tensori consente di calcolare in modo efficiente l'intero strato di una rete completamente connessa trasformando unità e pesi in tensori.
Negli strati convoluzionali
[modifica | modifica wikitesto]Una diversa riformulazione delle reti neurali consente ai tensori di esprimere i livelli di convoluzione di una rete neurale. Un livello convoluzionale ha più input, ognuno dei quali è una data struttura spaziale, come ad esempio un'immagine o un volume. Si effettua la covoluzione dell'input tramite filtraggio preventivo, prima del passaggio allo strato successivo. Un suo utilizzo tipico è il rilevamento o l'isolamento di caratteristiche nel riconoscimento delle immagini.
La convoluzione viene spesso calcolata come la moltiplicazione di un segnale di ingresso con un kernel di filtro . Nel caso di due dimensioni, la forma discreta e finita è la seguente:
dove è l'ampiezza del kernel.
Questa definizione può essere riformulata come prodotto matrice-vettore in termini di tensori che esprimono il kernel, i dati e la trasformata inversa del kernel.[13]
dove e rappresentano la trasformata inversa, i dati e il kernel. La derivazione è più complessa quando il kernel di filtraggio include anche una funzione di attivazione non lineare come la sigmoide o la ReLU.
I pesi nascosti del livello di convoluzione sono i parametri del filtro. Questi possono essere diminuiti con uno strato di pooling che riduce la risoluzione (dimensione) dei dati e possono anche essere espressi come operazione tensoriale.
Fattorizzazione tensoriale
[modifica | modifica wikitesto]Un importante contributo dei tensori all'apprendimento automatico è la capacità di fattorizzare i tensori per scomporre i dati in fattori costituenti o ridurre i parametri appresi. Le tecniche di modellazione dei tensori derivano dalle decomposizioni tensoriali lineari (decomposizione CANDECOMP/Parafac) e multilineari (Tucker).
Decomposizione di Tucker
[modifica | modifica wikitesto]
La decomposizione di Tucker, considerando, a titolo d'esempio, un array a 3 dimensioni , scompone il tensore in tre matrici e in un tensore più piccolo . La forma delle matrici e del nuovo tensore è tale che il numero totale di elementi risulta ridotto. I nuovi tensori hanno le forme seguenti
Quindi il tensore originale può essere espresso come prodotto tensoriale di questi quattro tensori:
Nell'esempio mostrato in figura, le dimensioni dei tensori sono
- : I=8, J=6, K=3,
- : I=8, P=5,
- : J=6, Q=4,
- : K=3, R=2,
- : P=5, Q=4, R=2.
Il numero totale di elementi nella fattorizzazione di Tucker è
Il numero di elementi nel tenore originario è 144, con conseguente riduzione dei dati da 144 a 110 elementi, ossia una riduzione del 23% nel numero dei parametri o delle dimensioni dei dati. Per tensori iniziali ancor più grandi, anche in base al rango (ridondanza) del tensore, i guadagni possono essere più significativi.
Il lavoro di Rabanser et al. fornisce un'introduzione ai tensori con maggiori dettagli sull'estensione della decomposizione di Tucker a N-dimensioni, andando quindi oltre l'esempio sopra mostrato.[5]
Treni di tensori
[modifica | modifica wikitesto]Un'altra tecnica per decomporre i tensori riscrive il tensore iniziale come una sequenza (treno) di tensori di dimensioni inferiori. Un treno di tensori (TT) è una sequenza di tensori di rango ridotto, chiamati fattori canonici. Il tensore originale può essere espresso come combinazione lineare della sequenza.
La tecnica è stata sviluppata nel 2011 da Ivan Oseledts: l'autore osserva che la decomposizione di Tucker è "adatta per piccole dimensioni, specialmente per il caso tridimensionale. Per d grandi essa non è altrettanto utile." [14] Pertanto i treni di tensori possono essere utilizzati per fattorizzare tensori più grandi in dimensioni maggiori.
Grafi tensoriali
[modifica | modifica wikitesto]L'architettura dati unificata e la differenziazione automatica dei tensori hanno consentito la progettazione di modelli di apprendimento automatico di livello superiore sotto forma di grafi tensoriali. Ciò ha portato a nuove architetture, come le reti convoluzionali tensore-grafo (TGCN), capaci di identificare associazioni altamente non lineari nei dati, di combinare più relazioni e scalare gradualmente, pur rimanendo robuste e performanti.[3]
Questi sviluppi stanno avendo un impatto su tutti i task di apprendimento automatico, come il text mining e il clustering, l'uso di dati variabili nel tempo e le reti neurali, casi nei quali i dati di input rappresentano grafi sociali e i dati cambiano dinamicamente.[15][16][17][18]
Hardware
[modifica | modifica wikitesto]Note
[modifica | modifica wikitesto]- 1 2 M. Alex O. Vasilescu e Demetri Terzopoulos, Multilinear (Tensor) Image Synthesis, Analysis, and Recognition [Exploratory DSP], in IEEE Signal Processing Magazine, vol. 24, n. 6, 2007-11, pp. 118–123, DOI:10.1109/MSP.2007.906024.
- ↑ A MULTILINEAR (TENSOR) ALGEBRAIC FRAMEWORK FOR COMPUTER GRAPHICS, COMPUTER VISION, AND MACHINE LEARNING (PDF), su tspace.library.utoronto.ca. URL consultato il 18 aprile 2026 (archiviato dall'url originale il 27 gennaio 2019).
- 1 2 Vassilis N. Ioannidis, Antonio G. Marques e Georgios B. Giannakis, Tensor Graph Convolutional Networks for Multi-Relational and Robust Learning, in IEEE Transactions on Signal Processing, vol. 68, 2020, pp. 6535–6546, DOI:10.1109/TSP.2020.3028495.
- ↑ Sidiropoulos, Tensor Decomposition for Signal Processing and Machine Learning, in IEEE Transactions on Signal Processing, vol. 65, 1º luglio 2017, pp. 3551–3582, Bibcode:2017ITSP...65.3551S, DOI:10.1109/TSP.2017.2690524, ISSN 1053-587X, arXiv:1607.01668.
- 1 2 3 Stephan Rabanser, Oleksandr Shchur e Stephan Günnemann, Introduction to Tensor Decompositions and their Applications in Machine Learning, 29 novembre 2017, DOI:10.48550/arXiv.1711.10781.
- ↑ Nicholas D. Sidiropoulos, Lieven De Lathauwer e Xiao Fu, Tensor Decomposition for Signal Processing and Machine Learning, in IEEE Transactions on Signal Processing, vol. 65, n. 13, 1º luglio 2017, pp. 3551–3582, DOI:10.1109/TSP.2017.2690524.
- ↑ (EN) Ian Grout e Lenore Mullin, Hardware Considerations for Tensor Implementation and Analysis Using the Field Programmable Gate Array, in Electronics, vol. 7, n. 11, 13 novembre 2018, pp. 320, DOI:10.3390/electronics7110320.
- ↑ Paszke, PyTorch: An Imperative Style, High-Performance Deep Learning Library, in Proceedings of the 33rd International Conference on Neural Information Processing Systems, 2019, pp. 8026–037, arXiv:1912.01703.
- ↑ Adabi, TensorFlow: A System for Large-Scale Machine Learning (PDF), in Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation, 2016, arXiv:1605.08695.
- ↑ M.A.O. Vasilescu e D. Terzopoulos, Multilinear Analysis of Image Ensembles: TensorFaces (PDF), Lecture Notes in Computer Science 2350; (Presented at Proc. 7th European Conference on Computer Vision (ECCV'02), Copenhagen, Denmark), Springer, Berlin, Heidelberg, 2002, DOI:10.1007/3-540-47969-4_30, ISBN 9783540437451.
- ↑ A.O. Vasilescu e D. Terzopoulos, Multilinear Independent Components Analysis, in 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05), vol. 1, IEEE, pp. 547–553, DOI:10.1109/cvpr.2005.240.
- ↑ (EN) Vasilescu, M. Alex O., A Multilinear (Tensor) Framework for Computer Graphics, Computer Vision and Machine Learning (PDF), 2009.
- ↑ David Budden, Alexander Matveev e Shibani Santurkar, Deep Tensor Convolution on Multicores, 11 giugno 2017, DOI:10.48550/arXiv.1611.06565.
- ↑ I. V. Oseledets, Tensor-Train Decomposition, in SIAM Journal on Scientific Computing, vol. 33, n. 5, 2011-01, pp. 2295–2317, DOI:10.1137/090752286.
- ↑ Rafika Boutalbi, Mira Ait-Saada e Anastasiia Iurshina, Tensor-based Graph Modularity for Text Data Clustering, in Proceedings of the 45th International ACM SIGIR Conference on Research and Development in Information Retrieval, Association for Computing Machinery, 7 luglio 2022, pp. 2227–2231, DOI:10.1145/3477495.3531834.
- ↑ Franco Manessi, Alessandro Rozza e Mario Manzo, Dynamic graph convolutional networks, in Pattern Recognition, vol. 97, 1º gennaio 2020, pp. 107000, DOI:10.1016/j.patcog.2019.107000.
- ↑ Osman Asif Malik, Shashanka Ubaru e Lior Horesh, Dynamic Graph Convolutional Networks Using the Tensor M-Product, 23 gennaio 2021, DOI:10.48550/arXiv.1910.07643.
- ↑ O. A. Malik, S. Ubaru, L. Horesh, M. E. Kilmer, H. Avron, Tensor graph neural networks for learning on time varying graphs (PDF), in NeurIPS Workshop on Graph Representation Learning, 2019.