IT202000018043A1 - Procedimenti e sistemi di elaborazione di rete neurale artificiale - Google Patents

Procedimenti e sistemi di elaborazione di rete neurale artificiale Download PDF

Info

Publication number
IT202000018043A1
IT202000018043A1 IT102020000018043A IT202000018043A IT202000018043A1 IT 202000018043 A1 IT202000018043 A1 IT 202000018043A1 IT 102020000018043 A IT102020000018043 A IT 102020000018043A IT 202000018043 A IT202000018043 A IT 202000018043A IT 202000018043 A1 IT202000018043 A1 IT 202000018043A1
Authority
IT
Italy
Prior art keywords
processing
weight
lattice
vectors
computer
Prior art date
Application number
IT102020000018043A
Other languages
English (en)
Inventor
Diego Carrera
Matteo Colella
Giuseppe Desoli
Giacomo BORACCHI
Beatrice Rossi
Pasqualina Fragneto
Luca Frittoli
Original Assignee
St Microelectronics Srl
Milano Politecnico
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl, Milano Politecnico filed Critical St Microelectronics Srl
Priority to IT102020000018043A priority Critical patent/IT202000018043A1/it
Priority to EP21184536.7A priority patent/EP3968235A1/en
Priority to US17/383,132 priority patent/US20220027715A1/en
Priority to CN202110835501.1A priority patent/CN113971456A/zh
Publication of IT202000018043A1 publication Critical patent/IT202000018043A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks

Description

DESCRIZIONE dell?invenzione industriale intitolata:
?Procedimenti e sistemi di elaborazione di rete neurale artificiale?
TESTO DELLA DESCRIZIONE
Campo tecnico
La descrizione si riferisce a procedimenti e sistemi per l?elaborazione di rete neurale artificiale (ANN), quale, ad esempio, l?elaborazione di rete neurale convoluzionale (CNN).
Una o pi? forme di attuazione possono essere applicate ad una macchina di accelerazione hardware (?hardware accelerator engine?) configurata per eseguire l?elaborazione ANN, quali, ad esempio unit? di elaborazione neurali (NPU).
Sfondo Tecnologico
Una rete neurale (artificiale) convoluzionale (brevemente, CNN) comprende strumenti computerizzati che sfruttano algoritmi di apprendimento profondo (?deep learning?) per eseguire attivit? di elaborazione di immagini.
La classificazione dell?immagine di un grande felino quale un leopardo o un giaguaro pu? essere menzionata come un esempio di tale elaborazione.
Una CNN comprende una pluralit? di livelli, ad esempio una pluralit? di livelli (?layers?) di elaborazione (nascosti) accoppiati al livello (?layer?) d?ingresso e configurati per applicare l?elaborazione di dati ad un tensore di immagini ricevute da esso. I livelli di elaborazione possono comprendere, ad esempio, un?elaborazione convoluzionale e/o di pooling, e la CNN pu? comprendere un livello d?uscita accoppiato al livello d?ingresso tramite i livelli nascosti.
I livelli di elaborazione convoluzionali eseguono la convoluzione dei dati dell?immagine in ingresso con filtri, anche noti come kernel di convoluzione, ed applicano una funzione di attivazione ai dati convoluti, producendo, come risultato, un insieme di features (?caratteristiche?).
I livelli di elaborazione di pooling riducono le dimensioni dell?insieme di caratteristiche eseguendo il sottocampionamento, quale, ad esempio, il campionamento massimo o medio.
I livelli di elaborazione possono utilizzare sino a milioni di valori parametrici, anche noti come pesi. I valori di peso sono ?appresi?, vale a dire sono pre-disposti, attraverso una fase di elaborazione di addestramento che pu? implicare grandi insiemi di dati o dataset di addestramento.
Ad esempio, una CNN pu? essere addestrata utilizzando una pluralit? di immagini di animali, ed essa pu? essere configurata per identificare leopardi o giaguari.
Come menzionato, milioni di valori di peso possono essere utilizzati nell?elaborazione CNN, che pu? utilizzare grandi aree di memoria.
I livelli di elaborazione possono implicare grandi numeri di operazioni dot product tra i pesi e i vettori di features, che possono condurre ad alti costi di calcolo.
Le soluzioni esistenti (come discusso, ad esempio, in Choi, Y., El-Khamy, M., & Lee, J.: ?Universal deep neural network compression?, 2018, arXiv:1802.02271) indagano sulla compressione con perdite di reti neurali profonde (DNN) tramite quantizzazione di peso e codifica sorgente senza perdite per un dispiegamento efficiente di memoria, introducendo una compressione DNN ?universale? tramite una quantizzazione reticolare randomizzata universale di DNN, che randomizza pesi DNN tramite retinatura casuale uniforme prima della quantizzazione reticolare e pu? eseguire in modo quasi ottimale su qualsiasi sorgente senza affidarsi alla conoscenza della sua distribuzione di probabilit?. Il documento citato presenta un procedimento di sintonizzazione fine di DNN con vettori quantizzati per recuperare la perdita di prestazioni dopo la quantizzazione.
Una tale soluzione pu? esibire vari svantaggi quali: riduzione di accuratezza della CNN dopo la quantizzazione,
utilizzo di un?elaborazione di sintonizzazione fine di parole di codice o codeword aggiuntiva, potenzialmente gravosa dal punto di vista computazionale, per far fornte a tale riduzione di accuratezza,
maggior rischio di diminuzione di prestazioni CNN.
Ridurre consumo di potenza e costi delle CNN (facilitando applicazioni di Internet-delle-Cose o Internetof-Things (IoT) che possono essere basate sul calcolo al margine o edge computing, ad esempio) ? dunque un obiettivo che vale la pena perseguire.
I circuiti di elaborazione configurati per eseguire l?elaborazione ANN, quali, ad esempio, unit? di elaborazione neurali (NPU), possono comprendere macchine di accelerazione hardware comprendenti una funzionalit? di compressione/decompressione associata a pesi, possibilmente riducendo i vincoli di archiviazione della memoria delle CNN.
Le relative implementazioni hardware possono risentire di svantaggi quali:
colli di bottiglia di memoria associati al fetching di pesi ed attivazioni, e/o
maggiori costi di area di memoria.
Scopo e sintesi
Uno scopo di una o pi? forme di attuazione ? di contribuire a superare gli svantaggi discussi in precedenza.
Secondo una o pi? forme di attuazione, un tale scopo pu? essere conseguito per mezzo di un procedimento avente le caratteristiche esposte nelle rivendicazioni che seguono.
Una o pi? forme di attuazione possono riferirsi ad un corrispondente prodotto informatico.
A questo scopo, una o pi? forme di attuazione possono comprendere un prodotto informatico caricabile nella memoria di almeno un circuito elaboratore (ad es., un computer) e comprendente porzioni di codice software per eseguire le fasi del procedimento quando il prodotto ? eseguito su almeno un circuito elaboratore. Come qui utilizzato, il riferimento ad un tale prodotto informatico ? compreso come essere equivalente al riferimento ad un mezzo leggibile da elaboratore contenente istruzioni per controllare il sistema di elaborazione al fine di coordinare l?implementazione del procedimento secondo una o pi? forme di attuazione. Il riferimento ad ?almeno un elaboratore? mira ad evidenziare l?eventualit? che una o pi? forme di attuazione siano implementate in forma modulare e/o distribuita.
Una o pi? forme di attuazione possono riferirsi ad un corrispondente sistema (un sistema di accelerazione HW pu? essere esemplificativo di un tale sistema) avente memorizzati in esso pesi compressi con un procedimento come qui esemplificato.
Una o pi? forme di attuazione possono riferirsi ad un corrispondente procedimento di decompressione di tali pesi e ad un corrispondente prodotto informatico.
Le rivendicazioni sono parte integrante dell?insegnamento tecnico qui fornito con riferimento alle forme di attuazione.
Una o pi? forme di attuazione possono ridurre gli oneri computazionali relativi all?esecuzione di un forward-pass di inferenza nell?elaborazione CNN.
Una o pi? forme di attuazione possono dunque facilitare di evitare di avere grandi percorsi di dati (?data-paths?) di calcolo paralleli associati ad operazioni eseguite in modo frequente, quali convoluzioni di tensore 3D che possono risultare in un grande numero di operazioni di moltiplicazione-somma-accumulo, ad es. proporzionali al numero di coefficienti (pesi) di una certa rete neurale.
Una o pi? forme di attuazione possono fornire uno o pi? dei seguenti vantaggi:
viene facilitata la compressione di pesi CNN, riducendo di conseguenza l?impatto di memoria dell?elaborazione CNN, viene risparmiata l?area per l?immagazzinamento di pesi in architetture incorporata, riducendo di conseguenza i costi dell?area di memoria che possono essere significativi in tecnologie di processi di silicio subanometrici avanzate, viene facilitata l?ottimizzazione su misura riducendo l?errore di quantizzazione relativo alla quantizzazione vettoriale reticolare mantenendo al contempo l?accuratezza della rete originale,
viene efficientemente contrastata la diminuzione di prestazioni relativa a colli di bottiglia di memoria associati al fetching di pesi ed attivazioni (in particolare per grandi tensori di pesi ad es. livelli FC, LSTM/GRU), viene ridotta la complessit? dell?hardware, il che facilita l?utilizzo di un blocco di circuito di decompressione relativamente semplice, che conduce eventualmente ad una progettazione pi? efficiente anche per strutture di accelerazione CNN,
viene ridotto l?impatto del calcolo sull?utilizzo della larghezza di banda.
Breve descrizione delle varie viste dei disegni
Una o pi? forme di attuazione verranno ora descritte, solo a titolo di esempio non limitativo, facendo riferimento alle Figure annesse, in cui:
la Figura 1 ? un diagramma esemplificativo di uno stadio di elaborazione di rete neurale convoluzionale, CNN,
la Figura 2 ? un diagramma esemplificativo di una macchina di accelerazione hardware,
le Figure 3A e 3B sono diagrammi esemplificativi di principi sottostanti una o pi? forme di attuazione,
la Figura 4 ? un diagramma di flusso esemplificativo di un procedimento come dalla presente descrizione,
le Figure 5A, 5B e 5C sono diagrammi esemplificativi di principi sottostanti una o pi? forme di attuazione,
le Figure 6A e 6B sono grafici esemplificativi di una funzione adatta per eseguire una porzione di Figura 4, le Figure 7A a 7C sono diagrammi esemplificativi di principi sottostanti caratteristiche opzionali reticolari, la Figura 8 ? un diagramma esemplificativo di principi sottostanti una o pi? forme di attuazione.
Descrizione dettagliata di forme di attuazione esemplificative
Nella descrizione che segue, sono illustrati uno o pi? dettagli specifici, mirati a fornire una comprensione approfondita di esempi di forme di attuazione di questa descrizione. Le forme di attuazione possono essere ottenute senza uno o pi? dei dettagli specifici, o con altri procedimenti, componenti, materiali, ecc. In altri casi, note strutture, materiali, o operazioni non sono illustrati o descritti nel dettaglio in modo che certi aspetti delle forme di attuazione non verranno resi poco chiari.
Il riferimento ad ?una forma di attuazione? nella struttura della presente descrizione mira ad indicare che una particolare configurazione, struttura, o caratteristica descritta in relazione alla forma di attuazione ? compresa in almeno una forma di attuazione. Pertanto, frasi quali ?in una forma di attuazione? che possono essere presenti in uno o pi? punti della presente descrizione non fanno necessariamente riferimento alla singola e alla stessa forma di attuazione.
Inoltre, particolari conformazioni, strutture, o caratteristiche possono essere combinate in qualsiasi modo adeguato in una o pi? forme di attuazione.
Le intestazioni/riferimenti qui utilizzati sono forniti semplicemente per comodit? e pertanto non definiscono la portata di protezione o l?ambito delle forme di attuazione.
Per tutte le figure qui annesse, parti o elementi simili sono indicati con riferimenti/numeri simili; per brevit? una corrispondente descrizione non verr? ripetuta per ciascuna ed ogni figura.
Inoltre, per tutta questa descrizione, la dicitura "(elaborazione) rete neurale" come utilizzata, ad esempio, in espressioni come elaborazione di rete neurale artificiale (ANN) o elaborazione di rete neurale convoluzionale (CNN), mira a designare l?elaborazione di segnali implementata da macchina eseguita tramite strumenti hardware (HW) e/o software (SW).
In aggiunta ad un livello d?ingresso, configurato per ricevere un tensore di immagine d?ingresso I con una certa dimensione, ad esempio un tensore di immagine I avente una dimensione data dalla larghezza di immagine L per un?altezza di immagine (ad es., uguale alla larghezza di immagine L) per una profondit? di immagine (ad es., 1) per un numero di immagini nel tensore I (ad es., 1), una rete neurale convoluzionale (CNN) 10 come illustrato in Figura 1 pu? comprendere una pluralit? di livelli di elaborazione 100, 102, 104, 106, 108, 110 comprendente:
una pluralit? di livelli di elaborazione (nascosti) 100, 102, 104, 106, 108 accoppiata al livello d?ingresso e configurata per applicare ad un tensore di immagine O da essa ricevuta l?elaborazione di dati quale l?elaborazione convoluzionale e/o di pooling, ad esempio, e
un livello d?uscita 110 accoppiato al livello d?ingresso tramite i livelli nascosti 100, 102, 104, 106, 108, il livello d?uscita 110 comprendente, ad esempio, un livello completamente connesso.
Come illustrato, i livelli di elaborazione 100, 102, 104, 106, 108, possono essere configurati per produrre rispettive feature maps (?mappe di caratteristiche?) F1, F2, F3, F4. Ciascuna tale feature map pu? avere una dimensione data da una larghezza di feature map L1, L2, L3, L4 per un?altezza di feature map (che pu? essere uguale alla larghezza L1, L2, L3, L4) per canali di feature map (ad es., tre canali per un?immagine RGB avente colori rosso, verde e blu), per un numero di mappe.
In una o pi? forme di attuazione, i livelli di elaborazione 100, 102, 104, 106, 108 possono avere un?architettura di percettrone multilivello (brevemente, MLP) comprendente una pluralit? di unit? di elaborazione indicate come percettroni.
Un singolo i-esimo percettrone nella pluralit? di percettroni pu? essere identificato da una tupla di valori comprendenti valori di peso valori di offset ed una funzione di attivazione
Come esemplificato in Figura 1, un livello di elaborazione convoluzionale, come quello referenziato come 102 (preso come un esempio dei vari livelli), comprende almeno un kernel di convoluzione (matrice) avente una <dimensione che pu? essere espressa come:>
dove
H rappresenta un?altezza del kernel,
T rappresenta una larghezza del kernel,
K rappresenta un numero di kernel, ad es., K=1, e C rappresenta un numero di canali d?ingresso, che pu? essere uguale ad un numero di canali (colore di immagine) della feature map in ingresso F1.
Il livello d?uscita 110 pu? comprendere un livello completamente connesso, che ? un tipo di livello convoluzionale avente connessioni a tutte le attivazioni nel livello precedente.
Un livello convoluzionale quale 102 (nuovamente preso come un possibile esempio) pu? essere configurato per applicare una funzione di attivazione su una correlazione incrociata (?sliding dot product?).
Una tale operazione pu? essere espressa, ad esempio, <come:>
<dove >
? una versione trasposta del vettore di peso
(corrispondente al kernel),
a ? il vettore di feature in ingresso, ad es., calcolato dal livello di elaborazione 100 che precede quello considerato 102,
? ? la funzione di attivazione del livello 102, e b ? l?uscita risultante dall?applicazione della funzione di attivazione ?al prodotto del kernel e del vettore di feature d?ingresso.
Come esemplificato in Figura 2, un?unit? di elaborazione neurale (NPU) 20 pu? comprendere una circuiteria di elaborazione configurata per eseguire l?elaborazione CNN.
Il documento EP 3 346 425 A1 discute un circuito NPU adatto per l?utilizzo nell?accelerare, ad esempio, l?elaborazione CNN.
Come esemplificato in Figura 2, un tale circuito NPU 20 comprende:
una scheda di sistema su chip 200 configurata per ospitare la circuiteria di elaborazione,
un blocco fornitore di segnale di clock 202,
unit? di accesso diretto alla memoria (DMA) 206, 206a, 206g per accedere ad un blocco di circuito di memoria, ad es., tramite un?interfaccia di bus 204, in modi di per s? noti,
una pluralit? di interfacce d?ingresso/uscita 208, 210, un blocco di circuito di commutazione del flusso 220, configurato per gestire il traffico di dati fra elementi diversi della scheda,
un blocco di circuito di codifica/decodifica di pesi 230, configurato per elaborare valori di peso dalla memoria, ad es., reperiti tramite i DMA 206 e passati dal commutatore di flusso 220,
un insieme di circuiti di accelerazione di configurazione 232, 232a, 232b,
un insieme di ulteriori blocchi di circuito di elaborazione 234, 236, 240, ad esempio per funzioni di pooling, attivazione, ausiliarie.
In particolare, i valori di peso possono essere decodificati iniziando da valori di peso codificati che possono essere codificati (o compressi) per ridurre l?impronta di memoria di esecuzione della CNN sulla NPU 20.
Ad esempio, i valori di peso possono essere codificati applicando ad essi l?elaborazione di quantizzazione.
Le tecniche di quantizzazione vettoriale possono essere adatte per eseguire una tale elaborazione di quantizzazione. Ad esempio un vettore d-dimensionale pu? essere mappato su un insieme finito di vettori C = {ci: i = 1, 2, ..., N}, dove ciascun vettore ci pu? essere indicato come una parola di ?codice?. L?insieme C di tutte le parole di codice pu? essere indicato come ?codebook?. Ciascuna parola di codice pu? essere associata alla regione confinante pi? vicina indicata come ?regione di Voronoi?.
Nella quantizzazione vettoriale reticolare (brevemente, LVQ), il codebook pu? comprendere punti di un reticolo, con i centroidi delle regioni di Voronoi utilizzati come vettori di approssimazione.
Come qui discusso, un reticolo L di dimensione d ? un insieme di tutte le combinazioni lineari intere di vettori di base b1, ?, bd nello spazio Euclideo d-dimensionale, che <pu? essere espresso come:>
Come esemplificato in Figure 3A e 3B, ad esempio: un primo reticolo bidimensionale (d=2), ha una prima coppia di vettori di base b1, b2 che pu? essere espressa in coordinate Cartesiane come:
un secondo reticolo bidimensionale (d=2), ad es., un reticolo esagonale, ha una seconda coppia di vettori di base <b1, b2 che pu? essere espressa in coordinate Cartesiane come:>
Rispetto ad altre tecniche di quantizzazione vettoriale, la LVQ pu? esibire vantaggi quali:
utilizzo di un codebook fisso, poich? i punti di reticolo sono determinati dalla scelta della base del reticolo;
veloce quantizzazione e di indicizzazione nella misura in cui una struttura reticolare facilita il mantenimento organizzato di punti di reticolo.
Per semplicit?, una o pi? forme di attuazione sono discusse nel seguito facendo riferimento ad una CNN addestrata avente valori di peso pre-impostati, restando peraltro inteso che un tale scenario ? puramente esemplificativo e in nessun modo limitativo.
Come esemplificato al 40 in Figura 4, un procedimento per comprimere valori di peso, pu? comprendere:
selezionare (blocco 400) un insieme di parametri da codificare tra parametri di CNN; ci? pu? implicare la selezione di un tipo di livello di elaborazione, ad es., convoluzionale o completamente connesso, e/o un valore di parametro dimensionale d per il reticolo da utilizzare, ad es., un valore pari, intero, quale d=2 o d=4, per esempio;
eseguire la vettorizzazione di valori di peso (blocco 402), ossia immagazzinare valori di peso come elementi vettoriali, in cui una tale vettorizzazione pu? comprendere ricevere una matrice di valori di peso ed applicare ad essa l?elaborazione di trasformazione di dati, producendo come risultato un insieme di vettori di peso, come discusso nel seguito;
applicare l?elaborazione di normalizzazione (blocco 404) all?insieme prodotto di vettori di peso, quale una normalizzazione comprendente la risoluzione di un problema di ottimizzazione, come discusso nel seguito, e
eseguire la quantizzazione vettoriale reticolare, LVQ (blocco 406) utilizzando il valore di parametro dimensionale (intero) d per selezionare un reticolo per la quantizzazione, producendo, come risultato, un codebook di parole di codice; indicizzare (blocco 408) parole di codice prodotte applicando la LVQ, l?indicizzazione comprendente codificare un i-esimo elemento del reticolo selezionato utilizzando una tupla di indici
Per semplicit?, le forme di attuazione sono qui principalmente discusse facendo riferimento ad un reticolo bidimensionale, (ad es., d=2), rimanendo peraltro inteso che una tale dimensione di reticolo ? puramente esemplificativa e in nessun modo limitativa.
Si nota che in una o pi? forme di attuazione pu? essere vantaggioso selezionare un valore del parametro dimensionale d che ? un intero multiplo o divisore della dimensione dei kernel, poich? ci? pu? facilitare la vettorizzazione 402 di valori di peso, come discusso nel seguito.
Come esemplificato nelle Figure 5A a 5D, una matrice di valori di peso di un livello convoluzionale, ad esempio quello indicato tramite 102 in Figura 1, pu? essere rappresentata come una griglia multi-dimensionale in cui elementi sono i valori di peso, la griglia avendo un?altezza di griglia H, una larghezza di griglia T, un numero di canali C ed un numero di kernel K. Qualsiasi elemento della griglia multi-dimensionale pu? essere identificato, ad esempio, tramite un insieme di indici, uno per ciascuna dimensione, ad es.,
Per semplicit?, le Figure 5A a 5D si riferiscono ad un caso esemplificativo dove la matrice a una pari altezza, larghezza e numero di canali, ad es., H=C=T=3, restando peraltro inteso che tali valori esemplificativi sono puramente esemplificativi e in nessun modo limitativi.
Le Figure 5A a 5D sono diagrammi esemplificativi dell?esecuzione di vettorizzazione di valori di peso 402, che pu? comprendere:
selezionare un ordine di dimensioni di matrice lungo la quale gli elementi di elaborazione della matrice ad es., prima la dimensione del canale C seguita dalla larghezza T, ad esempio che associano ciascun indice dell?elemento ad una dimensione, ad es., che associa l?indice j alla dimensione di canale C, l?indice l alla dimensione di larghezza T, l?indice m alla dimensione di altezza H e l?indice k al numero di kernel K;
estrarre elementi di peso della matrice come elementi di rispettivi vettori lungo la dimensione selezionata, producendo, come risultato, un insieme di vettori i vettori aventi una dimensione d uguale al valore di parametro dimensionale selezionato, ad es., un valore pari d=2 nell?esempio considerato;
ridisporre l?insieme di vettori prodotto ad esempio impilando per voci l?insieme di vettori prodotto, producendo una matrice U avente vettori di peso
impilati per voci, ad es., per colonne.
Il ridisporre gli elementi di peso della matrice/griglia di pesi come esemplificato in Figure 5A a 5D pu? comprendere:
come esemplificato in Figura 5A, estrarre un primo insieme di valori di peso u11, u12 dalla griglia e ridisporre un tale primo insieme di valori u11, u12 in un primo vettore u1, ad es., dove il primo insieme di valori u11, u12 comprende un primo valore di peso u11 corrispondente ad un elemento della grig nte un primo insieme di valori di indice, ad es. ed un secondo valore di peso u12 corrispondente ad un elemento della griglia avente un secondo insieme di valori di indice con l?indice j della dimensione di canale C incrementato di uno rispetto al primo insieme di valori di indice, ad es.
come esemplificato in Figura 5B, estrarre un secondo insieme di valori di peso u21, u22 dalla griglia di pesi
e ridisporre un tale secondo insieme di valori u21, u22 in un secondo vettore u2, ad es., dove il secondo insieme di valori di peso u21, u22 comprende un terzo valore di peso u21 corrispondente ad un elemento della griglia
avente un terzo insieme di valori di indice con l?indice j della dimensione di canale C incrementato di uno rispetto a quello del secondo valore di peso u12, ad es. ed un quarto valore di peso u22 corrispondente ad un elemento della griglia avente un quarto insieme di valori di indice con l?indice j della dimensione di canale reimpostato ad 1 per via del raggiungimento del suo massimo e l?indice l della dimensione di larghezza incrementato di uno rispetto a quello del terzo valore di peso u21, ad es.
come esemplificato in Figura 5C, estrarre un terzo insieme di valori di peso u21, u22 dalla griglia di pesi
e ridisporre un tale terzo insieme di valori u31, u32 in un secondo vettore u2, ad es., dove il terzo insieme di valori di peso u31, u32 comprende un quinto valore di peso u31 corrispondente ad un elemento della griglia
avente un quinto insieme di valori di indice con l?indice j della dimensione di canale C incrementato di uno rispetto a quello del quarto valore di peso u12, ad es. ed un sesto valore di peso u32 corrispondente ad un elemento della griglia avente un sesto insieme di valori di indice con l?indice j della dimensione di canale C incrementato di uno <rispetto a quello del quinto valore di peso u>31<, ad es.>
Nell?esempio considerato, ridisporre l?insieme di vettori prodotto pu? produrre la matrice U avente il primo vettore u1, secondo vettore u2 e terzo vettore u3 come rispettive prime, seconde e terze colonne, il che pu? essere <espresso come: >
Un modo per raccogliere valori dagli elementi di griglia come esemplificato nelle Figure 5A a 5C pu? essere sostanzialmente di seguire un percorso di scrittura ?bustrofedica? lungo una certa dimensione, ad es., la dimensione di canale C, raccogliendo valori di peso mentre si ?ara? nella griglia e ridisponendoli in vettori ogni qual volta che ? stato raggiunto un numero di ?arature? uguale al parametro dimensionale selezionato.
In una o pi? forme di attuazione, la matrice U prodotta come risultato della ridisposizione di valori di peso 402 pu? essere utilizzata nell?applicazione di un?elaborazione di normalizzazione 404, che pu? comprendere l?utilizzo della discesa stocastica del gradiente (SGD) per risolvere un problema di ottimizzazione che pu? essere espresso come:
dove
<S indica l?insieme di tutti i campioni di addestramento, > sono rispettivamente le attivazioni d?ingresso ed uscita del livello selezionato, ad es. il livello indicato <tramite 102 in Figura 1,>
<? la funzione di attivazione (ad es., una ReLU) >
? un termine di regolarizzazione calcolato in
funzione di valori della matrice U prodotti come risultato della ridisposizione di valori di peso 402.
Specificamente, il termine di regolarizzazione pu? <essere espresso com> <e:>
<dove>
? una varianza statistica, il cui valore pu? essere
impostato dall?utente, e
cw ? un vettore di parola di codice del reticolo L utilizzato nell?elaborazione LVQ 406.
Un tale termine di regolarizzazione ? progettato per raggiungere un valore minimo se la k-esima colonna della matrice U ? anche una parola di codice del reticolo
La scelta del succitato problema di ottimizzazione da risolvere si pu? basare sulla seguente logica:
<il primo termine del problema, espresso come >
facilita la produzione di valori che possono approssimare adeguatamente le attivazioni d?uscita della CNN, date le stesse attivazioni d?ingresso, e
il termine di regolarizzazione pu? facilitare i pesi che sono pi? vicini, aventi una distanza ridotta da, ai punti (regione centroide di Voronoi) del reticolo scelto L.
<La Figura 6A ? un grafico esemplificativo della funzione > in uno spazio Cartesiano tridimensionale.
<La Figura 6B ? una proiezione del grafico precedente, >
varianza diversi ad es.,
Opzionalmente, quando si calcola il termine di regolarizzazione un ulteriore fattore di scalamento ?k pu? essere applicato alla matrice U, in modo da migliorare l?adattamento dei vettori di peso al reticolo L selezionato.
Le Figure 7A a 7C sono diagrammi che mostrano possibili distribuzioni diverse degli elementi della matrice U (rappresentata da punti circolari riempiti nei diagrammi), quando diversi fattori di scalamento ?1, ?2, ?3 sono applicati ad essa rispetto ad un reticolo L bidimensionale (d=2) avente vettori di base b1, b2 che possono essere espressi in coordinate Cartesiane come: (i centroidi di regione di Voronooi del reticolo L sono rappresentati da punti trasversali nei diagrammi), ad es., ?1=1, ?2=0.5, ?3=0.15.
In una o pi? forme di attuazione, diminuire il valore del fattore di scalamento ? pu? aumentare una densit? della distribuzione di elementi della matrice U rispetto al reticolo L selezionato.
Come qui esemplificato, risolvere il problema della normalizzazione, con o senza scalamento, pu? fornire una matrice U? normalizzata ad ulteriori stadi di elaborazione, come ad esempio lo stadio di esecuzione della quantizzazione vettoriale reticolare, LVQ, 406.
Ci? pu? implicare la selezione di un reticolo L avente un insieme di vettori di base in funzione del parametro dimensionale d selezionato, il reticolo L configurato per essere utilizzato come schema di quantizzazione, dove il reticolo L pu? comprendere un insieme finito di punti indicato come codebook CB, ad esempio il CB pu? contenere 256 punti di reticolo aventi una norma pi? bassa, dove i punti di reticolo sono le parole di codice cw.
Come qui esemplificato, eseguire la LVQ su pesi normalizzati comprende mappare ciascuna colonna della matrice normalizzata su una relativa parola di codice pi? vicina nel codebook CB.
Un procedimento come discusso nel documento di Conway, J., e N. Sloane: "Fast quantizing and decoding and algorithms for lattice quantizers and codes", IEEE Transactions on Information Theory 28.2 (1982): 227-232, ? stato trovato vantaggioso per eseguire tale mappatura, come apprezzabile da coloro esperti del settore. Tale documento discute un algoritmo molto veloce per trovare, per ciascuno dei reticoli A_{n}(n geq 1), D_{n}(n geq 2), E_{6}, E_{7}, E_{8} e loro duali, il punto di reticolo pi? vicino ad un punto arbitrario, in modo che se questi reticoli sono utilizzati per la quantizzazione vettoriale di dati uniformemente distribuiti, l?algoritmo trovi il punto di reticolo di distorsione minima e se i reticoli sono utilizzati come codici per un canale Gaussiano, l?algoritmo esegua la decodifica di massima verosimiglianza.
La Figura 8 ? un diagramma esemplificativo degli stadi di tale elaborazione di mappatura.
Come esemplificato in Figura 8, eseguire la compressione dei pesi di qualsiasi vettore di peso
implica:
eseguire una proiezione del vettore di peso vicina ad un punto di reticolo del reticolo L selezionato, come indicato nel diagramma tramite le frecce che iniziano da rispettivi punti di vettore di peso che rappresentano lo spostamento dato dall?ottimizzazione,
eseguire una quantizzazione del vettore al punto di reticolo pi? vicino, come indicato dalle frecce tratteggiate che raggiungono rispettivi punti di reticolo trasversali nel reticolo L.
Un procedimento discusso nel documento di Rault, P. e Guillemot, C.: ?Indexing algorithms for Zn, An, Dn, and Dn++ lattice vector quantizers?, Multimedia, IEEE Transactions on. 3. 395 ? 404, doi: 10.1109/6046.966111, ? stato trovato come vantaggioso nell?indicizzazione di punti di reticolo 408.
Come qui esemplificato, indicizzare i punti di reticolo 408 pu? comprendere codificare qualsiasi punto di reticolo x ad una tupla di indici che pu? comprendere:
normalizzare il punto di reticolo x rispetto alla norma massima fissa del reticolo L,
calcolare il leader con segno e il leader assoluto
di
calcolare un primo indice della tupla di indici del punto di reticolo x in funzione del punto di reticolo x e del leader con segno calcolato
calcolare un secondo indice ??del punto di reticolo x in funzione del leader con segno calcolato e del leader assoluto calcolato
immagazzinare il leader assoluto calcolato in una tabella di consultazione (LUT ? ?look-up table?) e calcolare un terzo indice in funzione della LUT.
Come qui esemplificato, l?indicizzazione 408 pu? essere eseguita in un modo che l?immagazzinamento di parole di codice indicizzate utilizzi una quantit? ridotta di memoria rispetto all?immagazzinamento dell?intero codebook, risultando di beneficio per la compressione complessiva dei pesi della rete.
Un impatto sulla memoria dei valori di peso non compressi pu? essere stimato essere dato da una cifra di 32 bit per valori di peso (ipotizzando una rappresentazione float), questo numero di bit moltiplicato per il numero di pesi.
L?impronta di memoria di utilizzo del procedimento 40 e in particolare di indicizzazione 407 pu? essere solo quella utilizzata per immagazzinare la LUT con i valori di leader assoluti e per immagazzinare la tupla di valori di indici, facilitando una ridotta impronta di memoria dell?elaborazione CNN. La NPU 20 pu? quindi utilizzare pesi compressi con una memoria ridotta per immagazzinare tali pesi. Le Tabelle I e II nel seguito forniscono stime di un impatto di memoria del procedimento 40 come qui esemplificato.
Tabella I:
Tabella II:
In forme di attuazione alternative, il valore dei leader pu? essere generato attraverso una funzione generativa invece di essere immagazzinato nella LUT.
Un procedimento come discusso nel documento di Moureaux, J.-M, Loyer, P. e Antonini, M. ?Low Complexity Indexing Method for Z? and Lattice Quantizers?, (1999), Communications, IEEE Transactions on. 46. 1602 ? 1609, doi: 10.1109/26.737398 pu? essere trovato adatto per questo scopo, come apprezzabile a coloro esperti del settore.
La seguente Tabella III pu? sintetizzare quanto tempo (in secondi) ? impiegato per generare computazionalmente rispettivamente 256 e 2048 leader assoluti in dimensioni diverse.
Tabella III:
Come discusso in precedenza, la circuiteria 206, 230 della NPU 20, pu? essere configurata per:
accedere / reperire, da un circuito di memoria (pi? piccolo), valori di peso compressi utilizzando il procedimento 40 come qui esemplificato, ad es., tramite la circuiteria di accesso diretto alla memoria (DMA) 206, e decomprimere 230 i valori di peso normalizzati reperiti, ad es., al volo,
eseguire un?elaborazione CNN migliorata 232, 234, 236 utilizzando i valori di peso normalizzati ottenuti come risultato della decompressione 230.
Come qui esemplificato, i circuiti NPU possono essere configurati per eseguire un procedimento di decompressione, ad esempio, percorrendo a ritroso le fasi del procedimento (compressione) 40. Il procedimento di decompressione pu? essere configurato per cooperare con il procedimento interconnesso (di compressione) 40, ad esempio utilizzando gli stessi parametri di compressione/decompressione, ad es., valore della dimensione d del tipo di reticolo L.
Un tale procedimento di decompressione pu? avere una bassa complessit? da un punto di vista dell?hardware, facilitando il funzionamento di un?unit? di elaborazione neurale non solo in termini di riduzione dell?impronta di memoria associata all?immagazzinamento di memoria, ma anche avendo un impatto in modo positivo sulle prestazioni della NPU:
facilitando il trasferimento di quantit? ridotte di dati per peso, riducendo di conseguenza il ritardo di elaborazione associato ai trasferimenti di peso, facilitando un pipelining hardware ?pi? compatto? dell?esecuzione di CNN.
Come qui esemplificato, decomprimere i pesi ?al volo? o in modo dinamico pu? riferirsi all?eventualit? di comprendere la logica di decompressione che esegue l?attivit? di decodificare il flusso in arrivo di indici compressi direttamente in o connessi all?unit? convoluzionale hardware senza la necessit? di grandi buffer intermedi. Ci? pu? significativamente migliorare le prestazioni dell?unit? NPU 20, facilitando la gestione di percorsi critici dominati da colli di bottiglia di memoria quando si eseguono certi tipi di carichi di lavoro di rete neurale ed operatori quali ad esempio reti Completamente Connesse (anche note come moltiplicazione di matrice/vettore) e ricorrenti (RNN ? ?recurrent networks?), memoria lunga a breve termine (LSTM ? ?Long Short Term Memory?) o unit? ricorrenti gated (GRU ? ?Gated Recurrent Units?).
Il procedimento implementato su elaboratore (ad esempio, 40) come qui esemplificato comprende:
fornire uno stadio di elaborazione di rete neurale artificiale, ANN, (ad esempio, 10) comprendente una pluralit? di livelli di elaborazione (ad esempio, 100, 102, 104, 106, 108) aventi rispettivi parametri del livello di elaborazione (ad esempio, L1, L2, L3, L4), detti parametri del livello di elaborazione comprendenti almeno un insieme di parametri di peso (ad esempio, wi), almeno un parametro di attivazione d?ingresso (ad esempio, aj), almeno un parametro di attivazione d?uscita (ad esempio, bj) e almeno un parametro di funzione di attivazione (ad esempio, ?), impostare un parametro dimensionale (ad esempio, d) di un reticolo su un valore intero, detto reticolo avente la pluralit? di punti di reticolo ed identificato da un insieme di vettori di base (ad esempio, b1, b2),
selezionare (ad esempio, 400) un insieme di parametri di peso (ad esempio, wi) di un rispettivo livello di elaborazione (ad esempio, 102) di detta pluralit? di livelli di elaborazione di detto stadio di elaborazione ANN, applicare l?elaborazione di vettorizzazione (ad esempio, 402) a detto insieme selezionato di parametri di peso producendo, come risultato, un insieme di vettori di peso (ad esempio, u1, u2, u3), e disporre detto insieme di vettori di peso come elementi di una matrice di vettori di peso (ad esempio, U),
eseguire l?elaborazione di normalizzazione (ad esempio, 404) di detta matrice vettore di pesi, producendo, come risultato, una matrice di vettori di peso normalizzati (ad esempio, U?),
applicare l?elaborazione di quantizzazione vettoriale reticolare, LVQ, (ad esempio, 406) a detta matrice di vettori di peso normalizzati, producendo, come risultato, un codebook (ad esempio, CB) di parole di codice,
applicare l?elaborazione di indicizzazione (ad esempio, 408) a detto codebook prodotto, detta indicizzazione comprendente la codifica di parole di codice del codebook in funzione del reticolo L, producendo, come risultato, rispettive tuple di indici (ad esempio,
fornire dette tuple di indici prodotte ad un circuito utente (ad esempio, 20),
in cui eseguire detta elaborazione di normalizzazione di detta matrice di vettori di peso comprende calcolare un problema di ottimizzazione avente:
un primo termine configurato per fornire valori di peso normalizzati che si avvicinano ad almeno il parametro di attivazione d?uscita dello stadio di elaborazione ANN in funzione dell?almeno un parametro di attivazione d?ingresso dello stadio di elaborazione ANN, e
un termine di regolarizzazione ?L(u) configurato per amplificare valori di peso normalizzati aventi una breve distanza da detti punti di reticolo del reticolo selezionato.
Come qui esemplificato, detto termine di regolarizzazione ?L(u) ? configurato per raggiungere un valore minimo quando detta distanza da detti punti di reticolo del reticolo selezionato di un elemento della matrice di vettori di peso ? trascurabile.
Come qui esemplificato, detto problema di ottimizzazione ? espresso come:
dove
S indica detti parametri del livello di elaborazione del livello di elaborazione selezionato (ad esempio, 102) di detta pluralit? di livelli di elaborazione di detta rete neurale artificiale,
aj, risp. bj, ? il parametro di attivazione d?ingresso, risp. di uscita di detti parametri del livello di elaborazione del livello di elaborazione selezionato di detta pluralit? di livelli di elaborazione di detta rete neurale artificiale,
? il parametro di funzione di attivazione di detti
parametri del livello di elaborazione del livello di elaborazione selezionato di detta pluralit? di livelli di <elaborazione di detta rete neurale artificiale,>
? un elemento della matrice di vettori di peso, ? un fattore di scalamento.
Come qui esemplificato, detto termine di regolarizzazione ?L(?)? ? espresso come:
dove:
? un parametro di varianza statistico, e
cw ? un vettore di base di detto insieme di vettori di base che identifica detto reticolo.
Come qui esemplificato, calcolare detto termine di regolarizzazione ?L(u) comprende applicare alla matrice di vettori di peso normalizzati un ulteriore fattore di scalamento (ad esempio, ?1, ?2, ?3), avente un valore tra 0 e 1, ad esempio.
Come qui esemplificato, detta elaborazione di normalizzazione comprende calcolare detto problema di ottimizzazione utilizzando l?elaborazione di discesa stocastica del gradiente (SGD ? ?stochastic gradient descent?).
Come qui esemplificato, eseguire detta vettorizzazione di valori di peso comprende:
elaborare elementi dell?almeno un insieme di parametri di peso (ad esempio, wi) lungo una certa sequenza ordinata di dimensioni (ad esempio, C, T, H, K), e
lungo detta certa sequenza ordinata di dimensioni, estrarre valori di peso dall?almeno un insieme di parametri di peso, e
fornire un insieme di vettori di peso (ad esempio, u1, u2, u3) disponendo detti valori di peso estratti come elementi di rispettivi vettori di detto insieme di vettori, in cui i vettori di peso di detto insieme di vettori di peso hanno una rispettiva dimensione di vettore uguale a detto valore intero del parametro dimensionale (ad esempio, d).
Come qui esemplificato, detta elaborazione LVQ comprende:
in funzione di detto valore intero di detto parametro dimensionale (ad esempio, d), selezionare il reticolo avente una pluralit? di punti di reticolo ed un insieme di vettori di base,
applicare la quantizzazione a detto insieme di vettori di peso utilizzando l?insieme di vettori di base del reticolo selezionato.
Come qui esemplificato, detto stadio di elaborazione ANN ? uno stadio di elaborazione di rete neurale convoluzionale, CNN.
Un prodotto informatico come qui esemplificato comprende istruzioni che, quando il programma ? eseguito da un elaboratore, fanno s? che l?elaboratore esegua il procedimento come qui esemplificato.
Un mezzo leggibile da elaboratore come qui esemplificato ha immagazzinato in esso valori di peso normalizzati ottenuti utilizzando il procedimento come qui esemplificato.
Un procedimento per operare una macchina di accelerazione hardware configurata per eseguire un?elaborazione di rete neurale artificiale, ANN, in funzione di valori di peso, come qui esemplificato, comprende:
accedere (ad esempio, 206) a valori di peso normalizzati ottenuti utilizzando il procedimento come qui esemplificato, decomprimere (ad esempio, 230) i valori di peso normalizzati a cui si ? avuto accesso per produrre valori di peso decompressi, e
eseguire l?elaborazione di rete neurale artificiale, ANN (ad esempio, 10) in funzione di detti valori di peso decompressi.
Un prodotto informatico come qui esemplificato comprende istruzioni che, quando il programma ? eseguito da un elaboratore, fanno s? che l?elaboratore esegua il procedimento di funzionamento di una macchinadi accelerazione hardware.
Un mezzo leggibile da elaboratore come qui esemplificato, comprende istruzioni che, quando eseguite da un elaboratore, fanno s? che l?elaboratore esegua il procedimento per operare una macchina di accelerazione hardware.
Un circuito di macchina di accelerazione hardware (ad esempio, 20) come qui esemplificato, comprende una circuiteria di memoria avente immagazzinata in essa:
valori di peso normalizzati ottenuti utilizzando il procedimento,
istruzioni che, quando eseguite nella macchina di accelerazione hardware, fanno s? che la macchina di accelerazione hardware:
acceda (ad esempio, 206) a detti valori di peso normalizzati,
decomprima (ad esempio, 230) i valori di peso normalizzati a cui si ? avuto accesso per produrre valori di peso decompressi, e
esegua l?elaborazione ANN (ad esempio, 10) in funzione di detti valori di peso decompressi.
Resta peraltro inteso che le varie singole opzioni di implementazione esemplificate per tutte le figure che accompagnano questa descrizione non sono necessariamente previste per essere adottate nelle stesse combinazioni esemplificate nelle figure. Una o pi? forme di attuazione possono di conseguenza adottare queste opzioni (altrimenti non imperative) in modo singolo e/o in combinazioni diverse rispetto alla combinazione esemplificata nelle figure accompagnatorie.
Senza pregiudizio ai principi sottostanti, i dettagli e le forme di attuazione possono variare, anche significativamente, rispetto a ci? che ? stato descritto solo a titolo di esempio, senza discostarsi dall?estensione di protezione. L?estensione di protezione ? definita dalle rivendicazioni annesse.

Claims (15)

  1. RIVENDICAZIONI 1. Procedimento implementato su elaboratore (40), comprendente: fornire uno stadio di elaborazione di rete neurale artificiale, ANN (10) comprendente una pluralit? di livelli di elaborazione (100, 102, 104, 106, 108) avente rispettivi parametri del livello di elaborazione (L1, L2, L3, L4), detti parametri del livello di elaborazione (L1, L2, L3, L4) comprendendo almeno un insieme di parametri di peso (wi), almeno un parametro di attivazione d?ingresso (aj), almeno un parametro di attivazione d?uscita (bj) e almeno un parametro di funzione di attivazione (?), impostare un parametro dimensionale (d) di un reticolo su un valore intero, detto reticolo avendo una pluralit? di punti di reticolo ed identificato da un insieme di vettori di base (b1, b2), selezionare (400) un insieme di parametri di peso (wi) di un rispettivo livello di elaborazione (102) di detta pluralit? di livelli di elaborazione (100, 102, 104, 106, 108) di detto stadio di elaborazione ANN (10), applicare l?elaborazione di vettorizzazione (402) a detto insieme selezionato di parametri di peso (wi) producendo, come risultato, un insieme di vettori di peso (u1, u2, u3), e disporre detto insieme di vettori di peso (u1, u2, u3) come elementi di una matrice di vettori di peso (U), eseguire l?elaborazione di normalizzazione (404) di detta matrice di vettori di peso (U), producendo, come risultato, una matrice di vettori di peso normalizzati (U?), applicare l?elaborazione di quantizzazione vettoriale reticolare, LVQ, (406) a detta matrice di vettori di peso normalizzati (U?), producendo, come risultato, un codebook (CB) di parole di codice, applicare l?elaborazione di indicizzazione (408) a detto codebook (CB) prodotto, detta indicizzazione (408) comprendendo codificare parole di codice del codebook (CB) in funzione del reticolo L, producendo, come risultato, rispettive tuple di indici
    fornire dette tuple di indici prodotte ad un circuito utente (20), in cui eseguire detta elaborazione di normalizzazione (404) di detta matrice di vettori di peso (U) comprende calcolare un problema di ottimizzazione avente: un primo termine configurato per fornire valori di peso normalizzati che si avvicinano all?almeno il parametro di attivazione d?uscita dello stadio di elaborazione ANN (10) in funzione dell?almeno un parametro di attivazione d?ingresso dello stadio di elaborazione ANN (10), e un termine di regolarizzazione ?L(u) configurato per amplificare valori di peso normalizzati aventi una breve distanza da detti punti di reticolo del reticolo selezionato.
  2. 2. Procedimento implementato su elaboratore (40) secondo la rivendicazione 1, in cui detto termine di regolarizzazione ?L(u) ? configurato per raggiungere un valore minimo quando detta distanza da detti punti di reticolo del reticolo selezionato di un elemento della matrice di vettori di peso (U) ? trascurabile.
  3. 3. Procedimento implementato su elaboratore (40) secondo la rivendicazione 1 o rivendicazione 2, in cui detto problema di ottimizzazione ? espresso come:
    dove S indica detti parametri del livello di elaborazione (L1, L2, L3, L4, wi) del livello di elaborazione selezionato (102) di detta pluralit? di livelli di elaborazione (100, 102, 104, 106, 108) di detta rete neurale artificiale (10), aj, risp. bj, ? il parametro di attivazione d?ingresso, risp. d?uscita di detti parametri del livello di elaborazione (L1, L2, L3, L4, wi) del livello di elaborazione selezionato (102) di detta pluralit? di livelli di elaborazione (100, 102, 104, 106, 108) di detta rete neurale artificiale (10), ? ? il parametro di funzione di attivazione di detti parametri del livello di elaborazione (L1, L2, L3, L4, wi) del livello di elaborazione selezionato (102) di detta pluralit? di livelli di elaborazione (100, 102, 104, 106, 108) di detta rete neurale artificiale (10), ? un elemento della matrice di vettori di peso (U), ? un fattore di scalamento.
  4. 4. Procedimento implementato su elaboratore (40) secondo la rivendicazione 3, in cui detto termine di regolarizzazione ? espresso come:
    dove: ?<2 >? un parametro di varianza statistico, e cw ? un vettore di base di detto insieme di vettori di base che identifica detto reticolo.
  5. 5. Procedimento implementato su elaboratore (40) secondo la rivendicazione 4, in cui calcolare detto termine di regolarizzazione ?L(u) comprende applicare un ulteriore fattore di scalamento (?1, ?2, ?3) alla matrice di vettori di peso normalizzati (U), preferibilmente un fattore di scalamento (?1, ?2, ?3) avente un valore tra 0 e 1.
  6. 6. Procedimento implementato su elaboratore (40) secondo qualsiasi delle rivendicazioni precedenti, in cui detta elaborazione di normalizzazione (404) comprende calcolare detto problema di ottimizzazione utilizzando l?elaborazione di discesa stocastica del gradiente, SGD.
  7. 7. Procedimento implementato su elaboratore (40) secondo qualsiasi delle rivendicazioni precedenti, in cui eseguire detta vettorizzazione di valori di peso (402) comprende: elaborare elementi dell?almeno un insieme di parametri di peso (wi) lungo una certa sequenza ordinata di dimensioni (C, T, H, K), e lungo detta certa sequenza ordinata di dimensioni (C, T, H, K), estrarre valori di peso dall?almeno un insieme di parametri di peso (wi), e fornire un insieme di vettori di peso (u1, u2, u3) disponendo detti valori di peso estratti come elementi di rispettivi vettori di detto insieme di vettori (u1, u2, u3), in cui i vettori di peso di detto insieme di vettori di peso (u1, u2, u3) hanno una rispettiva dimensione di vettore uguale a detto valore intero del parametro dimensionale (d).
  8. 8. Procedimento implementato su elaboratore (40) secondo qualsiasi delle rivendicazioni precedenti, in cui detta elaborazione LVQ (406) comprende: in funzione di detto valore intero di detto parametro dimensionale (d), selezionare il reticolo avente una pluralit? di punti di reticolo ed un insieme di vettori di base, applicare la quantizzazione a detto insieme di vettori di peso (u1, u2, u3) utilizzando l?insieme di vettori di base del reticolo selezionato.
  9. 9. Procedimento implementato su elaboratore (40) secondo qualsiasi delle rivendicazioni precedenti, in cui detto stadio di elaborazione ANN (10) ? uno stadio di elaborazione di rete neurale convoluzionale, CNN.
  10. 10. Prodotto informatico comprendente istruzioni che, quando il programma ? eseguito da un elaboratore, fanno s? che l?elaboratore esegua il procedimento secondo qualsiasi delle rivendicazioni 1 a 9.
  11. 11. Mezzo leggibile da elaboratore avente immagazzinato in esso valori di peso normalizzati ottenuti utilizzando il procedimento secondo qualsiasi delle rivendicazioni 1 a 9.
  12. 12. Procedimento di funzionamento di un motore di accelerazione hardware configurato per eseguire un?elaborazione di rete neurale artificiale, ANN in funzione di valori di peso, in cui il procedimento comprende: accedere (206) a valori di peso normalizzati ottenuti utilizzando il procedimento secondo qualsiasi delle rivendicazioni 1 a 9, decomprimere (230) i valori di peso normalizzati a cui si ? avuto accesso (206) per produrre valori di peso decompressi, e eseguire l?elaborazione di rete neurale artificiale, ANN (10) in funzione di detti valori di peso decompressi.
  13. 13. Prodotto informatico comprendente istruzioni che, quando il programma ? eseguito da un elaboratore, fanno s? che l?elaboratore esegua il procedimento secondo la rivendicazione 12.
  14. 14. Mezzo leggibile da elaboratore comprendente istruzioni che, quando eseguite da un elaboratore, fanno s? che l?elaboratore esegua il procedimento secondo la rivendicazione 12.
  15. 15. Circuito di motore di accelerazione hardware (20) comprendente una circuiteria di memoria avente immagazzinata in essa: valori di peso normalizzati ottenuti utilizzando il procedimento secondo qualsiasi delle rivendicazioni 1 a 9. istruzioni che, quando eseguite nel motore di accelerazione hardware, fanno s? che il motore di accelerazione hardware: acceda (206) a detti valori di peso normalizzati, decomprima (230) i valori di peso normalizzati a cui si ? avuto accesso (206) per produrre valori di peso decompressi, e esegua l?elaborazione ANN (10) in funzione di detti valori di peso decompressi.
IT102020000018043A 2020-07-24 2020-07-24 Procedimenti e sistemi di elaborazione di rete neurale artificiale IT202000018043A1 (it)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IT102020000018043A IT202000018043A1 (it) 2020-07-24 2020-07-24 Procedimenti e sistemi di elaborazione di rete neurale artificiale
EP21184536.7A EP3968235A1 (en) 2020-07-24 2021-07-08 Artificial neural network processing methods and system
US17/383,132 US20220027715A1 (en) 2020-07-24 2021-07-22 Artificial neural network processing methods and system
CN202110835501.1A CN113971456A (zh) 2020-07-24 2021-07-23 人工神经网络处理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102020000018043A IT202000018043A1 (it) 2020-07-24 2020-07-24 Procedimenti e sistemi di elaborazione di rete neurale artificiale

Publications (1)

Publication Number Publication Date
IT202000018043A1 true IT202000018043A1 (it) 2022-01-24

Family

ID=72644835

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102020000018043A IT202000018043A1 (it) 2020-07-24 2020-07-24 Procedimenti e sistemi di elaborazione di rete neurale artificiale

Country Status (3)

Country Link
US (1) US20220027715A1 (it)
EP (1) EP3968235A1 (it)
IT (1) IT202000018043A1 (it)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562115B2 (en) 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
US11797854B2 (en) * 2019-07-08 2023-10-24 Sony Semiconductor Solutions Corporation Image processing device, image processing method and object recognition system
US11593609B2 (en) * 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
CN115311506B (zh) * 2022-10-11 2023-03-28 之江实验室 基于阻变存储器的量化因子优化的图像分类方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3346425A1 (en) 2017-01-04 2018-07-11 STMicroelectronics Srl Hardware accelerator engine and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3346425A1 (en) 2017-01-04 2018-07-11 STMicroelectronics Srl Hardware accelerator engine and method

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CHOI YOOJIN ET AL: "Universal Deep Neural Network Compression", IEEE JOURNAL OF SELECTED TOPICS IN SIGNAL PROCESSING, IEEE, US, vol. 14, no. 4, 21 February 2020 (2020-02-21), pages 715 - 726, XP011803738, ISSN: 1932-4553, [retrieved on 20200810], DOI: 10.1109/JSTSP.2020.2975903 *
CHOI, Y.EL-KHAMY, M.LEE, J.: "Universal deep neural network compression", ARXIV:1802.02271, 2018
CONWAY, J.N. SLOANE: "Fast quantizing and decoding and algorithms for lattice quantizers and codes", IEEE TRANSACTIONS ON INFORMATION THEORY, vol. 28.2, 1982, pages 227 - 232, XP002300007, DOI: 10.1109/TIT.1982.1056484
MOUREAUX, J.-MLOYER, P.ANTONINI, M.: "Low Complexity Indexing Method for Zn and D Lattice Quantizers", COMMUNICATIONS, IEEE TRANSACTIONS ON, vol. 46, 1999, pages 1602 - 1609, XP000790919, DOI: 10.1109/26.737398
RAULT, P.GUILLEMOT, C.: "Indexing algorithms for Zn, An, Dn, and Dn++ lattice vector quantizers", MULTIMEDIA, IEEE TRANSACTIONS ON, vol. 3, pages 395 - 404, XP002525426, DOI: 10.1109/6046.966111

Also Published As

Publication number Publication date
US20220027715A1 (en) 2022-01-27
EP3968235A1 (en) 2022-03-16

Similar Documents

Publication Publication Date Title
IT202000018043A1 (it) Procedimenti e sistemi di elaborazione di rete neurale artificiale
Sun et al. Igcv3: Interleaved low-rank group convolutions for efficient deep neural networks
Han et al. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding
US20180082181A1 (en) Neural Network Reordering, Weight Compression, and Processing
US11595062B2 (en) Decompression apparatus for decompressing a compressed artificial intelligence model and control method thereof
Alvar et al. Multi-task learning with compressible features for collaborative intelligence
US11797855B2 (en) System and method of accelerating execution of a neural network
CN107832837A (zh) 一种基于压缩感知原理的卷积神经网络压缩方法及解压缩方法
CN109245773B (zh) 一种基于块循环稀疏矩阵神经网络的编解码方法
WO2019196223A1 (zh) 一种应用于卷积神经网络的加速方法和加速器
Nakahara et al. High-throughput convolutional neural network on an FPGA by customized JPEG compression
Cavigelli et al. EBPC: Extended bit-plane compression for deep neural network inference and training accelerators
CN109543815B (zh) 神经网络的加速方法及装置
Cavigelli et al. Extended bit-plane compression for convolutional neural network accelerators
KR20110033175A (ko) 디지털 데이터 처리 방법
Wang et al. Fast lossless neural compression with integer-only discrete flows
Graham Low-precision batch-normalized activations
US20210125063A1 (en) Apparatus and method for generating binary neural network
US20190348999A1 (en) Method and apparatus for compression and decompression of a numerical file
WO2023051335A1 (zh) 数据编码方法、数据解码方法以及数据处理装置
Lee et al. Network pruning for low-rank binary indexing
US20220392117A1 (en) Data compression and decompression system and method thereof
Malach et al. Hardware-based real-time deep neural network lossless weights compression
CN116095183A (zh) 一种数据压缩方法以及相关设备
CN113743593B (zh) 神经网络量化方法、系统、存储介质及终端