IT201700008949A1 - Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti - Google Patents

Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti

Info

Publication number
IT201700008949A1
IT201700008949A1 IT102017000008949A IT201700008949A IT201700008949A1 IT 201700008949 A1 IT201700008949 A1 IT 201700008949A1 IT 102017000008949 A IT102017000008949 A IT 102017000008949A IT 201700008949 A IT201700008949 A IT 201700008949A IT 201700008949 A1 IT201700008949 A1 IT 201700008949A1
Authority
IT
Italy
Prior art keywords
rns
input data
data
operations
converted
Prior art date
Application number
IT102017000008949A
Other languages
English (en)
Inventor
Valentina Arrigoni
Giuseppe Desoli
Beatrice Rossi
Pasqualina Fragneto
Original Assignee
St Microelectronics Srl
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 filed Critical St Microelectronics Srl
Priority to IT102017000008949A priority Critical patent/IT201700008949A1/it
Priority to EP17193559.6A priority patent/EP3355247A1/en
Priority to CN201710920011.5A priority patent/CN108364064B/zh
Priority to US15/877,138 priority patent/US11308406B2/en
Publication of IT201700008949A1 publication Critical patent/IT201700008949A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/729Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/02Computing arrangements based on specific mathematical models using fuzzy logic
    • G06N7/023Learning or tuning the parameters of a fuzzy system

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Details Of Television Systems (AREA)
  • General Factory Administration (AREA)
  • Computer And Data Communications (AREA)

Description

“Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti”
TESTO DELLA DESCRIZIONE
Campo tecnico
La descrizione riguarda reti neurali.
Una o più forme di realizzazione possono riguardare il funzionamento migliorato di reti neurali, come reti neurali convoluzionali.
Stato dell’arte tecnologico
Una rete neurale (NN) è un’architettura computazionale che tenta di identificare relazioni sottostanti, in un insieme di dati, utilizzando un processo che imita il modo in cui il cervello umano funziona. Le reti neurali hanno la capacità di adattarsi ad ingressi mutevoli, così che una rete può produrre un risultato migliore possibile, senza riprogettare i criteri di uscita.
Le reti neurali sono largamente utilizzate, ad esempio, per estrarre modelli e rilevare andamenti che sono troppo complessi per essere notati dagli umani o da altre tecniche di calcolo.
Alcuni vantaggi dell'utilizzo di reti neurali (NN) includono, ad esempio:
- apprendimento adattivo: una NN può avere la capacità di apprendere come eseguire attività, sulla base dei dati forniti come addestramento o come esperienza iniziale;
- auto-organizzazione: una NN può creare la propria organizzazione o rappresentazione delle informazioni, ad esempio, ottenuta durante l'apprendimento;
- funzionamento in tempo reale: l'elaborazione di una NN, ad esempio calcoli, può essere effettuata in parallelo, con dispositivi hardware progettati e fabbricati al fine di trarre vantaggio da questa funzionalità;
- la tolleranza ai guasti, ad esempio tramite codifica di informazioni ridondanti: mentre la distruzione parziale di una rete può portare ad una corrispondente riduzione della performance, alcune funzionalità di rete possono essere mantenute anche con un grave guasto di rete;
- tolleranza al rumore: Le NN sono intrinsecamente resistenti al rumore generato durante la propagazione di dati di prova; tale tolleranza può essere sfruttata, ad esempio, per comprimere pesi della rete e/o per eseguire calcoli approssimativi, senza una perdita significativa in termini di precisione.
Scopo e sommario
Nonostante l’intensa attività in tale settore, esiste una richiesta di ulteriori disposizioni di NN migliorate.
Uno scopo di una o più forme di realizzazione è di contribuire a soddisfare una tale richiesta.
Secondo una o più forme di realizzazione, tale scopo può essere raggiunto mediante un procedimento avente le caratteristiche indicate nelle rivendicazioni che seguono.
Una o più forme di realizzazione possono anche riguardare una corrispondente rete neurale ed un corrispondente prodotto informatico, caricabile nella memoria di almeno un dispositivo di elaborazione, ed includente porzioni di codice software per l’esecuzione delle fasi del procedimento, quando il prodotto è eseguito su almeno un calcolatore. Come ivi utilizzato, il riferimento ad un tale prodotto informatico è inteso come equivalente ad un riferimento ad un mezzo leggibile al calcolatore, contenente istruzioni per controllare il sistema di elaborazione, al fine di coordinare l'implementazione del procedimento, secondo una o più forme di realizzazione. Il riferimento ad "almeno un dispositivo elaboratore" è volto ad evidenziare la possibilità, per una o più forme di realizzazione, di essere implementato in forma modulare e/o distribuita.
Le rivendicazioni sono una parte integrale della descrizione tecnica delle forme di realizzazione qui fornita.
Una o più forme di realizzazione possono essere basate sul riconoscimento del fatto che la tolleranza al rumore di NN può motivare semplificazioni nella complessità hardware.
Una o più forme di realizzazione possono fornire una procedura per approssimare operazioni, utilizzando aritmetica di bassa precisione, per accelerare una fase di propagazione in avanti delle CNN.
In una o più forme di realizzazione, una fase di inferenza, in una CNN generica, può coinvolgere calcoli approssimati, eseguiti utilizzando una rappresentazione di dati, basata su un Sistema Numerico Residuo (RNS)a bassa precisione, con fasi di ri-dimensionamento in scala introdotte per pesi ed attivazioni.
Una o più forme di attuazione possono comportare una procedura di "messa a punto" di parametri di sistema, che può gestire una risoluzione ridotta, minimizzando errori di arrotondamento e di overflow.
Una o più forme di realizzazione possono ridurre la complessità hardware di, ad esempio, operatori di prodotto scalare, e consentire un'implementazione parallelizzata operante su valori rappresentati con pochi bit, con perdita minima di precisione complessiva della rete.
Una o più forme di realizzazione possono facilitare, ad esempio, avanzamenti recenti nell’apprendimento profondo, che utilizzano grandi reti neurali profonde(DNN) con decine di milioni di unità, adatte per un numero di applicazioni che richiedono un’elaborazione in tempo reale. Le DNN e, in particolare, le reti neurali convoluzionali(CNN), possono svolgere un ruolo significativo nello svolgimento di attività intelligenti in molti domini diversi, ad esempio, classificazione di scena acustica, riconoscimento di attività basato su sensore, classificazione di battiti cardiaci e riconoscimento di emozione facciale. Una vasta gamma di sistemi integrati può riguardare, ad esempio, acceleratori CNN a bassa potenza per applicazioni come Internet delle Cose (IoT) oppure sensori intelligenti, ecc.
In queste disposizioni, la risoluzione di sommatori e moltiplicatori può essere correlata alla risoluzione dei residui, che in generale è più basa rispetto alla risoluzione dei valori originali. Potenzialmente, ciò può rappresentare un vantaggio sia in termini di consumo di potenza che di efficienza di archiviazione, rispetto alle unità o blocchi di Moltiplicazione e Accumulo (MAC) standard a 16/32-bit oppure rispetto ad altre unità MAC a bassa precisione.
In una o più forme di realizzazione, con certi insiemi di moduli, alcune operazioni vengono ulteriormente semplificate, il che può fornire un vantaggio in termini di efficienza.
In una o più forme di realizzazione, per esempio quando si considerano implementazioni orientate all’hardware, la frammentazione di, ad esempio, un operatore di prodotto scalare, come consentito da una soluzione RNS, è atta ad essere descritta come N sotto operatori paralleli, con una larghezza di bit(molto) minore. Questo può portare ad una riduzione di complessità quadratica (ad es. numero di gate) per i moltiplicatori, allo stesso tempo migliorando la latenza delle unità (ad esempio due volte più veloce per un’implementazione a 8 bit, rispetto ad un’implementazione a 16 bit).
In una o più forme di realizzazione, riduzione di complessità e miglioramenti di temporizzazione possono verificarsi (anche) per sommatori con una scala lineare, rispetto al numero di bit.
Una o più forme di realizzazione possono riguardare riduzioni di area e latenza, che possono portare ad una riduzione significativa nel consumo di potenza rispetto ad una rappresentazione convenzionale, statica, per l’area, e dinamica, per la latenza.
Breve descrizione delle numerose viste dei disegni Una o più forme di realizzazione saranno ora descritte, a titolo di esempio soltanto, con riferimento alle figure allegate, in cui:
- la Figura 1 è generalmente esemplificativa di una rete neurale (NN);
- la Figura 2 è una rappresentazione esemplificativa di una rete neurale convoluzionale (CNN);
- le Figure 3 e 4 sono diagrammi esemplificativi di reti neurali come AlexNet e GoogLeNet;
- la Figura 5 è un diagramma esemplificativo di un (modulo) inception, incluso in una rete neurale come illustrata in figura 4;
- le Figure 6, 7 e 8 sono esemplificative di un possibile utilizzo di forme di realizzazione, in reti neurali come esemplificate nei diagrammi delle Figure 3, 4 e 5,
- le Figure 9 e 10 sono rappresentazioni funzionali di forme di realizzazione;
- la Figura 11 è un diagramma di flusso esemplificativo di una procedura che può essere utilizzata in forme di realizzazione;
- la Figura 12, includente due porzioni designate, rispettivamente a) e b), è illustrativa di possibili risultati della procedura di Figura 11;
- la Figura 13 è un diagramma di flusso esemplificativo di una procedura che può essere utilizzata in forme di realizzazione;
- la Figura 14 è illustrativa di possibili risultati della procedura di Figura 13; e
- la Figura 15 è generalmente illustrativa di un’apparecchiatura che può includere forme di realizzazione.
Descrizione dettagliata
Nella descrizione che segue, sono illustrati uno o più dettagli specifici, volti a fornire una comprensione approfondita di esempi di forme di realizzazione di questa descrizione. Le forme di realizzazione possono essere ottenute senza uno o più dei dettagli specifici, o con altri procedimenti, componenti, materiali, ecc. In altri casi strutture, materiali od operazioni noti non sono illustrati né descritti in dettaglio, così che taluni certi aspetti delle forme di realizzazione non saranno oscurati.
Il riferimento ad “una forma di realizzazione” o “una (numero uno) forma di realizzazione”, nel quadro della presente descrizione, è volto ad indicare che una particolare configurazione, struttura o caratteristica, descritta in relazione alla forma di realizzazione, è compresa in almeno una forma di realizzazione. Pertanto, frasi come “in una forma di realizzazione” o “in una (numero uno) forma di realizzazione” che può essere presente in uno o più punti della presente descrizione, non si riferiscono necessariamente a una (numero uno) ed alla medesima forma di realizzazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in qualsiasi modo adeguato, in una o più forme di realizzazione.
I riferimenti qui utilizzati sono forniti solo per comodità e quindi non definiscono l’ambito di protezione o la portata delle forme di realizzazione.
Una o più forme di realizzazione possono contribuire ad accelerare la propagazione in avanti nelle reti neurali.
Le reti neurali convoluzionali (CNN), che possono essere generalmente ascritte alla “famiglia” delle cosiddette reti neurali profonde (DNN), sono esemplificative di reti neurali alle quali possono essere applicate una o più forme di realizzazione.
Le DNN sono reti neurali strutturate in strati successivi di unità computazionali e possono avere diverse architetture.
Da un punto di vista formale, una architettura di rete neurale può essere descritta come un “tupla” (I, U, O, E) costituita da un insieme I di siti di ingresso, un insieme U di unità computazionali, un insieme O di siti di uscita ed un insieme E di bordi diretti pesati.
Un bordo diretto è una tupla (i, o, w) dove
i ∈ I ∪U, o ∈ U ∪O e .
Anche se - strettamente parlando - non sono unità computazionali e rappresentano soltanto siti di ingresso delle informazioni nella rete, i siti di ingresso sono chiamati unità di ingresso.
Ad esempio, i dati di ingresso alle unità di ingresso possono essere immagini, ma anche altri tipi di segnali digitali: segnali acustici, segnali bio-medicali, segnali inerziali da giroscopi ed accelerometri possono essere esemplificativi di questi.
I siti di uscita sono chiamati unità di uscita e sono unità computazionali, i cui risultati costituiscono l'uscita della rete.
Infine, i siti di elaborazione in U sono chiamati unità nascoste.
Le unità sono raggruppate in livelli successivi, chiamati strati, in modo che vi siano connessioni soltanto tra le unità di uno strato e le unità dello strato successivo.
In una o più forme di realizzazione, la direzione di propagazione delle informazioni può essere unilaterale, ad esempio di un tipo feed-forward (in avanti), a partire dallo strato di ingresso e procedendo attraverso gli strati nascosti fino allo strato di uscita.
Assumendo che la rete abbia L strati, si può adottare la convenzione di indicare gli strati con k = 1, 2, …, L, a partire dallo strato di ingresso, passando attraverso gli strati nascosti, fino allo strato di uscita.
Prendendo in considerazione lo strato , in una possibile notazione:
: denota il numero di unità dello strato k,
i = 1, …, : denota una unità di strato k oppure, in modo equivalente, il suo valore,
: denota la matrice dei pesi dalle unità dello strato k per le unità dello strato (k 1); non viene definita per lo strato di uscita.
I valori di i = 1, …, sono i risultati del calcolo effettuato dalle unità, fatta eccezione per le unità di ingresso, per cui i valori di i = 1, …,
sono i valori di ingresso della rete. Questi valori rappresentano i valori di attivazione, o brevemente, le "attivazioni" delle unità.
L'elemento (i, j) della matrice è il valore del peso dall'unità all’unità .
Tali pesi possono essere appresi tramite un algoritmo di back propagation (retro-propagazione).
Inoltre, per ciascuno strato k = 1, ..., (L - 1), si può considerare una unità aggiuntiva , indicata come unità di bias (ad esempio con un valore fissato a 1), che consente di spostare la funzione di attivazione a sinistra oppure a destra.
Un’unità computazionale può eseguire un calcolo che può essere descritta come una combinazione di due funzioni:
- una funzione di attivazione f, che può essere una funzione monotona non-lineare, come una funzione sigmoidale oppure una funzione di raddrizzatore (una unità che utilizza una funzione di raddrizzatore è detta unità lineare rettificata o ReLU),
- una funzione definita specificatamente per l’unità che assume come valori le attivazioni dello strato precedente ed i pesi dello strato corrente
.
In una o più forme di realizzazione, il funzionamento (esecuzione) di una rete neurale, come qui esemplificato, può coinvolgere un calcolo delle attivazioni delle unità computazionali, seguendo la direzione della rete, ad esempio con propagazione di informazioni dallo strato di ingresso allo strato di uscita. Questa procedura è denominata propagazione in avanti.
La Figura 1 è esemplificativa di una disposizione di rete come discussa sopra, includente L 1 strati, includente uno strato di ingresso IL (strato 0), strati nascosti HL (ad esempio lo strato 1, lo strato 2, ...) ed uno strato di uscita OL strato (strato L).
Le CNN corrispondono al layout di base delle reti neurali profonde, precedentemente discusse ed includono neuroni con peso "apprendibile" e valori di bias. Ciascun neurone può ricevere alcuni ingressi e può eseguire un calcolo specifico, che può opzionalmente includere una funzione di attivazione.
Un concetto di base sottostante le CNN può combinare tre idee architettoniche, per agevolare il raggiungimento di un certo grado di invarianza di spostamento e di distorsione: campi recettivi locali, pesi condivisi e, talvolta, sotto-campionamento spaziale o temporale.
Una CNN può comprendere tre tipi di strati:
- strati convoluzionali,
- strati di combinazione (pooling),
- strati totalmente connessi.
Questi strati possono essere combinati in molti modi, producendo una (ampia) varietà di strutture diverse.
Per esempio, una architettura di CNN può includere alcune coppie di strati convoluzionali, seguite da un strato di sotto-campionamento, e quindi strati finali completamente connessi.
Una struttura esemplificativa di una CNN è mostrata in Figura 2 dove C, P e FC denotano, rispettivamente, strati di convoluzione, di pooling e di completa connessione.
Ad esempio, l'ingresso di una CNN può includere, ad esempio, una matrice bidimensionale o tridimensionale, e gli strati di convoluzione e di sotto-campionamento possono ricevere una una matrice multidimensionale come ingresso e fornire una matrice multidimensionale come uscita. Queste matrici sono indicate come caratteristiche di ingresso od uscita, e ciascun valore in queste matrici è indicato come pixel.
In uno strato completamente connesso, tutte le unità possono essere connesse attraverso bordi pesati a tutte le unità dello strato precedente, poiché questo tipo di strato è uguale a quello della rete standard feed-forward.
Infine, gli strati di pooling eseguono qualche forma di sotto-campionamento non lineare, che può ridurre la sensibilità dell'uscita a spostamenti e distorsioni. Le operazioni di pooling più frequenti sono la media (media) oppure il massimo dei valori della porzione di pixel.
AlexNet e GoogLeNet sono esemplificative di CNN addestrate ben note. Queste sono reti neurali convoluzionali (molto) ampie e profonde, sviluppate al fine di classificare le immagini dal concorso ImageNet LSVRC in 1000 classi diverse.
AlexNet fu proposta nel 2010 da Krizhevsky et al. in: “Classificazione di Imagenet con reti neurali convoluzionali profonde”, in Advances in neural Information Processing systems, pagg. 1097-1105, 2012.
GoogLeNet fu proposta nel 2015 C. Szegedy, et al.: “Andando più in profondità con le circonvoluzioni", in Computer Vision and Pattern Recognition (CVPR), 2015.
Queste reti differiscono tra loro per alcuni aspetti nella loro architettura generale.
Ad esempio, GoogLeNet include cosiddette sotto-reti Inception, che eseguono diverse dimensioni di convoluzioni di e concatenano i filtri per lo strato successivo. In AlexNet, d’altro canto, un ingresso di strato è fornito da uno strato precedente, invece che da una concatenazione di filtro.
Architetture esemplificative per AlexNet e GoogLeNet sono illustrate nelle Figure 3 e 4, dove, in esse, le abbreviazioni nei vari riquadri hanno i seguenti significati:
conv = convoluzione
relu = unità lineare di rettificazione
norm = normalizzazione di risposta locale
pool = pooling
fc = connessione completa
prob = un strato softmax che calcola una funzione di regressione logistica multinomiale
inception = inception (come discusso nel seguito).
Come schematicamente mostrato in Figura 3, AlexNet include otto strati di pesi: i primi cinque (lo strato 1 fino allo strato 5) sono strati convoluzionali C, mentre gli ultimi tre strati (lo strato 6 fino allo strato 8) sono strati completamente connessi FC. L'ultimo strato viene alimentato ad uno strato softmax da 1000-unità, che produce una distribuzione sulle 1000 etichette di classe.
Come schematicamente mostrato in Figura 4 (dove i valori “profondità” indicano il numero di strati), GoogLeNet include venti-due livelli di strati pesati, includenti ancora strati convoluzionali e completamente connessi C e FC, con certi strati raggruppati in sotto-reti I di Inception. Il numero complessivo di strati (blocchi di costruzione indipendenti) utilizzato per la costruzione della rete è circa 100: il numero esatto dipende dal modo in cui gli strati sono contati dall’infrastruttura di apprendimento della macchina.
Un Inception I può essere una rete costituita da moduli convoluzionali impilati gli uni sugli altri, con moduli di max-pooling occasionali. La rete ha una profondità di due livelli ed i risultati di modulo sono concatenati, producendo l'uscita della rete di Inception.
Una possibile architettura di un inception è rappresentata in Figura 5, dove le definizioni fornite sopra si applicano all’etichettatura nei vari blocchi, e "max pool" e "concat" denotano, rispettivamente, il pooling massimo e la concatenazione.
La complessità delle CNN può essere correlata principalmente a convoluzioni (es. in strati convoluzionali) e moltiplicazioni di matrice (ad esempio in strati completamente connessi).
In entrambi i casi, un'operazione chiave può essere rappresentata da un prodotto scalare (o "interno").
Siano e due vettori, quindi il loro prodotto scalare, , può essere calcolato secondo la formula
(1) Dove ciascun componente aj(ad esempio, attivazioni) e wj(ad esempio, pesi) può essere rappresentato utilizzando qualsiasi rappresentazione numerica, ad esempio a virgola mobile, a virgola fissa o altre.
Utilizzando hardware digitale convenzionale, l’operazione di prodotto scalare può essere eseguita usando operazioni di Moltiplicazione e Accumulo(MAC).
Ad esempio, per un'immagine 224x224, una singola classificazione di etichettatura di categoria con 1000 classi può richiedere, utilizzando AlexNet, quasi a 2.15 giga operazioni MAC.
Semplificare/accelerare tali operazioni può quindi svolgere un ruolo significativo nel consentire a grandi reti di essere eseguite in applicazioni in tempo reale su piattaforme mobili o integrate (ad esempio, dispositivi a bassa potenza indossabili o IoT).
Affrontare questo problema con accelerazione e decongestione HW può portare a miglioramenti in termini di performance ed efficienza energetica; tuttavia, l’HW risultante può a sua volta essere costoso da implementare (ad esempio in termini di area di silicio); in aggiunta, requisiti il budget energetico possono non essere soddisfatti per applicazioni vincolate.
Vari approcci sono stati proposti, negli ultimi anni, per accelerare il calcolo nelle CNN ad esempio esplorando l'uso di rappresentazione dei dati non-convenzionale, per accelerare la fasedi propagazione in avanti.
Ad esempio, il documento Miyashita et. al. Miyashita et. al.: “Reti neurali convoluzionali che utilizzano una rappresentazione di dati logaritmica", arXiv preprint arXiv:1603.01025, 2016 descrive una rappresentazione di dati non-convenzionale basata su un sistema logaritmico in base-2. I pesi e le attivazioni sono rappresentati a bassa precisione nel dominio logaritmico, ovviando così alla necessità di moltiplicatori digitali (le moltiplicazioni diventano addizioni, nel dominio logaritmico) ed ottenendo una maggiore precisione, rispetto alla virgola fissa, in corrispondenza della medesima risoluzione. Pur traendo vantaggio dalla riformulazione dei prodotti scalari nel dominio logaritmico, questa soluzione richiede ancora accumulatori a precisione totale (es. A 32 bit). Inoltre, mentre la rappresentazione nel dominio logaritmico mostra un buon potenziale di riduzione di complessità, un’analisi completa in termini di costi associati all'implementazione HW di una catena completa di elaborazione, in uno stadio convoluzionale, non è documentata.
In H. Nakahara et al.: “Una rete neurale convoluzionale profonda basata su sistema numerico residuo annidato," del 2015, 25° Conferenza Internazionale su Logica Programmabile sul Campo ed Applicazioni(FPL), pagg.
1-6, IEEE 2015, si presenta una rappresentazione dati non convenzionale basata su un Numero Residuo Annidato. Nello specifico, si propone un sistema cosiddetto NRNS (una variazione del Sistema Numerico Residuo - RNS). Una rappresentazione a virgola fissa a 48-bit viene utilizzata per pesi ed attivazioni, ed i prodotti scalari di strati convoluzionali sono calcolati in parallelo, utilizzando un NRNS ad elevata precisione, al fine di coprire un intervallo dinamico massimo di 2103. Applicando l’NRNS, le unità MAC standard possono essere decomposte in MAC parallele a 4 bit.
Una o più forme di realizzazione possono essere basate sul riconoscimento del fatto che una rappresentazione RNS può sfruttare la resilienza di propagazione di errore CNN, adottando un Sistema Numerico Residuo - RNS a bassa precisione e stadi di riscalatura adeguatamente messi a punto, al fine di gestire la risoluzione ridotta di dati ed accumulatori ed aumentando la precisione risultante.
Una o più forme di realizzazione possono essere basate sul riconoscimento del fatto che la tolleranza del livello di rumore logaritmica di reti neurali come le CNN può facilitare e motivare semplificazioni di complessità hardware, come, ad esempio, ricorrendo ad un approccio a bassa precisione, in certi calcoli.
Una o più forme di realizzazione possono pertanto riguaradre il fatto di approssimare operazioni, utilizzando aritmetica a bassa precisione per accelerare la fase di propagazione in avanti di, ad esempio, CNN, ad esempio calcolando i prodotti scalari nel Sistema Numerico Residuo (RNS), così agevolando un funzionamento di rete più efficiente, ad esempio, per quanto riguarda l’hardware digitale.
Ad esempio, una o più forme di realizzazione possono comportare la ridefinizione dell’architettura generale di una rete neurale, come una CNN.
Tale ridefinizione può implicare, per ciascuno strato: - selezionare quelle operazioni che coinvolgono, ad esempio, prodotti scalari che possono costituire blocchi RNS,
- concatenare convertitori dedicati prima (ad esempio, da flottanti o eventualmente fissi a RNS) e dopo (ad esempio da RNS a flottanti) ciascun blocco RNS,
- eseguire calcoli in ciascun blocco RNS, utilizzando unità di funzionamento RNS dedicate.
Richiamare alcuni concetti matematici di base, sottostanti al Sistema Numerico Residuo o RNS, può essere utile a titolo di premessa alla descrizione dettagliata di forme di realizzazione esemplificative.
Un sistema numerico residuo o RNS è caratterizzato da una serie di interi , chiamato base, dove ogni numero intero miviene chiamato modulo.
L’RNS è un sistema a numero intero in cui il numero di rappresentazioni differenti è dato dal minimo comune multiplo dei moduli, ed è indicato con M.
Un numero è rappresentato nell’RNS dall’insieme di residui dove per i = 1, ..., N.
Al contrario, il corrispondente valore di un numero RNS è fornito dal Teorema Cinese del Resto modulo M, in base all’ipotesi che i moduli siano a coppie relativamente primi: si veda ad es. H. E. Rose, un corso di teoria dei numeri. Capitolo 3, pagg. 36-37, Oxford University Press, 1995.
Al fine di avere un valore corrispondente univoco per ciascun numero RNS, l’RNS può essere accompagnato da un intervallo di valori rappresentati, indicato da .
In tal modo, un dato numero RNS è convertito in se , o altrimenti, dove
è ottenuto applicando il Teorema Cinese
del Resto, dove e sta per l'inverso
moltiplicativo di un numero c modulo .
La selezione di blocchi RNS in una CNN consiste semplicemente nel riconoscere che le operazioni di rete riguardano, ad esempio, prodotti scalari o, più in generale, sono omogenee rispetto ad attivazioni e pesi.
Per uno strato convoluzionale, il blocco RNS è costituito da convoluzioni, mentre per uno strato completamente connesso è composto da un prodotto di matrice.
In una o più forme di realizzazione (nel caso esemplificativo di AlexNet: si veda la Figura 3 come discusso in precedenza), ciascuno strato convoluzionale C e strato completamente connesso FC può quindi includere (es. iniziare con) un blocco RNS.
Questa situazione è esemplificata, in Figura 6, dove viene riprodotto lo stesso layout di base di Figura 3, con i blocchi RNS evidenziati mediante ombreggiatura.
Nel caso di GoogLeNet, i blocchi RNS possono essere usati per convoluzioni praticamente per tutti i blocchi eccetto uno (tutti nelle reti di Inception), mentre per l'ultimo strato, che è uno strato completamente connesso, l’RNS può essere utilizzato per un prodotto di matrice.
La selezione di blocchi RNS in una tale rete è evidenziata mediante ombreggiatura, nelle Figure 7 e 8.
Una volta che tutti i blocchi RNS sono selezionati in una certa rete da implementare, convertitori FW (in avanti) e BW (indietro) dedicati possono essere concatenati, rispettivamente, prima e dopo ciascun blocco RNS.
In una o più forme di realizzazione due diversi schemi possono essere adottati a tale scopo.
In un primo schema generale, sia i pesi wjche le attivazioni ajpossono essere convertiti in linea per un insieme di moduli fissato.
In un secondo schema alternativo i pesi o le attivazioni, ad esempio i pesi wj, sono convertiti in modalità non in linea e memorizzati in una rappresentazione RNS, utilizzando una Tabella di Consultazione o LUT.
I due schemi sono rispettivamente illustrati nelle Figure 9 e 10.
In queste figure, 10 denota un blocco RNS (includente, ad esempio, un numero N di unità di funzionamento RNS 101, 102,…, 10N) preceduto da un convertitore FW 12 e seguito da un convertitore BW 14.
In Figura 10, il riferimento 16 indica un'unità di memorizzazione (ad esempio, una LUT) per la memorizzazione di parametri (ad esempio, i pesi wj) convertiti in modalità non in linea.
In una o più forme di realizzazione, a prescindere dallo schema adottato (in modalità in linea oppure non in linea) l’elaborazione come discussa può comportare una conversione adatta in RNS (ad esempio in corrispondenza di 122) e da RNS (ad esempio in corrispondenza di 140): questo permette all'operazione (ad esempio il calcolo) del blocco RNS 10 di essere espressa nella rappresentazione RNS.
In una o più forme di realizzazione, la messa in scala più l’arrotondamento dei parametri di ingresso (ad esempio in corrispondenza di 120) e la messa in scala complementare dei risultati (ad esempio in corrispondenza di 142) può facilitare il mantenimento di più informazioni, dai valori originali dei dati.
Ad esempio, nello schema generale di Figura 9, nei blocchi 120 nel convertitore di avanzamento 12, le attivazioni dallo strato precedente ed i pesi possono essere moltiplicati per rispettivi fattori di scala e , poi arrotondati al numero intero e convertiti in rappresentazione RNS, nei blocchi 122.
In modo analogo, nello schema alternativo di Figura 10, i pesi moltiplicati per il corrispondente fattore di scala, arrotondati e convertiti in modalità non in linea, possono essere memorizzati in rappresentazione RNS nella memoria 16, mentre in un blocco 120, nel convertitore di avanzamento 12, le attivazioni dallo strato precedente possono essere moltiplicate per un fattore di scala , quindi arrotondate al numero intero e convertite in rappresentazione RNS, in un blocco 122.
In una o più forme di realizzazione, il convertitore all’indietro 14 può in primo luogo eseguire la conversione dell'uscita del blocco RNS 10 di nuovo in numero intero, in un blocco 140, e poi dividere il risultato per , nel blocco 142, nel caso in cui la messa in scala e l’arrotondamento siano stati applicati in corrispondenza di 120.
In una o più forme di realizzazione, i fattori di scala e possono definire sia la quantità di informazioni, dai pesi originali e dalle attivazioni, che viene mantenuta dopo l'arrotondamento, che l’ampiezza dell’intervallo di valori RNS all'interno di ciascun blocco RNS.
In una o più forme di realizzazione, i fattori di scala possono essere selezionati al fine di limitare gli errori di arrotondamento e determinare un intervallo di valori che riduce il rischio di overflow. Ciò può essere rilevante, ad esempio, per pesi wjaventi valori nell'intervallo (-1, 1), che possono essere altamente concentrati attorno allo 0.
In una o più forme di realizzazione, si possono considerare grandi fattori di scala, al fine di mantenere la maggior parte delle informazioni dopo l'arrotondamento. D'altro canto, grandi fattori di scala possono aumentare l’intervallo dei valori di uscita, il che può comportare un rischio aumentato di overflow. Una o più forme di realizzazione possono non contemplare un rilevamento dell’overflow, con errori eventualmente derivanti dall’arrotondamento dei pesi e le delle attivazioni e/o da overflow.
In una o più forme di realizzazione la precisione di rete può essere aumentata ricorrendo ad una procedura di "personalizzazione” dei fattori di scala, per ciascuno strato.
Come rappresentato schematicamente nel diagramma di flusso di Figura 11, una prima fase 1000 in una tale procedura può comportare l'impostazione di una risoluzione M sufficientemente grande per pesi ed attivazioni (ad esempio 16 bit), così che si può considerare la medesima base RNS per ciascun blocco "residuale", mentre gli intervalli sono diversi.
In una fase 1002, si possono stimare distribuzioni di uscita dei blocchi residui, che eseguono la propagazione in avanti sulla CNN originale, rispetto ad un sottocampionamento casuale degli ingressi. A tale scopo, i valori in corrispondenza dell’uscita del blocco k residuale possono essere raccolti in .
Denotando con l’intervallo di ingresso di valori, elaborazione come sopra discussa può risultare in una distribuzione di uscita stimata del blocco k, che può essere espressa come:
(2) In una fase 1004, al fine di personalizzare i fattori di scala, i valori per le tabelle seguenti possono essere raccolti come esemplificato di seguito:
Tabella 1: per k = 1, ..., L rispetto a f =
[0,95, 0,9, 0,85, 0,8] dove ,
Tabella 2: k = 1, …, L rispetto a dove è il valore più basso per cui gli errori di arrotondamento non influenzano la precisione di rete.
Tabella 3: k = 1, …, L rispetto a dove è il valore più basso per cui gli errori di arrotondamento non influenzano la precisione di rete.
In una fase 1006, per ciascuno strato, viene selezionata la voce più a destra nella Tabella 1, che è maggiore del corrispondente prodotto .
Supponendo che il rapporto tra i fattori di scala sia
dato dal rapporto tra i valori minimi, cioè , i
fattori di scala possono essere calcolati a condizione che il loro prodotto sia uguale alla voce selezionata di Tabella 1.
Tale procedura è ulteriormente esemplificata nelle due porzioni a) e b) di Figura 12, dove OD ed ID denotano, rispettivamente, la distribuzione originaria e la distribuzione in scala.
La Figura 12 è esemplificativa della selezione di una voce di Tabella 1.
La porzione a) raffigura un istogramma possibile d’esempio di una distribuzione "originale" OD in , con l’intervallo evidenziato.
La distribuzione in può essere utilizzata al fine di selezionare un valore per che soddisfa una condizione specifica.
A titolo esemplificativo, si può assumere f = 0,8, il che significa che la distribuzione di uscita scalata con un adatto fattore presenta un intervallo, la cui larghezza è pari a 0,8 volte la larghezza dell’intervallo RNS, cioè M. Con questo vincolo aggiuntivo, si può calcolare un valore per il prodotto .
La porzione b) mostra un istogramma esemplificativo di una distribuzione in scala SD per cui, ad esempio, f = 0,8, e in questo caso corrisponde a = 3, con
l'intervallo
mostrato.
È stato osservato che una procedura come sopra discussa può implicare una moltiplicazione per ciascuna attivazione (e per ciascun peso, nello schema generale).
Si può tuttavia osservare in modo simile che:
- mentre una moltiplicazione può essere eseguita per ciascuna attivazione, i valori risultanti possono essere utilizzati varie volte in uno schema di calcolo di tipo a batch, per molte unità RNS in parallelo, mediando così il costo computazionale su varie uscite;
- è stato verificato sperimentalmente che possono essere spesso scelto senza influenzare in modo apprezzabile la precisione di rete, con nessuna moltiplicazione richiesta per .
Inoltre, nel procedimento per la ricerca di e , si può aggiungere un vincolo ulteriore, considerando i numeri nella forma come fattori di scala, così che le moltiplicazioni e divisioni (in forma binaria) comportano un semplice spostamento.
Dal punto di vista dell’implementazione hardware, questo può essere vantaggioso. Anche se applicato (soltanto) ai pesi, un tale approccio può consentire di scegliere lo schema generale (dove i pesi vengono convertiti "ogni volta" e non memorizzati ad esempio in una LUT) in forme di realizzazione in cui la quantità di memoria disponibile può rappresentare un aspetto da considerare.
In una o più forme di realizzazione, si può quindi considerare ciascuno strato k e selezionare un'adeguata potenza di 2 per i fattori di scala e .
Una procedura esemplificativa per impostare correttamente i fattori di scala per il blocco residuale k, ad una potenza di 2, viene descritta nel seguito.
Si può selezionare un limite inferiore (ad esempio, minimo) per le potenze di 2 che sono maggiori di e . Tali valori possono essere denotati, rispettivamente, come e .
Se il prodotto è inferiore ad una oppure più voci nella riga corrispondente in Tabella 1, si possono impostare i fattori di scala a queste potenze, cioè e .
La procedura esemplificativa per la selezione di fattori di scala appena descritta, presuppone che la risoluzione sia sufficientemente grande. Questo significa, in generale, che la distribuzione minima, ottenuta moltiplicando i valori di per , ha un intervallo che è sufficientemente inferiore a M. Questo facilita la selezione di valori che non influenzano la precisione di rete mediante arrotondamento ed errori di overflow.
A questo proposito, si possono considerare varie opzioni.
Ad esempio, la risoluzione può venire aumentata oppure si può eseguire qualche prova su una "griglia" di fattori di scala candidati, al fine di selezionare un valore che conduce ad un compromesso ragionevole tra le due fonti di errore.
Ad esempio, in una o più forme di realizzazione, se per uno strato k ogni voce nella corrispondente riga di Tabella 1 è inferiore al prodotto , si può impostare una griglia di valori crescenti, a partire dal valore più basso sia per che per .
Quindi, si può eseguire una prova su un sottoinsieme casuale di ingressi, allo scopo di selezionare i valori che forniscono una precisione aumentata (ad esempio, massimizzandola).
In tal caso, se i valori selezionati per i fattori di scala producono un intervallo la cui larghezza è maggiore di M, l’intervallo RNS può essere selezionato in una modalità diversa rispetto ad altri casi, come discusso nel seguito.
Ad esempio, in una o più forme di realizzazione, un intervallo RNS può essere selezionato per aumentare (es. massimizzare) la percentuale di valori che appartengono ad esso.
Per esempio, dopo aver impostato i fattori di scala per ciascun blocco residuale k, si può selezionare un intervallo RNS, denotato da , con i parametri personalizzati in modo da includere l’intervallo di uscita stimato , allo stesso tempo riducendo la probabilità di overflow.
La Figura 13 è un diagramma di flusso di una procedura esemplificativa per ciascun blocco residuale k.
In una fase 2000, si calcola una distribuzione di uscita stimata, indicata con , in cui ciascun componente è ottenuto dal corrispondente in moltiplicato per ( ).
In una fase 2002 si calcola la media (media matematica) dei valori di , indicata da .
In una fase 2004 si calcola la distanza del valore inferiore (minimo) di dalla media, cioè
(3)
In una fase 2006 si può definire un fattore di cardinalità e l’estremità sinistra dell’intervallo RNS può essere calcolata come
(4)
Una tale procedura è esemplificata in Figura 13.
In una o più forme di realizzazione la distribuzione di uscita stimata in può essere sfruttata per selezionare l’intervallo RNS.
Questo intervallo può coprire l’intervallo di uscita stimato , con margini A e B sia a sinistra che a destra di questo intervallo. Il numero disponibile di valori per questi margini, può essere distribuito ai margini in accordo con la distanza dell’estremo di sinistra e di destra di rispetto alla media (media matematica).
La Figura 14 è esemplificativa di una selezione di un intervallo RNS per una distribuzione di uscita stimata con f = 0:8. L’intervallo di valori è dato dall'intervallo [-9; 70] e la media è 9.6685. Si può assumere M=100, così = 20. Utilizzando la procedura qui esemplificata, = -24.
In una o più forme di realizzazione come qui esemplificate, al fine di essere in grado di elaborare dati nel dominio RNS nelle unità di funzionamento RNS (ad esempio 10 in Figura 9 e 10), le attivazioni arrotondate aje, eventualmente, i pesi wjpossono essere convertiti in rappresentazione RNS (ad esempio in corrispondenza di 122 nelle Figure 9 e 10).
In modo analogo, i risultati di tale elaborazione in tali unità di funzionamento RNS (ad esempio 10 in Figura 9 e 10) possono essere convertiti di ritorno nella rappresentazione convenzionale (ad esempio in corrispondenza di 140 in Figura 9 e 10).
Da un punto di vista matematico, la conversione da intero a RNS può essere eseguita, ad esempio applicando riduzioni modulari, mentre il Teorema Cinese del Resto può essere sfruttato nella conversione inversa (all’indietro) da RNS.
Si propongono vari approcci e progetti hardware per la conversione efficiente in P. A. Mohan, Sistemi numerici residui: algoritmi ed architetture, vol. 677. Springer Science & Business Media, 2012 (si vedano ad esempio Capitolo 2 pagg. 26-46 e Capitolo 3 pagg. 59-88).
In una o più forme di realizzazione, le operazioni all'interno di blocchi RNS (ad esempio 10 nelle Figure 9 e 10) possono essere definite nel Sistema Numerico Residuo.
Varie operazioni aritmetiche come ad esempio addizioni, sottrazioni e moltiplicazioni possono assumere una forma semplificata nell’RNS, con i risultati di queste operazioni atti ad essere calcolati considerando separatamente, per ciascun modulo, i corrispondenti residui degli operandi.
In una o più forme di realizzazione, l'operazione eseguita nel dominio "residuale" (cioè l’RNS) può includere un prodotto scalare seguito da aggiunta di bias.
Questo tipo di operazione può comportare quanto segue. Siano e due vettori con componenti integrali.
In una o più forme di realizzazione, la rappresentazione RNS di può essere calcolata come:
(5).
Inoltre, in una o più forme di realizzazione, il calcolo in un blocco RNS (ad esempio 10 in Figura 9 e 10) può comprendere l'aggiunta di valori di bias.
In tal caso, i valori di bias per lo strato k possono essere moltiplicati per il prodotto ( ) e, quindi, arrotondati, e la (principale) operazione eseguita da un blocco RNS, secondo la formula (5) di cui sopra, può essere leggermente modificata.
Sia b un numero intero, la rappresentazione RNS di può essere calcolata come:
(6).
Di conseguenza, una o più forme di attuazione possono comportare un'implementazione parallelizzata, per l’esecuzione di calcoli, in modo separato, per ciascun modulo.
Si può altrimenti osservare che il costo computazionale di formule come (5) e (6) di cui sopra deriva principalmente dal costo del modulo più grande, che in generale è molto inferiore a M e, quindi, ai valori originali.
Algoritmi e progetti hardware per un’implementazione efficiente dell’aritmetica nel dominio RNS sono oggetto di vasta letteratura: si veda, ad esempio, P. A. Mohan (già citato).
Per esempio, in una o più forme di realizzazione, un’unità RNS per moduli a potenza di 2 può includere un sommatore standard (ad esempio del tipo carry save) oppure un moltiplicatore (es. Albero di Wallace/Booth) con una larghezza di bit pari alla base corrispondente.
La complessità del circuito risultante può quindi essere proporzionale (con una legge lineare per i sommatori e quadratica per i moltiplicatori) al numero di bit e l’implementazione HW risultante sarà molto meno complessa e più veloce per le unità RNS, rispetto alle unità convenzionali.
È stato comunque osservato che per moduli nella forma 2<s>- 1 l'implementazione è più complessa, richiedendo moltiplicatori più ampi e sommatori di tipo end-carry, per l’aritmetica del modulo.
La seguente Tabella riporta un insieme di risultati sperimentali per area, potenza e temporizzazione per unità MAC standard con 16 bit di precisione e tre diverse rappresentazioni RNS con base 3 e 4. Questi risultati sono stati ottenuti con un compilatore dc Synopsys con sintesi di front-end in FD-SOI28 nm a 1.1V e 125C (DesignWare è stato utilizzato per i blocchi moltiplicatori e sommatori) con un design combinatorio puro. Ciascuna colonna è divisa in 2 sotto-colonne che contengono, rispettivamente, i valori attuali e i fattori di aumento
Mentre questi risultati non tengono conto della conversione da numero intero-a-RNS e viceversa, tali costi possono essere "mediati", creando unità HW parallele, per elaborare più MAC da convoluzioni di kernel, ed accumulandole prima di riconvertire i risultati.
Si è osservato che la scelta dell’insieme di moduli può svolgere un ruolo significativo. Infatti, i moduli sono responsabili della larghezza dell’intervallo. Inoltre, una scelta giudiziosa della base può portare a vantaggi in termini di efficienza di calcolo o di memorizzazione ed a semplificazione di alcune operazioni.
In generale, in una o più forme di realizzazione, possibili obiettivi che dirigono la scelta dei moduli possono includere:
- aumento (massimizzazione) dell’intervallo,
- riduzione dei tempi di esecuzione delle operazioni, - aumento (massimizzazione) di efficienza di memorizzazione, in considerazione del fatto che i residui sarebbero codificati in qualche codice binario.
Un modo possibile di aumentare l’intervallo può includere l’utilizzo di moduli che sono (a coppie) reciprocamente primi. Questo risultato può essere agevolato, ad esempio, da strategie per la scelta dei moduli inclusi, ad esempio:
- un numero elevato di moduli coprimi di dimensioni ridotte,
- una serie di moduli coprimi della forma 2<s,>(2<s>- 1). La prima strategia facilita la riduzione del tempo di esecuzione di addizioni e moltiplicazioni, che sono determinate principalmente dal tempo di esecuzione di addizioni e moltiplicazioni di residui, corrispondenti al modulo più grande. D'altro canto, questa strategia può aumentare il tempo di conversione da sistema numerico residuo al sistema di tipo mixed-radix associato (si veda, ad es. I. Koren, Algoritmi aritmetici per Computer, capitolo 11, pagg. 264-265, Universities Press, 2002) e non massimizza l'efficienza di memorizzazione.
Quest'ultima strategia facilita l’efficienza di memorizzazione e semplifica l'esecuzione di alcune operazioni aritmetiche, come addizioni e sottrazioni. Infatti il numero minore di bit necessari per rappresentare le cifre di residuo per il modulo miè .
Pertanto, l’efficienza di memorizzazione di rappresentazione può essere aumentata selezionando un modulo miche è uguale a 2<s>per alcuni s o molto vicino ad esso, come ad esempio (2<s>- 1). Questa strategia può essere utile anche per semplificazioni di operazioni. Per esempio, per moduli della forma 2<s>, un’addizione può essere eseguita con un sommatore binario ordinario e l'inverso additivo di un numero è semplicemente il suo complemento a 2. Per un modulo (2<s>- 1), la riduzione modulare può essere ulteriormente semplificata, e l’addizione può diventare un sommatore con riporto circolare (end-around carry), con l'inverso additivo di un numero che è il complemento a 1 dello stesso. In tal modo, nessuna riduzione modulare può essere coinvolta per addizioni e sottrazioni.
La performance delle forme di realizzazione è stata valutata, ad esempio, nel concorso di una CNN come AlexNet (discusso precedentemente).
A scopi sperimentali, è stata adottata una replica MATLAB di propagazione in avanti di AlexNet, utilizzando la versione della rete fornita dal Caffe Model Zoo (http://caffe.berkeleyvision.org/model_zoo.html) per cui sono disponibili pesi addestrati.
Un'analisi delle distribuzioni di valori che sarebbero trattati in rappresentazione RNS è stata effettuata, in particolare, con riferimento alla distribuzione di ingressi e uscite da blocchi RNS - eseguendo la propagazione in avanti sulla rete originaria con 200 immagini di validazione casuali - insieme alla distribuzione di pesi. Sulla base dei valori ottenuti, la risoluzione della rete è impostata a n = 16 bit, impostando la base RNS a (2<3>; 2<6>-1; 2<7>- 1), che fornisce M = 64008.
È stato inoltre verificato che l'impostazione = 1 per k = 1, ..., L := 8 non influenza in modo apprezzabile la precisione di rete.
Ulteriori prove hanno riguardato la procedura di messa a punto dei parametri rimanenti, partendo da fattori di scala per i pesi, per k = 1, ..., 8 - per cui la rete è particolarmente sensibile - e quindi selezionando, di conseguenza, l’intervallo RNS per ciascun blocco. I valori finali sono riportati nella tabella sotto, la quale per i primi e secondi strati convoluzionali porta i risultati di prove eseguite per selezionare un valore ottimale del fattore di scala.
L'impatto di una o più forme di realizzazione sulle performance di AlexNet sull'intero insieme di validazione è riportato nell'ulteriore tabella, nel seguito, la quale fa riferimento alla procedura esemplificativa qui discussa, è stata sperimentata con la condizione aggiuntiva di considerare i fattori di scala come potenze di 2. Questa scelta facilita ulteriormente la semplificazione della divisione per i fattori di scala, alla fine dei blocchi residuali, in vista di un'implementazione hardware ottimizzata. La stessa risoluzione e base RNS sono state mantenute e con la messa a punto dei fattori di scala per k = 1; …; 8 parzialmente modificate.
La seguente tabella riassume per confronto diretto i risultati ottenibili con una o più forme di realizzazione, includenti la variazione sopra discussa.
Lo schema a blocchi della Figura 15 è esemplificativo di un’apparecchiatura che può comprendere una rete neurale 100 secondo una o più forme di realizzazione.
Tale apparecchiatura può includere un elemento di ingresso o dispositivo IS, ad esempio un sensore come un microfono, una (video)camera, un sensore biomedicale e similare, che fornisce segnali di ingresso da elaborare da parte di una rete neurale 100, secondo una o più forme di realizzazione. La rete neurale 100 può essere configurata come discusso in precedenza, per eseguire sui segnali di ingresso, dal dispositivo IS, attività di elaborazione come, ad esempio, classificazione di scena acustica, riconoscimento di attività basato su sensore, classificazione dei battiti cardiaci e riconoscimento di emozione facciale (questi sono, naturalmente, soltanto un esempio) e fornire risultati corrispondenti ad un dispositivo di uscita OD come, ad esempio, un’unità di visualizzazione, un sistema di segnalazione, un dispositivo "in rete", ad esempio in un scenario di Internet-delle-cose (IoT).
A titolo di confronto, alcune soluzioni convenzionali possono adottare una rappresentazione a 48 bit per pesi ed attivazioni (questo può rappresentare un valore massimo per un’implementazione convenzionale), con corrispondenti accumulatori a 103-bit (per 11x11 filtri convoluzionali). Questo può corrispondere ad una rappresentazione RNS che utilizza un numero di bit superiore a 103. Fasi assenti che consentono una riduzione nella risoluzione dell'accumulatore, una perdita di precisione di rete sarebbero inevitabili.
Per contrasto, una o più forme di realizzazione possono ammettere una rappresentazione ridotta per gli accumulatori.
Ad esempio, prove discusse sopra possono iniziare da una rappresentazione a 32 bit per i pesi che, senza perdita di informazioni come negli approcci convenzionali, richiederebbe accumulatori a 71-bit. Una o più forme di realizzazione possono adottare accumulatori RNS a 16-bit, influenzando in modo minimo la precisione di rete. In una o più forme di realizzazione, ciò può essere reso possibile, utilizzando fattori di scala come discussi in precedenza.
Una o più forme di realizzazione possono quindi riguardare un procedimento di funzionamento di reti neurali, includenti una pluralità di strati di rete (ad esempio, uno strato di ingresso IL, uno strato di uscita OL ed almeno uno strato intermedio ("nescosto") HL tra lo strato di ingresso e lo strato di uscita), includente unità operative che eseguono operazioni aritmetiche(a bassa precisione) sui dati di ingresso (ad esempio a<(k-1)>, w<(k)>) per fornire dati di uscita (es. a<(k)>), in cui il procedimento include:
- selezionare un insieme di unità operative (si veda, ad esempio conv, fc, inizio nelle Figure da 6 a 8) negli strati di rete ed
- eseguire operazioni aritmetiche in unità operative (si veda, ad esempio, 10 nelle Figure 9 e 10) in detto insieme selezionato di unità operative, eseguendo operazioni in un Sistema Numerico Residuo (brevemente, RNS) su dati di ingresso convertiti in RNS (si veda, ad esempio 12; 16), ottenendo dati di uscita RNS nel Sistema Numerico Residuo,
- eseguire la conversione all'indietro (si veda, ad esempio, 14) dal Sistema Numerico Residuo dei dati di uscita RNS, risultanti dalle operazioni RNS.
In una o più forme di realizzazione, l’insieme selezionato di unità operative può includere unità operative che eseguono operazioni selezionate tra moltiplicazioni, inclusi prodotto scalare e moltiplicazione di matrice, addizioni e sottrazioni.
In una o più forme di realizzazione, l’insieme di unità operative selezionate può includere unità operative che eseguono operazioni (ad esempio, prodotti scalari) omogenee, rispetto ad un primo insieme e ad un secondo insieme di dati di ingresso (ad esempio, attivazioni a<(k-1)>e pesi w<(k)>) e il procedimento può includere:
- fornire i dati di ingresso convertiti in RNS, convertendo in avanti ad un Sistema Numerico Residuo sia detto primo insieme che detto secondo insieme di dati di ingresso (si veda, ad esempio 12 in Figura 9); oppure
- fornire il primo insieme di dati di ingresso, convertendo in avanti ad un Sistema Numerico Residuo detto primo insieme di dati di ingresso (si veda, ad esempio, 12 in Figura 10) e fornendo il secondo insieme di dati di ingresso come insieme memorizzato (16) di dati di ingressi convertiti in RNS (si veda, ad esempio, 16 in Figura 10).
In una o più forme di realizzazione, i dati di ingresso convertiti in RNS possono includere dati scalati (ad esempio in corrispondenza di 120) da rispettivi fattori di scala, in cui la conversione all'indietro (ad esempio, 14) dal Sistema Numerico Residuo include il ridimensionamento in scala complementare (ad esempio 142) dei dati di uscita RNS, risultanti dalle operazioni RNS, mediante rispettivi fattori di scala complementari.
In una o più forme di realizzazione, i dati di ingresso convertiti in RNS possono includere dati convertiti da numero intero-a-RNS (ad esempio 122), in cui la conversione all'indietro dal Sistema Numerico Residuo può includere una conversione da RNS-a-numero intero (ad esempio 140) di dati di uscita RNS risultanti dalle operazioni RNS.
In una o più forme di realizzazione:
- i dati di ingresso convertiti in RNS possono comprendere dati scalati mediante rispettivi fattori di scala ed arrotondati, per essere convertiti da numero intero-a-RNS, e
- la conversione dal Sistema Numerico Residuo può includere una conversione da RNS-a-numero intero e il ridimensionamento in scala complementare, mediante rispettivi fattori di scala complementari di dati di uscita RNS risultanti da operazione RNS.
Una o più forme di realizzazione possono includere uno o più tra:
- utilizzare di un medesimo insieme di fattori di scala per dati in ingresso convertiti in RNS, in una pluralità di operazioni aritmetiche nel Sistema Numerico RNS (evitando così di ricalcolarli), e/o
- impostare all’unità i fattori di scala per almeno una parte di detti dati di ingresso convertiti a RNS, e/o - i fattori di scala per i dati di ingresso convertiti in RNS possono includere fattori di scala della potenza di due, in cui il ridimensionamento in scala include lo spostamento di dati binari.
Una o più forme di realizzazione possono includere l'esecuzione (10) di operazioni aritmetiche in un Sistema Numerico Residuo RNS con moduli della potenza di due.
Una o più forme di realizzazione possono riguardare una rete neurale includente una pluralità di strati (ad esempio IL, HL, OL) includente unità operative che eseguono operazioni aritmetiche su dati in ingresso, per fornire dati di uscita, la rete includendo unità configurate (si veda, ad esempio, 12, 10, 14 nelle Figure 9 e 10) per il funzionamento in un Sistema Numerico Residuo (brevemente, RNS), eseguendo operazioni RNS su dati in ingresso convertiti in RNS con il procedimento di una o più forme di realizzazione.
Una o più forme di realizzazione possono riguardare un’apparecchiatura includente,
- un dispositivo sorgente (ad esempio come esemplificato all'inizio di questa descrizione) che fornisce dati per l'elaborazione da parte di una rete neurale,
- una rete neurale (ad esempio 100) secondo una o più forme di realizzazione, la rete neurale accoppiata al dispositivo sorgente (IS) e configurata per ricevere detti dati dal dispositivo sorgente, fornendo un’elaborazione di rete neurale di detti dati ed emettendo in uscita dati di uscita (ad esempio OD), risultanti dall’elaborazione di rete neurale di detti dati nella rete neurale.
Una o più forme di realizzazione possono riguardare un prodotto informatico caricabile nella memoria di almeno un dispositivo di elaborazione, ed includente porzioni di codice software per l’esecuzione delle fasi del procedimento di una o più forme di realizzazione, quando il prodotto è eseguito su almeno un dispositivo di elaborazione.
Fatti salvi i principi sottostanti, i dettagli e le forme di realizzazione possono variare, anche in modo significativo, rispetto a quanto è stato descritto sopra soltanto a titolo d’esempio, senza discostarsi dalla portata della protezione.
La portata della protezione è determinata dalle rivendicazioni che seguono.

Claims (12)

  1. RIVENDICAZIONI 1. Procedimento di funzionamento di reti neurali, includenti una pluralità di strati di rete (IL, HL, OL) includenti unità operative che eseguono operazioni aritmetiche su dati in ingresso (a<(k-1)>, w<(k)>) per fornire dati di uscita (a<(k)>), in cui il procedimento include: - selezionare un insieme di unità operative (conv, fc, inception) negli strati di rete (IL, HL, OL), e - eseguire operazioni aritmetiche in unità operative (10) in detto insieme selezionato di unità operative, eseguendo operazioni in un Sistema Numerico Residuo, RNS, su dati di ingresso (a<(k-1)>, w<(k)>) convertiti in RNS (12; 16), ottenendo dati di uscita (a<(k)>) RNS nel Sistema Numerico Residuo, - eseguire la conversione all'indietro (14) dal Sistema Numerico Residuo dei dati di uscita (a<(k)>) RNS, risultanti dalle operazioni RNS.
  2. 2. Procedimento secondo la rivendicazione 1, in cui l’insieme di unità operative selezionate include unità operative (conv, fc, inception) che eseguono operazioni selezionate tra moltiplicazioni, inclusi prodotto scalare e moltiplicazione di matrice, addizioni e sottrazioni.
  3. 3. Procedimento della rivendicazione 1 o della rivendicazione 2, in cui l’insieme di unità operative selezionate include unità operative che eseguono operazioni omogenee rispetto ad un primo insieme (a<(k-1)>) e ad un secondo insieme (w<(k)>) di dati di ingresso, il procedimento comprendendo la fornitura di dati di ingresso (a<(k-1)>, w<(k)>)convertiti in RNS, convertendo in avanti (12) in un Sistema Numerico Residuo sia detto primo insieme (a<(k-1)>) che detto secondo insieme (w<(k)>) di dati di ingresso.
  4. 4. Procedimento della rivendicazione 1 o della rivendicazione 2, in cui l’insieme di unità operative selezionate include unità operative che eseguono operazioni omogenee rispetto ad un primo insieme (a<(k-1)>) e ad un secondo insieme (w<(k)>) di dati di ingresso, il procedimento comprendendo la fornitura di dati di ingresso (a<(k-1)>, w<(k)>) convertiti in RNS: - fornendo il primo insieme (a<(k-1)>) di dati di ingresso convertendo in avanti (12) in un Sistema Numerico Residuo detto primo insieme (a<(k-1)>) di dati di ingresso, e - fornendo il secondo insieme (w<(k)>) di dati di ingresso come un insieme memorizzato (16) di dati di ingresso convertiti in RNS.
  5. 5. Procedimento di qualsiasi delle precedenti rivendicazioni, in cui i dati di ingresso (a<(k-1)>, w<(k)>) convertiti in RNS includono dati scalati (120) mediante rispettivi fattori di scala, in cui la conversione all'indietro (14) dal Sistema Numerico Residuo include il ridimensionamento in scala complementare (142) dei dati di uscita RNS (a<(k)>), risultanti dalle operazioni RNS, mediante rispettivi fattori di scala complementari.
  6. 6. Procedimento di qualsiasi delle precedenti rivendicazioni, in cui i dati di ingresso (a<(k-1)>, w<(k)>) convertiti in RNS includono dati convertiti da numero intero-a-RNS (122), in cui la conversione all'indietro (14) dal Sistema Numerico Residuo include la conversione da RNS-a-numero intero (140) dei dati di uscita RNS (a<(k)>), risultanti dalle operazioni RNS.
  7. 7. Procedimento della rivendicazione 5 e della rivendicazione 6, in cui: - i dati di ingresso convertiti in RNS (a<(k-1)>, w<(k)>) includono dati scalati mediante rispettivi fattori di scala ed arrotondati (120) per essere convertiti da numero intero-a-RNS (122), e - la conversione all’indietro (14) dal Sistema Numerico Residuo include una conversione da RNS-a-numero intero (140) e il ridimensionamento in scala complementare (142), mediante rispettivi fattori di scala complementari, dei dati di uscita RNS (a<(k)>) risultanti da operazioni RNS.
  8. 8. Procedimento della rivendicazione 5 e della rivendicazione 7, includente almeno uno tra: - utilizzo di un medesimo insieme di fattori di scala per dati in ingresso (a<(k-1)>, w<(k)>) convertiti in RNS in una pluralità di operazioni aritmetiche (10) nel Sistema Numerico Residuo RNS, e/o - impostazione all’unità dei fattori di scala per almeno una parte (a<(k-1)>) di detti dati di ingresso (a<(k-1)>, w<(k)>) convertiti in RNS, e/o - i fattori di scala per dati di ingresso (a<(k-1)>, w<(k)>) convertiti in RNS includendo fattori di scala della potenza di due, in cui il ridimensionamento in scala include lo spostamento di dati binari.
  9. 9. Procedimento di qualsiasi delle precedenti rivendicazioni, includente l'esecuzione (10) di operazioni aritmetiche in un Sistema Numerico Residuo RNS con moduli della potenza di due.
  10. 10. Rete neurale includente una pluralità di strati di rete (IL, HL, OL) includenti unità operative (10) che eseguono operazioni aritmetiche su dati di ingresso (a<(k-1)>, w<(k)>), per fornire dati di uscita (a<(k)>), gli strati di rete includendo unità configurate (12, 10, 14) per eseguire operazioni in un Sistema Numerico Residuo, RNS, eseguendo operazioni RNS su dati di ingresso (�<(k-1)>, w<(k)>) convertiti in RNS (12; 16) con il procedimento di qualsiasi delle rivendicazioni da 1 a 9.
  11. 11. Apparecchiatura includente, - un dispositivo sorgente (IS) che fornisce dati per l'elaborazione da parte di una rete neurale, - una rete neurale (100) secondo la rivendicazione 10, la rete neurale (100) accoppiata al dispositivo sorgente (IS) e configurata per ricevere detti dati dal dispositivo sorgente (IS), fornendo un’elaborazione di rete neurale di detti dati ed emettendo in uscita dati di uscita (OD), risultanti dall’elaborazione di rete neurale di detti dati nella rete neurale (100).
  12. 12. Prodotto informatico caricabile nella memoria di almeno un dispositivo di elaborazione e includente porzioni di codice software per l’esecuzione delle fasi del procedimento di qualsiasi delle rivendicazioni da 1 a 9, quando il prodotto è eseguito su almeno un dispositivo di elaborazione.
IT102017000008949A 2017-01-27 2017-01-27 Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti IT201700008949A1 (it)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IT102017000008949A IT201700008949A1 (it) 2017-01-27 2017-01-27 Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti
EP17193559.6A EP3355247A1 (en) 2017-01-27 2017-09-27 A method of operating neural networks, corresponding network, apparatus and computer program product
CN201710920011.5A CN108364064B (zh) 2017-01-27 2017-09-30 操作神经网络的方法、设备及系统
US15/877,138 US11308406B2 (en) 2017-01-27 2018-01-22 Method of operating neural networks, corresponding network, apparatus and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102017000008949A IT201700008949A1 (it) 2017-01-27 2017-01-27 Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti

Publications (1)

Publication Number Publication Date
IT201700008949A1 true IT201700008949A1 (it) 2018-07-27

Family

ID=58701821

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102017000008949A IT201700008949A1 (it) 2017-01-27 2017-01-27 Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti

Country Status (4)

Country Link
US (1) US11308406B2 (it)
EP (1) EP3355247A1 (it)
CN (1) CN108364064B (it)
IT (1) IT201700008949A1 (it)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112580351A (zh) * 2020-12-31 2021-03-30 成都信息工程大学 一种基于自信息损失补偿的机器生成文本检测方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11164071B2 (en) * 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
KR102477404B1 (ko) * 2017-08-31 2022-12-13 캠브리콘 테크놀로지스 코퍼레이션 리미티드 칩 장치 및 관련 제품
US10776662B2 (en) * 2017-11-09 2020-09-15 Disney Enterprises, Inc. Weakly-supervised spatial context networks to recognize features within an image
US10387122B1 (en) * 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier
US11165694B2 (en) * 2018-07-31 2021-11-02 Mcafee, Llc Methods, systems, articles of manufacture and apparatus to identify applications
JP7174243B2 (ja) * 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
CN109787585A (zh) * 2019-01-31 2019-05-21 电子科技大学 一种基于嵌套式余数系统的fir滤波系统
CN111767204B (zh) * 2019-04-02 2024-05-28 杭州海康威视数字技术股份有限公司 溢出风险检测方法、装置及设备
CN110348350B (zh) * 2019-07-01 2022-03-25 电子科技大学 一种基于面部表情的驾驶员状态检测方法
US11157594B2 (en) 2019-07-24 2021-10-26 Facebook, Inc. Matrix multiplication in hardware using modular math
CN111126587B (zh) * 2019-12-30 2021-02-02 上海安路信息科技有限公司 交并比电路
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
RU2759964C1 (ru) * 2020-08-12 2021-11-19 Федеральное государственное казенное военное образовательное учреждение высшего образования "Военный учебно-научный центр Военно-воздушных сил "Военно-воздушная академия имени профессора Н.Е. Жуковского и Ю.А. Гагарина" (г. Воронеж) Министерства обороны Российской Федерации Нейронная сеть конечного кольца
US11947960B2 (en) 2021-11-05 2024-04-02 Qualcomm Incorporated Modulo-space processing in multiply-and-accumulate units

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0199325A (ja) * 1987-10-12 1989-04-18 Sony Corp エンコーダ回路
US5008668A (en) 1987-10-12 1991-04-16 Sony Corporation Method and apparatus for encoding and decoding data in residue number system
JP2930325B2 (ja) * 1989-07-29 1999-08-03 ソニー株式会社 ディジタル信号処理回路
FR2690771A1 (fr) * 1992-04-29 1993-11-05 Philips Electronique Lab Processeur neuronal muni de moyens pour normaliser des données.
CN1119308A (zh) * 1994-02-07 1996-03-27 华中理工大学 余数制系统中的一种求余网络和余/+转换器电路
US5987487A (en) * 1996-03-11 1999-11-16 Cirrus Logic, Inc. Methods and apparatus for the processing of digital signals
US6601049B1 (en) * 1996-05-02 2003-07-29 David L. Cooper Self-adjusting multi-layer neural network architectures and methods therefor
JP4279626B2 (ja) * 2003-07-31 2009-06-17 株式会社アドバンテスト 剰余系演算システム、スケーリング演算器、スケーリング演算方法、及びそのプログラムと記録媒体
US8711926B2 (en) * 2007-02-08 2014-04-29 Qualcomm Incorporated Distortion estimation for quantized data
EP2325707A1 (en) * 2009-11-20 2011-05-25 Zerogroup Holding OÜ A method and system for controlling environmental conditions of different entities
CN102043760B (zh) * 2010-12-27 2013-06-05 上海华为技术有限公司 数据处理方法及系统
WO2014149070A1 (en) * 2013-03-15 2014-09-25 Hrl Laboratories, Llc Neural network and method of programming
RU2584495C1 (ru) * 2015-05-14 2016-05-20 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Северо-Кавказский федеральный университет" Устройство для вычисления коэффициентов обобщенной полиадической системы с коррекцией ошибок
US10228911B2 (en) 2015-10-08 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus employing user-specified binary point fixed point arithmetic
CN106485321B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器
CN106203622B (zh) * 2016-07-14 2018-12-25 杭州华为数字技术有限公司 神经网络运算装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DAISUKE MIYASHITA ET AL: "Convolutional Neural Networks using Logarithmic Data Representation", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 3 March 2016 (2016-03-03), XP080686928 *
MATTHIEU COURBARIAUX ET AL: "TRAINING DEEP NEURAL NETWORKS WITH LOW PRECISION MULTIPLICATIONS", CORR (ARXIV), 23 October 2015 (2015-10-23), pages 1 - 10, XP055302535 *
NAKAHARA HIROKI ET AL: "A deep convolutional neural network based on nested residue number system", 2015 25TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL), IMPERIAL COLLEGE, 2 September 2015 (2015-09-02), pages 1 - 6, XP032791469, DOI: 10.1109/FPL.2015.7293933 *
YINAN KONG ET AL: "Residue number system scaling schemes", PROCEEDINGS VOLUME 9025IS&T/SPIE ELECTRONIC IMAGING | 2-6 FEBRUARY 2014INTELLIGENT ROBOTS AND COMPUTER VISION XXXI: ALGORITHMS AND TECHNIQUES, vol. 5649, 12 December 2004 (2004-12-12), US, pages 525, XP055415010, ISSN: 0277-786X, ISBN: 978-1-5106-1354-6, DOI: 10.1117/12.582137 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112580351A (zh) * 2020-12-31 2021-03-30 成都信息工程大学 一种基于自信息损失补偿的机器生成文本检测方法
CN112580351B (zh) * 2020-12-31 2022-04-19 成都信息工程大学 一种基于自信息损失补偿的机器生成文本检测方法

Also Published As

Publication number Publication date
US20180218275A1 (en) 2018-08-02
CN108364064A (zh) 2018-08-03
CN108364064B (zh) 2022-05-24
EP3355247A1 (en) 2018-08-01
US11308406B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
IT201700008949A1 (it) Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti
CN109948784B (zh) 一种基于快速滤波算法的卷积神经网络加速器电路
CN111144329B (zh) 一种基于多标签的轻量快速人群计数方法
US11449729B2 (en) Efficient convolutional neural networks
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
CN107340993B (zh) 运算装置和方法
CN106855952B (zh) 基于神经网络的计算方法及装置
CN111652360B (zh) 一种基于脉动阵列的卷积运算装置
KR102396447B1 (ko) 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
Fiorini New CICT framework for deep learning and deep thinking application
Ortiz et al. Low-precision floating-point schemes for neural network training
Chervyakov et al. Residue number system-based solution for reducing the hardware cost of a convolutional neural network
CN114781629B (zh) 基于并行复用的卷积神经网络的硬件加速器及并行复用方法
Ahn Real-time video object recognition using convolutional neural network
CN108629405B (zh) 提高卷积神经网络计算效率的方法和装置
Minakova et al. Buffer sizes reduction for memory-efficient CNN inference on mobile and embedded devices
CN111652359B (zh) 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列
CN111882028B (zh) 用于卷积神经网络的卷积运算装置
CN112561050A (zh) 一种神经网络模型训练方法及装置
CN116665300A (zh) 基于时空自适应特征融合图卷积网络的骨架动作识别方法
Hadnagy et al. Efficient implementation of convolutional neural networks on FPGA
Solovyev et al. Real-Time Recognition of Handwritten Digits in FPGA Based on Neural Network with Fixed Point Calculations
Fiorini Deep learning and deep thinking: New application framework by CICT
Zhang et al. Automotive Object Detection via Learning Sparse Events by Temporal Dynamics of Spiking Neurons
CN110555519A (zh) 一种基于符号随机计算的低复杂度卷积神经网络