1/3
Sardegna FESR 2014/2020 - ASSE PRIORITARIO I
RICERCA SCIENTIFICA SVILUPPO TECNOLOGICO E INNOVA IONE
Azione 1.1.4 Sostegno alle attività collaborative di R&S per lo sviluppo di nuove tecnologie sostenibili, di nuovi prodotti e servizi
RAPPORTO TECNICO
Sintesi e analisi automatica di CPS (aggiornamento)
P oge o cl e Top Do n PROSSIMO
Sardegna FESR 2014/2020 - ASSE PRIORITARIO I
RICERCA SCIENTIFICA SVILUPPO TECNOLOGICO E INNOVA IONE
Azione 1.1.4 Sostegno alle attività collaborative di R&S per lo sviluppo di nuove tecnologie sostenibili, di nuovi prodotti e servizi
RAPPORTO TECNICO
Sintesi e analisi automatica di CPS (aggiornamento)
Organismo di Ricerca: Università degli Studi di Sassari Progetto Cluster Top Down: PROSSIMO
CUP: J85F17000030002
Il sottoscritto Luca Pulina in qualità di Responsabile scientifico del progetto Cluster Top Down PROSSIMO
Timbro e Firma_________________________________ Data _____12/11/2020____________
Sommario
In questo lavoro presentiamo un prototipo iniziale di NeVer 2.0, un nuovo sistema per la sintesi e l'analisi automatizzate di Deep Neural Network. NeVer 2.0 prende in prestito la sua filosofia di progettazione da NeVer, il primo pacchetto che ha integrato l'apprendimento, la verifica automatizzata e la riparazione di reti neurali (superficiali) in un unico strumento.
L'obiettivo di NeVer 2.0 è fornire un'integrazione simile per reti profonde sfruttando una selezione di framework di apprendimento all'avanguardia e integrandoli con algoritmi di verifica per facilitare la sfida della scalabilità e rendere possibile la riparazione di reti neurali che presentano errori o violazioni di date proprietà.
Contents
1 Introduzione
2 Architettura del sistema e implementazione
2.1 Rappresentazione interna . . . . 2.2 Convertitori e rappresentazioni . . . . 2.3 Addestramento . . . . 2.4 Pruning . . . . 2.5 Verifica . . . . 3 Analisi sperimentale
4 Estensioni e lavoro futuro
1 Introduzione
Il successo delle Deep Neural Network (DNN) in vari domini applicativi, ha reso tale metodologia di Machine Learning (ML) molto di↵usa — si veda, ad esempio, [1]
per la classificazione delle immagini, [2] per il riconoscimento del parlato e, pi`u in generale, [3]. Nonostante gli impressionanti progressi compiuti dalla comunit`a scientifica di ML nell’adozione delle DNN, `e risaputo che la loro applicazione in contesti sensibili alla sicurezza non `e ancora priva di problemi. Dalla loro ben nota sensibilit`a al adversarial perturbation [4, 5], cio`e, modifiche minime ai dati di input classificati correttamente che fanno s`ı che una rete risponda in modi imprevisti e non corretti, ad altre propriet`a meno studiate, ma forse significative — si veda, ad esempio, [6] — la necessit`a di strumenti per analizzare ed eventualmente ”riparare”
le DNN `e forte.
Come testimoniato da una ampia survey [7] di oltre 200 articoli, la risposta della scientifica della comunit`a `e stata altrettanto forte. Di conseguenza, sono stati proposti molti algoritmi e strumenti software per la verifica di reti neurali. Alcuni esempi, tra gli strumenti pi`u avanzati, sono Marabou [8], ERAN [9] e MIPVer- ify [10]. Altri strumenti di verifica ampiamente noti sono Neurify [11], NNV [12], Sherlock [13] e NSVerify [14]. La maggior parte degli strumenti sopra menzionati e le relative metodologie funzionano solo per reti neurali feedforward completamente connesse e con funzioni di attivazione di tipo ReLU e solo alcuni di essi hanno al- goritmi di verifica per reti neurali convoluzionali con tipi di funzione di attivazione di↵erenti.
In questo documento `e presentato un primo prototipo di NeVer 2.0, un nuovo sistema che mira a colmare il divario tra apprendimento e verifica delle DNN e a risolvere alcuni dei problemi precedenti problemi menzionati. NeVer 2.0 eredita la filosofia di design da NeVer [15], il primo strumento software per apprendimento automatico, analisi e riparazione di reti neurali. NeVer era stato progettato per reti con percettroni multilivello e il suo funzionamento si basava su un meccanismo di astrazione-raffinamento descritto in [16, 17]. Dal punto di vista del sistema soft- ware, un aspetto peculiare di NeVer era che includeva capacit`a di apprendimento attraverso la libreria shark [18]. Per quanto riguarda la parte di verifica, NeVer utilizzava un risolutore che integra ragionamento du booleani e vincoli aritmetici lineari utilizzando il solutore HySAT [19]. Un’ulteriore particolarit`a dell’approccio era che NeVer poteva sfruttare controesempi astratti per (provare a) riparare la rete, cio`e riaddestrarla per eliminare le cause del comportamento scorretto.
Il nostro obiettivo per NeVer 2.0 `e quello di fornire le stesse funzionalit`a di NeVer, ma in un pacchetto software aggiornato con le seguenti caratteristiche:
• Caricamento di set di dati, modelli addestrati e non addestrati forniti in vari formati; attualmente NeVer 2.0 supporta direttamente alcuni dataset molto utilizzati quali, ad esempio, MNIST [20] e Fashion MNIST [21], ma supporta ulteriori dataset che possono essere aggiunti tramite un’interfaccia comune;
modelli (addestrati o meno) possono essere forniti a NeVer 2.0 usando ONNX
Figure 1: Diagramma UML di NeVer 2.0.
1 e PyTorch2 [22] – il supporto per TensorFlow3 [23] `e in fase di sviluppo.
• Addestramento di DNN tramite framework allo stato dell’arte; attualmente NeVer 2.0 `e basato su PyTorch, ma sono previste ulteriori estensioni per gestire diversi tipi di apprendimento di modelli (ad esempio, macchine basate su kernel) che non vengono gestiti in modo nativo da PyTorch.
• Manipolazione di DNN, con incluse operazioni di pruning [24], quantizzazione [25], e trasferimento di apprendimento [26]; attualmente NeVer 2.0 si basa su Py- Torch per la manipolazione di DNN e sono implementate due tecniche di pruning ”tradizionali”, vale a dire network slimming [24] e weight pruning [27].
• Verifica di DNN: attualmente NeVer 2.0 fa leva su strumenti software esterni come backend per fornire capacit`a di verifica; sono attualmente implementate le interfacce a Marabou, ERAN e MIPVerify; abbiamo in programma di ag- giungere algoritmi di raffinamento dell’astrazione che migliorano ed estendono quelli disponibili in NeVer, ma il loro lo sviluppo `e ancora in corso.
• La riparazione di DNN dovrebbe consentire, tramite i risultati della verifica, di migliorare i risultati dell’apprendimento; attualmente, NeVer 2.0 presenta lo stesso meccanismo di NeVer.
La versione di NeVer 2.0 qui descritta `e disponibile online [28] sotto la licenza Commons Clause (GNU GPL v3.0).
Il resto del documento `e strutturato come segue. In sezione 2 `e descritta l’architettura e l’attuale implementazione di NeVer 2.0. In sezione 3 sono presentati alcuni risul- tati preliminari ottenuti con il prototipo NeVer 2.0 usando il dataset MNIST per apprendere e verificare reti ReLU completamente connesse. Concludiamo il docu- mento con la descrizione delle estensioni da sviluppare in Sezione 4.
2 Architettura del sistema e implementazione
NeVer 2.0 `e concepito come un’API modulare per gestire DNN, dall’addestramento alla verifica e all’eventuale riparazione. In figura 1 `e presentata una panoramica
1https://onnx.ai/
2https://pytorch.org/
3https://www.tensorflow.org/
Figure 2: Diagramma UML della rappresentazione interna della rete.
dell’architettura, suddivisa in sei principali package. Gli elementi principali con- siderati sono l’apprendimento, il pruning e la verifica: questi pacchetti sono organiz- zati principalmente con un pattern Strategy che definisce le interfacce generali per eseguire operazioni sulla rete e relative sottoclassi specializzate per il supporto delle specifiche operazioni. Inoltre, per avere il pieno controllo del modello interno e sepa- rare gli elementi principali dai dettagli implementativi, abbiamo progettato la nostra rappresentazione di rete strutturata come un file grafico i cui nodi corrispondono a strati disgiunti della rete. Per sfruttare la capacit`a degli attuali strumento software per lapprendimento, abbiamo progettato una serie di strategie di conversione da e verso la nostra rappresentanza interna.
2.1 Rappresentazione interna
In figura 2 sono mostrate le classi che supportano la rappresentazione interna. Es- istono due classi base astratte, vale a dire NeuralNetwork e LayerNode. Concettual- mente, NeuralNetwork `e un contenitore di oggetti LayerNode organizzato all’interno di NeuralNetwork come un grafo. Una lista di oggetti ModelRepresentation sono con- servati per uso interno — vedere sottosezione 2.2 per i dettagli. Nella corrente im- plementazione, l’unica sottoclasse concreta di NeuralNetwork `e SequentialNetwork che rappresenta le reti il cui grafo corrispondente `e una lista, cio`e ogni strato `e connesso solo a quello successivo. Ovviamente, l’implementazione di topologie concrete pi`u complesse `e supportata. Le sottoclassi di concrete di LayerNode sono gli elementi cos- titutivi che noi attualmente supportiamo: BatchNorm1DNode, FullyConnectedNode e ReLUNode, ovvero livelli di normalizzazione batch, livelli completamente connessi e strati ReLU, rispettivamente. La classe Tensor `e la nostra classe di utilit`a per i dati che tensoriali. Attualmente `e implementata come un alias per la classe ndarray in numpy, ma l’abbiamo aggiunta come wrapper per isolare le classi di NeVer 2.0 dai dettagli di implementazione.
2.2 Convertitori e rappresentazioni
Il design del modello per la generalizzazione delle diverse rappresentazioni utilizzate dai framework per l’apprendimento considerati `e basata sul pattern Adapter, come
Figure 3: Diagramma UML delle classi relative alle rappresentazione e ai converitori dei diversi framework per apprendimento.
Figure 4: Diagramma UML delle classi relative alle startegie di apprendimento.
mostrato in figura 3. Abbiamo definito la classe astratta ModelRepresentation che
`e poi specializzata da PyTorchNetwork e ONNXNetwork per codificare modelli Py- Torch e ONNX, rispettivamente. La conversione tra il nostro formato interno di rappresentazione e le sottoclassi concrete di ModelRepresentation `e fornita dalle sot- toclassi di ConversionStrategy . ConversionStrategy definisce un’interfaccia con due funzioni: una per convertire dalla nostra rappresentazione interna a uno specifico modello di rappresentazione e l’altra per l’esecuzione del compito inverso. Le sotto- classi concrete di ConversionStrategy implementano le funzioni per le corrispondenti sottoclassi concrete di ModelRepresentation.
2.3 Addestramento
In figura 4 mostriamo il design interno del pacchetto per l’apprendimento, il cui elemento principale `e la classe astratta TrainingStrategy . L’attuale astrazione di una strategia di apprendimento presenta un’unica funzione che richiede una Neural- Network e un Dataset e restituisce una NeuralNetwork addestrata. Le sottoclassi concrete di TrainingStrategy forniscono le procedure di apprendimento. Attual- mente, abbiamo progettato e realizzato un’unica procedura di apprendimento basata sull’ottimizzatore Adam [29] e adattato a procedure di pruning concrete che abbiamo implementato. La nostra implementazione richiede una rappresentazione PyTorch per addestrare la rete, ma questo `e gestito in modo trasparente dall’architettura di NeVer 2.0. La classe Dataset vuole rappresentare un dataset generico. Come tale presenta quattro funzioni: una per caricare il training set — il file di dati considerati per addestrare la rete — uno per il caricamento del test set — il set di dati consid- erato per valutare l’accuratezza della rete, e due per l’aggiunta di un campione di dati al training e al test set, rispettivamente. I dataset e↵ettivi sono rappresentati da sottoclassi concrete di Dataset. Al momento, abbiamo implementato la classe
Figure 5: Diagramma UML delle classi relative alle strategie di pruning.
Figure 6: Diagramma UML delle classi relative alle strategie di verifica.
concreta relativa ai dataset MNIST MNISTDataset e FMNIST FMNISTDataset.
2.4 Pruning
Come descritto nell’articolo [30], crediamo che il pruning possa essere una delle chi- avi per facilitare la verifica delle DNN, quindi abbiamo deciso di includere astrazioni e classi concrete per il supporto al pruning nell’attuale realizzazione di NeVer 2.0.
In figura 5 mostriamo l’architettura, dove la classe astratta PruningStrategy vuole rappresentare una generica metodologia di pruning, e consiste in un’unica funzione che esegue una richiesta a NeuralNetwork e a Dataset e restituisce la NeuralNetwork modificata. Le sottoclassi concrete implementano le procedure di pruning e↵ettivo:
attualmente abbiamo progettato e realizzato due strategie concrete, ovvero Weight- Pruning e NetworkSlimming — entrambe basate su rappresentazioni PyTorch. I parametri distintivi delle strategie di pruning sono forniti come attributi nelle classi concrete.
2.5 Verifica
Come mostrato in figura 6, abbiamo progettato la classe astratta VerificationStrat- egy per rappresentare una generica metodologia di verifica. Questa classe astratta definisce un’interfaccia costituita da una singola funzione che richiede una Neural- Network e una Property e restituisce un valore booleano a seconda che la propriet`a
`e verificata o meno e un controesempio (se disponibile). La classe astratta Property rappresenta una propriet`a generica che dovrebbe essere verificata. Attualmente abbi- amo due classi concrete: SMTLIBProperty e LocalRobustnessProperty. SMTLIBProp- erty rappresenta una propriet`a generica che NeVer 2.0 legge da un file formattato
MNIST FMNIST
Base Param Network Marabou MIPVerify ERAN Marabou MIPVerify ERAN
NET1
Baseline 0 0 0 0 0 1
SET1
Sparse 0⇤ 15⇤ 20 0⇤ 20 20
WP 8 5⇤ 14 2 5 19
NS 18 16⇤ 20 19 20 20
SET2
Sparse 0 0 1 0 0 0
WP 0 0 7 0 0 5
NS 5 15 17 6 4 20
SET3
Sparse 0 0 1 0 0 0
WP 0 0 1 3 0 3
NS 6 0 7 0 0 4
NET2
Baseline 0 0 0 0 0 1
SET1
Sparse 0⇤ 17⇤ 20 0⇤ 19⇤ 20
WP 9 0 0 0 0 0
NS 18 14⇤ 19 0⇤ 17 20
SET2
Sparse 0⇤ 0 0 0⇤ 0 0
WP 0 0 0 0 0 0
NS 0 0 1 0 0 0
SET3
Sparse 0 0 0 0 0 0
WP 0 0 0 0 0 0
NS 1 0 0 0 0 0
Table 1: Risultati obtained da NeVer 2.0 con Marabou, ERAN e MIPVerify. I valori riportati rappresentano il numero di problemi risolti con successo entro un tempo limite di 600 secondi. La colonna Base rappresenta l’architettura di base, Paramrappresenta l’insieme dei parametri usati per il pruning e Network rappre- senta il tipo di rete considerata. Marabou, MIPVerify, e ERAN rappresentano il numero di problemi risolti da Marabou, MIPVerify e ERAN, rispettivamente.
secondo la sintassi SMTLIB 4 [31]. LocalRobustnessProperty `e una propriet`a ”pre- confezionata” che codifica la ricerca di un esempio di contraddittorio corrispondente a uno specifico campione di dati. Le sottoclassi concrete di VerificationStrategy che abbiamo finora implementato sono EranVerification, MarabouVerification e MIPVeri- fyVerification che si basano, rispettivamente, su ERAN, Marabou e MIPVerify per verificare la propriet`a.
3 Analisi sperimentale
Abbiamo sperimentato le attuali capacit`a di NeVer 2.0 replicando il setup dell’esperimento riportato in [30]. In questo esperimento analizziamo come l’integrazione di pruning e verifica pu`o facilitare l’analisi delle DNN — attualmente, una capacit`a distintiva che NeVer 2.0 o↵re. Negli esperimenti qui presentati sono considerate due diverse architetture di rete e due diversi metodi di pruning considerando tutti e tre gli stru- menti software per la verifica disponibili in nevertwo . Le DNN che consideriamo sono reti completamente connesse con tre strati nascosti: una con 64, 32, 16 neuroni nascosti e l’altra con 128, 64, 32 neuroni nascosti. In entrambe le reti la funzione di attivazione `e la ReLU. Abbiamo sperimentato entrambe le tecniche di pruning. Per
4http://smtlib.cs.uiowa.edu/
analizzare le prestazioni dei diversi metodi di pruning, li testiamo con tre di↵erenti set di parametri. I risultati del nostro esperimento sono riassunti nella tabella 1. I risultati del nostro esperimento dimostrano che NeVer 2.0 — anche se ancora allo stadio prototipale – `e pronto a verificare reti di un certo interesse pratico, e il suo la combinazione di pruning e verifica pu`o o↵rire qualche vantaggio rispetto a l’uso diretto dei suoi backend.
4 Estensioni e lavoro futuro
NeVer 2.0 `e un progetto ancora in corso e ne abbiamo gi`a pianificato diverse es- tensioni. In primo luogo, miriamo ad aumentare la variet`a di reti che possono essere rappresentate aggiungendo pi`u sottoclassi concrete a LayerNode. In particolare, ci aspettiamo di poter progettare e implementare strati convoluzionali, la relativa normalizzazione batch, diversi tipi di strati di raggruppamento e diversi tipi di fun- zioni di attivazione. Con queste estensioni NeVer 2.0 dovrebbe essere in grado di rappresentare tutti i principali tipi di DNN.
La seconda estensione che abbiamo gi`a programmato, riguarda l’aggiunta di convertitori a / da altri importanti framework di apprendimento, a partire da Ten- sorFlow. Questa estensione dovrebbe includere anche la capacit`a di visualizzare e modificare l’architettura di rete attraverso un’interfaccia utente grafica, nella sper- anza che NeVer 2.0 diventi pi`u facilmente accessibile anche ai non esperti.
References
[1] Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato, and Lior Wolf. Deepface:
Closing the gap to human-level performance in face verification. In 2014 IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2014, Colum- bus, OH, USA, June 23-28, 2014, pages 1701–1708, 2014.
[2] Dong Yu, Geo↵rey E. Hinton, Nelson Morgan, Jen-Tzung Chien, and Shigeki Sagayama. Introduction to the special section on deep learning for speech and language processing. IEEE Trans. Audio, Speech & Language Processing, 20(1):4–6, 2012.
[3] Yann LeCun, Yoshua Bengio, and Geo↵rey E. Hinton. Deep learning. Nature, 521(7553):436–444, 2015.
[4] Christian Szegedy, Wojciech Zaremba, Ilya Sutskever, Joan Bruna, Dumitru Erhan, Ian J. Goodfellow, and Rob Fergus. Intriguing properties of neural networks. In 2nd International Conference on Learning Representations, ICLR 2014, Ban↵, AB, Canada, April 14-16, 2014, Conference Track Proceedings, 2014.
[5] Ian J. Goodfellow, Jonathon Shlens, and Christian Szegedy. Explaining and harnessing adversarial examples. In 3rd International Conference on Learning
Representations, ICLR 2015, San Diego, CA, USA, May 7-9, 2015, Conference Track Proceedings, 2015.
[6] Francesco Leofante, Nina Narodytska, Luca Pulina, and Armando Tacchella.
Automated verification of neural networks: Advances, challenges and perspec- tives. CoRR, abs/1805.09938, 2018.
[7] Xiaowei Huang, Daniel Kroening, Marta Kwiatkowska, Wenjie Ruan, Youcheng Sun, Emese Thamo, Min Wu, and Xinping Yi. Safety and trustworthiness of deep neural networks: A survey. arXiv preprint arXiv:1812.08342, 2018.
[8] Guy Katz, Derek A. Huang, Duligur Ibeling, Kyle Julian, Christopher Lazarus, Rachel Lim, Parth Shah, Shantanu Thakoor, Haoze Wu, Aleksandar Zeljic, David L. Dill, Mykel J. Kochenderfer, and Clark W. Barrett. The marabou framework for verification and analysis of deep neural networks. In Computer Aided Verification - 31st International Conference, CAV 2019, New York City, NY, USA, July 15-18, 2019, Proceedings, Part I, pages 443–452, 2019.
[9] Gagandeep Singh, Timon Gehr, Markus P¨uschel, and Martin T. Vechev. Boost- ing robustness certification of neural networks. In 7th International Conference on Learning Representations, ICLR 2019, New Orleans, LA, USA, May 6-9, 2019, 2019.
[10] Vincent Tjeng, Kai Y. Xiao, and Russ Tedrake. Evaluating robustness of neural networks with mixed integer programming. In 7th International Conference on Learning Representations, ICLR 2019, New Orleans, LA, USA, May 6-9, 2019, 2019.
[11] Shiqi Wang, Kexin Pei, Justin Whitehouse, Junfeng Yang, and Suman Jana.
Efficient formal safety analysis of neural networks. In Advances in Neural Infor- mation Processing Systems 31: Annual Conference on Neural Information Pro- cessing Systems 2018, NeurIPS 2018, 3-8 December 2018, Montr´eal, Canada, pages 6369–6379, 2018.
[12] Hoang-Dung Tran, Xiaodong Yang, Diego Manzanas Lopez, Patrick Musau, Luan Viet Nguyen, Weiming Xiang, Stanley Bak, and Taylor T. Johnson. NNV:
the neural network verification tool for deep neural networks and learning- enabled cyber-physical systems. CoRR, abs/2004.05519, 2020.
[13] Souradeep Dutta, Xin Chen, Susmit Jha, Sriram Sankaranarayanan, and Ashish Tiwari. Sherlock - A tool for verification of neural network feedback systems:
demo abstract. In Proceedings of the 22nd ACM International Conference on Hybrid Systems: Computation and Control, HSCC 2019, Montreal, QC, Canada, April 16-18, 2019, pages 262–263, 2019.
[14] Michael Akintunde, Alessio Lomuscio, Lalit Maganti, and Edoardo Pirovano.
Reachability analysis for neural agent-environment systems. In Principles of
Knowledge Representation and Reasoning: Proceedings of the Sixteenth Inter- national Conference, KR 2018, Tempe, Arizona, 30 October - 2 November 2018, pages 184–193. AAAI Press, 2018.
[15] Luca Pulina and Armando Tacchella. Never: a tool for artificial neural networks verification. Annals of Mathematics and Artificial Intelligence, 62(3-4):403–425, 2011.
[16] Luca Pulina and Armando Tacchella. An abstraction-refinement approach to verification of artificial neural networks. In Computer Aided Verification, 22nd International Conference, CAV 2010, Edinburgh, UK, July 15-19, 2010. Pro- ceedings, pages 243–257, 2010.
[17] Luca Pulina and Armando Tacchella. Challenging SMT solvers to verify neural networks. AI Commun., 25(2):117–135, 2012.
[18] C. Igel, T. Glasmachers, and V. Heidrich-Meisner. Shark. Journal of Machine Learning Research, 9:993–996, 2008.
[19] M. Franzle, C. Herde, T. Teige, S. Ratschan, and T. Schubert. Efficient solving of large non-linear arithmetic constraint systems with complex boolean struc- ture. Journal on Satisfiability, Boolean Modeling and Computation, 1:209–236, 2007.
[20] Yann LeCun, L´eon Bottou, Yoshua Bengio, Patrick Ha↵ner, et al. Gradient- based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324, 1998.
[21] Han Xiao, Kashif Rasul, and Roland Vollgraf. Fashion-mnist: a novel image dataset for benchmarking machine learning algorithms. CoRR, abs/1708.07747, 2017.
[22] Adam Paszke, Sam Gross, Francisco Massa, Adam Lerer, James Bradbury, Gre- gory Chanan, Trevor Killeen, Zeming Lin, Natalia Gimelshein, Luca Antiga, Al- ban Desmaison, Andreas K¨opf, Edward Yang, Zachary DeVito, Martin Raison, Alykhan Tejani, Sasank Chilamkurthy, Benoit Steiner, Lu Fang, Junjie Bai, and Soumith Chintala. Pytorch: An imperative style, high-performance deep learning library. In Advances in Neural Information Processing Systems 32:
Annual Conference on Neural Information Processing Systems 2019, NeurIPS 2019, 8-14 December 2019, Vancouver, BC, Canada, pages 8024–8035, 2019.
[23] Mart´ın Abadi, Paul Barham, Jianmin Chen, Zhifeng Chen, Andy Davis, Jef- frey Dean, Matthieu Devin, Sanjay Ghemawat, Geo↵rey Irving, Michael Isard, Manjunath Kudlur, Josh Levenberg, Rajat Monga, Sherry Moore, Derek Gor- don Murray, Benoit Steiner, Paul A. Tucker, Vijay Vasudevan, Pete Warden, Martin Wicke, Yuan Yu, and Xiaoqiang Zhang. Tensorflow: A system for large- scale machine learning. CoRR, abs/1605.08695, 2016.
[24] Jocelyn Sietsma and Robert J. F. Dow. Neural net pruning-why and how. In Proceedings of International Conference on Neural Networks (ICNN’88), San Diego, CA, USA, July 24-27, 1988, pages 325–333, 1988.
[25] Yun Xie and Marwan A. Jabri. Analysis of the e↵ects of quantization in multi- layer neural networks using a statistical model. IEEE Trans. Neural Networks, 3(2):334–338, 1992.
[26] Lisa Torrey and Jude Shavlik. Transfer learning. In Handbook of research on machine learning applications and trends: algorithms, methods, and techniques, pages 242–264. IGI Global, 2010.
[27] Yann LeCun, John S. Denker, and Sara A. Solla. Optimal brain damage. In Ad- vances in Neural Information Processing Systems 2, [NIPS Conference, Denver, Colorado, USA, November 27-30, 1989], pages 598–605, 1989.
[28] Dario Guidotti, Armando Tacchella, and Luca Pulina. NeVer 2.0, 2020.
[29] Diederik P. Kingma and Jimmy Ba. Adam: A method for stochastic optimiza- tion. In Yoshua Bengio and Yann LeCun, editors, 3rd International Conference on Learning Representations, ICLR 2015, San Diego, CA, USA, May 7-9, 2015, Conference Track Proceedings, 2015.
[30] Dario Guidotti, Francesco Leofante, Luca Pulina, and Armando Tacchella. Ver- ification of neural networks: Enhancing scalability through pruning. In ECAI 2020 - 24th European Conference on Artificial Intelligence, to appear.
[31] Clark Barrett, Aaron Stump, and Cesare Tinelli. The SMT-LIB Standard:
Version 2.0. In A. Gupta and D. Kroening, editors, Proceedings of the 8th In- ternational Workshop on Satisfiability Modulo Theories (Edinburgh, UK), 2010.