KR20210083624A - 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치 - Google Patents

신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치 Download PDF

Info

Publication number
KR20210083624A
KR20210083624A KR1020190176097A KR20190176097A KR20210083624A KR 20210083624 A KR20210083624 A KR 20210083624A KR 1020190176097 A KR1020190176097 A KR 1020190176097A KR 20190176097 A KR20190176097 A KR 20190176097A KR 20210083624 A KR20210083624 A KR 20210083624A
Authority
KR
South Korea
Prior art keywords
bit
neural network
sequence
pointer
data sequence
Prior art date
Application number
KR1020190176097A
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 KR1020190176097A priority Critical patent/KR20210083624A/ko
Priority to US16/900,007 priority patent/US11580393B2/en
Priority to CN202010919746.8A priority patent/CN113052303A/zh
Priority to EP20195045.8A priority patent/EP3843012A1/en
Publication of KR20210083624A publication Critical patent/KR20210083624A/ko
Priority to US18/095,674 priority patent/US11790232B2/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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Abstract

신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치가 개시된다. 일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치는 메모리, 데이터 시퀀스를 수신하고, 데이터 시퀀스를 구성하는 비트열 중에서 연속하는 무효(invalid) 비트를 하나의 비트로 압축한 압축된 데이터 시퀀스 및 압축된 데이터 시퀀스를 구성하는 비트열 중에서 유효(valid) 비트와 무효 비트를 판별하는 유효성 판별 시퀀스를 생성하고, 압축된 데이터 시퀀스 및 유효성 판별 시퀀스를 메모리에 라이트(write)하는 인코딩 회로, 및 압축된 데이터 시퀀스 및 유효성 판별 시퀀스를 메모리로부터 리드(read)하고, 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 유효성 판별 시퀀스에 기초하여 압축된 데이터 시퀀스를 구성하는 비트열 중에서 신경망 회로로 전달할 비트를 결정하는 디코딩 회로를 포함한다.

Description

신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치{METHOD AND APPARATUS FOR CONTROLLING DATA INPUT AND OUTPUT OF NEURAL NETWORK}
아래 실시예들은 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치에 관한 것이다.
인공지능(Artificial Intelligence, AI) 시스템은 인간 수준의 지능을 구현하는 컴퓨터 시스템이며, 기존 Rule 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템이다. 인공지능 시스템은 사용할수록 인식률이 향상되고 사용자 취향을 보다 정확하게 이해할 수 있게 되어, 기존 Rule 기반 스마트 시스템은 점차 딥러닝 기반 인공지능 시스템으로 대체되고 있다.
인공지능 기술은 기계학습(딥러닝) 및 기계학습을 활용한 요소 기술들로 구성된다. 기계학습은 입력 데이터들의 특징을 스스로 분류/학습하는 알고리즘 기술이며, 요소기술은 딥러닝 등의 기계학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성된다.
인공지능 기술이 응용되는 다양한 분야는 다음과 같다. 언어적 이해는 인간의 언어/문자를 인식하고 응용/처리하는 기술로서, 자연어 처리, 기계 번역, 대화시스템, 질의 응답, 음성 인식/합성 등을 포함한다. 시각적 이해는 사물을 인간의 시각처럼 인식하여 처리하는 기술로서, 객체 인식, 객체 추적, 영상 검색, 사람 인식, 장면 이해, 공간 이해, 영상 개선 등을 포함한다. 추론 예측은 정보를 판단하여 논리적으로 추론하고 예측하는 기술로서, 지식/확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다. 지식 표현은 인간의 경험정보를 지식데이터로 자동화 처리하는 기술로서, 지식 구축(데이터 생성/분류), 지식 관리(데이터 활용) 등을 포함한다. 동작 제어는 차량의 자율 주행, 로봇의 움직임을 제어하는 기술로서, 움직임 제어(항법, 충돌, 주행), 조작 제어(행동 제어) 등을 포함한다.
딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치는 메모리; 데이터 시퀀스를 수신하고, 상기 데이터 시퀀스를 구성하는 비트열 중에서 연속하는 무효(invalid) 비트를 하나의 비트로 압축한 압축된 데이터 시퀀스 및 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 유효(valid) 비트와 무효 비트를 판별하는 유효성 판별 시퀀스를 생성하고, 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 상기 메모리에 라이트(write)하는 인코딩 회로; 및 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 상기 메모리로부터 리드(read)하고, 상기 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 상기 유효성 판별 시퀀스에 기초하여 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 상기 신경망 회로로 전달할 비트를 결정하는 디코딩 회로를 포함한다.
상기 압축된 데이터 시퀀스는 상기 연속하는 무효 비트의 개수를 나타내는 비트를 포함할 수 있다.
상기 디코딩 회로는 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 순차적으로 저장하는 버퍼를 포함하고, 상기 디코딩 회로는 상기 신경망 회로로 전달할 상기 압축된 데이터 시퀀스의 현재 비트가 상기 버퍼에 저장된 위치를 표시하는 제1 포인터 및 상기 신경망 회로로 상기 현재 비트 다음 사이클에 전달할 다음 비트가 상기 버퍼에 저장된 위치를 표시하는 제2 포인터를 저장할 수 있다.
상기 디코딩 회로는 상기 유효성 판별 시퀀스에 기초하여, 상기 제1 포인터에 대응하는 상기 현재 비트가 유효한지 여부를 결정하고, 상기 현재 비트가 무효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하지 않고, 상기 현재 비트가 유효한 경우 상기 현재 비트를 상기 신경망 회로로 전달할 수 있다.
상기 디코딩 회로는 상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하고, 상기 다음 비트가 유효한 경우 상기 제1 포인터의 위치를 상기 다음 비트가 상기 버퍼에 저장된 위치로 이동시키고, 상기 다음 비트가 무효한 경우 상기 제1 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시킬 수 있다.
상기 디코딩 회로는 상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하고, 상기 다음 비트가 유효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키고, 상기 다음 비트가 무효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다다음(after next) 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시킬 수 있다.
상기 유효성 판별 시퀀스는 상기 신경망 회로의 연산 처리 단계를 점프(jump)하기 위해 이용될 수 있다.
상기 디코딩 회로는 상기 제2 포인터에 대응하는 상기 다음 비트에 기초하여, 상기 신경망 회로의 연산 처리 단계를 점프할지 결정할 수 있다.
상기 디코딩 회로는 상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하고, 상기 다음 비트가 유효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하지 않고, 상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 점프할 수 있다.
상기 디코딩 회로는 상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 상기 다음 비트의 비트값 만큼 점프할 수 있다.
상기 디코딩 회로는 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스가 상기 버퍼에 저장될 위치를 표시하는 제3 포인터를 저장할 수 있다.
상기 유효 비트는 소정의 임계값보다 큰 비트이고, 상기 무효 비트는 상기 소정의 임계값보다 크지 않은 비트일 수 있다.
상기 압축된 데이터 시퀀스 내의 유효 비트의 위치에 대응하는 상기 유효성 판별 시퀀스 내의 위치의 비트값은 '1'이고, 상기 압축된 데이터 시퀀스 내의 무효 비트의 위치에 대응하는 상기 유효성 판별 시퀀스 내의 위치의 비트값은 '0'일 수 있다.
상기 유효성 판별 시퀀스는 상기 신경망 회로의 연산 수행을 위한 클록 게이팅 신호(clock gating signal)로 이용될 수 있다.
상기 버퍼는 링버퍼(Ring Buffer)를 포함할 수 있다.
인코딩 회로는 상기 데이터 시퀀스를 구성하는 비트열 중에서 동일한 비트값을 갖으면서 연속하는 유효 비트를 하나의 비트로 압축하여 상기 압축된 데이터 시퀀스를 생성할 수 있다.
상기 디코딩 회로는 상기 데이터 시퀀스가 복수의 재사용 데이터를 포함하는 경우, 상기 복수의 재사용 데이터를 구분하기 위한 제4 포인터를 저장할 수 있다.
상기 디코딩 회로는 복수의 압축된 데이터 시퀀스를 병렬로 리드하는 경우, 상기 복수의 압축된 시퀀스의 길이가 모두 동일하도록 비트를 추가할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 데이터 시퀀스를 수신하는 단계; 상기 데이터 시퀀스를 구성하는 비트열 중에서 연속하는 무효(invalid) 비트를 하나의 비트로 압축한 압축된 데이터 시퀀스 및 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 유효(valid) 비트와 무효 비트를 판별하는 유효성 판별 시퀀스를 생성하는 단계; 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 메모리에 라이트(write)하는 단계; 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 상기 메모리로부터 리드(read)하는 단계; 및 상기 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 상기 유효성 판별 시퀀스에 기초하여 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 상기 신경망 회로로 전달할 비트를 결정하는 단계를 포함한다.
상기 압축된 데이터 시퀀스는 상기 연속하는 무효 비트의 개수를 나타내는 비트를 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 순차적으로 저장하는 단계; 및 상기 신경망 회로로 전달할 상기 압축된 데이터 시퀀스의 현재 비트가 버퍼에 저장된 위치를 표시하는 제1 포인터 및 상기 신경망 회로로 상기 현재 비트 다음 사이클에 전달할 다음 비트가 상기 버퍼에 저장된 위치를 표시하는 제2 포인터를 저장하는 단계를 더 포함할 수 있다.
상기 결정하는 단계는 상기 유효성 판별 시퀀스에 기초하여, 상기 제1 포인터에 대응하는 상기 현재 비트가 유효한지 여부를 결정하는 단계; 상기 현재 비트가 무효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하지 않는 단계; 및 상기 현재 비트가 유효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하는 단계를 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하는 단계; 상기 다음 비트가 유효한 경우 상기 제1 포인터의 위치를 상기 다음 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계; 및 상기 다음 비트가 무효한 경우 상기 제1 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계를 더 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하는 단계; 상기 다음 비트가 유효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계; 및 상기 다음 비트가 무효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다다음(after next) 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계를 더 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 제2 포인터에 대응하는 상기 다음 비트에 기초하여, 상기 신경망 회로의 연산 처리 단계를 점프할지 결정하는 단계를 더 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하는 단계; 상기 다음 비트가 유효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하지 않는 단계; 및 상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하는 단계를 더 포함할 수 있다.
상기 점프하는 단계는 상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 상기 다음 비트의 비트값 만큼 점프하는 단계를 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스가 상기 버퍼에 저장될 위치를 표시하는 제3 포인터를 저장하는 단계를 더 포함할 수 있다.
상기 생성하는 단계는 상기 데이터 시퀀스를 구성하는 비트열 중에서 동일한 비트값을 갖으면서 연속하는 유효 비트를 하나의 비트로 압축하여 상기 압축된 데이터 시퀀스를 생성하는 단계를 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 상기 데이터 시퀀스가 복수의 재사용 데이터를 포함하는 경우, 상기 복수의 재사용 데이터를 구분하기 위한 제4 포인터를 저장하는 단계를 더 포함할 수 있다.
일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 복수의 압축된 데이터 시퀀스를 병렬로 리드하는 경우, 상기 복수의 압축된 시퀀스의 길이가 모두 동일하도록 비트를 추가하는 단계를 더 포함할 수 있다.
도 1a는 일 실시예에 따른 뉴럴 네트워크의 학습 방법을 설명하기 위한 도면이다.
도 1b는 일 실시예에 따른 학습 성능 개선을 위해 뉴럴 네트워크 내의 불필요한 연산을 생략하는 방법을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 제어 장치의 블록도이다.
도 3a는 인코딩 회로가 생성하는 시퀀스를 예시적으로 나타낸 도면이다.
도 3b는 인코딩 회로가 생성하는 시퀀스를 예시적으로 나타낸 도면이다.
도 4a 내지 도 4g는 제 1 실시예에 따라 제어 장치의 출력에 기초한 신경망 회로의 연산 수행 과정을 나타낸 도면이다.
도 5는 제2 실시예에 따라 제어 장치의 출력에 기초한 신경망 회로의 연산 수행 과정을 나타낸 도면이다.
도 6은 일 실시예에 따른 제로 게이팅(zero gating)을 수행하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 반복 사용되는 값의 범위를 저장해서 재사용율을 높이는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 시스톨릭 어레이(Systolic array)에서 제로 게이팅을 이용해 전력 소모를 줄이는 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 데이터가 병렬로 저장된 경우에 데이터의 입출력을 제어하는 방법을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 데이터의 입출력을 제어하는 방법의 적용 예를 설명하기 위한 도면이다.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간의에"와 "바로~간의에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 텔레비전, 스마트 가전 기기, 지능형 자동차, 키오스크, 웨어러블 장치 등 다양한 형태의 제품으로 구현될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1a는 일 실시예에 따른 뉴럴 네트워크의 학습 방법을 설명하기 위한 도면이다.
도 1a를 참조하면, 일 실시예에 따른 뉴럴 네트워크(100)는 입력 계층(120), 히든 계층(hidden layer)(140) 및 출력 계층(145)을 포함할 수 있다. 도 1a에서는 입력 데이터에 포함되는 정보를 분류하여 출력하는 완전 연결 네트워크를 예로 들어 도시하였다. 구체적으로, 뉴럴 네트워크(100)는 입력 데이터가 영상 데이터일 때, 영상 데이터에 포함되는 영상 객체의 종류를 분류한 결과 데이터를 출력 데이터로써 출력할 수 있다.
뉴럴 네트워크(100)를 형성하는 복수개의 계층들은 데이터를 수신하는 복수개의 노드(node)(예를 들어, 125)들을 포함할 수 있다. 그리고, 인접한 두 개의 계층들은 도시된 바와 같이 복수개의 엣지(edge)(예를 들어, 130)들로 연결될 수 있다. 각각의 노드들은 대응되는 가중치값을 가지고 있어서, 뉴럴 네트워크(100)는 입력된 신호와 가중치 값을 연산, 예를 들어, 곱하기 연산한 값에 근거하여, 출력 데이터를 획득할 수 있다.
도 1a를 참조하면, 입력 계층(120)은 입력 데이터, 예를 들어, 고양이를 영상 객체로 포함하는 영상 데이터(110)를 입력 받을 수 있다.
또한, 뉴럴 네트워크(100)는 입력 계층(120)과 제 1 히든 계층(HIDDEN LAYER1) 간에 형성되는 제 1 계층(Layer 1)(150), 제 1 히든 계층(HIDDEN LAYER1)과 제 2 히든 계층(HIDDEN LAYER2) 간에 형성되는 제 2 계층(Layer 2)(155), 제 2 히든 계층(HIDDEN LAYER2)과 제 3 히든 계층(HIDDEN LAYER3) 간에 형성되는 제 3 계층(Layer 3)(160), 및 제 3 히든 계층(HIDDEN LAYER3)과 출력 계층(OUTPUT LAYER(145) 간에 형성되는 제 4 계층(Layer 4)(170)으로 형성될 수 있다.
뉴럴 네트워크(100)의 입력 계층(120)에 포함되는 복수개의 노드들은 입력 데이터(110)에 대응되는 신호들을 수신할 수 있다. 히든 계층(140)에 포함되는 복수개의 계층들에서의 연산을 통하여, 출력 계층(145)에서는 영상 데이터(110)에 대응되는 출력 데이터(175)를 출력할 수 있다. 도시된 예시에서, 뉴럴 네트워크(100)는 입력된 영상에 포함되는 영상 객체의 종류를 분류하기 위한 연산을 수행하여 'Cat 확률: 98%'라는 출력 데이터(175)를 출력할 수 있다. 뉴럴 네트워크(100)를 통하여 출력된 출력 데이터(175)의 정확도를 높이기 위해서, 출력 계층(145)에서 입력 계층(120) 방향으로 학습(learning)을 수행하며 출력 데이터의 정확도가 높아지도록 가중치값들을 수정할 수 있다.
이처럼, 뉴럴 네트워크(100)는 학습을 통하여 계층 내의 적어도 하나의 노드의 연결 가중치들을 조절할 수 있다. 이 때, 가중치를 조절하는 과정에서 오버피팅(overfitting) 문제가 발생할 수 있다. 오버피팅은 학습 데이터에 지나치게 집중을 함으로써 새롭게 입력되는 데이터에 대한 출력 정확도가 떨어지는 상황을 의미할 수 있다. 이러한 오버피팅 문제를 해결하기 위해 이용되는 방법으로 드랍아웃(dropout), 프루닝(pruning) 등의 기법을 이용한 연산이 이용되기도 한다. 드랍아웃, 프루닝 등과 같은 연산은 뉴럴 네트워크 내의 불필요한 연산을 생략함으로써 학습 성능을 개선할 수 있는 기법일 수 있다.
도 1b는 일 실시예에 따른 학습 성능 개선을 위해 뉴럴 네트워크 내의 불필요한 연산을 생략하는 방법을 설명하기 위한 도면이다.
도 1b를 참조하면, 일 실시예에 따른 완전 연결 뉴럴 네트워크(180) 및 일부 연결이 생략된 뉴럴 네트워크(190)가 도시된다. 일부 연결이 생략된 뉴럴 네트워크(190)는 완전 연결 뉴럴 네트워크(180)에 비해 적은 수의 노드 및 적은 수의 엣지를 갖을 수 있다. 예를 들어, 일부 연결이 생략된 뉴럴 네트워크(190)는 드랍아웃이 적용된 네트워크일 수 있다.
완전 연결 뉴럴 네트워크(180)의 학습 성능을 개선하기 위해서 이용될 수 있는 방법 중에 하나는 모델 결합(model combination)일 수 있다. 이러한 모델 결합을 위해서는 서로 다른 학습 데이터를 이용해서 학습을 하거나, 모델이 서로 다른 구조를 가져야 한다. 그러나, 네트워크가 깊은 경우에 복수개의 네트워크를 학습시키는 것은 많은 연산량을 필요로 한다는 문제점을 갖을 수 있다. 드랍아웃은 이러한 문제점을 해결하기 위한 것으로, 복수개의 모델을 만드는 대신 학습 사이클이 진행되는 동안 무작위로 일부 뉴런을 생략할 수 있다. 이 경우, 생략된 뉴런의 조합만큼 지수함수적으로 다양한 모델을 학습시키는 것과 같은 효과가 생기게 되므로 모델 결합의 효과를 누릴 수 있다.
도 1b를 참조하면, 일부 연결이 생략된 뉴럴 네트워크(190)는 완전 연결 뉴럴 네트워크(180)에 비해 엣지의 개수가 적을 수 있다. 따라서, 일부 연결이 생략된 뉴럴 네트워크(190)는 노드들 사이의 연결관계를 나타내는 엣지 시퀀스 중에서 '연결해제'를 나타내는 비트값 '0'을 다수 포함할 수 있다.
이하에서는, 뉴럴 네트워크의 연산에서 불필요한 연산들을 생략하는 실질적인 방법에 대해 상세히 설명하기로 한다. 개시된 실시예에 따르면, 뉴럴 네트워크(예를 들어, 완전 연결 네트워크)의 연산 과정에서 사용되는 매트릭스와 벡터의 곱셈을 저전력으로 빠르게 수행할 수 있다.
도 2는 일 실시예에 따른 제어 장치의 블록도이다.
도 2를 참조하면, 일 실시예에 따른 제어 장치(200)는 메모리(210), 인코딩 회로(220) 및 디코딩 회로(230)를 포함한다. 제어 장치(200)는 뉴럴 네트워크의 딥 러닝 연산을 수행하는 신경망 회로(240)와 연결될 수 있다. 제어 장치(200)는 신경망 회로(240)의 연산 과정에서 출력되는 정보를 수신할 수 있으며, 제어 장치(200)에서 생성된 정보를 신경망 회로(240)로 전송할 수도 있다.
신경망 회로(240)는 입력 계층, 히든 계층(hidden layer) 및 출력 계층을 포함하는 뉴럴 네트워크를 통한 연산을 수행할 수 있다. 여기서, 히든 계층은 복수개의 계층들, 예를 들어, 제 1 계층, 제 2 계층, 제 3 계층 등을 포함할 수 있다. 신경망 회로(240)에서 수행되는 뉴럴 네트워크의 연산은 도 1a 내지 1b를 통해 전술한 바와 같을 수 있다.
일 실시예에 따른 제어 장치(200)는 선입선출 방식, 즉, FIFO(first in first out) 방식으로 신경망 회로(240)로부터 데이터를 수신하고 신경망 회로(240)로 데이터를 출력할 수 있다. 신경망 회로(240)는 뉴럴 네트워크 내의 각각의 계층 단위로 정보를 처리할 수 있다. 이 때, 신경망 회로(240)의 정보 처리 과정에서 각 계층 별로 대기 시간이 존재할 수 있다. 예를 들어, 제 1 계층에 대한 연산 이후 소정 대기 시간 동안 제 1 계층에 대한 연산 결과가 재처리 또는 가공될 수 있다. 이와 같은 연산 결과의 재처리 또는 가공 과정은 제어 장치(200)를 통해 수행될 수 있다. 제어 장치(200)는 제 1 계층의 연산 결과를 가공하여 신경망 회로(240)에 전송할 수 있다. 신경망 회로(240)가 제어 장치(200)로부터 수신한 가공된 연산 결과는 제 2 계층의 연산을 위해 이용될 수 있다. 제어 장치(200)는 신경망 회로(240)로부터 데이터를 순차적으로 입력받고 신경망 회로(240)로 가공한 데이터를 순차적으로 출력할 수 있다.
일 실시예에 따른 신경망 회로(240)는 뉴럴 네트워크의 연산을 수행할 수 있다. 예를 들어, 뉴럴 네트워크는 완전 연결 네트워크일 수 있다. 완전 연결 네트워크에서 각각의 계층에 포함되는 노드들은 가중치값을 가지고 있다. 완전 연결 네트워크에서, 현재 계층에 입력된 신호는 가중치 매트릭스와 연산, 예를 들어, 곱하기 연산되어 출력될 수 있다. 여기서, 현재 계층에 입력된 신호는 N x 1(N은 현재 계층을 구성하는 노드의 개수) 크기의 매트릭스 데이터일 수 있다. 또한, 현재 계층에 입력된 신호와 곱하기 연산되는 가중치 매트릭스는 M x N(M은 현재 계층의 다음 계층을 구성하는 노드의 개수, N은 현재 계층을 구성하는 노드의 개수) 크기의 매트릭스 데이터일 수 있다. 현재 계층에서 출력되는 신호는 다음 계층에 입력될 수 있다. 여기서, 일 실시예에 따라 현재 계층에서 출력되는 신호는 제어 장치(200)에 의한 제어를 통해 다음 계층에 입력될 수 있다.
일 실시예에 따른 메모리(210)는 소정의 크기를 가지는 시퀀스(sequence) 또는 비트스트림(bitstream)을 저장할 수 있다.
일 실시예에 따른 시퀀스는 입력 특징 맵(input feature map)에 관한 정보를 포함하는 시퀀스이거나, 필터(filter)의 가중치(weight)에 관한 정보를 포함하는 시퀀스일 수 있다.
예를 들어, 일 실시예에 따른 시퀀스는 뉴럴 네트워크를 구성하는 복수개의 계층을 구성하는 노드들 간의 엣지(edge)의 연결 여부와 관련된 정보일 수 있다. 구체적으로, 데이터 시퀀스는 뉴럴 네트워크에 포함되는 일 계층에서 형성되는 복수개의 엣지들 각각의 연결 또는 연결해제를 나타내는 정보가 될 수 있다. 예를 들어, 도 1a를 참조하면, 시퀀스는 소정 계층, 예를 들어, 제1 계층(150)에 포함되는 복수개의 엣지들(130) 각각의 연결관계를 나타내는 엣지 시퀀스와 관련된 정보일 수 있다.
일 실시예에 따른 시퀀스를 구성하는 비트열 각각의 비트값은 소정 엣지의 연결 강도를 나타낼 수 있다. 예를 들어, 비트값이 클수록 소정 엣지의 연결 강도가 강하다는 것을 의미할 수 있고, 비트값이 작을수록 소정 엣지의 연결 강도가 약하다는 것을 의미할 수 있다. 이하에서는 시퀀스로서 소정 엣지들의 연결 강도를 나타내는 정보를 "데이터 시퀀스"라고 지칭하도록 한다.
일 실시예에 따른 시퀀스는 데이터 시퀀스를 구성하는 비트열 중에서 유효한(valid) 비트와 무효한(invalid) 비트를 구별하는 시퀀스와 관련된 정보일 수 있다. 예를 들면, 시퀀스를 구성하는 비트열에 포함되는 '0' 값은 해당 비트의 어드레스에 대응하는 데이터 시퀀스의 비트가 무효한 비트임을 나타낼 수 있다. 또한, 예를 들면, 시퀀스를 구성하는 비트열에 포함되는 '1' 값은 해당 비트의 어드레스에 대응하는 데이터 시퀀스의 비트가 유효한 비트임을 나타낼 수 있다. 데이터 시퀀스의 비트가 무효한지 또는 유효한지 여부는 소정의 임계값과의 크기를 비교함으로써 결정될 수 있다. 이하에서는 데이터 시퀀스를 구성하는 비트열 중에서 유효한(valid) 비트와 무효한(invalid) 비트를 판별하는 시퀀스를 "유효성 판별 시퀀스"라고 지칭하도록 한다.
일 실시예에 따른 메모리(210)는 전술한 데이터 시퀀스 또는 유효성 판별 시퀀스를 저장할 수 있다. 일 실시예에 따른 데이터 시퀀스는 압축되어 압축된 데이터 시퀀스의 형태로서 메모리(210)에 저장될 수도 있다. 데이터 시퀀스, 압축된 데이터 시퀀스 및 유효성 판별 시퀀스에 대한 자세한 설명은 도 3a를 통해 후술하기로 한다.
일 실시예에 따라 신경망 회로(240)가 소정 계층에 대한 연산을 종료하면, 제어 장치(200)는 신경망 회로(240)로부터 해당 계층에 대한 연산 결과를 수신할 수 있다. 이 때, 해당 계층에 대한 연산 결과는 해당 계층에 대한 데이터 시퀀스를 의미하는 것일 수 있다.
일 실시예에 따른 인코딩 회로(220)는 제어 장치(200)가 수신한 데이터 시퀀스를 가공하여 메모리(210)에 저장할 수 있다. 예를 들어, 가공된 시퀀스는 데이터 시퀀스를 압축한 압축된 시퀀스일 수 있다. 또한, 예를 들어, 가공된 시퀀스는 압축된 데이터 시퀀스를 구성하는 비트열 중에서 유효한 비트와 무효한 비트를 구별하는 유효성 판별 시퀀스일 수도 있다. 일 실시예에 따른 인코딩 회로(220)는 신경망 회로(240)의 연산 주기에 대응하여 가공된 시퀀스를 생성할 수 있다. 일 실시예에 따른 인코딩 회로(220)는 가공된 시퀀스를 메모리(210)에 라이트(write)할 수 있다. 일 실시예에 따라 압축된 시퀀스는 압축되기 이전의 시퀀스에 비해 비트열의 개수가 적으므로, 인코딩 회로(220)는 메모리(210)로의 라이트 횟수를 줄일 수 있다. 따라서, 제어 장치(200)는 라이트 횟수의 감소로 인해 전력 소모를 절감할 수 있다.
일 실시예에 따른 디코딩 회로(230)는 인코딩 회로(220)가 생성한 가공된 시퀀스를 신경망 회로(240)에 전달함으로써 뉴럴 네트워크 내의 엣지의 연결 상태를 결정하도록 할 수 있다. 일 실시예에 따른 디코딩 회로(230)는 메모리(210)로부터 가공된 시퀀스를 리드(read)하여 제어 장치(200)로 하여금 가공된 시퀀스 내의 비트열을 순차적으로 출력하도록 할 수 있다. 일 실시예에 따라 압축된 시퀀스는 압축되기 이전의 시퀀스에 비해 비트열의 개수가 적으므로, 디코딩 회로(230)는 메모리(210)로부터의 리드 횟수를 줄일 수 있다. 따라서, 제어 장치(200)는 리드 횟수의 감소로 인해 전력 소모를 절감할 수 있다.
또한, 디코딩 회로(230)는 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 압축된 데이터 시퀀스를 구성하는 비트열 중에서 신경망 회로로 전달할 비트를 결정할 수 있다. 불연속하는 무효 비트에 대한 연산을 생략할 수 있기 때문에 디코딩 회로(230)는 연산 처리의 속도를 향상시킬 수 있다. 불연속하는 무효 비트에 대한 연산을 생략하는 디코딩 회로(230)의 동작에 대한 자세한 설명은 도 4a 내지 도 5를 통해 후술하기로 한다.
도 3a는 인코딩 회로가 생성하는 시퀀스를 예시적으로 나타낸 도면이다.
도 3a을 참조하면, 데이터 시퀀스(310), 압축된 데이터 시퀀스(320, 340) 및 유효성 판별 시퀀스(330, 350)가 예시된다.
일 실시예에 따른 데이터 시퀀스(310)는 소정 엣지들의 연결 강도를 나타내는 정보일 수 있다. 데이터 시퀀스(310)는 비트열로 구성될 수 있다. 비트열에 포함된 비트의 비트값이 클수록 소정 엣지의 연결 강도가 강하다는 것을 의미할 수 있고, 비트값이 작을수록 소정 엣지의 연결 강도가 약하다는 것을 의미할 수 있다.
일 실시예에 따른 데이터 시퀀스(310)는 유효한 비트와 무효한 비트를 포함할 수 있다. 데이터 시퀀스의 비트가 무효한지 또는 유효한지 여부는 소정의 임계값과의 크기를 비교함으로써 결정될 수 있다. 일 실시예에 따라 데이터 시퀀스의 비트가 임계값 이하일 경우 해당 비트는 무효할 수 있다. 무효하다는 의미는, 해당 비트에 대응하는 엣지가 연결 해제됨을 의미할 수 있다. 소정 임계값 이하의 비트를 무효로 처리하는 것은, 예를 들어, 프루닝이나 드랍아웃 등과 같이 학습 성능 개선 차원에서 불필요한 계산을 생략하기 위함일 수 있다.
일 실시예에 따른 인코딩 회로(220)는 데이터 시퀀스(310)를 구성하는 비트열 중 연속하는 무효 비트를 하나의 비트로 압축한 압축된 데이터 시퀀스(320, 340)를 생성할 수 있다.
예를 들어, 소정의 임계값이 '0'일 경우 데이터 시퀀스(310)를 구성하는 비트열 중에서 '0' 이하의 값을 갖는 비트열이 무효하고, '0' 보다 큰 값을 갖는 비트열만이 유효할 수 있다. 또한, 데이터 시퀀스(310) 중에서는 임계값 '0' 이하의 값을 갖는 비트가 연속으로 존재할 수 있다. 인코딩 회로(220)는 임계값 '0' 이하의 값을 갖는 비트가 연속적으로 존재할 경우, 이를 하나의 비트값으로 표현함으로써 압축된 데이터 시퀀스(320)를 생성할 수 있다. 이 때, 표현되는 비트값은 데이터 시퀀스(310) 중에서 임계값 '0' 이하의 값을 갖는 비트가 연속하는 횟수를 나타낼 수 있다. 예를 들어, 데이터 시퀀스(310) 중에서 "000"과 같이 임계값 '0' 이하의 값을 갖는 비트가 3회 연속하는 경우, 데이터 시퀀스(310)의 "000"은 압축된 데이터 시퀀스(320) 상에서 "3"으로 표현될 수 있다. 이처럼 인코딩 회로(220)는 연속하는 무효 비트를 하나의 비트로 압축함으로써 신경망 회로(240)의 연산 속도를 개선시킬 수 있다.
예를 들어, 소정의 임계값이 '3'일 경우 데이터 시퀀스(310)를 구성하는 비트열 중에서 '3' 이하의 값을 갖는 비트열이 무효하고, '3' 보다 큰 값을 갖는 비트열만이 유효할 수 있다. 또한, 데이터 시퀀스(310) 중에서는 임계값 '3' 이하의 값을 갖는 비트가 연속으로 존재할 수 있다. 인코딩 회로(220)는 임계값 '3' 이하의 값을 갖는 비트가 연속적으로 존재할 경우, 이를 하나의 비트값으로 표현함으로써 압축된 데이터 시퀀스(340)를 생성할 수 있다. 이 때, 표현되는 비트값은 데이터 시퀀스(310) 중에서 임계값 '3' 이하의 값을 갖는 비트가 연속하는 횟수를 나타낼 수 있다. 예를 들어, 데이터 시퀀스(310) 중에서 "00310002"와 같이 임계값 '3' 이하의 값을 갖는 비트가 8회 연속하는 경우, 데이터 시퀀스(310)의 "00310002"는 압축된 데이터 시퀀스(340) 상에서 "8"로 표현될 수 있다. 이처럼 인코딩 회로(220)는 연속하는 무효 비트를 하나의 비트로 압축함으로써 신경망 회로(240)의 연산 속도를 개선시킬 수 있다.
일 실시예에 따른 인코딩 회로(220)는 압축된 데이터 시퀀스(320, 340)를 구성하는 비트열 중 유효 비트와 무효 비트를 나타내는 유효성 판별 시퀀스(330, 350)를 생성할 수 있다.
일 실시예에 따른 유효성 판별 시퀀스(330, 350)는 '0' 과 '1'로 표현되는 이진수 시퀀스(binary sequence)일 수 있다. 예를 들면, 유효성 판별 시퀀스(330, 350)를 구성하는 비트열에 포함되는 '0' 값은 해당 비트의 어드레스에 대응하는 압축된 데이터 시퀀스(320, 340)의 비트가 무효한 비트임을 나타낼 수 있다. 또한, 예를 들면, 유효성 판별 시퀀스(330, 350)를 구성하는 비트열에 포함되는 '1' 값은 해당 비트의 어드레스에 대응하는 압축된 데이터 시퀀스(320, 340)의 비트가 유효한 비트임을 나타낼 수 있다.
일 실시예에 따른 디코딩 회로(230)는 압축된 데이터 시퀀스(320, 340) 및 유효성 판별 시퀀스(330, 350)를 메모리(210)로부터 리드(read)할 수 있다. 디코딩 회로(230)는 신경망 회로(240)가 불연속하는 무효 비트에 대한 연산을 생략하도록, 유효성 판별 시퀀스(330, 350)에 기초하여 압축된 데이터 시퀀스(320, 340)를 구성하는 비트열 중에서 신경망 회로(240)로 전달할 비트를 결정할 수 있다.
도 3b는 인코딩 회로가 생성하는 시퀀스를 예시적으로 나타낸 도면이다.
도 3b을 참조하면, 데이터 시퀀스(360), 압축된 데이터 시퀀스(365, 375, 390) 및 유효성 판별 시퀀스(370, 380, 385, 395)가 예시된다.
일 실시예에 따른 데이터 시퀀스(360), 압축된 데이터 시퀀스(365) 및 유효성 판별 시퀀스(370, 385) 각각은 도 3a를 참조하여 설명한 데이터 시퀀스(310), 압축된 데이터 시퀀스(320, 340) 및 유효성 판별 시퀀스(330, 350)에 대응될 수 있는 바, 중복되는 설명은 생략한다.
일 실시예에 따른 인코딩 회로(220)는 데이터 시퀀스(360)를 구성하는 비트열 중 연속하는 무효 비트를 하나의 비트로 압축하고, 나아가 동일한 비트값을 갖으면서 연속하는 유효 비트를 하나의 비트로 압축 압축하여 압축된 데이터 시퀀스(375, 390)를 생성할 수 있다.
예를 들어, 데이터 시퀀스(360) 중에서는 임계값 '0' 보다 크면서 동일한 비트값을 갖는 비트가 연속으로 존재할 수 있다. 인코딩 회로(220)는 임계값 '0' 보다 크면서 동일한 비트값을 갖는 비트가 연속적으로 존재할 경우, 이를 하나의 비트값으로 표현함으로써 압축된 데이터 시퀀스(375, 390)를 생성할 수 있다. 이 때, 표현되는 비트값은 데이터 시퀀스(360) 연속되는 비트의 비트값으로 나타낼 수 있다. 예를 들어, 데이터 시퀀스(360) 중에서 "7777"과 같이 임계값 '0' 초과의 값을 갖는 비트가 4회 연속하는 경우, 데이터 시퀀스(360)의 "7777"은 압축된 데이터 시퀀스(375, 390) 상에서 "7"로 표현될 수 있다. 또한, 데이터 시퀀스(360) 중에서 "222"과 같이 임계값 '0' 초과의 값을 갖는 비트가 3회 연속하는 경우, 데이터 시퀀스(360)의 "222"는 압축된 데이터 시퀀스(375, 390) 상에서 "2"로 표현될 수 있다. 이처럼 인코딩 회로(220)는 연속하는 무효 비트를 하나의 비트로 압축함으로써 신경망 회로(240)의 연산 속도를 개선시킬 수 있다.
일 실시예에 따른 인코딩 회로(220)는 압축된 데이터 시퀀스(320, 340)를 구성하는 비트열 중 유효 비트와 무효 비트를 나타내는 유효성 판별 시퀀스(370, 385)를 생성할 수 있다. 나아가, 일 실시예에 따른 인코딩 회로(220)는 압축된 데이터 시퀀스(320, 340)를 구성하는 비트열 중 동일한 비트값을 갖으면서 연속하는 유효 비트의 연속하는 횟수를 나타내는 유효성 판별 시퀀스(380)를 생성할 수 있다.
예를 들면, 유효성 판별 시퀀스(385)를 구성하는 비트열에 포함되는 '0' 값은 해당 비트의 어드레스에 대응하는 압축된 엣지 시퀀스(375)의 비트가 무효한 비트임을 나타낼 수 있다. 이때, 해당 비트에 대응하는 유효성 판별 시퀀스(380)의 비트는 '0'일 수 있다.
유효성 판별 시퀀스(385)의 비트값이 '1'인 경우, 유효성 판별 시퀀스(380)를 참조하면 동일한 비트값을 갖으면서 연속하는 유효 비트가 연속하는 횟수를 알 수 있다. 예를 들면, 유효성 판별 시퀀스(380)를 구성하는 비트열에 포함되는 '4' 값은 해당 비트의 어드레스에 대응하는 압축된 데이터 시퀀스(375)의 비트가 4회 연속함을 나타낼 수 있다.
일 실시예에 따른 인코딩 회로(220)는 압축된 데이터 시퀀스(320, 340)를 구성하는 비트열 중 유효 비트와 무효 비트를 나타내고, 동시에 동일한 비트값을 갖으면서 연속하는 유효 비트의 연속하는 횟수를 나타내는 유효성 판별 시퀀스(395)를 생성할 수 있다.
예를 들면, 유효성 판별 시퀀스(395)를 구성하는 비트열에 포함되는 '0' 값은 해당 비트의 어드레스에 대응하는 압축된 엣지 시퀀스(375)의 비트가 무효한 비트임을 나타낼 수 있다. 이때, 해당 비트에 대응하는 유효성 판별 시퀀스(380)의 비트는 '0'일 수 있다. 또한, 유효성 판별 시퀀스(395)를 구성하는 비트열에 포함되는 '0'이 아닌 값은 해당 비트의 어드레스에 대응하는 압축된 엣지 시퀀스(375)의 비트가 유효한 비트이고, 해당 비트의 어드레스에 대응하는 압축된 엣지 시퀀스(375)의 비트가 해당 비트값만큼 연속됨을 나타낼 수 있다.
예를 들면, 유효성 판별 시퀀스(385)를 구성하는 비트열에 포함되는 '4' 값은 해당 비트의 어드레스에 대응하는 압축된 데이터 시퀀스(390)의 비트가 유효하고, 4회 연속함을 나타낼 수 있다. 또한, 유효성 판별 시퀀스(385)를 구성하는 비트열에 포함되는 '0' 값은 해당 비트의 어드레스에 대응하는 압축된 데이터 시퀀스(390)의 비트가 무효함을 나타낼 수 있다.
도 4a 내지 4g는 제 1 실시예에 따라 제어 장치의 출력에 기초한 신경망 회로의 연산 수행 과정을 나타낸 도면이다.
도 4a 내지 4g를 참조하면, 제 1 실시예에 따른 제어 장치(420)는 신경망 회로(440)로 뉴럴 네트워크(예를 들어, 완전 연결 네트워크)의 연산을 위한 데이터를 출력할 수 있다. 예를 들어, 제어 장치(420)로부터 출력되는 데이터는 뉴럴 네트워크의 현재 계층에 대한 입력 데이터일 수 있다. 제어 장치(420)로부터 출력되는 현재 계층에 대한 입력 데이터는 현재 계층의 가중치 시퀀스(430)와 연산될 수 있다. 다만, 도 4a 내지 4g에서는 제어 장치(420)는 현재 계층에 대한 입력 데이터를 출력하는 것을 기준으로 설명하였으나, 실시예에 따라서 제어 장치(420)로부터 출력되는 현재 계층의 가중치 시퀀스(430)와 현재 계층에 대한 입력 데이터가 연산될 수도 있다.
신경망 회로(440)는 처리 소자를 이용하여 매트릭스들 사이의 곱하기 연산을 수행할 수 있다. 신경망 회로(440)는 현재 계층의 출력으로서, 제어 장치(420)로부터 출력되는 데이터와 가중치 시퀀스(430)와 연산한 결과를 출력할 수 있다.
디코딩 회로(423)는 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 순차적으로 저장하는 버퍼를 포함할 수 있다. 일 실시예에 따른 버퍼는 링 버퍼(Ring Buffer)일 수 있다.
디코딩 회로(423)는 신경망 회로로 전달할 압축된 데이터 시퀀스의 현재 비트가 버퍼에 저장된 위치를 표시하는 제1 포인터(예를 들어, 도 4a 내지 4g의 'c'), 신경망 회로로 현재 비트 다음 사이클에 전달할 다음 비트가 버퍼에 저장된 위치를 표시하는 제2 포인터(예를 들어, 도 4a 내지 4g의 'n') 및 압축된 데이터 시퀀스 및 유효성 판별 시퀀스가 버퍼에 저장될 위치를 표시하는 제3 포인터(예를 들어, 도 4a 내지 4g의 'w')를 저장할 수 있다. 여기서, 제1 포인터는 현재 포인터(Current Pointer)로, 제2 포인터는 다음 포인트(next pointer)로, 제3 포인터는 라이트 포인터(write pointer)로 지칭될 수 있다.
디코딩 회로(423)는 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 유효성 판별 시퀀스에 기초하여 압축된 데이터 시퀀스를 구성하는 비트열 중에서 신경망 회로(440)로 전달할 비트를 결정할 수 있다.
일 실시예에 따라, 디코딩 회로(423)는 선입선출(first in first out; FIFO) 방식으로 압축된 데이터 시퀀스와 유효성 판별 시퀀스를 메모리로부터 리드하여 순차적으로 버퍼에 저장할 수 있다. 구체적으로, 디코딩 회로(423)는 리드 포인터(예를 들어, 도 4a 내지 4g의 'r')가 지시하는 압축된 데이터 시퀀스와 유효성 판별 시퀀스의 비트를 메모리로부터 리드하여 버퍼의 제3 포인터에 대응하는 위치에 라이트할 수 있다. 디코딩 회로(423)는 리드 포인터 및 제3 포인터를 한 칸씩 이동시킬 수 있다.
디코딩 회로(423)는 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'인 경우, 제1 포인터 및 제2 포인터를 한 칸씩 이동시킬 수 있고, 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '0'인 경우, 제1 포인터 및 제2 포인터를 두 칸씩 이동시킬 수 있다.
디코딩 회로(423)는 제1 포인터에 대응하는 압축된 데이터 시퀀스 및 유효성 판별 시퀀스의 비트값을 출력 대기 비트로 결정할 수 있다.
도 4a를 참조하면, 제어 장치(420)가 신경망 회로(440)로 출력하는 대상으로서 압축된 데이터 시퀀스 "192313242781" 과 유효성 판별 시퀀스 "010110110111"이 예시되어 있다. 압축된 데이터 시퀀스 "192313242781"와 유효성 판별 시퀀스 "010110110111"는 인코딩 회로(421)에 의해 생성되어 메모리에 라이트된 것일 수 있다.
디코딩 회로(423)는 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값에 '1'을 더한 값을 멀티플렉서의 데이터로 입력할 수 있고, 2 포인터에 대응하는 유효성 판별 시퀀스의 비트값을 멀티플렉서의 제어 신호로 입력할 수 있다.
도 4b를 참조하면, 디코딩 회로(423)는 도4a에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, 제1 포인터 및 제2 포인터를 한 칸씩 이동시킬 수 있다.
도 4b에서 현재 어드레스 카운터는 가중치 시퀀스(430)의 첫번째 비트에 대응하는 어드레스를 지시할 수 있고, 디코딩 회로(423)는 도4a에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, 멀티플렉서의 출력인 '1'을 어드레스 카운터에 전달할 수 있다. 어드레스 카운터에 전달되는 값은 현재 연산을 수행하는 비트 어드레스로부터 다음 연산을 수행할 비트 어드레스까지의 차이를 의미할 수 있다. 즉, 어드레스 카운터에 '1'의 값이 전달되면 다음 연산에서 1칸 뒤의 비트가 연산에 참여하게 된다.
이와 동시에 디코딩 회로(423)에서는 출력 대기하는 유효성 판별 시퀀스의 비트값이 '1'임을 식별할 수 있다.
디코딩 회로(423)는 도 4a에서 출력 대기 비트로 결정된 유효성 판별 시퀀스가 '1'인 경우, 대응하는 압축된 데이터 시퀀스를 신경망 회로(440)로 전달할 수 있고, 출력 대기 비트로 결정된 유효성 판별 시퀀스가 '0'인 경우, 대응하는 압축된 데이터 시퀀스를 신경망 회로(440)로 전달하지 않을 수 있다.
도 4c를 참조하면, 디코딩 회로(423)는 도4b에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, 제1 포인터 및 제2 포인터를 한 칸씩 이동시킬 수 있다.
도 4c에서 현재 어드레스 카운터는 가중치 시퀀스(430)의 두번째 비트에 대응하는 어드레스를 지시할 수 있고, 디코딩 회로(423)는 도 4b에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, '1'을 어드레스 카운터에 전달할 수 있다.
디코딩 회로(423)에서는 출력 대기하는 유효성 판별 시퀀스의 비트값이 '8'임을 식별할 수 있고, 도 4b에서 출력 대기 비트의 압축된 데이터 시퀀스의 비트값인 '1'과, 도 4b의 어드레스 카운터가 지시하고 있는 가중치 시퀀스(430)의 첫번째 비트 '1'이 연산에 참여하게 된다.
따라서, 디코딩 회로(423)로부터 출력되는 압축된 데이터 시퀀스의 비트값 '1'과 가중치 시퀀스(430)로부터 출력되는 비트값 '1'이 신경망 회로(440)에 입력될 수 있다. 신경망 회로(440)는 압축된 데이터 시퀀스의 비트값 '1'과 가중치 시퀀스(430)의 비트값 '1'을 곱하기 연산하여 '1'의 값을 저장할 수 있다.
도 4d를 참조하면, 디코딩 회로(423)는 도4c에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '0'이었기 때문에, 제1 포인터 및 제2 포인터를 두 칸씩 이동시킬 수 있다.
도 4d에서 현재 어드레스 카운터는 가중치 시퀀스(430)의 세번째 비트에 대응하는 어드레스를 지시할 수 있고, 디코딩 회로(423)는 도 4c에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '0'이었기 때문에, 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값에 '1'을 더한 값인 '3'을 어드레스 카운터에 전달할 수 있다.
디코딩 회로(423)에서는 출력 대기하는 유효성 판별 시퀀스의 비트값이 '7'임을 식별할 수 있고, 도 4c에서 출력 대기 비트의 압축된 데이터 시퀀스의 비트값인 '8'과, 도 4c의 어드레스 카운터가 지시하고 있는 가중치 시퀀스(430)의 두번째 비트 '3'이 연산에 참여하게 된다.
따라서, 디코딩 회로(423)로부터 출력되는 압축된 데이터 시퀀스의 비트값 '8'과 가중치 시퀀스(430)로부터 출력되는 비트값 '3'이 신경망 회로(440)에 입력될 수 있다. 신경망 회로(440)는 압축된 데이터 시퀀스의 비트값 '8'과 가중치 시퀀스(430)의 비트값 '3'을 곱하기 얻은 '24'를 기저장된 중간 결과값 '1'과 더하여 '25'의 값을 저장할 수 있다.
도 4e를 참조하면, 디코딩 회로(423)는 도 4d에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, 제1 포인터 및 제2 포인터를 한 칸씩 이동시킬 수 있다.
도 4e에서 현재 어드레스 카운터는 가중치 시퀀스(430)의 여섯 번째 비트에 대응하는 어드레스를 지시할 수 있고, 디코딩 회로(423)는 도 4d에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, '1'을 어드레스 카운터에 전달할 수 있다.
디코딩 회로(423)에서는 출력 대기하는 유효성 판별 시퀀스의 비트값이 '4'임을 식별할 수 있고, 도 4d에서 출력 대기 비트의 압축된 데이터 시퀀스의 비트값인 '7'과, 도 4d의 어드레스 카운터가 지시하고 있는 가중치 시퀀스(430)의 세번째 비트 '5'가 연산에 참여하게 된다.
따라서, 디코딩 회로(423)로부터 출력되는 압축된 데이터 시퀀스의 비트값 '7과 가중치 시퀀스(430)로부터 출력되는 비트값 '5'가 신경망 회로(440)에 입력될 수 있다. 신경망 회로(440)는 압축된 데이터 시퀀스의 비트값 '7'과 가중치 시퀀스(430)의 비트값 '5'을 곱하기 얻은 '35'를 기저장된 중간 결과값 '25'와 더하여 '60'의 값을 저장할 수 있다.
도 4f를 참조하면, 디코딩 회로(423)는 도 4e에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '0'이었기 때문에, 제1 포인터 및 제2 포인터를 두 칸씩 이동시킬 수 있다.
도 4f에서 현재 어드레스 카운터는 가중치 시퀀스(430)의 일곱 번째 비트에 대응하는 어드레스를 지시할 수 있고, 디코딩 회로(423)는 도 4e에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '0'이었기 때문에, 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값에 '1'을 더한 값인 '4'을 어드레스 카운터에 전달할 수 있다.
디코딩 회로(423)에서는 출력 대기하는 유효성 판별 시퀀스의 비트값이 '2'임을 식별할 수 있고, 도 4e에서 출력 대기 비트의 압축된 데이터 시퀀스의 비트값인 '4'와, 도 4e의 어드레스 카운터가 지시하고 있는 가중치 시퀀스(430)의 여섯 번째 비트 '0'이 연산에 참여하게 된다.
그러나, 연산에 참여하는 가중치 시퀀스(430)의 비트가 '0'으로 무효한 것으로 판별되어 신경망 회로(440)에 전달되지 않을 수 있다. 이에 따라 신경망 회로(440)는 압축된 데이터 시퀀스와의 곱하기 연산을 수행하지 않을 수 있다. 따라서, 신경망 회로(440)에 저장된 가중치 시퀀스(430)의 데이터 시퀀스가 가리키는 비트값은 '5'의 값으로 유지되고, 가중치 시퀀스(430)의 유효성 판별 시퀀스가 가리키는 비트값은 '0'으로 설정될 수 있다. 또한, 신경망 회로(440)는 기저장된 중간 결과값 '60'의 값을 여전히 유지할 수 있다.
도 4g를 참조하면, 디코딩 회로(423)는 도 4f에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, 제1 포인터 및 제2 포인터를 한 칸씩 이동시킬 수 있다.
도 4g에서 현재 어드레스 카운터는 가중치 시퀀스(430)의 열함 번째 비트에 대응하는 어드레스를 지시할 수 있고, 디코딩 회로(423)는 도 4f에서 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '1'이었기 때문에, '1'을 어드레스 카운터에 전달할 수 있다.
디코딩 회로(423)에서는 출력 대기하는 유효성 판별 시퀀스의 비트값이 '1'임을 식별할 수 있고, 도 4f에서 출력 대기 비트의 압축된 데이터 시퀀스의 비트값인 '2'와, 도 4f의 어드레스 카운터가 지시하고 있는 가중치 시퀀스(430)의 일곱 번째 비트 '4'가 연산에 참여하게 된다.
따라서, 디코딩 회로(423)로부터 출력되는 압축된 데이터 시퀀스의 비트값 '2'와 가중치 시퀀스(430)로부터 출력되는 비트값 '4'가 신경망 회로(440)에 입력될 수 있다. 신경망 회로(440)는 압축된 데이터 시퀀스의 비트값 '2'과 가중치 시퀀스(430)의 비트값 '4'을 곱하기 얻은 '8'를 기저장된 중간 결과값 '60'과 더하여 '68'의 값을 저장할 수 있다.
도 4a 내지 4g를 참조하여 설명한 제 1 실시예에 따르면, 신경망 회로(440)에 무효한 비트가 출력되지 않기 때문에 연속하는 무효 비트 뿐만 아니라 불연속하는 무효 비트에 대한 연산을 생략할 수 있다.
도 5는 제2 실시예에 따라 제어 장치의 출력에 기초한 신경망 회로의 연산 수행 과정을 나타낸 도면이다.
도 5를 참조하면, 제2 실시예에 따른 제어 장치의 디코더(510)는 신경망 회로(520)로 뉴럴 네트워크(예를 들어, 완전 연결 네트워크)의 학습을 위한 데이터를 출력할 수 있다. 제어 장치의 디코더(510)로부터 출력되는 데이터는 뉴럴 네트워크의 현재 계층에 대한 입력 데이터일 수 있다. 제어 장치의 디코더(510)로부터 출력되는 현재 계층에 대한 입력 데이터는 현재 계층의 가중치 데이터(530, 540, 550, 560)와 연산될 수 있다. 이러한 연산은 가중치 매트릭스(예를 들어, 4 x 16 크기)와 입력 매트릭스(예를 들어, 16 x 1 크기)의 곱하기 연산일 수 있다. 학습 회로(520)는 복수개의 처리 소자를 이용하여 매트릭스들 사이의 곱하기 연산을 수행할 수 있다. 처리 소자들 간의 데이터 진행 순서는 왼쪽에서 오른쪽으로 순차적으로 진행될 수 있다.
제2 실시예에 따라 제어 장치의 출력에 기초한 신경망 회로의 연산 수행 과정은 가중치 데이터의 수 만큼 제1 실시예에 따라 제어 장치의 출력에 기초한 신경망 회로의 연산 수행 과정을 반복하여 수행될 수 있는 바, 중복되는 설명은 생략한다.
도 6은 일 실시예에 따른 제로 게이팅(zero gating)을 수행하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 일 실시예에 따른 유효성 판별 시퀀스는 상기 신경망 회로의 연산 수행을 위한 클록 게이팅 신호(clock gating signal)로 이용될 수 있다. 제어 장치의 디코딩 회로는 제1 포인터에 대응하는 현재 비트가 유효한지 여부를 결정하고, 현재 비트가 무효(예를 들어, 해당 비트의 유효성 판별 시퀀스의 비트값이 '0')한 경우 현재 비트를 신경망 회로로 전달하지 않을 수 있다. 디코딩 회로는 신경망 회로(440)에 입력되는 데이터가 유효한 경우에만 연산 동작을 개시함으로써 신경망 회로의 전력 소모를 절감할 수 있다.
도 4a 내지 도 4g에서 전술한 바와 같이, 디코딩 회로는 제2 포인터에 대응하는 유효성 판별 시퀀스의 비트값이 '0'인 경우, 제1 포인터 및 제2 포인터를 두 칸씩 이동시키기 때문에 일반적인 경우 제1 포인터에 대응하는 현재 비트는 유효한 값을 갖을 수 있다.
그러나, 제1 포인터 및 제2 포인터가 제3 포인터를 앞지르지 못하기 때문에 특정 상황에서 제1 포인터에 대응하는 현재 비트가 무효한 값을 갖을 수 있다.
예를 들어, 도면(610)에서 제2 포인터에 대응하는 압축된 데이터 시퀀스의 비트값이 무효하기 때문에, 제1 포인터 및 제2 포인터는 두 칸 이동해야 하나, 도면(620)에서 제1 포인터 및 제2 포인터가 제3 포인터를 앞지르지 못하기 때문에 제1 포인터 및 제2 포인터는 한 칸만 이동할 수 밖에 없다.
이에, 도면(620)에서 제1 포인터에 대응하는 현재 비트는 무효한 값을 갖게 될 수 있다. 도면(630)에서 클록 게이팅 신호 '1'에 의해 제1 포인터에 대응하는 현재 비트는 무효한 값으로 판단되어 디코딩 회로는 현재 비트를 신경망 회로로 전달하지 않고 종전의 데이터 시퀀스가 가리키는 비트값은 '9'의 값으로 유지될 수 있다.
도 7은 일 실시예에 따른 반복 사용되는 값의 범위를 저장해서 재사용율을 높이는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 일 실시예에 따른 디코딩 회로는 데이터 시퀀스가 복수의 재사용 데이터를 포함하는 경우, 복수의 재사용 데이터를 구분하기 위한 제4 포인터를 저장할 수 있다. 여기서, 제4 포인터는 반복 포인터(Iteration Pointer)로 지칭될 수 있다.
일 실시예에 따른 디코딩 회로는 재사용되는 데이터 시퀀스를 버퍼에 삽입할 때, 반복 구간을 표현하는 제4포인터를 여러 개 두어, 반복을 용이하게 만들 수 있다. 디코딩 회로는 무효한 데이터가 반복 범위를 넘어가면 두 개로 분리하여 각각 버퍼에 저장할 수 있다.
디코딩 회로는 반복되는 범위를 표시하는 제4 포인터를 저장해놓고 그 범위의 데이터가 최대한 재사용 될 때까지 재사용한 후, 다음 반복 구간의 데이터를 반복해서 디코딩할 수 있다.
도 8은 일 실시예에 따른 시스톨릭 어레이(Systolic array)에서 제로 게이팅을 이용해 전력 소모를 줄이는 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 일 실시예에 따른 제어 장치의 인코딩 회로는 재사용되는 범위에 따라 현재 계층에 대한 입력 데이터와 현재 계층의 가중치 데이터를 각각 나눠서 압축할 수 있다.
도 9는 일 실시예에 따른 데이터가 병렬로 저장된 경우에 데이터의 입출력을 제어하는 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 데이터 비트 폭(bit width)이 큰 메모리의 경우 데이터가 병렬로 저장될 수 있다. 병렬로 저장되는 데이터는 동일한 어드레스에서 연속된 ‘0’의 개수가 각기 다를 확률이 높기 때문에, 일 실시예에 따른 디코딩 회로는 더미(dummy) 값을 삽입하여 가장 긴 범위를 갖는 시퀀스에 맞출 수 있다.
이를 통해, 신경망 회로가 병렬로 저장된 데이터들에 대하여 공통적으로 불연속하는 무효 비트에 대한 연산을 생략할 수 있다.
도 10은 일 실시예에 따른 데이터의 입출력을 제어하는 방법의 적용 예를 설명하기 위한 도면이다.
일 실시예에 따른 데이터의 입출력을 제어하는 방법은 연속적인 데이터를 순차적으로 읽는 방식에는 모두 적용 가능할 수 있다.
도 10을 참조하면, 일 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 시스톨릭 어레이(1010)에도 적용될 수 있다.
또한, 실시예에 따른 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법은 애더 트리 아키텍처(Adder tree architecture)(1020)에도 적용될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (32)

  1. 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치에 있어서,
    메모리;
    데이터 시퀀스를 수신하고, 상기 데이터 시퀀스를 구성하는 비트열 중에서 연속하는 무효(invalid) 비트를 하나의 비트로 압축한 압축된 데이터 시퀀스 및 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 유효(valid) 비트와 무효 비트를 판별하는 유효성 판별 시퀀스를 생성하고, 상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 상기 메모리에 라이트(write)하는 인코딩 회로; 및
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 상기 메모리로부터 리드(read)하고, 상기 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 상기 유효성 판별 시퀀스에 기초하여 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 상기 신경망 회로로 전달할 비트를 결정하는 디코딩 회로
    를 포함하는, 제어 장치.
  2. 제1항에 있어서,
    상기 압축된 데이터 시퀀스는 상기 연속하는 무효 비트의 개수를 나타내는 비트를 포함하는, 제어 장치.
  3. 제1항에 있어서,
    상기 디코딩 회로는
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 순차적으로 저장하는 버퍼
    를 포함하고,
    상기 디코딩 회로는
    상기 신경망 회로로 전달할 상기 압축된 데이터 시퀀스의 현재 비트가 상기 버퍼에 저장된 위치를 표시하는 제1 포인터 및 상기 신경망 회로로 상기 현재 비트 다음 사이클에 전달할 다음 비트가 상기 버퍼에 저장된 위치를 표시하는 제2 포인터를 저장하는, 제어 장치.
  4. 제3항에 있어서,
    상기 디코딩 회로는
    상기 유효성 판별 시퀀스에 기초하여, 상기 제1 포인터에 대응하는 상기 현재 비트가 유효한지 여부를 결정하고, 상기 현재 비트가 무효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하지 않고, 상기 현재 비트가 유효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하는, 제어 장치.
  5. 제3항에 있어서,
    상기 디코딩 회로는
    상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하고, 상기 다음 비트가 유효한 경우 상기 제1 포인터의 위치를 상기 다음 비트가 상기 버퍼에 저장된 위치로 이동시키고, 상기 다음 비트가 무효한 경우 상기 제1 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는, 제어 장치.
  6. 제3항에 있어서,
    상기 디코딩 회로는
    상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하고, 상기 다음 비트가 유효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키고, 상기 다음 비트가 무효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다다음(after next) 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는, 제어 장치.
  7. 제 1 항에 있어서,
    상기 유효성 판별 시퀀스는
    상기 신경망 회로의 연산 처리 단계를 점프(jump)하기 위해 이용되는, 제어 장치.
  8. 제3항에 있어서,
    상기 디코딩 회로는
    상기 제2 포인터에 대응하는 상기 다음 비트에 기초하여, 상기 신경망 회로의 연산 처리 단계를 점프할지 결정하는, 제어 장치.
  9. 제3항에 있어서,
    상기 디코딩 회로는
    상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하고, 상기 다음 비트가 유효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하지 않고, 상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하는, 제어 장치
  10. 제9항에 있어서,
    상기 디코딩 회로는
    상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 상기 다음 비트의 비트값 만큼 점프하는, 제어 장치.
  11. 제3항에 있어서,
    상기 디코딩 회로는
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스가 상기 버퍼에 저장될 위치를 표시하는 제3 포인터를 저장하는, 제어 장치.
  12. 제1항에 있어서,
    상기 유효 비트는 소정의 임계값보다 큰 비트이고, 상기 무효 비트는 상기 소정의 임계값보다 크지 않은 비트인, 제어 장치.
  13. 제1항에 있어서,
    상기 압축된 데이터 시퀀스 내의 유효 비트의 위치에 대응하는 상기 유효성 판별 시퀀스 내의 위치의 비트값은 '1'이고, 상기 압축된 데이터 시퀀스 내의 무효 비트의 위치에 대응하는 상기 유효성 판별 시퀀스 내의 위치의 비트값은 '0'인, 제어 장치.
  14. 제1항에 있어서,
    상기 유효성 판별 시퀀스는 상기 신경망 회로의 연산 수행을 위한 클록 게이팅 신호(clock gating signal)로 이용되는, 제어 장치.
  15. 제3항에 있어서,
    상기 버퍼는
    링버퍼(Ring Buffer)
    를 포함하는, 제어 장치.
  16. 제1항에 있어서,
    인코딩 회로는
    상기 데이터 시퀀스를 구성하는 비트열 중에서 동일한 비트값을 갖으면서 연속하는 유효 비트를 하나의 비트로 압축하여 상기 압축된 데이터 시퀀스를 생성하는, 제어 장치.
  17. 제1항에 있어서,
    상기 디코딩 회로는
    상기 데이터 시퀀스가 복수의 재사용 데이터를 포함하는 경우, 상기 복수의 재사용 데이터를 구분하기 위한 제4 포인터를 저장하는, 제어 장치.
  18. 제1항에 있어서,
    상기 디코딩 회로는
    복수의 압축된 데이터 시퀀스를 병렬로 리드하는 경우, 상기 복수의 압축된 시퀀스의 길이가 모두 동일하도록 비트를 추가하는, 제어 장치.
  19. 딥 러닝 연산을 수행하는 신경망 회로와 연결되어 데이터의 입출력을 제어하는 제어 장치의 제어 방법에 있어서,
    데이터 시퀀스를 수신하는 단계;
    상기 데이터 시퀀스를 구성하는 비트열 중에서 연속하는 무효(invalid) 비트를 하나의 비트로 압축한 압축된 데이터 시퀀스 및 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 유효(valid) 비트와 무효 비트를 판별하는 유효성 판별 시퀀스를 생성하는 단계;
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 메모리에 라이트(write)하는 단계;
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 상기 메모리로부터 리드(read)하는 단계; 및
    상기 신경망 회로가 불연속하는 무효 비트에 대한 연산을 생략하도록, 상기 유효성 판별 시퀀스에 기초하여 상기 압축된 데이터 시퀀스를 구성하는 비트열 중에서 상기 신경망 회로로 전달할 비트를 결정하는 단계
    를 포함하는, 제어 방법.
  20. 제19항에 있어서,
    상기 압축된 데이터 시퀀스는 상기 연속하는 무효 비트의 개수를 나타내는 비트를 포함하는, 제어 방법.
  21. 제19항에 있어서,
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스를 순차적으로 저장하는 단계; 및
    상기 신경망 회로로 전달할 상기 압축된 데이터 시퀀스의 현재 비트가 버퍼에 저장된 위치를 표시하는 제1 포인터 및 상기 신경망 회로로 상기 현재 비트 다음 사이클에 전달할 다음 비트가 상기 버퍼에 저장된 위치를 표시하는 제2 포인터를 저장하는 단계
    를 더 포함하는, 제어 방법.
  22. 제21항에 있어서,
    상기 결정하는 단계는
    상기 유효성 판별 시퀀스에 기초하여, 상기 제1 포인터에 대응하는 상기 현재 비트가 유효한지 여부를 결정하는 단계;
    상기 현재 비트가 무효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하지 않는 단계; 및
    상기 현재 비트가 유효한 경우 상기 현재 비트를 상기 신경망 회로로 전달하는 단계
    를 포함하는, 제어 방법.
  23. 제21항에 있어서,
    상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하는 단계;
    상기 다음 비트가 유효한 경우 상기 제1 포인터의 위치를 상기 다음 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계; 및
    상기 다음 비트가 무효한 경우 상기 제1 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계
    를 더 포함하는, 제어 방법.
  24. 제21항에 있어서,
    상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하는 단계;
    상기 다음 비트가 유효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다음 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계; 및
    상기 다음 비트가 무효한 경우 상기 제2 포인터의 위치를 상기 신경망 회로로 상기 다음 비트 다다음(after next) 사이클에 전달할 비트가 상기 버퍼에 저장된 위치로 이동시키는 단계
    를 더 포함하는, 제어 방법.
  25. 제21항에 있어서,
    상기 제2 포인터에 대응하는 상기 다음 비트에 기초하여, 상기 신경망 회로의 연산 처리 단계를 점프할지 결정하는 단계
    를 더 포함하는, 제어 방법.
  26. 제21항에 있어서,
    상기 유효성 판별 시퀀스에 기초하여, 상기 제2 포인터에 대응하는 상기 다음 비트가 유효한지 여부를 결정하는 단계;
    상기 다음 비트가 유효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하지 않는 단계; 및
    상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 점프하는 단계
    를 더 포함하는, 제어 방법.
  27. 제26항에 있어서,
    상기 점프하는 단계는
    상기 다음 비트가 무효한 경우 상기 신경망 회로의 연산 처리 단계를 상기 다음 비트의 비트값 만큼 점프하는 단계
    를 포함하는, 제어 방법.
  28. 제21항에 있어서,
    상기 압축된 데이터 시퀀스 및 상기 유효성 판별 시퀀스가 상기 버퍼에 저장될 위치를 표시하는 제3 포인터를 저장하는 단계
    를 더 포함하는, 제어 방법.
  29. 제19항에 있어서,
    상기 생성하는 단계는
    상기 데이터 시퀀스를 구성하는 비트열 중에서 동일한 비트값을 갖으면서 연속하는 유효 비트를 하나의 비트로 압축하여 상기 압축된 데이터 시퀀스를 생성하는 단계
    를 포함하는, 제어 방법.
  30. 제19항에 있어서,
    상기 데이터 시퀀스가 복수의 재사용 데이터를 포함하는 경우, 상기 복수의 재사용 데이터를 구분하기 위한 제4 포인터를 저장하는 단계
    를 더 포함하는, 제어 방법.
  31. 제19항에 있어서,
    복수의 압축된 데이터 시퀀스를 병렬로 리드하는 경우, 상기 복수의 압축된 시퀀스의 길이가 모두 동일하도록 비트를 추가하는 단계
    를 더 포함하는, 제어 방법.
  32. 하드웨어와 결합되어 제19항 내지 제31항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
KR1020190176097A 2019-12-27 2019-12-27 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치 KR20210083624A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190176097A KR20210083624A (ko) 2019-12-27 2019-12-27 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치
US16/900,007 US11580393B2 (en) 2019-12-27 2020-06-12 Method and apparatus with neural network data input and output control
CN202010919746.8A CN113052303A (zh) 2019-12-27 2020-09-04 用于控制神经网络电路的数据输入和输出的设备
EP20195045.8A EP3843012A1 (en) 2019-12-27 2020-09-08 Method and apparatus with neural network data input and output control
US18/095,674 US11790232B2 (en) 2019-12-27 2023-01-11 Method and apparatus with neural network data input and output control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190176097A KR20210083624A (ko) 2019-12-27 2019-12-27 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210083624A true KR20210083624A (ko) 2021-07-07

Family

ID=72432721

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190176097A KR20210083624A (ko) 2019-12-27 2019-12-27 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치

Country Status (4)

Country Link
US (2) US11580393B2 (ko)
EP (1) EP3843012A1 (ko)
KR (1) KR20210083624A (ko)
CN (1) CN113052303A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190099930A (ko) * 2018-02-20 2019-08-28 삼성전자주식회사 완전 연결 네트워크의 데이터 입력 및 출력을 제어하는 방법 및 장치
CN113487019A (zh) * 2021-07-06 2021-10-08 湖南第一师范学院 电路故障诊断方法、装置、计算机设备和存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9111225B2 (en) 2012-02-08 2015-08-18 Qualcomm Incorporated Methods and apparatus for spiking neural computation
US20130279573A1 (en) * 2012-04-18 2013-10-24 Vixs Systems, Inc. Video processing system with human action detection and methods for use therewith
US9418331B2 (en) 2013-10-28 2016-08-16 Qualcomm Incorporated Methods and apparatus for tagging classes using supervised learning
US9543980B2 (en) * 2014-10-10 2017-01-10 Massachusettes Institute Of Technology Systems and methods for model-free compression and model-based decompression
US10229356B1 (en) * 2014-12-23 2019-03-12 Amazon Technologies, Inc. Error tolerant neural network model compression
US20170344876A1 (en) 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US11222263B2 (en) 2016-07-28 2022-01-11 Samsung Electronics Co., Ltd. Neural network method and apparatus
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
KR102631381B1 (ko) 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US10726583B2 (en) 2016-12-30 2020-07-28 Intel Corporation System and method of encoding and decoding feature maps and weights for a convolutional neural network
US10929746B2 (en) 2017-11-27 2021-02-23 Samsung Electronics Co., Ltd. Low-power hardware acceleration method and system for convolution neural network computation
KR20190078292A (ko) 2017-12-26 2019-07-04 삼성전자주식회사 뉴럴 네트워크 연산을 수행하는 장치 및 이의 동작 방법
US11783160B2 (en) * 2018-01-30 2023-10-10 Intel Corporation Memoryless weight storage hardware for neural networks
KR20190099930A (ko) 2018-02-20 2019-08-28 삼성전자주식회사 완전 연결 네트워크의 데이터 입력 및 출력을 제어하는 방법 및 장치
KR20190099927A (ko) 2018-02-20 2019-08-28 삼성전자주식회사 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치
US10361715B1 (en) * 2018-06-04 2019-07-23 Amazon Technologies, Inc. Decompression circuit
US10817042B2 (en) 2018-09-27 2020-10-27 Intel Corporation Power savings for neural network architecture with zero activations during inference
US11080152B2 (en) * 2019-05-15 2021-08-03 Western Digital Technologies, Inc. Optimized neural network data organization
KR20190098107A (ko) 2019-08-02 2019-08-21 엘지전자 주식회사 딥 러닝을 위한 신경망 학습 장치 및 그 방법

Also Published As

Publication number Publication date
CN113052303A (zh) 2021-06-29
US20210201133A1 (en) 2021-07-01
US20230162034A1 (en) 2023-05-25
US11790232B2 (en) 2023-10-17
EP3843012A1 (en) 2021-06-30
US11580393B2 (en) 2023-02-14

Similar Documents

Publication Publication Date Title
JP7037143B2 (ja) ニューラルネットワークのための方法及び電子装置
US11755904B2 (en) Method and device for controlling data input and output of fully connected network
KR102415506B1 (ko) 뉴럴 네트워크 간소화 방법 및 장치
KR102483639B1 (ko) 뉴럴 네트워크 구조 확장 방법, 디멘션 리덕션 방법, 및 그 방법을 이용한 장치
KR102410820B1 (ko) 뉴럴 네트워크를 이용한 인식 방법 및 장치 및 상기 뉴럴 네트워크를 트레이닝하는 방법 및 장치
KR102492318B1 (ko) 모델 학습 방법 및 장치, 및 데이터 인식 방법
KR102399548B1 (ko) 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
KR20190018276A (ko) 모델을 학습하는 방법 및 장치 및 상기 뉴럴 네트워크를 이용한 인식 방법 및 장치
KR20180070103A (ko) 인식 방법 및 인식 장치
KR20200128938A (ko) 모델 학습 방법 및 장치
US11790232B2 (en) Method and apparatus with neural network data input and output control
CN112580369B (zh) 语句复述方法、训练语句复述模型的方法及其装置
KR20190098671A (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN112668381A (zh) 用于识别图像的方法和设备
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
KR20210014949A (ko) 음성 인식을 위한 인공신경망에서의 디코딩 방법 및 장치
CN113947703A (zh) 通过神经网络识别图像的方法和设备
KR20210042696A (ko) 모델 학습 방법 및 장치
JP7372011B2 (ja) 深層学習の大規模なモデル・サポート
EP3629248A1 (en) Operating method and training method of neural network and neural network thereof
CN114925320B (zh) 一种数据处理方法及相关装置
KR20190041388A (ko) 전자 장치 및 그 제어 방법
KR20220039313A (ko) 뉴럴 네트워크 연산 처리 방법 및 장치
CN110909860A (zh) 神经网络参数初始化的方法和装置
KR102090109B1 (ko) 학습 및 추론 장치 및 그 방법