KR20190099927A - 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 - Google Patents
심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 Download PDFInfo
- Publication number
- KR20190099927A KR20190099927A KR1020180020005A KR20180020005A KR20190099927A KR 20190099927 A KR20190099927 A KR 20190099927A KR 1020180020005 A KR1020180020005 A KR 1020180020005A KR 20180020005 A KR20180020005 A KR 20180020005A KR 20190099927 A KR20190099927 A KR 20190099927A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- circuit
- sequence
- learning
- neural network
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 149
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 129
- 210000002569 neuron Anatomy 0.000 claims abstract description 7
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000013138 pruning Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 78
- 238000010586 diagram Methods 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 10
- 238000013473 artificial intelligence Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 210000004027 cell Anatomy 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Analysis (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
일 실시예에 따라 심층 신경망(Deep Neural Network)의 학습을 처리하는 학습 회로(circuit)와 연결되어 인코딩을 수행하는 인코딩 장치에 있어서, 난수 생성 회로로부터 수신한 제1 데이터를 저장하는 메모리; 상기 학습 회로로부터 상기 심층 신경망의 드랍아웃(Dropout) 정보를 수신하고, 상기 드랍아웃 정보 및 상기 제1 데이터를 이용하여 생성한 제2 데이터를 상기 심층 신경망의 뉴런에 할당되도록 상기 학습 회로로 출력하는 인코딩 회로를 포함하는 인코딩 장치가 제공될 수 있다. 또 다른 일 실시예에 따라 하드웨어 장치에 의해 구현되는 학습 방법에 대한 심층 신경망 학습 방법이 제공될 수 있다.
Description
일 실시예는 심층 신경망을 이용한 추론(inference)을 위하여 심층 신경망 학습을 수행하는 방법 및 장치에 대한 것이다.
인공지능(Artificial Intelligence, AI) 시스템은 인간 수준의 지능을 구현하는 컴퓨터 시스템이며, 기존 규칙 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템이다. 인공지능 시스템은 사용할수록 인식률이 향상되고 사용자 취향을 보다 정확하게 이해할 수 있게 되어, 기존 규칙 기반 스마트 시스템은 점차 딥 러닝 기반 인공지능 시스템으로 대체되고 있다.
인공지능 기술은 기계학습(딥 러닝) 및 기계학습을 활용한 요소 기술들로 구성된다.
기계학습은 입력 데이터들의 특징을 스스로 분류/학습하는 알고리즘 기술이며, 요소기술은 딥 러닝 등의 기계학습 알고리즘을 활용하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성된다.
인공지능 기술이 응용되는 다양한 분야는 다음과 같다. 언어적 이해는 인간의 언어/문자를 인식하고 응용/처리하는 기술로서, 자연어 처리, 기계 번역, 대화시스템, 질의 응답, 음성 인식/합성 등을 포함한다. 시각적 이해는 사물을 인간의 시각처럼 인식하여 처리하는 기술로서, 객체 인식, 객체 추적, 영상 검색, 사람 인식, 장면 이해, 공간 이해, 영상 개선 등을 포함한다. 추론 예측은 정보를 판단하여 논리적으로 추론하고 예측하는 기술로서, 지식/확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다. 지식 표현은 인간의 경험정보를 지식데이터로 자동화 처리하는 기술로서, 지식 구축(데이터 생성/분류), 지식 관리(데이터 활용) 등을 포함한다. 동작 제어는 차량의 자율 주행, 로봇의 움직임을 제어하는 기술로서, 움직임 제어(항법, 충돌, 주행), 조작 제어(행동 제어) 등을 포함한다.
심층 신경망을 이용한 추론 과정은 입력된 정보를 정확히 분류하거나 구분하기 위하여 이용될 수 있다. 이러한 심층 신경망의 추론의 정확도(Accuracy)를 높이기 위해서는 상대적으로 많은 연산과정이 필요하고 이에 따라 심층 신경망을 형성하는 계층(layer)의 개수 또는 심도(depth)가 증가하게 된다. 심층 신경망을 형성하는 계층의 개수가 늘어날수록 심층 신경망을 통한 추론에 필요한 연산량이 증가하는 양이 커지게 되므로, 심층 신경망의 추론 정확성을 높이면서 연산량을 줄이기 위한 다양한 방법이 이용되고 있다. 일 예로 심층 신경망의 추론 정확도를 높이기 위해 학습을 수행하는 과정에서 발생하는 연산량을 줄이기 위하여, 심층 신경망을 형성하는 계층을 구성하는 엣지(edge), 노드(node) 등을 일부 생략하여 학습을 수행하는 방법이 이용되고 있다.
하지만, 이러한 연산량을 줄이기 위한 방법들은 임의적으로 계층을 구성하는 엣지 또는 노드의 일부를 제거하는 과정을 소프트웨어로 구현해야 한다는 점에서 또 다른 연산이 필요하게 됨에 따라 심층 신경망의 최적화에 어려움이 있다. 구체적으로, 전술한 소프트웨어적 구현은 동작 시스템(operating system)을 통하여 이뤄질 수 있다. 구체적으로, 동작 시스템을 통하여, 메모리 할당(memory allocation) 및 엣지 또는 노드의 일부를 제거하기 위한 신호 생성을 위한 난수 발생(random generation)을 위한 시스템 콜(system call) 호출 등의 동작 수행이 필요하다. 따라서, 전술한 연산량을 줄이기 위한 방법으로 소프트웨어로의 구현을 이용할 경우, 복잡한 동작 수행과 그에 따른 연산 수행으로 대기시간(latency)이 길어지고 연산량이 증가하게 되는 단점이 있다.
따라서, 전술한 소프트웨어적 구현에서 발생하는 연산량 증가 및 대기시간의 증가 문제를 해결할 수 있는 방법 및 장치를 제공할 필요가 있다.
일 실시예에 따라 심층 신경망(Deep Neural Network)의 학습을 처리하는 학습 회로(circuit)와 연결되어 인코딩을 수행하는 인코딩 장치는, 난수 생성 회로로부터 수신한 제1 데이터를 저장하는 메모리; 및 상기 학습 회로로부터 상기 심층 신경망의 드랍아웃(Dropout) 정보를 수신하고, 상기 드랍아웃 정보 및 상기 제1 데이터를 이용하여 생성한 제2 데이터를 상기 심층 신경망의 뉴런에 할당되도록 상기 학습 회로로 출력하는 인코딩 회로를 포함한다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 제1 데이터는 상기 난수 생성 회로의 클럭 신호에 의해 출력된 난수 시퀀스를 포함하고, 상기 제2 데이터는 상기 심층 신경망에 포함되는 소정 계층(layer)에서의 복수개의 엣지들의 연결 또는 연결해제를 나타내는 시퀀스를 포함할 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 제1 데이터의 크기는 상기 소정 계층에서의 상기 복수개의 엣지들의 개수에 기초하여 결정될 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 드랍아웃 정보, 상기 제1 데이터 및 상기 제2 데이터 각각은 2진수로 형성된 소정 비트 크기를 가질 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 인코딩 회로는 상기 제1 데이터에 포함되는 0 및 1값의 비율 값인 제1 비율값 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 비율 값인 제2 비율값에 기초하여, 상기 제2 데이터를 생성할 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 인코딩 회로는 상기 제1 데이터에 포함되는 0 및 1값의 패턴 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 패턴에 기초하여, 상기 제2 데이터를 생성할 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 제1 데이터는 상기 소정 계층의 엣지의 개수와 동일한 개수의 난수를 포함할 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 제2 데이터는 상기 소정 계층에서의 드랍아웃(dropout) 연산을 위한 기초가 될 수 있다.드랍
일 실시예에 따른 인코딩 장치에 있어서, 상기 인코딩 회로는 상기 소정 계층의 복수개의 엣지들의 가중치를 획득하여 소정의 임계 가중치와 비교한 결과에 따라 프루닝(pruning)을 수행하고, 프루닝된 상기 소정 계층의 엣지들에 대한 연결 또는 연결해제를 나타내는 상기 제2 데이터를 생성할 수 있다.
일 실시예에 따른 인코딩 장치에 있어서, 상기 장치는 입력되는 복수개의 종류의 신호 중 하나를 선택하여 출력할 수 있는 선택부를 더 포함하고, 상기 인코딩 회로는 상기 심층 신경망으로부터 연산 결과를 수신하여 상기 연산 결과의 오버플로우(overflow) 여부를 결정하고, 상기 오버플로우 여부에 기초하여 상기 심층 신경망에서 이용되는 정보의 표현 가능 범위를 변경하는 동적 고정 소수점(dynamic fixed point) 연산을 수행할 수 있다.
일 실시예에 따라 심층 신경망의 학습을 처리하는 학습 회로와 연결되어 인코딩을 수행하는 인코딩 방법은, 난수 생성 회로로부터 수신한 제1 데이터를 저장하는 단계; 상기 학습 회로로부터 상기 심층 신경망의 드랍아웃 정보를 수신하는 단계; 상기 드랍아웃 정보 및 상기 제1 데이터를 이용하여 제2 데이터를 생성하는 단계; 및 상기 제2 데이터를 상기 심층 신경망의 뉴런에 할당되도록 상기 학습 회로로 출력하는 단계를 포함한다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 제1 데이터는 상기 난수 생성 회로의 클럭 신호에 의해 출력된 난수 시퀀스를 포함하고, 상기 제2 데이터는 상기 심층 신경망에 포함되는 소정 계층에서의 복수개의 엣지들의 연결 또는 연결해제를 나타내는 시퀀스를 포함할 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 제1 데이터의 크기는 상기 소정 계층에서의 상기 복수개의 엣지들의 개수에 기초하여 결정될 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 드랍아웃 정보, 상기 제1 데이터 및 상기 제2 데이터 각각은 2진수로 형성된 소정 비트 크기를 가질 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 제2 데이터를 생성하는 단계는, 상기 제1 데이터에 포함되는 0 및 1값의 비율 값인 제1 비율값 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 비율 값인 제2 비율값에 기초하여, 상기 제2 데이터를 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 제2 데이터를 생성하는 단계는, 상기 제1 데이터에 포함되는 0 및 1값의 패턴 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 패턴에 기초하여, 상기 제2 데이터를 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 제1 데이터는 상기 소정 계층에서의 복수개의 엣지들의 개수와 동일한 개수의 난수를 포함할 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 제2 데이터는 상기 소정 계층에서의 드랍아웃(dropout) 연산을 위한 기초가 될 수 있다.드랍
일 실시예에 따른 인코딩 방법에 있어서, 상기 방법은, 상기 상기 소정 계층의 복수개의 엣지들의 가중치를 획득하는 단계; 상기 복수개의 엣지들의 가중치를 소정의 임계 가중치와 비교한 결과에 따라 프루닝(pruning)을 수행하는 단계; 및 상기 프루닝된 상기 소정 계층의 엣지들에 대한 연결 또는 연결해제를 나타내는 상기 제2 데이터를 생성하는 단계를 더 포함할 수 있다.
일 실시예에 따른 인코딩 방법에 있어서, 상기 방법은, 상기 심층 신경망으로부터 연산 결과를 수신하는 단계; 상기 연산 결과의 오버플로우(overflow) 여부를 결정하는 단계; 및 상기 오버플로우 여부에 기초하여 상기 심층 신경망에서 이용되는 값의 표현 가능 범위를 변경하는 동적 고정 소수점(dynamic fixed point) 연산을 수행하는 단계를 더 포함할 수 있다.
본 개시의 실시예에 따른 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치는 연산량을 감소시키고 대기시간을 최소화하여, 빠르게 심층 신경망을 통한 학습을 수행할 수 있다.
구체적으로, 본 개시의 실시예에 따른 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치는 하드웨어적 구성을 이용하여 심층 신경망을 형성하는 계층을 구성하는 엣지(edge), 노드(node) 등의 연결 또는 연결 해제를 빠르게 제어할 수 있다.
구체적으로, 본 개시의 실시예에 따른 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치는 심층 신경망을 통한 학습에서 발생하는 오버피팅(overfitting) 문제를 해결하기 위해 이용되는 드랍아웃(dropout) 연산을 수행하는데 있어서, 소프트웨어적 구현이 아닌 하드웨어적 구성을 이용함으로써, 연산량을 최소화하고 연산 속도를 증가시킬 수 있다.
도 1a는 일 실시예에 따라, 심층 신경망의 학습을 수행하기 위해 필요한 정보를 생성 및 가공하는 인코딩 장치 및 학습 회로에 대한 블록도를 도시한다.
도 1b는 일 실시예에 따라, 심층 신경망의 학습을 처리하는 학습 회로에서 수행되는 심층 신경망 연산을 설명하기 위한 도면이다.
도 2는 일 실시예에 따라, 인코딩 장치가 수행하는 인코딩 방법에 대한 흐름도를 도시한다.
도 3은 일 실시예에 따른 인코딩 장치, 학습 회로 및 난수 생성 회로에 대한 블록도를 도시한다.
도 4는 일 실시예에 따른 인코딩 장치에서 심층 신경망의 학습 과정에 이용될 엣지 시퀀스를 출력하는 방법을 설명하기 위한 도면이다.
도 5는 다른 실시예에 따른 인코딩 장치가 수행하는 인코딩 방법에 대한 흐름도를 도시한다.
도 6은 일 실시예에 따른 인코딩 장치에서 제1 엣지 시퀀스와 난수 시퀀스를 비교하여 제2 엣지 시퀀스를 결정하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 제1 엣지 시퀀스와 난수 시퀀스를 비교하여 제2 엣지 시퀀스를 결정하는 흐름도를 도시한다.
도 8은 일 실시예에 따른 인코딩 장치와 연결되는 심층 신경망에 대한 설명을 위한 도면이다.
도 9는 일 실시예에 따른 심층 신경망의 각 계층에 포함되는 엣지의 연결 또는 연결해제 상태를 나타내는 도면이다.
도 10a 및 도 10b는 일 실시예에 따른 학습 회로가 학습 과정에서 각 계층 별로 가중치를 조절하는 과정을 도시한 것이다.
도 11은 일 실시예에 따라 이전 동작 주기에서 결정된 엣지의 가중치를 이용하여 인코딩을 수행하는 인코딩 장치에 대한 블록도를 도시한다.
도 12는 일 실시예에 따른 인코딩 장치가 레지스터에 저장된 복수개의 엣지들의 가중치에 기초하여 제2 엣지 시퀀스를 생성하는 과정을 설명하기 위한 흐름도이다.
도 13은 일 실시예에 따른 인코딩 장치, 학습 회로 및 카운터에 대한 블록도를 도시한다.
도 14는 일 실시예에 따른 인코딩 장치, 학습 회로 및 선택부에 대한 블록도를 도시한다.
도 15는 일 실시예에 따른 인코딩 장치, 학습 회로, 레지스터, 카운터, 난수 생성 회로 및 선택부에 대한 블록도를 도시한다.
도 1b는 일 실시예에 따라, 심층 신경망의 학습을 처리하는 학습 회로에서 수행되는 심층 신경망 연산을 설명하기 위한 도면이다.
도 2는 일 실시예에 따라, 인코딩 장치가 수행하는 인코딩 방법에 대한 흐름도를 도시한다.
도 3은 일 실시예에 따른 인코딩 장치, 학습 회로 및 난수 생성 회로에 대한 블록도를 도시한다.
도 4는 일 실시예에 따른 인코딩 장치에서 심층 신경망의 학습 과정에 이용될 엣지 시퀀스를 출력하는 방법을 설명하기 위한 도면이다.
도 5는 다른 실시예에 따른 인코딩 장치가 수행하는 인코딩 방법에 대한 흐름도를 도시한다.
도 6은 일 실시예에 따른 인코딩 장치에서 제1 엣지 시퀀스와 난수 시퀀스를 비교하여 제2 엣지 시퀀스를 결정하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 제1 엣지 시퀀스와 난수 시퀀스를 비교하여 제2 엣지 시퀀스를 결정하는 흐름도를 도시한다.
도 8은 일 실시예에 따른 인코딩 장치와 연결되는 심층 신경망에 대한 설명을 위한 도면이다.
도 9는 일 실시예에 따른 심층 신경망의 각 계층에 포함되는 엣지의 연결 또는 연결해제 상태를 나타내는 도면이다.
도 10a 및 도 10b는 일 실시예에 따른 학습 회로가 학습 과정에서 각 계층 별로 가중치를 조절하는 과정을 도시한 것이다.
도 11은 일 실시예에 따라 이전 동작 주기에서 결정된 엣지의 가중치를 이용하여 인코딩을 수행하는 인코딩 장치에 대한 블록도를 도시한다.
도 12는 일 실시예에 따른 인코딩 장치가 레지스터에 저장된 복수개의 엣지들의 가중치에 기초하여 제2 엣지 시퀀스를 생성하는 과정을 설명하기 위한 흐름도이다.
도 13은 일 실시예에 따른 인코딩 장치, 학습 회로 및 카운터에 대한 블록도를 도시한다.
도 14는 일 실시예에 따른 인코딩 장치, 학습 회로 및 선택부에 대한 블록도를 도시한다.
도 15는 일 실시예에 따른 인코딩 장치, 학습 회로, 레지스터, 카운터, 난수 생성 회로 및 선택부에 대한 블록도를 도시한다.
본 개시의 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.
또한, 본 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. "부", "모듈"은 어드레싱될 수 있는 저장 매체에 저장되며 프로세서에 의해 실행될 수 있는 프로그램에 의해 구현될 수도 있다.
예를 들어, “부”, "모듈" 은 소프트웨어 구성 요소들, 객체 지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들에 의해 구현될 수 있다.
여기서, '추론'은 입력 계층(input layer)으로 입력된 입력 데이터에서 출력 계층(output layer)에서 출력되는 출력 데이터를 획득하는 방향으로 수행되며, '학습'은 추론과 반대 방향으로 수행될 수 있다.
심층 신경망을 이용한 입력된 정보의 분류 또는 구분에 있어서, 입력층으로 입력 데이터를 입력하고, 심층 신경망의 숨은 계층을 형성하는 복수개의 계층들을 통한 연산을 수행하여, 출력 계층에서 입력 데이터를 분류 또는 구분한 출력 데이터 또는 입력 데이터에 대응되는 출력 데이터를 출력할 수 있다.
출력 데이터의 정확도(accuracy)를 높이기 위해서, 출력 데이터가 출력된 후 학습을 통하여 심층 신경망을 형성하는 복수개의 계층들에서 적용되는 가중치 값을 조절할 수 있다. 출력 데이터의 정확도를 높이기 위해 가중치를 조절하는 과정에서 오버피팅(overfitting)이 발생할 수 있다. 오버피팅의 발생으로 인하여, 학습된 데이터에 대한 정확도는 증가하게 되나 새롭게 입력되는 데이터에 대한 출력 정확도가 떨어지는 문제가 발생할 수 있다. 이러한 오버피팅으로 인한 정확도 저하 문제를 해결하기 위해서 이용되는 방법으로 드랍아웃(dropout) 연산이 이용될 수 있다.
이하에서는, 전술한 드랍아웃 연산을 빠르게 수행할 수 있도록 하는 인코딩 장치를 첨부된 도면을 참조하여 상세히 설명한다.
도 1a는 일 실시예에 따라, 심층 신경망의 학습을 수행하기 위해 필요한 정보를 생성 및 가공하는 인코딩 장치(100)에 대한 블록도를 도시한다.
도 1a를 참조하면, 인코딩 장치(100)는 메모리(110) 및 인코딩 회로(130)를 포함한다. 또한, 인코딩 장치(100)는 심층 신경망(Deep Neural Network)의 학습을 수행하는 학습 회로(120)와 연결될 수 있다. 인코딩 장치(100)는 학습 회로(120)의 연산 과정에서 출력되는 정보를 수신할 수 있으며, 인코딩 장치(100)에서 생성된 정보를 학습 회로(120)로 전송할 수도 있다.
학습 회로(120)는, 입력 계층, 숨은 계층(hidden layer) 및 출력 계층을 포함하는 심층 신경망을 통한 연산을 수행할 수 있다. 여기서, 숨은 충은 복수개의 계층들, 예를 들어, 숨은 제1 계층(hidden layer1), 숨은 제2 계층(hidden layer2), 및 숨은 제3 계층(hidden layer3),을 포함할 수 있다.
학습 회로(120)에서 수행되는 심층 신경망 연산은 도 1b를 참조하여 설명한다.
도 1b를 참조하면, 심층 신경망(150)은 입력 계층(155), 숨은 계층(hidden layer)(165) 및 출력 계층(170)을 포함한다. 도 1b에서는 입력 데이터에 포함되는 정보를 분류하여 출력하는 심층 신경만 연산을 수행하는 심층 신경망(150)을 예로 들어 도시하였다. 구체적으로, 심층 신경망(150)은 입력 데이터가 영상 데이터일 때, 영상 데이터에 포함되는 영상 객체의 종류를 분류한 결과 데이터를 출력 데이터로써 출력한다.
심층 신경망(150)을 형성하는 복수 개의 계층들은 데이터를 수신하는 복수 개의 노드(node)(예를 들어, 175)들을 포함할 수 있다. 그리고, 인접한 두 개의 계층들은 도시된 바와 같이 복수 개의 엣지(edge)(예를 들어, 176)들로 연결된다. 각각의 노드들은 대응되는 가중치 값을 가지고 있어서, 심층 신경망(150)은 입력된 신호와 가중치 값을 연산, 예를 들어, 곱하기 연산한 값에 근거하여, 출력 데이터를 획득할 수 있다.
도 1b에 도시된 실시예를 참조하면, 입력 계층(155)은 입력 데이터, 예를 들어, 고양이를 영상 객체로 포함하는 영상 데이터(180)를 입력 받는다.
또한, 도 1b를 참조하면 심층 신경망(150)은 입력 계층(155)과 제1 숨은 계층(HIDDEN LAYER1) 간에 형성되는 제1 계층(Layer 1)(181), 제1 숨은 계층(HIDDEN LAYER1)과 제2 숨은 계층(HIDDEN LAYER2) 간에 형성되는 제2 계층(Layer 2)(182), 및 제2 숨은 계층(HIDDEN LAYER2)과 제3 숨은 계층(HIDDEN LAYER3) 간에 형성되는 제3 계층(Layer 3)(183), 및 제3 숨은 계층(HIDDEN LAYER3)과 출력 계층(OUTPUT LAYER(170) 간에 형성되는 제4 계층(Layer 4)(184)으로 형성될 수 있다.
심층 신경망(150)의 입력 계층(155)에 포함되는 복수 개의 노드들은 입력 데이터(180)에 대응되는 신호들을 수신한다. 그리고, 숨은 계층(165)에 포함되는 복수 개의 계층들에서의 연산을 통하여, 출력 계층(170)에서는 영상 데이터(180)에 대응되는 출력 데이터(185)를 출력할 수 있다. 도시된 예시에서, 심층 신경망(150)는 입력된 영상에 포함되는 영상 객체의 종류를 분류하기 위한 연산을 수행하므로, 출력 데이터는 'Cat 확률: 98%'라는 결과값을 출력할 수 있다. 심층 신경망(150)을 통하여 출력된 출력 데이터의 정확도를 높이기 위해서, 출력 계층(170)에서 입력 계층(155) 방향으로 학습(learning)을 수행하며 출력 데이터의 정확도가 높아지도록 가중치 값들을 수정할 수 있다.
다시 도 1a를 참조하면, 일 실시예에 따른 인코딩 장치(100)는 소정의 크기를 가지는 이진수 시퀀스(binary sequence) 또는 비트스트림(bitstream)을 저장할 수 있는 메모리(110), 및 메모리(110)에 저장된 이진수 시퀀스에 근거하여 학습 회로(120)에 출력할 이진수 시퀀스를 생성하는 인코딩 회로(130)를 포함할 수 있다. 여기서, 이진수 시퀀스는 2비트 이상의 소정 비트 크기를 갖는 2진수를 의미한다. 일 실시예에 따른 학습 회로(120)는 입력되는 정보에 대한 추론(inference)과정을 수행하고 추론 결과에 기초한 학습 과정을 수행할 수 있다.
전술한 이진수 시퀀스는 심층 신경망(150)을 구성하는 복수 개의 계층을 구성하는 노드들 간의 엣지(edge)의 연결 여부와 관련된 정보일 수 있다. 구체적으로, 이진수 시퀀스는 심층 신경망(150)에 포함되는 일 계층에서 형성되는 복수 개의 엣지들 각각의 연결 또는 연결해제를 나타내는 정보가 될 수 있다. 예를 들어, 도 1b를 참조하면, 이진수 시퀀스는 소정 계층, 예를 들어, 제1 계층(187)에 포함되는 복수개의 엣지들(177) 각각의 연결 또는 연결 해제를 나타내는 엣지 시퀀스와 관련된 정보일 수 있다.
예를 들면, 이진수 시퀀스에 포함되는 0 값은 소정 엣지의 연결 해제를 나타낼 수 있고 이진수 시퀀스의 1은 소정 엣지의 연결을 나타낼 수 있다. 이하에서는 이진수 시퀀스로서 심층 신경망(150)에 포함되는 소정 계층에 포함되는 엣지들의 연결여부를 나타내는 정보를 엣지 시퀀스라고 지칭하도록 한다.
도 1a를 참조하면, 인코딩 장치(100)는 메모리(110) 및 인코딩 회로(130)를 포함할 수 있다. 메모리(110)는 제1 동작 주기에서 출력되었던 제1 엣지 시퀀스를 저장할 수 있다. 인코딩 회로(130)는 제1 동작 주기와 다른 제2 동작 주기에 획득된 난수 시퀀스 및 제1 엣지 시퀀스에 기초하여, 심층 신경망에 포함되는 소정 계층(layer)에서의 복수 개의 엣지들의 연결 또는 연결해제를 나타내는 제2 엣지 시퀀스를 생성할 수 있다. 한편, 학습 회로(120)는 인코딩 회로(130)가 생성한 제2 엣지 시퀀스에 근거하여, 소정 계층에서의 복수 개의 엣지들 각각을 연결 또는 연결해제할 수 있다.
여기서, 제1 동작 주기 또는 제2 동작 주기와 같은 제i 동작 주기는 심층 신경망 내의 소정 계층에서의 소정 연산이 시작되어 종료되기까지의 시간을 포함하는 하나의 동작 주기를 의미할 수 있다. 또한, 시간 상 최선하는 동작 주기를 제1 동작 주기라 칭할 수 있으며, 제2 동작 주기는 제1 동작 주기에 후속할 수 있다. 여기서, 제2 동작 주기는 제1 동작 주기에 연속하는 동작 주기일 수 있으며, 시간 상으로 연속하지 않지만 후속하는 동작 주기일 수 있다.
예를 들어, 학습 회로(130)가 심층 신경망(150)을 통하여 학습을 수행할 때, 제1 동작 주기는 제4 계층(184)에서의 학습을 수행하는 동작 주기가 될 수 있으며, 제2 동작 주기는 제3 계층(183)에서의 학습을 수행하는 동작 주기가 될 수 있다.
일 실시예에 따라 인코딩 회로(130)는 소정의 동작 주기에 따라 동작될 수 있으며, 인코딩 회로(130)는 학습 회로(120)에 출력할 엣지 시퀀스를 동작 주기마다 생성할 수 있다. 일 실시예에 따라 인코딩 회로(130)는 메모리(110)에 저장된 제1 엣지 시퀀스에 기초하여 제2 엣지 시퀀스를 생성할 수 있고, 제2 엣지 시퀀스를 학습 회로(120)에 전달함으로써 심층 신경망 내의 엣지의 연결 상태를 결정할 수 있다. 일 실시예에 따라 제1 엣지 시퀀스는 인코딩 회로(130)가 제2 엣지 시퀀스를 생성하려는 동작 주기와 다른 동작 주기에서 이미 생성되어 학습 회로(120)에 의해 이용되었던 것으로서 메모리(110)에 저장된 것일 수 있다. 일 실시예에 따라 메모리(110)에 저장되는 엣지 시퀀스는 심층 신경망에 포함된 복수개의 계층들 각각에 대응하여 저장될 수 있다. 예를 들어, 메모리(110)는 제2 동작 주기에 시간상 선행하는 제1 동작 주기에서 출력되었던 제1 엣지 시퀀스를 저장할 수 있다. 여기서, 제1 엣지 시퀀스는 심층 신경망(150)에 포함되는 소정 계층, 예를 들어, 제4 계층(184)에 포함되는 복수 개의 엣지들 각각의 연결 또는 연결 해제를 나타내는 이진 시퀀스가 될 수 있으며, 메모리(110)는 소정 계층, 예를 들어, 제4 계층(184)에 연관된 값으로 제1 엣지 시퀀스를 저장할 수 있다. 또한, 메모리(110)는 현재 동작 주기에 이전하는 동작 주기들 각각에서 출력되었던 적어도 하나의 엣지 시퀀스들 각각을 저장할 수 있다.
또 다른 예를 들면 메모리(110)에 저장되는 제1 엣지 시퀀스는 심층 신경망에 포함된 복수 개의 계층들에 포함되는 모든 엣지들에 대한 연결 상태를 나타내는 하나의 시퀀스로서 저장된 것일 수 있다. 인코딩 장치(100)가 수행할 수 있는 동작에 대한 자세한 내용은 다양한 실시예를 통해 후술하도록 한다.
도 2는 일 실시예에 따라, 인코딩 장치(100)가 수행하는 인코딩 방법에 대한 흐름도를 도시한다.
S200 단계에서 인코딩 장치(100)는 난수 생성 회로로부터 수신한 제1 데이터를 저장할 수 있다. 여기서, 제1 데이터는 난수 생성 회로의 클럭 신호에 의해 출력된 난수 시퀀스를 포함하는 데이터일 수 있다. 난수 시퀀스에 대해서는 도 4 및 도 5를 참조하여 보다 상세히 설명하기로 한다.
한편, 인코딩 장치(100)는 난수 생성 회로로부터 수신한 제1 데이터 뿐만 아니라, 심층 신경망의 제1 동작 주기에서 출력되었던 제1 엣지 시퀀스도 저장할 수 있다. 일 실시예에 따라 제1 엣지 시퀀스는 제1 동작 주기에서 수행되는 학습 회로(120)의 학습 과정에서 심층 신경망의 계층 간에 형성되는 복수개의 엣지 중 적어도 하나의 엣지의 연결을 해제하기 위하여 이용된 것일 수 있다.
S202 단계에서 인코딩 장치(100)는 학습 회로(120)로부터 심층 신경망의 드랍아웃 정보를 수신할 수 있다. 여기서, 드랍아웃 정보는 엣지 시퀀스의 드랍아웃 비율(dropout ratio)을 의미하는 것일 수 있다.
S204 단계에서 인코딩 장치(100)는 드랍아웃 정보 및 제1 데이터를 이용하여 제2 데이터를 생성할 수 있다. 여기서, 제2 데이터는 제2 동작 주기에 대한 제2 엣지 시퀀스를 나타낼 수 있다. 제2 엣지 시퀀스는 난수 시퀀스와 동일한 값을 가질 수 있으나, 기존과는 새로운 형태의 엣지 시퀀스일 수도 있다. 구체적으로, 제2 엣지 시퀀스는 제1 엣지 시퀀스에 기초하여 난수 시퀀스에 포함되는 적어도 하나의 난수 값을 수정함으로써 생성될 수도 있다. 여기서, 난수 시퀀스는 외부의 장치, 예를 들어, 난수 생성 회로(미도시)로부터 전송될 수 있다. 다만, 상기와 같은 예에 한정되는 것은 아니며, 난수 생성 회로는 인코딩 장치(100)의 내부에 포함될 수도 있다. 마찬가지로, 학습 회로(120)도 인코딩 장치(100)의 내부에 포함될 수도 있다.
예를 들어, 일 실시예에 따라 인코딩 회로(130)는 학습 회로(120)의 제1 동작 주기에서의 학습 과정에 이미 이용된 제1 엣지 시퀀스와 동일한 엣지 시퀀스를 이용하여 제2 동작 주기에서의 학습 과정이 수행되지 않도록 제1 엣지 시퀀스와 난수 시퀀스를 비교하는 과정을 수행할 수 있다.
또는, 다른 실시예에 따라 인코딩 회로(130)는 제1 엣지 시퀀스와 제2 엣지 시퀀스 각각의 드랍아웃 비율(dropout ratio)이 소정 값으로 유지될 수 있도록, 난수 시퀀스 및 제1 엣지 시퀀스에 근거하여 제2 엣지 시퀀스를 생성할 수 있다. 여기서, 드랍아웃 비율(dropout ratio)은 소정 계층에 포함되는 복수개의 엣지들에 있어서 연결된 엣지들과 연결 해제된 엣지들 간의 비율을 의미할 수 있다. 예를 들어, 제2 엣지 시퀀스에 포함되는 0 값은 소정 엣지가 연결 해제되는 것을 나타내고, 1 값은 소정 엣지가 연결되는 것을 나타낼 때, 드랍아웃 비율(dropout ratio)은 제2 엣지 시퀀스에 포함되는 전체 비트들의 개수 대비 0 값을 갖는 비트의 개수가 나타내는 비율을 나타낼 수 있다.
제1 엣지 시퀀스 및 난수 시퀀스에 근거하여 제2 엣지 시퀀스를 생성하는 특징에 대하여는 후술할 다양한 실시예를 통해 설명하도록 한다.
S206 단계에서 인코딩 장치(100)는 심층 신경망의 뉴런에 할당되도록 제2 데이터를 학습 회로(120)로 출력할 수 있다.
도 3은 일 실시예에 따른 인코딩 장치, 학습 회로 및 난수 생성 회로에 대한 블록도를 도시한다. 도 3의 인코딩 장치(300), 메모리(310) 및 인코딩 회로(330)는 도 1의 인코딩 장치(100), 메모리(110) 및 인코딩 회로(120)에 각각 대응할 수 있다. 또한, 도 3의 학습 회로(320)는 도 1의 학습 회로(120)에 대응하는 구성일 수 있다. 즉, 도 3의 인코딩 장치(300)는 도 1a에 도시된 인코딩 장치(100)에 비하여 난수 생성 회로(340)를 더 포함할 수 있다.
일 실시예에 따라 난수 생성 회로(340)는 연속적으로 복수 개의 난수들을 발생시킨다. 난수 생성 회로(340)에서 출력되는 복수 개의 난수들은 시간상으로 연속하는 시퀀스(sequence) 형태를 가지므로, 난수 생성 회로(340)에서 발생되는 복수개의 난수들을 난수 시퀀스라 칭할 수 있다.
구체적으로, 일 실시예에 따라 난수 생성 회로(340)는 복수개의 레지스터 셀(registor cell)을 포함하는 레지스터로서 클럭 신호에 기초하여 난수를 생성할 수 있다. 여기서, 복수개의 레지스터 셀 각각은 플립플롭(flip-flop)으로 형성될 수 있다. 또한, 난수 생성 회로(340)는 생성된 난수들을 저장할 수 있다. 난수 생성 회로(340)는 클럭 주기마다 생성되는 적어도 하나의 난수를 포함하는 난수 시퀀스를 저장하였다가 클럭 신호에 따라 저장된 난수 시퀀스를 인코딩 회로(330)에 전달할 수 있다. 일 실시예에 따라 난수 생성 회로(340)에서 동일한 값을 가지거나 동일한 패턴을 가지는 난수 시퀀스가 생성됨을 방지하기 위하여, 난수 생성 회로(340)는 플립 플롭과 연결되는 적어도 하나의 논리 회로 게이트을 포함할 수 있다.
인코딩 회로(330)는 난수 생성 회로(340)에서 생성된 난수 시퀀스를 수신하고, 난수 시퀀스에 근거하여 수신된 난수 시퀀스와 동일한 제2 엣지 시퀀스로서 출력할지 아니면 난수 시퀀스를 가공하여 제2 엣지 시퀀스로서 출력할지 결정할 수 있다.
도 4는 일 실시예에 따른 인코딩 장치에서 심층 신경망의 학습 과정에 이용될 엣지 시퀀스를 출력하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 난수 생성 회로(410)는 난수 시퀀스를 생성하는 LFSR(Linear Feedback Shift Register)일 수 있다.
예를 들면, 난수 생성 회로(410)는 복수개의 레지스터 셀을 포함하는 쉬프트 레지스터(shift registor)(411) 및 쉬프트 레지스터에 연결되는 적어도 하나의 XOR게이트(412, 413, 414)를 포함할 수 있다. 여기서, 적어도 하나의 XOR 게이트는 입력된 값들을 베타적 논리합(exclusive OR) 연산 하고, 연산된 출력 값을 적어도 쉬프트 레지스터의 입력단으로 출력할 수 있다. 그에 따라서, 난수 생성 회로(410)는 시간에 따라서 계속적으로 변하는 값을 가지는 난수 시퀀스를 생성할 수 있다. 또한, 난수 생성 회로(410)는 난수를 발생시키는 다양한 형태의 하드웨어 구성을 포함할 수 있다.
난수 생성 회로R(410)는 입력되는 클럭 신호(미도시)에 응답하여 쉬프트 레지스터(411)에 저장된 비트 값을 시프트하며, 난수 시퀀스를 생성할 수 있다. 구체적으로, 클럭 신호의 라이징 에지 도는 폴링 에지에서 쉬프트 레지스터(411)에 저장된 비트 값들을 쉬프트하며 난수 시퀀스를 생성할 수 있다.
또한, 난수 시퀀스는 제1 클럭 주기에서 획득된 복수개의 난수를 포함할 수 있다. 여기서, 제1 클럭 주기는 소정 크기를 갖는 난수 시퀀스를 생성하는데 필요한 클럭 신호의 주기를 의미할 수 있다. 예를 들어, 난수 생성 회로(410)는 클럭의 라이징 에지(rising edge) 및 폴링 에지(falling edge) 각각에서 쉬프트 레지스터(411)에 저장된 비트 값들을 쉬프트 할 경우, 하나의 클럭 주기(one clock cycle)에서는 2 비트의 난수가 생성될 수 있다. 따라서, 100 비트 크기를 갖는 난수 시퀀스를 생성하기 위해서는, 50개의 클럭 주기(one clock cycle)가 필요하며, 이 경우 제1 클럭 주기는 50개의 클럭 주기를 포함하는 시간 구간으로 형성될 수 있다.
여기서, 난수 시퀀스의 크기는 인공 신경망(150)에 포함되는 소정 계층에서의 상기 복수개의 엣지들의 개수에 기초하여 결정될 수 있다. 예를 들어, 인공 신경망(150)의 소정 계층, 예를 들어, 제1 계층(177)에 형성되는 엣지들의 개수가 100개일 경우, 난수 시퀀스는 100비트의 크기로 형성될 수 있으며, 100 비트에 포함되는 각각의 비트 값들이 100개의 엣지들 각각의 연결 또는 연결 해제에 대응되는 정보를 포함할 수 있다. 또한, 제1 엣지 시퀀스를 포함하여 인코딩 회로(426)가 생성하는 엣지 시퀀스의 크기는 인공 신경망(150)에 포함되는 소정 계층에서의 상기 복수개의 엣지들의 개수에 기초하여 결정될 수 있으며, 난수 시퀀스와 동일한 크기를 가질 수 있다.
다만 이러한 난수 생성 회로(410)는 클럭 신호에 따라 동작하는 하드웨어 구성을 이용하여 난수를 생성하는 구성의 예시에 불과하므로, 난수를 발생시킬 수 있는 다양한 하드웨어 구성을 포함하는 것으로 광범위하게 해석되어야 한다.
도 5는 다른 실시예에 따른 인코딩 장치가 수행하는 인코딩 방법에 대한 흐름도를 도시한다.
S500 단계에서 인코딩 장치(420)의 메모리(422)는 난수 생성 회로(410)로부터 수신한 제1 데이터를 저장할 수 있다. 여기서, 제1 데이터는 난수 생성 회로(410)의 클럭 신호에 의해 출력된 난수 시퀀스를 포함하는 데이터일 수 있다. 또한, 인코딩 장치(420)는 제1 동작 주기에서 출력되었던 제1 엣지 시퀀스를 저장할 수도 있다.
일 실시예에 따라 난수 생성 회로(410)에서 생성된 난수 시퀀스의 크기는 제1 엣지 시퀀스의 크기와 동일할 수 있다. 일 실시예에 따라 제1 엣지 시퀀스는 제1 동작 주기에서 소정 계층에 포함된 복수개의 엣지들의 학습 과정에서 구현된 연결 상태를 나타내는 정보일 수 있다. 즉, 제1 엣지 시퀀스는 소정 계층에 포함된 엣지들이 지난 학습 과정에서 연결되었는지 연결해제 되었는지를 나타내는 정보로서, 소정 계층에 포함된 엣지의 개수와 동일한 비트수를 가진다.
일 실시예에 따라 난수 생성 회로(410)에서 발생될 수 있는 비트수는 학습 회로(424)에서 이용되는 심층 신경망의 각 계층들의 엣지의 최대개수보다 큰 것일 수 있다. 일 실시예에 따라 난수 생성 회로(410)는 인코딩 회로(426)에 전달할 난수 시퀀스를 생성하는 과정에서, 소정 계층의 엣지의 개수에 대응하는 크기를 가지는 이진수 시퀀스를 생성할 수 있다. 또 다른 일 실시예에 따라 인코딩 회로(426)는 소정 계층에 포함된 엣지의 개수에 기초하여 난수 생성 회로(410)에서 생성된 이진수 시퀀스 중 일부를 제1 엣지 시퀀스와 비교될 난수 시퀀스로서 이용할 수 있다.
S502 단계에서 인코딩 장치(420)는 학습 회로(424)로부터 심층 신경망의 드랍아웃 정보를 수신할 수 있다.
S504 단계에서 인코딩 장치(420)는 드랍아웃 정보 및 제1 데이터를 이용하여 제2 데이터를 생성할 수 있다. 다시 말해, 인코딩 장치(420)는 난수 시퀀스 및 제1 엣지 시퀀스에 기초하여, 심층 신경망에 포함되는 소정 계층에서의 복수 개의 엣지들의 연결 또는 연결 해제를 나타내는 제2 엣지 시퀀스를 생성할 수 있다.
S506 단계에서 인코딩 장치(420)는 제2 데이터를 심층 신경망의 뉴런에 할당되도록 학습 회로(422)로 출력할 수 있다. 즉, 인코딩 장치(420)는 제2 엣지 시퀀스를 학습 회로(424)로 출력할 수 있고 이에 따라 학습 회로(424)는 제2 엣지 시퀀스에 근거하여 소정 계층에서의 복수 개의 엣지들 각각을 연결 또는 연결해제하고 소정 계층을 통한 학습을 수행할 수 있다.
구체적으로, 인코딩 회로(426)는 심층 신경망(150)에 포함되는 전체 계층들 각각에서 연결되어 있는 엣지들의 개수 및 연결 해제되어 있는 엣지들의 개수 간의 비율이 일정한 값을 가지도록, 제2 엣지 시퀀스를 생성할 수 있다.
도 1b에 도시된 심층 신경망(150)을 참조하면, 제1 엣지 시퀀스가 제3 계층(183)에 포함되는 복수 개의 엣지들 각각의 연결 또는 연결해제를 나타내는 정보들을 포함하며, 제2 엣지 시퀀스가 제2 계층(182)에 포함되는 복수 개의 엣지들 각각의 연결 또는 연결해제를 나타내는 정보들을 포함하는 경우를 예로 들자. 또한, 제1 엣지 시퀀스에서 전체 비트 수 대비 0 값을 갖는 비트 수의 비율인 제1 비율 값은 제3 계층(183)에 포함되는 복수 개의 엣지들의 개수와 연결 해제된 엣지들의 개수 간의 비율을 의미할 수 있다. 그리고, 제2 엣지 시퀀스에서 전체 비트 수 대비 0 값을 갖는 비트 수의 비율인 제2 비율 값은 제2 계층(182)에 포함되는 복수개의 엣지들의 개수와 연결 해제된 엣지들의 개수 간의 비율을 의미할 수 있다. 제1 비율값이 40% 이며, 심층 신경망(150) 전체에 포함되는 엣지들 중 연결 해제된 엣지들의 비율의 목표값이 50%인 경우, 인코딩 회로(426)는 제2 엣지 시퀀스의 제2 비율값이 60%가 되도록 하여, 전체 엣지들 중 연결 해제된 엣지들의 비율이 50%가 되도록, 난수 시퀀스를 가공할 수 있다. 여기서, 비율의 목표값은 사용자가 설정하거나, 학습 회로(424)가 자체적으로 설정할 수 있다.
또는, 인코딩 회로(426)는 출력되는 엣지 시퀀스가 항상 동일한 비율값인 목표값을 가지도록, 제2 엣지 시퀀스를 생성할 수도 있을 것이다.
예를 들어, 목표값을 50%로 설정한 경우, 인코딩 회로(426)는 출력되는 제2 엣지 시퀀스에서 0 값을 갖는 비트 개수의 비율 값이 50%가 되도록, 제2 엣지 시퀀스를 생성할 수 있다. 이 경우, 제1 엣지 시퀀스와 난수 시퀀스를 비교하여, 제1 엣지 시퀀스의 패턴과 다른 패턴을 갖도록 난수 시퀀스를 수정하고, 수정된 난수 시퀀스를 제2 엣지 시퀀스로 생성할 수 있을 것이다. 예를 들어, 난수 시퀀스가 1000100111이고, 이전에 출력된 제1 엣지 시퀀스가 1000100111 인 경우, 난수 시퀀스 및 제1 엣지 시퀀스 각각의 비율값은 50% 이며, 상호 동일한 값을 갖는다. 따라서, 인코딩 회로(426)는 제1 엣지 시퀀스와 제2 엣지 시퀀스가 서로 다른 패턴을 갖도록, 난수 시퀀스를 반전(NOT) 연산한 0111011000 값을 제2 엣지 시퀀스로 생성할 수 있다.
전술한 바와 같이, 심층 신경망(150)을 형성하는 복수개의 계층들 각각에서 총 에지들의 개수에 대한 연결 해제된 엣지의 개수를 '비율값' 또는 '드랍아웃 비율'이라 할 때, 심층 신경망(150)에 포함되는 복수개의 계층들에서 비율값을 일정하게 조절하는 동작을 밸런싱 동작(balancing operation)이라 할 수 있다. 전술한 예시에서와 같이, 인코딩 회로(426)는 밸런싱 동작을 수행하여 제2 엣지 시퀀스를 생성할 수 있다.
S508단계에서 인코딩 장치(420)는 제2 데이터에 근거하여, 소정 계층에서의 복수개의 엣지들 각각을 연결 또는 연결해제하고, 소정 계층을 통한 학습을 수행할 수 있다.
도 6은 일 실시예에 따른 인코딩 장치에서 제1 엣지 시퀀스와 난수 시퀀스를 비교하여 제2 엣지 시퀀스를 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 메모리(602), 학습 회로(604) 및 인코딩 회로(606)는 도 1의 메모리(110), 학습 회로(120) 및 인코딩 회로(130)에 대응하는 구성일 수 있다.
도 7은 일 실시예에 따른 제1 엣지 시퀀스와 난수 시퀀스를 비교하여 제2 엣지 시퀀스를 결정하는 흐름도를 도시한다.
S700단계에서 메모리(602)는 일 실시예에 따라 제1 동작 주기에서 출력되었던 제1 엣지 시퀀스를 저장할 수 있다.
S702단계에서 인코딩 회로(606)는 일 실시예에 따라 난수 시퀀스 및 제1 엣지 시퀀스가 동일 범위에 속하는지 결정할 수 있다. 여기서, 난수 시퀀스는 제1 클럭 주기에 획득된 적어도 하나의 난수를 포함할 수 있다.
일 실시예에 따라 인코딩 회로(606)는 제1 엣지 시퀀스와 난수 시퀀스를 구성하는 이진수들이 서로 동일한지 여부를 결정할 수 있다(S702). S702 단계에 있어서 '동일'은, 시퀀스가 실질적으로 동일한 패턴을 가져서, 동일한 2진 값을 가지는 경우를 의미할 수 있다. 또한, '동일'은 난수 시퀀스 또는 제1 엣지 시퀀스에 있어서, 시퀀스에 포함되는 0 또는 1 값의 '비율이 동일'한 것을 의미할 수도 있다. 또한, '동일'은 제1 엣지 시퀀스와 제2 엣지 시퀀스 간의 서로 다른 값을 갖는 비트의 개수가 소정 임계치 이하인지 여부에 따라서 결정될 수 있다. 예를 들어, 1 엣지 시퀀스와 제2 엣지 시퀀스 간의 서로 다른 값을 갖는 비트의 개수가 전체 비트수의 10% 이하이면 난수 시퀀스와 제1 엣지 시퀀스는 동일 범위 내의 값을 갖는 것으로 판단할 수 있다. 즉, 인코딩 회로(606)는 난수 시퀀스와 동일한 제2 엣지 시퀀스를 생성할지 결정하기 위하여, 난수 시퀀스 및 제1 엣지 시퀀스가 완전히 동일하거나 또는 완전히 동일하지는 않더라도 시퀀스에 포함되는 0 또는 1 값의 비율이 동일범위에 속하는지를 결정할 수 있다. 일 실시예에 따라 인코딩 회로(606)는 난수 시퀀스 및 제1 엣지 시퀀스를 비교하기 위한 비교부(comparator)를 포함할 수 있다.
S702 단계의 판단 결과에 근거하여, 인코딩 회로(606)는 제2 난수 시퀀스를 생성할 수 있다(S703).
구체적으로, 일 실시예에 따라 제1 엣지 시퀀스와 난수 시퀀스가 동일 범위에 속하는 것으로 결정되는 경우, S704단계에서 인코딩 회로(606)는 제1 엣지 시퀀스에 기초하여 난수 시퀀스를 가공하여, 제1 엣지 시퀀스 및 제1 난수 시퀀스 중 적어도 하나와 동일 범위에 속하지 않는 제2 엣지 시퀀스를 생성할 수 있다.
도 6을 포함하여, 이하에서는 심층 신경망(150)에 포함되는 소정 계층에 형성된 엣지들의 개수가 10개이며, 엣지 시퀀스가 2진수의 10비트 크기로 형성되는 경우를 예로 들어 설명한다.
도 6을 참조하면, 일 실시예에 따라 제1 동작 주기에서 소정 계층의 엣지 연결 또는 연결 해제를 위해 이용된 엣지 시퀀스가 1010101010인 경우, 메모리(602)는 제1 엣지 시퀀스로서 1010101010이라는 이진수 시퀀스를 저장하고 있을 수 있다.
일 실시예에 따라 난수 생성 회로(608)에서는 소정 계층의 엣지 개수에 기초하여 복수개의 난수를 포함하는 난수 시퀀스를 생성할 수 있다. 인코딩 회로(606)는 난수 시퀀스와 메모리(602)에 저장된 제1 엣지 시퀀스를 비교할 수 있다. 인코딩 회로(606)는 일 실시예에 따라 난수 시퀀스 및 제1 엣지 시퀀스의 비교 결과, 두 시퀀스가 동일 범위가 아닌 것으로 결정된 경우 난수 시퀀스와 동일한 이진수 시퀀스를 제2 엣지 시퀀스로서 생성할 수 있다.
일 실시예에 따라 인코딩 회로(606)는 제1 엣지 시퀀스 및 난수 시퀀스가 동일 범위에 포함되는지를 결정하기 위하여, 제1 엣지 시퀀스 및 난수 시퀀스의 각각의 비트마다 비교하여 상이한 비트의 개수를 결정할 수 있다. 인코딩 회로(606)는 제1 엣지 시퀀스 및 난수 시퀀스간에 상이한 값을 갖는 비트의 개수가 소정의 임계치 이상인 경우 제1 엣지 시퀀스 및 난수 시퀀스는 동일 범위에 속하지 않는다고 결정할 수 있다.
도 6을 참조하면, 임계치가 3인 경우를 예로 들면, 인코딩 회로(606)는 임계치를 3인 것에 기초하여 제1 엣지 시퀀스 및 난수 시퀀스를 비교할 수 있고, 제1 엣지 시퀀스(1010101010) 및 난수 시퀀스(0010100001)의 각각의 비트 중 4개의 비트가 상이하므로 제1 엣지 시퀀스 및 난수 시퀀스 간의 상이한 비트의 개수가 임계치 3 보다 큰 값에 해당하는 바, 동일 범위에 속하지 않는다고 결정할 수 있다. 이 경우 인코딩 회로 (606)는 난수 시퀀스(0010100001)을 제2 엣지 시퀀스로서 결정할 수 있다.
또 다른 일 실시예에 따라 인코딩 회로 (606)는 임계치를 3인 것에 기초하여 제1 엣지 시퀀스 및 난수 시퀀스를 비교할 수 있다. 도 6을 참조하면, 제1 엣지 시퀀스(1010101010) 및 난수 시퀀스(1010101110)의 각각의 비트 중 하나의 비트만이 상이할 뿐이므로 제1 엣지 시퀀스 및 난수 시퀀스 간의 상이한 비트의 개수가 임계치 3 이하에 해당하는 바, 인코딩 회로 (606)는 제1 엣지 시퀀스와 난수 시퀀스가 동일 범위에 속한다고 결정할 수 있다. 이 경우 인코딩 회로(606)는 난수 시퀀스(1010101110)를 가공함으로써 제1 엣지 시퀀스와 동일 범위에 포함되지 않는 새로운 엣지 시퀀스를 생성할 수 있고, 가공된 엣지 시퀀스를 제2 엣지 시퀀스로서 생성하여 출력할 수 있다.
예를 들어, 인코딩 회로 (606)는 제1 엣지 시퀀스에 동일 범위에 포함되는 난수 시퀀스를 가공하여 새로운 엣지 시퀀스를 생성하기 위하여, 난수 시퀀스에 대하여 비트 반전 연산(NOT 연산)을 수행할 수 있다. 도 6을 참조하면, 인코딩 회로(606)는 난수 시퀀스(1010101110)에 포함된 이진수 중 0은 1로 변경하고 1은 0으로 변경하여 제2 엣지 시퀀스(0101010001)을 생성할 수 있다. 다만 인코딩 회로(606)가 난수 시퀀스에 대한 비트 반전 연산을 수행하는 것은 난수 시퀀스를 가공하기 위한 방법을 설명하기 위한 일 실시예에 불과하므로, 인코딩 회로(606)가 난수 시퀀스를 가공하는 방법에는 난수 시퀀스가 제1 엣지 시퀀스의 동일 범위에 포함되지 않도록 수행될 수 있는 다양한 방법이 포함될 수 있는 것으로 해석되어야 한다.
일 실시예에 따라 인코딩 회로(606)는 난수 시퀀스에 포함되는 0 및 1값의 비율 값인 제1 비율값 및 제1 엣지 시퀀스에 포함되는 0 및 1값의 비율 값인 제2 비율값에 기초하여, 제1 엣지 시퀀스와 다르게 제2 동작 주기에서 제2 엣지 시퀀스를 생성할 수 있다. 여기서 비율값이란 시퀀스의 크기 중 0이 차지하는 비율로 정의될 수 있다. 일 실시예에 따라 인코딩 회로(606)는 제1 비율값 및 제2 비율값이 서로 동일 범위에 포함되는지를 결정할 수 있다. 일 실시예에 따라 인코더(606)는, 제1 비율값 및 제2 비율값이 동일 범위에 포함되지 않는 경우 난수 시퀀스와 동일한 제2 엣지 시퀀스를 생성하고, 동일범위에 포함되는 경우에는 난수 시퀀스를 가공하여 제1 엣지 시퀀스와 동일 범위가 아닌 제2 엣지 시퀀스를 생성할 수 있다.
일 실시예에 따라, 제1 비율값 및 제2 비율값의 비율의 차이가 20프로 이하인 경우 동일 범위에 포함되는 것으로 결정될 수 있다. 예를 들면, 제1 비율값이 30프로이고 제2 비율값이 10프로보다 작거나 50프로보다 큰 경우에는 제2 비율값이 제1 비율값과 동일 범위에 포함되지 않으므로, 인코딩 회로(606)는 난수 시퀀스와 동일한 제2 엣지 시퀀스를 생성할 수 있다. 이에 반해, 제1 비율값이 30프로이고 제2 비율값이 10프로 이상 50프로 이하인 경우에는 제2 비율값이 제1 비율값과 동일 범위에 포함되므로, 인코딩 회로 (606)는 난수 시퀀스를 가공함으로써 제1 엣지 시퀀스와 동일 범위에 포함되지 않은 제2 엣지 시퀀스를 생성할 수 있다. 인코딩 회로(606)는 제1 엣지 시퀀스를 가공하기 위하여, 제1 비율값에 소정의 연산(예를 들면, 소정의 값을 제1 비율값에 가산, 차분 또는 승산)을 수행할 수 있으며, 연산 결과에 따라 제2 엣지 시퀀스를 생성할 수 있다.
일 실시예에 따라 인코딩 회로(606)는 난수 시퀀스에 포함되는 0 및 1값의 패턴 및 제1 엣지 시퀀스에 포함되는 0 및 1값의 패턴에 기초하여, 제1 엣지 시퀀스와 다르게 제2 동작 주기에서 제2 엣지 시퀀스를 생성할 수 있다. 일 실시예에 따라 인코더(606)는 난수 시퀀스 및 제1 엣지 시퀀스에 포함된 0 및 1값이 일정한 패턴으로 구성(예를 들면, 일정한 간격으로 적어도 하나의 이진수들이 반복)되는지 결정할 수 있다. 일 실시예에 따라 인코딩 회로(606)는 난수 시퀀스 및 제1 엣지 시퀀스가 일정한 패턴을 갖는지 결정하고, 난수 시퀀스 및 제1 엣지 시퀀스가 동일 범위에 포함되는 것으로 결정되는 경우, 난수 시퀀스를 가공하여 제1 엣지 시퀀스와 동일 범위에 포함되지 않는 제2 엣지 시퀀스를 결정할 수 있다. 인코딩 회로(606)가 난수 시퀀스를 가공하는 방법은 본 문서에서 다양한 실시예를 통해 설명한 방법들이 될 수 있다.
일 실시예에 따라 인코딩 회로(606)는 난수 시퀀스가 제1 엣지 시퀀스의 동일 범위에 포함되지 않도록 수행할 수 있는 복수개의 가공 방법 중 하나를 이용하여 난수 시퀀스를 가공할 수 있다. 일 실시예에 따라 인코딩 회로(606)가 수행할 수 있는 복수개의 가공 방법들 중 일부는 수행 결과가 제1 엣지 시퀀스의 동일 범위에 포함되는 것일 수 있다. 인코딩 회로(606)는 이러한 동일 범위에 포함되는 가공 방법을 제외한 나머지 가공 방법들 중 일부를 선택하여 제1 엣지 시퀀스를 가공함으로써 제2 엣지 시퀀스를 결정할 수 있다.
일 실시예에 따라 제1 엣지 시퀀스와 난수 시퀀스가 동일 범위에 속하지 않는 것으로 결정된 경우, S706단계에서 인코딩 회로(606)는 제1 난수 시퀀스를 제2 엣지 시퀀스로서 결정할 수 있다.
일 실시예에 따라 인코딩 회로(606)는 S708단계에서 제2 엣지 시퀀스를 학습 회로(604)로 출력할 수 있고 이에 따라 학습회로(604)는 제2 엣지 시퀀스에 근거하여 소정 계층에서의 복수개의 엣지들 각각을 연결 또는 연결해제하고 소정 계층을 통한 학습을 수행할 수 있다.
도 8은 일 실시예에 따른 인코딩 장치와 연결되는 심층 신경망에 대한 설명을 위한 도면이다. 도 8에 있어서, 학습 회로(120)는 심층 신경망(800)을 통한 연산을 수행할 수 있다. 심층 신경망(800)는 도 1b에 도시한 심층 신경망(150)와 대응되므로, 도 1b에서와 중복되는 설명은 생략한다.
일 실시예에 따라 심층 신경망(800)은 학습 회로(120)를 통해 구현될 수 있으며 학습 회로(120)에는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), NNP(Neural Network Processor) 등을 포함하는 다양한 프로세서가 포함될 수 있다. 즉, 학습 회로(120)는 반도체 등을 포함하는 하드웨어로 구현되는 심층 신경망에 해당하는 구성일 수 있다.
일 실시예에 따라 학습 회로(120)는 인공지능(AI)이 구현되는 심층 신경망을 위한 전용 하드웨어 형태로 제작될 수 있다. 또한 본 문서에서 개시하는 다양한 실시예에서 개시한 학습 회로(120)의 데이터 처리 과정 일부는 다른 심층 신경망 전용 하드웨어에 의해 구현될 수 있다. 나아가 학습 회로(120)의 데이터 처리 과정 중 일부는 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부에 의해 처리될 수 있다. 범용 프로세서 또는 그래픽 전용 프로세서에 의해 데이터가 처리되는 경우에, 적어도 하나의 소프트웨어 모듈에 의해 처리될 수 있고, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 애플리케이션에 의해 제공될 수 있다.
일 실시예에 따라 심층 신경망(800)에는 CNN(Convolutional Neural Network), RNN(Recursive Neural Network)를 포함하는 다양한 구성의 심층 신경망이 포함될 수 있다. 즉, 일 실시예에 따라 학습 회로(120)는 복수개의 숨은 계층(hidden layer)를 포함하는 다양한 형태의 심층 신경망을 구현하는 프로세서일 수 있다. 특히, CNN의 경우 이미지 인식, 추론 및 구분에서 다양하게 활용되고 있으며, RNN의 경우 음성, 음악, 문자열, 동영상 등 순차적 데이터 학습에 다양하게 활용되고 있다.
도 8을 참조하면 심층 신경망(800)에는 입력 신호에 대하여 필터커널(filter kernel)에 기초한 컨볼루션 연산을 수행하여 특성맵(feature map)을 생성하는 컨볼루셔널 계층(convolutional layer)(805) 및 컨볼루션 연산이 수행된 결과로 생성되는 복수개의 특성맵들에 대한 추론 또는 분류(classification) 과정을 수행하는 완전 연결 계층(fully connected layer)(822)를 포함할 수 있다. 이러한 컨볼루셔널 계층에서 수행되는 컨볼루션 연산은 각 계층의 입력에 대하여 복수개의 필터 커널을 소정의 간격으로 이동시키면서 재차 컨볼루션 연산을 수행하여야 하므로 연산량이 요구되고, 컨볼루셔널 계층을 거쳐 생성되는 특성맵에 대한 추론 또는 분류 과정에서는 많은 양의 메모리 크기가 요구된다. 따라서 이러한 컨볼루셔널 계층 및 완전 연결 계층에서 중복성을 띄는 가중치, 엣지를 제거하거나 리스케일링(rescaling)하여 학습이 수행된다면 추론의 정확성의 큰 감소 없이 연산량 및 메모리 크기를 효율적으로 줄일 수 있다. 따라서 도 8에서 도시하는 CNN뿐만 아니라, 완전 연결 계층만으로 구성되는 RNN의 경우에도 다양한 실시예를 통해 네트워크에서 이용되는 가중치, 엣지를 효율적으로 관리될 수 있다. 일 실시예에 따라 심층 신경망에서 이용되는 가중치, 엣지를 관리하는 방법으로는 드랍아웃(drop out),프루닝(pruning), 동적 고정 소수점(dynamic fixed point) 방 등이 포함될 수 있으나 이에 한정하지는 않는다.
일 실시예에 따라 심층 신경망(800)의 추론 방향(820)과 학습 방향(822)은 서로 반대되는 방향일 수 있다. 즉, 학습 회로(120)는 심층 신경망(800)을 통한 입력의 추론 과정을 수행하기 위하여, 입력 계층(830)으로부터 출력 계층(850) 쪽으로 추론하는 정방향 추론 과정을 수행할 수 있다. 일 실시예에 따라 학습 과정은 추론 방향(820)에 기초하여 수행된 추론 결과의 정확성을 높이기 위하여, 출력단으로부터 입력단 쪽으로 학습을 수행하는 역방향 학습 과정이 수행될 수 있다. 일 실시예에 따라 역방향으로 수행되는 학습 과정을 통해, 학습 회로(120)는 출력단에 가까운 계층부터 입력단에 가까운 계층까지 가중치 또는 엣지의 조절 과정을 계층마다 순차적으로 수행할 수 있다.
도 9는 일 실시예에 따른 심층 신경망의 각 계층에 포함되는 엣지의 연결 또는 연결해제 상태를 나타내는 도면이다.
드랍아웃(dropout) 연산을 수행하기 위해서는 도 8에서 도시된 바와 같이 전체 연결된 에지들 중, 각 계층마다 소정의 에지들의 연결을 해제하여야 한다.
일 실시예에 따라 학습 회로(120)는 제2 엣지 시퀀스에 기초하여 심층 신경망(900)에 포함된 소정 계층(910)의 복수개의 엣지들을 연결하거나 연결 해제 할 수 있다. 일 실시예에 따라 학습 회로(120)가 이용하는 엣지 시퀀스는 소정 계층에 대한 각 노드들 간의 연결 여부를 나타내는 것으로서 소정의 순서에 따라 정렬된 이진수일 수 있다. 예를 들면, 엣지 시퀀스는 심층 신경망(900)의 학습 방향(922)에 기초하여 소정 계층(910)의 엣지의 연결 여부를 결정할 수 있으며, 이러한 소정 계층(910)에 대한 엣지 시퀀스는 다음과 같은 순서로 정렬된 것일 수 있다. 이하의 표의 각각의 칸은 엣지 시퀀스의 각각의 자리수를 나타낸다.
상기의 표에 있어서, 'c_1→ b_1'는 9에 도시된 c_1노드에서 b_1 노드를 연결하는 엣지를 의미한다. 상기된 엣지 시퀀스에 있어서, 'c_1→ b_1' 칸의 값이 0 이면 c_1노드에서 b_1 노드를 연결하는 엣지는 도 9에 도시된 바와 같이 연결 해제될 수 있다. 또한, 'c_1→ b_4'는 9에 도시된 c_1노드에서 b_4 노드를 연결하는 엣지를 의미한다. 상기된 엣지 시퀀스에 있어서, 'c_1→ b_4' 칸의 값이 1 이면 c_1노드에서 b_4 노드를 연결하는 엣지는 도 9에 도시된 바와 같이 연결되어 있을 수 있다.
다만 상술한 엣지 시퀀스의 정렬 방법은 획득된 엣지 시퀀스를 학습 회로(120)가 어떤 순서로 엣지를 연결하고 연결 해제할지를 결정하는 방법을 설명하기 위한 예시에 불과하므로, 당업자가 용이하게 복수개의 노드들의 엣지 연결 상태의 결정하기 위하여 생성할 수 있는 다양한 이진수 시퀀스 정렬 방법을 포함할 수 있다.
일 실시예에 따라 학습 회로(120)는 획득한 제2 엣지 시퀀스에 기초하여 소정 계층(910)에 포함된 엣지들 중 일부를 연결해제 상태로 결정할 수 있다. 전술한 예에서와 같이, 엣지 시퀀스는 소정 계층에 포함되는 엣지들의 연결 또는 연결 해제에 대한 정보를 포함하고 있으므로, 학습 회로(120)는 인코딩 회로(130)에서 출력되는 엣지 시퀀스에 근거하여 심층 신경망에 포함되는 적어도 하나의 계층 또는 전체 계층에서 포함되는 엣지들의 적어도 일부를 연결해제 할 수 있다. 그리고, 엣지 시퀀스에 근거하여 수정된 심층 신경망을 통하여 전술한 드랍아웃 연산을 수행할 수 있다.
또한, 도 9를 참조하면, 학습 회로(120)는 제2 엣지 시퀀스에 기초하여 소정 계층(910)의 학습 과정에서 c_3노드에 연결된 모든 엣지들을 연결해제 할 수 있다. 이에 따라 c_3 노드로 입력되는 정보 및 출력되는 정보는 모두 차단된 상태로 소정 계층(910)의 학습이 수행될 수 있다. 도 9를 참조하면, 학습 회로(120)는 제2 엣지 시퀀스에 기초하여 소정 계층(910)의 b_2, b_5, c_3, c_5 노드의 엣지를 모두 연결 해제한 상태로 학습을 수행할 수 있으며, 노드의 엣지를 모두 연결 해제함으로써 드랍 아웃을 수행할 수 있다. 나아가 학습 회로(120)는 b_2, b_5, c_3, c_5 노드의 엣지들 뿐만 아니라 소정 계층(910)의 다른 노드에 연결된 엣지들 중 일부를 연결 해제하여 학습을 수행할 수 있다.
도 10a 및 도 10b는 일 실시예에 학습 회로(120)가 학습 과정에서 각 계층 별로 가중치를 조절하는 과정을 도시한 것이다.
도 10a를 참조하면, 일 실시예에 따라 학습 회로(120)는 제1 계층(1010) 및 제2 계층(1012)을 포함하는 복수개의 계층을 이용하여 추론 과정을 수행할 수 있으며, 추론 결과로 출력되는 값의 정확성을 향상시키는 방향으로 학습 과정을 수행할 수 있다. 일 실시예에 따라 학습 회로(120)에서 수행하는 학습 과정은 추론 과정에 수행되는 방법의 반대 방향일 수 있으므로 제2 계층(1010)에 대한 학습이 종료된 후 제1 계층(1012)에 대한 학습이 시작된다.
일 실시예에 따라 학습 회로(120)는 제2 엣지 시퀀스에 기초하여 심층 신경망(1000)에 포함된 제2 계층(1012)의 복수개의 엣지들을 연결하거나 연결 해제 할 수 있다. 일 실시예에 따른 학습 회로(120)가 이용하는 엣지 시퀀스는 소정 계층에 대한 각 노드들 간의 연결 여부를 나타내는 것으로서 소정의 순서에 따라 정렬된 이진수일 수 있다. 도 10a에 따르면, 학습 회로(120)는 인코딩 회로(130)에 의해 생성된 제2 엣지 시퀀스에 기초하여 제2 계층(1012)에서 이용되는 노드들(b_1, b_2, ..., b_n, c_1, c_2, ..., c_n)간을 연결하는 엣지들의 일부를 생략할 수 있다. 학습 회로(120)는 학습 과정에서 생략되지 않은 엣지들을 이용하여 심층 신경망의 추론의 정확성을 높이는 방향으로 학습을 수행할 수 있으며, 학습 과정에서 생략되지 않은 엣지들에 할당된 가중치를 변경할 수 있다. 즉, 학습 회로(120)는 제2 엣지 시퀀스에 의해 결정된 엣지 연결 상태에 기초하여 제2 계층(1012)의 가중치를 변경하는 학습 과정을 수행할 수 있다.
일 실시예에 따라 학습 회로(120)에 의해 제2 계층(1012)에서의 학습 과정이 종료된 경우 학습 방향에 기초하여 제1 계층(1010)의 학습 과정이 시작될 수 있다. 도 10a에 따르면, 제2 동작 주기에서 인코더(130)에 의해 생성된 제2 엣지 시퀀스에 기초하여 학습 회로(120)는 제2 계층(1012)의 가중치를 변경하는 학습 과정을 수행함으로써, 도 10b의 학습된 제2 계층(1022)으로 변경될 수 있다. 학습된 제2 계층(1022)은 이후에 제1 계층(1020)의 학습 과정에 영향을 미칠 수 있으며, 이에 따라 제1 계층(1020)은 학습된 제2 계층(1022)의 가중치를 고려하여 제1 계층(1020)에 포함된 가중치를 변경하는 학습 과정을 수행할 수 있다.
일 실시예에 따라 학습 회로(120)는 제2 동작 주기에서 학습이 수행되어 결정된 심층 신경망의 복수개의 계층들의 가중치에 기초하여 추론 과정을 수행할 수 있다. 학습 회로(120)는 제2 동작 주기 이후에 추론 결과로서 출력되는 결과 값의 정확성을 높이기 위하여 상술한 실시예들을 통한 학습 과정을 반복적으로 수행할 수 있다. 이에 따라 인코딩 장치(100)는 제2 동작 주기에서 소정 계층에 대한 제2 엣지 시퀀스를 메모리(110)에 저장하고 제2 엣지 시퀀스에 따라 학습된 가중치에 기초하여 추론 과정을 수행한 후, 제2 동작 주기와 다른 제3 동작 주기에서 제3 엣지 시퀀스를 메모리(110)에서 획득할 수 있다. 여기서 제3 엣지 시퀀스는 제3 동작 주기에서 메모리(110)에 저장되었던 엣지 시퀀스에 해당할 수 있다. 따라서 인코딩 회로(130)는 제3 엣지 시퀀스 및 클럭 신호에 응답하여 새롭게 생성되는 난수 시퀀스에 기초하여 심층 신경망에 포함되는 소정 계층에서의 복수개의 엣지들의 연결 또는 연결해제를 나타내는 제4 엣지 시퀀스를 제3 동작 주기 이후에 도래하는 제4 동작 주기에서 생성할 수 있다.
일 실시예에 따라 인코딩 장치(100)에서 이용되는 제1 엣지 시퀀스, 제2 엣지 시퀀스, 제3 엣지 시퀀스 및 제4 엣지 시퀀스는 인코딩 회로(130)의 동작 주기 별로 각각 생성되어 학습 회로(120)로 출력되는 엣지 시퀀스에 해당하며, 상술한 다양한 실시예들을 통해 생성 및 가공될 수 있다.
도 11은 일 실시예에 따라 이전 동작 주기에서 결정된 엣지의 가중치를 이용하여 인코딩을 수행하는 인코딩 장치(1100)에 대한 블록도를 도시한다.
일 실시예에 따라 인코딩 장치(1100)는 제1 동작 주기에서 결정된 소정 계층을 구성하는 복수개의 엣지들의 연결 상태에 대한 제1 엣지 시퀀스를 저장하는 메모리(1110), 및 소정 계층의 복수개의 엣지들의 연결 상태를 나타내는 이진수들의 집합인 제2 엣지 시퀀스를 제1 동작 주기와 다른 제2 동작 주기에서 생성할 수 있는 인코딩 회로(1120)를 포함한다. 한편, 학습 회로(1130)는 인코딩 회로(1130)에 의해 결정된 엣지 시퀀스에 기초하여 추론 및 학습 과정을 수행할 수 있다. 또한, 레지스터(1140)는 소정 계층을 구성하는 복수개의 엣지들의 가중치를 저장할 수 있다.
일 실시예에 따라 도 11의 메모리(1110), 인코딩 회로(1120) 및 학습 회로(1130)는 도 1a의 메모리(110), 인코딩 회로(130) 및 학습 회로(120)와 각각 유사할 수 있으므로 자세한 설명은 생략하기로 한다. 이하에서는, 레지스터(1140)가 저장된 가중치를 이용하는 특징에 관하여 설명하도록 한다.
일 실시예에 따라 메모리(1110) 및 레지스터(1140)는 엣지의 연결 상태를 나타내는 엣지 시퀀스 및 엣지의 가중치를 저장하는 유사한 기능을 수행하므로, 메모리(1110) 및 레지스터(1140)의 특징은 저장 기능을 수행하는 단일한 구성요소 또는 구분되는 복수개의 메모리로 구현될 수도 있다. 다만 이하에서는 설명상의 편의를 위하여 메모리(1110) 및 레지스터(1140)으로 구분하여 설명하도록 한다.
도 12는 일 실시예에 따라 인코딩 장치(1100)가 레지스터(1140)에 저장된 복수개의 엣지들의 가중치에 기초하여 제2 엣지 시퀀스를 생성하는 과정을 설명하기 위한 흐름도이다.
S1200 단계에서 인코딩 장치(1100)의 레지스터(1140)는 일 실시예에 따라 소정 계층을 구성하는 복수개의 엣지들의 가중치로 구성되는 제1 엣지 가중치를 제1 동작 주기에서 저장할 수 있다. 일 실시예에 따라 레지스터(1140)에 저장된 제1 엣지 가중치는 소정 계층의 엣지들 각각에 대한 가중치를 포함하는 정보일 수 있다.
S1202 단계에서 인코딩 장치(1100)의 인코딩 회로(1120)는 S1200에서 저장된 제1 엣지 가중치와 소정의 임계 가중치의 크기를 비교할 수 있다. 일 실시예에 따라 인코딩 회로(1120)는 제1 엣지 가중치와 소정의 임계 가중치의 비교를 위한 비교부(comparator)를 포함할 수 있다.
S1204 단계에서 인코딩 장치(1100)의 인코딩 회로(1130)는 S1202단계에서의 비교 결과에 근거하여, 제1 엣지 가중치 중 임계 가중치보다 큰 가중치를 가지는 엣지는 연결을 나타내고, 임계 가중치 이하인 엣지는 연결 해제를 나타내는 제2 엣지 시퀀스를 생성할 수 있다. 일 실시예에 따라 제2 엣지 시퀀스는 이진수 시퀀스일 수 있으며 1은 엣지의 연결, 0은 엣지의 연결 해제를 나타내는 정보일 수 있다.
S1206 단계에서 학습 회로(1130)는 인코딩 회로(1120)로부터 수신한 제2 엣지 시퀀스에 근거하여 제2 동작 주기에서 소정 계층에서의 복수개의 엣지들 각각을 연결 또는 연결해제하고, 소정 계층을 통한 학습을 수행할 수 있다. 학습 결과 결정되는 복수개의 엣지들의 가중치는 다시 레지스터(1140)에 저장되어, 다음 동작 주기에서 소정의 임계 가중치와 비교하기 위해 이용될 수 있다. 일 실시예에 따라 S1206단계에서 학습 회로(1130)가 수행하는 동작에 대한 특징은 다양한 실시예를 통해 상술한 학습 회로의 특징과 유사한 특징일 수 있으므로 자세한 설명은 생략하도록 한다.
일 실시예에 따라 인코딩 장치(1100)는 레지스터(1140)에 저장된 제1 엣지 가중치 뿐만 아니라 소정 계층의 엣지 연결 상태를 나타내는 엣지 시퀀스를 이용하여 심층 신경망의 학습 과정을 수행할 수 있다. 일 실시예에 따라, 학습 회로(1130)는 메모리(1110)에 저장된 제1 엣지 시퀀스와 난수 생성 회로(미도시)로부터 획득된 난수 시퀀스를 비교한 결과에 따라 생성된 제2 엣지 시퀀스를 이용하여 학습 과정을 수행할 수 있다. 학습 결과에 따라 결정된 제1 엣지 가중치는 레지스터(1140)에 저장될 수 있고, 다음 동작 주기에서 인코딩 회로(1120)는 제1 엣지 가중치와 소정의 임계 가중치를 비교하여 새로운 엣지 가중치를 생성할 수 있다. 학습 회로(1130)는 이러한 과정을 통해 생성된 엣지 시퀀스를 이용하여 학습 과정을 수행할 수 있다.
도 13은 일 실시예에 따른 인코딩 장치, 학습 회로 및 카운터에 대한 블록도를 도시한다.
일 실시예에 따라 도 13의 메모리(1310), 인코딩 회로(1320) 및 학습 회로(1330)의 특징은 도 1a의 메모리(110), 인코딩 회로(130) 및 학습 회로(120)의 상술한 특징들과 유사한 것일 수 있으므로 상세한 설명을 생략하기로 한다. 이하에서는, 레지스터(1340)에 저장된 가중치를 이용하는 특징에 관하여 설명하도록 한다.
일 실시예에 따라 카운터(1340)는 인코딩 회로(1320)가 제2 엣지 시퀀스를 생성하는 과정에서 소정의 조건을 만족하는 회수를 계산할 수 있다. 일 실시예에 따라 카운터(1340)는 미리 정해진 순서대로 수를 세는 계수기로서, 플립플롭들이 미리 정해진 순서에 따라 상태가 천이되도록 설계되어 입력 펄스에 따라서 레지스터의 상태가 미리 정해진 순서대로 변화하는 레지스터를 포함하는 구성일 수 있다.
예를 들면, 카운터(1340)는 인코딩 회로(1320)의 제1 엣지 시퀀스와 난수 시퀀스 간의 비교 과정에서 제1 엣지 시퀀스 및 난수 시퀀스를 구성하는 각각의 비트가 동일한 회수를 계산할 수 있다. 인코딩 회로(1320)는 카운터(1340)의 계산 결과에 기초하여 난수 시퀀스를 그대로 이용하여 제2 엣지 시퀀스를 생성할 것인지 아니면 난수 시퀀스를 가공하여 제2 엣지 시퀀스를 생성할 것인지 결정할 수 있다. 나아가 카운터(1340)는 제1 엣지 시퀀스에 포함된 0의 비율(드랍아웃 비율) 및 난수 시퀀스에 포함된 0의 비율을 계산하여 제2 엣지 시퀀스를 생성할 수 있다. 인코딩 회로(1320)가 드랍아웃 비율을 이용하여 제2 엣지 시퀀스를 생성하는 과정은 다양한 실시예를 통해 상술하였으므로 자세한 설명은 생략한다.
또 다른 예를 들면, 인코딩 회로(1320)는 도 11의 레지스터(1140) 또는 메모리(1110)에 저장된 소정 계층의 제1 엣지 가중치와 소정의 임계 가중치를 비교할 수 있으며, 카운터(1340)는 소정 계층을 구성하는 복수개의 엣지들 중 소정의 임계 가중치보다 더 큰 가중치를 가지는 엣지의 개수를 계산할 수 있다. 인코딩 회로(1320)는 카운터(1340)의 계산 결과에 기초하여 소정 계층의 복수개의 엣지들 중 연결 상태인 엣지의 개수(또는 연결 해제 상태인 엣지의 개수)를 결정할 수 있으며, 이에 기초하여 제2 엣지 시퀀스를 생성할 수 있다. 인코딩 회로(1320)가 카운터(1340)의 계산 결과에 따라 결정된 드랍아웃 비율에 기초한 제2 엣지 시퀀스를 생성하는 방법은 다양한 실시예를 통해 상술하였으므로 자세한 설명은 생략한다.
즉, 다양한 실시예에서 이용될 수 있는 카운터(1340)는 제1 엣지 시퀀스 및 난수 시퀀스, 제1 엣지 가중치 등을 비교하는 과정에서 소정의 조건을 만족하는 회수를 계산하기 위하여 다양하게 활용될 수 있다. 이러한 카운터(1340)에는 비동기식 카운터, 동기식 카운터, UP-카운터 등 다양한 플립플롭 구조로 구현되는 카운터를 포함하는 것일 수 있다.
도 14는 일 실시예에 따른 인코딩 장치, 학습 회로 및 선택부에 대한 블록도를 도시한다.
일 실시예에 따라 인코딩 장치(1400)는 메모리(1410) 및 인코딩 회로(1420)를 포함할 수 있으며, 학습 회로(1430)와 연결될 수 있다. 또한, 인코딩 장치(1400)는 선택부(1440), 레지스터(1442) 및 난수 생성 회로(1444)와 연결될 수 있다. 일 실시예에 따라 도 14의 메모리(1410), 인코딩 회로(1420) 및 학습 회로(1430) 의 특징은 도 1a의 메모리(110), 인코딩 회로(130) 및 학습 회로(120)의 상술한 특징들과 유사한 것일 수 있으므로 자세한 설명은 생략하기로 한다. 또한 도 14의 레지스터(1442) 및 난수 생성 회로(1444)의 특징은 각각 도 11의 레지스터(1140) 및 도 3의 난수 생성 회로(340)의 특징과 유사한 것일 수 있으므로 자세한 설명은 생략하도록 한다.
도 14를 참조하면 선택부(1440)는 레지스터(1442) 및 난수 생성 회로(1444)로부터 소정의 정보를 획득하여 두 정보를 선택적으로 출력할 수 있다. 일 실시예에 따라 선택부(1440)는 n비트(n>0)의 소정의 선택 신호(selection signal)을 획득하여 레지스터(1442) 및 난수 생성 회로(1444)로부터 획득한 소정의 정보를 선택적으로 출력하는 멀티플렉서(multiplexer)를 포함할 수 있으며, 출력된 레지스터(1442) 또는 난수 생성 회로(1444)의 정보는 메모리(1410), 인코딩 회로(1420) 및 학습 회로(1430)에 의해 상술한 다양한 실시예와 같이 활용될 수 있다. 즉, 선택부(1440)는 n비트의 선택 신호에 기초하여 결정될 수 있는 2^n개의 종류의 입력정보를 선택적으로 출력할 수 있다.
즉, 선택부(1440)와 연결된 인코딩 장치(1400)는 레지스터(1442)에 저장된 제1 엣지 가중치와 소정의 임계 가중치의 비교 결과에 기초한 제2 엣지 시퀀스 결정 과정 및 메모리(1410)에 저장된 제1 엣지 시퀀스와 난수 생성 회로(1444)에서 획득한 난수 시퀀스의 비교 결과에 기초한 제2 엣지 시퀀스 결정 과정을 선택적으로 이용할 수 있다.
구체적으로, 학습 회로(1430)가 전술한 드랍아웃 연산을 수행하기 위해서는 선택부(1440)는 난수 생성 회로(1444)에서 생성된 신호가 출력되도록 동작할 수 있다. 그에 따라서, 난수 생성 회로(1444)에서 출력되는 난수 시퀀스가 인코딩 회로(1420)로 전송될 수 있으며, 인코딩 회로(1420)는 전송된 난수 시퀀스를 이용하여 엣지 시퀀스를 생성하여 학습 회로(1430)로 전송할 수 있다.
또한, 학습 회로(1430)가 전술한 프루닝 연산을 수행하기 위해서는 선택부(1440)는 레지스터(1442)에 저장된 신호가 출력되도록 동작할 수 있다. 그에 따라서, 레지스터(1442)에서 출력되는 가중치값들이 학습 회로(1430)로 전송될 수 있다. 그에 따라서, 학습 회로(1430)는 레지스터(1442)에서 전송되는 가중치값들에 근거하여, 학습을 수행하거나, 정확도가 높아지는 방향으로 가중치값들의 수정 동작을 수행할 수 있다.
도 15는 일 실시예에 따른 인코딩 장치, 학습 회로, 레지스터, 카운터, 난수 생성 회로 및 선택부에 대한 블록도를 도시한다.
일 실시예에 따라 도 15의 메모리(1510), 인코딩 회로(1520) 및 학습 회로(1530)의 특징은 도 1a의 메모리(110), 인코딩 회로(130) 및 학습 회로(120)의 상술한 특징들과 유사한 것일 수 있으므로 자세한 설명은 생략하기로 한다. 또한 도 15의 레지스터(1542), 카운터(1544) 및 난수 생성 회로(1546)의 특징은 각각 도 11의 레지스터(1140), 도 13의 카운터(1340) 및 도 3의 난수 생성 회로(340)의 특징과 유사한 것일 수 있으므로 자세한 설명은 생략하도록 한다.
일 실시예에 따라 선택부(1540)는 레지스터(1542), 카운터(1544) 및 난수 생성 회로(1546)로부터 소정의 정보를 획득하여 선택적으로 출력할 수 있는 멀티플렉서 및 학습 회로(1530)의 중간 연산 결과를 획득하여 레지스터(1542)에 저장하도록 출력하는 디멀티플렉서(demultiplexer)를 포함할 수 있다.
일 실시예에 따라 학습 회로(1530)는 제1 엣지 시퀀스 또는 제2 엣지 시퀀스에 기초하여 학습 과정을 수행할 수 있고, 학습 결과에 기초한 추론 과정을 수행할 수 있다. 학습 회로(1530)는 제2 동작 주기에서 학습 과정의 중간 연산 결과를 선택부(1540)를 통해 레지스터(1542)로 저장할 수 있으며, 카운터(1540)는 일 실시예에 따라 이러한 중간 연산 결과의 값에 근거하여 오버플로우가 발생하였는지 여부를 판단하고, 이러한 판단 결과에 근거하여 오버플로우(overflow)가 발생한 회수를 계산할 수 있다. 인코딩 장치(1500)는 카운터(1540)에서 계산된 제2 동작 주기의 오버플로우 회수에 기초하여 고정 소수점을 동적으로 변경할 수 있는 동적 고정 소수점(dynamic fixed point) 방식을 이용하여 심층 신경망이 추론 및 학습을 수행할 수 있도록 제어할 수 있다. 즉, 학습 회로(1530)의 심층 신경망을 이용한 추론 및 학습 과정을 수행함에 있어서, 레지스터(1542)에 오버플로우가 발생하지 않으면서 효율적으로 입출력 정보를 관리하기 위하여 중간 연산 결과를 저장하고 카운터(1544)는 오버플로우 회수를 계산할 수 있다.
일 실시예에 따라 학습 회로(1530)는 카운터(1544)에 계산된 오버플로우 회수와 임계 오버플로우 회수를 비교하여 동적 고정 소수점 방식을 이용하여 학습 및 추론 과정을 수행할지를 결정할 수 있다. 즉, 학습 회로(1530)는 비교부(미도시)를 통해 카운터(1544)에 계산된 오버플로우 회수와 임계 오버플로우 회수를 비교한 결과에 기초하여 동적 고정 소수점 방식을 이용하여 학습 및 추론 과정을 수행할지를 결정할 수 있다. 예를 들면, 카운터(1544)에 계산된 오버플로우 회수가 임계 오버플로우 회수 이상인 경우, 학습 회로(1530)는 동적 고정 소수점 방식을 통해 고정 소수점을 변경하여 소정 계층에서의 학습 또는 추론 과정을 수행할 수 있다.
일 실시예에 따라 선택부(1540)와 연결된 인코딩 장치(1500)는 레지스터(1542)에 저장된 제1 엣지 가중치와 소정의 임계 가중치의 비교 결과에 기초한 제2 엣지 시퀀스 결정 과정, 메모리(1510)에 저장된 제1 엣지 시퀀스와 난수 생성 회로(1546)에서 획득한 난수 시퀀스의 비교 결과에 기초한 제2 엣지 시퀀스 결정 과정 및 레지스터(1542)에 저장된 중간 연산 결과의 오퍼플로우 회수를 계산하는 카운터(1544)를 이용한 학습 과정 중 적어도 하나를 선택적으로 이용할 수 있다.
전술한 바와 같이, 본 개시의 실시예에 따른 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치는 하드웨어 장치가 자체적으로 저장하고 있는 이전 동작 주기에서 이용되었던 엣지 시퀀스 정보에 근거하여 후속 동작 주기에서 이용될 엣지 시퀀스를 빠르고 용이하게 획득할 수 있다. 또한, 이전 동작 주기에서 이용되었던 엣지 시퀀스 정보와 현재 동작 주기에서 획득된 난수 시퀀스에 근거하여, 후속 동작 주기에서 이용될 엣지 시퀀스를 생성함으로써, 심층 신경망을 통한 연산의 수행 속도를 증가시킬 수 있으며, 심층 신경망을 통한 드랍아웃 연산을 수행하는 하드웨어 장치를 용이하게 구현할 수 있다.
또한, 엣지 시퀀스를 획득하기 위한 별도의 소프트웨어 모듈 없이 엣지 시퀀스를 획득할 수 있어서, 심층 신경망을 통한 연산을 수행하는 하드웨어 장치에 있어서, 메모리의 크기를 감소시킬 수 있으며, 그에 따라서 하드웨어 장치 자체를 크기 감소 효과를 가져올 수 있게 된다.
본 개시에 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 개시의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
한편, 상술한 본 개시의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
Claims (20)
- 심층 신경망(Deep Neural Network)의 학습을 처리하는 학습 회로(circuit)와 연결되어 인코딩을 수행하는 인코딩 장치에 있어서,
난수 생성 회로로부터 수신한 제1 데이터를 저장하는 메모리; 및
상기 학습 회로로부터 상기 심층 신경망의 드랍아웃(Dropout) 정보를 수신하고, 상기 드랍아웃 정보 및 상기 제1 데이터를 이용하여 생성한 제2 데이터를 상기 심층 신경망의 뉴런에 할당되도록 상기 학습 회로로 출력하는 인코딩 회로를 포함하는, 인코딩 장치.
- 제 1 항에 있어서,
상기 제1 데이터는 상기 난수 생성 회로의 클럭 신호에 의해 출력된 난수 시퀀스를 포함하고,
상기 제2 데이터는 상기 심층 신경망에 포함되는 소정 계층(layer)에서의 복수개의 엣지들의 연결 또는 연결해제를 나타내는 시퀀스를 포함하는 것을 특징으로 하는, 인코딩 장치.
- 제 2 항에 있어서,
상기 제1 데이터의 크기는 상기 소정 계층에서의 상기 복수개의 엣지들의 개수에 기초하여 결정되는 것을 특징으로 하는, 인코딩 장치.
- 제 2 항에 있어서,
상기 드랍아웃 정보, 상기 제1 데이터 및 상기 제2 데이터 각각은 2진수로 형성된 소정 비트 크기를 가지는 것을 특징으로 하는, 인코딩 장치.
- 제 4 항에 있어서,
상기 인코딩 회로는
상기 제1 데이터에 포함되는 0 및 1값의 비율 값인 제1 비율값 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 비율 값인 제2 비율값에 기초하여, 상기 제2 데이터를 생성하는 것을 특징으로 하는, 인코딩 장치.
- 제 4 항에 있어서,
상기 인코딩 회로는
상기 제1 데이터에 포함되는 0 및 1값의 패턴 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 패턴에 기초하여, 상기 제2 데이터를 생성하는 것을 특징으로 하는, 인코딩 장치.
- 제 3 항에 있어서,
상기 제1 데이터는 상기 소정 계층의 엣지의 개수와 동일한 개수의 난수를 포함하는 것을 특징으로 하는, 인코딩 장치.
- 제 2 항에 있어서
상기 제2 데이터는 상기 소정 계층에서의 드랍아웃(dropout) 연산을 위한 기초가 되는 것을 특징으로 하는, 인코딩 장치.
- 제 2 항에 있어서,
상기 인코딩 회로는 상기 소정 계층의 복수개의 엣지들의 가중치를 획득하여 소정의 임계 가중치와 비교한 결과에 따라 프루닝(pruning)을 수행하고, 프루닝된 상기 소정 계층의 엣지들에 대한 연결 또는 연결해제를 나타내는 상기 제2 데이터를 생성하는 것을 특징으로 하는, 인코딩 장치.
- 제 1 항에 있어서,
상기 장치는 입력되는 복수개의 종류의 신호 중 하나를 선택하여 출력할 수 있는 선택부를 더 포함하고,
상기 인코딩 회로는 상기 심층 신경망으로부터 연산 결과를 수신하여 상기 연산 결과의 오버플로우(overflow) 여부를 결정하고, 상기 오버플로우 여부에 기초하여 상기 심층 신경망에서 이용되는 정보의 표현 가능 범위를 변경하는 동적 고정 소수점(dynamic fixed point) 연산을 수행하는 것을 특징으로 하는, 인코딩 장치.
- 심층 신경망의 학습을 처리하는 학습 회로와 연결되어 인코딩을 수행하는 인코딩 방법에 있어서,
난수 생성 회로로부터 수신한 제1 데이터를 저장하는 단계;
상기 학습 회로로부터 상기 심층 신경망의 드랍아웃 정보를 수신하는 단계;
상기 드랍아웃 정보 및 상기 제1 데이터를 이용하여 제2 데이터를 생성하는 단계; 및
상기 제2 데이터를 상기 심층 신경망의 뉴런에 할당되도록 상기 학습 회로로 출력하는 단계를 포함하는, 인코딩 방법.
- 제 11 항에 있어서,
상기 제1 데이터는 상기 난수 생성 회로의 클럭 신호에 의해 출력된 난수 시퀀스를 포함하고,
상기 제2 데이터는 상기 심층 신경망에 포함되는 소정 계층에서의 복수개의 엣지들의 연결 또는 연결해제를 나타내는 시퀀스를 포함하는, 인코딩 방법.
- 제 12 항에 있어서,
상기 제1 데이터의 크기는 상기 소정 계층에서의 상기 복수개의 엣지들의 개수에 기초하여 결정되는 것을 특징으로 하는, 인코딩 방법.
- 제 12 항에 있어서,
상기 드랍아웃 정보, 상기 제1 데이터 및 상기 제2 데이터 각각은 2진수로 형성된 소정 비트 크기를 가지는 것을 특징으로 하는, 인코딩 방법.
- 제 14 항에 있어서,
상기 제2 데이터를 생성하는 단계는,
상기 제1 데이터에 포함되는 0 및 1값의 비율 값인 제1 비율값 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 비율 값인 제2 비율값에 기초하여, 상기 제2 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는, 인코딩 방법.
- 제 14 항에 있어서
상기 제2 데이터를 생성하는 단계는,
상기 제1 데이터에 포함되는 0 및 1값의 패턴 및 상기 드랍아웃 정보에 포함되는 0 및 1값의 패턴에 기초하여, 상기 제2 데이터를 생성하는 단계를 포함하는, 인코딩 방법.
- 제 13 항에 있어서,
상기 제1 데이터는 상기 소정 계층에서의 복수개의 엣지들의 개수와 동일한 개수의 난수를 포함하는 것을 특징으로 하는, 인코딩 방법.
- 제 12 항에 있어서,
상기 제2 데이터는 상기 소정 계층에서의 드랍아웃(dropout) 연산을 위한 기초가 되는 것을 특징으로 하는, 인코딩 방법.
- 제 12 항에 있어서,
상기 방법은,
상기 상기 소정 계층의 복수개의 엣지들의 가중치를 획득하는 단계;
상기 복수개의 엣지들의 가중치를 소정의 임계 가중치와 비교한 결과에 따라 프루닝(pruning)을 수행하는 단계; 및
상기 프루닝된 상기 소정 계층의 엣지들에 대한 연결 또는 연결해제를 나타내는 상기 제2 데이터를 생성하는 단계를 더 포함하는 것을 특징으로 하는, 인코딩 방법.
- 제 11 항에 있어서,
상기 방법은,
상기 심층 신경망으로부터 연산 결과를 수신하는 단계;
상기 연산 결과의 오버플로우(overflow) 여부를 결정하는 단계; 및
상기 오버플로우 여부에 기초하여 상기 심층 신경망에서 이용되는 값의 표현 가능 범위를 변경하는 동적 고정 소수점(dynamic fixed point) 연산을 수행하는 단계를 더 포함하는 것을 특징으로 하는, 인코딩 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180020005A KR102683757B1 (ko) | 2018-02-20 | 2018-02-20 | 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 |
PCT/KR2019/002051 WO2019164251A1 (en) | 2018-02-20 | 2019-02-20 | Method of performing learning of deep neural network and apparatus thereof |
EP19757993.1A EP3735662A4 (en) | 2018-02-20 | 2019-02-20 | METHOD OF CONDUCTING DEEP NEURONAL NETWORK LEARNING AND DEVICE FOR IT |
CN201980014452.6A CN111742333A (zh) | 2018-02-20 | 2019-02-20 | 执行深度神经网络学习的方法及其装置 |
US16/281,737 US12001954B2 (en) | 2018-02-20 | 2019-02-21 | Method of performing learning of deep neural network and apparatus thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180020005A KR102683757B1 (ko) | 2018-02-20 | 2018-02-20 | 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190099927A true KR20190099927A (ko) | 2019-08-28 |
KR102683757B1 KR102683757B1 (ko) | 2024-07-10 |
Family
ID=67617889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180020005A KR102683757B1 (ko) | 2018-02-20 | 2018-02-20 | 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US12001954B2 (ko) |
EP (1) | EP3735662A4 (ko) |
KR (1) | KR102683757B1 (ko) |
CN (1) | CN111742333A (ko) |
WO (1) | WO2019164251A1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102235784B1 (ko) * | 2019-12-24 | 2021-04-02 | 네이버 주식회사 | 행동 인식을 위한 시공간의 평활화 피처를 정규화하는 방법 및 시스템 |
KR102339896B1 (ko) * | 2021-05-24 | 2021-12-16 | 리벨리온 주식회사 | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 |
KR20220016681A (ko) | 2020-08-03 | 2022-02-10 | 한국과학기술원 | 심층신경망 가중치 기반 난수 생성기를 활용한 심층신경망 학습 장치 및 그 방법 |
WO2024043771A1 (ko) * | 2022-08-24 | 2024-02-29 | 동국대학교 산학협력단 | 사이버 공격에 강인한 인공 신경망 구조 재구성 장치 및 방법 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019168084A1 (ja) * | 2018-03-02 | 2019-09-06 | 日本電気株式会社 | 推論装置、畳み込み演算実行方法及びプログラム |
US11507846B2 (en) * | 2018-03-26 | 2022-11-22 | Nvidia Corporation | Representing a neural network utilizing paths within the network to improve a performance of the neural network |
DE102019106996A1 (de) | 2018-03-26 | 2019-09-26 | Nvidia Corporation | Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks |
WO2020122606A1 (ko) * | 2018-12-11 | 2020-06-18 | 시너지에이아이 주식회사 | 인공신경망을 이용한 장기의 부피 측정 방법 및 그 장치 |
US11176723B2 (en) | 2019-09-30 | 2021-11-16 | Snap Inc. | Automated dance animation |
US11222455B2 (en) | 2019-09-30 | 2022-01-11 | Snap Inc. | Management of pseudorandom animation system |
US11348297B2 (en) | 2019-09-30 | 2022-05-31 | Snap Inc. | State-space system for pseudorandom animation |
US20210125049A1 (en) * | 2019-10-29 | 2021-04-29 | Taiwan Semiconductor Manufacturing Co., Ltd. | System for executing neural network |
KR20210083624A (ko) * | 2019-12-27 | 2021-07-07 | 삼성전자주식회사 | 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치 |
JP7242590B2 (ja) * | 2020-02-05 | 2023-03-20 | 株式会社東芝 | 機械学習モデル圧縮システム、プルーニング方法及びプログラム |
US11861467B2 (en) * | 2020-03-05 | 2024-01-02 | Qualcomm Incorporated | Adaptive quantization for execution of machine learning models |
WO2022072328A1 (en) * | 2020-09-30 | 2022-04-07 | Snap Inc. | Music reactive animation of human characters |
TW202221549A (zh) * | 2020-11-26 | 2022-06-01 | 中強光電股份有限公司 | 優化光譜儀的輸出結果的方法及使用該方法的電子裝置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160307098A1 (en) * | 2015-04-19 | 2016-10-20 | International Business Machines Corporation | Annealed dropout training of neural networks |
US20180046597A1 (en) * | 2016-08-09 | 2018-02-15 | International Business Machines Corporation | True random generator (trng) in ml accelerators for nn dropout and initialization |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10789526B2 (en) * | 2012-03-09 | 2020-09-29 | Nara Logics, Inc. | Method, system, and non-transitory computer-readable medium for constructing and applying synaptic networks |
US9417845B2 (en) * | 2013-10-02 | 2016-08-16 | Qualcomm Incorporated | Method and apparatus for producing programmable probability distribution function of pseudo-random numbers |
US10410118B2 (en) | 2015-03-13 | 2019-09-10 | Deep Genomics Incorporated | System and method for training neural networks |
JP2017097585A (ja) | 2015-11-24 | 2017-06-01 | 株式会社リコー | 学習装置、プログラム及び学習方法 |
CN106127301B (zh) * | 2016-01-16 | 2019-01-11 | 上海大学 | 一种随机神经网络硬件实现装置 |
CA3015492C (en) * | 2016-03-21 | 2021-11-23 | The Procter & Gamble Company | Systems and methods for providing customized product recommendations |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
US10019629B2 (en) * | 2016-05-31 | 2018-07-10 | Microsoft Technology Licensing, Llc | Skeleton-based action detection using recurrent neural network |
KR101881055B1 (ko) | 2016-08-17 | 2018-07-23 | 가천대학교 산학협력단 | 정유압 변속기의 유압시스템 |
US10832135B2 (en) * | 2017-02-10 | 2020-11-10 | Samsung Electronics Co., Ltd. | Automatic thresholds for neural network pruning and retraining |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
GB2568230B (en) * | 2017-10-20 | 2020-06-03 | Graphcore Ltd | Processing in neural networks |
-
2018
- 2018-02-20 KR KR1020180020005A patent/KR102683757B1/ko active IP Right Grant
-
2019
- 2019-02-20 EP EP19757993.1A patent/EP3735662A4/en active Pending
- 2019-02-20 CN CN201980014452.6A patent/CN111742333A/zh active Pending
- 2019-02-20 WO PCT/KR2019/002051 patent/WO2019164251A1/en unknown
- 2019-02-21 US US16/281,737 patent/US12001954B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160307098A1 (en) * | 2015-04-19 | 2016-10-20 | International Business Machines Corporation | Annealed dropout training of neural networks |
US20180046597A1 (en) * | 2016-08-09 | 2018-02-15 | International Business Machines Corporation | True random generator (trng) in ml accelerators for nn dropout and initialization |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102235784B1 (ko) * | 2019-12-24 | 2021-04-02 | 네이버 주식회사 | 행동 인식을 위한 시공간의 평활화 피처를 정규화하는 방법 및 시스템 |
KR20220016681A (ko) | 2020-08-03 | 2022-02-10 | 한국과학기술원 | 심층신경망 가중치 기반 난수 생성기를 활용한 심층신경망 학습 장치 및 그 방법 |
KR102339896B1 (ko) * | 2021-05-24 | 2021-12-16 | 리벨리온 주식회사 | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 |
WO2024043771A1 (ko) * | 2022-08-24 | 2024-02-29 | 동국대학교 산학협력단 | 사이버 공격에 강인한 인공 신경망 구조 재구성 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP3735662A4 (en) | 2021-04-21 |
EP3735662A1 (en) | 2020-11-11 |
US20190258932A1 (en) | 2019-08-22 |
CN111742333A (zh) | 2020-10-02 |
KR102683757B1 (ko) | 2024-07-10 |
WO2019164251A1 (en) | 2019-08-29 |
US12001954B2 (en) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102683757B1 (ko) | 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 | |
JP6605259B2 (ja) | ニューラルネットワーク構造拡張方法、次元縮小方法、及びその方法を用いた装置 | |
US11003736B2 (en) | Reduced dot product computation circuit | |
KR20210057133A (ko) | 이미지 처리 방법 및 장치, 프로세서, 전자 기기 및 저장 매체 | |
US20200327409A1 (en) | Method and device for hierarchical learning of neural network, based on weakly supervised learning | |
CN111612134B (zh) | 神经网络结构搜索方法、装置、电子设备及存储介质 | |
US20200364518A1 (en) | Object prediction method and apparatus, and storage medium | |
EP3791329A1 (en) | Training neural networks using mixed precision computations | |
US11755904B2 (en) | Method and device for controlling data input and output of fully connected network | |
KR20180007657A (ko) | 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치 | |
US20200257983A1 (en) | Information processing apparatus and method | |
US20180293486A1 (en) | Conditional graph execution based on prior simplified graph execution | |
KR102541660B1 (ko) | 음성 신호에 기반한 감정 인식 장치 및 방법 | |
Ku et al. | A study of the Lamarckian evolution of recurrent neural networks | |
CN112633463A (zh) | 用于建模序列数据中长期依赖性的双重递归神经网络架构 | |
KR20200129666A (ko) | 신경망 연산 장치 및 그것의 요소 기반 레이어에 대한 처리 방법 | |
US11797861B2 (en) | System, method, and computer program product for perforated backpropagation in an artificial neural network | |
CN114692745A (zh) | 数据处理方法、装置、集成芯片、电子设备及存储介质 | |
WO2018135515A1 (ja) | 情報処理装置、ニューラルネットワークの設計方法及び記録媒体 | |
US20190311302A1 (en) | Electronic apparatus and control method thereof | |
CN113822386B (zh) | 一种图像识别方法、装置、设备及介质 | |
JP7376812B2 (ja) | データ生成方法、データ生成装置及びプログラム | |
KR20190048597A (ko) | 딥 러닝을 이용한 이종 센서 정보 융합 장치 및 방법 | |
KR20220083782A (ko) | 비디오 처리 방법, 장치, 전자 기기, 저장 매체 및 프로그램 제품 | |
KR20210097382A (ko) | 랭크 오더 코딩 기반 스파이킹 cnn 연산 방법 및 그 처리기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |