KR102399548B1 - 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치 - Google Patents

뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치 Download PDF

Info

Publication number
KR102399548B1
KR102399548B1 KR1020170053543A KR20170053543A KR102399548B1 KR 102399548 B1 KR102399548 B1 KR 102399548B1 KR 1020170053543 A KR1020170053543 A KR 1020170053543A KR 20170053543 A KR20170053543 A KR 20170053543A KR 102399548 B1 KR102399548 B1 KR 102399548B1
Authority
KR
South Korea
Prior art keywords
activation
threshold
change
input
artificial neuron
Prior art date
Application number
KR1020170053543A
Other languages
English (en)
Other versions
KR20180007657A (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 US15/607,007 priority Critical patent/US10949737B2/en
Priority to EP17178120.6A priority patent/EP3270330B1/en
Priority to JP2017132072A priority patent/JP7037143B2/ja
Priority to CN201710570971.3A priority patent/CN107622303B/zh
Publication of KR20180007657A publication Critical patent/KR20180007657A/ko
Priority to US17/171,554 priority patent/US20210166113A1/en
Priority to US17/171,551 priority patent/US20210166112A1/en
Priority to JP2021156767A priority patent/JP7290256B2/ja
Priority to JP2021156768A priority patent/JP7237122B2/ja
Application granted granted Critical
Publication of KR102399548B1 publication Critical patent/KR102399548B1/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/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs

Abstract

인공 뉴런의 동작 방법 및 그 방법을 수행하는 장치가 개시된다. 일 실시예에 따른 인공 뉴런은 입력 시냅스로 수신되는 입력 신호에 기초하여 액티베이션의 변화량을 계산하고, 액티베이션의 변화량에 기초하여 이벤트의 발생 여부를 결정하며, 이벤트의 발생에 따라 출력 시냅스로 이벤트에 대응하는 출력 신호를 전송한다.

Description

뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치{METHOD FOR NEURAL NETWORK AND APPARATUS PERFORM SAME METHOD}
아래 실시예들은 인공 뉴런의 동작 방법 및 그 방법을 수행하는 장치에 관한 것이다.
복잡하거나 해가 알려지지 않은 문제를 해결하기 위해, 인간이 지닌 인식 방법을 디바이스에 적용시키려는 연구가 진행되고 있다. 이러한 연구 중 하나로, 인간의 생물학적 신경 세포를 모델링한 뉴럴 네트워크(neural network)가 있다. 뉴럴 네트워크는 인간이 가지고 있는 학습 능력을 모방한 알고리즘을 이용한다. 뉴럴 네트워크는 학습을 통해 입력 패턴과 출력 패턴들 사이의 사상(mapping)을 수행할 수 있다. 또한, 뉴럴 네트워크는 학습된 결과에 기초하여 학습에 이용되지 않았던 입력 패턴에 대하여 비교적 올바른 출력을 생성할 수 있는 일반화 능력을 가질 수 있다.
일 측에 따르면, 뉴럴 네트워크(neural network)를 위한 방법은 인공 뉴런의 이전 액티베이션(activation) 및 상기 인공 뉴런의 입력 시냅스를 통하여 수신되는 입력 신호에 기초하여, 상기 인공 뉴런의 현재 액티베이션을 결정하는 단계; 상기 현재 액티베이션 및 상기 인공 뉴런에 의하여 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여, 액티베이션의 변화량을 결정하는 단계; 상기 액티베이션의 변화량 및 임계치에 기초하여, 새로운 이벤트의 발생 여부를 결정하는 단계; 및 상기 새로운 이벤트의 발생에 따라 출력 시냅스로 상기 새로운 이벤트에 대응하는 출력 신호를 전송하는 단계를 포함한다.
상기 새로운 이벤트는 상기 액티베이션의 변화량과 상기 임계치의 교차에 따라 발생할 수 있다. 상기 출력 신호는 상기 변화량과 상기 임계치의 교차 방향을 나타내는 부호 비트를 포함할 수 있다. 상기 방법은, 상기 입력 시냅스를 통하여 연결된 이전 레이어에 대응하는 임계치를 수신하는 단계를 더 포함할 수 있고, 상기 현재 액티베이션을 결정하는 단계는 상기 이전 액티베이션, 상기 입력 신호, 및 상기 이전 레이어에 대응하는 임계치에 기초하여 상기 현재 액티베이션을 결정하는 단계를 포함할 수 있다.
상기 출력 신호는 미리 결정된 비트 정밀도(bit precision)로 근사화된 상기 액티베이션의 변화량을 포함할 수 있다. 상기 비트 정밀도는 요구 정확도 및 가용 자원 중 적어도 하나에 따라 조절될 수 있다. 상기 임계치는 단위 시간 동안 발생하는 이벤트의 수에 따라 조절될 수 있다. 상기 임계치는, 상기 단위 시간 동안 발생하는 상기 이벤트의 수가 미리 정해진 제1 임계치를 초과하는 것에 따라 증가할 수 있고, 상기 단위 시간 동안 발생하는 상기 이벤트의 수가 미리 정해진 제2 임계치 미만인 것에 따라 감소할 수 있다. 상기 제1 임계치는 상기 제2 임계치보다 클 수 있다.
상기 방법은 상기 출력 신호의 전송 이후에, 상기 현재 액티베이션에 기초하여, 상기 임계치를 업데이트하는 단계를 더 포함할 수 있다. 상기 임계치는 고정 간격(fixed step), 로그 간격(logarithmic step), 자릿수(order of magnitude) 에 따라 조절될 수 있다. 상기 방법은 상기 현재 액티베이션을 저장하는 단계를 더 포함할 수 있다.
상기 방법은 미리 정해진 동작 모드를 지시하는 제어 신호를 수신하는 단계; 상기 입력 시냅스를 통하여 상기 동작 모드에 대응하여 프레임화된 입력 신호를 수신하는 단계; 및 상기 프레임화된 입력 신호에 기초하여 상기 현재 액티베이션을 결정하는 단계를 더 포함할 수 있다.
상기 뉴럴 네트워크는 인공 뉴럴 네트워크(artificial neural network), 완전 연결 네트워크(fully connected network), 딥 컨볼루셔널 네트워크(deep convolutional network), 리커런트 뉴럴 네트워크(recurrent neural network) 및 스파이킹 뉴럴 네트워크(spiking neural network) 중 어느 하나일 수 있다.
다른 일 측에 따르면, 뉴럴 네트워크(neural network)를 위한 방법은 인공 뉴런의 이전 액티베이션, 및 상기 인공 뉴런의 입력 시냅스를 통하여 수신되는 입력 신호에 기초하여, 상기 인공 뉴런의 현재 액티베이션을 결정하는 단계; 상기 이전 액티베이션이 속한 제1 클러스터 및 상기 현재 액티베이션이 속한 제2 클러스터에 기초하여, 이벤트의 발생 여부를 결정하는 단계; 및 상기 이벤트의 발생에 따라 출력 시냅스로 상기 이벤트에 대응하는 출력 신호를 전송하는 단계를 포함한다.
상기 이벤트는 상기 제1 클러스터와 상기 제2 클러스터의 차이에 따라 발생할 수 있다. 상기 출력 신호는 클러스터의 변화 방향 및 클러스터의 변화량 중 적어도 하나를 나타내는 적어도 하나의 변경 비트를 포함할 수 있다.
일 측에 따르면, 리커런트 뉴럴 네트워크(recurrent neural network)를 위한 방법은 t-1에서의 입력 벡터 및 t에서의 입력 벡터 간의 차에 기초하여, t에서의 입력 델타 벡터를 획득하는 단계; t-2에서의 히든 상태 벡터 및 t-1에서의 히든 상태 벡터 간의 차에 기초하여, t-1에서의 히든 상태 델타 벡터를 획득하는 단계; 상기 획득된 t에서의 입력 델타 벡터 및 입력 벡터를 위한 가중치 간의 곱, 및 상기 획득된 t-1에서의 히든 상태 델타 벡터 및 히든 상태 벡터를 위한 가중치 간의 곱에 기초하여, 상기 리커런트 뉴럴 네트워크의 파라미터들을 결정하는 단계; 및 상기 결정된 상기 리커런트 뉴럴 네트워크의 파라미터들에 기초하여, t에서의 히든 상태 벡터를 결정하는 단계를 포함한다. 여기서, t는 타임 스탬프를 나타내고, 1보다 큰 정수다.
상기 리커런트 뉴럴 네트워크의 파라미터들은 리셋 게이트의 값, 업데이트 게이트의 값 및 출력 히든 상태 벡터의 값 중 적어도 하나를 포함할 수 있다.
상기 입력 델타 벡터를 획득하는 단계는 상기 t-1에서의 입력 벡터 및 상기 t에서의 입력 벡터 간의 차가 미리 정해진 임계치보다 큰 경우, 상기 t-1에서의 입력 벡터 및 상기 t에서의 입력 벡터 간의 차를 상기 입력 델타 벡터로 결정하는 단계; 및 상기 t-1에서의 입력 벡터 및 상기 t에서의 입력 벡터 간의 차가 미리 정해진 임계치보다 작은 경우, 제로 벡터를 상기 입력 델타 벡터로 결정하는 단계를 포함할 수 있다.
상기 입력 델타 벡터를 획득하는 단계는 t-1에서의 입력 델타 벡터에 기초하여 t-1에서의 참조 벡터를 획득하는 단계; 및 상기 t-1에서의 참조 벡터 및 상기 t에서의 입력 벡터 간의 차에 기초하여, 상기 입력 델타 벡터를 획득하는 단계를 포함할 수 있다.
상기 t-1에서의 참조 벡터를 획득하는 단계는 상기 t-1에서의 입력 델타 벡터가 상기 미리 정해진 임계치보다 큰 경우, 상기 t-1에서의 입력 델타 벡터를 상기 t-1에서의 참조 벡터로 결정하는 단계; 및 상기 t-1에서의 입력 델타 벡터가 상기 미리 정해진 임계치보다 작은 경우, t-2에서의 참조 벡터를 상기 t-1에서의 참조 벡터로 결정하는 단계를 포함할 수 있다.
상기 히든 상태 델타 벡터를 획득하는 단계는 상기 t-1에서의 입력 벡터 및 상기 t에서의 입력 벡터 간의 차가 미리 정해진 임계치보다 큰 경우, 상기 입력 델타 벡터를 상기 t-1에서의 입력 벡터 및 상기 t에서의 입력 벡터 간의 차로 결정하는 단계; 및 상기 t-1에서의 입력 벡터 및 상기 t에서의 입력 벡터 간의 차가 미리 정해진 임계치보다 작은 경우, 상기 입력 델타 벡터를 제로 벡터로 결정하는 단계를 포함할 수 있다.
일 측에 따르면, 전자 장치는 인공 뉴런들에 대응하는 프로세싱 유닛들을 포함하고, 상기 프로세싱 유닛들 각각은 컴퓨터에서 읽을 수 있는 명령어들을 저장하는 메모리 및 프로세서를 포함하고, 상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는 이전 액티베이션 및 입력 링크를 통하여 수신되는 입력 신호에 기초하여 현재 액티베이션을 결정하고, 상기 현재 액티베이션 및 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여 액티베이션의 변화량을 결정하고, 상기 액티베이션의 변화량 및 임계치에 기초하여 새로운 이벤트의 발생 여부를 결정하고, 상기 새로운 이벤트의 발생에 따라 출력 링크로 상기 새로운 이벤트에 대응하는 출력 신호를 전송한다.
상기 프로세서는 상기 입력 링크를 통하여 연결된 이전 레이어에 대응하는 임계치를 더 수신할 수 있고, 상기 이전 액티베이션, 상기 입력 신호, 및 상기 이전 레이어에 대응하는 임계치에 기초하여 상기 현재 액티베이션을 결정할 수 있다. 상기 프로세서는, 상기 출력 신호의 전송 이후에, 상기 현재 액티베이션에 기초하여, 상기 임계치를 업데이트할 수 있다. 상기 메모리는 상기 현재 액티베이션을 저장할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크를 나타낸 도면.
도 2는 인공 뉴런의 입력 및 출력 예시를 나타낸 도면.
도 3은 일 실시예에 따른 이벤트 결정 및 출력 신호를 나타낸 도면.
도 4는 다른 실시예에 따른 이벤트 결정 및 출력 신호를 나타낸 도면.
도 5는 일 실시예에 따른 임계치의 조절을 나타낸 도면.
도 6은 일 실시예에 따른 클러스터의 변경을 나타낸 도면.
도 7은 표준 비디오 데이터 세트를 처리하는 표준 컨볼루셔널 네트워크의 특성을 나타낸 도면.
도 8은 시간의 경과에 따른 RNN 액티베이션의 안정성을 나타낸 도면.
도 9는 델타 네트워크를 통해 획득된 계산 결과를 나타낸 도면.
도 10은 일 실시예에 따른 전자 장치를 나타낸 블록도.
도 11은 다른 실시예에 따른 전자 장치를 나타낸 도면.
도 12는 일 실시예에 따른 인공 뉴런의 동작 방법을 나타낸 동작 흐름도.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 뉴럴 네트워크를 나타낸 도면이다. 도 1을 참조하면, 뉴럴 네트워크(100)는 인공 뉴런들을 포함하는 집합들(collections)(110 내지 150)을 포함한다.
뉴럴 네트워크(100)는 이벤트 기반으로 동작함으로써, 학습 또는 인식에 소요되는 계산 비용(computational costs)을 감소시킬 수 있다. 뉴럴 네트워크(100)는 딥 러닝에 이용될 수 있다. 딥 러닝은 빅 데이터 세트로부터 영상 또는 음성 인식과 같은 문제를 해결하기 위한 기계 학습 기법이다. 딥 러닝의 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 멀티 레이어 뉴럴 네트워크(multi-layered neural network)에서 특징 계층들이 추출될 수 있다. 뉴럴 네트워크(100)는 멀티 레이어 뉴럴 네트워크의 예시에 해당할 수 있다. 멀티 레이어 뉴럴 네트워크는 완전 연결 네트워크(fully connected network), 딥 컨볼루셔널 네트워크(deep convolutional network) 및 리커런트 뉴럴 네트워크(recurrent neural network) 등을 포함할 수 있다. 예를 들어, 완전 연결 네트워크는 많은 어휘의 연속적 음석 인식(large-vocabulary continuous speech recognition), 3D 객체 인식, 얼굴 인식 및 매칭 및 시각적 분류 등에 이용될 수 있다.
멀티 레이어 뉴럴 네트워크의 크기와 깊이는 일반적인 뉴럴 네트워크에 비하여 매우 크고 깊을 수 있다. 뉴럴 네트워크의 크기는 레이어 별 뉴런의 수와 레이어의 수의 곱으로 나타낼 수 있고, 뉴럴 네트워크의 깊이는 네트워크 별 레이어의 수로 나타낼 수 있다. 예를 들어, 최근의 비전 어플리케이션에 이용되는 뉴럴 네트워크는 41개의 레이어들, 약 143*106개의 가중치들, 및 31*106개의 뉴런들을 포함하고, 해당 뉴럴 네트워크를 위해 19.7*109개의 연산들이 필요하다. 이러한, 멀리 레이어 뉴럴 네트워크의 학습에는 거대한 데이터베이스 및 긴 학습 시간이 소요된다.
이러한 거대한 뉴럴 네트워크를 순차적인 방법을 통해 구동시키기 위해서는 CPU(central processing unit)나 GPU(graphic processing unit)와 같은 프로세서의 계산에 많은 비용이 소모될 수 있다. 최근의 연구에 따르면 슈퍼 컴퓨터에서 수일 또는 몇 주 동안 학습된 백만의 인공 뉴런들이 사용되었다. 순차적인 방법을 통한 학습에서 모든 인공 뉴런은 새로운 입력 샘플에 의해 항상 업데이트되므로, 네트워크의 복잡성에 따라 컴퓨팅 자원의 소모가 증가될 수밖에 없다. 아래에서 상세히 설명되겠지만, 실시예들은 입력 샘플에 기초하여 이벤트 기반으로 동작함으로써, 네트워크의 출력을 계산하는데 사용되는 컴퓨팅 자원을 크게 감소시킬 수 있다.
뉴럴 네트워크(100)에서 각각의 집합들(110 내지 150)은 인공 뉴런들을 포함하고, 각각의 집합들(110 내지 150)에 포함된 인공 뉴런들은 다른 인공 뉴런들과 연결될 수 있다. 상기 다른 인공 뉴런들은 상기 인공 뉴런들과 같은 집합에 위치하거나, 혹은 다른 집합에 위치할 수 있다. 집합들(110 내지 150)은 레이어들일 수 있고, 집합들(110 내지 150)은 레이어들(110 내지 150)로 지칭될 수 있다. 이 경우, 뉴럴 네트워크(100)는 인공 뉴런들을 포함하는 연속적인(successive) 레이어들(110 내지 150)을 포함할 수 있다. 따라서, 뉴럴 네트워크(100)는 멀티 레이어 뉴럴 네트워크에 해당할 수 있다.
도 1에는 설명의 편의를 위해 5개의 레이어들(110 내지 150)이 도시되어 있으나, 뉴럴 네트워크(100)는 다양한 수의 레이어들을 포함할 수 있다. 레이어(110)는 입력 레이어를 나타내고, 레이어들(120 내지 140)은 중간 레이어 또는 히든 레이어(hidden layer)를 나타내고, 레이어(150)는 출력 레이어를 나타낸다. 출력 레이어를 제외한 레이어들(110 내지 140)에 포함된 인공 뉴런들은 다음 레이어의 인공 뉴런들에 출력 신호를 전송하기 위한 링크들을 통해 연결될 수 있다. 링크들의 수는 다음 레이어에 포함된 인공 뉴런들의 수에 대응할 수 있다. 이러한 링크는 시냅스로 지칭될 수 있다.
뉴럴 네트워크(100)는 피드포워드(feedforward) 네트워크일 수 있다. 뉴럴 네트워크(100)에 포함된 각각의 인공 뉴런은, 뉴럴 네트워크(100)가 완전 연결 네트워크를 형성하도록, 다음 레이어의 모든 인공 뉴런들에 연결되거나, 컨볼루셔널 네트워크에서와 같이 제한된 공간적 접속 가능성(spatial connectivity)을 가질 수 있다.
뉴럴 네트워크(100)에 포함된 각각의 인공 뉴런은 이전 레이어에 포함된 인공 뉴런들의 입력(x_i)에 관한 1차 결합(linear combination)을 계산할 수 있다. 입력(x_i)은 시냅스의 가중치(w_i, synaptic weight)와 곱해진다. 가중된 입력들은 서로 더해질 수 있고, 가중된 입력들의 합(y)은 수학식 1로 나타낼 수 있다.
Figure 112017040832762-pat00001
가중된 입력들의 합(y)은 활성 함수(activation function; f)에 입력될 수 있다. 예를 들어, 활성 함수(f)는 ReLU(rectified linear unit), 시그모이드(sigmoid) 및 하이퍼볼릭 탄젠트(hyperbolic tangent) 중 어느 하나일 수 있다. 활성 함수(f)는 인공 뉴런의 출력(o)을 수학식 2에 따라 계산할 수 있다.
Figure 112017040832762-pat00002
이하, 인공 뉴런(105)을 기준으로 뉴럴 네트워크(100)의 동작을 설명하겠지만, 인공 뉴런(105)에 관한 설명은 나머지 인공 뉴런들에도 적용될 수 있다. 아래에서 인공 뉴런(105)의 이전 레이어는 레이어(120)를 지칭할 수 있고, 인공 뉴런(105)의 다음 레이어는 레이어(140)를 지칭할 수 있다. 인공 뉴런(105)과 레이어(120)에 포함된 인공 뉴런들 사이의 링크는 인공 뉴런(105)의 입력 시냅스로 지칭될 수 있고, 인공 뉴런(105)과 레이어(140)에 포함된 인공 뉴런들 사이의 링크는 인공 뉴런(105)의 출력 시냅스로 지칭될 수 있다.
일 측에 따르면, 인공 뉴런(105)의 액티베이션(activation)이 미리 정해진 양만큼 변할 때, 인공 뉴런(105)은 새로운 이벤트의 발생을 결정할 수 있다. 액티베이션은 인공 뉴런(105)의 입력 시냅스를 통하여 수신되는 입력들과 인공 뉴런(105)을 위해 구현된 활성 함수에 기초하여 계산될 수 있다.
일 실시예에 따른 뉴럴 네트워크(100)는 동적 연산망(dynamic computation net, DCN)이라고 지칭될 수 있다. 아래에서 상세히 설명 하겠으나, DCN은 인공 뉴럴 네트워크(artificial neural network, ANN) 혹은 스파이킹 뉴럴 네트워크(spiking neural network, SNN) 등 다양한 유형의 뉴럴 네트워크(100)에 적용될 수 있다. 뉴럴 네트워크(100)가 스파이킹 뉴럴 네트워크인 경우, 인공 뉴런(105)의 액티베이션은 인공 뉴런(105)의 막 전위(membrane potential)일 수 있다.
인공 뉴런(105)은 새로운 이벤트의 발생에 따라 출력 시냅스들로 새로운 이벤트에 대응하는 출력 신호들을 전송할 수 있다. 새로운 이벤트는 액티베이션의 변화량과 임계치의 교차에 따라 발생할 수 있다. 여기서, '액티베이션의 변화량과 임계치의 교차'는 액티베이션의 변화량이 임계치의 절대값보다 큰 경우를 나타낸다. 출력 신호들은 출력 시냅스들의 가중치들과 곱해질 수 있고, 다음 레이어의 인공 뉴런들은 인공 뉴런(105)의 가중된 출력 신호를 수신할 수 있다.
일 실시예에 따르면, 출력 신호는 액티베이션의 변화량과 임계치의 교차 방향을 나타내는 부호 비트를 포함할 수 있다. 이벤트 발생 시 단일 부호 비트를 출력하는 인공 뉴런들을 포함하는 뉴런 네트워크는 기본 DCN(basic DCN)이라고 지칭될 수 있다. 이 경우, 다음 레이어의 인공 뉴런들로 인공 뉴런(105)의 임계치가 함께 전송될 수 있다. 일 실시예에 따르면, 복수의 인공 뉴런들은 동일한 임계치를 공유할 수 있다. 예를 들어, 동일한 레이어에 속한 인공 뉴런들은 서로 동일한 임계치를 가질 수 있다. 이 경우, 다음 레이어의 인공 뉴런들은 이전 레이어의 인공 뉴런들 사이에 공유되는 임계치를 수신함으로써 임계치 전송에 따른 부하를 감소시킬 수 있다. 다음 레이어의 인공 뉴런들은 수신한 부호 비트 및 임계치에 기초하여, 자신의 액티베이션을 결정할 수 있다. 인공 뉴런(105)은 출력 신호를 다음 레이어로 전송한 이후에 자신의 임계치 또는 자신이 속한 레이어 내에서 공유되는 임계치를 업데이트할 수 있다. 다른 예로, 레이어 이외에 미리 정해진 그룹 별로 임계치가 다르게 설정되거나, 개별 인공 뉴런 별로 임계치가 다르게 설정될 수 있다. 또 다른 예로, 뉴런 네트워크 전체가 동일한 임계치를 이용할 수도 있다.
다른 실시예에 따르면, 출력 신호는 미리 결정된 비트 정밀도(bit precision)로 근사화된 액티베이션의 변화량을 포함할 수 있다. 이벤트 발생 시 미리 결정된 비트 정밀도로 근사화된 액티베이션의 변화량을 출력하는 뉴런 네트워크는 아날로그-전송 DCN(analog-transmission DCN)이라고 지칭될 수 있다. 근사화된 액티베이션의 변화량은 연속적인 값을 표현할 수 있다. 이 경우, 출력 신호의 전송을 위해 더 많은 비트가 요구되지만, 부호 비트로 액티베이션의 변화량을 나타내는 것에 비해, 다음 레이어에 포함된 인공 뉴런들의 액티베이션이 상대적으로 정확하게 계산될 수 있다. 다음 레이어의 인공 뉴런들은 수신한 액티베이션의 변화량을 이용하여 자신의 액티베이션을 결정할 수 있으므로, 인공 뉴런(105)의 임계치는 전송되지 않는다.
인공 뉴런(105)은 출력 신호를 다음 레이어로 전송한 이후에 자신의 임계치를 업데이트할 수 있다. 아날로그-전송 DCN의 경우, 액티베이션의 변화량이 전송됨으로써, 모든 인공 뉴런은 자신의 임계치를 가질 수 있고, 각각의 인공 뉴런은 제한된 버스 용량과 같은 가용 자원 또는 액티베이션에 관한 함수에 따라 자신의 임계치를 동적으로 변경할 수 있다.
또한, 기본 DCN의 경우 부호 비트로 제한된 출력 신호로는 임계치보다 매우 큰 액티베이션의 변화량이 정확하게 전달되기 어렵다. 반면, 아날로그-전송 DCN의 인공 뉴런(105)은 복수의 바이너리 이벤트들을 전송하는 대신에, 액티베이션의 변화량을 정확하게 나타내는 단일 이벤트를 전송할 수 있게 된다. 이에 따라, 아날로그-전송 DCN에서는 슬로프 과부하(slope-overload) 문제가 해결될 수 있다.
상술된 실시예들에서, 인공 뉴런들의 임계치는 새로운 이벤트의 발생에 따라 업데이트될 수 있다. 임계치는 고정된 간격(fixed step), 로그 간격(logarithmic step), 자릿수(order of magnitude) 등 다양한 방식으로 조절될 수 있다. 예를 들어, 액티베이션이 임계치에 비하여 매우 크게 변하는 경우, 임계치도 액티베이션의 변화에 맞게 조절될 필요가 있다. 액티베이션이 149에서 150으로 변하는 것은, 0에서 1로 변하는 것에 비해, 그 의미가 크지 않을 수 있기 때문이다. 이 경우, 임계치가 로그 간격으로 조절됨으로써, 이미 매우 큰 액티베이션을 가지는 인공 뉴런이 액티베이션의 변화량이 충분히 큰 경우에 한하여 이벤트를 발생시킬 수 있다. 임계치가 로그 간격으로 조절되는 뉴런 네트워크는 로그-간격 임계치 DCN(log-stepped threshold DCN)라고 지칭될 수 있다. 로그-간격 임계치 DCN에 포함된 인공 뉴런들은 기본 DCN 방식으로 동작하거나, 아날로그-전송 DCN 방식으로 동작할 수 있다.
다른 일 측에 따르면, 인공 뉴런(105)은 자신의 액티베이션에 따라 미리 정해진 k개의 클러스터들 중 어느 하나로 분류될 수 있고, 자신이 속한 클러스터의 변경에 따라 이벤트의 발생을 결정할 수 있다. 여기서, k는 자연수일 수 있다. 예를 들어, 인공 뉴런(105)의 이전 액티베이션에 따라 인공 뉴런(105)이 제1 클러스터에 속했으나, 인공 뉴런(105)의 현재 액티베이션에 따라 인공 뉴런(105)이 제2 클러스터에 속하게 된 경우, 인공 뉴런(105)은 이벤트의 발생을 결정할 수 있다.
인공 뉴런(105)은 이벤트의 발생에 따라 출력 신호들을 출력 시냅스들로 전송할 수 있다. 이 경우, 출력 신호는 클러스터의 변화 방향 및 클러스터의 변화량 중 적어도 하나를 나타내는 적어도 하나의 변경 비트를 포함할 수 있다. 예를 들어, 인공 뉴런(105)이 속한 클러스터가 상위 클러스터로 변경된 경우, 인공 뉴런(105)은 양의 비트인 +1을 전송할 수 있고, 인공 뉴런(105)이 속한 클러스터가 하위 클러스터로 변경된 경우, 인공 뉴런(105)은 음의 비트인 -1을 전송할 수 있다. 클러스터가 두 레벨 이상 변한 것을 나타내기 위해, 변경 비트는 두 비트 이상일 수 있다. 이벤트 발생 시 클러스터의 변화 방향 및 클러스터의 변화량 중 적어도 하나를 나타내는 적어도 하나의 변경 비트를 출력하는 인공 뉴런들을 포함하는 뉴런 네트워크는 K-레벨 DCN(K-level DCN)이라고 지칭될 수 있다.
인공 뉴런(105)은 입력 신호를 디코딩하는 디코더, 출력 신호를 생성하는 인코더 및 출력 신호를 전송하는 전송기를 포함할 수 있다. 인코더는 이벤트의 발생에 따라 이벤트에 대응하는 출력 신호를 생성할 수 있다. 예를 들어, 출력 신호는 부호 비트, 근사화된 액티베이션의 변화량 또는 변경 비트를 포함할 수 있다. 기본 DCN의 경우, 전송기는 부호 비트와 함께 임계치를 전송할 수 있다. 디코더, 인코더 및 전송기는 적어도 하나의 프로세서 하드웨어 모듈 또는 적어도 하나의 소프트웨어 모듈로 구현될 수 있다.
뉴럴 네트워크(100)는 뉴럴 네트워크(100)의 설정 값이 고정된 정적 설정(static configuration) 또는 뉴럴 네트워크(100)의 설정 값이 동적으로 변경되는 동적 설정(dynamic configuration)에 따라 동작할 수 있다. 설정 값은 임계치 및 비트 정밀도를 포함할 수 있다. 동적 설정에서 설정 값은 주기적으로 변경되거나, 미리 정해진 조건이 만족되는 경우에 변경되거나, 혹은 요청에 따라 변경될 수 있다. 예를 들어, 임계치는 단위 시간 동안 발생하는 이벤트의 수에 따라 조절될 수 있다. 보다 구체적으로, 단위 시간 동안 발생하는 이벤트의 수가 미리 정해진 제1 임계치를 초과할 때, 이벤트를 감소시키기 위해, 임계치가 증가될 수 있다. 또한, 단위 시간 동안 발생하는 이벤트의 수가 미리 정해진 제2 임계치 미만으로 떨어질 때, 이벤트를 증가시키기 위해, 임계치가 감소될 수 있다. 여기서, 제1 임계치는 제2 임계치보다 클 수 있다.
설정 값들의 동적인 변경은 실제 구현에 있어서 하드웨어 자원의 최적화에 도움을 줄 수 있다. 예를 들어, 설정 값은 요구 정확도 및 가용 자원 중 적어도 하나에 따라 조절될 수 있다. 구체적으로, 검출에 요구되는 정확도에 비해, 자원의 소모나 지연을 감소시키는 것에 우선 순위가 부여된 경우, 우선 순위에 맞게 비트 정밀도가 감소되거나, 임계치가 증가될 수 있다. 모바일 전자기기에서, 명령들의 시퀀스를 시작하는 핵심 키워드들을 검출하기 위해 요구 정확도가 낮게 설정될 수 있고, 이러한 핵심 키워드들의 검출에 따라, 높은 정확도에서 연속적인 단어들이 검출될 수 있다. 핵심 키워드들 이외의 나머지 키워드들에 관해서는 요구 정확도가 낮게 설정될 수 있다.
뉴럴 네트워크(100)의 인공 뉴런들은 자신의 상태를 저장함으로써, 스테이트-풀(stateful) 동작을 수행할 수 있다. 보다 구체적으로, 인공 뉴런들은 액티베이션의 변화량을 계산하기 위해, 이벤트가 발생한 시점의 액티베이션을 저장할 수 있다. 아래에서 상세히 설명되겠지만, 액티베이션의 변화량은 현재 액티베이션 및 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여 결정될 수 있다. 이 경우, 이전에 발생한 이벤트에 대응하는 액티베이션이 저장되어 있어야, 액티베이션의 변화량이 계산될 수 있다. 전통적인 피드포워드 네트워크의 인공 뉴런들은 상태를 저장하지 않고 스테이트-리스(stateless) 동작을 수행하며, 모든 인공 뉴런들의 상태는 새로운 입력 샘플들로부터 다시 설정된다. 뉴럴 네트워크(100)는 이벤트의 발생에 따라 부분적으로 업데이트되므로, 모든 입력 샘플마다 모든 네트워크를 업데이트하는 것에 비해, 상당한 양의 연산이 절감될 수 있다.
구체적으로, 뉴럴 네트워크를 동작시키기 위한 계산에 관한 비용은 뉴럴 네트워크의 아키텍처 및 뉴럴 네트워크에 필요한 비트 정밀도에 의존적이다. 네트워크의 아키텍처는 인공 뉴런의 모델, 레이어의 수, 레이어 별 뉴런들의 수 및 레이어 별 시냅스들의 수 등에 의해 결정될 수 있다. 네트워크 파라미터들의 계산을 위한 비용에 관해, 2-레이어의 완전 연결 네트워크의 순차적인 업데이트를 예시로 설명한다.
첫 번째 레이어가 N개의 인공 뉴런들을 포함하고, 두 번째 레이어가 M개의 인공 뉴런들을 포함하며, b 비트의 정밀도가 이용되고, 뉴런 동작의 복잡성이 c라고 가정하면, 완전 연결 네트워크의 순차적인 업데이트를 위해서는 매 스텝마다 N*M*b*c 비트의 동작들이 계산을 위한 비용이 된다. 이 경우, 인공 뉴런의 입력이 변하지 않거나, 0에 머무르는 것과 같은 상황에, 동작들 중에 어느 하나가 활성화되지 않는다면, 계산을 위한 비용은 감소될 수 있다.
α가 계산을 활성화하는 입력의 비율이라고 하면, 뉴럴 네트워크(100)는 매 스텝마다 N*M*b*c*α의 동작들을 수행하게 된다. α=1인 경우, N*M*b*c*α의 동작들이 수행된다. α=0인 경우, 0의 동작들이 수행된다. 또한, 뉴럴 네트워크(100)에서는 b를 작은 값으로 설정함으로써, 계산에 관한 비용이 감소될 수 있다. b=1인 경우, 뉴럴 네트워크(100)는 바이너리-값의 연결들로 동작할 수 있다. 네트워크의 정확도와 비트 정밀도 간에는 트레이드 오프 관계가 있지만, 네트워크의 정확도 및 비트 정밀도를 모두 만족시키는 적절한 b가 선택될 수 있다. 한편, 실시간 어플리케이션은 종종 프레임 별 변화가 작은 입력을 수신할 수 있다. 예를 들어, 입력 영상의 연속된 프레임 사이에는 동일한 픽셀이 다수 포함될 수 있다. 이에 따라, 중첩적인(redundant) 계산들이 수행될 수 있다. 뉴럴 네트워크(100)는 이러한 중첩적인 계산들을 감소시킬 수 있다.
뉴럴 네트워크(100)는 인공 뉴런들이 출력 신호를 전송할 때, 모든 인공 뉴런의 상태를 환기(refresh)하는 환기 모드로 동작할 수 있다. 환기 모드는 잡음에 의해 야기되는 액티베이션의 에러가 축적되는 것에서 벗어나기 위해 사용될 수 있다. 환기 모드는, 뉴럴 네트워크(100)의 입력이, 모든 채널의 주기적인 전체 정보(예를 들어, 이미지와 같은 프레임화된 입력)와, 프레임들 사이의 특정 채널들의 업데이트 이벤트들의 혼합일 때, 정보를 충분히 처리하기에 적합할 수 있다. 일반 모드에는 이벤트에 따른 동작이 출력 신호의 전송에 따라 종료되는 것에 비해, 환기 모드에서는 프레임화된 입력이 모두 처리될 수 있다. 환기 모드에 따른 동작은 주기적으로 처리되거나, 요청에 의해 처리될 수 있다.
예를 들어, 인공 뉴런은 미리 정해진 동작 모드(예를 들어, 환기 모드)를 지시하는 제어 신호를 수신할 수 있다. 이 경우, 인공 뉴런은 입력 시냅스를 통하여 동작 모드에 대응하여 프레임화된 입력 신호를 수신할 수 있다. 인공 뉴런은 프레임화된 입력 신호에 기초하여 자신의 상태(예를 들어, 액티베이션 등)를 결정할 수 있다.
도 2는 인공 뉴런의 입력 및 출력 예시를 나타낸 도면이다. 도 2를 참조하면, 이전 레이어(210)의 인공 뉴런들, 인공 뉴런(225) 및 다음 레이어(230)의 인공 뉴런들이 도시되어 있다.
인공 뉴런(225)은 인공 뉴런(225)의 이전 액티베이션(v_p) 및 입력 신호들(i1, i2, i3)에 기초하여, 인공 뉴런(225)의 현재 액티베이션(v_c)를 결정할 수 있다. 인공 뉴런(225)은 수학식 3을 이용하여 현재 액티베이션(v_c)를 결정할 수 있다.
Figure 112017040832762-pat00003
수학식 3에서, v_c는 현재 액티베이션을 나타내고, f는 활성 함수를 나타내며, v_p는 이전 액티베이션을 나타내고, i는 입력 신호의 합을 나타내며, φ는 인공 뉴런의 파라미터를 나타낸다. 인공 뉴런의 파라미터는 인공 뉴런의 바이어스 및 인공 뉴런의 상태를 포함할 수 있다. 입력 신호의 합(i)는 입력 신호들(i1, i2, i3)의 합에 의해 결정될 수 있다. 입력 신호들(i1, i2, i3)은 이전 레이어(210)의 인공 뉴런들의 출력 신호들 및 인공 뉴런(225)의 입력 시냅스들의 가중치들 사이의 곱에 기초하여 결정될 수 있다. 현재 액티베이션(v_c)가 결정된 이후에, 인공 뉴런(225)은 현재 액티베이션(v_c)를 저장할 수 있다.
인공 뉴런(225)은 현재 액티베이션(v_c) 및 인공 뉴런(225)에 의하여 이전에 발생한 이벤트(E_P)에 대응하는 액티베이션(v_e)에 기초하여, 액티베이션의 변화량(△v)을 결정할 수 있다. 인공 뉴런(225)은 현재 액티베이션(v_c)에서 액티베이션(v_e)를 차감한 값을 액티베이션의 변화량(△v)으로 결정할 수 있다.
인공 뉴런(225)은 액티베이션의 변화량(△v) 및 임계치(VT)에 기초하여, 새로운 이벤트(E_N)의 발생 여부를 결정할 수 있다. 구체적으로, 인공 뉴런(225)은 액티베이션의 변화량(△v)과 임계치(VT)의 교차에 따라 새로운 이벤트(E_N)의 발생을 결정할 수 있다. 임계치(VT)는 증가 방향의 제1 임계치 및 감소 방향의 제2 임계치를 포함할 수 있다. 따라서, 제1 임계치는 제2 임계치보다 클 수 있다. 이 경우, 액티베이션의 변화량(△v)이 제1 임계치를 초과하거나, 액티베이션의 변화량(△v)이 제1 임계치 미만으로 감소함에 따라, 인공 뉴런(225)은 새로운 이벤트(E_N)의 발생을 결정할 수 있다.
인공 뉴런(225)은 새로운 이벤트(E_N)의 발생에 따라 출력 시냅스로 새로운 이벤트(E_N)에 대응하는 출력 신호(o)를 전송할 수 있다. 출력 신호(o)는 출력 시냅스의 가중치(w1, w2, w3)와 곱해질 수 있다. 따라서, 다음 레이어(230)에 포함된 인공 뉴런들은 인공 뉴런(225)과 연결된 출력 시냅스의 가중치에 따라 서로 다른 입력 신호를 수신할 수 있다.
상술된 것처럼, 일 실시예에 따르면, 기본 DCN에서 출력 신호(o)는 액티베이션의 변화량(△v)과 임계치(VT)의 교차 방향을 나타내는 부호 비트를 포함할 수 있다. 예를 들어, 액티베이션의 변화량(△v)이 제1 임계치를 초과할 경우, 인공 뉴런(225)은 다음 레이어(230)에 포함된 인공 뉴런들로 단일 양의 비트인 +1을 전송할 수 있다. 또한, 액티베이션의 변화량(△v)이 제2 임계치 미만으로 감소할 경우, 인공 뉴런(225)은 다음 레이어(230)에 포함된 인공 뉴런들로 단일 음의 비트인 -1을 전송할 수 있다. 이 경우, 출력 시냅스를 통해 다음 레이어(230)의 인공 뉴런들로 임계치(VT)가 함께 전송될 수 있고, 다음 레이어(230)의 인공 뉴런들은 인공 뉴런(225)으로부터 수신한 부호 비트 및 임계치(VT)에 기초하여 자신의 액티베이션을 결정할 수 있다.
다른 실시예에 따르면, 아날로그-전송 DCN에서 인공 뉴런(225)은 액티베이션의 변화량(△v)을 미리 결정된 비트 정밀도로 근사화할 수 있고, 출력 신호(o)는 근사화된 액티베이션의 변화량(v_a)을 포함할 수 있다. 예를 들어, 액티베이션의 변화량(△v)이 제1 임계치를 초과하거나, 제2 임계치 미만으로 감소할 때, 인공 뉴런(225)은 16비트로 근사화된 액티베이션의 변화량(v_a)을 다음 레이어(230)에 포함된 인공 뉴런들로 전송할 수 있다. 이 경우, 다음 레이어(230)의 인공 뉴런들은 인공 뉴런(225)으로부터 수신한 근사화된 액티베이션의 변화량(v_a)을 이용하여 자신의 액티베이션을 결정할 수 있으므로, 임계치(VT)는 전송되지 않는다.
인공 뉴런(225)은 출력 신호(o)를 다음 레이어(230)의 인공 뉴런들로 전송한 이후에 임계치(VT)를 업데이트할 수 있다. 인공 뉴런(225)은 새로운 이벤트(E_N)를 발생시킨 현재 액티베이션(v_c)에 기초하여 임계치(VT)를 업데이트할 수 있다. 예를 들어, 인공 뉴런(225)은 현재 액티베이션(v_c)와 유사한 값으로 임계치(VT)를 업데이트할 수 있다. 또는, 인공 뉴런(225)은 고정 간격, 로그 간격, 또는 자릿수 등 다양한 방식에 따라 임계치를 조절할 수 있다. 임계치의 조절에 관해서는 추후 상세히 설명한다.
도 3은 일 실시예에 따른 이벤트 결정 및 출력 신호를 나타낸 도면이다. 도 3을 참조하면, 기본 DNC에서 시간에 따른 인공 뉴런의 액티베이션 및 이벤트에 따른 출력 신호가 도시되어 있다.
시간(t1)에서 액티베이션의 변화량이 임계치(VT1)를 초과함에 따라, 이벤트(E1)가 발생될 수 있다. 액티베이션의 변화량이 증가 방향의 제1 임계치(VT1)를 초과하였으므로, 출력 신호(o)로 +1을 지시하는 단일 비트(예를 들어, '참'의 논리 값을 가지는 신호)가 전송될 수 있다. 출력 신호(o)가 전송된 이후에, 임계치(VT1)는 그대로 유지되거나, 임계치(VT2)로 업데이트될 수 있다.
시간(t2) 및 시간(t3)에서 액티베이션의 변화량이 임계치(VT2) 및 임계치(VT3)를 초과함에 따라, 이벤트(E2) 및 이벤트(E3)가 발생될 수 있다. 이 때, 출력 신호(o)로 +1을 지시하는 단일 비트가 전송될 수 있다. 시간(t2) 이후에 임계치(VT2)는 그대로 유지되거나 임계치(VT3)로 업데이트될 수 있고, 시간(t3) 이후에 임계치(VT3)는 그대로 유지되거나 임계치(VT4)로 업데이트될 수 있다.
시간(t4)에서 액티베이션의 변화량이 임계치(VT4) 미만으로 감소함에 따라, 이벤트(E4)가 발생될 수 있다. 액티베이션의 변화량이 감소 방향의 제2 임계치(VT4) 미만으로 감소하였으므로, 출력 신호(o)로 -1을 지시하는 단일 비트(예를 들어, '거짓'의 논리 값을 가지는 신호)가 전송될 수 있다. 출력 신호(o)가 전송된 이후에, 임계치(VT4)는 그대로 유지되거나 임계치(VT5)로 업데이트될 수 있다.
설명의 편의를 위하여, 도 3의 예시에서, 임계치는 업데이트되지 않고 유지되고 있으나, 상술된 것과 같이 이벤트의 발생에 반응하여 임계치가 업데이트 될 수 있다.
도 4는 다른 실시예에 따른 이벤트 결정 및 출력 신호를 나타낸 도면이다. 도 4를 참조하면, 아날로그 전송 DCN에서 시간에 따른 인공 뉴런의 액티베이션 및 이벤트에 따른 출력 신호가 도시되어 있다.
시간(t1)에서 액티베이션의 변화량이 임계치(VT1)를 초과함에 따라, 이벤트(E1)가 발생될 수 있다. 인공 뉴런은 액티베이션의 변화량 +1을 미리 결정된 비트 정밀도로 근사화할 수 있다. 인공 뉴런은 근사화된 액티베이션의 변화량 +1을 출력 신호(o)로 전송할 수 있다. 출력 신호(o)가 전송된 이후에, 임계치(VT1)는 그대로 유지되거나 임계치(VT2)로 업데이트될 수 있다.
시간(t2)에서 액티베이션의 변화량이 임계치(VT2)를 초과함에 따라, 이벤트(E2)가 발생될 수 있다. 인공 뉴런은 액티베이션의 변화량 +4.2를 미리 결정된 비트 정밀도로 근사화할 수 있다. 인공 뉴런은 근사화된 액티베이션의 변화량 +4.2를 출력 신호(o)로 전송할 수 있다. 출력 신호(o)가 전송된 이후에, 임계치(VT2)는 그대로 유지되거나 임계치(VT3)로 업데이트될 수 있다.
시간(t3)에서 액티베이션의 변화량이 임계치(VT3) 미만으로 감소함에 따라, 이벤트(E3)가 발생될 수 있다. 인공 뉴런은 액티베이션의 변화량 -1을 미리 결정된 비트 정밀도로 근사화할 수 있다. 인공 뉴런은 근사화된 액티베이션의 변화량 -1을 출력 신호(o)로 전송할 수 있다. 출력 신호(o)가 전송된 이후에, 임계치(VT3)는 그대로 유지되거나 임계치(VT4)로 업데이트될 수 있다.
설명의 편의를 위하여, 도 4의 예시에서, 임계치는 업데이트되지 않고 유지되고 있으나, 상술된 것과 같이 이벤트의 발생에 반응하여 임계치가 업데이트될 수 있다.
도 5는 일 실시예에 따른 임계치의 조절을 나타낸 도면이다. 도 5를 참조하면, 로그-간격 임계치 DCN에서 시간에 따른 인공 뉴런의 액티베이션 및 이벤트에 따른 출력 신호가 도시되어 있다.
시간(t1)에서 액티베이션의 변화량이 임계치(VT1)를 초과함에 따라, 이벤트(E1)가 발생될 수 있다. 액티베이션의 변화량이 증가 방향의 제1 임계치(VT1)를 초과하였으므로, 인공 뉴런은 출력 신호(o)로 +1을 지시하는 단일 비트를 전송할 수 있다. 또는, 인공 뉴런은 액티베이션의 변화량 +1을 미리 결정된 비트 정밀도로 근사화할 수 있다. 이 경우, 인공 뉴런은 근사화된 액티베이션의 변화량 +1을 출력 신호(o)로 전송할 수 있다.
출력 신호(o)가 전송된 이후에, 임계치(VT1)는 임계치(VT2)로 업데이트될 수 있다. 예를 들어, 임계치(VT2)는 로그 간격에 따라 임계치(VT1)의 2배로 설정될 수 있다. 도 5에서, 임계치(VT1)는 1이고, 임계치(VT2)는 2일 수 있다.
시간(t2)에서 액티베이션의 변화량이 임계치(VT2)를 초과함에 따라, 이벤트(E2)가 발생될 수 있다. 액티베이션의 변화량이 증가 방향의 제1 임계치(VT1)를 초과하였으므로, 인공 뉴런은 출력 신호(o)로 +1을 지시하는 단일 비트를 전송할 수 있다. 또는, 인공 뉴런은 액티베이션의 변화량 +2를 미리 결정된 비트 정밀도로 근사화하고, 근사화된 액티베이션의 변화량 +2을 출력 신호(o)로 전송할 수 있다.
출력 신호(o)가 전송된 이후에, 임계치(VT2)는 임계치(VT3)로 업데이트될 수 있다. 예를 들어, 임계치(VT3)는 로그 간격에 따라 임계치(VT2)의 2배로 설정될 수 있다. 도 5에서, 임계치(VT3)는 4일 수 있다. 액티베이션의 증가에 따라, 임계치도 증가함으로써, 더욱 큰 변화량에서 이벤트가 발생할 수 있다. 액티베이션의 절대량에 비하여 상대적으로 작은 변화량은 그 의미가 크지 않을 수 있기 때문에, 임계치를 조절함으로써, 의미 없는 이벤트의 발생을 억제할 수 있다.
도 6은 일 실시예에 따른 클러스터의 변경을 나타낸 도면이다. 도 6을 참조하면, 클러스터들(610 내지 630)이 도시되어 있다.
상술된 것처럼, 인공 뉴런(N)은 자신이 속한 클러스터의 변경에 따라 이벤트(E)의 발생을 결정할 수 있다. 보다 구체적으로, 인공 뉴런(N)은 인공 뉴런(N)의 이전 액티베이션(v_p), 및 인공 뉴런(N)의 입력 시냅스를 통하여 수신되는 입력 신호(i)에 기초하여, 인공 뉴런(N)의 현재 액티베이션(v_c)를 결정하고, 이전 액티베이션(v_p)가 속한 제1 클러스터 및 현재 액티베이션(v_c)가 속한 제2 클러스터에 기초하여, 이벤트(E)의 발생 여부를 결정할 수 있다. 인공 뉴런(N)은 제1 클러스터와 제2 클러스터가 상이한 경우, 이벤트(E)의 발생을 결정할 수 있다. 인공 뉴런(N)은 이벤트의 발생에 따라 출력 시냅스로 이벤트(E)에 대응하는 출력 신호(o)를 전송할 수 있다.
클러스터들(610 내지 630)은 각각 상이한 범위를 가질 수 있다. 예를 들어, 클러스터(620)는 0이상 1미만의 범위를 가질 수 있고, 클러스터(610)는 1이상 10미만의 범위를 가질 수 있고, 클러스터(630)는 10이상의 범위를 가질 수 있다. 클러스터(620)는 제1 레벨에 해당하고, 클러스터(610)는 제2 레벨에 해당하며, 클러스터(630)는 제3 레벨에 해당할 수 있다. 이 경우, 인공 뉴런은 자신의 현재 액티베이션(v_c)에 따라 클러스터들(610 내지 630) 중 어느 하나에 속할 수 있다. 예를 들어, 0이상 1미만의 액티베이션을 갖는 인공 뉴런들은 클러스터(620)에 속할 수 있다. 클러스터들의 수 및 클러스터들의 범위는 뉴럴 네트워크에 속한 인공 뉴런들의 액티베이션의 범위에 따라 결정될 수 있다. 보다 구체적으로, 학습이 완료된 인공 뉴런들의 전형적인 액티베이션의 분포가 0, 1 및 10을 경계로 분리되어 있는 경우, 클러스터들은 상술된 0, 1 및 10을 경계로 하는 범위를 가질 수 있다.
출력 신호(o)는 클러스터의 변화 방향 및 클러스터의 변화량 중 적어도 하나를 나타내는 적어도 하나의 변경 비트를 포함할 수 있다. 예를 들어, 인공 뉴런(N)이 속한 클러스터가 상위 클러스터로 변경된 경우, 인공 뉴런은 +1을 지시하는 변경 비트를 전송할 수 있다. 상술된 예시에 따라, 클러스터(610)는 클러스터(620)의 상위 클러스터에 해당하고, 클러스터(630)는 클러스터(610)의 상위 클러스터에 해당한다. 또한, 클러스터(630)는 클러스터(620)의 두 레벨 상위 클러스터에 해당한다. 클러스터가 두 레벨 이상 변한 것을 나타내기 위해, 변경 비트는 두 비트 이상일 수 있다. 예를 들어, 인공 뉴런(N)이 속한 클러스터가 두 레벨 하위 클러스터로 변경된 경우, 인공 뉴런은 -2를 지시하는 변경 비트를 전송할 수 있다.
보다 구체적으로, 인공 뉴런(N)의 이전 액티베이션(v_p)가 1.5이고, 인공 뉴런(N)의 현재 액티베이션(v_c)가 10.5인 경우, 인공 뉴런(N)은 클러스터(610)에서 클러스터(630)으로 이동하게 된다. 이 경우, 인공 뉴런(N)은 출력 신호(o)로 +1을 지시하는 변경 비트를 전송할 수 있다. 또한, 인공 뉴런(N)의 이전 액티베이션(v_p)가 1.5이고, 인공 뉴런(N)의 현재 액티베이션(v_c)가 0.5인 경우, 인공 뉴런(N)은 클러스터(610)에서 클러스터(620)으로 이동하게 된다. 이 경우, 인공 뉴런(N)은 출력 신호(o)로 -1을 지시하는 변경 비트를 전송할 수 있다. 또한, 인공 뉴런(N)의 이전 액티베이션(v_p)가 0.5이고, 인공 뉴런(N)의 현재 액티베이션(v_c)가 10.5인 경우, 인공 뉴런(N)은 클러스터(620)에서 클러스터(630)으로 이동하게 된다. 이 경우, 인공 뉴런(N)은 출력 신호(o)로 +2를 지시하는 변경 비트를 전송할 수 있다.
전술한 바와 같이, 일 실시예에 따르면, DCN은 ANN 혹은 SNN에 적용될 수 있다. 아래에서는 도 7 내지 도 9를 참조하여 DCN이 ANN의 일종인 RNN(recurrent neural network)에 적용되는 실시예를 설명한다. 아래의 설명은 DCN의 적용 범위를 제한하는 것은 아니며, DCN은 아래의 설명과 달리 RNN 이외의 ANN, 혹은 SNN에 적용될 수 있다.
아래 실시예들은 델타 네트워크라고 불릴 수 있는 RNN 아키텍처를 제안한다. 델타 네트워크는 상술된 DCN에 대응할 수 있다. 델타 네트워크에서 각각의 뉴런은 자신의 액티베이션의 변화가 문턱 값(threshold)을 초과한 때에만 값을 출력할 수 있다.
빅 데이터 세트를 처리하는 능력, 예를 들어 GPU와 같은 컴퓨터 자원 및 트레이닝 알고리즘의 큰 향상과 같은 인자(factor)들의 결합으로 인하여, 일시적인 시퀀스의 처리에 RNN이 이용될 수 있다. 예를 들어, RNN을 이용하여 자연어 처리, 음성 인식, 및 구조화된 예측을 위한 주의(attention) 기반의 모델과 같은 어플리케이션이 구현될 수 있다. RNN은 메모리를 장착하고, LSTM(long short term memory)과 같은 게이팅 유닛(gating unit)을 이용한다. 게이트화된 회기 유닛(gated recurrent unit: GRU)는 RNN의 트레이닝 과정을 크게 향상시킬 수 있다. 그러나, RNN은 뉴런 액티베이션을 업데이트하기 위해 매트릭스 연산에 크게 의존하므로, RNN을 구동하기 위해서는 많은 자원이 요구된다.
실시예들에 따르면, RNN을 구동하기 위한 자원을 감소시키기 위하여, 입력 스트림의 특성 및 입력 스트림에 관한 신경 표현(neural representation)의 특성을 이용할 수 있다. 여기서, 신경 표현은 전술된 뉴런의 액티베이션에 대응할 수 있다.
일반적으로 뉴럴 네트워크로의 입력은 시간적 자기 상관(temporal autocorrelation)이 높은 레벨을 가질 수 있다. 입력이 시간에 따라 천천히 변화하는 경우 시간적 자기 상관이 높은 것으로 볼 수 있다. 예를 들어, 프레임 간의 변화가 적은 비디오 영상의 경우 시간적 자기 상관이 높게 나타날 수 있다. 뉴럴 네트워크가 시간적 자기 상관이 높은 레벨의 입력을 처리하는 경우, 뉴럴 네트워크의 상태는 천천히 변하는(slow-changing) 액티베이션들을 생성할 수 있다.
도 7은 표준 비디오 데이터 세트를 처리하는 표준 컨볼루셔널 네트워크(standard convolutional network)의 특성을 나타내는 도면이다. 도 7을 참조하면, 표준 비디오 데이터 세트를 처리하는 표준 컨볼루셔널 네트워크의 상태는 천천히 변하는 액티베이션을 생성할 수 있다. 도 7에서 시간(또는 프레임)의 흐름에 따른 액티베이션은 매우 리던턴트(highly redundant)하다.
예를 들어, 시간의 흐름에 따라 액티베이션은 거의 변하지 않는다. 도 7은 장면 인식을 위한 클립에서 상위 1000개의 프레임들이 표준 컨볼루셔널 네트워크에 인가될 때, 탑 레벨 특징 벡터 레이어의 임의의 상위 50개의 특징이 시간의 흐름에 따라 플롯된 결과일 수 있다. 도 7에서 피크는 시간이 지남에 따라 상대적으로 일정하게 유지되는 경향이 있어서, 시간에 따라 무작위의 액티베이션이 나타나기보다 액티베이션에 일관성이 나타난다.
도 8은 시간의 경과에 따른 RNN 액티베이션의 안정성을 나타내는 도면이다. 도 8에는 숫자 인식 데이터 세트가 적용된 RNN의 액티베이션 특성이 나타나 있다. 보다 구체적으로, 도 8의 위 도면은 음성 숫자에 대한 MFCC(mel-frequency cepstral coefcients) 특징을 보여준다. 도 8의 아래 도면은 MFCC 특징에 대한 응답으로, 신경 네트워크의 액티베이션을 보여준다.
도 8을 참조하면, 신경 입력을 처리하는 리커런트 뉴럴 네트워크(recurrent neural network: RNN)의 계산에서도 천천히 변하는 액티베이션 특징이 나타날 수 있다. 예를 들어, 입력에 길고 안정된 표현이 존재하면, 시간의 경과에 따른 액티베이션에 변화가 느리게 발생하며, 시간의 흐름에 따라 액티베이션에 높은 수준의 안정성이 나타날 수 있다.
<델타 네트워크의 개념>
델타 네트워크의 목적은 가중치 매트릭스(weight matrix) 및 상태 벡터(state vector)와 같이 밀집된(dense) 매트릭스-벡터 곱을 완전 합(full addition)과 결합된 희소(sparse) 매트릭스-벡터 곱으로 변환하는 것이다. 이 변환을 통해 메모리 액세스 및 연산이 감소할 수 있다. 이 변환을 나타내기 위해 매트릭스-벡터 곱이 수학식 4와 같이 정의될 수 있다.
Figure 112017040832762-pat00004
수학식 4에서 r은 리커런트 뉴럴 네트워크의 파라미터들 중 리셋 게이트의 값을 나타낸다. 아래에서는 델타 네트워크의 개념을 r을 참조하여 설명하겠지만, 아래의 설명은 리커런트 뉴럴 네트워크의 다른 파라미터에도 적용될 수 있다. 수학식 4에 따라 사이즈 n×n의 매트릭스 W 및 사이즈 n의 벡터 x가 계산되기 위해, n2번의 연산이 사용되고, n2+n번 읽기 동작이 수행되고, n번 쓰기 동작이 수행될 수 있다. 긴 입력 벡터 시퀀스 xt를 위해 복수의 매트릭스-벡터 곱이 고려될 수 있다. 여기서, t는 1, 2, ..., n이다. 복수의 매트릭스-벡터 곱은 수학식 5에 따라 회귀적으로 계산될 수 있다.
Figure 112017040832762-pat00005
수학식 5에서, Δ = xt xt1이고, rt1은 이전 계산으로부터 획득된 결과이다. 따라서, t에서 수학식 5의 계산 비용은 0이다. 또한, x0 = 0이고, r0 = 0이다. 여기서, Δ는 입력 델타 벡터(input delta vector)로 지칭될 수 있다. 만약 Δ가 히든 상태 벡터(hidden state vector)에 관한 것이라면, Δ는 히든 상태 델타 벡터(hidden state delta vector)로 지칭될 수 있다. Δ가 희소(sparse) 벡터라면, 수학식 5와 같은 형식은 계산 비용 측면에서 유리할 수 있다. 보다 상세하게, rt은 Δ의 비용의 합(사이즈 n의 벡터를 위해 n개의 연산), 저장된 이전 결과 rt- 1를 더하는 비용(n개의 연산), 및 희소 매트릭스 곱 WΔ의 비용(n×n 가중치 매트릭스 및 점유율(occupancy ratio) s의 희소 벡터를 위한 n2개의 연산)으로 계산될 수 있다. 유사하게, rt를 계산하기 위한 메모리 비용은 매트릭스 W를 위한 n×s개의 가중치를 인출(fetch)하는 것, Δ를 위한 2n개의 값, rt-1을 위한 n개의 값, 및 결과를 나타내는 n개의 값을 저장하는 것에 기초하여 결정될 수 있다.
x에 작은 변화가 있는 경우에도 계산 비용이 절약될 수 있다는 점을 명확히 하기 위해, 문턱 값의 쓰임을 설명한다. 실시예에 따른 계산 비용은 수학식 6으로 나타낼 수 있다.
Figure 112017040832762-pat00006
또한, 메모리 비용은 수학식 7로 나타낼 수 있다.
Figure 112017040832762-pat00007
점유율이 10%라면, 수학식 7에 따라
Figure 112017040832762-pat00008
이다. 따라서, 연산 속도가 10배 증가할 수 있다.
Figure 112017040832762-pat00009
에 의해 계산되는 0의 수에 의해 속도 증가(speed up)가 주어질 수 있다. 실제로, 속도 증가는 데이터 스트림에 의해 결정될 수 있다. 예를 들어, 속도 증가는 xt 및 xt -1 사이에 얼마나 많은 값이 동일하게 머무르는지에 의해 결정될 수 있다. RNN의 입력, 중간 액티베이션 값, 및 출력을 나타내는 벡터 x가 타임 스텝마다 천천히 변하는 경우, 입력 값 xt 및 xt -1은 매우 리던턴트(redundant)해질 수 있고, 낮은 점유율 s 및 이에 상응하는 증가된 속도 증가가 이루어질 수 있다.
<델타 네트워크 GRUs>
GRU에서, 델타 네트워크 연산으로 대체될 수 있는 매트릭스-벡터 곱 연산이 몇 차례 나타날 수 있다. 아래에서는 델타 네트워크가 GRU에 적용되는 경우를 RNN에 관한 실시예로서 설명하겠지만, 델타 네트워크는 LSTM과 같은 다른 방식의 RNN에도 적용될 수 있다. 수학식 8은 GRU의 파라미터들을 나타낸다. 구체적으로, 수학식 8에서 r은 리셋 게이트 값을 나타내고, z는 업데이트 게이트 값을 나타내고, c는 출력 히든 상태 벡터를 나타내고, h는 업데이트된 히든 상태 벡터를 나타낸다. 또한, 수학식 8에서 굵게 표시된 부분은 매트릭스-벡터 곱 연산을 나타낸다. 수학식 8에서 W 및 x는 임의로 전치(transposition)될 수 있다.
Figure 112017040832762-pat00010
수학식 8에서 Wxr, Wxu, Wxc는 각각 입력 벡터 x를 위한 가중치들을 나타내고, Whr, Whu, Whc는 각각 히든 상태 벡터 h를 위한 가중치들을 나타낸다. 아래에서, Wxr, Wxu, Wxc는 Wx로 대표될 수 있고, Whr, Whu, Whc는 Wh로 대표될 수 있다. t는 타임 스탬프를 나타낼 수 있다. 수학식 8에서 굵게 표시된 부분은 수학식 5로 정의된 델타 업데이트로 대체될 수 있고, 이는 수학식 9으로 나타낼 수 있다.
Figure 112017040832762-pat00011
수학식 9에 따르면, t-1에서의 입력 벡터 xt -1 및 t에서의 입력 벡터 xt 간의 차에 기초하여, t에서의 입력 델타 벡터 Δx가 획득될 수 있고, t-2에서의 히든 상태 벡터 ht-2 및 t-1에서의 히든 상태 벡터 ht-2 간의 차에 기초하여, t-1에서의 히든 상태 델타 벡터 Δh가 획득될 수 있다. 또한, t에서의 입력 델타 벡터 Δx 및 입력 벡터 x를 위한 가중치 Wx간의 곱, 및 t-1에서의 히든 상태 델타 벡터 Δh및 히든 상태 벡터 h를 위한 가중치 Wh 간의 곱에 기초하여, 파라미터들 r, u 및 c가 결정될 수 있다. 결정된 파라미터들 r, u 및 c에 기초하여, t에서의 히든 상태 벡터 ht가 결정될 수 있다.
수학식 9에서 zxr, zxu, zxc, zhr, zhu, zhc는 입력 또는 히든 상태를 위한 이전 계산의 저장된 결과로서 회귀적으로 정의될 수 있다. 예를 들어, zxr은 수학식 10으로 나타낼 수 있다.
Figure 112017040832762-pat00012
수학식 10에 따른 연산은 zxu, zxc, zhr, zhu, zhc에 유사하게 적용될 수 있다. x0에서의 초기 조건은 z0 := 0이다. 또한, 상술된 수학식에 나타난 것처럼, 저장된 완전-랭크(full-rank) 이전-액티베이션(pre-activation) 상태 및 바이어스를 포함하는, 다수의 추가적인 텀이 하나의 값으로 병합될 수 있다. 병합된 하나의 값은 게이트 타입 별로 단지 하나 혹은 둘의 저장된 벡터 값으로 나타날 수 있다. 예를 들어, 저장된 벡터 값은 수학식 11으로 나타낼 수 있다.
Figure 112017040832762-pat00013
최종적으로, 상술된 초기 상태의 조건에 따라, 저장된 값 M은 보정된 바이어스로 초기화될 수 있다. 예를 들어, Mr,0 = br, Mu,0 = bu, Mxc,0 = bc, and Mhr,0 = 0일 수 있고, 이들을 통해 델타 네트워크 GRU를 위해 수학식 12가 정의될 수 있다.
Figure 112017040832762-pat00014
<델타 네트워크에서의 근사 계산>
상술된 수학식들은 네트워크에서 최초의 계산으로서의 정확히 같은 답을 주기 위해 설계될 수 있다. 예를 들어, t-1에서의 입력 벡터 및 t에서의 입력 벡터 간의 차가 미리 정해진 임계치보다 큰 경우, t-1에서의 입력 벡터 및 t에서의 입력 벡터 간의 차가 입력 델타 벡터로 결정될 수 있고, t-1에서의 입력 벡터 및 t에서의 입력 벡터 간의 차가 미리 정해진 임계치보다 작은 경우, 제로 벡터가 입력 델타 벡터로 결정될 수 있다. 히든 상태 델타 벡터도 동일한 방식으로 결정될 수 있다.
상술된 수학식들을 통해 응용적인 접근이 가능하다. 예를 들어, 액티베이션의 변화가 0인 경우에 벡터-곱 연산이 생략(skip)되는 대신에, 액티베이션의 변화가 임의의 문턱 값
Figure 112017040832762-pat00015
보다 작은 경우에 벡터-곱 연산이 생략될 수 있다. 여기서 액티베이션의 변화는 전술된 델타 벡터들에 대응될 수 있다. 이 것은 정확히 같은 결과를 생산하지는 않지만, 근사적으로 정확한 결과를 생성할 수 있다.
도 9는 델타 네트워크를 통해 획득된 계산 결과를 나타낸다. 도 9에서, 0이 아닌 값은 검은 색으로 표시된다. 델타 벡터의 가중치 행렬 및 희소성을 통해, 희소성의 효과를 알 수 있다. 도 9의 실시예에서, 델타 벡터가 약 20%의 점유율을 가진다면 가중치 행렬의 약 20%만 인출될 수 있다. 가중치 행렬이 20%의 점유율을 갖는다는 것을 추가로 고려하면, 본래 가중치 행렬의 4%만 실제 계산에 사용되는 것으로 나타날 수 있다.
0이 아닌 문턱 값이 사용되는 경우, 여러 타임 스텝 동안 에러가 축적될 수 있다. 예를 들어, 입력 값 xt가 매 타임 스텝 동안 거의
Figure 112017040832762-pat00016
만큼 증가하는 경우, 액티베이션의 중대한 변화가 축적됨에도 불구하고 변화가 발생하지 않을 수 있다. 그러므로, 이전 타임 스텝의 메모리는, 단지 최근 타입 스텝부터의 차이를 저장하는 것이 아닌, 문턱 값을 상회하는 변화를 야기하는 최근 값을 저장하도록 설정될 수 있다. 이러한 동작은 수학식 13으로 정의될 수 있다.
Figure 112017040832762-pat00017
수학식 13에서
Figure 112017040832762-pat00018
Figure 112017040832762-pat00019
는 참조 벡터를 나타낸다. 예를 들어, t-1에서의 입력 델타 벡터 Δx , t-1이 미리 정해진 임계치
Figure 112017040832762-pat00020
보다 큰 경우, t-1에서의 입력 벡터 xi, t-1이 t-1에서의 참조 벡터
Figure 112017040832762-pat00021
로 결정될 수 있다. t-1에서의 입력 델타 벡터 Δx, t-1이 미리 정해진 임계치
Figure 112017040832762-pat00022
보다 작은 경우, t-2에서의 참조 벡터
Figure 112017040832762-pat00023
가 t-1에서의 참조 벡터
Figure 112017040832762-pat00024
로 결정될 수 있다.
다시 말해, 입력 델타 벡터
Figure 112017040832762-pat00025
를 계산할 때, 입력
Figure 112017040832762-pat00026
의 현재 값 및 델타 벡터
Figure 112017040832762-pat00027
의 최근 값 사이의 차가 이용될 수 있다. 여기서, i는 시간 t에서 벡터의 성분을 나타내고,
Figure 112017040832762-pat00028
는 0이 아닌 값을 갖는다. 또한, 델타 변화가 소정의 문턱 값
Figure 112017040832762-pat00029
미만이면, 델타 변화는 0으로 설정되어, 충분히 큰 변화가 0이 아닌 업데이트를 생성할 때 교정될 작은 근사 오차를 생성한다. 유사하게, 수학식 13을 통해 히든 상태 델타 벡터 Δhi,t를 구할 수 있다.
이하, 델타 네트워크 모델을 산출하는 트레이닝 방법 및 최적화 기법을 설명한다. 트레이닝 과정에 제약 조건을 추가하면 강력하고 가속화 될 수 있는 델타 네트워크가 산출될 수 있다. 제약 조건에 관해서는 후술한다.
<트레이닝 방법>
a) 반올림(rounding) 네트워크의 액티베이션: 상술된 문턱 값 델타 네트워크(thresholded Delta Network)의 계산은 부분적으로 계산된 상태의 반올림과 유사한 기능을 수행할 수 있다. Δ 텀은 작은 차이에서 0으로 설정되지만, 큰 차이에서 네트워크는 업데이트될 수 있다. 트레이닝 과정에서 반올림을 수행할 경우에 발생할 수 있는 작은 반올림 오류(small rounding error)에 대해, 네트워크를 강화하는 다양한 방법이 생각될 수 있다. 보다 정확성을 높이기 위해, 액티베이션 반올림을 수행하는 것이다. 이 경우, 네트워크가 성공적으로 훈련될 수 있으므로 이러한 작은 반올림 오류에 견고할 수 있다. 또한, 낮은 정밀도 계산은 전력 소비를 더욱 감소시킬 수 있다.
다시 말해, m개의 정수 비트 및 f개의 분수 비트를 갖는 부호가 있는 고정 소수점 형식 Qm .f의 저해상도 파라미터
Figure 112017040832762-pat00030
은 결정성(deterministic) 및 기울기-보존형 라운딩(gradient-preserving rounding)을 사용하여 고해상도 파라미터
Figure 112017040832762-pat00031
로부터 생성될 수 있다. 저-해상도 파라미터
Figure 112017040832762-pat00032
은 수학식 14로 나타낼 수 있다.
Figure 112017040832762-pat00033
수학식 14에서,
Figure 112017040832762-pat00034
은[-2 m + f-1, 2 m + f-1]의 범위로 클리핑된(clipped)
Figure 112017040832762-pat00035
와 수학식 15와 같은 반올림 함수를 통해 구할 수 있다.
Figure 112017040832762-pat00036
수학식 15에서, ∇는 기울기 연산자를 나타낸다. 포워드 패스(forward pass)에서, 저-해상도 파라미터
Figure 112017040832762-pat00037
은 보다 낮은 정밀도의 영향을 고려하는 출력을 생성하는데 사용되며, 작은 기울기 업데이트는 고해상도 파라미터
Figure 112017040832762-pat00038
에서 시간에 따라 누적된다. 훈련이 끝나면
Figure 112017040832762-pat00039
는 버려지고(discard)
Figure 112017040832762-pat00040
이 사용된다. 시뮬레이션 결과의 파라미터가 액티베이션이 된다.
b) 네트워크 액티베이션에 가우시안 노이즈(Gaussian noise)를 추가: 일단 문턱 값이 도입되면, 네트워크는 작은 변화의 비-전파에(non-propagation) 견고해야 하고, 큰 변화는 중요하게 고려되어야 한다. 작은 변화에 대해 견고성을 제공하는 또 다른 방법은 문턱 값 델타 액티베이션(thresholded delta activation)을 갖는 모든 위치에 가우스 노이즈를 추가하는 것이다. 가우시안 노이즈는 수학식 16과 같이 추가될 수 있다.
Figure 112017040832762-pat00041
수학식 16에서, ? ~ N (?, ?)는 각각의 ? ∈ {? xr, ? hr, ? xu, ? hu, ? xc, ? hc}, 및 각 벡터의 각 구성 요소에 대해 평균 ?와 분산 ?를 갖는 가우시안 분포로부터 샘플 ?의 벡터를 결정하는 것을 의미한다. 전형적으로, 값 ?는 0으로 설정되어 기대 값(expectation)이 바이어스되지 않도록 한다. 예를 들어, E [xt + ?xr] = E [xt]이다. 분산 ?는 비-업데이트로 인한 일반적인 반올림 오류를 평가하도록 설정될 수 있다.
<델타 네트워크 모델에서의 직접 계산>
가우스 노이즈를 추가하는 작업은 문턱 값 델타 네트워크에서 수행하는 절단 작업과 여전히 동일하지 않다. 이를 보완하기 위해 모델을 델타 네트워크에서 직접 트레이닝할 수 있다. 테스트 모델에서 직접 트레이닝함으로써, 네트워크는 임계 값 델타 네트워크가 일반적으로 만드는 오류 유형에 대해 견고 해질 수 있다.
<희박성 비용에 발생하는 액티베이션의 변화>
네트워크가 델타 네트워크 모델을 사용하여 훈련됨에 따라, 비용은 델타 조건과 관련 될 수 있고 전체 비용에 추가 될 수 있다. 일괄 처리(batch)에서 Δh를 위한 L1 표준(norm)은 평균 절대 값 변화(mean absolute delta change)로 계산 될 수 있으며, L1 표준은 가중 인자(weighting factor) β에 의해 조정될 수 있다. 희소 비용(sparse cost) L은 손실 함수에 추가로 포함될 수 있다. 수학식 17는 희소 비용 L을 나타낸다.
Figure 112017040832762-pat00042
여기서 L1 표준은 Δh의 희소 값을 결정하는데 사용되므로 적은 델타 업데이트가 필요하다. 실시예들에 따르면 훈련 중에 Δ가 최적화되지 않기 때문에, Δx는 L1의 타겟이 아니다. 따라서, 관계식에 Δx가 포함되지 않을 수 있다.
<최적화 방법>
무게 희박성(weight sparsity)의 영향: 트레이닝 후 심층 네트워크(deep network)의 가중치 행렬(weight matrix)에서 희박성의 양은 계산 비용의 절감 및 속도 향상에 영향을 미칠 수 있다. 트레이닝된 저 정밀 네트워크에서 가중치 행렬의 희박성은 매우 클 수 있다. 0은 델타 벡터와 배수적으로(multiplicatively) 작용하여 필요한 곱셈-누적(multiply-accumulate)을 훨씬 적게 생성할 수 있다. 따라서, 업데이트 횟수에 대한 가중치 희박성(weight sparsity)의 영향을 고려함으로써, 추가적인 정확도의 손실 없이 속도 향상을 얻을 수 있다.
도 10은 일 실시예에 따른 전자 장치를 나타낸 블록도이다. 도 10을 참조하면, 전자 장치(1000)는 프로세서(1010) 및 메모리(1020)를 포함한다. 앞서 설명된 뉴럴 네트워크는 전자 장치(1000)로 구현될 수 있다.
프로세서(1010)는 도 1 내지 도 9를 통하여 상술된 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 9를 통하여 상술된 적어도 하나의 방법을 수행할 수 있다. 예를 들어, 프로세서(1010)는 상술된 인공 뉴런들의 동작을 처리할 수 있다. 보다 구체적으로, 프로세서(1010)는 뉴럴 네트워크에 포함된 각각의 뉴런들에 관하여, 이전 액티베이션 및 입력 시냅스를 통하여 수신되는 입력 신호에 기초하여 현재 액티베이션을 결정하기 위한 동작, 현재 액티베이션 및 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여 액티베이션의 변화량을 결정하기 위한 동작, 액티베이션의 변화량 및 임계치에 기초하여 새로운 이벤트의 발생 여부를 결정하기 위한 동작, 새로운 이벤트의 발생에 따라 출력 시냅스로 새로운 이벤트에 대응하는 출력 신호를 전송하기 위한 동작을 처리할 수 있다.
메모리(1020)는 컴퓨터에서 읽을 수 있는 명령어들을 저장할 수 있다. 메모리(1020)에 저장된 명령어들이 프로세서(1010)에서 실행되면, 프로세서(1010)는 상술된 인공 뉴런들의 동작을 처리할 수 있다. 또한, 메모리(1020)는 상술된 뉴럴 네트워크에 관한 데이터들을 저장할 수 있다. 예를 들어, 메모리(1020)는 인공 뉴런들의 액티베이션 및 시냅스의 가중치 등을 저장할 수 있다. 메모리(1020)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
프로세서(1010)는 프로그램을 실행하고, 전자 장치(1020)를 제어할 수 있다. 전자 장치(1020)는 입출력 장치(도면 미 표시)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다. 전자 장치(1020)는 이동 전화, 스마트 폰, PDA, 태블릿 컴퓨터, 랩톱 컴퓨터 등 모바일 장치, 퍼스널 컴퓨터, 태블릿 컴퓨터, 넷북 등 컴퓨팅 장치, 또는 텔레비전, 스마트 텔레비전, 게이트 제어를 위한 보안 장치 등 전자 제품 등 다양한 전자 장치들을 포함할 수 있다. 그 밖에, 전자 장치(1000)에 관해서는 상술된 내용이 적용될 수 있으며, 보다 상세한 설명은 생략한다.
도 11은 다른 실시예에 따른 전자 장치를 나타낸 도면이다. 도 11을 참조하면, 전자 장치(1100)는 인공 뉴런들에 대응하는 프로세싱 유닛들을 포함한다.
프로세싱 유닛들은 상술된 뉴럴 네트워크의 인공 뉴런들에 일대일로 대응할 수 있다. 프로세싱 유닛들 각각은 자신과 대응하는 인공 뉴런을 위한 동작을 처리하거나, 자신과 대응하는 인공 뉴런을 위한 데이터를 저장할 수 있다. 프로세싱 유닛들은 서로 링크를 통해 연결된다. 링크는 상술된 시냅스에 대응할 수 있고, 특정한 비트 폭을 갖도록 제한될 수 있다. 프로세싱 유닛들 각각은 컴퓨터에서 읽을 수 있는 명령어들을 저장하는 메모리 및 프로세서를 포함한다. 예를 들어, 프로세싱 유닛들 각각에 포함된 프로세서는 ALU(arithmetic logic unit)로 구현될 수 있다. 프로세싱 유닛들 각각은 완전 연결 네트워크에서와 같이 다른 레이어의 모든 프로세싱 유닛들에 연결되거나, 컨볼루셔널 네트워크에서와 같이 제한된 공간의 접속가능성을 가질 수 있다.
메모리에 저장된 명령어들이 프로세서에서 실행되면, 프로세서는 이전 액티베이션 및 입력 링크를 통하여 수신되는 입력 신호에 기초하여 현재 액티베이션을 결정하고, 현재 액티베이션 및 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여 액티베이션의 변화량을 결정하고, 액티베이션의 변화량 및 임계치에 기초하여 새로운 이벤트의 발생 여부를 결정하고, 새로운 이벤트의 발생에 따라 출력 링크로 새로운 이벤트에 대응하는 출력 신호를 전송한다. 메모리는 자신과 대응하는 인공 뉴런의 현재 액티베이션을 저장할 수 있다. 그 밖에, 전자 장치(1100)에 관해서는 상술된 내용이 적용될 수 있으며, 보다 상세한 설명은 생략한다.
도 12는 일 실시예에 따른 인공 뉴런의 동작 방법을 나타낸 동작 흐름도이다. 도 12를 참조하면, 단계(1210)에서, 인공 뉴런은 인공 뉴런의 이전 액티베이션 및 인공 뉴런의 입력 시냅스를 통하여 수신되는 입력 신호에 기초하여 인공 뉴런의 현재 액티베이션을 결정한다. 단계(1220)에서, 인공 뉴런은 현재 액티베이션 및 인공 뉴런에 의하여 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여 액티베이션의 변화량을 결정한다. 단계(1230)에서, 인공 뉴런은 액티베이션의 변화량 및 임계치에 기초하여, 새로운 이벤트의 발생 여부를 결정한다. 단계(1240)에서, 인공 뉴런은 새로운 이벤트의 발생에 따라 출력 시냅스로 새로운 이벤트에 대응하는 출력 신호를 전송한다. 그 밖에, 인공 뉴런의 동작 방법에 관해서는 상술된 내용이 적용될 수 있으며, 보다 상세한 설명은 생략한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(Field Programmable Gate Array), PLU(Programmable Logic Unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (34)

  1. 전자 장치의 프로세서에 의해 수행되는 뉴럴 네트워크(neural network)를 위한 방법에 있어서,
    인공 뉴런의 이전 액티베이션(activation) 및 상기 인공 뉴런의 입력 시냅스를 통하여 수신되는 입력 신호에 기초하여, 상기 인공 뉴런의 현재 액티베이션을 결정하는 단계;
    상기 현재 액티베이션 및 상기 인공 뉴런에 의하여 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여, 액티베이션의 변화량을 결정하는 단계;
    상기 액티베이션의 변화량 및 임계치에 기초하여, 새로운 이벤트의 발생 여부를 결정하는 단계; 및
    상기 새로운 이벤트의 발생에 따라 출력 시냅스로 상기 새로운 이벤트에 대응하는 출력 신호를 전송하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 새로운 이벤트는 상기 액티베이션의 변화량과 상기 임계치의 교차에 따라 발생하는, 방법.
  3. 제1항에 있어서,
    상기 출력 신호는 상기 변화량과 상기 임계치의 교차 방향을 나타내는 부호 비트를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 입력 시냅스를 통하여 연결된 이전 레이어에 대응하는 임계치를 수신하는 단계를 더 포함하고,
    상기 현재 액티베이션을 결정하는 단계는
    상기 이전 액티베이션, 상기 입력 신호, 및 상기 이전 레이어에 대응하는 임계치에 기초하여 상기 현재 액티베이션을 결정하는 단계
    를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 출력 신호는 미리 결정된 비트 정밀도(bit precision)로 근사화된 상기 액티베이션의 변화량을 포함하는, 방법.
  6. 제5항에 있어서,
    상기 비트 정밀도는 요구 정확도 및 가용 자원 중 적어도 하나에 따라 조절되는, 방법.
  7. 제1항에 있어서,
    상기 임계치는 단위 시간 동안 발생하는 이벤트의 수에 따라 조절되는, 방법.
  8. 제7항에 있어서,
    상기 임계치는, 상기 단위 시간 동안 발생하는 상기 이벤트의 수가 미리 정해진 제1 임계치를 초과하는 것에 따라 증가하고, 상기 단위 시간 동안 발생하는 상기 이벤트의 수가 미리 정해진 제2 임계치 미만인 것에 따라 감소하며, 상기 제1 임계치는 상기 제2 임계치보다 큰, 방법.
  9. 제1항에 있어서,
    상기 출력 신호의 전송 이후에, 상기 현재 액티베이션에 기초하여, 상기 임계치를 업데이트하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서,
    상기 임계치는 고정 간격(fixed step), 로그 간격(logarithmic step), 또는 자릿수(order of magnitude)에 따라 조절되는, 방법.
  11. 제1항에 있어서,
    상기 현재 액티베이션을 저장하는 단계
    를 더 포함하는, 방법.
  12. 제1항에 있어서,
    미리 정해진 동작 모드를 지시하는 제어 신호를 수신하는 단계;
    상기 입력 시냅스를 통하여 상기 동작 모드에 대응하여 프레임화된 입력 신호를 수신하는 단계; 및
    상기 프레임화된 입력 신호에 기초하여 상기 현재 액티베이션을 결정하는 단계
    를 더 포함하는, 방법.
  13. 제1항에 있어서,
    상기 뉴럴 네트워크는
    인공 뉴럴 네트워크(artificial neural network), 완전 연결 네트워크(fully connected network), 딥 컨볼루셔널 네트워크(deep convolutional network), 리커런트 뉴럴 네트워크(recurrent neural network) 및 스파이킹 뉴럴 네트워크(spiking neural network) 중 어느 하나인, 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 하드웨어와 결합되어 제1항 내지 제13항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능 기록 매체에 저장된 컴퓨터 프로그램.
  24. 인공 뉴런들에 대응하는 프로세싱 유닛들을 포함하고,
    상기 프로세싱 유닛들 각각은 컴퓨터에서 읽을 수 있는 명령어들을 저장하는 메모리 및 프로세서를 포함하고,
    상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는 이전 액티베이션 및 입력 링크를 통하여 수신되는 입력 신호에 기초하여 현재 액티베이션을 결정하고, 상기 현재 액티베이션 및 이전에 발생한 이벤트에 대응하는 액티베이션에 기초하여 액티베이션의 변화량을 결정하고, 상기 액티베이션의 변화량 및 임계치에 기초하여 새로운 이벤트의 발생 여부를 결정하고, 상기 새로운 이벤트의 발생에 따라 출력 링크로 상기 새로운 이벤트에 대응하는 출력 신호를 전송하는, 전자 장치.
  25. 제24항에 있어서,
    상기 새로운 이벤트는 상기 액티베이션의 변화량과 상기 임계치의 교차에 따라 발생하는, 전자 장치.
  26. 제24항에 있어서,
    상기 출력 신호는 상기 변화량과 상기 임계치의 교차 방향을 나타내는 부호 비트를 포함하는, 전자 장치.
  27. 제24항에 있어서,
    상기 프로세서는 상기 입력 링크를 통하여 연결된 이전 레이어에 대응하는 임계치를 더 수신하고, 상기 이전 액티베이션, 상기 입력 신호, 및 상기 이전 레이어에 대응하는 임계치에 기초하여 상기 현재 액티베이션을 결정하는, 전자 장치.
  28. 제24항에 있어서,
    상기 출력 신호는 미리 결정된 비트 정밀도(bit precision)로 근사화된 상기 액티베이션의 변화량을 포함하는, 전자 장치.
  29. 제28항에 있어서,
    상기 비트 정밀도는 요구 정확도 및 가용 자원 중 적어도 하나에 따라 조절되는, 전자 장치.
  30. 제24항에 있어서,
    상기 임계치는 단위 시간 동안 발생하는 이벤트의 수에 따라 조절되는, 전자 장치.
  31. 제30항에 있어서,
    상기 임계치는, 상기 단위 시간 동안 발생하는 상기 이벤트의 수가 미리 정해진 제1 임계치를 초과하는 것에 따라 증가하고, 상기 단위 시간 동안 발생하는 상기 이벤트의 수가 미리 정해진 제2 임계치 미만인 것에 따라 감소하며, 상기 제1 임계치는 상기 제2 임계치보다 큰, 전자 장치.
  32. 제24항에 있어서,
    상기 프로세서는, 상기 출력 신호의 전송 이후에, 상기 현재 액티베이션에 기초하여, 상기 임계치를 업데이트하는, 전자 장치.
  33. 제32항에 있어서,
    상기 임계치는 고정 간격, 로그 간격, 또는 자릿수에 따라 조절되는, 전자 장치.
  34. 제24항에 있어서,
    상기 메모리는 상기 현재 액티베이션을 저장하는, 전자 장치.
KR1020170053543A 2016-07-13 2017-04-26 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치 KR102399548B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
US15/607,007 US10949737B2 (en) 2016-07-13 2017-05-26 Method for neural network and apparatus performing same method
EP17178120.6A EP3270330B1 (en) 2016-07-13 2017-06-27 Method for neural network and apparatus performing same method
JP2017132072A JP7037143B2 (ja) 2016-07-13 2017-07-05 ニューラルネットワークのための方法及び電子装置
CN201710570971.3A CN107622303B (zh) 2016-07-13 2017-07-13 用于神经网络的方法和执行该方法的设备
US17/171,554 US20210166113A1 (en) 2016-07-13 2021-02-09 Method for neural network and apparatus performing same method
US17/171,551 US20210166112A1 (en) 2016-07-13 2021-02-09 Method for neural network and apparatus performing same method
JP2021156767A JP7290256B2 (ja) 2016-07-13 2021-09-27 ニューラルネットワークのための方法
JP2021156768A JP7237122B2 (ja) 2016-07-13 2021-09-27 ニューラルネットワークのための方法

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662361626P 2016-07-13 2016-07-13
US62/361,626 2016-07-13
KR1020160113039 2016-09-02
KR20160113039 2016-09-02
US201662429146P 2016-12-02 2016-12-02
US62/429,146 2016-12-02

Publications (2)

Publication Number Publication Date
KR20180007657A KR20180007657A (ko) 2018-01-23
KR102399548B1 true KR102399548B1 (ko) 2022-05-19

Family

ID=61071041

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170053543A KR102399548B1 (ko) 2016-07-13 2017-04-26 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치

Country Status (2)

Country Link
KR (1) KR102399548B1 (ko)
CN (1) CN107622303B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102310490B1 (ko) 2018-04-27 2021-10-08 한국과학기술원 재귀적 신경망에서 시계열 데이터의 데이터 누락 및 노이즈에 강건한 gru 기반의 셀 구조 설계
CN108777157B (zh) * 2018-05-08 2021-07-09 南京邮电大学 基于深度神经网络预测mlc闪存电压阈值的自适应方法
US10853725B2 (en) * 2018-05-18 2020-12-01 Deepmind Technologies Limited Neural networks with relational memory
KR102239040B1 (ko) * 2018-06-29 2021-04-13 성균관대학교산학협력단 운송 수단의 부품에 대한 고장예지 및 건전성 관리 시스템 및 방법
US20200019836A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Hierarchical parallelism in a network of distributed neural network cores
CN109102079B (zh) * 2018-08-16 2022-01-11 深圳市德瑞信息技术有限公司 基于值导数gru的入侵检测算法
US10956814B2 (en) * 2018-08-27 2021-03-23 Silicon Storage Technology, Inc. Configurable analog neural memory system for deep learning neural network
KR102019376B1 (ko) * 2018-11-08 2019-09-06 주식회사 도아에스티 지능형 철강 제품 절단 가공 시스템 및 방법
CN113905664B (zh) * 2019-06-24 2023-11-14 成都时识科技有限公司 一种用于检测生理状况的事件驱动脉冲神经网络系统
KR102188044B1 (ko) * 2019-11-29 2020-12-07 한남대학교 산학협력단 뉴로모픽 아키텍처 기반 지능형 응용 개발을 위한 프레임워크 시스템
KR102113876B1 (ko) * 2019-12-13 2020-05-21 이큐엠텍(주) 사출 금형 제조 공정을 위한 제어 방법 및 장치
US11164084B1 (en) * 2020-11-11 2021-11-02 DeepCube LTD. Cluster-connected neural network
CN112989346B (zh) * 2021-04-09 2021-08-10 鹏城实验室 对抗样本生成方法、装置、终端设备以及存储介质
CN116109489A (zh) * 2021-11-09 2023-05-12 华为技术有限公司 去噪方法和相关设备
CN113974607B (zh) * 2021-11-17 2024-04-26 杭州电子科技大学 一种基于脉冲神经网络的睡眠鼾声检测系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058269A1 (en) 2013-08-21 2015-02-26 Kunjumon Ittira Vadakkan Artificial neural circuit forming re-activatible functional link between the postsynaptic terminals of two synapses
US20150269481A1 (en) * 2014-03-24 2015-09-24 Qualcomm Incorporated Differential encoding in neural networks
US20150372805A1 (en) 2014-06-23 2015-12-24 Qualcomm Incorporated Asynchronous pulse modulation for threshold-based signal coding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2002681A1 (en) * 1989-11-10 1991-05-10 Patrick F. Castelaz Neural network signal processor
JPH05210649A (ja) * 1992-01-24 1993-08-20 Mitsubishi Electric Corp 神経回路網表現装置
DE69504316T2 (de) * 1994-03-08 1999-01-21 Preben Alstrom Neuronales netzwerk
US9412064B2 (en) * 2011-08-17 2016-08-09 Qualcomm Technologies Inc. Event-based communication in spiking neuron networks communicating a neural activity payload with an efficacy update
US9460387B2 (en) * 2011-09-21 2016-10-04 Qualcomm Technologies Inc. Apparatus and methods for implementing event-based updates in neuron networks
US9146546B2 (en) * 2012-06-04 2015-09-29 Brain Corporation Systems and apparatus for implementing task-specific learning using spiking neurons
US20140074761A1 (en) * 2012-05-30 2014-03-13 Qualcomm Incorporated Dynamical event neuron and synapse models for learning spiking neural networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058269A1 (en) 2013-08-21 2015-02-26 Kunjumon Ittira Vadakkan Artificial neural circuit forming re-activatible functional link between the postsynaptic terminals of two synapses
US20150269481A1 (en) * 2014-03-24 2015-09-24 Qualcomm Incorporated Differential encoding in neural networks
US20150372805A1 (en) 2014-06-23 2015-12-24 Qualcomm Incorporated Asynchronous pulse modulation for threshold-based signal coding

Also Published As

Publication number Publication date
KR20180007657A (ko) 2018-01-23
CN107622303B (zh) 2023-10-31
CN107622303A (zh) 2018-01-23

Similar Documents

Publication Publication Date Title
KR102399548B1 (ko) 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
JP7290256B2 (ja) ニューラルネットワークのための方法
KR102483639B1 (ko) 뉴럴 네트워크 구조 확장 방법, 디멘션 리덕션 방법, 및 그 방법을 이용한 장치
Tjandra et al. Compressing recurrent neural network with tensor train
US20190354865A1 (en) Variance propagation for quantization
Daghero et al. Energy-efficient deep learning inference on edge devices
US11861467B2 (en) Adaptive quantization for execution of machine learning models
KR20190098671A (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
KR20200076461A (ko) 중첩된 비트 표현 기반의 뉴럴 네트워크 처리 방법 및 장치
Li et al. SCWC: Structured channel weight sharing to compress convolutional neural networks
Huai et al. Latency-constrained DNN architecture learning for edge systems using zerorized batch normalization
Ponghiran et al. Hybrid analog-spiking long short-term memory for energy efficient computing on edge devices
US20220284260A1 (en) Variable quantization for neural networks
Yuan et al. Trainable Spiking-YOLO for low-latency and high-performance object detection
Swaney et al. Efficient skin segmentation via neural networks: HP-ELM and BD-SOM
KR20190125694A (ko) 학습 및 추론 장치 및 그 방법
US20220108156A1 (en) Hardware architecture for processing data in sparse neural network
WO2022198437A1 (en) State change detection for resuming classification of sequential sensor data on embedded systems
KR102637568B1 (ko) 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치
US20220108165A1 (en) Quantifying reward and resource allocation for concurrent partial deep learning workloads in multi core environments
Miao A Review on Important Issues in GCN Accelerator Design
WO2023143707A1 (en) Training a neural network to perform a machine learning task
Hua et al. Quantize YOLOv3-tiny For 5-bit Hardware
Zou et al. Dynamic deep neural network inference via adaptive channel skipping
Lebdeh et al. Efficient Processing of Spiking Neural Networks via Task Specialization

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