• Non ci sono risultati.

Verifica Formale

N/A
N/A
Protected

Academic year: 2021

Condividi "Verifica Formale"

Copied!
34
0
0

Testo completo

(1)

Verifica Formale di Reti Neurali

Prof. Armando Tacchella

Università degli Studi di Genova

(2)

Agenda

• Apprendimento Computazionale (Machine Learning)

• Verifica Formale di Reti Neurali

• NeVer2: Apprendimento e Verifica di Reti Neurali

• Verifica di Reti con NeVer2: Esempio di Utilizzo

(3)

Apprendimento

Computazionale

(4)

Esempio: sistemi ABS (Anti-lock Braking System)

Prevengono il bloccaggio delle ruote durante la frenata

e il conseguente

pattinamento del veicolo

Sono un dispositivo di sicurezza obbligatorio su auto (dal 2004) e moto (dal 2016)

(5)

Prima un po’ di Fisica… ☺

Una ruota rotola senza strisciare quando la velocità del punto di

contatto tra ruota e terreno è nulla

𝑠 = 𝑅𝜃

𝑣 𝑐 = ሶ𝑠 = 𝑅 ሶ𝜃 = 𝑅𝜔 𝑎 𝑐 = ሶ𝑣 = 𝑅 ሶ 𝜔 = 𝑅𝛼

𝑣

𝑐

𝑣

𝑐

Come funziona l’ABS?

𝑅

𝑠

𝜃

𝑠

𝑃 𝑃

𝑠 𝜃 𝜔 𝑣𝑐

spazio percorso angolo percorso velocità del veicolo

velocità angolare della ruota

(6)

Come funziona l’ABS?

Ruota fonica

Unità di Misurazione Inerziale (IMU)

𝜔

𝑣𝑐

(7)

Apprendimento Computazionale (Machine Learning)

𝜔

𝑣𝑐

Veicolo in marcia in condizioni normali (no slittamento, no strisciamento)

(8)

Apprendimento Computazionale (Machine Learning)

Utilizzo le misure acquisite per estrapolare una relazione tra velocità del veicolo

e velocità angolare delle ruote

Utilizzo la relazione estrapolata per realizzare la classificazione di nuove misure acquisite

e capire se il veicolo sta strisciando o slittando.

Decisore

(9)

Apprendimento Computazionale: Perché?

La relazione che si deve utilizzare per mettere in corrispondenza un input

con l’output misurato:

• Non è nota

• Non è ricavabile analiticamente

• Cambia nel tempo

• …

Utilizzo i dati a disposizione per stimare una funzione “vicina” a

𝑓(𝑥) 𝑥

𝑓(𝑥) 𝑓(𝑥)

(10)

Apprendimento Computazionale: Dove?

Ci sono innumerevoli applicazioni che possono beneficiare di tecniche di

apprendimento computazionale:

• Diagnostica per immagini

• Traduzione automatica

• Previsione di mercato

• Analisi epidemiologica

• Identificazione di frodi bancarie

• Segmentazione di mercato

• …

(11)

Apprendimento Computazionale: Come?

Fase 1: Scelgo una struttura parametrica

• Retta (regressione lineare)

• Polinomio (regressione polinomiale)

• Scelte logiche annidate (albero di decisione)

• Composizione di funzioni vettoriali (SVM, Reti Neurali, …)

• …

(12)

Apprendimento Computazionale: Come?

Fase 2: calcolo i parametri considerando i dati che ho raccolto

(13)

Apprendimento Computazionale: Come?

Fase 3: controllo che quanto appreso sia (statisticamente) corretto

(14)

Reti Neurali: Struttura

Cerchi: neuroni

Funzioni non lineari

Frecce: connessioni Trasformazioni affini

𝑓 𝑥1, … , 𝑥𝑑 = (𝑓1(𝑥1), …, 𝑓𝑑(𝑥𝑑))

𝑓 𝑥1, … , 𝑥𝑑 = 𝑊(𝑥1, …, 𝑥𝑑)𝑇+𝑏

(15)

Reti Neurali: Apprendimento

Fissati: tipo di funzioni, numero Di livelli, dimensionalità dei livelli Pesi W, b: parametri

+ =

[𝑥1𝑥2 𝑥3 𝑥4 − 𝑦1𝑦2 𝑦3]1𝑁

Dati: N campioni di misure acquisite

Rete neurale addestrata (valore dei pesi W, b fissato)

(16)

Verifica di Reti Neurali: Perché?

Una rete neurale può essere vulnerabile alle «adversarial perturbation», impercettibili modifiche dell’input che

determinano errori di risposta

La problematica è già da qualche anno oggetto di crescente interesse

Sono stati pubblicati più di 170 articoli su verifica di reti neurali tra il 2017 e il 2018

+

=

PandaRandom NoiseGibbon

(17)

Verifica Formale

di Reti Neurali

(18)

Esempio: ACAS Xu (Airborne Collision Avoidance System)

Il sistema prende in ingresso una serie di parametri relativi all’aeromobile

(Ownship) e all’eventuale “intruso”

(Intruder) nel proprio spazio di manovra.

In uscita produce manovre consigliate:

• SL/SR: virata sinistra/destra forte

• L/R: virata sinistra/destra lieve

• COC: nessun conflitto (Clear Of Conflict)

(19)

ACAS Xu con reti neurali

In ingresso:

• Distanza tra ownship e intruder

• Angolo relativo tra intruder e direzione ownship

• Angolo relativo tra direzione intruder e ownship

• Velocità della ownship

• Velocità dell’intruder

• Tempo che intercorre alla perdita di separazione

• Suggerimento precedente

In uscita, il suggerimento corrisponde al massimo valore tra le Q

(20)

Cosa verificare?

La rete neurale 𝑁 è localmente robusta in un intervallo 𝛿 in 𝑥0 se ∀𝑥. ∥ 𝑥 − 𝑥0 ∥ ≤ 𝛿 ⇒ 𝑁 𝑥 = 𝑁 𝑥0

𝑥0

La scelta della proprietà da verificare dipende da diversi fattori

• Specifica applicazione

• Architettura della rete

• Valori di input e output

(21)

Come verificare?

(22)

NeVer2: Apprendimento e

Verifica di Reti Neurali

(23)

NeVer2

Sistema per apprendimento e

verifica di reti neurali basato sul package Python pyNever

pyNever fornisce le capacità di base per addestrare, ridurre, convertire e verificare reti neurali

(24)

Rappresentazione delle reti in pyNever

Rappresentazione delle reti feedforward: trasformazioni affini, ReLU, sigmoidi

(25)

Inciso: ReLU e sigmoidi

(26)

Conversione tra formati in pyNever

Attualmente pyNever può importare/esportare reti in formato ONNX e PyTorch

(27)

Strategie di apprendimento e dataset in pyNever

Apprendimento basato su Adam optimizer; alcuni dataset precaricati (FMNIST e MNIST)

(28)

Inciso: i dataset MNIST e FMNIST

MNIST: Grayscale handwritten digits

"Gradient-based learning applied to document recognition", LeCun et al. (1998)

FMNIST: Grayscale fashion items

"Fashion-mnist: a novel image dataset for benchmarking machine learning algorithms", LeCun et al.

(1998)

10 classi ognuno, 70000 campioni

10000 test set, 60000 training set

(29)

Riduzione di reti neurali in pyNever

Riduzione della complessità delle reti tramite rimozione di neuroni o azzeramento controllato di pesi

(30)

Tipologie di pruning disponibili in pyNever

(31)

Verifica di reti con pyNever

La verifica di reti in pyNever si basa su algoritmi di astrazione

I calcoli che la rete effettua su singoli punti vengono

trasformati in calcoli su insiemi di punti

Grazie ad una sovrapprossimazione possiamo effettuare i calcoli e

verificare la rete

(32)

Installazione di pyNever e NeVer2

• Scaricare una distribuzione di Python (per esempio Anaconda)

• Installare PyTorch

• Installare ONNX (conda install –c conda-forge onnx)

• Installare pyNever (pip pynever)

• Distribuzione pubblica presso https://github.com/darioguidotti/pyNeVer

• La distribuzione contiene documentazione ed esempi

(33)

Verifica di Reti con NeVer2:

Esempio di Utilizzo

(34)

Grazie per l’attenzione!

Per ulteriori informazioni

potete contattarmi presso

Armando.Tacchella@unige.it

Riferimenti

Documenti correlati

Tipicamente questo file .zip conterrà parte del materiale dell’esercitazione (es. file .h con dichiarazioni di classi) e materiale necessario all’esecuzione di test di conformità con

A partire da queste due domande i modelli di rete neurale e le reti neurali artifi- ciali stanno ripercorrendo lo stesso percorso formativo di un giovane studente: da reti che

In ambiente scientifico i dati sono spesso in formato UK: con il punto come separatore dei decimali, il nostro sistema operativo usa la.. notazione ITA

Luciano Baronciani, AgriBaronciani Michele Brandi, Marchesi Frescobaldi Fabio Burroni, Studio associato Agronominvigna. Alberto Grasso, Vino Libero Sergio Mottura,

Dopo una introduzione al tema dell'apprendimento computazionale (Machine Learning) e, in particolare, all'utilizzo delle reti neurali per l'apprendimento di funzioni

Utilizzare l’utente system (con la password specificata in fase di installazione di Oracle Database Express).. Testare la connessione e cliccare

Prova a completare il percorso ricordando che ogni numero è maggiore di uno rispetto al suo precedente:. Ecco formato il numero cento

PyTorch is a Python library mainly used to perform deep learning tasks such as building, training and evaluating neural network models.. PyTorch is deeply integrated with CUDA, to