Nn-Ansagerbarkeit-Kit
NN-Annäherbarkeits-Kit ist ein Open-Source-Forschungsinstrument, mit dem die technischen neuronalen Netzwerke für sicherheitskritische Bereiche unterstützt werden können.
C.-H. Cheng, C.-H. Huang und G. Nühlenberg. NN-Annäherbarkeits-Kit: Technische neuronale Netzwerke für sicherheitskritische autonome Fahrsysteme . https://arxiv.org/abs/1811.06746
Lizenz
GNU Affero General Public Lizenz (AGPL) Version 3
Handbuch
Siehe nn_dependability_kit_manual.pdf
Probieren Sie das Werkzeug aus
Beispiele werden als Jupyter-Notizbücher dargestellt, um ein Schritt-für-Schritt-Verständnis über die Konzepte zu ermöglichen.
- [Metriken & Testfallgenerierung] GTSRB_NEURON2Projektioncoverage_testgen.ipynb oder gtsrb_additionalMetrics.ipynb oder szenario_coverage_a9.ipynb oder kitti_scenario_coverage.ipynb, oder mnists oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testgen. oder mnist_neuron2projection_testGenb, or mnist_neuron2projection_testgen, or mnist_neuron2projiting Ssd_interpretationPrecision.ipynb
- [Formale Überprüfung] TargetVehicleprocessingNetwork_formalVerification.ipynb
- [Laufzeitüberprüfung] gtsrb_runtimemonitoring.ipynb oder mnist_runtimemonitoring.ipynb
Struktur
Es gibt vier Pakete unter nnDependability, nämlich
- Basic: Leser für Modelle sowie Zwischendarstellung von NN (zu Überprüfungszwecken)
- Metriken: Berechnung Zuverlässigkeitsmetriken für neuronale Netze
- ATG: Automatische Testfallgenerierung zur Verbesserung der Metriken
- Formal: formale Überprüfung (statische Analyse, Einschränkung der Lösung) von neuronalen Netzwerken
- Wohnmobil: Laufzeitüberwachung neuronaler Netze
Wichtige Python -Pakete als Anforderungen
Pytorch + Numpy + Matplotlib + Jupyter
[Testfallgenerierung] Google Optimization Research Tools
[Verifizierung / statische Analyse] Pulp (Python-basierter MILP-Stecker zu CBC und anderen Solvers)
- CBC Solver, das mit Zellstoff vorgezogen ist, kann bei der Lösung einiger Probleme abstürzen. Die statische Analyse -Engine geht davon aus, dass der GLPK -Solver aufgerufen werden kann (bitte eine Pfadvariable einrichten), so dass GLPK bei einem Absturz von CBC automatisch als Ersatz ausgelöst wird. Leider kann dies nicht garantieren, dass beide beiden Solvers nicht gleichzeitig abstürzen. Für den industriellen Gebrauch raten wir daher dringend, IBM CPLEX als den zugrunde liegenden MILP -Solver zu verwenden.
- [GNU GLPK] http://www.gnu.org/software/glpk/
- [GPLK unter Windows] http://winglpk.sourceforge.net/
[Laufzeitüberprüfung] DD (Binärentscheidungsdiagramm mit Python implementiert)
Verwenden Sie Anforderungen.
Verwandte Veröffentlichungen
- [Metriken & Testfallgenerierung] https://arxiv.org/abs/1806.02338
- [Formelle Überprüfung] https://arxiv.org/abs/1705.01040, https://arxiv.org/abs/1904.04706
- [Laufzeitüberprüfung] https://arxiv.org/abs/1809.06573
- [SSD-example] The example uses a few pictures from the VOC2012 dataset: The PASCAL Visual Object Classes (VOC) Challenge Everingham, M., Van Gool, L., Williams, CKI, Winn, J. and Zisserman, A. International Journal of Computer Vision, 88(2), 303-338, 2010
Andere Themen
AN
1. zusätzliches Paket zu installieren
- [Metriken] AUSSCHAFTE (https://github.com/pair-code/salsency) verwenden es folgendermaßen:
# init submodule for saliency
cd nndependability/metrics/saliency-source/
git submodule init
git submodule update
cd ..
ln -s saliency-source/saliency saliency
cd ../../
2. Vorbereitung auf SSD -Beispiel
cd models/SSD-Tensorflow/
git submodule init
git submodule update
# prepare weights
cd checkpoints/
unzip ssd_300_vgg.ckpt.zip
cd ../
# install custom changes to module SSD-Tensorflow that allows using saliency
git apply ../ssd_tensorflow_diff.diff
cd ../../
B. Herausforderungen bei der formalen Überprüfung aufgrund mangelnder Eingangsspezifikation und Skalierbarkeit
Um eine formelle Überprüfung über neuronale Netzwerke durchzuführen, gibt es zwei häufig zu beobachtende Probleme.
- Die Skalierbarkeit formaler Überprüfung kann möglicherweise nicht mit sehr komplexen und sehr tiefen Netzwerken umgehen
- Die "Form der Eingabe" ist unbekannt. In der Tat normalisiert man die Daten üblicherweise, sodass jede Eingabe üblicherweise eine Reihe von [-1,1] hat, aber wir möchten möglicherweise eine engere "Überabnahme" gegenüber den Trainingsdaten haben.
In NN-Abhängigkeitskit-Kit raten wir den Benutzern, mit den folgenden Schritten fortzufahren.
- Führen Sie eine Analyse durch, indem Sie ein Teilnetz von unmittelbaren Schichten wie dem gelben Netzwerk der folgenden Abbildung durchführen. Wenn für jede Eingabe in das Gelbnetzwerk man garantiert, dass eine schlechte Ausgabe nicht erzeugt wird, wird für jede Eingabe in das ursprüngliche, sehr tiefe und komplexe Netzwerk keine schlechte Ausgabe erzeugt.
- Die 2. und 3. Parameter in Funktion loadMlpFrompyTorch () in nnDependability/Basics/pytorchreader.py unterstützen ein solches Konzept

Wenn Eingaben in das vollständige Netzwerk nur zu bestimmten Werten für die Eingabe des Gelben Netzes führen können, ist unsere weitere Empfehlung , das vollständige Netzwerk mit Schulungsdaten zu füttern, um eine strengere überprüfende Überprüfung auf der Grundlage besuchter Eingaben für das Gelbnetzwerk abzuleiten . Ein Beispiel finden Sie in Neuron N^17_ {1}, in dem wir durch Ausführen des Netzwerks mit allen verfügbaren Trainingsdaten wissen, dass die Trainingsdaten die Ausgabe von N^17_ {1} durch [-0.1, 0.6] begrenzt machen. Wir können somit die aufgezeichnete gebundene als Eingabebeschränkungen für das gelbe Netzwerk verwenden, um eine formale Überprüfung durchzuführen.
- Abgesehen von der Verwendung von Intervallen kann man auch Octagon-Einschränkungen oder sogar Neuron-Aktivierungsmuster aufzeichnen, um eine strengere Übernahme der besuchten Daten zu erzeugen.
Die Richtigkeit der Überprüfung basiert auf der Annahme, dass es unmöglich ist, Neuronenwerte außerhalb des geschaffenen Intervalls zu haben, bei dem es sich um einen Annahme-Guarantee -Beweis handelt. Die Annahme kann leicht zur Laufzeit überwacht werden.