KR102592146B1 - 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법 - Google Patents

시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법 Download PDF

Info

Publication number
KR102592146B1
KR102592146B1 KR1020180069625A KR20180069625A KR102592146B1 KR 102592146 B1 KR102592146 B1 KR 102592146B1 KR 1020180069625 A KR1020180069625 A KR 1020180069625A KR 20180069625 A KR20180069625 A KR 20180069625A KR 102592146 B1 KR102592146 B1 KR 102592146B1
Authority
KR
South Korea
Prior art keywords
learning
circuit
signal
neuron
value
Prior art date
Application number
KR1020180069625A
Other languages
English (en)
Other versions
KR20190051766A (ko
Inventor
베르나베 리나레스-바랑코
아미레자 유세자데스
에반젤로스 스트로마티아스
테레사 세라노-고타레도나
Original Assignee
삼성전자주식회사
콘세호 수페리오르 데 인베스티가시오네스 시엔티피카스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 콘세호 수페리오르 데 인베스티가시오네스 시엔티피카스 filed Critical 삼성전자주식회사
Priority to US16/181,850 priority Critical patent/US11301753B2/en
Publication of KR20190051766A publication Critical patent/KR20190051766A/ko
Application granted granted Critical
Publication of KR102592146B1 publication Critical patent/KR102592146B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

복수의 시냅스 가중치 값들에 대한 시냅스 학습을 수행하는 뉴런 회로를 제공한다. 구체적으로 뉴런 회로는, 수신된 입력 신호가 시냅스 값이 활성 값인 활성화 신호인지 판단하고, 활성화 입력 신호의 누적 수신 횟수가 학습 임계 값에 이른 경우, 제 1 확률에 따라 기 수신된 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행하고, 복수의 시냅스 가중치 값들을 제 2 확률에 따라 비활성 값으로 설정하는 약화 학습을 수행할 수 있다.

Description

시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법{Neuron Circuit, system and method for synapse weight learning}
본 개시는 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법에 관한 것이다.
인공 신경망(artificial neural network)은, 인공 뉴런(neuron) 또는 그 모델들의 상호 연결을 구현하기 위한 컴퓨팅 장치 등을 지칭한다.
인공 신경망의 구현 방식으로서 회선 신경망(Convolution Neural Network) 및 재귀 신경망(Recursive Neural Network) 등이 제안되었으며, 나아가 인간의 생물학적 구조를 모방하여 인간의 뇌 구조와 유사하게 인공 신경망을 구축하기 위한 스파이킹 인공 신경망(Spiking Neural Network: SNN)에 대한 연구가 부각되고 있다.
SNN은 기존 방식과 달리 동적인 특징을 학습함에 있어서 최적화된 구조이며 이를 구현하기 소프트웨어 및 하드웨어적 방식이 제안되고 있다.
그러나 기존 방식은 연산 처리 량이 많아 학습의 속도가 제한적이며, 상위 계층으로 갈수록 학습 속도가 누적적으로 느려지며, 또한, 기존의 결정론적 방식을 따름으로서 시냅스 가중치 값을 저장하기 위하여 많은 용량의 메모리를 필요로 하기 때문에 시스템 비용이 증가하는 문제점이 있다.
본 개시는 다양한 실시 예에 따른 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법에 관한 것으로서, 특히, 확률적 학습 방식을 이용하여 이산적 구현이 용이하며 학습 속도를 향상시키기 위한 방식을 제안한다.
일 측면에 따른 복수의 시냅스 가중치 값들에 대한 시냅스 학습을 수행하는 뉴런 회로는, 복수의 시냅스 가중치 값들을 저장하는 시냅스 가중치 메모리, 시냅스 전 뉴런 회로로부터 입력 신호를 수신하고, 수신된 입력 신호가, 수신된 입력 신호의 시냅스 값이 활성 값인 활성화 신호인지 여부를 판단하는 제 1 서브 회로, 판단 결과에 따라, 활성화 입력 신호의 제 1 누적 수신 횟수와 학습 임계 값간의 비교 연산을 수행하는 제 2 서브 회로, 및 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우, 제 1 확률에 따라, 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행하고, 복수의 시냅스 가중치 값들 각각을, 제 2 확률에 따라, 비활성 값으로 설정하는 약화 학습을 수행하는, 제 3 서브 회로를 포함할 수 있다.
다른 일 측면에 따른 복수의 시냅스의 가중치 값들에 대한 학습 시스템은, 뉴런 회로 및 학습 회로를 포함할 수 있다.
또한, 뉴런 회로는, 시냅스 전 뉴런 회로로부터 입력 신호를 수신하고, 수신된 입력 신호가 수신된 입력 신호의 시냅스 값이 활성 값인 활성화 신호인지 여부를 판단하여, 활성화 입력 신호의 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우 학습 요청 신호를 학습 회로에게 전송할 수 있다.
또한, 학습 회로는, 학습 요청 신호를 수신함에 따라, 제 1 확률로, 뉴런 회로에 의해 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행하고, 복수의 시냅스 가중치 값들 각각을, 제 2 확률에 따라, 비활성 값으로 설정하는 약화 학습을 수행할 수 있다.
또 다른 일 측면에 따른 뉴런 회로에 의해 수행되는, 뉴런 회로와 시냅스 전 뉴런 회로들간의 복수의 시냅스의 가중치 값들에 대한 학습 방법은, 시냅스 전 뉴런 회로로부터 입력 신호를 수신함에 따라, 수신된 입력 신호가, 수신된 입력 신호의 시냅스 값이 활성 값인 활성화 입력 신호인지 판단하는 단계, 판단 결과에 따라, 활성화 입력 신호의 제 1 누적 수신 횟수와 학습 임계 값의 비교 연산을 수행하는 단계, 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우, 제 1 확률에 따라, 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습 수행 단계, 및 복수의 시냅스 가중치 값들 각각을, 제 2 확률에 따라, 비활성 값으로 설정하는 약화 학습 수행 단계를 포함할 수 있다.
또 다른 일 측면에 따른 뉴런 회로와 시냅스 전 뉴런 회로들간의 복수의 시냅스의 가중치 값들에 대한 학습 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
본 실시예들에 따르면, 뉴런 회로는 확률적 강화 학습 및 약화 학습을 수행함으로써, 이진 값을 가지는 시냅스 가중치를 이용하여 스파이킹 인공신경망을 구현할 수 있기 때문에 시냅스 가중치를 저장하기 위한 메모리 용량을 줄일 수 있다.
또한, 뉴런 회로는 학습 프로세스와 발화 프로세스를 분리함으로써, 하위 계층의 학습 속도가 감소함으로 인해 상위 계층에서 학습 속도가 저하되는 것을 방지할 수 있다.
도 1a 내지 도 1c는 일 실시 예에 따른 스파이킹 인공신경망(Spiking Neural Network)를 개략적으로 설명하기 위한 도면이다.
도 2a 내지 도 2d는 일 실시 예에 따른 시간 의존적 STDP(Spike-timing-dependent plasticity) 학습 함수를 도시한 도면이다.
도 3a 내지 도 3d는 일 실시 예에 따른 순서 의존적 STDP 학습 함수를 도시한 도면이다.
도 4는 일 실시 예에 따른 커넬 함수를 도시한 도면이다.
도 5는 일 실시 예에 따른 SNN의 계층 집단(population)을 도시한 도면이다.
도 6은 일 실시 예에 따른 뉴런 회로의 블록도이다.
도 7은 일 실시 예에 따른 뉴런 회로의 블록도이다.
도 8은 일 실시 예에 따른 시냅스 가중치 학습 시스템을 도시한 도면이다.
도 9는 일 실시 예에 따른 복수의 뉴런 회로들에 대한 시냅스 가중치 학습 시스템을 도시한 도면이다.
도 10은 계층적 뉴런 회로 집단의 학습 시스템을 도시한 도면이다.
도 11은 일 실시 예에 따른 뉴런 회로에 의해 수행되는 시냅스 가중치 학습 방법의 흐름도이다.
도 12는 뉴런 회로를 구현하기 위한 뉴런 블록의 스킴을 도시한 도면이다.
도 13은 일 실시 예에 따른 학습 회로를 구현하기 위한 STDP 학습 블록 스킴을 도시한 도면이다.
도 14는 일 실시 예에 따른 복수의 뉴런 회로를 포함하는 단일 코어 회로를 구현하기 위한 단일 코어 블록 스킴을 도시한 도면이다.
도 15는 복수의 단일 코어 블록들을 포함하는 멀티 코어 블록을 도시한 도면이다.
도 1a 내지 도 1c는 일 실시 예에 따른 스파이킹 인공신경망(Spiking Neural Network: SNN)을 개략적으로 설명하기 위한 도면이다.
SNN은 뇌의 뉴런을 포함하는 생물학적인 신경망 메커니즘을 모방하는 인공 신경망이다. SNN은 이산적인 스파이크 신호의 발생에 기초하여 동작한다.
도 1a를 참조하면, 뉴런(10)은 입력 스파이크 신호가 유입되는 입력 단자를 포함한다. 수신되는 입력 스파이크 신호는 물리적 또는 전산적 구현 방식에 따라 다른 성질과 모양을 가질 수 있다. SNN이 소프트웨어 프로그램과 같이 순수하게 전산적으로 구현된 것이라면, 입력 스파이크 신호는 해당 입력 스파이크 신호가 수신 된 시간 정보로 나타낼 수 있다. 또는, 입력 스파이크 신호는 시간에 따라 변하며 생물학적 형태를 가지는 복잡한 신경 스파이크 신호로 나타낼 수도 있다. 뉴런이 물리적으로 구현되는 경우, 입력 스파이크 신호는 전류, 전압, 전하, 자기 등의 펄스 또는 보다 복잡하고 정교한 시간 의존적 신호일 수 있다. 일반적으로 뉴런은 적어도 하나의 내부 상태 변수 를 가질 수 있다. 이 때, i는 뉴런 각각에 할당된 정수 인덱스를 나타낼 수 있다.
입력 스파이크 신호는 상태 변수 를 증가 시키거나, 감소시킬 수 있다. 전자를 양의 기여도라 하며 후자를 음의 기여도라 한다. 이는 뉴런이 수신된 입력 스파이크 신호를 통합(integrating)한다고 표현된다. 또한 누출 메커니즘(leakage mechanism)에 따라, 스파이크 신호를 입력 받는 사이에 뉴런의 상태 변수 는 휴지 상태 값으로 수렴하는 경향을 갖는다. 누출 메커니즘에 따라, 뉴런이 스파이크 신호를 충분히 오랜 시간 수신하지 않으면, 뉴런은 휴지 상태에 도달한다.
도 1b는 일 실시 예에 따른 뉴런들간의 상호 연결 관계를 보여준다.
생물학적, 인공적, 물리적 및 이산적으로 구현 시, 뉴런들은 "시냅스"를 통해 상호간 연결된다. 시냅스는 단 방향성을 가진다. 즉, 신호는 시냅스 전 (pre-synaptic) 터미널에서 시냅스 후 (post-synaptic) 터미널로 전달된다. 시냅스는 신호를 전송하는 시냅스 전 뉴런의 출력 스파이크 신호가 신호를 수신하는 시냅스 후 뉴런의 입력 스파이크 신호에 미치는 영향의 크기를 조정한다.
조정의 정도는 일반적으로 시냅스의 가중치 에 의해 결정된다. 시냅스의 가중치 는 시냅스 전 뉴런을 나타내는 인덱스 i와 시냅스 후 뉴런을 나타내는 인덱스 j의 조합으로 표현된다.
시냅스의 가중치는 "학습 규칙"에 기초하여 시간에 따라 변할 수 있다. 예를 들어, 인공신경망에 입력되는 스파이크 신호의 패턴이나, 인공신경망에서 생성된 스파이크 신호 등에 기초하여 인공신경망은 학습을 수행할 수 있다.
지도 학습(supervised learning)의 경우 외부 모니터링 에이전트가 관여하여 주어진 목표 기능을 학습할 지 여부에 관여하며, 비지도 학습(unsupervised learning)에서는, 학습에 관여하는 외부 모니터링 에이전트가 존재하지 않는다. 비지도 학습에서, 인공신경망은 입력되는 특징의 통계적 표상을 학습한다. STDP 학습은 SNN에 대한 비지도 학습의 일 예이다.
도 1c는 일 실시 예에 따른 STDP 학습 함수의 그래프를 도시한 도면이다.
시냅스 전 뉴런 i와 시냅스 후 뉴런 j를 연결하는 시냅스에 대하여, 시냅스의 가중치 는 하기 수학식 1에 따른 시냅스 후 스파이크의 발생 시간 및 시냅스 전 스파이크의 발생 시간 의 차이인 에 의해 결정된다.
수학식 1에서, 가 양수로서, 시냅스 전 스파이크와 시냅스 후 스파이크가 인과관계인 경우, 해당 시냅스 가중치가 강화되고, 그렇지 않은 경우 해당 시냅스 가중치가 약화된다.
일반적으로 STDP 학습 함수의 값은 제한된 타임 윈도우 [-Tmin, +Tmax]에서 0이 아니다. 예를 들어, 생물학적으로 Tmin 및 Tmax는 100ms 범위의 값을 가진다. 그러나 인공적 SNN에서 Tmin 및 Tmax는 학습대상인 패턴의 동적 시간 상수에 기초하여 변한다.
도 2a 내지 도 2d는 일 실시 예에 따른 시간 의존적 STDP 학습 함수를 도시한 도면이다.
도 2a는 일 실시 예에 따른 인과적(causal) STDP 학습 함수의 그래프를 도시한 도면이다.
A+ 면적과 A-면적의 비가 도 1c에 대응하는 A+ 면적과 A- 면적간의 비와 유사한 경우, 시냅스 강화 및 약화에 있어서 유사한 결과가 도출된다.
도 2b는 협소 강화 윈도우(narrow potentiation window) STDP 학습 함수의 그래프를 도시한 도면이다.
협소 강화 윈도우 STDP 학습 함수에 의할 때, 좁은 범위의 양의 시간 윈도우, [0,Tp] 에서만 강화 학습이 수행되며, 전체 시간 윈도우 [-Tmin, Tmax]의 다른 시간 영역에서는 약화 학습이 수행된다.
이 때, Tmax가 양의 무한대로 확장되고, -Tmin이 음의 무한대로 확장되는 경우, 스파이크가 발생한 목표 뉴런과 목표 뉴런의 시냅스 전 뉴런들을 연결하는 시냅스들은 모두 고정된 양만큼 약화되며, 목표 뉴런의 스파이크가 발생하기 전 소정의 시간 내에 시냅스 전 시냅스 전 뉴런으로부터 목표 뉴런으로 스파이크 신호를 전송한 시냅스에는 순 강화(net potentiation)가 발생한다. 이를 "무차별 약화(indiscriminate depressing) STDP"로 정의하기로 한다.
도 2c는 대칭적 헤비안 강화(symmetric hebbian potentiation)만을 정의하는 STDP 학습 함수의 그래프를 도시한 도면이다.
도 2c에 의하며, 시냅스 전 스파이크 신호의 발생 시간과 시냅스 후 스파이크 신호의 발생 시간간의 차이가, 선후와 무관하게, 일정 시간 내인 경우, 시냅스 강화가 이루어질 수 있다.
도 2d는 협소 강화 윈도우를 가지는 대칭적 헤비안 STDP 학습 함수의 그래프를 도시한 도면이다.
도 2d에 의할 때, 시냅스 전 스파이크 신호의 발생 시간과 시냅스 후 스파이크 신호의 발생 시간간의 차이가, 제한적 시간 윈도우 [-Tn, Tp]에 속하는 경우, 강화 학습이 일어나며, 나머지 영역에서는 약화가 발생한다.
이 때, Tmax가 양의 무한대로 확장되고, -Tmin이 음의 무한대로 확장되는 경우, 도 2d의 STDP 함수에 따른 학습은 "대칭적 무차별 약화 STDP"로 정의된다.
도 3a 내지 도 3d는 일 실시 예에 따른 순서 의존적 STDP 학습 함수를 도시한 도면이다.
상술한 바와 같이, 도 2a 내지 도 2d에 도시된 도면들은 시간 의존적 학습 함수들이다. 따라서, 하드웨어나 소프트웨어 알고리즘을 구현함에 있어서, 시냅스 전 뉴런의 스파이크 발생 시간 또는 시냅스 후 뉴런의 스파이크 발생 시간을 나타내는 정보인 타임스탬프(timestamp)가 필요하다.
이에 대응하여, 순서 의존적 학습 함수들이 제안된다. 순서 의존적 학습 함수들은 시간 의존적 학습 함수들의 시간 축을 이산적인 순서로 치환함으로써 획득될 수 있다. 따라서, 시냅스 전 뉴런의 스파이크가 발생하는 시냅스 전 이벤트 및 시냅스 후 뉴런의 스파이크가 발생하는 시냅스 후 이벤트의 순서를 추적함으로써, 순서 의존적 학습 함수들에 따른 STDP 학습이 구현될 수 있다. 예를 들어, 전체 인공신경망 시스템의 이벤트를 순서에 따라 나열한 이벤트 리스트가 통합적으로 저장되거나, 서브 시스템들 각각의 이벤트 리스트가 별도로 저장될 수 있다. 또는, 각각의 시냅스에 대한 이벤트 리스트가 별도로 저장될 수 있다. 이벤트 리스트를 저장함에 있어서, 최근 순으로 발생한 이벤트의 최대 저장 가능한 개수 N을 설정함으로써, 뉴런 네트워크가 최근에 발생한 이벤트를 이용하여 합리적으로 학습을 수행하도록 구현될 수 있다.
도 3a 내지 3d는 도 2a 내지 도 2d에 대응하는 순서 의존적 학습 함수들로서, 가로 축이 시냅스 후 스파이크의 시간 및 시냅스 전 스파이크의 신호간의 시간 차 대신, 하기 수학식 2에 따른 시냅스 후 뉴런 스파이크의 순서 인덱스 및 시냅스 전 뉴런 스파이크의 순서 인덱스 간의 인덱스 차이인 으로 치환된 점에서 차이가 있다.
순서 기반 STDP 학습의 특징은 학습이 신경 활동의 역동성에 적응적이라는 점이다. STDP가 시간 기반 학습 방법이기 때문에, 이로 인해, 특정 범위의 시간 상수 및 역동성에 의존하는 생물학적 STDP와 근본적으로 차이가 있다.
순서 기반 STDP 학습은 이벤트가 발생하는 속도 및 역동성과는 독립적으로 수행된다. 모든 스파이크의 타임 스탬프에 동일한 상수가 곱해지더라도, 순서가 동일하므로 결과적으로 학습 내용은 변경되지 않는다. 따라서 순서 기반 STDP는 이벤트의 속도와 역동성에 따라 자체 적응성을 가진다.
일반적으로, STDP를 전산적으로 구현함에 있어서, 학습 함수는 적은 크기의 결정론적 시냅스 변화, 예를 들어, 1% 또는 0.1% 이하의 /w 또는 를 이전 가중치에 적용한다. 이 때, 스파이크 시퀀스는 특정 선호 패턴에 치우치는 것을 막기 위해 자극(stimuli) 순서를 변경하면서 반복된다.
따라서, 일반적인 STDP는 결정론적이고, 시냅스 가중치의 적은 변화를 구현할 수 있도록, 가중치를 저장하기 위해 고 해상도가 요구 된다.
한편, 학습 과정에 확률적 성격을 적용함으로써 시냅스 가중치의 저장에 필요한 해상도를 낮출 수 있다. 이는, 결정론적 학습 방법에 따라 가중치에 작은 변화 량을 적용하는 대신, 확률적 학습 방법에 따라 높은 변화량을 적은 확률로 적용함으로써 구현될 수 있다.
예를 들어, 도 2a 내지 도2d 및 도 3a 내지 도 3d의 학습 함수들을 이용하여, 확률적 STDP 학습 모델이 구현될 수 있다. 이는, 세로 축인 가중치 변화 량 을 미리 결정된 양만큼 가중치 변화가 발생할 확률 p로 치환함으로써 구현될 수 있다.
예를 들어, 시냅스 가중치 값은 1 bit의 값인 1 또는 0일 수 있다. 만약, 또는 이 양의 확률 p (0<= p <=1)인 경우, 랜덤 수 x (0<=x<=1)를 생성하여, x<=p인 경우 가중치를 1로 설정하고, x>p인 경우 가중치를 유지할 수 있다. 만약, ξ(t) 또는 ξ(n)이 음의 확률 p (0>= p >=-1)인 경우, 랜덤 수 x (0<=x<=1)를 생성하여, x<=|p|인 경우 가중치를 0으로 설정하고, x>|p|인 경우 가중치를 유지할 수 있다.
도 4는 일 실시 예에 따른 커넬 함수를 도시한 도면이다.
커넬 함수는 입력 이벤트 즉 시냅스를 통해 입력된 입력 신호가 뉴런의 내부 상태 변수에 미치는 영향을 나타낸다. 예를 들어, 생물학적으로 뉴런의 내부 상태 변수는 생물학적 뉴런의 막 전위를 나타낼 수 있다.
뉴런의 내부 상태 변수 값이 임계 값을 넘어서면 뉴런이 발화하여 스파이크 신호를 출력할 수 있다.
예를 들어, 뉴런의 상태 변수 는 시간에 따른 함수로서 시간 영역에서 하기 수학식 3에 따른 미분 방정식을 만족한다.
미분 방정식에서 는 입력단, 또는 시냅스 전 뉴런에 대응하는 인덱스 및 현재 뉴런, 즉 시냅스 후 뉴런에 대응하는 인덱스 k에 의해 정의되는 두 뉴런간의 시냅스 가중치를 나타낸다. 는 휴지 상태의 상태 변수 값으로서 생물학적으로 뉴런 막 전위의 휴지 전압을 나타낼 수 있다. 우변의 텀은 시간 상수 에 의해 시간에 따라 감소하는 누출 메커니즘(leakage mechanism)을 나타낸다. 누출 메커니즘에 의해 뉴런이 장기간 입력 신호를 수신하지 않으면 뉴런의 상태 변수 값은 휴지 상태 값 으로 수렴한다. 누출 메커니즘은 exponential한 감쇄이나 하드웨어적 구현에서 선형 감쇄로 구현될 수 있다.
한편 입력 신호가 시간에 따라 뉴런 k의 상태 변수 에 미치는 영향을 나타내는 함수의 일 예인 커넬 함수 h(t)는 도 4에서와 같이 입력 시간 후 소정의 시간이 경과하기 까지 상태 변수에 미치는 기여도가 증가하다가 이후 점차 기여도가 감소하는 형태일 수 있다.
함수 h(t)는 전산적 구현의 효율성을 위하여 델타 함수로 간략화 될 수 있다. 따라서, 입력 신호가 입력되는 시점에 상태 변수가 즉각적으로 시냅스 가중치 만큼 증가된다.
도 5는 일 실시 예에 따른 SNN의 일 계층 집단(population)을 도시한 도면이다.
도 5에서, SNN의 P 계층 집단(P는 정수)은 복수의 뉴런들을 포함한다. 예를 들어, K 개의 뉴런들 각각은 인덱스 k(k=1, 2, ..., K)로 나타낼 수 있다. 복수의 뉴런들 각각으로부터 출력된 신호 는 출력 채널 O를 통하여 상위 계층인 P+1 계층 집단에 입력 신호로서 전송된다.
또한, SNN의 P 계층 집단은 복수의 입력단을 포함한다. 예를 들어, m 개의 입력단은 인덱스 i(i=1, 2 , ..., m)로 나타낼 수 있다. 입력 신호 는 입력 채널 I를 통하여 입력단 i에서 수신된다.
또한, 계층 집단 P에 의해 입력 신호가 수신되는 입력 이벤트가 발생한 경우, 입력 시간을 , 입력 단을 라 할 때, 입력 신호를 로 나타낼 수 있다.
마찬가지로, 계층 집단 P의 뉴런들 중 적어도 하나의 뉴런이 스파이크 신호를 출력하는 출력 이벤트가 발생한 경우, 출력 시간을 , 스파이크 신호를 출력한 뉴런의 인덱스를 라 할 때, 출력 신호를 로 나타낼 수 있다.
예를 들어, 각각의 SNN 계층은 이벤트 저장부를 포함할 수 있다.
이벤트 저장부는 입력 이벤트가 발생할 때마다, 입력 이벤트에 관한 정보를 획득하여, 하기 수학식 4와 같이 표현되는 시간에 따른 시냅스 전 이벤트 리스트를 구축할 수 있다.
또한, 이벤트 저장부는 출력 이벤트가 발생할 때마다, 출력 이벤트에 관한 정보를 획득하여, 하기 수학식 5와 같이 표현되는 시간에 따른 시냅스 후 이벤트 리스트를 구축할 수 있다.
입력 이벤트 가 발생할 때마다, SNN 계층은 시냅스 후 이벤트 리스트의 출력 이벤트 각각에 대하여, 를 산출하여, 를 획득한다.
만약, 가 0보다 큰 경우 는 시냅스 가중치를 1로 설정할 확률이고, 0보다 작은 경우 는 시냅스 가중치를 0으로 설정할 확률을 나타낸다.
출력 이벤트 가 발생할 때마다 SNN 계층은 시냅스 후 이벤트 리스트의 입력 이벤트 각각에 대하여, 를 산출하여, 를 획득한다.
만약, 가 0보다 큰 경우 는 시냅스 가중치를 1로 설정할 확률이고, 0보다 작은 경우 는 시냅스 가중치를 0으로 설정할 확률을 나타낸다.
도 2b와 관련하여 설명된, 무차별 약화 STDP 학습 함수의 경우, 시냅스 후 이벤트 리스트가 필요하지 않을 수 있다. 출력 이벤트가 발생할 때마다, 도 2b의 x 축이 양의 수인 영역 중 강화 학습 영역, 즉 인 범위에 속하는지 여부만 판단함으로써, STDP 학습이 수행될 수 있다.
순서 기반 STDP의 경우, 시냅스 전 이벤트 리스트 및 시냅스 후 이벤트 리스트는 시간에 대한 정보가 별도로 필요하지 않고, 순서만으로 STDP 학습이 수행될 수 있다.
예를 들어, 시냅스 전 이벤트 리스트는 하기 수학식 6과 같이 입력단 및 순서에 따른 인덱스로 표현될 수 있다.
예를 들어, 시냅스 후 이벤트 리스트는 하기 수학식 7과 같이 스파이크 신호를 출력한 시냅스 및 순서에 따른 인덱스로 표현될 수 있다.
입력 이벤트가 발생할 때마다 SNN 계층은 시냅스 후 이벤트 리스트의 출력 이벤트 각각에 대하여, 를 산출하여, 를 획득한다.
만약, 가 0보다 큰 경우 는 시냅스 가중치를 1로 설정할 확률이고, 0보다 작은 경우 는 시냅스 가중치를 0으로 설정할 확률을 나타낸다.
출력 이벤트 가 발생할 때마다 SNN 계층은 시냅스 후 이벤트 리스트의 입력 이벤트 각각에 대하여, 를 산출하여, 를 획득한다.
만약, 가 0보다 큰 경우 는 시냅스 가중치를 1로 설정할 확률이고, 0보다 작은 경우 는 시냅스 가중치를 0으로 설정할 확률을 나타낸다.
도 3b와 관련하여 설명된, 무차별 약화 STDP 학습 함수의 경우, 시냅스 후 이벤트 리스트가 필요하지 않을 수 있다. 출력 이벤트가 발생할 때마다, 도 3b의 x 축이 양의 수인 영역 중 강화 학습 영역, 즉 인 범위에 속하는지 여부만 판단함으로써, STDP 학습이 수행될 수 있다.
도 6은 일 실시 예에 따른 뉴런 회로(600)의 블록도이다.
도 6을 참조하면, 뉴런 회로(600)는 시냅스 가중치 메모리(610), 제 1 서브 회로(620), 제 2 서브 회로(630) 및 제 3 서브 회로(640)를 포함할 수 있다. 도 6에는, 실시 예와 관련된 필수적 구성 요소만이 도시되었으며, 다른 범용적 구성 요소들이 포함될 수 있음을 통상의 기술자는 이해할 수 있을 것이다.
시냅스 가중치 메모리(610)는 복수의 시냅스 가중치 값들을 저장할 수 있다. 예를 들어, 시냅스 가중치 값은 1 비트의 데이터일 수 있다. 시냅스 가중치 값은 활성 값 또는 비활성 값의 이진 값을 가질 수 있다. 예를 들어, 활성 값은 1이고 비활성 값은 0일 수 있으나 이에 제한되지 아니한다.
시냅스 가중치 값이 활성 값인 시냅스는 활성화 시냅스라 정의하고, 비활성 값인 시냅스는 비활성화 시냅스라 정의하도록 한다.
시냅스 가중치 메모리(610)는 복수의 시냅스 전 뉴런 회로들 각각에 대응하는 시냅스 가중치 값을 저장할 수 있다. 예를 들어, 시냅스 가중치 메모리(610)는 복수의 셀들 각각에 복수의 시냅스 전 뉴런 회로들 각각의 시냅스 가중치 값을 저장할 수 있다.
시냅스 가중치 메모리(610)는 뉴런 회로(600) 내에 다른 구성 요소 또는 외부 구성 요소로부터 접근이 가능할 수 있다. 예를 들어, 셀 주소 정보 및 읽기 동작 요청 신호가 인가됨에 따라, 시냅스 가중치 메모리(610)는 셀 주소 정보에 대응하는 시냅스 가중치 값을 출력할 수 있다. 이에 따라, 읽기 동작 요청 신호를 전송한 구성 요소는 셀 주소 정보에 대응하는 시냅스 가중치 값을 획득할 수 있다. 또한, 시냅스 가중치 메모리(610)에 셀 주소 정보, 쓰기 동작 요청 신호 및 가중치 값이 인가됨에 따라, 시냅스 가중치 메모리(610) 내의 셀 주소 정보에 대응하는 시냅스 가중치 값이 인가된 가중치 값으로 설정될 수 있다.
제 1 서브 회로(620)는 시냅스 전 뉴런 회로로부터 입력 신호를 수신하고, 수신된 입력 신호가, 수신된 입력 신호의 시냅스 가중치 값이 활성 값인 활성화 신호인지 여부를 판단할 수 있다.
예를 들어, 제 1 서브 회로(620)는 입력 신호를 수신할 수 있다. 입력 신호는 뉴런 회로(600)의 시냅스 전 뉴런 회로로부터 출력된 신호일 수 있다. 예를 들어, 입력 신호는 시냅스 전 뉴런 회로로부터 출력된 스파이크 신호일 수 있다.
또한, 입력 신호는 복수의 시냅스 전 뉴런 회로들로부터 출력된 신호일 수 있다. 예를 들어, 입력 신호는 복수의 시냅스 전 뉴런 회로들 중 적어도 일부로부터 출력된 스파이크 신호가 선택적으로 또는 조합적으로 입력된 신호일 수 있다.
예를 들어, 입력 신호는 스파이크 신호를 출력한 시냅스 전 뉴런 회로를 식별할 수 있는 정보를 포함할 수 있다. 다른 일 예로서, 입력 신호는 시냅스 전 뉴런 회로가 스파이크 신호를 출력했음을 나타내는 정보 및/또는 시냅스 전 뉴런 회로의 식별 정보를 포함할 수 있다. 예를 들어, 입력 신호에 포함된 식별 정보는 시냅스 전 뉴런 회로 고유의 아이디를 포함할 수 있다. 또한, 입력 신호에 포함된 식별 정보는 시냅스 전 뉴런 회로의 시냅스 가중치 값이 저장된 시냅스 가중치 메모리(610) 내의 셀 주소 정보를 포함할 수 있다.
제 1 서브 회로(620)는 입력 신호가, 입력 신호에 대응하는 시냅스 가중치 값이 활성 값인 활성화 입력 신호인지 여부를 판단할 수 있다. 예를 들어, 제 1 서브 회로(620)는 시냅스 가중치 메모리(610)로부터 입력 신호에 대응하는 시냅스 가중치 값을 획득할 수 있다. 예를 들어, 제 1 서브 회로(620)는 시냅스 가중치 메모리(610)에게 읽기 동작 요청 신호 및 입력 신호에 포함된 시냅스 셀 주소 정보를 인가할 수 있다. 또한, 제 1 서브 회로(620)는 시냅스 가중치 메모리(610)로부터 시냅스 셀 주소 정보에 대응하는 시냅스 가중치 값을 획득할 수 있다. 획득된 시냅스 가중치 값이 활성 값인 경우, 제 1 서브 회로(620)는 입력 신호를 활성화 신호라고 판단할 수 있다. 획득된 시냅스 가중치 값이 비활성 값인 경우 제 1 서브 회로(620)는 입력 신호가 활성화 신호가 아니라고 판단할 수 있다. 제 1 서브 회로(620)는, 입력 신호가 활성화 신호라고 판단함에 따라, 제 2 서브 회로(630)에게 활성화 신호를 수신했음을 나타내는 신호를 인가할 수 있다.
제 2 서브 회로(630)는, 제 1 서브 회로(620)로부터 활성화 신호의 수신을 나타내는 신호를 인가 받음에 따라, 활성화 입력 신호의 제 1 누적 수신 횟수와 학습 임계 값간의 비교 연산을 수행할 수 있다.
제 2 서브 회로(630)는 활성화 입력 신호를 수신할 때마다 제 1 누적 수신 횟수를 증가 시킬 수 있다. 또한, 제 2 서브 회로(630)는 제 1 누적 수신 횟수가 학습 임계 값과 같거나 학습 임계 값보다 크다고 판단함에 따라 제 1 누적 수신 횟수를 리셋할 수 있다.
또한, 제 2 서브 회로(630)는 제 1 누적 수신 횟수가 학습 임계 값과 같거나 학습 임계 값보다 크다고 판단함에 따라, 학습 임계 값을 증가 시킬 수 있다. 일 실시 예에 따른, 학습 임계 값은 학습 임계 값의 상한 값을 가질 수 있다. 제 2 서브 회로(630)는 학습 임계 값이 학습 임계 값의 상한 값과 같은 경우 학습 임계 값을 학습 임계 값의 상한 값으로 유지할 수 있다. 다른 일 예로서, 학습 임계 값은 고정된 값일 수 있다.
제 2 서브 회로(630)는 제 1 누적 수신 횟수가 학습 임계 값과 같거나 학습 임계 값보다 크다고 판단함에 따라 제 3 서브 회로(640)에게 학습을 요청하는 신호를 인가할 수 있다.
제 3 서브 회로(640)는 제 2 서브 회로(630)로부터 학습 요청 신호를 인가 받음에 따라 시냅스 가중치 값을 조정하는 학습 동작을 수행할 수 있다.
제 3 서브 회로(640)는 활성화 입력 신호에 대응하는 시냅스 가중치 값을 확률적으로 활성 값으로 설정하는 강화 학습을 수행할 수 있다.
예를 들어, 제 3 서브 회로(640)는 입력 신호를 수신하는 입력 이벤트가 발생한 경우, 입력 이벤트에 대한 정보를 획득할 수 있다. 입력 이벤트에 대한 정보는 입력 신호에 포함된 시냅스 전 뉴런 회로의 식별 정보를 포함할 수 있다. 상술한 바와 같이, 시냅스 전 뉴런 회로의 식별 정보는 시냅스 전 뉴런 회로에 대응하는 시냅스 가중치 값이 저장된 셀 주소 정보 등 시냅스 정보를 포함할 수 있으나 이에 제한되지 아니한다.
제 3 서브 회로(640)는 입력 신호에 대응하는 시냅스 가중치 메모리(610) 내에 시냅스 가중치 값을 확률적으로 활성 값으로 설정하는 강화 학습을 수행할 수 있다. 예를 들어, 제 3 서브 회로(640)는 복수의 입력 이벤트에 대한 정보를 저장할 수 있다. 또한, 제 3 서브 회로(640)는 복수의 입력 이벤트들 중 적어도 일부의 입력 이벤트에 대응하는 시냅스 가중치 값을 활성 값으로 설정하는 시냅스 강화의 수행 여부를 확률적으로 결정할 수 있다.
예를 들어, 제 3 서브 회로(640)는 강화 학습 수행 대상인 적어도 일부의 입력 이벤트 각각에 대하여 시냅스 강화의 수행 여부를 독립적으로 결정할 수 있다.
시냅스 강화 확률인 제 1 확률은 미리 결정될 수 있다. 예를 들어, 제 1 확률은 상수일 수 있으나 이에 제한되지 아니한다.
또한, 제 3 서브 회로(640)는 기 저장된 복수의 입력 이벤트들 중 미리 결정된 개수의 입력 이벤트에 대하여 강화 학습을 수행할 수 있다. 이 때, 제 3 서브 회로(640)는 기 저장된 복수의 입력 이벤트들 중 저장된 순서의 역순으로 미리 결정된 개수의 입력 이벤트에 대하여 강화 학습을 수행할 수 있다. 기 저장된 복수의 입력 이벤트들의 개수가 미리 결정된 개수보다 적은 경우, 제 3 서브 회로(640)는 기 저장된 복수의 입력 이벤트들 모두에 대하여 강화 학습을 수행할 수 있다.
제 3 서브 회로(640)는 시냅스 가중치 메모리(610) 내에 시냅스 가중치 값을 확률적으로 비활성 값으로 설정하는 약화 학습을 수행할 수 있다. 예를 들어, 제 3 서브 회로(640)는 시냅스 가중치 메모리(610) 내에 복수의 시냅스 가중치 값들 각각을 비활성 값으로 설정하는 시냅스 약화의 수행 여부를 확률적으로 결정할 수 있다.
제 3 서브 회로(640)는 복수의 시냅스 가중치 값들 각각에 대하여 시냅스 약화의 수행 여부를 독립적으로 결정할 수 있다.
시냅스 약화 확률인 제 2 확률은 복수의 시냅스 가중치 값들에 기초하여 결정될 수 있다. 예를 들어, 제 2 확률은 복수의 시냅스들 중 시냅스 가중치 값이 활성 값인 활성화 시냅스의 개수에 기초하여 결정될 수 있다.
제 3 서브 회로(640)는 시냅스 가중치 메모리(610) 내의 복수의 시냅스들 중 적어도 일부에 대하여 약화 학습을 수행할 수 있다. 예를 들어, 제 3 서브 회로(640)는 시냅스 가중치 메모리(610) 내의 복수의 시냅스들 모두에 대하여 약화 학습을 수행할 수 있다. 또는, 제 3 서브 회로(640)는 시냅스 가중치 메모리(610) 내에 복수의 시냅스들 중 강화 학습이 수행되지 않은 시냅스에 대하여 약화 학습을 수행할 수 있다.
도 7은 일 실시 예에 따른 뉴런 회로(700)의 블록도이다.
뉴런 회로(700)는 시냅스 가중치 메모리(710), 제 1 서브 회로(720), 제 2 서브 회로(730), 제 3 서브 회로(740) 및 제 4 서브 회로(750)를 포함할 수 있다.
도 7의 시냅스 가중치 메모리(710), 제 1 서브 회로(720), 제 2 서브 회로(730) 및 제 3 서브 회로(740)에는, 도 6의 시냅스 가중치 메모리(610), 제 1 서브 회로(620), 제 2 서브 회로(630) 및 제 3 서브 회로(640)에 대한 실시 예가 적용될 수 있으며, 중복되는 내용은 생략하도록 한다.
제 1 서브 회로(720)는 활성화 입력 신호를 수신 하였음을 나타내는 신호를 제 2 서브 회로(730) 및 제 4 서브 회로(750) 각각에게 인가할 수 있다.
제 2 서브 회로(730)는 학습 카운터(731), 학습 임계 값 카운터(732) 및 제 1 비교 연산부(733)를 포함할 수 있다.
학습 카운터(731)는 활성화 입력 신호의 제 1 누적 수신 횟수를 카운팅하여 출력할 수 있다. 예를 들어, 학습 카운터(731)의 출력 카운팅 값은 제 1 서브 회로(720)로부터 활성화 입력 신호가 수신되었음을 나타내는 신호를 인가 받음에 따라 증가할 수 있다.
학습 임계 값 카운터(732)는 학습 임계 값을 카운팅하여 출력 할 수 있다. 학습 임계 값 카운터(732)의 출력 카운팅 값은 미리 결정된 초기 값을 가질 수 있다. 학습 임계 값 카운터(732)의 출력 카운팅 값은 제 1 비교 연산부(733)의 출력 값에 기초하여 증가할 수 있다.
제 1 비교 연산부(733)는 학습 카운터(731)의 출력 카운팅 값과 학습 임계 값 카운터(732)의 출력 카운팅 값을 인가 받아 비교 연산을 수행할 수 있다. 제 1 비교 연산부(733)는 학습 카운터(731)의 출력 카운팅 값과 학습 임계 값 카운터(732)의 출력 카운팅 값이 같은 경우 학습 요청 신호를 출력할 수 있다. 예를 들어, 제 1 비교 연산부(733)는 1 비트의 신호를 출력할 수 있다. 학습 카운터(731)의 출력 카운팅 값과 학습 임계 값 카운터(732)의 출력 카운팅 값이 같은 경우 1을 출력하고, 다른 경우 0을 출력할 수 있다.
제 1 비교 연산부(733)의 출력 값은 학습 임계 값 카운터(732)에 입력될 수 있다. 예를 들어, 학습 임계 값 카운터(732)의 출력 카운팅 값은 제 1 비교 연산부(733)의 출력 값이 0에서 1로 토글(toggle) 되는 경우, 증가할 수 있다.
또한, 제 1 비교 연산부(733)의 출력 값은 학습 카운터(731)에 리셋 신호로서 인가될 수 있다. 예를 들어, 제 1 비교 연산부(733)의 출력 값이 1인 경우, 학습 카운터(731)의 출력 카운팅 값은 0으로 리셋될 수 있다.
제 3 서브 회로(740)는 랜덤 상수 생성기(741), 강화 학습 프로세서(742), 약화 학습 프로세서(743) 및 입력 이벤트 버퍼(744)를 포함할 수 있다.
제 3 서브 회로(740)는 소정의 범위의 랜덤 상수를 생성하는 랜덤 상수 생성기(741)를 포함할 수 있다. 예를 들어, 랜덤 상수 생성기(741)가 10 비트의 값을 출력하는 경우, 랜덤 상수 생성기(741)는 0부터 1023까지의 범위에 속하는 랜덤 상수를 출력할 수 있다. 예를 들어, 랜덤 상수 생성기(741)는 선형 되먹임 시프트 레지스터(Linear feedback shift register: LFSR)일 수 있으나 이에 제한되지 아니한다.
입력 이벤트 버퍼(744)는, 뉴런 회로(700)가 입력 신호를 수신하는 입력 이벤트가 발생한 경우, 입력 이벤트에 대한 정보를 저장할 수 있다. 예를 들어, 입력 이벤트 버퍼(744)는 복수의 입력 이벤트들에 대한 정보를 저장할 수 있다. 입력 이벤트에 대한 정보는 입력 신호에 포함된 시냅스 전 뉴런 회로의 식별 정보를 포함할 수 있다. 상술한 바와 같이, 시냅스 전 뉴런 회로의 식별 정보는 시냅스 전 뉴런 회로에 대응하는 시냅스 가중치 값이 저장된 셀 주소 정보 등 시냅스 정보를 포함할 수 있으나 이에 제한되지 아니한다. 입력 이벤트 버퍼(744)가 가득 찬 경우, 입력 이벤트 버퍼(744)는 저장 순서가 가장 빠른 입력 이벤트 정보를 삭제하고, 새로운 입력 이벤트에 관한 정보를 저장할 수 있다. 예를 들어, 입력 이벤트 버퍼(744)는 원형 버퍼(circular buffer)일 수 있다.
제 3 서브 회로(740)는 제 2 서브 회로(730)로부터 학습 요청 신호를 수신함에 따라, 강화 학습 프로세서(742)를 이용하여 강화 학습을 수행할 수 있다.
강화 학습 프로세서(742)는 기 수신된 입력 신호에 대응하는 시냅스 가중치 값을 확률적으로 활성 값으로 설정하는 강화 학습을 수행할 수 있다. 예를 들어, 강화 학습 프로세서(742)는 기 수신된 복수의 입력 신호들에 대응하는 시냅스 가중치 값을 확률적으로 활성 값으로 설정하는 강화 학습을 수행할 수 있다. 예를 들어, 강화 학습 프로세서(742)는 입력 이벤트 버퍼(744)에 저장된 복수의 입력 이벤트들 중 적어도 일부의 입력 이벤트 각각의 정보에 대응하는 시냅스 가중치 값을 활성 값으로 설정하는 시냅스 강화의 수행 여부를 확률적으로 결정할 수 있다.
예를 들어, 강화 학습 프로세서(742)는 강화 학습 수행 대상인 적어도 일부의 입력 이벤트 각각에 대하여 시냅스 강화의 수행 여부를 독립적으로 결정할 수 있다.
시냅스 강화 확률인 제 1 확률은 미리 결정될 수 있다. 예를 들어, 제 1 확률은 상수일 수 있으나 이에 제한되지 아니한다.
예를 들어, 강화 학습 프로세서(742)는 입력 이벤트 버퍼(744)에 기 저장된 복수의 입력 이벤트들 중 미리 결정된 개수의 입력 이벤트에 대하여 강화 학습을 수행할 수 있다. 이 때, 강화 학습 프로세서(742)는 입력 이벤트 버퍼(744)에 기 저장된 복수의 입력 이벤트들 중 저장된 순서의 역순으로 미리 결정된 개수의 입력 이벤트에 대하여 강화 학습을 수행할 수 있다. 입력 이벤트 버퍼(744)에 기 저장된 입력 이벤트들의 개수가 미리 결정된 개수보다 적은 경우, 강화 학습 프로세서(742)는 입력 이벤트 버퍼(744)에 기 저장된 입력 이벤트들 모두에 대하여 강화 학습을 수행할 수 있다.
강화 학습 프로세서(742)는 랜덤 상수 생성기(741)로부터 획득된 랜덤 상수와, 제 1 확률에 기초하여 결정된 강화 학습 기준 상수를 비교하여 시냅스 강화의 수행 여부를 결정할 수 있다. 예를 들어, 강화 학습 프로세서(742)는 랜덤 상수가 랜덤 상수의 상한 값에 제 1 확률을 곱하여 산출된 강화 학습 기준 상수의 미만 또는 이하인 경우, 시냅스 강화를 수행할 수 있다. 즉, 강화 학습 프로세서(742)는 학습 대상 입력 이벤트 정보에 대응하는, 시냅스 가중치 메모리(710)의 시냅스 가중치 값을 활성 값으로 설정할 수 있다. 강화 학습 프로세서(742)는 시냅스 가중치 메모리(710)에 입력 이벤트에 대응하는 셀 주소 정보, 쓰기 요청 신호 및 활성 값을 인가할 수 있다.
다른 일 예로서, 강화 학습 프로세서(742)는 랜덤 상수가 강화 학습 기준 상수보다 큰 경우 또는 크거나 같은 경우 시냅스 강화를 수행할 수 있다.
약화 학습 프로세서(743)는 시냅스 가중치 메모리(710) 내의 시냅스 가중치 값을 확률적으로 비활성 값으로 설정하는 약화 학습을 수행할 수 있다. 약화 학습 프로세서(743)는 강화 학습 프로세서(742)에 의해 강화 학습이 수행된 후에 약화 학습을 수행할 수 있다.
약화 학습 프로세서(743)는 시냅스 가중치 메모리(710) 내의 복수의 시냅스들 중 적어도 일부의 시냅스에 대하여 약화 학습을 수행할 수 있다.
예를 들어, 약화 학습 프로세서(743)는 시냅스 가중치 메모리(710) 내의 복수의 시냅스들 모두에 대하여 약화 학습을 수행할 수 있다. 또는, 약화 학습 프로세서(743)는 시냅스 가중치 메모리(710) 내의 복수의 시냅스들 중 강화 학습이 수행되지 않은 시냅스에 대하여 약화 학습을 수행할 수 있다.
약화 학습 프로세서(743)는 시냅스 가중치 메모리(710) 내의 복수의 시냅스 가중치 값들 각각을 비활성 값으로 설정하는 시냅스 약화의 수행 여부를 확률적으로 결정할 수 있다.
예를 들어, 약화 학습 프로세서(743)는 복수의 시냅스 가중치 값들에 대하여 시냅스 약화의 수행 여부를 독립적으로 결정할 수 있다.
약화 학습 프로세서(743)는 시냅스 약화 확률인 제 2 확률을 복수의 시냅스 가중치 값들에 기초하여 결정될 수 있다. 예를 들어, 제 2 확률은 복수의 시냅스들 중 시냅스 가중치 값이 활성 값인 활성화 시냅스의 개수에 기초하여 결정될 수 있다. 예를 들어, 제 2 확률은 활성화 시냅스 개수에 대한, 미리 결정된 적정 활성화 시냅스 개수와 활성화 시냅스의 개수의 차이의 비율일 수 있다.
약화 학습 프로세서(743)는 랜덤 상수 생성기(741)로부터 획득된 랜덤 상수와 제 2 확률에 기초하여 결정된 약화 학습 기준 상수를 비교하여 시냅스 약화의 수행 여부를 결정할 수 있다. 예를 들어, 약화 학습 프로세서(743)는 랜덤 상수가 랜덤 상수의 상한 값에 제 2 확률을 곱하여 산출된 약화 학습 기준 상수보다 작은 경우 시냅스 약화를 수행할 수 있다. 즉, 랜덤 상수가 약화 학습 기준 상수보다 작은 경우 또는 작거나 같은 경우, 약화 학습 프로세서(743)는 시냅스 가중치 메모리(710)의 시냅스 가중치 값을 비활성 값으로 설정할 수 있다. 약화 학습 프로세서(743)는 시냅스 가중치 메모리(710)에 약화 대상인 시냅스 가중치 값에 대응하는 셀 주소 정보, 쓰기 요청 신호 및 비활성 값을 인가할 수 있다.
다른 일 예로서, 약화 학습 프로세서(743)는 랜덤 상수가 약화 기준 상수보다 큰 경우, 또는 크거나 같은 경우 시냅스 약화를 수행할 수 있다.
제 4 서브 회로(750)는 활성화 입력 신호의 제 2 누적 수신 횟수와 발화 임계 값간의 비교 연산을 수행할 수 있다. 또한, 제 4 서브 회로(750)는 활성화 입력 신호의 제 2 누적 수신 횟수가 발화 임계 값에 이른 경우 뉴런 회로(700)의 시냅스 후 뉴런 회로에게 스파이크 신호(71)를 전송할 수 있다.
제 4 서브 회로(750)는 발화 카운터(751) 및 제 2 비교 연산부(752)를 포함할 수 있다. 발화 카운터(751)는 활성화 입력 신호의 제 2 누적 수신 횟수를 카운팅하여 출력할 수 있다. 예를 들어, 발화 카운터(751)의 출력 카운팅 값은 제 1 서브 회로(720)로부터 활성화 입력 신호가 수신되었음을 나타내는 신호를 인가 받음에 따라 증가할 수 있다.
제 2 비교 연산부(752)는 발화 카운터(751)의 출력 카운팅 값과 발화 임계 값을 인가 받아 비교 연산을 수행할 수 있다. 발화 임계 값은 미리 결정된 상수일 수 있다. 예를 들어, 발화 임계 값은 기 저장된 값 또는 외부 구성 요소로부터 수신된 값일 수 있다.
제 2 비교 연산부(752)는 발화 카운터(751)의 출력 카운팅 값과 발화 임계 값이 같은 경우 스파이크 신호(71)를 출력할 수 있다. 예를 들어, 제 2 비교 연산부(752)는 1 비트의 신호를 출력할 수 있다. 이 때, 제 2 비교 연산부(752)는 발화 카운터(751)의 출력 카운팅 값과 발화 임계 값이 같은 경우 1을 출력하고, 다른 경우 0을 출력할 수 있다. 제 2 비교 연산부(752)의 출력 값이 1인 것은 스파이크 신호(71)를 출력하는 것을 나타낸다.
또한, 제 2 비교 연산부(752)의 출력 값은 발화 카운터(751)에 리셋 신호로서 인가될 수 있다. 예를 들어, 제 2 비교 연산부(752)의 출력 값이 1인 경우, 발화 카운터(751)의 출력 카운팅 값은 0으로 리셋될 수 있다.
제 2 비교 연산부(752)의 스파이크 신호(71)는 뉴런 회로(700)의 시냅스 후 뉴런 회로에 인가될 수 있다.
도 8은 일 실시 예에 따른 시냅스 가중치 학습 시스템(800)을 도시한 도면이다.
시냅스 가중치 학습 시스템(800)은 뉴런 회로(860) 및 학습 회로(840)를 포함할 수 있다.
도 7에서 뉴런 회로(700)에 포함된 제 3 서브 회로(740)가 시냅스 가중치 학습 동작을 수행하지만, 도 8에서는 뉴런 회로(860) 외부의 학습 회로(840)가 뉴런 회로(860)의 시냅스 가중치 학습 동작을 수행할 수 있다.
도 8의 시냅스 가중치 메모리(810) 및 제 1 서브 회로(820) 각각에는 도 6 및 도 7의 시냅스 가중치 메모리(610, 710) 및 제 1 서브 회로(620, 720)에 대한 실시예가 적용될 수 있다. 또한, 도 8의 제 2 서브 회로(830), 학습 카운터(831), 학습 임계 값 카운터(832), 및 제 1 비교 연산부(833) 각각에는, 도 6 및 도 7의 제 2 서브 회로(630, 730), 학습 카운터(731), 학습 임계 값 카운터(732), 및 제 1 비교 연산부(733)에 대한 실시예가 적용될 수 있다. 도 8의 제 4 서브 회로(850), 발화 카운터(851), 및 제 2 비교 연산부(852) 각각에는, 도 7의 제 4 서브 회로(750), 발화 카운터(751), 및 제 2 비교 연산부(752)에 대한 실시예가 적용될 수 있다.
또한, 도 8의 학습 회로(840), 랜덤 상수 생성기(841), 강화 학습 프로세서(842), 약화 학습 프로세서(843), 입력 이벤트 버퍼(844) 각각에는 도 6 및 도 7의 제 3 서브 회로(640, 740), 랜덤 상수 생성기(741), 강화 학습 프로세서(742), 약화 학습 프로세서(743), 입력 이벤트 버퍼(744)에 대한 실시 예가 적용될 수 있다. 따라서, 도 8에 대한 설명에서 도 6 및 도 7과 중복되는 설명은 생략하도록 한다.
뉴런 회로(860)는 수신된 입력 신호가 수신된 입력 신호의 시냅스 값이 활성 값인 활성화 신호인지 여부를 판단하여, 활성화 입력 신호의 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우 학습 요청 신호를 학습 회로에게 전송할 수 있다.
뉴런 회로(860)는 제 2 서브 회로(830)에 포함된 제 1 비교 연산부(833)의 학습 요청 신호를 학습 회로(840)에 전송할 수 있다. 또한, 뉴런 회로(860)는 학습 요청 신호와 함께, 뉴런 회로(860)의 식별 정보를 학습 회로(840)에게 전송할 수 있다. 이에 따라, 학습 회로(840)는 학습 요청 신호를 전송한 뉴런 회로(860)를 뉴런 회로(860)의 식별 정보에 기초하여 식별할 수 있다.
학습 회로(840)가 뉴런 회로(860)로부터 학습 요청 신호를 수신함에 따라, 강화 학습 프로세서(842) 및 약화 학습 프로세서(843) 각각은 뉴런 회로(860)의 시냅스 가중치 메모리(810)에 접근하여, 강화 학습 동작 및 약화 학습 동작을 수행할 수 있다.
도 9는 일 실시 예에 따른 복수의 뉴런 회로들에 대한 시냅스 가중치 학습 시스템을 도시한 도면이다.
복수의 뉴런 회로들 각각에는 도 8의 뉴런 회로에 대한 실시 예가 적용될 수 있고, 학습 회로에는 도 8의 학습 회로에 대한 실시 예가 적용될 수 있다.
학습 회로(940)는 복수의 뉴런 회로들(910, 920)에 대하여 시냅스 가중치 학습 동작을 수행할 수 있다. 또한, 복수의 뉴런 회로들(910, 920) 각각은 식별 정보를 통하여 상호간 식별될 수 있다.
복수의 뉴런 회로들(910, 920)과 학습 회로(940)는 버스(BUS)(970)를 통하여 상호간 통신할 수 있다. 학습 회로(940)는 버스(970)를 통하여 복수의 뉴런 회로들(910, 920) 각각으로부터 학습 요청 신호를 수신할 수 있다. 뉴런 회로들(910, 920)로부터 학습 요청 신호 및 뉴런 회로의 식별 정보를 수신함에 따라, 학습 회로(940)는 식별 정보를 이용하여 식별 정보에 대응하는 뉴런 회로와 정보를 송수신할 수 있다. 이에 따라, 학습 회로(940)는 버스를 통해 식별 정보에 대응하는 뉴런 회로의 시냅스 가중치 학습 동작을 수행할 수 있다.
도 10은 계층적 뉴런 회로 집단의 학습 시스템을 도시한 도면이다.
뉴런 회로 집단(population)의 학습 시스템은 복수의 계층 집단을 포함할 수 있다. 계층 집단 각각은 복수의 뉴런 회로들 및 학습 회로를 포함할 수 있다.
일 계층 집단의 뉴런 회로들 각각으로부터 출력된 스파이크 신호는 다음 계층 집단에 입력 신호로 인가될 수 있다.
예를 들어, N-1 계층 집단의 뉴런 회로(뉴런 회로 N-1_1, 뉴런 회로 N-1_2, ..., 뉴런 회로 N-1_A) 각각으로부터 출력된 스파이크 신호(스파이크 신호 N-1_1, 스파이크 신호 N-1_2, ..., 스파이크 신호 N-1_A)는 N 계층 집단의 입력 신호(입력 신호 N)로 인가될 수 있다.
마찬가지로, N 계층 집단의 뉴런 회로(뉴런 회로 N_1, 뉴런 회로 N_2, ..., 뉴런 회로 N_A) 각각으로부터 출력된 스파이크 신호(스파이크 신호 N_1, 스파이크 신호 N_2, ..., 스파이크 신호 N_A)는 N+1 계층 집단의 입력 신호(입력 신호 N+1)로 인가될 수 있다.
또한, 각각의 계층 집단의 학습 회로는 해당 계층 집단의 복수의 뉴런 회로들에 대하여 시냅스 학습 동작을 수행할 수 있다. 예를 들어, 학습 회로 N-1, 학습 회로 N 및 학습 회로 N+1 각각은 N-1 계층 집단, N 계층 집단 및 N+1 계층 집단 각각에 속한 뉴런회로들의 시냅스 학습 동작을 수행할 수 있다. 도 10의 복수의 뉴런 회로들 각각 학습 회로들 각각에는 도 8 및 도9의 뉴런 회로 및 학습 회로에 대한 실시 예가 적용될 수 있다.
도 11은 일 실시 예에 따른 뉴런 회로에 의해 수행되는 시냅스 가중치 학습 방법의 흐름도이다.
단계 1110에서, 뉴런 회로는 시냅스 전 뉴런 회로로부터 입력 신호를 수신하고, 수신된 입력 신호가, 수신된 입력 신호의 시냅스 가중치 값이 활성 값인 활성화 신호인지 여부를 판단할 수 있다.
뉴런 회로는 복수의 시냅스 가중치 값들을 저장할 수 있다. 예를 들어, 뉴런 회로는 복수의 시냅스 전 뉴런 회로들 각각에 대응하는 시냅스 가중치 값을 저장할 수 있다. 예를 들어, 시냅스 가중치 값은 1 비트의 정보일 수 있다. 시냅스 가중치 값은 활성 값 또는 비활 성 값의 이진 값을 가질 수 있다. 예를 들어, 활성 값은 1이고 비활성 값은 0일 수 있으나 이에 제한되지 아니한다. 이 때, 시냅스 가중치 값이 활성 값인 시냅스는 활성화 시냅스라 정의하고, 비활성 값인 시냅스는 비활성화 시냅스라 정의하도록 한다.
뉴런 회로는 입력 신호를 수신할 수 있다. 입력 신호는 뉴런 회로의 시냅스 전 뉴런 회로로부터 출력된 신호일 수 있다. 예를 들어, 입력 신호는 시냅스 전 뉴런 회로로부터 출력된 스파이크 신호일 수 있다. 또한, 입력 신호는 복수의 시냅스 전 뉴런 회로들로부터 출력된 신호일 수 있다. 예를 들어, 입력 신호는 복수의 시냅스 전 뉴런 회로들 중 적어도 일부로부터 출력된 스파이크 신호가 선택적으로 또는 조합적으로 입력된 신호일 수 있다.
예를 들어, 입력 신호는 스파이크 신호를 출력한 시냅스 전 뉴런 회로를 식별할 수 있는 정보를 포함할 수 있다. 다른 일 예로서, 입력 신호는 시냅스 전 뉴런 회로가 스파이크 신호를 출력했음을 나타내는 정보 및/또는 시냅스 전 뉴런 회로의 식별 정보를 포함할 수 있다. 예를 들어, 입력 신호에 포함된 식별 정보는 시냅스 전 뉴런 회로 고유의 식별 정보를 포함할 수 있다. 또한, 입력 신호에 포함된 식별 정보는 시냅스 전 뉴런 회로의 시냅스 가중치 값이 저장된 메모리의 셀 주소 정보를 포함할 수 있다.
뉴런 회로는 입력 신호가, 입력 신호에 대응하는 시냅스 가중치 값이 활성 값인 활성화 입력 신호인지 여부를 판단할 수 있다. 예를 들어, 뉴런 회로는 입력 신호에 대응하는 시냅스 가중치 값을 획득할 수 있다. 획득된 시냅스 가중치 값이 활성 값인 경우, 뉴런 회로는 입력 신호를 활성화 신호라고 판단할 수 있다. 획득된 시냅스 가중치 값이 비활성 값인 경우 뉴런 회로는 입력 신호가 활성화 신호가 아니라고 판단할 수 있다.
단계 1120에서, 입력 신호가 활성화 신호라고 판단함에 따라, 뉴런 회로는 활성화 입력 신호의 제 1 누적 수신 횟수와 학습 임계 값간의 비교 연산을 수행할 수 있다.
뉴런 회로는 제 1 누적 수신 횟수가 학습 임계 값에 이르렀다고 판단함에 따라 제 1 누적 수신 횟수를 리셋할 수 있다.
예를 들어, 뉴런 회로는 제 1 누적 수신 횟수가 학습 임계 값에 이르렀다고 판단함에 따라, 학습 임계 값을 증가 시킬 수 있다. 일 실시 예에 따른, 학습 임계 값은 학습 임계 값의 상한 값이 있을 수 있다. 뉴런 회로는 학습 임계 값이 학습 임계 값의 상한 값과 같은 경우 학습 임계 값을 학습 임계 값의 상한 값으로 유지할 수 있다. 다른 일 예로서, 학습 임계 값은 고정된 값일 수 있다.
단계 1130에서, 뉴런 회로는 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우, 제 1 확률에 따라, 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행할 수 있다.
예를 들어, 제 1 누적 수신 횟수가 학습 임계 값에 이르렀다고 판단함에 따라, 뉴런 회로는 시냅스 가중치 값을 조정하는 강화 학습을 수행할 수 있다.
뉴런 회로는 기 수신된 입력 신호에 대응하는 시냅스 가중치 값을 확률적으로 활성 값으로 설정하는 강화 학습을 수행할 수 있다.
뉴런 회로는 입력 신호를 수신하는 입력 이벤트가 발생한 경우, 입력 이벤트에 대한 정보를 획득할 수 있다. 뉴런 회로는 복수의 입력 이벤트들에 대한 정보를 저장할 수 있다. 또한, 뉴런 회로는 복수의 입력 이벤트들 중 적어도 일부의 입력 이벤트에 대응하는 시냅스 가중치 값을 활성 값으로 설정하는 시냅스 강화의 수행 여부를 확률적으로 결정할 수 있다. 이 때, 뉴런 회로는 강화 학습 수행 대상인 적어도 일부의 입력 이벤트 각각에 대하여 시냅스 강화의 수행 여부를 독립적으로 결정할 수 있다.
입력 이벤트에 대한 정보는 입력 신호에 포함된 시냅스 전 뉴런 회로의 식별 정보를 포함할 수 있다. 상술한 바와 같이, 시냅스 전 뉴런 회로의 식별 정보는 시냅스 전 뉴런 회로에 대응하는 시냅스 가중치 값이 저장된 주소 정보 등 시냅스 정보를 포함할 수 있으나 이에 제한되지 아니한다.
뉴런 회로는 기 저장된 복수의 입력 이벤트들 중 미리 결정된 개수의 입력 이벤트에 대하여 강화 학습을 수행할 수 있다. 이 때, 뉴런 회로는 기 저장된 복수의 입력 이벤트들 중 저장된 순서의 역순으로 미리 결정된 개수의 입력 이벤트에 대하여 강화 학습을 수행할 수 있다. 기 저장된 복수의 입력 이벤트들의 개수가 미리 결정된 개수보다 적은 경우, 뉴런 회로는 기 저장된 복수의 입력 이벤트들 모두에 대하여 강화 학습을 수행할 수 있다.
시냅스 강화 학률인 제 1 확률은 미리 결정될 수 있다. 예를 들어, 제 1 확률은 상수일 수 있으나 이에 제한되지 아니한다.
뉴런 회로는 랜덤 상수를 획득하고, 획득된 랜덤 상수와 제 1 확률에 기초하여 결정된 강화 학습 기준 상수를 비교하여 시냅스 강화의 수행 여부를 결정할 수 있다. 예를 들어, 뉴런 회로는 랜덤 상수가 랜덤 상수의 상한 값에 제 1 확률을 곱하여 산출된 강화 학습 기준 상수보다 작은 경우 시냅스 강화를 수행할 수 있다. 이 때, 랜덤 상수는 양수일 수 있고, 소정의 범위의 양수 중 랜덤으로 결정된 수이다.
다른 일 예로서, 뉴런 회로는 랜덤 상수가 강화 학습 기준 상수보다 작은 경우 시냅스 강화를 수행할 수 있다.
단계 1140에서, 뉴런 회로는 복수의 시냅스 가중치 값들 각각을, 제 2 확률에 따라, 비활성 값으로 설정하는 약화 학습을 수행할 수 있다.
뉴런 회로는 시냅스 가중치 값을 확률적으로 비활성 값으로 설정하는 약화 학습을 수행할 수 있다. 예를 들어, 뉴런 회로는 복수의 시냅스 가중치 값들 각각을 비활성 값으로 설정하는 시냅스 약화의 수행 여부를 확률적으로 결정할 수 있다. 이때, 뉴런 회로는 복수의 시냅스 가중치 값들 각각에 대하여 시냅스 약화의 수행 여부를 독립적으로 결정할 수 있다.
뉴런 회로는 강화 학습을 수행한 후에 약화 학습을 수행할 수 있다. 뉴런 회로는 복수의 시냅스들 중 적어도 일부에 대하여 약화 학습을 수행할 수 있다. 예를 들어, 뉴런 회로는 복수의 시냅스들 모두에 대하여 약화 학습을 수행할 수 있다. 다른 일 예로서, 뉴런 회로는 복수의 시냅스들 중 강화 학습이 수행되지 않은 시냅스에 대하여 약화 학습을 수행할 수 있다.
예를 들어, 뉴런 회로는 복수의 시냅스들의 가중치 값들 각각을 비활성 값으로 설정하는 시냅스 약화의 수행 여부를 확률적으로 결정할 수 있다.
뉴런 회로는 시냅스 약화 확률인 제 2 확률을 복수의 시냅스 가중치 값들에 기초하여 결정할 수 있다. 예를 들어, 제 2 확률은 복수의 시냅스들 중 시냅스 가중치 값이 활성 값인 활성화 시냅스의 개수에 기초하여 결정될 수 있다. 예를 들어, 제 2 확률은 활성화 시냅스 개수에 대한 미리 결정된 적정 활성화 시냅스의 개수와 활성화 시냅스의 개수간 차이의 비율일 수 있다.
뉴런 회로는 랜덤 상수를 획득하고, 획득된 랜덤 상수와 제 2 확률에 기초하여 결정된 약화 학습 기준 상수를 비교하여 시냅스 약화의 수행 여부를 결정할 수 있다. 예를 들어, 뉴런 회로는 랜덤 상수가 랜덤 상수의 상한 값에 제 2 확률을 곱하여 산출된 약화 학습 기준 상수보다 작은 경우 시냅스 약화를 수행할 수 있다. 즉, 랜덤 상수가 약화 학습 기준 상수보다 작은 경우, 뉴런 회로는 시냅스의 가중치 값을 비활성 값으로 설정할 수 있다.
다른 일 예로서, 뉴런 회로는 랜덤 상수가 약화 기준 상수보다 큰 경우 시냅스 약화를 수행할 수 있다.
입력 신호가 활성화 신호라고 판단함에 따라, 뉴런 회로는 활성화 입력 신호의 제 2 누적 수신 횟수와 발화 임계 값간의 비교 연산을 수행할 수 있다. 또한, 뉴런 회로는 제 2 누적 수신 횟수가 발화 임계 값에 이른 경우, 스파이크 신호를 출력할 수 있다. 예를 들어, 뉴런 회로는 시냅스 후(post-synaptic) 뉴런 회로에게 스파이크 신호를 전송할 수 있다.
뉴런 회로는 제 2 누적 수신 횟수가 발화 임계 값에 이르렀다고 판단함에 따라 제 2 누적 수신 횟수를 리셋할 수 있다.
예를 들어, 발화 임계 값은 고정된 값일 수 있다. 다른 일 예로서, 뉴런 회로는 제 2 누적 수신 횟수가 발화 임계 값에 이르렀다고 판단함에 따라, 발화 임계 값을 증가 시킬 수 있다. 또한, 발화 임계 값은 발화 임계 값의 상한 값이 있을 수 있다. 뉴런 회로는 발화 임계 값이 발화 임계 값의 상한 값과 같은 경우 발화 임계 값을 발화 임계 값의 상한 값으로 유지할 수 있다.
도 12는 뉴런 회로를 구현하기 위한 뉴런 블록의 스킴을 도시한 도면이다.
뉴런 블록은 고유의 뉴런 주소 정보를 가질 수 있다. 예를 들어 뉴런 주소 신호 Neuron_addr는 각각의 해당 뉴런 블록의 식별 주소 정보를 포함할 수 있다. 해당 뉴런 블록과 정보를 송수신하기 위해 외부로부터 인가되는 STDP 활성 뉴런 주소 신호 STDP_active_addr 값이 해당 뉴런 주소 정보 신호 Neuron_addr 값과 일치하는 경우에, 해당 뉴런 블록에 대한 STDP 학습 프로세스가 활성화 된다.
뉴런 블록은 입력 신호 AERin_v 입력 받을 수 있다. AERin_v는 시냅스 전 회로로부터 인가된 스파이크 신호를 나타낼 수 있다.
또한, 뉴런 블록은 입력 신호 AERin을 입력 받을 수 있다. 입력 신호 AERin은 수신된 입력 신호 AErin_v을 출력한 시냅스 전 회로에 대응하는 시냅스에 관한 정보를 포함할 수 있다. 예를 들어, AERin은 뉴런 블록에 입력 신호를 인가하는 복수의 입력단들 중 해당 입력 신호를 수신하는 입력단의 주소 정보를 나타낼 수 있다. 또는, AERin은 뉴런 블록에 입력 신호를 인가하는 시냅스 전 회로의 주소 정보를 나타낼 수 있다. 또는, AERin 신호는 대응하는 시냅스 가중치 값을 저장하는 시냅스 가중치 메모리(Synaptic Weight Memory) 셀의 주소 정보를 포함할 수 있다.
또한, 뉴런 활성 신호 Neuron_active는 뉴런 블록이 입력 신호를 처리할 수 있는 정상 상태임을 나타낼 수 있다. 예를 들어, 뉴런 활성 신호 Neuron_active의 값이 0인 경우 뉴런 블록이 시냅스 전 회로로부터 입력을 수신하여도 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)로 입력되는 카운팅 트리거 신호 Count-up1 값이 토글 되지 않아, 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)의 출력 카운팅 값이 증가하지 않을 수 있다.
뉴런 활성 신호 Neuron_active의 값이 1인 경우, 활성 값, 예를 들어, 1을 가지는 입력 신호 AERin_v가 입력됨에 따라, 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)의 출력 카운팅 값이 증가할 수 있다. 예를 들어, 활성 값을 가지는 입력 신호 AERin_v가 입력됨에 따라 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)로 입력되는 카운팅 트리거 신호 Count-up1 값이 1로 토글 될 수 있고, 이에 따라, 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)의 출력 카운팅 값이 증가할 수 있다.
이 때, 카운팅 트리거 신호 Count-up1 값이 1로 토글되기 위해서 입력 신호 AERin_v에 대응하는 시냅스 가중치 값이 고려될 수 있다. 예를 들어, 뉴런 블록은 입력 신호 AERin_v에 대응하는 AERin 신호에 포함된 시냅스 주소 신호 rd_addr에 기초하여, 시냅스 가중치 메모리로부터 대응하는 시냅스 가중치 값 syn_weight 을 획득할 수 있다. 시냅스 주소 신호 rd_addr은 입력 신호 AERin_v의 처리를 위해, 뉴런 블록 내부에서 사용되는 시냅스 가중치 값 syn_weight을 획득하기 위해 이용되며, 후술하는 STDP 학습 블록과의 정보 송수신에 이용되는 STDP 요청 시냅스 주소 신호 STDP_RD_addr과 구별될 수 있다.
입력 신호 AERin_v 및 AERin_v에 따라 획득된 시냅스 가중치 값 syn_weight가 1인 경우에만 카운트 트리거 신호(제 1 카운트 트리거 신호) Count_up1 값이 1로 토글될 수 있다. 이는 해당 입력을 전달하는 시냅스가 활성 상태임을 나타낸다.
한편, 뉴런 블록은 시냅스 가중치 메모리(Synaptic Weight Memory)를 포함한다. 예를 들어, 시냅틱 가중치 메모리는 1024 bit의 용량을 가지며, 따라서 최대 1024개의 시냅스들에 대응하는 시냅스 가중치 값들을 저장할 수 있다. 예를 들어, 시냅스 가중치 메모리 셀 각각에 저장된 시냅스 가중치 값은 활성 값 또는 비활성 값 중 하나의 값을 가질 수 있다. 예를 들어, 시냅스 가중치 값의 활성 값은 1이며, 비활성 값은 0일 수 있다. 이 때, 시냅스 가중치 메모리(Synaptic Weight Memory) 내에 저장된 모든 시냅스 가중치의 초기 값들은 1로 설정될 수 있다.
발화 카운터(Firing Counter)는 입력 신호로서, 카운팅 트리거 신호 Count-up1, 카운팅 값을 초기화 하는 리셋 신호 reset를 수신할 수 있다. 리셋 신호 reset는 스파이크 신호 Spike_out가 출력된 경우 또는 외부로부터 초기화를 명령하는 신호 inh_event를 수신한 경우 발화 카운터(Firing Counter)의 카운팅 값을 리셋시키는 값을 가질 수 있다.
발화 카운터(Firing Counter)의 카운팅 값 count2는 뉴런의 발화 여부를 결정하는 기준이 된다. 예를 들어, 발화 카운터(Firing Counter)의 카운팅 값 count2이 미리 결정된 발화 임계 값 spike_threshold에 이른 경우 뉴런이 발화될 수 있다. 이 때, 발화 임계 값 spike_threshold는 미리 결정된 고정 값일 수 있다. 다른 일 예로서 발화 임계 값 spike_threshold는 발화 카운터(Firing Counter)의 카운팅 값 count2가 spike_threshold 값에 이를 때마다 증가할 수 있다. 이 때, 발화 임계 값 spike_threshold이 증가하는 경우에도 상한 값이 없거나 소정의 상한 값이 있을 수 있다.
예를 들어, 발화 카운터(Firing Counter)의 카운팅 값 count2와 발화 임계 값 spike-threshold간의 비교 연산이 수행될 수 있다. 발화 카운터(Firing Counter)의 카운팅 값 count2이 발화 임계 값 spike-threshold 이상인 경우 스파이크 신호 Spike_out 값이 1을 가진다. 스파이크 신호 Spike_out 값이 1을 가지는 것은 뉴런 블록이 스파이크 신호를 출력함을 나타낸다. 예를 들어, 출력된 스파이크 Spike_out 신호는 상위 계층의 뉴런 블록에 전송될 수 있다. 예를 들어, 계층적 뉴런 시스템에서, 현재 뉴런 블록에서 출력된 스파이크 신호 Spike_out는 현재 뉴런 블록을 시냅스 전 뉴런으로 하는 상위 계층의 뉴런 블록에 전송되어, 상위 계층의 뉴런 블록의 발화 여부 또는 학습 수행 여부에 이용될 수 있다.
또한, 뉴런 모듈은 STDP 학습 모듈에 학습을 요청하는 학습 요청 모듈을 포함할 수 있다. 예를 들어, 뉴런 블록은 학습 요청 여부를 결정하는 학습 카운터(Learning Counter)와 STDP 임계 값 카운터(STDP_threshold Counter)를 포함할 수 있다. 상위 계층의 뉴런 블록의 발화 여부 또는 학습 요청 여부에 이용되는 발화 카운터(Firing Counter)와 학습 카운터(Learning Counter)가 구별됨에 따라, 현재 뉴런 블록의 학습 속도를 점차 감소 시킴으로 인해, 상위 계층의 뉴런 블록의 학습 속도가 저하되는 것을 방지할 수 있다.
학습 카운터는 발화 카운터와 마찬가지로 제 1 카운트 트리거 신호 count-up1이 1로 토글 될 때 카운팅 값을 증가시킬 수 있다.
학습 카운터(Learning Counter)의 카운팅 값 count1이 미리 결정된 학습 임계 값에 이른 경우 뉴런 블록은 학습을 요청하는 학습 요청 신호 STDP_req를 출력할 수 있다. 예를 들어, 하기 설명하는 학습 임계 값을 출력하는 STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값 count3과 학습 카운터(Learning Counter)의 카운팅 값 count1간의 비교 연산이 수행될 수 있다. 비교 연산 결과 학습 카운터(Learning Counter)의 카운팅 값 count1이 STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값 count3 이상인 경우, 1 값을 가지는 학습 요청 STDP_req 신호가 출력될 수 있다. 예를 들어, STDP_req 값이 1임은 학습을 요청하는 것을 나타낸다.
학습 카운터(Learning Counter)는 reset 신호를 수신할 수 있다. 예를 들어, STDP 학습이 활성화 또는 수행되었는지를 나타내는 신호들 STDP_activate, STDP_event 및 해당 뉴런 블록이 STDP 학습 요청하였는지를 나타내는 STDP_req 신호에 기초하여 reset 신호 값이 결정될 수 있다. 예를 들어, 학습 카운터(Learning Counter)의 카운팅 값 count1이 STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값 count3에 이르러, 학습 요청을 나타내는 STDP_req 신호 값이 1이 됨에 따라 학습 카운터(Learning Counter)는 reset되어 카운팅 값 count1이 초기 값, 예를 들어, 0으로 리셋될 수 있다.
학습 임계 값은 증가할 수 있다. 예를 들어, 학습 임계 값은 STDP 임계 값 카운터(STDP_threshold Counter)에서 출력된 카운팅 값 count3일 수 있다.
STDP 임계 값 카운터(STDP_threshold Counter)는 입력으로 초기화 신호 initializ를 획득할 수 있다. 예를 들어, 초기화 신호 initialize는 미리 결정된 초기 학습 임계 값 STDP_threshold_init일 수 있다. STDP 임계 값 카운터(STDP_threshold Counter)는 초기화 신호 initialize를 수신함에 따라, 카운팅 값 count으로 초기 학습 임계 값 STDP_threshold_init을 출력할 수 있다.
또한, STDP 임계 값 카운터(STDP_threshold Counter)는 제 2 카운트 트리거 신호 count_up2를 입력 받을 수 있다. STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값 count3은 제 2 카운트 트리거 신호 count_up2가 1로 토글됨에 따라 증가할 수 있다.
제 2 카운트 트리거 신호는 STDP 블록에 학습을 요청하기 위한 신호인 학습 요청 신호 STDP_req에 기초하여 결정될 수 있다. 학습 요청 신호 STDP_req가 1로 토글 됨에 따라, STDP_req신호와 동일한 값을 가지는 Count_up2 신호가 그대로 1로 토글 되고, STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값 count3이 증가할 수 있다.
STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값 count3이 증가하는 것은 학습이 진행됨에 따라 해당 뉴런의 학습 속도가 점차 감소함을 의미할 수 있다. 이는, 특정 뉴런에게 과도한 특징(feature)의 학습이 집중되는 것을 막고, 뉴런들간 경쟁이 발생하도록 하는 효과를 가져온다. 다른 예시로서, 학습 임계 값은 미리 결정된 고정 값일 수 있다. 상술한 바와 같이 상위 계층의 뉴런 블록의 학습에 이용되는 스파이크 신호 spike_out의 출력 기준이 되는 발화 카운터(Firing Counter)가 별도로 존재하기 때문에, 상위 계층의 뉴런 블록의 학습 속도는, 현재 블록의 학습 임계 값이 증가함에 따라 발생하는 현재 뉴런 블록의 학습 속도 저하로부터 직접적으로 영향을 받지 않는다.
또한, 뉴런 블록은 누출 프로세스(leak process)를 수행할 수 있다.
누출 이벤트 신호 Leak_event는 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)에 입력될 수 있다. 누출 이벤트 신호 Leak_event는 시간에 따른 뉴런의 상태 변화를 구현하기 위한 것이다. 예를 들어, 발화 카운터(Firing Counter) 및 학습 카운터(Learning Counter)의 카운팅 값 count1, count2는 누출 이벤트 신호 Leak_event에 따라 미리 결정된 시간마다 감소할 수 있다.
마찬가지로, 임계 값 누출 이벤트 신호 TH_Leak_event가 입력됨에 따라, STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값이 미리 결정된 시간마다 감소할 수 있다.
이 때, 임계값 누출 이벤트 신호 TH_Leak_event로 인한 STDP 임계 값 카운터(STDP_threshold Counter)의 카운팅 값의 감소 속도는 누출 이벤트 신호 Leak_event로 인한 카운터(Firing Counter) 및 학습 카운터(Learning Counter)의 카운팅 값의 감소 속도보다 느릴 수 있다.
상술한 바와 같이 STDP_active_addr 신호, STDP_RD_addr 신호, STDP_WR_en 신호, STDP_WR_data 신호는, STDP 학습 블록으로부터 수신된 입력 신호이다.
예를 들어, 상술한 입력 신호들은, STDP 학습 블록이 해당 뉴런 블록 내에 시냅스 가중치 메모리(Synaptic Weight Memory)에 접근하여, 가중치 값 읽거나 변경하기 위해 이용될 수 있다.
STDP 활성 뉴런 주소 신호 STDP_active_addr는 STDP 학습 블록으로부터 수신된 입력 신호로서, STDP 학습 대상 뉴런의 주소 정보를 포함한다. STDP 활성 뉴런 주소 신호 STDP_active_addr의 값과 해당 뉴런 블록의 고유 주소 정보를 포함하는 뉴런 주소 정보 신호 Neuron_addr의 값간의 비교 연산을 통해 두 신호의 값이 동일한 경우, STDP 학습 블록이 해당 뉴런 블록 내에 시냅스 가중치 메모리에 접근하기 위한 전제 조건이 충족될 수 있다.
STDP 학습 블록은 학습 프로세스를 수행하기 위하여, 시냅스 가중치 메모리에 저장된 복수의 가중치 값들 각각에 접근할 필요가 있다. 이 때, STDP 요청 시냅스 주소 신호 STDP_RD_addr는, STDP 학습 블록이 특정 셀에 저장된 시냅스 가중치 값을 읽거나 변경하기 위해, 해당 셀에 접근하기 위한 셀 주소 정보를 나타낸다. 용어 시냅스 주소 정보는 셀 주소 정보를 포함한다.
시냅스 가중치 메모리는 STDP_RD_addr은 STDP 학습 블록으로부터 수신될 수 있다. 쓰기 인에이블 신호 STDP_WR_en가 비활성 값, 예를 들어, 0을 갖는 경우 시냅스 가중치 메모리는 STDP 요청 시냅스 주소 신호 STDP_RD_addr 값에 대응하는 셀에 저장된 시냅스의 가중치 값이 STDP_RD_data로 출력된다. 출력된 시냅스 가중치 값은 STDP 읽기 신호 STDP_RD_data를 통해 STDP 학습 블록에 전송되어 학습에 이용된다.
시냅스 가중치 메모리에 입력되는 STDP_WR_addr은 쓰기용 시냅스 주소 신호이며 STDP 요청 시냅스 주소 신호 STDP_RD_addr에 기초하여 결정된다. 이 때, 쓰기용 시냅스 주소 신호 STDP_WR_addr는, 시냅스 가중치 메모리에 쓰기 기능을 활성화 하기 위하여 STDP 학습 블록으로부터 수신된 STDP 쓰기 인에이블 신호 STDP_WR_en가 1인 경우에만 유효한 주소 값을 갖는다.
쓰기 인에이블 신호 STDP_WR_en가 활성 값을 갖는 경우 쓰기용 시냅스 주소 신호 STDP_WR_addr 값에 대응하는 셀에 저장된 시냅스의 가중치 값이 입력된 STDP 쓰기 신호 STDP_WR_data 값으로 설정(변경)된다.
상술한 읽기 및 쓰기 프로세스를 이용하여, STDP 학습 블록은 학습 대상인 뉴런 블록에 접근할 수 있고, 학습 대상인 뉴런 블록 내에 특정 시냅스 가중치 메모리(Synaptic Weight Memory)에 접근하여 시냅스 가중치 값을 읽거나, 시냅스 가중치 값을 설정할 수 있다.
도 13은 일 실시 예에 따른 학습 회로를 구현하기 위한 STDP 학습 블록 스킴을 도시한 도면이다.
도 13을 참고하면, STDP 학습 블록은 입력 이벤트를 저장하는 원형 버퍼(Circular Buffer)를 포함할 수 있다.
또한, STDP 학습 블록은 STDP 학습 블록은 장기 강화 학습을 수행하는 강화 학습 프로세서(LTP Processor), 약화 학습을 수행하는 약화 학습 프로세서(LTD Processor)를 포함할 수 있다.
또한, STDP 학습 블록은 STDP 학습의 요청에 따른 학습 프로세스의 개시, 강화 학습의 개시 및 종료, 약화 학습의 개시 및 종료를 관리 하는 메인 프로세서(Main Processor)를 포함할 수 있다.
복수의 뉴런 블록들 중 적어도 하나의 뉴런 블록이 학습 요청 신호를 송신함에 따라, STDP 학습 블록은 활성 값을 갖는 학습 요청 수신 신호 STDP_addr_v를 수신할 수 있다. 또한, 학습을 요청한 뉴런 블록의 주소를 나타내는 학습 요청 뉴런 주소 신호 STDP_req_addr를 수신할 수 있다. 예를 들어, 학습 요청 뉴런 주소 신호 STDP_req_addr는 8 비트 신호로서 최대 256 개의 뉴런 블록을 식별할 수 있다. 즉, 하나의 STDP 학습 블록이 256 개의 뉴런 블록에 대한 학습 프로세스를 수행할 수 있다.
학습 요청 수신 신호 STDP_addr_v가 활성 값을 갖고, 하기에 상술하는 바와 같이 메인 프로세서(Main Processor)로부터 학습 프로세서를 개시하기 위한 준비가 완료 되었음을 나타내는 준비 완료 신호 core_rdy 신호를 수신함에 따라, 학습 대상 뉴런 블록에 접근하기 위한 출력 신호로서, 학습 대상 뉴런 블록의 주소 정보를 나타내는 STDP 활성 뉴런 주소 신호 STDP_active_addr가 학습 요청 뉴런 주소 신호 STDP_req_addr에 대응하는 값을 가질 수 있다.
이후 STDP 학습 블록은 STDP 활성 뉴런 주소 신호 STDP_active_addr에 대응하는 뉴런 블록에 접근할 수 있고, 해당 뉴런 블록에 대한 학습 프로세스를 수행한다.
학습 프로세스를 개시함에 따라, 메인 프로세서(Main Processor)는 강화학습 프로세서(LTP Processor)에 강화 학습 개시 신호 start를 인가할 수 있다. 이후 강화 학습 프로세서(LTP Processor)는 강화 학습을 수행하고 강화 학습이 완료되면 강화 학습 완료 신호 end를 메인 프로세서(Main Processor)에게 인가할 수 있다.
강화 학습 프로세서(LTP Processor)로부터 강화 학습 완료 신호 end를 수신한 메인 프로세서(Main Processor)는 순차적으로 약화 학습 프로세서(LTD Processor)에게 약화 학습 개시 신호 start를 인가할 수 있다. 이후 약화 학습 프로세서(LTD Processor)는 약화 학습을 수행하고 약화 학습이 완료되면 약화 학습 완료 신호 end를 메인 프로세서(Main Processor)에게 인가할 수 있다.
메인 프로세서는 약화 학습 완료 신호를 수신함에 따라, 해당 뉴런 블록에 대한 학습을 완료할 수 있다.
강화 학습 프로세서(LTP Processor)가 강화 학습을 수행하는 동안, 메인 프로세서(Main Processor)는, 강화 학습과 관련된 출력 값 및 약화 학습과 관련된 출력 값 중 강화 학습과 관련된 출력 값이 선택적으로 학습 대상 뉴런 블록에 전송되도록 할 수 있다. 예를 들어, 강화 학습과 관련된 출력 값 및 약화 학습과 관련된 출력 값들을 선택적으로 출력하는 멀티플렉서(LTP/LTD)가 강화 학습과 관련된 출력 값을 출력하도록 하기 위해, 활성 값을 가지는 강화 학습 활성 신호 LTP_active를 출력하여, 멀티플렉서(LTP/LTD)에 인가할 수 있다. 예를 들어, 강화 학습 활성 신호 LTP_active가 활성 값인 경우 멀티플렉서(LTP/LTD)가 강화 학습과 관련된 출력 값을 출력하고, 비활성 값인 경우 약화 학습과 관련된 출력 값을 출력한다.
메인 프로세서로부터 강화 학습 개시 신호 start를 수신함에 따라 강화 학습 프로세서는 강화 학습을 개시한다.
강화 학습은 입력 이벤트 정보를 저장하는 원형 버퍼에 저장된 데이터에 기초하여 수행된다. 프리 이벤트 정보는 예를 들어 학습 대상 블록에 인가되는 입력 신호들에 대응하는 시냅스 주소 정보, 또는 입력 단자 주소 정보를 나타낼 수 있다.
원형 버퍼는 학습 대상 뉴런을 포함하는 적어도 하나의 뉴런 블록에 인가되는 입력 신호 AERin_v를 수신할 때마다 대응하는 시냅스 주소 정보를 포함하는 AERin 신호를 순차적으로 저장한다. 원형 버퍼는 총 1024x10 bit의 용량을 가질 수 있다. 즉, 원형 버퍼는 최근 발생한 1024 개의 입력 신호에 대응하는 10 bit의 시냅스 주소 정보를 저장할 수 있다. 이 때, 시냅스 주소 정보 뉴런 블록에 입력 신호를 전송하는 복수의 입력 신호 단자를 식별할 수 있는 주소일 수 있다. 또는 시냅스 주소 정보는 입력 신호인 스파이크 신호를 전송한 시냅스 전 뉴런 블록의 주소 정보일 수 있다. 입력 단자의 주소 정보 또는 시냅스 전 뉴런 블록의 주소 정보와 입력 신호를 입력 받는 대상 뉴런 블록의 주소 정보의 조합은 시냅스 주소 정보를 나타낼 수 있다. AERin_v로서 활성 값이 수신 됨에 따라, 원형 버퍼에 인가되는 원형 버퍼 쓰기 인에이블 신호 wr_en는 활성 값을 가질 수 있다.
강화 학습 프로세서는 원형 버퍼에 저장된 시냅스 주소 정보들 중 최근에 저장된 시냅스 주소 정보에 대응하는 시냅스 가중치 값을 미리 결정된 강화 확률 결정 인자 LTP probability에 기초하여 활성 값으로 설정할 수 있다.
이 때, 강화 학습 프로세서는 원형 버퍼에 저장된 시냅스 주소 정보들에 대응하는 입력 이벤트들 중 최근에 발생한 미리 결정된 개수의 입력 이벤트들을 이용하여 강화 학습을 수행할 수 있다. 미리 결정된 개수는 입력 값인 강화 학습 개수 number of potentiation일 수 있다. 강화 학습 프로세서는 원형 버퍼에 저장된 각각의 입력 이벤트에 기초하여 강화 학습을 수행할 때마다 강화 학습 카운팅 트리거 신호 cnt_up 값을 인가하여 강화 학습 카운터 카운팅 값을 1씩 증가(LTP_cnt+1) 시킬 수 있다. 증가된 강화 학습 카운팅 값과 강화 학습 개수 number of potentiation간에 비교 연산이 수행되어 동일한 경우, 강화 학습 프로세서는, 완료를 나타내는 값을 가지는, 강화 학습 완료 신호 LTP_done이 수신할 수 있다. 강화 학습 완료 신호 LTP_done는 원형 버퍼로부터 출력되는 원형 버퍼에 저장된 프리 이벤트가 없음을 나타내는 신호 CB_empty에 의해서도 완료를 나타내는 값을 가질 수 있다. 즉, 강화 학습 프로세서는 원형 버퍼가 비워졌거나 강화 학습이 수행된 프리 이벤트의 개수가 강화 학습 개수 number of potentiation에 이르면, 강화 학습을 종료한다.
강화 학습 프로세서는 원형 버퍼 읽기 인에이블 신호 CB_rd_en를 원형 버퍼에 인가할 수 있다. 이에 따라, 원형 버퍼는 현재 순서의 입력 이벤트에 대응하는 시냅스 주소 정보를 원형 버퍼 출력 신호 CB_dout로 출력할 수 있다. 원형 버퍼 출력 신호 CB_dout는, 중간 신호 rd_addr로서, 멀티플렉서(LTP/LTD)를 통해 출력된다.
또한, 강화 학습 프로세서는 강화 학습 쓰기 인에이블 신호 LTP_wr_en을 출력할 수 있다. 강화 학습이 진행 중이므로 LTP_active에 따라, LTP/LTD 멀티플렉서의 출력 신호로서, 강화 학습을 위한 중간 신호 rd_addr 및 강화 학습 쓰기 인에이블 신호 LTP_wr_en 신호가 출력될 수 있다. 멀리 플렉서의 출력 값에 따라, STDP 학습 블록은 STDP 요청 시냅스 주소 신호 STDP_RD_addr로서 중간 신호 rd_addr를 출력하고, 쓰기 인에이블 신호 STDP_WR_en로서 강화 학습 쓰기 인에이블 신호 LTP_wr_en를 출력할 수 있다.
이에 따라, 학습 대상 뉴런 블록으로부터 STDP 요청 시냅스 주소 신호 STDP_RD_addr에 대응하는 시냅스 가중치 메모리 내의 셀에 저장된 시냅스 가중치 값을 STDP_RD_data 신호를 통해 획득할 수 있다. 읽기 프로세스 중에 강화 학습 프로세서는 쓰기 인에이블 신호 STDP_WR_en 값을 비활성 값으로 출력할 수 있다. 다시 말해, 읽기 프로세스 중에 강화 학습 프로세서는 쓰기 인에이블 신호 STDP_WR_en을 비활성화시킬 수 있다.
또한, 랜덤 상수 생성기에 의해 생성된 랜덤 상수와 미리 결정된 강화 확률 결정 인자 LTP probability간의 비교 연산이 수행되어, 생성된 랜덤 상수가 강화 확률 결정 인자 LTP probability 이하인 경우, 시냅스 가중치를 강화할 수 있다. 시냅스 가중치를 강화 한다는 STDP 요청 시냅스 주소 신호 STDP_RD_Addr에 대응하는 시냅스 가중치 값을 1로 설정함을 나타낸다. 즉, STDP 학습 블록은 학습 대상 뉴런에 STDP 쓰기 데이터 신호 STDP_WR_data 값으로서 1을 출력한다. STDP 쓰기 데이터 신호 STDP_WR_data 값은 학습 대상 블록에 전송되고, 학습 대상 블록 대상의 시냅스 가중치 메모리 내에 대응하는 셀에 저장된 시냅스 가중치 값이 1로 설정된다. 쓰기 프로세스를 수행하는 동안, 강화 학습 프로세서는 쓰기 인에이블 신호 LTP_wr_en 로서 1을 출력할 수 있다. 이에 따라, STDP 학습 블록은 STDP 쓰기 인에이블 신호 STDP_WR_en로서 1을 출력할 수 있다.
강화 학습 이후 약화 학습 프로세서는 대상 뉴런 블록에 대해 약화 학습을 수행할 수 있다.
약화 학습 프로세서는 학습 대상 뉴런 블록 내에 시냅스 가중치 메모리에 시냅스 가중치 값을 저장하는 모든 셀들 각각에 대해 순차적으로 약화 학습 프로세스를 수행할 수 있다. 따라서, 약화 학습 프로세서는 시냅스 가중치 메모리 내에 각각의 셀에 순차적으로 접근하기 위해, 셀의 주소 값 결정에 이용되는 rd_counter의 출력 값을 순차적으로 증가시킨다. 이에 따라, 순차적으로 증가되는 rd_counter 출력 값에 따라, STDP 요청 시냅스 주소 신호 STDP_RD_addr 가 순차적으로 변경되어 출력된다. 따라서, STDP 학습 블록은 학습 대상 뉴런의 시냅스 가중치 메모리 내에 모든 셀들 각각에 접근할 수 있다.
우선 STDP 학습 블록은 학습 대상 뉴런 블록 내에 시냅스 가중치 메모리 의 모든 셀들 각각 저장된 시냅스 가중치 값 각각을 순차적으로 입력 받고, 입력된 가중치 값을 합산기 증가 신호 sum_cnt_up에 인가할 수 있다. 따라서, 가중치 합산 카운터(Cnt_Sum of weight)의 출력 값은 시냅스 가중치 메모리에 저장된 시냅스 가중치 값의 총 합일 수 있다.
또한, STDP 학습 블록은 미리 결정된 예측 시냅스 가중치 합 Number of active을 입력 받을 수 있다. 또한, STDP 학습 블록은 예측 시냅스 가중치 합 Number of Active에서 시냅스 가중치 값의 총 합, 즉, 가중치 합산 카운터(Cnt_Sum of weight의 출력 값간의 차이를 산출하고, 산출된 값에 2^10을 곱한 뒤, 이를, 시냅스 가중치 값의 총 합으로 나누어 약화 확률 결정 인자 LTD Probability를 산출할 수 있다.
산출된 약화 확률 결정 인자 LTD Probability를 이용하여, 약화 학습 프로세서는 학습 대상 뉴런 블록 내에 시냅스 가중치 메모리의 모든 셀들 각각에 대하여 확률적 약화 학습을 수행할 수 있다.
약화 학습 프로세서는 시냅스 가중치 메모리의 모든 셀들 각각에 대응하는 주소 정보를 순차적으로 STDP_RD_addr로 출력하여 해당 셀의 시냅스 가중치 값을 획득한 뒤, 산출된 약화 확률 결정 인자 LTD Probability에 기초하여 확률적으로 해당 셀의 시냅스 가중치 값을 0으로 변경할 수 있다. 구체적으로, 랜덤 상수 생성기에 의해 생성된 랜덤 상수와 약화 확률 결정 인자 LTD Probability간의 비교 연산이 수행된다. 만약, 생성된 랜덤 상수가 약화 확률 결정 인자 LTD Probability보다 큰 경우에는 해당 셀의 가중치 갑이 0으로 변경된다.
예를 들어, 생성된 랜덤 상수가 약화 확률 결정 인자 LTD Probability보다 큰 경우, STDP 쓰기 데이터 신호 STDP_WR_data에 0이 인가되어, 현재 STDP 요청 시냅스 주소 신호 STDP_RD_addr에 대응하는 셀의 가중치 값이 0으로 설정할 수 있다. 시냅스 가중치 메모리 내에 모든 셀들 각각에 대하여 상술한 약화 학습이 수행된다. 다만, 랜덤 상수는 셀들 각각에 대하여 별도로 생성된 값이 이용될 수 있으므로, 동일 시냅틱 메모리 내에 셀들간에, 약화 학습 수행 여부가 다를 수 있다.
도 14는 일 실시 예에 따른 복수의 뉴런 회로를 포함하는 단일 코어 회로를 구현하기 위한 단일 코어 블록 스킴을 도시한 도면이다.
도 15는 복수의 단일 코어 블록들을 포함하는 멀티 코어 블록을 도시한 도면이다.
단일 코어 블록은 복수의 뉴런 블록들(Neuron0, Neuron1 Neuron2, ? Neuron255) 및 단일 STDP 학습 블록을 포함할 수 있다. 도 14에는 단일 코어 블록이 255 개의 뉴런 블록을 포함하는 것으로 도시 되어 있으나, 뉴런 블록의 개수는 이에 제한되지 아니한다.
단일 코어 블록은 AER_in 신호를 수신할 수 있다. AER_in 신호는, 예를 들어, 단일 코어 블록에 포함된 적어도 하나의 뉴런 블록의 시냅스 전 뉴런 블록으로부터 수신된 신호일 수 있다. AER_in 신호는 예를 들어, 적어도 하나의 뉴런 블록의 시냅스 전 뉴런 블록으로부터 출력된 스파이크 신호를 나타낼 수 있다.
AER 필터(AER Filter)는 AERin 신호 중 단일 코어 블록 내의 뉴런 블록들과 무관한 신호를 필터링 할 수 있다. AER 필터(AER Filter)는 인공신경망의 아키텍쳐(architecture)에 따라 구현될 수 있다.
필터링된 입력 신호 AERin은 단일 코어 블록에 포함된 복수의 뉴런들 중 적어도 하나의 뉴런 블록에 입력될 수 있다. AERin 신호는, 예를 들어, 도 7의 입력 신호(70)과 동일할 수 있고, 이후 각각의 뉴런 블록에 수행되는 동작은 도 12에서 설명한 내용이 적용될 수 있다.
단일 코어 회로에서 단일 STDP 학습 블록이 복수의 뉴런들 모두의 학습 프로세스를 수행하므로 복수의 뉴런들간의 신호 충돌을 방지하기 위한 방안이 요구된다.
한편, 단일 코어 회로에서 복수의 뉴런들이 공유하는 입력은 공통 인자로서 코어 회로 단에 입력될 수 있다.
예를 들어, 도 12을 참조하여 설명하며, 복수의 블록의 누출 이벤트 발생 속도는 공통될 수 있다. 따라서, STDP 임계 값 카운터에 발생하는 누출 속도를 지정하는 인자 Threshold Leak_rate 및 발화 카운터 및 학습 카운터에 발생하는 누출 속도를 지정하는 인자 Neuron Leak_rate는 공통 인자로 코어 단에서 입력될 수 있다. 또한 누출 이벤트는 다른 프로세스에 비해 느린 속도로 구현될 필요가 있으므로, 코어 회로는 누출 이벤트 수행 여부를 결정하기 위한, 별도의 타이머인 Leak_timer를 포함할 수 있다.
STDP 임계 값 카운터(STDP_threshold Counter)의 초기 임계 값을 나타내는 STDP_threshold_init, 및 발화 임계 값을 나타내는 spike_threshold도 코어 회로에 공통 인자로 입력될 수 있다.
또한, 억제 기작을 활성화 할지 여부를 나타내는 Inhibition_active가 공통 인자로 입력될 수 있다. Inhibition_active가 1 값을 갖는 경우 억제 기작이 활성화 된다. 만약 동일 코어 내에 복수의 뉴런 블록들 중 적어도 하나의 뉴런 블록이 스파이크 신호를 출력하는 경우 억제 기작 신호 inh_event가 1로 복수의 뉴런들 각각에 입력되어, 복수의 뉴런들의 발화 카운터가 모두 리셋될 수 있다.
한편 일반 억제 인자 General_inhibiton는 도 15에서 나타나는 멀티 코어 블록에서 동일 멀티 코어 내에 다른 코어들에 포함된 복수의 뉴런들 중 적어도 하나의 뉴런으로부터 스파이크 신호가 출력된 경우, 현재 코어에 포함된 모든 뉴런들에 대해 억제 기작을 수행되도록 하기 위해 이용된다.
한편 복수의 뉴런들간에 서로 구별되어야 하는 신호들은 복수의 뉴런들 각각으로부터 출력되는 스파이크 신호(spike_out) 및 학습 요청 신호(STDP_req)이다.
스파이크 신호 출력 변환 부(Spike2AER Unit)는 복수의 뉴런들 각각으로부터 수신된 스파이크 신호(spike_out)에 기초하여, 스파이크 신호를 출력한 뉴런 블록을 식별하는 출력 AER_out(8bit)을 출력할 수 있다. 또한, 스파이크 신호 출력 변환 부(Spike2AER Unit)는 적어도 하나의 뉴런 블록이 스파이크 신호를 출력했음을 나타내는 신호 AER_out_v를 출력할 수 있다.
또한, STDP 학습 아르바이터(STDP arbiter UNIT)는 복수의 뉴런들 각각으로부터 수신된 학습 요청 신호(STDP_req)에 기초하여, 학습 요청 신호를 출력한 뉴런 블록을 식별하는 신호인 학습 요청 뉴런 주소 신호 STDP_req_addr를 출력할 수 있다. 또한, 스파이크 신호 출력 변환 부(Spike2AER Unit)는 적어도 하나의 뉴런 블록이 학습 요청 신호(STDP_req)를 출력했음을 나타내는 신호 STDP_event_out를 출력할 수 있다.
동일 코어 블록 내에 적어도 하나의 뉴런 블록이 학습 요청 신호(STDP_req)를 출력한 경우, STDP_envent 신호로 1이 입력되어, 동일 코어 블록 내에 모든 뉴런 블록들의 학습 카운터가 리셋된다. 한편 도 15에서 나타나는 멀티 코어 블록에서 동일 멀티 코어 내에 다른 코어들에 포함된 복수의 뉴런들 중 적어도 하나의 뉴런으로부터 학습 요청 신호가 출력된 경우, 현재 코어에 포함된 모든 뉴런 블록들의 학습 카운터가 리셋되도록 하기 위해 이용된다.
도 15에서, 멀티 코어 블록은 복수의 코어 블록을 포함하며, 각각의 코어 블록 내에서 공유되는 공통 인자(Parameters_core0, Parameter _core1, ? Parameter_core255)를 입력 받는다.
또한, 합병기(Merger)는 복수의 코어 블록들 각각에서 출력된 8 bit의 출력 신호 AER_out(8b)를 입력받아 16bit의 신호 AER_out(16b)를 출력한다.
또한, 복수의 코어 블록들 중 적어도 하나의 코어 블록 또는 복수의 코어 블록에 포함된 모든 뉴런 블록들 중 적어도 하나의 뉴런 블록이 스파이크 신호를 출력한 경우, 억제 기작을 요청하는 일반 억제 인자 General_inhibiton로 1이 출력된다.
마찬가지로, 복수의 코어 블록들 중 적어도 하나의 코어 블록 또는 복수의 코어 블록에 포함된 모든 뉴런 블록들 중 적어도 하나의 뉴런 블록이 학습 요청 신호 STDP_event_out를 출력한 경우, 학습 카운터를 리셋하는 신호 STDP_event_in는 1 값을 가지며, 모든 멀티 코어에 입력된다.
본 개시는 도면 내에 블록을 구현하기 위한 특정 하드웨어 및 소프트웨어를 정의하지 않지만, 당업자는 본 발명이 특정 하드웨어 또는 소프트웨어에 의한 구현에 제한되지 않으며, 임의의 종래 하드웨어 및 / 또는 소프트웨어가 본원 개시의 실시 예를 구현하는데 사용되는 것을 이해할 수 있을 것이다. 따라서, 하드웨어는 본원 개시의 기능을 수행하기 위한 하나 이상의 주문형 집적 회로(application specific integrated circuits), 디지털 신호 프로세서(digital signal processors), 디지털 신호 처리 장치(digital signal processing devices), 프로그래머블 로직 장치(programmable logic devices), 필드 프로그래머블 게이트 어레이(field programmable gate arrays), 프로세서(processor), 컨트롤러(controller), 마이크로 컨트롤러(micro controller), 마이크로 프로세서(micro processor), 전자 장치 및 기타 전자 모듈, 컴퓨터 및 이들의 조합으로 구현될 수 있다.
본 개시의 설명 또는 청구항에서 단일 구성 요소로 나타내어진 구성 요소의 기능은 실제 구현될 경우 디바이스의 여러 구성 요소에 의하여 구현될 수 있고, 반대로, 여러 구성 요소들로 나타내어진 구성 요소들의 기능은 실제 구현될 경우 단일 구성요소에 의하여 구현될 수 있다.
본원에서, 용어 "제 1", "제 2" 등은 여러 구성 요소, 부품, 영역, 계층, 및/또는 섹션을 설명하기 위하여 사용될 수 있다. 이러한 용어는, 달린 언급되거나 문맥상 명백하게 달리 사용되지 않은 이상, 일 구성요소를 다른 구성요소와 구별하기 위하여 사용되는 것일 뿐, 구성요소들은 이러한 용어에 제한되지 아니한다. 따라서, 본원 개시의 범위를 벗어나지 않는 범위에서, 제 1 구성 요소, 부품, 영역, 계층, 및/또는 섹션은 제 2 구성 요소, 부품, 영역, 계층, 및/또는 섹션으로 정의될 수 있다. 본원에서, 용어 "및/또는"은 하나 이상의 나열된 항목 각각의 임의의 모든 조합을 포함한다. 단수로 나타내어진 구성 요소는 달리 명시되지 않는 한 복수의 요소를 배제하지 않는다.
본원에서, 방법은 개시된 방법을 구현하기 위한 하나 이상의 단계 또는 동작을 포함한다. 단계 및/또는 동작의 특정 순서가 정해지지 않은 경우, 하나 이상의 단계 및/또는 동작 본원 개시에서 설명된 순서와 달리 수행될 수 있다. 예를 들어 관련된 기능에 따라, 연속적으로 설명된 두 개의 단계 및/또는 동작은 실질적으로 동일한 시간에 실행되거나, 역순으로 실행될 수 있다.

Claims (20)

  1. 복수의 시냅스 가중치 값들에 대한 시냅스 학습을 수행하는 뉴런 회로에 있어서,
    복수의 시냅스 전 뉴런 회로들 각각에 대응하는 복수의 시냅스 가중치 값들을 저장하는 시냅스 가중치 메모리;
    시냅스 전 뉴런 회로로부터 입력 신호를 수신하고, 상기 시냅스 가중치 메모리로부터 상기 수신된 입력 신호에 대응하는 시냅스 가중치 값을 획득하고, 상기 획득된 시냅스 가중치 값이 활성 값을 갖는지 여부에 따라 상기 입력 신호가 활성화 신호인지 여부를 판단하고, 상기 입력 신호가 상기 활성화 신호인 것으로 판단된 경우 상기 활성화 신호의 수신을 나타내는 신호를 제 2 서브 회로로 전송하는 제 1 서브 회로;
    상기 활성화 신호의 수신을 나타내는 신호가 수신된 횟수를 나타내는 제 1 누적 수신 횟수와 학습 임계 값 간의 비교 연산을 수행하고, 상기 제 1 누적 수신 횟수가 상기 학습 임계 값에 이른 경우 학습 요청 신호를 제 3 서브 회로로 전송하는 상기 제 2 서브 회로; 및
    상기 학습 요청 신호를 수신함에 응답하여, 제 1 확률에 따라 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행하고, 제 2 확률에 따라 상기 복수의 시냅스 가중치 값들 각각을, 비활성 값으로 설정하는 약화 학습을 수행하는 상기 제 3 서브 회로를 포함하는,
    뉴런 회로.
  2. 제 1 항에 있어서,
    상기 판단 결과에 따라, 상기 활성화 신호의 제 2 누적 수신 횟수와 발화 임계 값 간의 비교 연산을 수행하며,
    상기 제 2 누적 수신 횟수가 상기 발화 임계 값에 이른 경우, 상기 뉴런 회로의 시냅스 후(post-synaptic) 뉴런 회로에게 스파이크 신호를 전송하는 제 4 서브 회로를 더 포함하는, 뉴런 회로.
  3. 제 1 항에 있어서,
    상기 제 3 서브 회로는,
    상기 강화 학습이 수행된 결과, 상기 시냅스 가중치 메모리 내의 시냅스 가중치 값이 활성 값을 가지는 활성화 시냅스의 개수에 기초하여 상기 제 2 확률을 결정하는, 뉴런 회로.
  4. 제 1 항에 있어서,
    상기 제 2 서브 회로는,
    상기 제 1 누적 수신 횟수를 카운팅하고, 상기 제 1 누적 수신 횟수가 상기 학습 임계 값에 이를 경우 리셋되는, 학습 카운터를 포함하는, 뉴런 회로.
  5. 제 4 항에 있어서,
    상기 제 2 서브 회로는,
    상기 제 1 누적 수신 횟수가 상기 학습 임계 값에 이른 횟수를 카운팅하여 상기 학습 임계 값을 증가시키는, 학습 임계 값 카운터를 더 포함하는, 뉴런 회로.
  6. 제 2 항에 있어서,
    상기 제 4 서브 회로는,
    상기 제 2 누적 수신 횟수를 카운팅하고, 상기 제 2 누적 수신 횟수가 상기 발화 임계 값에 이를 경우 리셋되는, 발화 카운터를 포함하는, 뉴런 회로.
  7. 제 3 항에 있어서,
    상기 제 3 서브 회로는,
    랜덤 상수 생성기를 포함하고,
    상기 랜덤 상수 생성기로부터 획득된 양수의 랜덤 상수가, 상기 랜덤 상수의 상한 값에 상기 제 1 확률을 곱하여 산출된 강화 학습 기준 상수 이하인 경우 상기 강화 학습을 수행하는, 뉴런 회로.
  8. 제 7 항에 있어서,
    상기 제 3 서브 회로는,
    상기 시냅스 가중치 메모리 내에 상기 복수의 시냅스 가중치 값들 각각에 대하여, 상기 랜덤 상수 생성기로부터 획득된 양수의 랜덤 상수가, 상기 랜덤 상수의 상한 값에 상기 제 2 확률을 곱하여 산출된 약화 학습 기준 상수 이상인 경우, 상기 약화 학습을 수행하는, 뉴런 회로.
  9. 제 1 항에 있어서,
    상기 제 3 서브 회로는,
    수신된 입력 신호들에 포함된 시냅스 정보들을 저장하는 입력 이벤트 버퍼를 포함하고,
    저장된 순서의 역순에 따라, 상기 입력 이벤트 버퍼에 저장된 미리 결정된 개수의 시냅스 정보들 각각에 대응하는 시냅스 가중치 값에 대하여 강화 학습을 수행하는, 뉴런 회로.
  10. 복수의 시냅스들의 시냅스 가중치 값들에 대한 학습 시스템에 있어서,
    뉴런 회로; 및
    학습 회로를 포함하고,
    상기 뉴런 회로는,
    시냅스 전 뉴런 회로로부터 입력 신호를 수신하고,
    상기 수신된 입력 신호에 대응하는 시냅스 가중치 값이 활성 값을 갖는지 여부에 따라 상기 입력 신호가 활성화 신호인지 여부를 판단하고, 상기 활성화 신호를 수신한 횟수를 나타내는 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우 학습 요청 신호를 상기 학습 회로에게 전송하며,
    상기 학습 회로는,
    상기 학습 요청 신호를 수신함에 따라, 제 1 확률로 상기 뉴런 회로에 의해 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행하고,
    제 2 확률에 따라 상기 복수의 시냅스 가중치 값들 각각을 비활성 값으로 설정하는 약화 학습을 수행하는, 학습 시스템.
  11. 뉴런 회로에 의해 수행되는, 상기 뉴런 회로와 시냅스 전 뉴런 회로들간의 복수의 시냅스들의 시냅스 가중치 값들에 대한 시냅스 학습 방법에 있어서,
    시냅스 전 뉴런 회로로부터 입력 신호가 수신된 경우, 상기 수신된 입력 신호에 대응하는 시냅스 가중치 값이 활성 값을 갖는지 여부에 따라 상기 입력 신호가 활성화 신호인지 여부를 판단하는 단계;
    상기 입력 신호가 상기 활성화 신호인 것으로 판단된 경우, 상기 활성화 신호를 수신한 횟수를 나타내는 제 1 누적 수신 횟수와 학습 임계 값의 비교 연산을 수행하는 단계;
    상기 제 1 누적 수신 횟수가 상기 학습 임계 값에 이른 경우, 제 1 확률에 따라 기 수신된 적어도 하나의 입력 신호의 시냅스 가중치 값을 활성 값으로 설정하는 강화 학습을 수행하는 단계; 및
    제 2 확률에 따라, 상기 복수의 시냅스 가중치 값들 각각을 비활성 값으로 설정하는 약화 학습을 수행하는 단계를 포함하는, 시냅스 학습 방법.
  12. 제 11 항에 있어서,
    상기 판단 결과에 따라, 상기 활성화 신호의 제 2 누적 수신 횟수와 발화 임계 값의 비교 연산을 수행하는 단계; 및
    상기 제 2 누적 수신 횟수가 상기 발화 임계 값에 이른 경우, 상기 뉴런 회로의 시냅스 후(post-synaptic) 뉴런 회로에게 스파이크 신호를 전송하는 단계를 더 포함하는, 시냅스 학습 방법.
  13. 제 11 항에 있어서,
    상기 약화 학습을 수행하는 단계는,
    상기 강화 학습이 수행된 결과, 복수의 시냅스들 중 시냅스 가중치 값이 활성 값을 가지는 활성화 시냅스의 개수를 결정하고, 상기 결정된 활성화 시냅스의 개수에 기초하여 상기 제 2 확률을 결정하는 단계를 포함하는, 시냅스 학습 방법.
  14. 제 11 항에 있어서,
    상기 제 1 누적 수신 횟수가 학습 임계 값에 이른 경우, 상기 제 1 누적 수신 횟수를 초기화하는 단계를 더 포함하는, 시냅스 학습 방법.
  15. 제 14 항에 있어서,
    상기 제 1 누적 수신 횟수가 상기 학습 임계 값에 이른 경우, 상기 학습 임계 값을 증가시키는 단계를 더 포함하는, 시냅스 학습 방법.
  16. 제 12 항에 있어서,
    상기 제 2 누적 수신 횟수가 상기 발화 임계 값에 이른 경우, 상기 제 2 누적 수신 횟수를 초기화하는 단계를 더 포함하는, 시냅스 학습 방법.
  17. 제 11 항에 있어서,
    상기 강화 학습을 수행하는 단계는,
    양수인 랜덤 상수를 획득하고, 상기 획득된 랜덤 상수가 상기 랜덤 상수의 상한 값에 상기 제 1 확률을 곱하여 산출된 강화 학습 기준 상수 이하인 경우 상기 강화 학습을 수행하는 단계를 포함하는 시냅스 학습 방법.
  18. 제 11 항에 있어서,
    상기 약화 학습을 수행하는 단계는,
    상기 복수의 시냅스 가중치 값들 각각에 대하여, 양수인 랜덤 상수를 획득하고, 상기 획득된 랜덤 상수가 상기 랜덤 상수의 상한 값에 상기 제 2 확률을 곱하여 산출된 약화 학습 기준 상수 이상인 경우, 상기 약화 학습을 수행하는 단계를 포함하는 시냅스 학습 방법.
  19. 제 11 항에 있어서,
    수신된 입력 신호들에 포함된 시냅스 정보들을 저장하는 단계를 더 포함하고,
    상기 강화 학습을 수행하는 단계는,
    저장된 순서의 역순에 따라, 미리 결정된 개수의 기 저장된 시냅스 정보들 각각에 대응하는 시냅스 가중치 값에 대하여 강화 학습을 수행하는 단계를 더 포함하는, 시냅스 학습 방법.
  20. 제 11 항 내지 19 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020180069625A 2017-11-06 2018-06-18 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법 KR102592146B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/181,850 US11301753B2 (en) 2017-11-06 2018-11-06 Neuron circuit, system, and method with synapse weight learning

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762581957P 2017-11-06 2017-11-06
US62/581,957 2017-11-06

Publications (2)

Publication Number Publication Date
KR20190051766A KR20190051766A (ko) 2019-05-15
KR102592146B1 true KR102592146B1 (ko) 2023-10-20

Family

ID=66579625

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180069625A KR102592146B1 (ko) 2017-11-06 2018-06-18 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102592146B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102380970B1 (ko) * 2019-07-04 2022-04-01 한국과학기술연구원 뉴로모픽 장치 및 그 장치에서 수행되는 시그널링 방법
KR102380584B1 (ko) * 2019-07-04 2022-03-31 한국과학기술연구원 뉴로모픽 장치 및 그 장치에서 수행되는 가중치 갱신 방법
KR102301041B1 (ko) * 2019-07-04 2021-09-14 한국과학기술연구원 뉴로모픽 장치
KR102402253B1 (ko) * 2019-07-04 2022-05-27 한국과학기술연구원 멀티코어 뉴로모픽 장치 및 그 장치에서 수행되는 글로벌 라우팅 방법
US11630992B2 (en) 2019-07-05 2023-04-18 Electronics And Telecommunications Research Institute Neural network generation method for neuromorphic computing and apparatus for the same
KR102545066B1 (ko) 2019-07-05 2023-06-20 한국전자통신연구원 뉴로모픽 컴퓨팅을 위한 신경망 생성 방법 및 이를 위한 장치
US11693657B2 (en) 2019-09-05 2023-07-04 Micron Technology, Inc. Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
US11829729B2 (en) 2019-09-05 2023-11-28 Micron Technology, Inc. Spatiotemporal fused-multiply-add, and related systems, methods and devices
US11934824B2 (en) 2019-09-05 2024-03-19 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
KR102431371B1 (ko) * 2019-11-26 2022-08-10 성균관대학교산학협력단 스파이킹 뉴런 모델 및 그의 스파이크 생성 방법
WO2021125431A1 (ko) * 2019-12-19 2021-06-24 주식회사 노타 분산 평준화를 통한 딥러닝 모델 초기화 방법 및 장치
US20230040758A1 (en) * 2019-12-26 2023-02-09 Northwestern University Tunable gaussian heterojunction transistors, fabricating methods and applications of same
KR102481847B1 (ko) * 2020-05-04 2022-12-27 고려대학교 산학협력단 드롭커넥트 신경망 시스템 및 이를 이용한 학습 방법
KR102500633B1 (ko) * 2020-05-11 2023-02-15 연세대학교 산학협력단 스파이킹 신경망 학습 장치 및 방법
US11537861B2 (en) 2020-06-23 2022-12-27 Micron Technology, Inc. Methods of performing processing-in-memory operations, and related devices and systems
KR102288865B1 (ko) 2021-03-30 2021-08-11 세종대학교산학협력단 위상 동조 패딩을 통한 fmcw 레이더 거리 해상도 향상 기법
KR102521702B1 (ko) * 2021-11-04 2023-04-17 서울대학교산학협력단 뉴런 회로와 이의 동작 방법, 그리고, 뉴런 회로를 포함하는 뉴로모픽 장치
KR102511526B1 (ko) 2021-11-11 2023-03-17 서울대학교산학협력단 하드웨어 기반 인공 신경망 제공 장치
KR102514655B1 (ko) * 2021-11-18 2023-03-29 서울대학교산학협력단 스파이크 신호를 병렬처리하는 뉴로모픽 장치
KR102514649B1 (ko) 2021-11-18 2023-03-29 서울대학교산학협력단 시냅스 특성 변화를 보상하는 뉴런 회로 및 뉴로모픽 장치
KR102514652B1 (ko) 2021-11-19 2023-03-29 서울대학교산학협력단 뉴로모픽 소자를 위한 가중치 전사 장치 및 이를 이용한 가중치 전사 방법
KR102514650B1 (ko) 2021-11-30 2023-03-29 서울대학교산학협력단 뉴로모픽 장치 및 뉴로모픽 장치에서의 변이 특성 보상 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418333B2 (en) * 2013-06-10 2016-08-16 Samsung Electronics Co., Ltd. Synapse array, pulse shaper circuit and neuromorphic system
US20150286925A1 (en) * 2014-04-08 2015-10-08 Qualcomm Incorporated Modulating plasticity by global scalar values in a spiking neural network
KR102565273B1 (ko) * 2016-01-26 2023-08-09 삼성전자주식회사 뉴럴 네트워크에 기초한 인식 장치 및 뉴럴 네트워크의 학습 방법

Also Published As

Publication number Publication date
KR20190051766A (ko) 2019-05-15

Similar Documents

Publication Publication Date Title
KR102592146B1 (ko) 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법
US10339447B2 (en) Configuring sparse neuronal networks
US11301753B2 (en) Neuron circuit, system, and method with synapse weight learning
US9558442B2 (en) Monitoring neural networks with shadow networks
US20150242741A1 (en) In situ neural network co-processing
KR20160136381A (ko) 신경 네트워크들에서의 차분 인코딩
TW201322150A (zh) 用於在脈波編碼的網路中的突觸更新的裝置和方法
EP3087538A2 (en) Neural watchdog
US20150212861A1 (en) Value synchronization across neural processors
US9959499B2 (en) Methods and apparatus for implementation of group tags for neural models
US9710749B2 (en) Methods and apparatus for implementing a breakpoint determination unit in an artificial nervous system
US20150278685A1 (en) Probabilistic representation of large sequences using spiking neural network
US20150112909A1 (en) Congestion avoidance in networks of spiking neurons
JP6219509B2 (ja) シナプス遅延を動的に割り当てることおおよび検査すること
KR101825937B1 (ko) 가소성 시냅스 관리
US9418332B2 (en) Post ghost plasticity
US9342782B2 (en) Stochastic delay plasticity

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant