KR102311659B1 - 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법 - Google Patents

컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR102311659B1
KR102311659B1 KR1020190068462A KR20190068462A KR102311659B1 KR 102311659 B1 KR102311659 B1 KR 102311659B1 KR 1020190068462 A KR1020190068462 A KR 1020190068462A KR 20190068462 A KR20190068462 A KR 20190068462A KR 102311659 B1 KR102311659 B1 KR 102311659B1
Authority
KR
South Korea
Prior art keywords
input
neural network
convolutional neural
computing device
weight
Prior art date
Application number
KR1020190068462A
Other languages
English (en)
Other versions
KR20200141663A (ko
Inventor
조용범
Original Assignee
건국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 건국대학교 산학협력단 filed Critical 건국대학교 산학협력단
Priority to KR1020190068462A priority Critical patent/KR102311659B1/ko
Publication of KR20200141663A publication Critical patent/KR20200141663A/ko
Application granted granted Critical
Publication of KR102311659B1 publication Critical patent/KR102311659B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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

Landscapes

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

Abstract

컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법이 개시되며, 본원의 일 실시예에 따른 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치는, 복수의 입력 뉴런을 포함하는 입력 계층, 은닉 계층 및 출력 계층을 포함하는 컨볼루션 신경망, 상기 컨볼루션 신경망의 복수의 입력 뉴런에 대응하도록 복수 개 마련되고, 상기 복수의 입력 뉴런에 대응되는 가중치 커널을 저장하는 복수의 메모리 모듈, 상기 컨볼루션 신경망의 입력 계층에 입력되는 입력 데이터 및 상기 복수의 메모리 모듈 각각에 저장된 상기 가중치 커널을 기초로 상기 입력 뉴런 각각에 대응하는 출력 데이터의 생성을 위한 연산을 수행하는 연산부 및 상기 출력 데이터에 기초하여 역전파(Back Propagation) 연산을 수행하고, 상기 역전파 연산의 결과를 기초로 상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널을 수정하는 가중치 커널 업데이트부를 포함할 수 있다.

Description

컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법{APPARATUS FOR COMPUTING BASED ON CONVOLUTIONAL NEURAL NETWORK MODEL AND METHOD FOR OPERATING THE SAME}
본원은 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법에 관한 것이다.
컨볼루션 신경망(Convolutional Neural Network, CNN)은 영상 처리 또는 이미지 처리 등을 위해 고안된 특수한 연결구조를 가진 다층 신경망이다. 일반적인 다층 신경망에서는 인접한 두 개의 계층간의 뉴런들이 모두 연결된 완전 연결 구조를 갖는다. 이러한 완전 연결 구조를 이용하면 이론적으로 입력 영상에 있는 위상학적 구조를 찾을 수 있으나, 현실적으로 입력 영상이 다차원으로 이루어져 있기 때문에 문제 복잡도가 매우 크다는 문제가 있다. 이에 비하여 컨볼루션 신경망(CNN)은 영상의 위상학적 구조를 학습할 수 있는 신경망의 구조를 새롭게 설계한 것이다. 컨볼루션 신경망(CNN)의 큰 장점은 픽셀 영상으로부터 최소한의 전처리를 통해서 다양한 영상 인식, 객체 인식 등이 가능하다는 점이다.
다만, 전력당 효율이 좋고 데이터 처리량이 높은 컨볼루션 신경망(CNN)을 하드웨어로 구현하기 위해서는 메모리 문제가 해결되어야 한다. 컨볼루션 신경망(CNN)을 구성하는 복수의 계층 간의 컨볼루션 연산 등을 위해서는 잦은 데이터 액세스 및 처리가 요구되기 때문이다.
종래에는 컨볼루션 신경망(CNN)을 하드웨어로 구축하기 위하여, 단일 메모리 구조를 채택하였다. 구체적으로, 컨볼루션 신경망(CNN)에서 요구되는 전체 연산에서 사용되는 가중치 값을 신경망과 분리된 외부의 단일 메모리에 모두 저장하였고, 이는 신경망을 이루는 여러 뉴런에서 컨볼루션 연산을 위해 가중치 값을 조회하거나 출력 데이터로부터 역전파 연산을 수행하여 가중치 값을 수정 및 업데이트하는 과정에서, 단일 메모리가 가지는 I/O 성능의 한계로 인하여 처리 속도가 감소되는 메모리 I/O 병목 현상이 발생하는 한계가 있었다.
본원의 배경이 되는 기술은 한국등록특허공보 제10-1803409호에 개시되어 있다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 컨볼루션 신경망을 이루는 각 뉴런에서 사용하는 가중치 값을 저장하는 메모리를 여러 부분으로 나누어 설계하여 I/O 대역폭(Bandwidth)에 대한 제약이 적고, 병목 현상 발생이 저감되는 컨볼루션 신경망(Convolution Neural Network, CNN) 모델에 기초한 컴퓨팅 장치 및 그 동작 방법을 제공하려는 것을 목적으로 한다.
다만, 본원의 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상기한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본원의 일 실시예에 따른 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치는, 복수의 입력 뉴런을 포함하는 입력 계층, 은닉 계층 및 출력 계층을 포함하는 컨볼루션 신경망, 상기 컨볼루션 신경망의 복수의 입력 뉴런에 대응하도록 복수 개 마련되고, 상기 복수의 입력 뉴런에 대응되는 가중치 커널을 저장하는 복수의 메모리 모듈, 상기 컨볼루션 신경망의 입력 계층에 입력되는 입력 데이터 및 상기 복수의 메모리 모듈 각각에 저장된 상기 가중치 커널을 기초로 상기 입력 뉴런 각각에 대응하는 출력 데이터의 생성을 위한 연산을 수행하는 연산부 및 상기 출력 데이터에 기초하여 역전파(Back Propagation) 연산을 수행하고, 상기 역전파 연산의 결과를 기초로 상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널을 수정하는 가중치 커널 업데이트부를 포함할 수 있다.
또한, 상기 입력 데이터는 이미지 데이터이고, 본원의 일 실시예에 따른 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치는, 상기 이미지 데이터에 포함된 객체를 인식하거나 상기 이미지 데이터를 기 설정된 범주로 분류할 수 있다.
또한, 상기 연산부는, 특징맵 생성을 위한 컨볼루션 연산, 활성화 함수 연산 및 풀링 연산 중 적어도 하나를 수행할 수 있다.
또한, 상기 풀링 연산은, LeNet-5 네트워크 기반의 평균 풀링(mean pooling)일 수 있다.
또한, 상기 복수의 메모리 모듈은, STT(spin-torque transfer) 메모리 또는 비휘발성 이진 메모리를 포함할 수 있다.
또한, 상기 컨볼루션 신경망은, 상기 은닉 계층 및 상기 출력 계층 사이에 완전 접속 계층을 포함할 수 있다.
또한, 상기 복수의 메모리 모듈은, 상기 입력 계층과 연계하여 상기 가중치 커널을 저장할 수 있다.
한편, 본원의 일 실시예에 따른 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치의 동작 방법은, 상기 컨볼루션 신경망의 복수의 입력 뉴런에 대응하도록 복수 개 마련되고, 상기 복수의 입력 뉴런에 대응되는 가중치 커널을 저장하는 복수의 메모리 모듈에 상기 가중치 커널의 초기값을 저장하는 단계, 상기 컨볼루션 신경망의 입력 계층에 입력되는 입력 데이터를 수신하는 단계, 상기 복수의 메모리 모듈 각각에 저장된 상기 가중치 커널의 초기값을 조회하는 단계, 상기 입력 데이터 및 상기 가중치 커널의 초기값을 기초로 상기 입력 뉴런 각각에 대응하는 출력 데이터의 생성을 위한 연산을 수행하는 단계, 상기 출력 데이터에 기초하여 역전파(Back Propagation) 연산을 수행하는 단계 및 상기 역전파 연산의 결과를 기초로 상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널의 초기값을 수정하는 단계를 포함할 수 있다.
또한, 상기 입력 데이터는 이미지 데이터이고, 본원의 일 실시예에 따른 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치의 동작 방법은, 상기 이미지 데이터에 포함된 객체를 인식하거나 상기 이미지 데이터를 기 설정된 범주로 분류하는 단계를 포함할 수 있다.
또한, 상기 출력 데이터의 생성을 위한 연산을 수행하는 단계는, 특징맵 생성을 위한 컨볼루션 연산을 수행하는 단계, 상기 컨볼루션 연산 결과에 활성화 함수를 적용하는 단계 및 LeNet-5 네트워크 기반의 평균 풀링(mean pooling) 연산을 수행하는 단계를 포함할 수 있다.
상술한 과제 해결 수단은 단지 예시적인 것으로서, 본원을 제한하려는 의도로 해석되지 않아야 한다. 상술한 예시적인 실시예 외에도, 도면 및 발명의 상세한 설명에 추가적인 실시예가 존재할 수 있다.
전술한 본원의 과제 해결 수단에 의하면, 컨볼루션 신경망을 이루는 각 뉴런에서 사용하는 가중치 값을 저장하는 메모리를 여러 부분으로 나누어 설계한 복수의 메모리 모듈을 구비하여 메모리에 대한 I/O 대역폭(Bandwidth)에 대한 제약이 적고, 연산 과정에서 병목 현상 발생이 저감되어 연산 속도가 향상될 수 있다.
다만, 본원에서 얻을 수 있는 효과는 상기된 바와 같은 효과들로 한정되지 않으며, 또 다른 효과들이 존재할 수 있다.
도 1은 본원의 일 실시예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 세부 구성도이다.
도 2는 본원의 일 실시예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 개략적인 구성도이다.
도 3은 컨볼루션 신경망 모델의 구조를 설명하기 위한 개념도이다.
도 4는 단일 메모리를 사용하는 종래의 컨벌루션 신경망 모델에 기초한 컴퓨팅 장치를 설명하기 위한 개념도이다.
도 5는 본원의 일 실시예에 따른 복수의 메모리 모듈을 포함하는 컨벌루션 신경망 모델에 기초한 컴퓨팅 장치의 개념도이다.
도 6은 본원의 일 실시예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법의 동작 흐름도이다.
도 7은 본원의 일 실시예에 따른 출력 데이터의 생성을 위한 연산 방법의 동작 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본원이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 실시예를 상세히 설명한다. 그러나 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본원 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결" 또는 "간접적으로 연결"되어 있는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부재가 다른 부재 "상에", "상부에", "상단에", "하에", "하부에", "하단에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본원의 일 실시예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 세부 구성도이고, 도 2는 본원의 일 실시예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 개략적인 구성도이다.
도 1 및 도 2를 참조하면, 본원의 일 실시예에 따른 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치(100)(이하, '컴퓨팅 장치(100)'라 한다.)는, 컨볼루션 신경망(110), 복수의 메모리 모듈(120), 연산부(130) 및 가중치 커널 업데이트부(140)를 포함할 수 있다.
또한, 본원의 일 실시예에 따른 컴퓨팅 장치(100)는, 시스템 온 칩(System-on-Chip, SoC), 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서 또는 명령을 실행하고 응답할 수 있는 장치를 의미하거나, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 또한, 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행하는 것일 수 있다. 또한, 병렬 프로세서(parallel processor)의 형태로 다른 처리 단말과 연계될 수 있다.
본원의 일 실시예에 따른 컴퓨팅 장치(100)는, 입력 데이터(10)(특히, 이미지 데이터 또는 영상 데이터)에 포함된 객체를 인식하거나 입력 데이터(10)를 기 설정된 범주로 분류하는 동작을 수행할 수 있다.
또한, 컴퓨팅 장치(100)는, PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 디바이스와 연계하여 구현된 것일 수 있다. 구체적인 예로, 컨볼루션 신경망 모델에 기초한 음성 인식, 영상 인식, 이미지 분류, 영상 분류 등을 수행하는 스마트폰, 태블릿, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율 주행 자동차, 로보틱스, 의료 기기 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
특히, 본원의 일 실시예에 따른 컴퓨팅 장치(100)는, 메모리 I/O 성능이 충분하지 않은 경우에도, 복수의 메모리 모듈을 구비하여 메모리 I/O 성능의 한계를 극복하고, I/O 대역폭에 대한 제약이 저감되므로, 제한된 리소스를 사용하는 환경의 임베디드 디바이스 또는 모바일 디바이스 등에 적합할 수 있다.
이하에서는 먼저, 본원의 일 실시예에 따른 컴퓨팅 장치(100)에 구축되는 컨볼루션 신경망(CNN) 모델의 구조를 설명하도록 한다.
도 3은 컨볼루션 신경망 모델의 구조를 설명하기 위한 개념도이다. 특히, 도 3은 LeNet-5 기반의 컨볼루션 신경망 모델의 구조를 나타낸 도면이다.
도 1내지 도 3을 참조하면, 컨볼루션 신경망(110)은, 복수의 입력 뉴런(1110)을 포함하는 입력 계층(111), 은닉 계층(112) 및 출력 계층(113)을 포함할 수 있다.
구체적으로, 컨볼루션 신경망(110)은 다중 레이어(계층)을 포함하는 스택형 신경망이다. 각 계층은 뉴런(neurons)이라고 불리는 복수의 노드들을 포함하며, 각 노드 또는 뉴런은 하나 이상의 입력 및 출력을 갖는 계산 단위를 의미하는 것일 수 있다. 각 계층의 복수의 뉴런으로부터 각각의 입력 및 각각의 출력(입력 데이터 또는 특징맵)은 인접한 계층의 각 뉴런에 공급될 수 있다.
또한, 본원의 일 실시예에 따른 컨볼루션 신경망(110)은, 은닉 계층(112) 및 출력 계층(113) 사이에 완전 접속 계층을 포함할 수 있다. 도 1 및 도 3에서 본원의 일 실시예에 따른 컨볼루션 신경망(110)이 전술한 완전 접속 계층을 포함하는 경우, 완전 접속 계층은 출력 계층(113)의 직전에 접속된 계층(도 3 기준 F6)으로 결정될 수 있다.
또한, 본원 명세서 전반에서 컨볼루션 신경망의 계층을 지칭하는 용어는, 입력 계층(111), 은닉 계층(112) 및 출력 계층(113) 외에도, 컨볼루션 계층(Convolution layer), 서브 샘플링 계층(Sub-Sampling layer), 풀링 레이어(Pooling layer) 등으로 달리 표현될 수 있다. 또한, 본원에서의 하나의 입력 계층(111) 또는 하나의 은닉 계층(112)이 세부적으로 컨볼루션 계층(Convolution layer), 서브 샘플링 계층(Sub-Sampling layer), 풀링 레이어(Pooling layer) 등을 포함하여 이루어지는 것으로 이해될 수 있다.
또한, 입력 계층(111)은 입력 데이터(10)를 입력으로 하고, 특징맵을 출력하는 것일 수 있다. 여기서, 특징맵이란, 입력 데이터(10)에 기 설정된 특징이 포함되는가에 대한 판단을 나타내는 인식 또는 탐색 결과를 나타내는 데이터일 수 있다. 이와 관련하여 입력 계층(111)의 복수의 입력 뉴런(1110) 각각이 입력 데이터(10)로부터 어떠한 기 설정된 특징을 인식 또는 탐색하는지에 대한 정보는 후술할 가중치 커널에 포함되는 것일 수 있다.
본원의 일 실시예에 따르면, 입력 데이터(10)는 이미지 데이터일 수 있다. 구체적으로, 이미지 데이터의 경우, 너비(W), 높이(H), 깊이(D)를 가지는 데이터로 표현될 수 있으며, WxHxD의 형식으로 표기될 수 있다. 여기서, 너비, 높이, 깊이라는 용어는 각각 칼럼, 로우, 채널 수로 대체될 수 있다. 여기서, 너비(W) 및 높이(H)는 이미지 데이터의 픽셀 수에 기초하여 결정되는 값일 수 있다. 예를 들어, 가로로 32개의 픽셀을, 세로로 32개의 픽셀을 가지는 이미지 데이터는 32x32의 행렬(matrix)로 나타낼 수 있고, 행렬의 각 구성 요소는 이미지 데이터의 해당 위치의 픽셀 값일 수 있다. 도 3을 참조하면, 입력 데이터(10)는 32x32의 이미지 데이터일 수 있다.
그레이 스케일(Gray Scale)을 갖는 이미지 데이터의 경우 각 픽셀의 gray value로 이루어진 단일 행렬로 표현될 수 있고(깊이 또는 채널 수 1), 컬러 이미지 데이터의 경우 R 값 행렬, G값 행렬, B값 행렬로 분리된 독립된 3가지 행렬로 표현될 수 있다(깊이 또는 채널 수 3).
또한, 은닉 계층(112)은 복수의 계층으로 구성될 수 있으며, 입력 계층(111)과 인접한 첫번째 은닉 계층은 입력 계층(111)이 출력한 특징맵을 입력으로 하여, 상기 특징맵에 포함될 수 있는 또다른 특징을 인식 또는 탐색한 결과인 새로운 특징맵을 출력할 수 있다. 또한, 이 새로운 특징맵은 다음 순서의 은닉 계층의 입력으로 인가될 수 있다. 종합하면, 은닉 계층(112)의 입력은 입력 계층(111) 또는 해당 은닉 계층의 직전 단계 은닉 계층의 출력 결과인 특징맵이 되고, 각 은닉 계층(112)은 이 특징맵으로부터 다른 특징을 인식 또는 탐색한 결과인 새로운 특징맵을 출력할 수 있다.
도 3을 참조해 설명하면, C1은 본원에서의 입력 계층(111)에서 출력된 특징맵 또는 첫 번째 컨볼루션 레이어를 의미할 수 있다. 여기서, C1은 입력 데이터(10)가 32x32이고, 가중치 커널(필터)가 5x5 사이즈 이므로, (32-5)+1=28에 의해 컨볼루션 연산 후 28x28의 크기를 가지며, 6개의 특징맵으로 출력되므로, 6x28x28로 표현된다. S2는 서브 샘플링 레이어를 나타내며, 특히 1/2 서브 샘플링(2x2의 인접 픽셀 각각에 적용되는 mean pooling)을 적용하여 특징맵의 사이즈가 서브 샘플링 레이어를 거친 후 14x14로 감소하였다. 이후, 상술한 가중치 커널(필터)을 이용한 컨볼루션 연산, 서브 샘플링(풀링 연산)을 반복하여 S4의 16x5x5의 특징맵을 얻고, 이를 완전 접속 계층(F6)로 연결하여 입력 데이터(10)의 다양한 특징들을 반영한 출력 데이터(20)를 생성할 수 있다.
여기서, 실시예에 따라, C1, S2는 입력 계층(111)과 연계된 것이고, C3, S4는 은닉 계층(112)과 연계된 것으로 이해될 수 있다. 또한, C1, S2, C3, S4에 상응하는 특징맵 생성을 위한 연산 처리는 후술할 연산부(130)가 수행하는 것일 수 있다.
즉, 입력 계층(111) 및 은닉 계층(112)을 거치면서, 입력 데이터(10)(특히, 이미지 데이터)의 특징들에 대한 인식 결과가 중첩적으로 출력될 수 있다. 즉, 컨볼루션 신경망(110)은 후술할 연산부(130)가 수행하는 컨볼루션 연산에 기초한 특징맵을 반복적으로 출력함으로써, 이미지 전체를 대표할 수 있는 강인한 특징을 탐색하여 출력하고, 컴퓨팅 장치(100)는, 출력된 특징들을 통해 이미지 분석 또는 이미지 분류를 수행하여 이미지 데이터에 포함된 객체 인식 결과 또는 이미지 데이터의 기 설정된 범주로의 분류 결과를 출력할 수 있다.
여기서, 출력 데이터(20)는 전술한 이미지 데이터에 포함된 객체 인식 결과 또는 이미지 데이터의 기 설정된 범주로의 분류 결과를 의미할 수 있고, 나아가, 컴퓨팅 장치(100)가 출력한 객체 인식 결과 또는 분류 결과의 정확도 정보를 포함하는 개념일 수 있다. 즉, 본원에서의 출력 데이터(20)는 컴퓨팅 장치(100)가 최종적으로 판단하여 출력한 입력 데이터(20)의 객체 인식 결과 또는 분류 결과 자체 또는 해당 결과의 정확도 정보(정답 여부, 에러 여부, 신뢰도 등)중 적어도 하나를 포함하는 것일 수 있다.
복수의 메모리 모듈(120)은, 컨볼루션 신경망(110)의 복수의 입력 뉴런(1110)에 대응하도록 복수 개 마련되고, 복수의 입력 뉴런(1110)에 대응되는 가중치 커널을 저장할 수 있다. 또한, 복수의 메모리 모듈(120)은 입력 계층(111)과 연계하여 가중치 커널을 저장하는 것일 수 있다.
여기서, 입력 계층(111)과 연계하여 가중치 커널을 저장하는 것은, 입력 계층(111)의 연산 레벨과 동일한 레벨(레이어)에 복수의 메모리 모듈(120)을 배치하는 것으로 이해될 수 있다.
예시적으로, 복수의 메모리 모듈(120)은, 복수의 입력 뉴런(1110)의 개수만큼 일대일 대응되도록 구비되고, 복수의 입력 뉴런(1110) 각각에 대응되는(즉, 복수의 입력 뉴런(1110) 각각에 대하여 연산부(130)의 컨볼루션 연산에 사용될) 가중치 커널을 저장할 수 있다. 따라서, 복수의 입력 뉴런(1110) 각각의 연산, 아웃풋 생성에 활용되는 각각의 가중치 커널을 저장할 수 있다.
또한, 본원에서의 복수의 메모리 모듈(120)은, 컴퓨팅 장치(100)에 구비된 단일 메모리를 분할(partition)한 것일 수 있다. 이 때, 분할(partition) 구조(예를 들면, 분할 메모리의 수, 각각의 메모리 할당량 등)는 복수의 입력 뉴런(1110)의 개수에 기초하여 결정되는 것일 수 있다 일 예로, 복수의 메모리 모듈(120)은 단일 메모리를 복수의 입력 뉴런(1110)의 개수만큼 분할한 파티션 메모리 각각을 의미하는 것일 수 있다.
여기서, 가중치 커널은 컨볼루션 신경망(CNN) 연산에 적용되는 필터(filter), 가중치 행렬과 동일한 것으로 이해될 수 있다. 구체적으로, 가중치 커널은 KxK의 행렬(matrix)로 표기될 수 있고, 이 때의 K 값은 가중치 커널의 크기 또는 필터 사이즈를 의미할 수 있다.
즉, 복수의 메모리 모듈(120)이 가중치 커널을 저장하는 것은, 가중치 커널의 크기(K 값), KxK행렬의 각 성분(component), 가중치 커널이 입력 데이터(예를 들어, 이미지 데이터)에 어느 정도의 간격을 단위로 시프트 되어 컨볼루션 연산될지에 대한 변수인 스트라이드(Stride) 값 또는 컨볼루션 연산 후 가산되는 바이어스(bias) 값 중 적어도 하나를 저장하는 것으로 이해될 수 있다.
본원의 일 실시예에 따르면, 복수의 메모리 모듈(120)은, STT(spin-torque transfer) 메모리 또는 비휘발성 이진 메모리를 포함할 수 있으나 이에 한정되는 것은 아니고, DRAM(dynamic random access memory), PCM(phase change memory), 휘발성 메모리, 비휘발성 메모리 등일 수 있으며, 실시예에 따라, 각각의 메모리 모듈(120)은 복수의 유형의 메모리로 구현될 수 있다.
또한, 본원의 일 실시예에 따르면, 복수의 메모리 모듈(120)은, 은닉 계층(112)의 복수의 은닉 뉴런(미도시)에 대응하도록 복수 개 마련되고, 복수의 은닉 뉴런(미도시)에 대응되는 가중치 커널을 저장하도록 추가적으로 구비될 수 있다. 이 때, 복수의 메모리 모듈(120)은 은닉 계층(112)과 연계하여 가중치 커널을 저장하는 것으로 표현될 수 있다.
예시적으로, 복수의 메모리 모듈(120)은, 복수의 은닉 뉴런(미도시)의 개수만큼 구비되고, 복수의 은닉 뉴런(미도시) 각각에 대응되는 가중치 커널을 저장하도록 추가적으로 구비될 수 있다.
또한, 복수의 메모리 모듈(120) 각각에 저장되는 가중치 커널의 초기값은 LeCun Initialization, Xavier Initialization(Glorot Initialization), He Initialization 기법 등에 의해 결정될 수 있다.
연산부(130)는, 컨볼루션 신경망(110)의 입력 계층(111)에 입력되는 입력 데이터(10) 및 복수의 메모리 모듈(120) 각각에 저장된 가중치 커널을 기초로 입력 뉴런(1110) 각각에 대응하는 출력 데이터(20)의 생성을 위한 연산을 수행할 수 있다.
이하에서는, 연산부(130)가 수행하는 출력 데이터(20)의 생성을 위한 연산을 하기 식 1을 기초로 설명하도록 한다.
[식 1]
Figure 112019059277442-pat00001
여기서, X m (m=1,...,M)은 LxL 입력 데이터(또는 특징맵)이고, Y n (n=1,...,N)은 LxL 출력 데이터(또는 특징맵)이고, *는 컨볼루션 연산자이고, W nm X m 과의 컨볼루션을 통해 Y n 생성에 기여하는 KxK 가중치 커널이고, C n n번째 출력에 대한 바이어스(bias) 항이고,
Figure 112019059277442-pat00002
는 비선형 커널을 각각 의미할 수 있다.
이와 관련하여, 연산부(130)는 입력 데이터(10)와 가중치 커널에 대한 컨볼루션 연산을 수행하여 특징맵(feature map)을 획득할 수 있고, 이 과정에서 기 설정된 바이어스 항(C n )을 컨볼루션 결과에 합산할 수 있다.
또한, 연산부(130)는, 상기 식 1의 비선형 커널인 활성화 함수를 곱하여 활성화 함수 연산을 수행할 수 있다. 예시적으로 비선형 커널(활성화 함수)는 Sigmoid, tanh, ReLU 함수 일 수 있으나, 이에 한정되는 것은 아니다.
또한, 연산부(130)는, 풀링 연산을 수행할 수 있다. 풀링 연산은 서브 샘플링(Sub-sampling) 연산으로 달리 지칭될 수 있으며, 컨볼루션 연산 결과인 특징맵(feature map)의 사이즈 또는 크기를 축소시키기 위한 처리로, 특정 사이즈의 픽셀들을 최대값으로 대체하거나(max pooling), 특정 사이즈의 픽셀들을 평균값으로 대체하는(average pooling, mean pooling) 것을 의미할 수 있다.
본원의 일 실시예에 따른 풀링 연산은, LeNet-5 네트워크 기반의 평균 풀링(mean pooling)일 수 있다. 예시적으로, 연산부(130)는 평균 풀링을 통해 4개의 이웃한 픽셀을 평균화하도록 동작할 수 있다.
종합하면, 연산부(130)는, 특징맵 생성을 위한 컨볼루션(Convolution) 연산, 바이어스(bias) 합산, 활성화 함수 연산 및 풀링 연산 중 적어도 하나를 수행할 수 있다. 전술한 바와 같이 연산부(130)의 연산 결과인 특징맵은 컨볼루션 신경망을 형성하는 계층 각각의 입력 또는 출력에 대응될 수 있다.
본원의 일 실시예에 따르면, 연산부(130)는 연산을 위한 프로그램을 실행하는 프로세서, CPU(Central Processing Unit), GPU(Graphics Processing Unit), GPGPU(General-Purpose computing on Graphics Processing Units), NPU(Neural Processing Unit), VPU(Vision Processing Unit) 등과 연계된 것일 수 있다.
또한, 본원의 일 실시예에 따르면, 연산부(130)는 CNN과 관련된 연산을 고속으로 처리하기 위한 별도의 CNN 가속기와 연계된 것일 수 있다.
가중치 커널 업데이트부(140)는, 출력 데이터(20)에 기초하여 역전파(Back Propagation) 연산을 수행하고, 역전파 연산의 결과를 기초로 복수의 메모리 모듈(120)에 기 저장된 가중치 커널을 수정할 수 있다.
예시적으로, 본원의 일 실시예에 따른 가중치 커널 업데이트부(140)는, 확률적 경도 하강(SGD: Stochastic Gradient descent) 또는 점진적 경도 하강(incremental gradient descent) 근사 기법에 기초하여 복수의 메모리 모듈(120)에 새로이 저장될 가중치 커널의 수정값을 결정하는 것일 수 있다.
전술한 가중치 커널 업데이트부(140)가 출력 데이터(20)에 기초하여 역전파 연산을 수행하는 것의 의미는, 컴퓨팅 장치(100)의 출력 데이터(20)인 객체 인식 결과 또는 분류 결과 자체 또는 해당 결과의 정확도 정보(정답 여부, 에러 여부, 신뢰도 등)중 적어도 하나에 기초하여, 컴퓨팅 장치(100)가 정확도 높은 객체 인식 결과 또는 분류 결과를 제공하도록 이후의 컨볼루션 연산에 적용될 가중치 커널의 값을 업데이트하는 것을 것으로 이해될 수 있다.
또한, 본원의 일 실시예에 따른 가중치 커널 업데이트부(140)는 가중치 커널에 랜덤한 노이즈를 추가하여 CNN 모델의 정확성을 높이도록 구현될 수 있다.
또한, 가중치 커널 업데이트부(140)가 기 저장된 가중치 커널을 수정하는 것은, 복수의 메모리 모듈(120) 각각에 저장된 가중치 커널에 대하여, 가중치 커널의 크기(K 값), KxK행렬의 각 성분(component), 가중치 커널이 입력 데이터(예를 들어, 이미지 데이터)에 어느 간격을 두고 시프트 되어 컨볼루션 연산될지에 대한 변수인 스트라이드(Stride) 값 또는 컨볼루션 연산 후 가산되는 바이어스(bias) 값 중 적어도 하나를 수정(업데이트)하는 것으로 이해될 수 있다.
가중치 커널 업데이트부(140)가 복수의 메모리 모듈(120) 각각에 저장된 가중치 커널을 지속적으로 업데이트(갱신)함에 따라, 학습을 지속할수록 컴퓨팅 장치(100)의 동작 목표(예를 들면, 이미지 분류, 객체 인식 등)에 적합한 가중치 커널이 복수의 메모리 모듈(120) 각각에 저장될 수 있고, 학습을 반복할수록 컴퓨팅 장치(100)의 동작 성능이 향상될 수 있다.
도 4는 단일 메모리를 사용하는 종래의 컨벌루션 신경망 모델에 기초한 컴퓨팅 장치를 설명하기 위한 개념도이고, 도 5는 본원의 일 실시예에 따른 복수의 메모리 모듈을 포함하는 컨벌루션 신경망 모델에 기초한 컴퓨팅 장치의 개념도이다.
도 4 를 참조하면, 종래의 컨볼루션 신경망(CNN) 모델의 하드웨어적 구현은, 단일 메모리 구조를 채택하는 경우가 많았다. 구체적으로 컨볼루션 신경망 (CNN)에서 요구되는 전체 연산에서 사용되는 가중치 값을 단일 메모리에 모두 저장하였고, 이는 신경망을 이루는 여러 뉴런(노드)에서 컨볼루션 연산을 위해 가중치 값을 조회하거나 출력 데이터로부터 역전파 연산을 수행하여 가중치 값을 수정하는 과정에서, 단일 메모리가 가지는 I/O 성능의 한계로 인하여 처리 속도가 감소되는 메모리 I/O 병목 현상이 발생하는 한계가 있었다.
즉, 컨볼루션 신경망(CNN)을 구축하기 위한 각 계층의 복수의 뉴런들에 각각에 대응되는 컨볼루션 연산을 수행하기 위해서는 해당 뉴런에 적용될 가중치 커널 값을 메모리로부터 불러와야 하는데, 종래에는 전체 뉴런에 적용될 가중치 커널이 단일 메모리(mem)에 모두 저장되어 있었으므로, 각 뉴런에서 가중치 커널을 불러와 컨볼루션 연산을 수행하는 것이 동시에(소정 수준 이하의 시간 간격을 두고 이루어지는 것을 포함한다.) 이루어질 수 없는 한계가 있었다. 상술한 종래 구조의 한계는, 역전파 연산을 통해 적절한 가중치 커널 수정값을 기초로 단일 메모리(mem)에 저장된 각 가중치 커널을 수정하는 과정에서도 마찬가지로 발생한다.
이와 달리, 도 5를 참조하면, 본원의 컴퓨팅 장치(100)는, 컨볼루션 신경망을 이루는 각 뉴런에서 사용하는 가중치 값을 저장하는 메모리를 여러 부분으로 나누어 설계한 복수의 메모리 모듈(120)을 구비하여 메모리에 대한 I/O 대역폭(Bandwidth)에 대한 제약이 적고, 연산 과정에서 동시에 복수의 메모리 모듈을 동시에 활용할 수 있어 병목 현상 발생이 저감될 수 있다.
본원의 일 실시예에 따르면, 본원의 컴퓨팅 장치(100)에서는, 입력 뉴런(x 1 , x 2 , x 3 , … , x n , 1110) 각각에 대한 컨볼루션 연산 및 가중치 커널 수정 시 복수의 메모리 모듈(mem1, mem2, mem3, … , memn)으로부터 동시에(소정 수준 이하의 시간 간격을 두고 이루어지는 것을 포함한다.) 가중치 커널 값을 조회하거나 가중치 커널 값을 업데이트하고 수정하는 동작이 이루어질 수 있어 전술한 종래 구조의 한계를 극복할 수 있다.
이하에서는 상기에 자세히 설명된 내용을 기반으로, 본원의 동작 흐름을 간단히 살펴보기로 한다.
도 6은 본원의 일 실시예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법의 동작 흐름도이다.
도 6에 도시된 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법은 앞서 설명된 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치(100)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치(100)에 대하여 설명된 내용은 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 6을 참조하면, 단계 S610에서 복수의 메모리 모듈(120)에 가중치 커널의 초기값을 저장할 수 있다. 본원의 일 실시예에 따르면, 가중치 커널의 초기값은 LeCun Initialization, Xavier Initialization(Glorot Initialization), He Initialization 기법 등에 의해 결정되는 것일 수 있다. 본원의 다른 실시예에 따르면, 가중치 커널의 초기값은 사용자 입력에 의해 저장되는 것일 수 있다.
다음으로, 단계 S620에서 입력 계층(111)의 입력 뉴련(1110) 각각은, 입력 데이터(10)를 수신할 수 있다.
다음으로, 단계 S630에서 연산부(130)는, 복수의 메모리 모듈(120) 각각에 저장된 가중치 커널의 초기값을 조회할 수 있다.
다음으로, 단계 S640에서 연산부(130)는, 입력 데이터(10) 및 단계 S630에서 조회한 가중치 커널의 초기값을 기초로 출력 데이터(20)의 생성을 위한 연산을 수행할 수 있다.
다음으로, 단계 S650에서 가중치 커널 업데이트부(140)는, 출력 데이터(20)에 기초하여 역전파(Back Propagation) 연산을 수행할 수 있다.
다음으로, 단계 S660에서 가중치 커널 업데이트부(140)는, 역전파 연산의 결과를 기초로 복수의 메모리 모듈(120)에 기 저장된 가중치 커널의 초기값을 수정할 수 있다.
종합하면, 컴퓨팅 장치(100)는, 단계 S610 내지 단계 S660을 반복 수행하여, 컴퓨팅 장치(100)의 동작 목표에 적합한 가중치 커널값을 복수의 메모리 모듈(120)에 갱신하며 저장할 수 있다. 이후, 컴퓨팅 장치(100)는 구축된 컨볼루션 신경망(110)을 이용하여 이미지 데이터(10)에 포함된 객체를 인식하거나 상기 이미지 데이터를 기 설정된 범주로 분류할 수 있다. 이는, 본원의 일 실시 예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법이 이미지 데이터(10)에 포함된 객체를 인식하거나 상기 이미지 데이터를 기 설정된 범주로 분류하는 단계를 더 포함하는 것으로 이해될 수 있다.
상술한 설명에서, 단계 S610 내지 S660은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 7은 본원의 일 실시예에 따른 출력 데이터의 생성을 위한 연산 방법의 세부 동작 흐름도이다.
도 7에 도시된 출력 데이터의 생성을 위한 연산 방법은 앞서 설명된 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치(100)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치(100)에 대하여 설명된 내용은 도 7에 대한 설명에도 동일하게 적용될 수 있다.
단계 S710에서 연산부(130)는, 특징맵 생성을 위한 컨볼루션 연산을 수행할 수 있다.
단계 S720에서 연산부(130)는, 컨볼루션 연산 결과에 활성화 함수를 적용할 수 있다.
단계 S730에서 연산부(140)는, LeNet-5 네트워크 기반의 평균 풀링(mean pooling) 연산을 수행할 수 있다.
상술한 설명에서, 단계 S710 내지 S730은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
본원의 일 실시 예에 따른 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 전술한 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치의 동작 방법은 기록 매체에 저장되는 컴퓨터에 의해 실행되는 컴퓨터 프로그램 또는 애플리케이션의 형태로도 구현될 수 있다.
전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본원의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.
100: 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치
110: 컨볼루션 신경망
111: 입력 계층
1110: 입력 뉴런
112: 은닉 계층
113: 출력 계층
120: 메모리 모듈
130: 연산부
140: 가중치 커널 업데이트부
130: 데이터 수신부
10: 입력 데이터
20: 출력 데이터

Claims (10)

  1. 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치에 있어서,
    복수의 입력 뉴런을 포함하는 입력 계층, 은닉 계층 및 출력 계층을 포함하는 컨볼루션 신경망;
    상기 컨볼루션 신경망의 복수의 입력 뉴런에 대응하도록 복수 개 마련되고, 상기 복수의 입력 뉴런에 대응되는 가중치 커널을 저장하는 복수의 메모리 모듈;
    상기 컨볼루션 신경망의 입력 계층에 입력되는 입력 데이터 및 상기 복수의 메모리 모듈 각각에 저장된 상기 가중치 커널을 기초로 상기 입력 뉴런 각각에 대응하는 출력 데이터의 생성을 위한 연산을 수행하는 연산부; 및
    상기 출력 데이터에 기초하여 역전파(Back Propagation) 연산을 수행하고, 상기 역전파 연산의 결과를 기초로 상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널을 수정하는 가중치 커널 업데이트부,
    를 포함하고,
    상기 입력 데이터는 이미지 데이터이고,
    상기 컴퓨팅 장치는, 상기 이미지 데이터에 포함된 객체를 인식하거나 상기 이미지 데이터를 기 설정된 범주로 분류하되,
    상기 복수의 메모리 모듈은,
    상기 가중치 커널의 크기, 상기 가중치 커널과 연계된 행렬 성분, 스트라이드 값 및 바이어스 값을 저장하고,
    상기 가중치 커널 업데이트부는,
    상기 이미지 데이터에 대한 객체 인식 결과 또는 분류 결과의 정확도 정보에 기초하여 상기 크기, 상기 행렬 성분, 상기 스트라이드 값 및 상기 바이어스 값을 업데이트 하고,
    상기 복수의 메모리 모듈은,
    상기 컴퓨팅 장치에 구비된 단일 메모리로부터 분할된 것으로서, 분할 메모리의 수 및 각각의 메모리 할당량을 포함하는 상기 단일 메모리에 대한 분할 구조는 상기 복수의 입력 뉴런의 수에 기초하여 결정되어 상기 입력 계층과 연계하여 상기 가중치 커널을 저장하도록 상기 입력 계층의 연산 레벨과 동일한 레벨에 배치되고,
    상기 연산부는,
    상기 복수의 입력 뉴런 각각에 대한 컨볼루션 연산을 위하여 상기 복수의 메모리 모듈로부터 동시에 상기 가중치 커널을 조회하고,
    상기 가중치 커널 업데이트부는,
    상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널 각각을 랜덤 노이즈를 추가하여 동시에 수정하는 것인, 컴퓨팅 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 연산부는,
    특징맵 생성을 위한 컨볼루션 연산, 활성화 함수 연산 및 풀링 연산 중 적어도 하나를 수행하는 것인, 컴퓨팅 장치.
  4. 제3항에 있어서,
    상기 풀링 연산은,
    LeNet-5 네트워크 기반의 평균 풀링(mean pooling)인 것인, 컴퓨팅 장치.
  5. 제1항에 있어서,
    상기 복수의 메모리 모듈은,
    STT(spin-torque transfer) 메모리 또는 비휘발성 이진 메모리를 포함하는 것인, 컴퓨팅 장치.
  6. 삭제
  7. 컨볼루션 신경망(Convolutional Neural Network, CNN) 모델에 기초한 컴퓨팅 장치의 동작 방법에 있어서,
    상기 컨볼루션 신경망은 복수의 입력 뉴런을 포함하는 입력 계층, 은닉 계층 및 출력 계층을 포함하고,
    상기 컨볼루션 신경망의 복수의 입력 뉴런에 대응하도록 복수 개 마련되고, 상기 복수의 입력 뉴런에 대응되는 가중치 커널을 저장하는 복수의 메모리 모듈에 상기 가중치 커널의 초기값을 저장하는 단계;
    상기 컨볼루션 신경망의 입력 계층에 입력되는 이미지 데이터인 입력 데이터를 수신하는 단계;
    상기 복수의 메모리 모듈 각각에 저장된 상기 가중치 커널의 초기값을 조회하는 단계;
    상기 입력 데이터 및 상기 가중치 커널의 초기값을 기초로 상기 입력 뉴런 각각에 대응하는 출력 데이터의 생성을 위한 연산을 수행하여 상기 이미지 데이터에 포함된 객체를 인식하거나 상기 이미지 데이터를 기 설정된 범주로 분류하는 단계;
    상기 출력 데이터에 기초하여 역전파(Back Propagation) 연산을 수행하는 단계; 및
    상기 역전파 연산의 결과를 기초로 상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널의 초기값을 수정하는 단계,
    를 포함하고,
    상기 가중치 커널의 초기값을 저장하는 단계는,
    상기 가중치 커널의 크기, 상기 가중치 커널과 연계된 행렬 성분, 스트라이드 값 및 바이어스 값을 저장하고,
    상기 가중치 커널의 초기값을 수정하는 단계는,
    상기 이미지 데이터에 대한 객체 인식 결과 또는 분류 결과의 정확도 정보에 기초하여 상기 크기, 상기 행렬 성분, 상기 스트라이드 값 및 상기 바이어스 값을 업데이트 하고,
    상기 복수의 메모리 모듈은,
    상기 컴퓨팅 장치에 구비된 단일 메모리로부터 분할된 것으로서, 분할 메모리의 수 및 각각의 메모리 할당량을 포함하는 상기 단일 메모리에 대한 분할 구조는 상기 복수의 입력 뉴런의 수에 기초하여 결정되어 상기 입력 계층과 연계하여 상기 가중치 커널을 저장하도록 상기 입력 계층의 연산 레벨과 동일한 레벨에 배치되고,
    상기 조회하는 단계는,
    상기 복수의 입력 뉴런 각각에 대한 컨볼루션 연산을 위하여 상기 복수의 메모리 모듈로부터 동시에 상기 가중치 커널을 조회하고,
    상기 수정하는 단계는,
    상기 복수의 메모리 모듈에 기 저장된 상기 가중치 커널 각각을 랜덤 노이즈를 추가하여 동시에 수정하는 것인, 컴퓨팅 장치의 동작 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 출력 데이터의 생성을 위한 연산을 수행하는 단계는,
    특징맵 생성을 위한 컨볼루션 연산을 수행하는 단계;
    상기 컨볼루션 연산 결과에 활성화 함수를 적용하는 단계; 및
    LeNet-5 네트워크 기반의 평균 풀링(mean pooling) 연산을 수행하는 단계,
    를 포함하는 것인, 컴퓨팅 장치의 동작 방법.
  10. 제7항 또는 제9항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020190068462A 2019-06-11 2019-06-11 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법 KR102311659B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190068462A KR102311659B1 (ko) 2019-06-11 2019-06-11 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190068462A KR102311659B1 (ko) 2019-06-11 2019-06-11 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20200141663A KR20200141663A (ko) 2020-12-21
KR102311659B1 true KR102311659B1 (ko) 2021-10-13

Family

ID=74090478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190068462A KR102311659B1 (ko) 2019-06-11 2019-06-11 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR102311659B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102694681B1 (ko) * 2020-08-31 2024-08-16 (주)제이엘케이 정규화된 합성곱 신경망 시스템 및 합성곱 신경망 정규화 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Alessandro Aimar et al., "NullHop: A Flexible Convolutional Neural network Accelerator Based on Sparse Representations of Feature Maps," arXiv:1706.01406v2 [cs.CV] (2018.03.06.)*

Also Published As

Publication number Publication date
KR20200141663A (ko) 2020-12-21

Similar Documents

Publication Publication Date Title
TWI804684B (zh) 用於在深度神經網路中利用啟動稀疏性的方法與裝置
KR102344473B1 (ko) 콘볼루셔널 뉴럴 네트워크들에 대한 슈퍼픽셀 방법들
US11501131B2 (en) Neural network hardware accelerator architectures and operating method thereof
US20200104690A1 (en) Neural processing unit (npu) direct memory access (ndma) hardware pre-processing and post-processing
JP7539971B2 (ja) コンピュートインメモリアレイの列しきい値を調整することによってxnor等価演算を実施すること
US11562205B2 (en) Parallel processing of a convolutional layer of a neural network with compute-in-memory array
US11694301B2 (en) Learning model architecture for image data semantic segmentation
US20220138563A1 (en) Method and device with deep learning operations
US20210383203A1 (en) Apparatus and method with neural network
KR20230005309A (ko) 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑
WO2022179075A1 (zh) 一种数据处理方法、装置、计算机设备及存储介质
KR102311659B1 (ko) 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법
EP4244828A1 (en) Skip convolutions for efficient video processing
US20210406694A1 (en) Neuromorphic apparatus and method with neural network
CN112889072A (zh) 用于降低功率消耗的系统、方法和装置
US20230113207A1 (en) Method of predicting characteristic of semiconductor device and computing device performing the same
CN110765413B (zh) 矩阵求和结构及神经网络计算平台
CN115461754A (zh) 深度过参数化
US12131130B2 (en) Exploiting activation sparsity in deep neural networks
US20240111828A1 (en) In memory computing processor and method thereof with direction-based processing
US20230267325A1 (en) Processing apparatus for neural network calculation and method for operating the same
US20230259775A1 (en) Method and apparatus with pruning
US20240037377A1 (en) Method and apparatus with weight compression
US20230148319A1 (en) Method and device with calculation for driving neural network model
CN116868205A (zh) 经层式分析的神经网络剪枝方法和系统

Legal Events

Date Code Title Description
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant