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.
La decomposizione tensoriale fattorizza i tensori di dati in tensori più piccoli. Le operazioni sui tensori di dati possono essere espresse in termini di moltiplicazione di matrici e prodotto di Kronecker. Il calcolo dei gradienti, un aspetto cruciale dell'algoritmo di retropropagazione, può essere eseguito utilizzando librerie software quali PyTorch e TensorFlow.
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
Definizione 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 .
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
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
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 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.
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 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
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.
Treni di tensori 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." Pertanto i treni di tensori possono essere utilizzati per fattorizzare tensori più grandi in dimensioni maggiori.
Grafi tensoriali 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.
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.
Hardware
Note
Categoria:Tensori Categoria:Apprendimento automatico