NN- 의존성-키트
NN- 의존성 -KIT는 안전 약정 도메인을위한 엔지니어링 신경망을 지원하는 오픈 소스 연구 도구입니다.
C.-H. Cheng, C.-H. Huang 및 G. Nührenberg. NN- 의존성 -KIT : 안전한 자율 주행 시스템을위한 신경망 엔지니어링 . https://arxiv.org/abs/1811.06746
특허
GNU Affero General Public License (AGPL) 버전 3
수동
nn_dependability_kit_manual.pdf를 참조하십시오
도구를 시도하십시오
예는 Jupyter 노트북으로 제시되어 개념에 대한 단계별 이해를 허용합니다.
- [메트릭 및 테스트 사례 생성] GTSRB_NEURON2PROIZERCOVERAGE_TESTGEN.IPYNB 또는 GTSRB_ADDITIONALMETRICS.IPYNB, 또는 시나리오 _COVERAGE_A9.IPYNB, 또는 KITTI_SCENARIO_COVERAGE.IPYNB, 또는 MNIST_NEURON2PROIGNECOVERAGE_THOPERAGES.PYNBERSN.IPYNBORAGE. ssd_interpretationprecision.ipynb
- [공식 검증] TargetVehicleProcessingNetwork_formalverification.ipynb
- [런타임 확인] gtsrb_runtimemonitoring.ipynb 또는 mnist_runtimemonitoring.ipynb
구조
Nndependentability 아래에 4 개의 패키지가 있습니다
- 기본 : 모델 용 독자 및 NN의 중간 표현 (검증 목적)
- 메트릭 : 신경망의 신뢰성 메트릭을 계산합니다
- ATG : 메트릭을 개선하기위한 자동 테스트 케이스 생성
- 공식 : 신경망의 공식 검증 (정적 분석, 제약 해결)
- RV : 신경망의 런타임 모니터링
요구 사항으로 중요한 파이썬 패키지
Pytorch + numpy + matplotlib + Jupyter
[테스트 사례 생성] Google 최적화 연구 도구
[검증 / 정적 분석] 펄프 (CBC 및 기타 솔버에 대한 파이썬 기반 MILP 커넥터)
- 펄프로 사전 배송 된 CBC 솔버는 몇 가지 문제를 해결하는 데 충돌 할 수 있습니다. 정적 분석 엔진은 CBC가 충돌 할 때마다 GLPK가 자동으로 교체로 트리거되도록 GLPK 솔버를 호출 할 수 있다고 가정합니다 (경로 변수를 설정하십시오). 불행히도, 이것은 두 솔버가 동시에 충돌하지 않을 것을 보장 할 수 없습니다. 따라서 산업 사용을 위해 IBM CPLEX를 기본 MILP 솔버로 사용하는 것이 좋습니다.
- [gnu glpk] http://www.gnu.org/software/glpk/
- [Windows의 GPLK] http://winglpk.sourceforge.net/
[런타임 검증] DD (Python을 사용하여 구현 된 이진 결정 다이어그램)
요구 사항을 사용하여 종속성을 설치하여 대부분의 노트북을 실행합니다 (Tensorflow 제외).
관련 간행물
- [메트릭 및 테스트 케이스 생성] https://arxiv.org/abs/1806.02338
- [공식 확인] https://arxiv.org/abs/1705.01040, https://arxiv.org/abs/1904.04706
- [런타임 확인] https://arxiv.org/abs/1809.06573
- [ssd-example]이 예제는 VOC2012 데이터 세트의 몇 가지 사진을 사용합니다 : Pascal Visual Object Classes (VOC) 도전 Everingham, M., Van Gool, L., Williams, CKI, Winn, J. 및 Zisserman, A. 국제 컴퓨터 비전, 88 (2), 303-338, 2010
다른 주제
A. intrepretation 정밀 및 폐색 감도와 관련된 지표
1. 추가 패키지를 설치할 수 있습니다
- [메트릭] Saliency (https://github.com/pair-code/saliency) 다음과 같은 방식으로 사용하십시오.
# init submodule for saliency
cd nndependability/metrics/saliency-source/
git submodule init
git submodule update
cd ..
ln -s saliency-source/saliency saliency
cd ../../
2. SSD 예제 준비
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. 입력 사양 부족 및 확장 성으로 인한 공식 검증 문제
신경망에 대한 공식적인 검증을 위해서는 일반적으로 보이는 두 가지 문제가 있습니다.
- 공식 검증의 확장 성은 매우 복잡하고 매우 깊은 네트워크를 처리하지 못할 수 있습니다.
- "입력의 모양"은 알려져 있지 않습니다. 실제로 하나는 일반적으로 데이터를 정규화하므로 모든 입력이 일반적으로 [-1,1] 범위를 갖고 있지만 훈련 데이터에 대해 더 엄격한 "과다 발사"를 원할 수 있습니다.
NN- 의존성-키트에서는 사용자에게 다음 단계를 진행하도록 조언합니다.
- 아래 그림의 노란색 네트워크와 같은 근접 출력 레이어의 서브 네트워크를 가져와 분석을 수행하십시오. 노란 네트워크에 대한 모든 입력에 대해 잘못된 출력이 생성되지 않을 것을 보장하고, 원래 매우 깊고 복잡한 네트워크에 대한 모든 입력에 대해 잘못된 출력은 생성되지 않습니다.
- Nndependentability/기본/pytorchreader.py의 함수 loadmlpfrompytorch ()의 두 번째 및 세 번째 매개 변수는 그러한 개념을 지원합니다.

완전한 네트워크에 대한 입력이 노란 네트워크의 입력에 대한 특정 값으로 만 이어질 수 있으므로, 노란 네트워크에서 안전 속성을 입증 할 수없는 경우, Yellow Network 에 대한 방문 된 입력을 기반으로 한 더 엄격한 과발적으로 대략적인 인사를 얻기 위해서는 완전한 네트워크를 교육 데이터로 공급하는 것이 좋습니다. 예를 들어 Neuron N^17_ {1}에서 찾을 수 있는데, 여기서 모든 사용 가능한 교육 데이터로 네트워크를 실행함으로써 훈련 데이터가 [-0.1, 0.6]에 의해 경계 된 n^17_ {1}의 출력을 만든다는 것을 알고 있습니다. 따라서 공식적인 검증을 수행하기 위해 노란 네트워크의 입력 제약 조건으로 기록 된 바인딩을 사용할 수 있습니다.
- 간격을 사용하는 것 외에도, 옥타곤 제약 조건 또는 뉴런 활성화 패턴을 기록하여 방문한 데이터의 더 엄격한 과도한 적용을 생성 할 수 있습니다.
검증의 정확성은 생성 된 간격을 벗어난 뉴런 값을 갖는 것이 불가능하다는 가정에 근거합니다. 런타임에서 가정을 쉽게 모니터링 할 수 있습니다.