
Pytorch Tensor 기능을 사용하여 CPU 또는 GPU에서 스파이크 신경망 (SNN)을 시뮬레이션하는 데 사용되는 파이썬 패키지.
Bindsnet은 기계 학습을위한 생물학적으로 영감을 얻은 알고리즘의 개발을위한 스파이크 신경망 시뮬레이션 라이브러리입니다.
이 패키지는 생물학적으로 영감을 준 신경 및 동적 시스템 (BINTS) 실험실 및 Tufts University의 Allen Discovery Center에서 SNN, MACHERE LEARCINE (ML) 및 RENFORCEMPENT LEARME (RL) 문제를 적용하는 것에 대한 진행중인 연구의 일부로 사용됩니다.
실험 모음, 결과 분석 기능, 실험 결과의 플롯 등 BINDSNET 예제를 확인하십시오. 패키지에 대한 문서는 여기에서 찾을 수 있습니다.

Github 저장소에서 가장 최근의 안정적인 릴리스를 설치하려면
pip install git+https://github.com/BindsNET/bindsnet.git
또는 소스에서 bindsnet 패키지를 구축하려면 Github 저장소를 복제하고 디렉토리를이 프로젝트의 최상위 레벨로 변경하고 발행하십시오.
pip install .
또는 편집 가능한 모드로 설치하려면 (다시 설치하지 않고 패키지를 수정할 수 있음) :
pip install -e .
OpenAi Gym RL 환경 라이브러리와 인터페이스하는 데 필요한 패키지를 설치하려면 RL 환경 시뮬레이터 (Linux / MACOS)를 실행하는 데 필요한 패키지를 설치하려면 지침을 따르십시오.
Docker 리포지토리 링크.
또한 BINDSNET과 모든 종속성이 설치되는 DockerFile을 제공합니다.
docker build .
Docker 이미지를 만들기 위해이 프로젝트의 최상위 디렉토리에서.
새로 제작 된 이미지의 이름을 변경하려면 문제
docker tag <IMAGE_ID> <NEW_IMAGE_ID>
컨테이너를 실행하고 그 안에 배쉬 터미널을 넣으려면
docker run -it <NEW_IMAGE_ID> bash
이 백서에서 SNN의 거의 반복을 실행하려면 문제가 발생합니다.
cd examples/mnist
python eth_mnist.py
--plot (유용한 모니터링 수치 표시), --n_neurons [int] (흥분성, 억제 뉴런 시뮬레이션), --mode ['train' | 'test'] (네트워크 운영을 교육 또는 테스트 단계로 설정) 등. 자세한 내용은 --help 또는 -h 플래그로 스크립트를 실행하십시오.
다른 예제는 BindsNet의 기능을 보여주기위한 examples 디렉토리에서 제공됩니다. 살펴보고 당신의 생각을 알려주십시오!
테스트를 실행하려면 다음을 발급하십시오.
python -m pytest test/
Open AI gym 이 컴퓨터에 설치되지 않으면 일부 테스트가 실패합니다.
생물학적으로 그럴듯한 스파이크 뉴런 역학의 시뮬레이션은 어려울 수 있습니다. 일반적으로 상기 역학을 설명하는 일반적인 미분 방정식 (ODE)을 해결하여 수행됩니다. Pytorch는 예를 들어 brian2 와 반대로 미분 방정식의 솔루션을 명시 적으로 지원하지는 않지만, 역학을 정의하는 Odes를 차이 방정식으로 변환하고 정기적이고 짧은 간격으로 (1 밀리 초의 dt ) 근사치로 해결할 수 있습니다. 물론, 후드 아래에서 brian2 와 같은 패키지도 같은 일을하고 있습니다. PyTorch 에서 이것을하는 것은 몇 가지 이유로 흥미 롭습니다.
GPU 장치로 전송할 수있는 numpy.ndarray 주변의 래퍼 인 강력하고 유연한 torch.Tensor 사용할 수 있습니다.
우리는 SNN 아키텍처에서 torch.nn.functional Pytorch 서브 모드에서 기능을 용도로 예방하여 "바퀴 재창조"를 피할 수 있습니다. 예를 들어, 컨볼 루션 또는 풀링 기능.
뉴런 스파이크 순서와 상대적 타이밍 정보가 신경 과학의 중심 주제라는 개념. Markram et al. (1997)은 뉴런 사이의 시냅스 가이 상대적 타이밍에 따라 강화 또는 저하되어야한다고 제안했으며, 그 전에는 도널드 히브 브 (Donald Hebb)가 히바비아 학습 이론을 제안했으며, 종종 "함께 발사하는 뉴런, 함께 와이어"로 언급했다. Markram et al.의 히바비아 이론 확장은 STDP (Spike-Timing-Dectenciity)로 알려져 있습니다.
우리는 ML 및 RL 문제에 SNN을 적용하는 데 관심이 있습니다. 우리는 STDP를 사용하여 SNN에서 쌍 또는 뉴런의 집단을 연결하는 시냅스의 무게를 수정합니다. ML의 맥락에서, 우리는 SNN에서 데이터 의존적 스파이크 활동을 생성하는 시냅스 가중치 설정을 배우고 자합니다. 이 활동을 통해 우리는 이후에 일부 ML 관심 작업을 수행 할 수 있습니다. 예를 들어 입력 데이터를 구별하거나 클러스터링합니다. RL의 맥락에서, 우리는 스파이크 신경망을 RL 에이전트로 생각할 수 있으며, 스파이 킹 활동은 환경의 행동 공간에서 행동으로 변환 될 수 있습니다.
우리는 감독되지 않은 학습 (STDP를 통한 완전히 연결된 또는 컨볼 루션 표현 학습), 감독 학습 (데이터 레이블에 따라 원하는 스파이크 행동으로 출력 출력 뉴런을 클램핑하는) 및 강화 학습 (ATARI 게임 공간 침략에서 SNN으로의 관찰을 전환하는 것)을 제공하기위한 간단한 스타터 스크립트를 제공했습니다.
우리는 U (0, 100)에서 무작위로 끌어 당기는 발사 속도 (Hertz)를 갖는 N Poisson 입력 뉴런의 모집단과 네트워크를 시뮬레이션했으며, 동일하게 크기가 크기의 누수 통합 및 화재 (LIF) 뉴런 인구와 연결되어 N (0,1)에서 연결 가중치가 샘플링되었습니다. 우리는 N을 250 단계에서 250에서 10,000으로 체계적으로 변하고 시간 해상도 DT = 1.0으로 모든 라이브러리와 1,000ms의 각 시뮬레이션을 실행했습니다. 우리는 BindsNet (CPU 및 GPU 계산 포함), Brian2, Pynest (C ++ Nest 코어 시뮬레이터를 실행하는 Nest SLI 인터페이스의 Python 인터페이스), Annarchy (CPU 및 GPU 계산 포함) 및 Brian2genn (Brian2 전면에 Genn Simulator)을 테스트했습니다.
Brian과 Pynest를 포함한 여러 패키지는 특정 글로벌 선호도의 설정을 허용합니다. 예를 들어, CPU 스레드의 수, OpenMP 프로세스 수 등. 각 라이브러리의 속도를 최대화하기 위해 벤치 마크 연구를 위해 이러한 설정을 선택했지만 BINDSNET은 그러한 옵션의 설정이 필요하지 않다는 점에 유의하십시오. Pytorch의 계산 모델을 물려받은 우리의 접근 방식은 사용 가능한 하드웨어를 최대한 활용하는 것으로 보이므로 실무자가 최소한의 노력으로 시스템에서 최고의 성능을 얻는 것이 간단합니다.

모든 시뮬레이션은 인텔 (R) Xeon (R) CPU E5-2687W V3 @ 3.10GHZ, 128GB RAM @ 2133MHz 및 2 개의 GeForce GTX Titan X (GM200) GPUS를 사용하여 Ubuntu 16.04 LT에서 실행됩니다. 파이썬 3.6은 모든 경우에 사용됩니다. 각 시뮬레이션 실행에 대해 클럭 시간이 기록되었습니다.
연구에서 BindsNet을 사용하는 경우 다음 기사를 인용하십시오.
@ARTICLE{10.3389/fninf.2018.00089,
AUTHOR={Hazan, Hananel and Saunders, Daniel J. and Khan, Hassaan and Patel, Devdhar and Sanghavi, Darpan T. and Siegelmann, Hava T. and Kozma, Robert},
TITLE={BindsNET: A Machine Learning-Oriented Spiking Neural Networks Library in Python},
JOURNAL={Frontiers in Neuroinformatics},
VOLUME={12},
PAGES={89},
YEAR={2018},
URL={https://www.frontiersin.org/article/10.3389/fninf.2018.00089},
DOI={10.3389/fninf.2018.00089},
ISSN={1662-5196},
}
Contrib.rocks로 만들어졌습니다.
GNU Affero 일반 공개 라이센스 v3.0