KR20210045225A - 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 - Google Patents

뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20210045225A
KR20210045225A KR1020190128715A KR20190128715A KR20210045225A KR 20210045225 A KR20210045225 A KR 20210045225A KR 1020190128715 A KR1020190128715 A KR 1020190128715A KR 20190128715 A KR20190128715 A KR 20190128715A KR 20210045225 A KR20210045225 A KR 20210045225A
Authority
KR
South Korea
Prior art keywords
weights
bit
input activations
input
activations
Prior art date
Application number
KR1020190128715A
Other languages
English (en)
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 KR1020190128715A priority Critical patent/KR20210045225A/ko
Priority to US16/857,588 priority patent/US11501166B2/en
Priority to CN202010342482.4A priority patent/CN112668381A/zh
Priority to EP20181643.6A priority patent/EP3809337A1/en
Publication of KR20210045225A publication Critical patent/KR20210045225A/ko
Priority to US17/964,446 priority patent/US11763153B2/en

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/08Learning methods
    • 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
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

뉴럴 네트워크에서 입력 액티베이션들 및 웨이트들 간 연산을 수행하는 방법 및 장치는, 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(bit vector)를 생성하고, 입력 액티베이션들 및 웨이트들 각각에 비트 벡터를 추가하고, MSB에 해당하는 비트들을 기준으로 입력 액티베이션들 및 웨이트들을 정렬하고, 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산을 수행한다.

Description

뉴럴 네트워크에서 연산을 수행하는 방법 및 장치{Method and apparatus for performing operation in neural network}
본 개시는 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조하여 구현된 컴퓨팅 시스템이다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 특히, 스마트폰과 같은, 저전력 고성능 임베디드 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시킬 수 있는 기술이 요구된다.
뉴럴 네트워크에서 연산을 수행하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다.
해결하고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 네트워크에서 입력 액티베이션들 및 웨이트들 간 연산을 수행하는 방법은, 상기 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(bit vector)를 생성하는 단계; 상기 비트 벡터가 포함하는 비트 값들이 상기 입력 액티베이션들 각각에 대응하는 멀티 비트 표현의 MSB(Most Significant Bit)가 되도록, 상기 입력 액티베이션들에 상기 비트 벡터를 추가하는 단계; 상기 비트 벡터가 포함하는 비트 값들이 상기 웨이트들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 상기 웨이트들에 상기 비트 벡터를 추가하는 단계; 상기 MSB에 해당하는 비트들을 기준으로 상기 입력 액티베이션들 및 상기 웨이트들을 정렬하는 단계; 및 상기 정렬된 입력 액티베이션들 및 상기 정렬된 웨이트들 간의 연산을 수행하는 단계를 포함한다.
또한, 상기 비트 벡터를 생성하는 단계는, 상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고, 상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성한다.
또한, 상기 정렬하는 단계는, 상기 입력 액티베이션들을 MSB에 상기 제 1 비트 값이 추가된 입력 엑티베이션들이 포함된 제 1 그룹 및 MSB에 상기 제 2 비트 값이 추가된 입력 엑티베이션들이 포함된 제 2 그룹의 순서로 정렬하는 단계; 및 상기 웨이트들을 MSB에 상기 제 1 비트 값이 추가된 웨이트들이 포함된 제 3 그룹 및 MSB에 상기 제 2 비트 값이 추가된 웨이트들이 포함된 제 4 그룹의 순서로 정렬하는 단계를 더 포함한다.
또한, 상기 연산을 수행하는 단계는, 상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는, 상기 정렬된 입력 액티베이션들 중 n 번째(n은 자연수) 입력 액티베이션 및 상기 정렬된 웨이트들 중 n 번째 웨이트 간의 연산 각각을 수행한다.
또한, 상기 연산을 수행하는 단계는, 상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 이상인 경우에는, 상기 제 1 그룹에 포함된 입력 액티베이션들 및 상기 제 3 그룹에 포함된 웨이트들 간의 연산을 수행하고, 상기 제 2 그룹에 포함된 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵한다.
또한, 상기 기 설정된 값은 상기 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당하고, 상기 제 2 그룹에 포함된 입력 액티베이션들 중 기 설정된 값에 해당하는 개수의 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 중 기 설정된 값에 해당하는 개수의 웨이트들 간의 연산을 스킵한다.
또한, 상기 비트 벡터를 생성하는 단계는, 상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고, 상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성하여 제 1 벡터를 생성하는 단계; 상기 웨이트들 중 0에 해당하지 않는 웨이트들에 대응하여 제 1 비트 값을 생성하고, 상기 웨이트들 중 0에 해당하는 웨이트들에 대응하여 제 2 비트 값을 생성하여 제 2 벡터를 생성하는 단계; 및 상기 제 1 벡터 및 상기 제 2 벡터 간의 AND 논리 연산을 수행하여 상기 비트 벡터를 생성하는 단계를 더 포함한다.
또한, 상기 웨이트들을 정렬하는 단계는, 상기 입력 액티베이션들 중 제 1 입력 액티베이션에 대응하는 멀티 비트 표현의 MSB에 추가된 비트 값을, 상기 웨이트들 중 상기 제 1 입력 액티베이션과 연산이 수행될 제 1 웨이트에 대응하는 멀티 비트 표현의 MSB에 추가한다.
또한, 상기 정렬하는 단계는, 상기 입력 액티베이션들 및 상기 웨이트들을 거품 정렬(bubble sort) 알고리즘, 셀 정렬(shell sort) 알고리즘, 바이토닉 정렬(bitonic sort) 알고리즘, 빗질 정렬(comb sort) 알고리즘, 사이클 정렬(cycle sort) 알고리즘 및 홀-짝 정렬(Even-odd mergesort) 알고리즘 중 어느 하나에 기초하여 정렬한다.
다른 측면에 따르면, 뉴럴 네트워크를 실시(implement)하는 장치에 있어서, 메모리; 및 입력 액티베이션들 및 웨이트들 간 컨볼루션 연산을 수행하는 프로세서를 포함하고, 상기 프로세서는, 상기 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(bit vector)를 생성하고, 상기 비트 벡터가 포함하는 비트 값들이 상기 입력 액티베이션들 각각에 대응하는 멀티 비트 표현의 MSB(Most Significant Bit)가 되도록, 상기 입력 액티베이션들에 상기 비트 벡터를 추가하고, 상기 비트 벡터가 포함하는 비트 값들이 상기 웨이트들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 상기 웨이트들에 상기 비트 벡터를 추가하고, 상기 MSB에 해당하는 비트들을 기준으로 상기 입력 액티베이션들 및 상기 웨이트들을 정렬하고, 상기 정렬된 입력 액티베이션들 및 상기 정렬된 웨이트들 간의 연산을 수행한다.
또한, 상기 프로세서는, 상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트를 생성하고, 상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트를 생성한다.
또한, 상기 프로세서는, 상기 입력 액티베이션들을 MSB에 상기 제 1 비트가 추가된 입력 엑티베이션들이 포함된 제 1 그룹 및 MSB에 상기 제 2 비트가 추가된 입력 엑티베이션들이 포함된 제 2 그룹의 순서로 정렬하고, 상기 웨이트들을 MSB에 상기 제 1 비트가 추가된 웨이트들이 포함된 제 3 그룹 및 MSB에 상기 제 2 비트가 추가된 웨이트들이 포함된 제 4 그룹의 순서로 정렬한다.
또한, 상기 프로세서는, 상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는, 상기 정렬된 입력 액티베이션들 중 n 번째(n은 자연수) 입력 액티베이션 및 상기 정렬된 웨이트들 중 n 번째 웨이트 간의 연산 각각을 수행한다.
또한, 상기 프로세서는, 상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 이상인 경우에는, 상기 제 1 그룹에 포함된 입력 액티베이션들 및 상기 제 3 그룹에 포함된 웨이트들 간의 연산을 수행하고, 상기 제 2 그룹에 포함된 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵한다.
또한, 상기 기 설정된 값은 상기 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당하고, 상기 프로세서는, 상기 제 2 그룹에 포함된 입력 액티베이션들 중 기 설정된 값에 해당하는 개수의 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 중 기 설정된 값에 해당하는 개수의 웨이트들 간의 연산을 스킵한다.
또한, 상기 프로세서는, 상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트를 생성하고, 상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트를 생성하여 제 1 벡터를 생성하고, 상기 웨이트들 중 0에 해당하지 않는 웨이트들에 대응하여 제 1 비트를 생성하고, 상기 웨이트들 중 0에 해당하는 웨이트들에 대응하여 제 2 비트를 생성하여 제 2 벡터를 생성하고, 상기 제 1 벡터 및 상기 제 2 벡터 간의 AND 논리 연산을 수행하여 상기 비트 벡터를 생성한다.
또한, 상기 프로세서는, 상기 입력 액티베이션들 중 제 1 입력 액티베이션에 대응하는 멀티 비트 표현의 MSB에 추가된 비트 값을, 상기 웨이트들 중 상기 제 1 입력 액티베이션과 연산이 수행될 제 1 웨이트에 대응하는 멀티 비트 표현의 MSB에 추가한다.
또한, 상기 프로세서는, 상기 입력 액티베이션들 및 상기 웨이트들을 거품 정렬(bubble sort) 알고리즘, 셀 정렬(shell sort) 알고리즘, 바이토닉 정렬(bitonic sort) 알고리즘, 빗질 정렬(comb sort) 알고리즘, 사이클 정렬(cycle sort) 알고리즘 및 홀-짝 정렬(Even-odd mergesort) 알고리즘 중 어느 하나에 기초하여 정렬한다.
또 다른 측면에 따르면, 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 포함할 수 있다.
도 1은 뉴럴 네크워크 아키텍처의 일 예를 설명하기 위한 도면이다.
도 2는 뉴럴 네트워크에서 수행되는 연산의 일 예를 설명하기 위한 도면이다.
도 3은 뉴럴 네트워크 장치의 구성의 일 예를 도시한 블록도이다.
도 4는 뉴럴 네트워크에서 입력 액티베이션들 및 웨이트들 간 컨볼루션 연산을 수행하는 방법의 일 예를 나타내는 흐름도이다.
도 5는 비트 벡터(bit vector)를 생성하는 일 예를 나타내는 도면이다.
도 6은 입력 액티베이션들에 비트 벡터를 추가하는 일 예를 나타내는 도면이다.
도 7은 웨이트들에 비트 벡터를 추가하는 일 예를 나타내는 도면이다.
도 8은 입력 액티베이션들 및 웨이트들을 정렬하는 일 예를 나타내는 도면이다.
도 9는 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산을 수행하는 일 예를 나타내는 도면이다.
도 10은 비트 벡터(bit vector)를 생성하는 다른 예를 나타내는 도면이다.
도 11은 입력 액티베이션들 및 웨이트들을 정렬하는 다른 예를 나타내는 도면이다.
도 12은 전자 시스템의 일 예를 나타내는 블록도이다.
도 13은 뉴럴 네트워크 장치의 구성의 일 예를 도시한 블록도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
명세서에 기재된 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
이하 첨부된 도면들을 참조하면서 실시예들을 상세히 설명하기로 한다. 그러나 실시 예는 여러 가지 상이한 형태로 구현될 수 있으며 이하에서 설명하는 예에 한정되지 않는다.
도 1은 뉴럴 네크워크 아키텍처의 일 예를 설명하기 위한 도면이다.
도 1에 도시된 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, 이하 'DNN'이라고 함) 아키텍처의 일 예일 수 있다. DNN은 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당할 수 있으나 이에 한정되지 않는다. 뉴럴 네트워크(1)는 입력 레이어(Layer 1), 4개의 히든 레이어들(Layer 2, Layer 3, Layer 4, Layer 5) 및 출력 레이어(Layer 6)를 포함하는 DNN일 수 있다. 예를 들어, 뉴럴 네트워크(1)가 컨볼루션 뉴럴 네트워크(CNN)를 표현하는 것인 경우, Layer 1 내지 Layer 6는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있으며, 이는 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다.
뉴럴 네트워크(1)에 포함된 레이어들 각각은 "뉴런(neuron)", "프로세싱 엘리먼트(Processing element: PE)", "유닛(unit)" 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들을 포함할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, Layer 1은 5개의 노드들, Layer 2는 7개의 노드들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)에 포함된 레이어들 각각은 다양한 개수의 노드들을 포함할 수 있다.
뉴럴 네트워크(1)에 포함된 레이어들 각각에 포함된 노드들은 서로 연결되어 데이터를 교환할 수 있다. 예를 들어, 하나의 노드는 다른 노드들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 노드들로 출력할 수 있다.
한편, 뉴럴 네트워크(1)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 많은 레이어들을 포함할 수 있다. 따라서, 뉴럴 네트워크(1)는 싱글 레이어를 포함하는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 도 1에는 뉴럴 네트워크(1)가 6개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)는 더 적거나 많은 레이어들을 포함할 수 있다. 즉, 뉴럴 네트워크(1)는 도 1에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
도 2는 뉴럴 네트워크에서 수행되는 연산의 일 예를 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크(2)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어,
Figure pat00001
Figure pat00002
)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어,
Figure pat00003
Figure pat00004
)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(2)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트 및 바이어스에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어,
Figure pat00005
는 액티베이션 함수(activation function)이고,
Figure pat00006
는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00007
는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고,
Figure pat00008
는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00009
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00010
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00011
로 표현될 수 있다. 또한,
Figure pat00012
은 수학식 1에 따라
Figure pat00013
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크(2)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트 및 바이어스를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 가중치 합(weighted sum)을 sigmoid 함수나 Rectified Linear Unit (ReLU) 함수 등의 액티베이션 함수에 통과시킴으로써 획득된 값일 수 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 3은 뉴럴 네트워크 장치의 구성의 일 예를 도시한 블록도이다.
뉴럴 네트워크 장치(300)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 예를 들어, 뉴럴 네트워크 장치(300)는 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등으로 구현될 수 있으나, 이에 제한되지 않는다. 나아가서, 뉴럴 네트워크 장치(300)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 장치(300)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
도 3을 참조하면, 뉴럴 네트워크 장치(300)는 프로세서(310) 및 메모리(330)를 포함한다. 도 3에 도시된 뉴럴 네트워크 장치(300)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(300)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
메모리(310)는 뉴럴 네트워크 장치(300)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 예를 들어, 메모리(330)는 뉴럴 네트워크의 레이어들에서 처리되는 입력 액티베이션 데이터, 웨이트 데이터 등을 저장할 수 있다. 메모리(330)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리일 수 있으나, 이에 한정되지 않는다.
도 3을 참조하면, 메모리(310)는 입력 액티베이션 메모리(311) 및 웨이트 메모리(312)를 포함할 수 있다. 입력 액티베이션 메모리(311) 및 웨이트 메모리(312)는 각각 입력 액티베이션 데이터 및 웨이트 데이터를 저장할 수 있다. 한편, 액티베이션 메모리(311) 및 웨이트 메모리(312)는 서로 물리적으로 분리되어 있을 수 있으나 이에 제한되는 것은 아니다. 예를 들어, 도 3은 하나의 메모리(310)가 입력 액티베이션 데이터 및 웨이트 데이터를 저장하고 있음을 나타내기 위한 것이고, 액티베이션 메모리(311) 및 웨이트 메모리(312)는 물리적으로 연결되어 있는 하나의 메모리(310)를 공유할 수 있다.
프로세서(320)는 메모리(310)로부터 뉴럴 네트워크 장치(300)에서 처리되는 데이터, 예를 들어 입력 액티베이션 데이터, 웨이트 데이터 등을 읽고/쓰고, 읽히고/쓰여진 데이터를 이용하여 뉴럴 네트워크 장치(300)를 실행한다. 예를 들어, 프로세서(320)는 입력 액티베이션 데이터와 웨이트 데이터 간의 연산을 수행할 수 있다.
또한, 프로세서(320)는 곱셈 유닛(multiplier)(321) 및 덧셈 유닛 (adder)(322)을 포함할 수 있다.
곱셈 유닛(321)은 복수의 곱셈기들의 배열을 포함할 수 있다. 예를 들어, 곱셈 유닛은 k 개의 곱셈기들을 포함할 수 있다. k 개의 곱셈기들 각각에서는 입력 액티베이션 및 웨이트 간의 곱셈 연산이 병렬적으로 수행될 수 있다. 예를 들어, 곱셈 유닛(321)에서는 k 개의 입력 액티베이션들 및 입력 액티베이션들에 대응되는 k 개의 웨이트들 간의 요소별 곱셈(pointwise multiplication) 연산이 수행될 수 있다. 따라서, k는 프로세서(320)에서 수행되는 연산의 기본 단위가 될 수 있다.
덧셈 유닛(322)은 k 개의 입력 액티베이션들 및 입력 액티베이션들 각각에 대응되는 k 개의 웨이트들 간의 곱셈 연산의 결과를 곱셈 유닛(321)으로부터 수신할 수 있다. 덧셈 유닛(322)는 k 개의 곱셈 연산의 결과를 모두 더하여 최종 결과값을 출력할 수 있다.
프로세서(320)는 뉴럴 네트워크 장치(300) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
한편, 입력 액티베이션 및 웨이트 중 적어도 하나에 해당하는 값이 0인 경우에는 곱셈 연산의 결과값이 0이 되므로 최종 결과값에 영향을 주지 않는다. 따라서, 입력 액티베이션 및 웨이트 중 적어도 하나에 해당하는 값이 0인 경우에는 입력 액티베이션 및 웨이트 간의 연산이 스킵될 수 있다.
상술한 바와 같이 프로세서(320)에서는, k 개의 입력 액티베이션들 및 입력 액티베이션들 각각에 대응되는 k 개의 웨이트들이 하나의 기본 단위가 되어 연산이 수행될 수 있다. 따라서, 프로세서(320)가 메모리(310)로부터 전달받은 입력 액티베이션 데이터들 중에서 0에 해당하는 k 개의 입력 액티베이션들을 그룹핑(grouping)할 수 있는 경우에는, 0에 해당하는 k 개의 입력 액티베이션들 및 이에 대응되는 k 개의 웨이트들 간의 연산을 스킵할 수 있다.
이에 따라, 프로세서(320)는 메모리(310)로부터 전달받은 입력 액티베이션 데이터들을 곱셈 유닛에서 처리하기 전에 0에 해당하는 입력 액티베이션들을 그룹핑하고, 그룹핑된 입력 액티베이션들의 연산을 스킵할 것인지 여부를 판단할 수 있다. 이하 도 4 내지 도 13을 참조하여 설명하도록 한다.
도 4는 뉴럴 네트워크에서 입력 액티베이션들 및 웨이트들 간 컨볼루션 연산을 수행하는 방법의 일 예를 나타내는 흐름도이다.
도 4를 참조하면, 410 단계에서 뉴럴 네트워크 장치(300)는 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(bit vector)를 생성할 수 있다. 비트 벡터의 생성은 도 5를 참고하여 설명하도록 한다.
도 5는 비트 벡터(bit vector)를 생성하는 일 예를 나타내는 도면이다.
먼저, 프로세서(320)는 메모리(310)로부터 k+n개의 입력 액티베이션들(500) 및 이에 대응되는 k+n개의 웨이트들(510)을 획득할 수 있다.
k+n개의 입력 액티베이션들(500)은 입력 액티베이션 a1 내지 입력 액티베이션 ak+n 을 포함할 수 있다. 입력 액티베이션들 각각은 멀티 비트(multi bit)로 표현될 수 있다. 예를 들어, 입력 액티베이션들 각각은 4 비트로 표현될 수 있으나, 이에 제한되는 것은 아니며 다양한 개수의 비트로 표현될 수 있다. 마찬가지로, k+n개의 웨이트들(510)은 웨이트 w1 내지 웨이트 wk+n 를 포함할 수 있다. 웨이트들 각각은 멀티 비트(multi bit)로 표현될 수 있다. 예를 들어, 웨이트들 각각은 4 비트로 표현될 수 있으나, 이에 제한되는 것은 아니다.
프로세서(320)는 k+n개의 입력 액티베이션들(500) 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고, k+n개의 입력 액티베이션들(500) 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성할 수 있다. 제 1 비트 값은 1일 수 있고 제 2 비트 값은 0일 수 있으나 이에 제한되는 것은 아니다. 예를 들어, 입력 액티베이션 a1은 0에 해당하지 않으므로 a1에 대응하여 제 1 비트 값인 1이 생성될 수 있으며, 입력 액티베이션 a2은 0에 해당하므로 a2에 대응하여 제 2 비트 값인 0이 생성될 수 있다. 이와 같은 방식으로, k+n개의 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(520)가 생성될 수 있다. 따라서, 비트 벡터(520)는 k+n개의 입력 액티베이션들(500) 각각에 대응하는 k+n개의 비트 값들을 포함할 수 있다.
다시 도 4로 돌아와서, 420 단계에서 뉴럴 네트워크 장치(300)는 비트 벡터가 포함하는 비트 값들이 입력 액티베이션들에 대응하는 멀티 비트 표현의 MSB(Most Significant Bit)가 되도록 입력 액티베이션들에 비트 벡터를 추가할 수 있다. 비트 벡터의 입력 액티베이션들에의 추가는 도 6을 참고하여 설명하도록 한다.
도 6은 입력 액티베이션들에 비트 벡터를 추가하는 일 예를 나타내는 도면이다.
도 6을 참조하면, 비트 벡터(520)의 비트 값들 각각은 k+n개의 입력 액티베이션들(500) 중 대응되는 입력 액티베이션에 추가될 수 있다. 예를 들어, 입력 액티베이션 a1에 대응하여 생성된 제 1 비트 값인 1은 a1에 추가될 수 있고, 입력 액티베이션 a2에 대응하여 생성된 제 2 비트 값인 0은 a2에 추가될 수 있다. 이 때, a1에 추가된 제 1 비트 값인 1은 a1에 대응하는 멀티 비트 표현의 MSB가 될 수 있으며, 마찬가지로 a2에 추가된 제 2 비트 값인 0은 a2에 대응하는 멀티 비트 표현의 MSB가 될 수 있다. 따라서, 비트 벡터(520)를 추가하여 최종적으로 생성된 k+n개의 입력 액티베이션들(600) 각각은 5 비트로 표현될 수 있다.
다시 도 4로 돌아와서, 430 단계에서 뉴럴 네트워크 장치(300)는 비트 벡터가 포함하는 비트 값들이 웨이트들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 웨이트들에 비트 벡터를 추가할 수 있다. 비트 벡터의 웨이트들에의 추가는 도 7을 참고하여 설명하도록 한다.
도 7은 웨이트들에 비트 벡터를 추가하는 일 예를 나타내는 도면이다.
도 7을 참조하면, k+n개의 웨이트들(510)에는 k+n개의 입력 액티베이션들(500)에 기초하여 생성된 비트 벡터(520)가 추가될 수 있다. 입력 액티베이션들 중 제 1 입력 액티베이션에 대응하는 멀티 비트 표현의 MSB에 추가된 비트 값은, 웨이트들 중 제 1 입력 액티베이션과 연산이 수행될 제 1 웨이트에 대응하는 멀티 비트 표현의 MSB에 추가될 수 있다.
예를 들어, 입력 액티베이션 a1에 대응하여 생성된 제 1 비트 값인 1은 a1과 연산이 수행될 w1에 추가될 수 있고, 입력 액티베이션 a2에 대응하여 생성된 제 2 비트 값인 0은 a2과 연산이 수행될 w2에 추가될 수 있다. 이 때, a1에 추가된 제 1 비트 값인 1은 w1에 대응하는 멀티 비트 표현의 MSB가 될 수 있으며, 마찬가지로 a2에 추가된 제 2 비트 값인 0은 w2에 대응하는 멀티 비트 표현의 MSB가 될 수 있다. 따라서, 비트 벡터(520)를 추가하여 최종적으로 생성된 k+n개의 웨이트들(610) 각각은 5 비트로 표현될 수 있다.
다시 도 4로 돌아와서, 440 단계에서 뉴럴 네트워크 장치(300)는 MSB에 해당하는 비트들을 기준으로 입력 액티베이션들 및 웨이트들을 정렬할 수 있다. 입력 액티베이션들 및 웨이트들의 정렬은 도 8을 참고하여 설명하도록 한다.
도 8은 입력 액티베이션들 및 웨이트들을 정렬하는 일 예를 나타내는 도면이다.
도 8을 참조하면, 뉴럴 네트워크 장치(300)는 비트 벡터(520)를 추가하여 최종적으로 생성된 k+n개의 입력 액티베이션들(600) 및 비트 벡터(520)를 추가하여 최종적으로 생성된 k+n개의 웨이트들(610) 각각에 정렬 알고리즘을 적용할 수 있다. 이 때, 뉴럴 네트워크 장치(300)는 MSB에 해당하는 비트들을 기준으로 k+n개의 입력 액티베이션들(600) 및 k+n개의 웨이트들(610)을 정렬할 수 있다.
예를 들어, 뉴럴 네트워크 장치(300)는 비트 벡터(520)를 추가하여 최종적으로 생성된 k+n개의 입력 액티베이션들(600)을 MSB에 제 1 비트 값이 추가된 입력 엑티베이션들이 포함된 제 1 그룹 및 MSB에 제 2 비트 값이 추가된 입력 엑티베이션들이 포함된 제 2 그룹의 순서로 정렬할 수 있다.
마찬가지로, 뉴럴 네트워크 장치(300)는 비트 벡터(520)를 추가하여 최종적으로 생성된 k+n개의 웨이트들(610)을 MSB에 제 1 비트 값이 추가된 웨이트들이 포함된 제 3 그룹 및 MSB에 제 2 비트 값이 추가된 웨이트들이 포함된 제 4 그룹의 순서로 정렬할 수 있다.
예를 들어, 제 1 비트 값인 1이 MSB에 추가된 입력 액티베이션들은 a1, a3 및 ak+n 을 포함할 수 있고, 해당 입력 액티베이션들은 제 1 그룹을 구성할 수 있다.
또한, 제 2 비트 값인 0이 MSB에 추가된 입력 액티베이션들은 a2 및 ak+n-1을 포함할 수 있고, 해당 입력 액티베이션들은 제 2 그룹을 구성할 수 있다.
마찬가지로, 제 1 비트 값인 1이 MSB에 추가된 웨이트들은 w1, w3 및 wk+n 을 포함할 수 있고, 해당 웨이트들은 제 3 그룹을 구성할 수 있다. 또한, 제 2 비트 값인 0이 MSB에 추가된 웨이트들은 w2 및 wk+n-1을 포함할 수 있고, 해당 웨이트들은 제 4 그룹을 구성할 수 있다.
상술한 바와 같이 입력 액티베이션들 및 웨이트들 각각에 동일한 비트 벡터가 추가되고, 동일한 정렬 알고리즘이 적용된다. 따라서, 정렬된 입력 액티베이션들(800) 중 n 번째(n은 자연수) 입력 액티베이션 및 정렬된 웨이트들(810) 중 n 번째 웨이트는 요소별 곱셈(pointwise multiplication) 연산에 따라 연산이 수행될 페어(pair)에 해당할 수 있다.
한편, 정렬 알고리즘은 거품 정렬(bubble sort), 셀 정렬(shell sort), 바이토닉 정렬(bitonic sort), 빗질 정렬(comb sort), 사이클 정렬(cycle sort) 및 홀-짝 정렬(Even-odd mergesort) 알고리즘 중 어느 하나에 해당할 수 있으나 이에 제한되는 것은 아니다. 정렬 알고리즘은 바람직하게는 홀-짝 정렬(Even-odd mergesort) 알고리즘에 해당할 수 있다. Merge Sort는 수열을 하나의 수가 될 때까지 분할을 한 후 다시 병합하는 정렬 방식이며, 홀-짝 정렬(Even-odd mergesort) 알고리즘은 홀수자리와 짝수자리를 나눠 비교해 정렬할 수 있다.
다시 도 4로 돌아와서, 450 단계에서 뉴럴 네트워크 장치(300)는 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산을 수행할 수 있다. 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산은 도 9를 참고하여 설명하도록 한다.
도 9는 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산을 수행하는 일 예를 나타내는 도면이다.
뉴럴 네트워크 장치(300)는 정렬된 입력 액티베이션들(800) 중 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는, 정렬된 입력 액티베이션들(800) 중 n 번째(n은 자연수) 입력 액티베이션 및 정렬된 웨이트들(810) 중 n 번째 웨이트 간의 연산 각각을 수행할 수 있다. 기 설정된 값은 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당할 수 있다. 예를 들어, 도 3의 곱셈 유닛(321)에서 k개의 입력 액티베이션들 및 입력 액티베이션들 각각에 대응되는 k개의 웨이트들 간의 요소별 곱셈(pointwise multiplication) 연산이 동시에 수행될 수 있는 경우, 기 설정된 값은 k에 해당할 수 있다.
도 9를 참조하면, 정렬된 입력 액티베이션들(800) 중 첫 번째 입력 액티베이션인 a1 및 정렬된 웨이트들(810) 중 첫 번째 웨이트인 w1 간의 연산 결과 값은 S1이다. 마찬가지로, 정렬된 입력 액티베이션들(800) 중 두 번째 입력 액티베이션인 a3 및 정렬된 웨이트들(810) 중 두 번째 웨이트인 w3 간의 연산 결과 값은 S3이다. 최종적으로, 뉴럴 네트워크 장치(300)는 정렬된 입력 액티베이션들(800) 및 정렬된 웨이트들(810) 간의 연산으로부터 산출된 연산 결과 값들을 모두 더하여 최종 연산 결과 값인 S를 획득할 수 있다.
도 9에서, 정렬된 입력 액티베이션들(800) 중 제 2 그룹에 포함된 입력 액티베이션들 및 정렬된 웨이트들(810) 중 제 4 그룹에 포함된 웨이트들 간의 연산 결과 값은 0에 해당하므로 최종 연산 결과 값인 S에 영향을 주지 않는다. 그러나 제 2 그룹에 포함된 입력 액티베이션들의 개수가 w보다 작으므로, 제 2 그룹에 포함된 입력 액티베이션들 및 정렬된 웨이트들(810) 중 제 4 그룹에 포함된 웨이트들 간의 연산은 스킵될 수 없다.
한편, 뉴럴 네트워크 장치(300)는 정렬된 입력 액티베이션들(800) 중 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 이상인 경우에는, 제 1 그룹에 포함된 입력 액티베이션들 및 제 3 그룹에 포함된 웨이트들 간의 연산을 수행하고, 제 2 그룹에 포함된 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵할 수 있다.
예를 들어, 뉴럴 네트워크 장치(300)는 제 2 그룹에 포함된 입력 액티베이션들 중 기 설정된 값에 해당하는 개수의 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 중 기 설정된 값에 해당하는 개수의 웨이트들 간의 연산을 스킵할 수 있다.
도 9를 참조하면, 정렬된 입력 액티베이션들(800) 중 제 2 그룹에 포함된 입력 액티베이션들의 개수가 k개인 경우, 제 2 그룹에 포함된 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 간의 연산이 스킵될 수 있다. 따라서, 제 1 그룹에 포함된 입력 액티베이션들 및 제 3 그룹에 포함된 웨이트들 간의 연산 결과 값들을 모두 더하여 최종 연산 결과 값인 S를 획득할 수 있다.
도 9에 도시되어 있지는 않지만, 정렬된 입력 액티베이션들(800) 중 제 2 그룹에 포함된 입력 액티베이션들의 개수가 k개보다 많은 경우에는, 제 2 그룹에 포함된 입력 액티베이션들 중 k개의 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 중 k 개의 웨이트들 간의 연산을 스킵할 수 있다.
도 10은 비트 벡터(bit vector)를 생성하는 다른 예를 나타내는 도면이다.
도 4 내지 도 9에서 상술한 바와 같이, 뉴럴 네트워크 장치(300)는 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터를 생성하고 이에 기초하여 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산을 수행할 수 있다. 이 때, 정렬된 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는, 제 2 그룹에 포함된 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵할 수 없다.
한편, 입력 액티베이션 뿐만 아니라 웨이트가 0에 해당하는 경우에도, 입력 액티베이션 및 웨이트 간 곱셈 연산의 결과값이 0이 되므로 최종 결과값에 영향을 주지 않는다. 이에 따라, 비트 벡터를 입력 액티베이션들 및 웨이트들 중 적어도 하나가 0인지 여부에 기초하여 생성할 수도 있다.
예를 들어, 뉴럴 네트워크 장치(300)는 k+n개의 입력 액티베이션들(500) 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고, k+n개의 입력 액티베이션들(500) 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성할 수 있다. 제 1 비트 값은 1일 수 있고 제 2 비트 값은 0일 수 있으나 이에 제한되는 것은 아니다. 예를 들어, 입력 액티베이션 a1은 0에 해당하지 않으므로 a1에 대응하여 제 1 비트 값인 1이 생성될 수 있으며, 입력 액티베이션 a2은 0에 해당하므로 a2에 대응하여 제 2 비트 값인 0이 생성될 수 있다. 이와 같은 방식으로, k+n개의 입력 액티베이션들(500) 각각이 0인지 여부에 기초하여 제 1 벡터(1000)가 생성될 수 있다.
마찬가지로, 뉴럴 네트워크 장치(300)는 k+n개의 웨이트들(510) 중 0에 해당하지 않는 웨이트들에 대응하여 제 1 비트 값을 생성하고, k+n개의 웨이트들(510) 중 0에 해당하는 웨이트들에 대응하여 제 2 비트 값을 생성할 수 있다. 예를 들어, 웨이트 w1은 0에 해당하므로 w1에 대응하여 제 2 비트 값인 0이 생성될 수 있으며, 웨이트 w2는 0에 해당하지 않으므로 w2에 대응하여 제 1 비트 값인 1이 생성될 수 있다. 이와 같은 방식으로, k+n개의 웨이트들 각각이 0인지 여부에 기초하여 제 2 벡터(1010)가 생성될 수 있다.
이후, 뉴럴 네트워크 장치(300)는 제 1 벡터(1000) 및 제 2 벡터(1010) 간의 AND 논리 연산을 수행하여 비트 벡터(1020)를 생성할 수 있다.
상술한 방식으로 생성된 비트 벡터는 입력 액티베이션들 각각이 0인지 여부에 기초하여 생성된 비트 벡터보다 0에 해당하는 비트 값들을 더 포함할 수 있다.
도 11은 입력 액티베이션들 및 웨이트들을 정렬하는 다른 예를 나타내는 도면이다.
도 11을 참조하면, k+n개의 입력 액티베이션들(500) 중 n 번째(n은 자연수) 입력 액티베이션 및 k+n개의 웨이트들(510) 중 n 번째 웨이트는 하나의 페어(pair)을 형성할 수 있다.
이 때, 비트 벡터(1020)의 비트 값들 각각은 k+n개의 입력 액티베이션들(500) 및 k+n개의 웨이트들(510)이 형성한 페어들 중 대응되는 그룹에 추가될 수 있다. 예를 들어, 입력 액티베이션 a1 및 웨이트 w1에 대응하여 생성된 제 2 비트 값인 0은 입력 액티베이션 a1 및 웨이트 w1이 형성하는 페어에 추가될 수 있다. 입력 액티베이션 a1 및 웨이트 w1이 형성하는 페어에 추가된 제 2 비트 값인 0은 해당 페어에 대응하는 멀티 비트 표현의 MSB가 될 수 있다. 따라서, 비트 벡터(1020)를 추가하여 최종적으로 생성된 k+n개의 페어들(1100) 각각은 9 비트로 표현될 수 있다.
다음으로, 뉴럴 네트워크 장치는 비트 벡터(1020)를 추가하여 최종적으로 생성된 k+n개의 페어들(1100)에 정렬 알고리즘을 적용할 수 있다. 뉴럴 네트워크 장치는 비트 벡터(1020)를 추가하여 최종적으로 생성된 k+n개의 페어들(1100)을 MSB에 해당하는 비트들을 기준으로 정렬할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 k+n개의 페어들(1100)을 MSB에 제 1 비트 값이 추가된 페어들이 포함된 제 1 그룹 및 MSB에 제 2 비트 값이 추가된 페어들이 포함된 제 2 그룹의 순서로 정렬할 수 있다.
뉴럴 네트워크 장치(300)는 정렬된 페어들(1110) 중 제 2 그룹에 포함된 페어들의 개수가 기 설정된 값 미만인 경우에는, 정렬된 k+n개의 페어들(1110) 각각에 포함된 입력 액티베이션 및 웨이트 간의 연산을 수행할 수 있다.
또는, 뉴럴 네트워크 장치(300)는 정렬된 k+n개의 페어들(1110) 중 제 2 그룹에 포함된 페어들의 개수가 기 설정된 값 이상인 경우에는, 제 2 그룹에 포함된 페어들 중 적어도 일부의 페어들 각각에 포함된 입력 액티베이션 및 웨이트 간의 연산을 스킵할 수 있다. 예를 들어, 뉴럴 네트워크 장치(300)는 제 2 그룹에 포함된 페어들 중 기 설정된 값에 해당하는 개수의 페어들 각각에 포함된 입력 액티베이션 및 웨이트 간의 연산을 스킵할 수 있다.
하편, 기 설정된 값은 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당할 수 있다.
도 12은 전자 시스템의 일 예를 나타내는 블록도이다.
도 12를 참고하면, 전자 시스템(1200)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1200)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1200)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1200)은 CPU(1210), RAM(1220), 뉴럴 네트워크 장치(1230), 메모리(1240), 센서 모듈(1250) 및 통신 모듈(1260)을 포함할 수 있다. 전자 시스템(1200)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1200)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 뉴럴 네트워크 장치(1230)는 앞서 설명된 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치일 수 있다.
CPU(1210)는 전자 시스템(1200)의 전반적인 동작을 제어한다. CPU(1210)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(1210)는 메모리(1240)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, CPU(1210)는 메모리(1240)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1230)의 기능을 제어할 수 있다. CPU(1210)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1220)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1240)에 저장된 프로그램들 및/또는 데이터는 CPU(1210)의 제어 또는 부팅 코드에 따라 RAM(1220)에 일시적으로 저장될 수 있다. RAM(1220)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1230)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1230)는 앞서 설명된 고정 소수점 타입으로 양자화된 뉴럴 네트워크를 이용하여 처리를 수행하는 하드웨어로서, 앞서 설명된 뉴럴 네트워크 전용 하드웨어 가속기에 해당될 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1230)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1200)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1230)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1240)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1240)는 뉴럴 네트워크 장치(1230)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(1240)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(1240)는 뉴럴 네트워크 장치(1230)에서 이용되는 양자화된 뉴럴 네트워크 데이터, 예컨대, 파라미터들, 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다.
메모리(1240)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1240)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1240)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 전자 시스템(1200)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1250)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1250)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 변환된 데이터를 뉴럴 네트워크 장치(1230)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1250)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1230)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1250)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1230)에 제공할 수 있다.
통신 모듈(1260)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1260)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
이하, 도 13을 참조하여 뉴럴 네트워크 장치(1230)를 보다 상세히 설명하기로 한다.
도 13은 뉴럴 네트워크 장치의 구성의 일 예를 도시한 블록도이다.
도 13을 참조하면, 일 실시예에 따른 뉴럴 네트워크 장치 (1300)는 메모리(1310) 및 프로세서(1320)를 포함한다.
도 13에 도시된 뉴럴 네트워크 장치(1300)는 도 4 내지 도 12를 참조하여 전술한 뉴럴 네트워크에서 입력 액티베이션들 및 웨이트들 간 컨볼루션 연산을 수행하는 방법을 수행하는 구성들을 포함한다. 따라서, 이하에서 스킵된 내용이더라도 도 4 내지 도 12를 참조하여 전술한 내용은 도 13에 도시된 뉴럴 네트워크 장치(1300)에도 적용될 수 있다.
한편, 도 13의 뉴럴 네트워크 장치(1300)는 도 3의 뉴럴 네트워크 장치(300)와 동일한 바, 도 3의 뉴럴 네트워크 장치(300)에 대한 설명은 도 13에도 적용될 수 있다.
또한, 도 13의 메모리(1310)는 도 3의 메모리(310)와 동일한 바, 도 3 의 메모리(310)에 대한 설명은 도 13에도 적용될 수 있다.
도 13의 프로세서(1320)는 비트 벡터 생성부(bit vector generator)(1321), 비트 벡터 추가부(bit vector merger)(1322), 정렬부(sorting unit)(1323), 버퍼(buffer)(1324), 및 연산부(processing unit)(1325)을 포함할 수 있다. 또한, 연산부(1325)는 곱셈부(multiplier)(1325) 및 덧셈부(adder)(1326)을 포함할 수 있다.
비트 벡터 생성부(1321)는, 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터를 생성할 수 있다. 예를 들어, 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고, 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성할 수 있다.
비트 벡터 추가부(1322)는, 비트 벡터가 포함하는 비트 값들이 입력 액티베이션들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 입력 액티베이션들에 비트 벡터를 추가할 수 있다. 또한, 비트 벡터가 포함하는 비트 값들이 웨이트들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 웨이트들에 비트 벡터를 추가할 수 있다. 예를 들어, 입력 액티베이션들 중 제 1 입력 액티베이션에 대응하는 멀티 비트 표현의 MSB에 추가된 비트 값은, 웨이트들 중 제 1 입력 액티베이션과 연산이 수행될 제 1 웨이트에 대응하는 멀티 비트 표현의 MSB에 추가될 수 있다.
정렬부(1323)는, MSB에 해당하는 비트들을 기준으로 입력 액티베이션들 및 웨이트들을 정렬할 수 있다. 예를 들어, 입력 액티베이션들을 MSB에 제 1 비트 값이 추가된 입력 엑티베이션들이 포함된 제 1 그룹 및 MSB에 제 2 비트 값이 추가된 입력 엑티베이션들이 포함된 제 2 그룹의 순서로 정렬할 수 있다. 또한, 웨이트들을 MSB에 제 1 비트 값이 추가된 웨이트들이 포함된 제 3 그룹 및 MSB에 제 2 비트 값이 추가된 웨이트들이 포함된 제 4 그룹의 순서로 정렬할 수 있다.
버퍼(1324)는, 메모리로부터 획득한 k+n개의 입력 액티베이션들 및 k+n개의 웨이트들을 저장할 수 있다. 버퍼(1324)는 파이프라인(pipeline)을 위하여 프로세서(1320) 내에 포함될 수 있다.
연산부(1325)는 정렬된 입력 액티베이션들 및 정렬된 웨이트들 간의 연산을 수행할 수 있다. 예를 들어, 연산부(1325)는 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는, 정렬된 입력 액티베이션들 중 n 번째(n은 자연수) 입력 액티베이션 및 정렬된 웨이트들 중 n 번째 웨이트 간의 연산 각각을 수행할 수 있다.
또한, 연산부(1325)는 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 이상인 경우에는, 제 1 그룹에 포함된 입력 액티베이션들 및 제 3 그룹에 포함된 웨이트들 간의 연산을 수행하고, 제 2 그룹에 포함된 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵할 수 있다. 이 때, 기 설정된 값은 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당하고, 제 2 그룹에 포함된 입력 액티베이션들 중 기 설정된 값에 해당하는 개수의 입력 액티베이션들 및 제 4 그룹에 포함된 웨이트들 중 기 설정된 값에 해당하는 개수의 웨이트들 간의 연산을 스킵할 수 있다.
도 13의 곱셈부(1325) 및 덧셈부(1326) 각각은 도 3의 곱셈부(321) 및 덧셈부(322)와 동일한 바, 도 3의 곱셈부(321) 및 덧셈부(322)에 대한 설명은 도 13에도 적용될 수 있다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 바람직한 실시예들을 중심으로 살펴보았으나, 해당 기술 분야에서 통상의 지식을 가진 자는 기술의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 실시예들을 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점을 포함하는 것으로 해석되어야 할 것이다.

Claims (19)

  1. 뉴럴 네트워크에서 입력 액티베이션들 및 웨이트들 간 연산을 수행하는 방법에 있어서,
    상기 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(bit vector)를 생성하는 단계;
    상기 비트 벡터가 포함하는 비트 값들이 상기 입력 액티베이션들 각각에 대응하는 멀티 비트 표현의 MSB(Most Significant Bit)가 되도록, 상기 입력 액티베이션들에 상기 비트 벡터를 추가하는 단계;
    상기 비트 벡터가 포함하는 비트 값들이 상기 웨이트들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 상기 웨이트들에 상기 비트 벡터를 추가하는 단계;
    상기 MSB에 해당하는 비트들을 기준으로 상기 입력 액티베이션들 및 상기 웨이트들을 정렬하는 단계; 및
    상기 정렬된 입력 액티베이션들 및 상기 정렬된 웨이트들 간의 연산을 수행하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 비트 벡터를 생성하는 단계는,
    상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고,
    상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성하는 방법.
  3. 제 2 항에 있어서,
    상기 정렬하는 단계는,
    상기 입력 액티베이션들을 MSB에 상기 제 1 비트 값이 추가된 입력 엑티베이션들이 포함된 제 1 그룹 및 MSB에 상기 제 2 비트 값이 추가된 입력 엑티베이션들이 포함된 제 2 그룹의 순서로 정렬하는 단계; 및
    상기 웨이트들을 MSB에 상기 제 1 비트 값이 추가된 웨이트들이 포함된 제 3 그룹 및 MSB에 상기 제 2 비트 값이 추가된 웨이트들이 포함된 제 4 그룹의 순서로 정렬하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 연산을 수행하는 단계는,
    상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는,
    상기 정렬된 입력 액티베이션들 중 n 번째(n은 자연수) 입력 액티베이션 및 상기 정렬된 웨이트들 중 n 번째 웨이트 간의 연산 각각을 수행하는 방법.
  5. 제 3 항에 있어서,
    상기 연산을 수행하는 단계는,
    상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 이상인 경우에는,
    상기 제 1 그룹에 포함된 입력 액티베이션들 및 상기 제 3 그룹에 포함된 웨이트들 간의 연산을 수행하고,
    상기 제 2 그룹에 포함된 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵하는 방법.
  6. 제 5 항에 있어서,
    상기 기 설정된 값은 상기 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당하고,
    상기 제 2 그룹에 포함된 입력 액티베이션들 중 기 설정된 값에 해당하는 개수의 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 중 기 설정된 값에 해당하는 개수의 웨이트들 간의 연산을 스킵하는 방법.
  7. 제 1 항에 있어서,
    상기 비트 벡터를 생성하는 단계는,
    상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트 값을 생성하고, 상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트 값을 생성하여 제 1 벡터를 생성하는 단계;
    상기 웨이트들 중 0에 해당하지 않는 웨이트들에 대응하여 제 1 비트 값을 생성하고, 상기 웨이트들 중 0에 해당하는 웨이트들에 대응하여 제 2 비트 값을 생성하여 제 2 벡터를 생성하는 단계; 및
    상기 제 1 벡터 및 상기 제 2 벡터 간의 AND 논리 연산을 수행하여 상기 비트 벡터를 생성하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 웨이트들을 정렬하는 단계는,
    상기 입력 액티베이션들 중 제 1 입력 액티베이션에 대응하는 멀티 비트 표현의 MSB에 추가된 비트 값을, 상기 웨이트들 중 상기 제 1 입력 액티베이션과 연산이 수행될 제 1 웨이트에 대응하는 멀티 비트 표현의 MSB에 추가하는 방법.
  9. 제 1 항에 있어서,
    상기 정렬하는 단계는,
    상기 입력 액티베이션들 및 상기 웨이트들을 거품 정렬(bubble sort) 알고리즘, 셀 정렬(shell sort) 알고리즘, 바이토닉 정렬(bitonic sort) 알고리즘, 빗질 정렬(comb sort) 알고리즘, 사이클 정렬(cycle sort) 알고리즘 및 홀-짝 정렬(Even-odd mergesort) 알고리즘 중 어느 하나에 기초하여 정렬하는 방법.
  10. 제 1항 내지 제 9항 중 어느 한 항의 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  11. 뉴럴 네트워크를 실시(implement)하는 장치에 있어서,
    메모리; 및
    입력 액티베이션들 및 웨이트들 간 컨볼루션 연산을 수행하는 프로세서를 포함하고,
    상기 프로세서는, 상기 입력 액티베이션들 각각이 0인지 여부에 기초하여 비트 벡터(bit vector)를 생성하고, 상기 비트 벡터가 포함하는 비트 값들이 상기 입력 액티베이션들 각각에 대응하는 멀티 비트 표현의 MSB(Most Significant Bit)가 되도록, 상기 입력 액티베이션들에 상기 비트 벡터를 추가하고, 상기 비트 벡터가 포함하는 비트 값들이 상기 웨이트들 각각에 대응하는 멀티 비트 표현의 MSB가 되도록, 상기 웨이트들에 상기 비트 벡터를 추가하고, 상기 MSB에 해당하는 비트들을 기준으로 상기 입력 액티베이션들 및 상기 웨이트들을 정렬하고, 상기 정렬된 입력 액티베이션들 및 상기 정렬된 웨이트들 간의 연산을 수행하는 장치.
  12. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트를 생성하고,
    상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트를 생성하는 장치.
  13. 제 12 항에 있어서,
    상기 프로세서는,
    상기 입력 액티베이션들을 MSB에 상기 제 1 비트가 추가된 입력 엑티베이션들이 포함된 제 1 그룹 및 MSB에 상기 제 2 비트가 추가된 입력 엑티베이션들이 포함된 제 2 그룹의 순서로 정렬하고,
    상기 웨이트들을 MSB에 상기 제 1 비트가 추가된 웨이트들이 포함된 제 3 그룹 및 MSB에 상기 제 2 비트가 추가된 웨이트들이 포함된 제 4 그룹의 순서로 정렬하는 장치.
  14. 제 13 항에 있어서,
    상기 프로세서는,
    상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 미만인 경우에는,
    상기 정렬된 입력 액티베이션들 중 n 번째(n은 자연수) 입력 액티베이션 및 상기 정렬된 웨이트들 중 n 번째 웨이트 간의 연산 각각을 수행하는 장치.
  15. 제 13 항에 있어서,
    상기 프로세서는,
    상기 제 2 그룹에 포함된 입력 액티베이션들의 개수가 기 설정된 값 이상인 경우에는,
    상기 제 1 그룹에 포함된 입력 액티베이션들 및 상기 제 3 그룹에 포함된 웨이트들 간의 연산을 수행하고,
    상기 제 2 그룹에 포함된 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 간의 연산의 적어도 일부를 스킵하는 장치.
  16. 제 15 항에 있어서,
    상기 기 설정된 값은 상기 연산이 동시에 수행될 수 있는 입력 액티베이션들의 총 개수에 해당하고,
    상기 프로세서는,
    상기 제 2 그룹에 포함된 입력 액티베이션들 중 기 설정된 값에 해당하는 개수의 입력 액티베이션들 및 상기 제 4 그룹에 포함된 웨이트들 중 기 설정된 값에 해당하는 개수의 웨이트들 간의 연산을 스킵하는 장치.
  17. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 액티베이션들 중 0에 해당하지 않는 입력 액티베이션들에 대응하여 제 1 비트를 생성하고, 상기 입력 액티베이션들 중 0에 해당하는 입력 액티베이션들에 대응하여 제 2 비트를 생성하여 제 1 벡터를 생성하고,
    상기 웨이트들 중 0에 해당하지 않는 웨이트들에 대응하여 제 1 비트를 생성하고, 상기 웨이트들 중 0에 해당하는 웨이트들에 대응하여 제 2 비트를 생성하여 제 2 벡터를 생성하고,
    상기 제 1 벡터 및 상기 제 2 벡터 간의 AND 논리 연산을 수행하여 상기 비트 벡터를 생성하는 장치.
  18. 제 11항에 있어서,
    상기 프로세서는,
    상기 입력 액티베이션들 중 제 1 입력 액티베이션에 대응하는 멀티 비트 표현의 MSB에 추가된 비트 값을, 상기 웨이트들 중 상기 제 1 입력 액티베이션과 연산이 수행될 제 1 웨이트에 대응하는 멀티 비트 표현의 MSB에 추가하는 장치.
  19. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 액티베이션들 및 상기 웨이트들을 거품 정렬(bubble sort) 알고리즘, 셀 정렬(shell sort) 알고리즘, 바이토닉 정렬(bitonic sort) 알고리즘, 빗질 정렬(comb sort) 알고리즘, 사이클 정렬(cycle sort) 알고리즘 및 홀-짝 정렬(Even-odd mergesort) 알고리즘 중 어느 하나에 기초하여 정렬하는 장치.
KR1020190128715A 2019-10-16 2019-10-16 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 KR20210045225A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190128715A KR20210045225A (ko) 2019-10-16 2019-10-16 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치
US16/857,588 US11501166B2 (en) 2019-10-16 2020-04-24 Method and apparatus with neural network operation
CN202010342482.4A CN112668381A (zh) 2019-10-16 2020-04-27 用于识别图像的方法和设备
EP20181643.6A EP3809337A1 (en) 2019-10-16 2020-06-23 Method and apparatus with neural network operation
US17/964,446 US11763153B2 (en) 2019-10-16 2022-10-12 Method and apparatus with neural network operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190128715A KR20210045225A (ko) 2019-10-16 2019-10-16 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210045225A true KR20210045225A (ko) 2021-04-26

Family

ID=71138534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190128715A KR20210045225A (ko) 2019-10-16 2019-10-16 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치

Country Status (4)

Country Link
US (2) US11501166B2 (ko)
EP (1) EP3809337A1 (ko)
KR (1) KR20210045225A (ko)
CN (1) CN112668381A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681915B2 (en) 2019-12-26 2023-06-20 Samsung Electronics Co., Ltd. Neural network method and apparatus
US12026617B2 (en) 2019-12-26 2024-07-02 Samsung Electronics Co., Ltd. Neural network method and apparatus

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022259427A1 (ja) * 2021-06-09 2022-12-15 日本電信電話株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
CN113869500A (zh) * 2021-10-18 2021-12-31 安谋科技(中国)有限公司 模型的运行方法、数据处理方法、电子设备及介质
CN114723032B (zh) * 2022-06-02 2022-09-30 浙江芯昇电子技术有限公司 一种长短期记忆神经网络硬件加速方法与计算系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336855B2 (en) 2013-05-14 2016-05-10 Qualcomm Incorporated Methods and systems for smart refresh of dynamic random access memory
US9721190B2 (en) * 2014-12-19 2017-08-01 Google Inc. Large-scale classification in neural networks using hashing
US20160358069A1 (en) 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US11244225B2 (en) 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
US10474627B2 (en) * 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
US10565207B2 (en) 2016-04-12 2020-02-18 Hsilin Huang Method, system and program product for mask-based compression of a sparse matrix
US10242311B2 (en) 2016-08-11 2019-03-26 Vivante Corporation Zero coefficient skipping convolution neural network engine
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10565494B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
KR102390379B1 (ko) 2017-03-06 2022-04-26 삼성전자주식회사 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치
US20180253636A1 (en) 2017-03-06 2018-09-06 Samsung Electronics Co., Ltd. Neural network apparatus, neural network processor, and method of operating neural network processor
KR102126857B1 (ko) 2018-05-10 2020-06-25 서울대학교산학협력단 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법
US11132990B1 (en) * 2019-06-26 2021-09-28 Amazon Technologies, Inc. Wakeword and acoustic event detection
US20210012178A1 (en) * 2019-07-11 2021-01-14 Facebook Technologies, Llc Systems, methods, and devices for early-exit from convolution
TWI722491B (zh) * 2019-07-16 2021-03-21 國立陽明交通大學 應用於神經網絡之四位元與八位元組合之分離式量化方法
US11551054B2 (en) * 2019-08-27 2023-01-10 International Business Machines Corporation System-aware selective quantization for performance optimized distributed deep learning

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681915B2 (en) 2019-12-26 2023-06-20 Samsung Electronics Co., Ltd. Neural network method and apparatus
US12026617B2 (en) 2019-12-26 2024-07-02 Samsung Electronics Co., Ltd. Neural network method and apparatus

Also Published As

Publication number Publication date
US20230031471A1 (en) 2023-02-02
US11763153B2 (en) 2023-09-19
EP3809337A1 (en) 2021-04-21
US11501166B2 (en) 2022-11-15
CN112668381A (zh) 2021-04-16
US20210117781A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
US20220335284A1 (en) Apparatus and method with neural network
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
US20240036820A1 (en) Semiconductor memory device employing processing in memory (pim) and method of operating the semiconductor memory device
KR20210045225A (ko) 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
JP2019102084A (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
KR102390379B1 (ko) 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치
US11868874B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
US20240046082A1 (en) Method and device with neural network implementation
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
JP7329352B2 (ja) 分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置
KR20210045224A (ko) 데이터를 처리하는 방법 및 장치
US11531870B2 (en) Neural network apparatus and method of processing variable-resolution operation by the same
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
US20200159495A1 (en) Processing apparatus and method of processing add operation therein
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR20200088198A (ko) 뉴럴 네트워크의 레이어 축소를 이용하여 입력 데이터를 처리하는 방법 및 장치
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
KR20200056898A (ko) 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법
JP7507549B2 (ja) ニューロモーフィック装置、及びニューロモーフィック装置でマルチビットニューロモーフィック演算を処理する方法
KR20240025827A (ko) Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법
KR20230123309A (ko) 프루닝 방법 및 장치
KR20220145143A (ko) 뉴럴 네트워크 장치 및 그의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal