KR102426605B1 - 인공신경망 모델을 이용한 데이터 분석 방법 및 장치 - Google Patents

인공신경망 모델을 이용한 데이터 분석 방법 및 장치 Download PDF

Info

Publication number
KR102426605B1
KR102426605B1 KR1020200019608A KR20200019608A KR102426605B1 KR 102426605 B1 KR102426605 B1 KR 102426605B1 KR 1020200019608 A KR1020200019608 A KR 1020200019608A KR 20200019608 A KR20200019608 A KR 20200019608A KR 102426605 B1 KR102426605 B1 KR 102426605B1
Authority
KR
South Korea
Prior art keywords
neural network
layer
data
sub
characteristic
Prior art date
Application number
KR1020200019608A
Other languages
English (en)
Other versions
KR20210105092A (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 KR1020200019608A priority Critical patent/KR102426605B1/ko
Publication of KR20210105092A publication Critical patent/KR20210105092A/ko
Priority to KR1020220091772A priority patent/KR102522296B1/ko
Application granted granted Critical
Publication of KR102426605B1 publication Critical patent/KR102426605B1/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/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/04Architecture, e.g. interconnection topology

Landscapes

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

Abstract

인공신경망 모델을 이용한 데이터 분석 방법이 제공된다. 본 발명에 따른 인공신경망 모델을 이용한 데이터 분석 방법은 분석 대상 데이터를 획득하는 단계, 및 상기 분석 대상 데이터를 인공신경망 모델을 통해 분석하여 상기 분석 대상 데이터의 특징을 출력하는 단계를 포함하고, 상기 인공신경망 모델은 제1 층, 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층(Function Layer)과 풀링 층(Pooling Layer)을 반복적으로 포함하는 제1 하위 신경망, 및 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함한다.
이러한 방법에 따르면, 필터 크기가 상이한 여러 개의 독립적인 하위 신경망을 통해 다양한 유형과 크기의 객체 정보들을 효과적으로 잘 인코딩할 수 있으며, 연산에 필요한 모델 파라미터의 수 및 부동 소수점 연산량이 감소하여 계산 효율성이 향상되고 overfitting의 문제 또한 완화시킬 수 있다.
또한, 독립적인 각 하위 신경망의 연산을 멀티 코어 프로세서 내의 개별 코어들과 같은 상호 독립적인 개별 컴퓨팅 장치들을 통해 처리하는 것이 용이하여, 인공신경망 모델의 병렬 처리를 손쉽게 구현할 수 있다.

Description

인공신경망 모델을 이용한 데이터 분석 방법 및 장치{METHOD AND APPARATUS FOR ANALYZING DATA USING ARTIFICIAL NEURAL NETWORK MODEL}
본 발명은 인공신경망 모델을 이용한 데이터 분석 방법 및 장치에 관한 것이다. 보다 자세하게는, 표현 능력을 저하시키지 않으면서 필요 연산량 및 메모리 요구량을 현저히 감소시키는 인공신경망 모델을 이용한 데이터 분석 방법 및 장치에 관한 것이다.
딥러닝(deep learning)은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(abstractions, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는 기능을 요약하는 작업)를 시도하는 기계 학습(machine learning) 알고리즘의 집합으로 정의되며, 큰 틀에서 사람의 사고 방식을 컴퓨터에게 가르치는 기계 학습의 한 분야이다.
지난 수년 간, 다양한 딥러닝 기반의 머신러닝 방법들 중에서도 컨볼루션 신경망(Convolution Neural Network, 이하 "CNN"이라 함)은 영상 인식 분야에 있어 가장 효과적이고 표준적인 딥러닝 방법으로 여겨져 왔다. CNN을 이용한 인공신경망 모델은 데이터로부터 학습 가능한 영상 정보를 추출하는 데 탁월한 성능을 발휘하여, 객체 인식, 객체 분류, 영상 압축 또는 영상 변환 등 다양한 영상 인식 업무에 활용되고 있다.
CNN에 있어서 층(Layer)의 수를 증가시켜 네트워크를 깊게 할수록 더 좋은 성능을 보인다는 것은 주지의 사실이다. 그러나, 네트워크가 깊어질수록 학습을 해야 하는 파라미터의 수가 증가하고 그에 따른 연산량 또한 증가하기 때문에 하드웨어 성능의 문제, overfitting의 문제, vanishing gradient의 문제 등에 부딪히기 쉽다.
대한민국 공개특허공보 제10-2020-0010490호 (2020.01.30 공개)
본 발명의 실시예들을 통해 해결하고자 하는 기술적 과제는, 획득한 공간 정보로부터 다양한 유형과 크기의 객체 정보들을 효과적으로 잘 인코딩할 수 있는 인공신경망 모델을 이용한 데이터 분석 방법 및 장치를 제공하는 데 있다.
본 발명의 실시예들을 통해 해결하고자 하는 다른 기술적 과제는, 기존의 CNN 모델보다 모델 파라미터의 수 및 필요 연산량을 감소시킬 수 있는 인공신경망 모델을 이용한 데이터 분석 방법 및 장치를 제공하는 데 있다.
본 발명의 실시예들을 통해 해결하고자 하는 또 다른 기술적 과제는, 병렬 연산이 용이한 인공신경망 모델을 이용한 데이터 분석 방법 및 장치를 제공하는 데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 실시예들에 따른 인공신경망 모델을 이용한 데이터 분석 방법은 분석 대상 데이터를 획득하는 단계, 및 상기 분석 대상 데이터를 인공신경망 모델을 통해 분석하여 상기 분석 대상 데이터의 특징을 출력하는 단계를 포함하고, 상기 인공신경망 모델은 제1 층, 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층 (Function Layer)과 풀링 층(Pooling Layer)을 반복적으로 포함하는 제1 하위 신경망, 및 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함한다.
일 실시예로서, 상기 제2 하위 신경망은 상기 제1 함수 층과 상이한 제2 함수 층 및 풀링 층(Pooling Layer)을 반복적으로 포함할 수 있다.
일 실시예로서, 상기 인공신경망 모델은 상기 제1 하위 신경망의 연산 결과와 상기 제2 하위 신경망의 연산 결과를 연결하는 연결 층(Concatenation Layer)을 더 포함할 수 있다.
일 실시예로서, 상기 제1 층은 컨볼루션 층 및 풀링 층을 포함하는 전처리 층(Pre-Process Layer)일 수 있다.
일 실시예로서, 상기 제1 하위 신경망은 상기 제1 함수 층과 상기 풀링 층(Pooling Layer) 사이에 다른 함수 층을 더 포함할 수 있다.
일 실시예로서, 상기 다른 함수 층은 1x1 크기의 필터로 연산을 수행하는 컨볼루션 층일 수 있다.
일 실시예로서, 상기 함수 층은 제1 크기의 필터로 연산을 수행하는 컨볼루션 층일 수 있다.
일 실시예로서, 상기 함수 층은 소정의 크기의 필터로 풀링 연산을 수행하는 풀링 층일 수 있다.
일 실시예로서, 상기 함수 층은 컨볼루션 층 또는 풀링 층이 아닌 사전 정의된 다른 연산을 수행하는 함수 층일 수 있다.
일 실시예로서, 상기 인공신경망 모델은 컨볼루션 인공신경망(Convolution Neural Network, CNN) 모델일 수 있다.
일 실시예로서, 상기 인공신경망 모델은 상기 제2 하위 신경망의 출력 데이터를 입력 데이터로서 입력 받고, 제3 함수 층과 풀링 층을 반복적으로 포함하는 제3 하위 신경망, 및 상기 제1 하위 신경망의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제3 하위 신경망의 연산 결과에 영향받지 않고 상기 제3 하위 신경망과 상호 독립적으로 동작하는 제4 하위 신경망을 더 포함할 수 있다.
일 실시예로서, 상기 제4 하위 신경망은 상기 제3 함수 층과 상이한 제4 함수 층 및 풀링 층(Pooling Layer)을 반복적으로 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 실시예들에 따른 인공신경망 모델을 이용한 데이터 분석 장치는 프로세서, 상기 프로세서에 의해 실행되는 컴퓨터 프로그램을 로드(load)하는 메모리, 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은 인공신경망 모델을 포함하고, 상기 인공신경망 모델은 제1 층, 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층(Function Layer)과 풀링 층(Pooling Layer)을 반복적으로 포함하는 제1 하위 신경망, 및 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함한다.
일 실시예로서, 상기 프로세서는 제1 코어 및 제2 코어를 포함하는 멀티 코어 프로세서이고, 상기 제1 하위 신경망의 연산은 상기 제1 코어에 의해, 상기 제2 하위 신경망의 연산은 상기 제2 코어에 의해, 각각 병렬 수행될 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 실시예들에 따른 데이터 분석 방법을 실행하기 위한 컴퓨터 프로그램은 인공신경망 모델을 포함하고, 상기 인공신경망 모델은 제1 층, 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층(Function Layer)과 풀링 층(Pooling Layer)을 반복적으로 포함하는 제1 하위 신경망, 및 상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함하고, 상기 컴퓨터 프로그램은 컴퓨터로 판독가능한 기록매체에 저장된다.
상술한 본 발명의 다양한 실시예들에 따르면, 필터 크기가 상이한 여러 개의 독립적인 하위 신경망을 통해 다양한 유형과 크기의 객체 정보들을 효과적으로 잘 인코딩할 수 있게 된다.
또한, 기존의 CNN 모델보다 하위 신경망의 입력 채널 및 출력 채널이 감소하고 필요한 모델 파라미터의 수 및 부동 소수점 연산량이 감소하여 계산 효율성이 향상되며 overfitting의 문제 또한 완화시킬 수 있다.
또한, 복수의 하위 신경망 각각이 독립적으로 동작하므로, 각 하위 신경망의 연산을 상호 독립적인 개별 컴퓨팅 장치들을 통해 처리하는 것이 용이하여, 인공신경망 모델의 병렬 처리를 손쉽게 구현할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 본 발명의 실시예들로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 인공신경망 모델을 이용한 데이터 분석 방법을 나타내는 순서도이다.
도 2는 종래의 컨볼루션 신경망 모델의 한 종류인 GoogleNet의 신경망 아키텍처를 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 인공신경망 모델의 아키텍처를 예시적으로 설명하기 위한 블록도이다.
도 4는 각 하위 신경망에서 서로 상이한 크기로 필터로 특징을 추출하는 것의 기술적 의미를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 인공신경망 모델의 다양한 구현 형태를 예시적으로 나타내는 도면이다.
도 6은 도 5에 도시된 제1 하위 신경망 모델(10)의 구체적인 구현 형태를 예시적으로 나타내는 도면이다.
도 7은 도 6의 컨볼루션 층(11)이 임의의 함수 층(11)으로 대체된 실시예가 도시하는 도면이다.
도 8은 본 발명의 다른 실시예에 따른 인공신경망 모델의 구현 형태를 예시적으로 나타내는 도면이다.
도 9 내지 도 11은 도 8의 실시예의 여러가지 변형 실시예들을 나타내는 도면이다.
도 12는 본 발명에 따른 인공신경망 모델의 개선된 성능을 특징들의 수를 기준으로 나타내는 히스토그램이다.
도 13은 본 발명에 따른 인공신경망 모델의 개선된 성능을 가중치들의 수를 기준으로 나타내는 히스토그램이다.
도 14는 본 발명에 따른 인공신경망 모델의 개선된 성능을 MAC 연산의 수를 기준으로 나타내는 히스토그램이다.
도 15는 본 발명의 다양한 실시예들이 구현될 수 있는 컴퓨팅 장치의 예시적인 하드웨어 구성을 나타내는 도면이다.
도 16은 본 발명의 일 실시예 따른 인공신경망 모델의 병렬 처리 방법을 설명하기 위한 도면이다.
도 17 내지 도 19는 도 15에 도시된 컴퓨팅 장치의 다양한 변형 실시예를 설명하기 위한 도면들이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 인공신경망 모델을 이용한 데이터 분석 방법을 나타내는 순서도이다. 도 1의 데이터 분석 방법은 도 15에 도시된 컴퓨팅 장치(500)로 구현가능한 데이터 분석 장치에 의해 수행된다.
S100 단계에서, 데이터 분석 장치는 분석을 수행할 분석 대상 데이터를 획득한다. 이때, 분석 대상 데이터는 영상 데이터로서 카메라를 통한 촬영 또는 통신 네트워크를 통한 데이터 전송을 통해 획득될 수 있다.
S200 단계에서, 데이터 분석 장치는 획득한 분석 대상 데이터를 인공신경망 모델을 통해 분석하여 분석 대상 데이터의 특징을 출력한다. 이때 이용되는 인공신경망 모델은 본 발명이 제안하는 개선된 인공신경망 모델로서, 그것의 구체적인 구성 및 아키텍처 등에 대해서는 이하에서 각 도면을 참조하여 상세히 설명하기로 한다.
한편, 본 발명에 따른 인공신경망 모델을 본격적으로 설명하기에 앞서, 그에 대한 이해를 돕기 위해 기존의 인공신경망 모델에 대한 설명을 도 2를 참조하여 설명하고자 한다.
도 2는 종래의 컨볼루션 신경망 모델의 한 종류인 GoogleNet의 신경망 아키텍처를 나타내는 도면이다.
컨볼루션 신경망은 영상 분석 분야에서 특히 탁월한 성능을 발휘하는 인공신경망으로, 일반적으로 컨볼루션 연산을 통해 데이터로부터 특징을 추출하는 컨볼루션 층(Convolution Layer)과 차원을 축소하는 풀링 층(Pooling Layer)을 포함한다.
컨볼루션 층은 입력 데이터에 필터(또는 커널)를 적용하여 입력 데이터로부터 특징을 추출하는 층으로, 적용되는 필터의 크기에 따라 특징을 추출하는 고유한 특성이 달라진다. 가령, 크기가 상대적으로 큰 필터를 사용하는 경우 그만큼 크기가 큰 객체의 특징을 잘 추출할 수 있으며, 반대로 상대적으로 작은 필터를 사용하는 경우 크기가 작은 객체의 특징을 잘 추출하게 된다. 컨볼루션 층의 그 밖의 기능 및 기술적 구성 등은 당해 기술 분야에 널리 알려져 있으므로, 설명의 간명화를 위해 여기서는 그에 대한 추가적인 설명을 생략한다.
풀링 층은 주변의 여러 픽셀을 묶어 하나의 대표 픽셀로 바꾸는 연산을 수행하며, 그에 따라 데이터의 차원을 축소하는 기능을 한다. 풀링 층을 이용하면 데이터의 차원을 축소함으로써 필요한 연산량을 감소시킬 수 있고, 데이터의 가장 특징적인 부분을 선별적으로 추출하는 특징 선별 효과를 기대할 수 있다. 풀링의 종류에는 최대값 풀링(Max Pooling), 평균값 풀링(Average Pooling), 또는 최소값 풀링(Min Pooling) 등이 있다. 풀링 층의 그 밖의 기능 및 그 기술적 구성 등은 당해 기술 분야에 널리 알려져 있으므로, 설명의 간명화를 위해 여기서는 그에 대한 추가적인 설명을 생략한다.
컨볼루션 신경망은 일반적으로 네트워크(또는, 망)의 깊이가 깊어질수록 그 성능이 향상된다. 그러나, 네트워크가 깊어짐에 따라, 적절한 하이퍼-파라미터(hyper-parameter)의 설정이나 초기값 설정이 없다면 overfitting 문제에 빠질 가능성이 증가하게 되며 연산량 또한 급증하여 아주 성능 좋은 시스템을 사용하지 않는 한 학습에 너무 많은 시간이 소요되어 제대로 활용하기 어려운 문제점이 생길 수 있다.
이러한 문제점을 개선하기 위해 제안된 모델의 하나로서 GoogleNet이 있다. GoogleNet은 인셉션(Inception)이라는 개념을 통해 연산량을 증가시키지 않으면서 네트워크의 깊이와 넓이를 증가시킬 수 있는 구조를 제안하였다.
도 2에는 GoogleNet의 개략적인 아키텍처가 도시되어 있다. 도 2의 상단부를 참조하면, 입력층(1)과 전처리 층(2), 그리고 복수의 인셉션 층(3, 4, 5)이 순차적으로 연결된 것을 볼 수 있다. 도 2의 하단부를 참조하면, 개별 인셉션 층(3)의 예시적인 형태가 도시된다. GoogleNet은 인셉션 층(3)에 있는 다양한 크기의 컨볼루션 층(3a, 3b, 3c)을 통해 다양한 스케일의 특징들을 효과적으로 추출하는 것이 가능해졌으며, 컨볼루션 층(3b, 3c) 및 풀링 층(3e)의 전후에 위치한 1x1 컨볼루션 층(3f, 3g, 3h)을 통해 필요 연산량을 크게 경감시킬 수 있게 되었다.
그러나, GoogleNet은 컨볼루션 층(3a, 3b, 3c) 및 풀링 층(3e)을 통해 추출한 특징들을 연결층(Concat)을 통해 연결한 후 다음 인셉션 층(4)으로 전달한다. 그에 따라, 다음 인셉션 층(4)에서는 다시 입력 데이터의 특징들을 다양한 크기의 컨볼루션 필터들로 분화하여 추출하고 이를 다시 연결하는 작업을 반복 수행해야 한다.
입력 데이터의 특징들에 대한 이러한 분화 및 연결의 반복 동작은 다수의 연속적인 층들에 의해 인코딩 되는 긴-깊이의 특징들을 표현하는 것을 어렵게 하였으며, 부동 소수점 연산 및 메모리 저장 공간의 측면에서 불필요한 연산 비용을 증가시키는 문제를 안고 있었다.
도 3은 본 발명의 일 실시예에 따른 인공신경망 모델의 아키텍처를 예시적으로 설명하기 위한 블록도이다. 도 3의 인공신경망 모델(100)에서는 도 2의 종래 CNN 모델(예를 들어, GoogleNet)이 가지고 있던 반복적인 분화 및 연결 동작을 제거하는 구조를 제안한다. 이하 도면을 참조하여 설명한다.
본 발명에 따른 인공신경망 모델(100)은 서로 독립적이고 병렬적으로 동작하는 복수의 하위 신경망(10, 20, 30)을 포함한다. 각 하위 신경망(10, 20, 30)은 서로 다른 크기와 유형의 특징들을 잘 추출할 수 있도록 서로 다른 필터 크기로 특화될 수 있다. 예를 들어, 제1 하위 신경망(10)은 3x3 크기의 필터로 컨볼루션 연산을 수행하는 컨볼루션 층(11)과 풀링 층(12)을 반복적으로 포함(13, 14)하는 반면, 제2 하위 신경망(20)은 5x5 크기의 필터로 컨볼루션 연산을 수행하는 컨볼루션 층(21)과 풀링 층(22)을 반복적으로 포함(23, 24)하고, 제k 하위 신경망(30)은 7x7 크기의 필터로 컨볼루션 연산을 수행하는 컨볼루션 층(31)과 풀링 층(32)을 반복적으로 포함(33, 34)할 수 있다.
이는 각 하위 신경망(10, 20, 30)이 서로 다른 유형의 특징을 인코딩하도록 하면서, 동시에 연속적인 층들에 의해 인코딩 되는 긴-깊이의 특징들까지 잘 추출할 수 있도록 해준다. 특히, 각 하위 신경망(10, 20, 30)은 입력층(40)으로부터 입력 데이터를 입력 받은 후 독립적으로 순차적인 연산을 수행하고, 최종 단계에서만 연결층(50)에 의해 추출된 특징들을 연결하므로, 특징들의 불필요한 분화 및 연결 동작을 제거하여 필요한 부동 소수점 연산의 개수 및 메모리 요구량을 현저히 감소시켜 전체적인 연산 비용을 크게 절감할 수 있다.
도 4는 각 하위 신경망에서 서로 상이한 크기로 필터로 특징을 추출하는 것의 기술적 의미를 설명하기 위한 도면이다. 하나의 데이터를 상이한 크기의 필터들로 다중 분석하는 것은 특히 자율주행 분야에서 주변의 상황을 분석할 때 유용할 수 있다.
도 4를 참조하면, 주변의 상황을 촬영한 이미지로부터 각 객체의 특징을 분석하는 예가 도시된다. 이미지로부터 객체를 추출할 때, 소정의 크기의 필터(W, 또는 윈도우)를 정해진 방향으로 시프팅(shifting)하면서 필터 내에 포착된 부분에 대해 컨볼루션 연산을 수행하여 그 특징을 추출해 내고, 추출된 특징을 기반으로 객체를 구별하게 된다. 이때, 필터(W)의 크기에 따라 잘 추출되는 특징의 크기가 달라지는 데, 가령 필터(W)의 크기가 상대적으로 작은 경우에는(예를 들어, 3x3) 작은 크기의 특징이 잘 추출되므로 크기가 작은 객체(6)가 더욱 잘 탐지되고, 필터(W)의 크기가 상대적으로 큰 경우에는(예를 들어, 7x7) 반대로 크기가 큰 객체(8)가 잘 탐지된다. 유사하게, 중간 크기의 필터(W)라면 중간 크기의 객체(7)가 잘 탐지될 것이다.
이처럼, 컨볼루션 연산에 적용되는 필터의 크기에 따라, 최적화된 대상 객체의 크기가 달라지므로, 영상분석을 수행할 때는 분석 대상 데이터에 대해 서로 다른 크기의 필터로 다중 분석을 수행하는 것이 바람직하다.
도 5는 본 발명의 일 실시예에 따른 인공신경망 모델의 다양한 구현 형태를 예시적으로 나타내는 도면이다. 도 5에서는 본 발명에 따른 인공신경망 모델의 구현 예로서 두 가지 실시예를 제시한다.
도 5의 (a)에는 본 발명에 따른 인공신경망 모델의 제1 실시예가 도시된다. 제1 실시예에서, 인공신경망 모델은 복수의 하위 신경망(10, 20, 30)을 포함한다. 각각의 하위 신경망(10, 20, 30)은 입력 층(40)으로부터 입력 데이터를 입력 받으며, 서로 다른 크기의 필터를 이용하여 독립적으로 입력 데이터로부터 특징을 추출한다. 추출한 특징들은 출력 데이터로서 연결 층(50)에 제공되고, 연결 층(50)은 제공된 출력 데이터들을 연결하여 최종적인 특징들을 출력한다.
한편, 도 5의 (b)에는 본 발명에 따른 인공신경망 모델의 제2 실시예가 도시된다. 제2 실시예 또한, 제1 실시예와 동일하게 서로 다른 크기의 필터로 독립적인 연산을 수행하는 복수의 하위 신경망(10, 20, 30)을 포함한다. 다만, 제2 실시예는, 각 하위 신경망(10, 20, 30)은 입력 층(40)으로부터 입력 데이터를 입력 받는 것이 아니라 전처리 층, 예를 들어 전처리 층의 풀링 층(60)으로부터 입력 데이터를 입력 받는 점이 제1 실시예와 다르다.
전처리 층은 일반적인 CNN 모델의 컨볼루션 층 및 풀링 층을 포함하는 층으로, 입력 데이터로부터 서로 다른 크기의 특징들을 분화시키는 것은 얕은 층에서는 학습 효율이 떨어지는 것으로 알려져 있다. 따라서, 제2 실시예는, 일반적인 CNN 모델과 동일하게 구성된 전처리 층으로 초기 학습을 수행하여 일정 수준의 성능을 확보하고, 그 이후 서로 다른 필터 크기의 하위 신경망(10, 20, 30)을 적용하여 학습을 수행한다. 한편, 하위 신공신경망(10, 20, 30)이 출력하는 데이터를 연결 층(50)을 통해 연결하여 최종적으로 특징들을 출력하는 것은 제2 실시예도 동일하다.
도 6은 도 5에 도시된 제1 하위 신경망 모델(10)의 구체적인 구현 형태를 예시적으로 나타내는 도면이다. 도 6에서는 예시적으로 제1 하위 신경망(10)에 대해서만 도시하고 있으나, 다른 하위 신경망(20, 30)에도 동일한 방식의 구조가 적용될 수 있음은 자명하다.
도 6을 참조하면, 제1 하위 신경망(10)은 제1 크기(여기서는 3x3)의 필터를 이용하여 컨볼루션 연산을 수행하는 컨볼루션 층(11)과 풀링 층(12)의 사이에 1x1 컨볼루션 층(13)을 더 포함한다. 1x1 컨볼루션 층(13)은 특징 맵(Feature Map)의 차원을 줄여주거나 늘려주어 깊은 네트워크 구조에도 적은 파라미터 수를 갖게 해주며, 여러 개의 특징 맵으로부터 비슷한 성질을 갖는 것들을 묶어주는 역할도 수행한다.
이러한 구조는 도 6의 (a)에서와 같이 풀링 층(12)이 컨볼루션 층(11)의 다운스트림(Downstream)에 있는 경우는 물론, 도 6의 (b)에서와 같이 풀링 층(12)이 컨볼루션 층(11)의 업스트림(Upstream)에 있는 경우에도 적용가능하다.
일 실시예로서, 제1 하위 신경망(10)은 도 6에 도시된 바와 같이, 컨볼루션 층(11)의 전위 또는 후위에 추가적인 1x1 컨볼루션 층을 더 포함할 수 있다.
한편, 여기서는 제1 하위 신경망(10)에 컨볼루션 층(11)과 풀링 층(12)이 포함된 경우를 예시하였지만, 이때 컨볼루션 층(11)은 다른 함수 층으로 대체될 수도 있다. 이에 대한 예가 도 7에 도시된다.
도 7을 참조하면, 도 6의 제1 크기의 필터를 이용하여 컨볼루션 연산을 수행하는 컨볼루션 층(11)이 임의의 함수 층(11)으로 대체된 실시예가 도시된다. 도 7의 (a)에는 풀링 층(12)이 함수 층(11)의 다운스트림에 있는 경우를 도시하고, 도 7의 (b)에는 풀링 층(12)이 함수 층(11)의 업스트림에 있는 경우를 도시한다.
이때, 함수 층(11)은 앞서 도 6의 예에서와 같이 특정 크기(예를 들어, 3x3)의 필터로 컨볼루션 연산을 수행하는 컨볼루션 층일 수 있으나, 그와는 달리 함수 층(11)은 풀링 층 또는 다른 연산을 수행하는 그 밖의 함수 층으로 구현될 수도 있다. 가령, 함수 층(11)은 특정 크기(예를 들어, 3x3)의 필터로 풀링 연산을 수행하는 풀링 층으로 구성될 수도 있고, 함수 층(11)은 컨볼루션 층 또는 풀링 층이 아닌 그 외의 다른 연산(예를 들어, 압축 연산 또는 샘플링 연산)을 수행하는 다른 함수 층으로 구성될 수도 있다.
도 8은 본 발명의 다른 실시예에 따른 인공신경망 모델의 구현 형태를 예시적으로 나타내는 도면이다. 도 8의 실시예에서는, 서로 다른 크기의 필터로 연산을 수행하는 인공신경망들이 서로 직렬 연결되는 실시예가 도시된다.
도 8을 참조하면, 인공신경망 모델의 전위에 위치한 복수의 하위 신경망(10, 20, 30) 및 인공신경망 모델의 후위에 위치한 복수의 하위 신경망(60, 70, 80)이 도시된다. 전위의 하위 신경망(10, 20, 30)은 서로 독립적으로 연산하며, 후위의 하위 신경망(60, 70, 80) 또한 서로 독립적으로 연산한다. 다만, 전위의 하위 신경망(10, 20, 30)과 후위의 하위 신경망(60, 70, 80) 간에는 선후 관계가 있으며, 구체적으로 후위의 하위 신경망(60, 70, 80)은 전위의 하위 신경망(10, 20, 30)의 출력 데이터를 자신의 입력 데이터로서 입력 받는다.
이때, 출력 데이터를 제공하는 전위의 하위 신경망과 상기 출력 데이터를 입력받는 후위의 하위 신경망은 그 필터 크기가 서로 상이할 수 있다.
예를 들어, 3x3 크기의 필터로 연산을 수행하는 제1 하위 신경망(10)으로부터 출력되는 데이터는 상이한 크기의 필터(여기서는 bxb)로 연산을 수행하는 제4 하위 신경망(70, 도 8에서는 제n2 하위 신경망으로 표기)으로 입력될 수 있다. 유사하게, 5x5 크기의 필터로 연산을 수행하는 제2 하위 신경망(20)으로부터 출력되는 데이터는 상이한 크기의 필터(여기서는 axa)로 연산을 수행하는 제3 하위 신경망(60, 도 8에서는 제n1 하위 신경망으로 표기)으로 입력될 수 있다. 즉, 입력 층(40)부터 연결 층(50)까지의 일련의 연산을 복수의 부분으로 나누고, 각각을 서로 다른 크기의 필터를 갖는 하위 신경망들을 통해 처리함으로써, 중간에 필터를 스위칭하는 효과를 기대하는 것이다. 이를 통해 더욱 다양하고 풍부한 특징들을 추출할 수 있게 된다.
한편, 후위의 각 하위 신경망(60, 70, 80) 또한 제1 하위 신경망(10)과 유사하게 앞서 도 6 내지 도 7에서 설명된 다양한 구현 형태 중 어느 한 형태로 구현될 수 있다.
한편, 도면에는 표시되지 않았지만, 본 실시예에 대해서도 도 4의 (b)와 같이 하위 신경망(10, 20, 30)들의 전단에 전처리 층을 두는 변형 실시예 역시 가능하다.
도 9 내지 도 11은 도 8의 실시예의 여러가지 변형 실시예들을 나타낸다. 도 9 내지 도 11은 도 8의 실시예에서 전위의 하위 신경망들(10, 20, 30)과 후위의 하위 신경망(60, 70, 80)들이 반드시 1: 1 매칭되는 것은 아님을 보여준다.
첨부된 도면을 참조하여 설명하면, 도 9에서는 전위에 위치한 복수의 하위 신경망(10, 20, ...)의 출력 데이터들이 후위에 위치한 하나의 하위 신경망(60)에 입력 데이터로 제공되는 K : 1 매칭 관계를 도시한다. 반대로 도 10에서는 전위에 위치한 하나의 하위 신경망(10)의 출력 데이터가 후위에 위치한 복수의 하위 신경망(60, 70, ...)에 입력 데이터로 제공되는 1 : K 매칭 관계를 도시한다. 그리고, 도 11에서는 앞서의 예들이 결합된 형태로서, 전위에 위치한 하나의 하위 신경망(10)의 출력 데이터가 후위에 위치한 복수의 하위 신경망(60, 70, ...)에 입력 데이터로 제공되고, 후위에 위치한 하나의 하위 신경망(60)이 전위에 위치한 복수의 하위 신경망(10, 20, ...)의 출력 데이터를 입력 데이터로서 제공받는 K : N 매칭 관계를 도시한다. (이상에서, K 또는 N은 임의의 자연수)
이처럼, 전위의 하위 신경망들(10, 20, 30)과 후위의 하위 신경망(60, 70, 80)은 다양한 매칭 관계를 형성할 수 있다.
도 12 내지 도 14는 본 발명에 따른 인공신경망 모델의 개선된 성능을 보여주기 위한 히스토그램들이다. 도 12 내지 도 14에서는 기존 CNN의 대표적인 모델인 GoogleNet과 도 5에서 설명된 본 발명의 제1 실시예 및 제 2 실시예의 성능 지표를 비교한 결과가 도시된다.
그 중, 도 12에서는 데이터 표현 기능을 나타내는 지표로서 추출되는 특징들의 수가 도시되어 있다. 본 발명의 제1 실시예의 경우 기존 GoogleNet 대비 50% 향상된 성능을 보이고 있으며, 본 발명의 제2 실시예의 경우는 GoogleNet에는 다소 못 미치지만 여전히 크게 뒤지지 않는 성능을 보여주고 있음을 알 수 있다.
도 13에서는, 메모리 요구량을 나타내는 지표로서 가중치(또는, 파라미터)의 개수가 도시되어 있다. GoogleNet의 경우 약 3백50만 개의 매우 많은 가중치의 개수가 필요하지만, 본 발명의 제1 실시예와 제2 실시예는 각각 약 30만 개와 약 40만 개의 가중치만을 필요로 하여, GoogleNet과 비교하여 1/10 수준으로 메모리 요구량이 감소된 것을 확인할 수 있다.
마지막으로 도 14에서는, 필요 연산량을 나타내는 지표로서 MAC 연산의 개수가 도시되어 있다. MAC 연산은 부동 소수점 연산을 나타내는 것으로, GoogleNet이 약 135억 개의 MAC 연산을 필요로 하는 데 반해, 본 발명의 제1 실시예와 제2 실시예는 각각 약 30억 개와 약 55억 개로 필요 MAC 연산의 개수가 약 1/4 및 1/3로 각각 감소하였음을 알 수 있다.
이처럼, 본 발명에 따른 인공신경망은 기존 CNN 모델(예를 들어, GoogleNet) 대비 데이터 표현 기능은 약화되지 않으면서도, 가중치(또는, 파라미터) 및 필요 연산량의 개수는 현저히 감소되어 연산의 효율성이 훨씬 뛰어나며 시스템 성능이 좋지 않은 환경에도 광범위하게 배포할 수 있는 장점을 갖는다.
이하에서는, 도 15를 참조하여 본 발명의 다양한 실시예에서 설명된 장치를 구현할 수 있는 예시적인 컴퓨팅 장치(500)에 대하여 설명하도록 한다.
도 15는 컴퓨팅 장치(500)를 나타내는 예시적인 하드웨어 구성도이다.
도 15에 도시된 바와 같이, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510), 버스(550), 통신 인터페이스(570), 프로세서(510)에 의하여 수행되는 컴퓨터 프로그램(591)을 로드(load)하는 메모리(530)와, 컴퓨터 프로그램(591)를 저장하는 스토리지(590)를 포함할 수 있다. 다만, 도 15에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 15에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(510)는 컴퓨팅 장치(500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(510)는 본 발명의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(500)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(530)는 본 발명의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(590)로부터 하나 이상의 프로그램(591)을 로드(load) 할 수 있다. 메모리(530)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
버스(550)는 컴퓨팅 장치(500)의 구성 요소 간 통신 기능을 제공한다. 버스(550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(570)는 컴퓨팅 장치(500)의 유무선 인터넷 통신을 지원한다. 통신 인터페이스(570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(570)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(590)는 하나 이상의 컴퓨터 프로그램(591)을 비임시적으로 저장할 수 있다. 스토리지(590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(591)은 본 발명의 다양한 실시예들에 따른 인공신경망 모델을 포함한다. 컴퓨터 프로그램(591)은 본 발명의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들을 더 포함할 수 있다. 컴퓨터 프로그램(591)이 메모리(530)에 로드 되면, 프로세서(510)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 발명의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
도 16은 본 발명의 일 실시예 따른 인공신경망 모델의 병렬 처리 방법을 설명하기 위한 도면이다. 도 16을 참조하면, 프로세서(510)는 멀티 코어 프로세서로서 서로 독립적으로 동작 가능한 복수의 코어(511, 512, 513)를 포함한다. 도 16의 프로세서(510) 및 버스(550)는 도 15에 도시된 프로세서(510) 및 버스(550)일 수 있다.
도 16에서 프로세서(510)는 버스(550)를 통해 본 발명에 따른 인공신경망의 연산 요청을 수신한다. 이때, 인공신경망(100)은 서로 독립적으로 연산하는 복수의 하위 신경망(10, 20, 30)으로 구성되어 있으므로, 각 하위 신경망(10, 20, 30)의 연산 요청을 서로 다른 코어(511, 512, 513)에 할당하여 각 하위 신경망(10, 20, 30)의 연산이 각 코어(511, 512, 513)에서 병렬 수행되도록 할 수 있다.
예를 들어, 프로세서(510)는 제1 코어(511)를 통해 제1 하위 신경망(10)의 연산을, 제2 코어(512)를 통해 제2 하위 신경망(20)의 연산을, 제n 코어(513)를 통해 제n 하위 신경망(30)의 연산을 서로 독립적으로 병렬 처리한 후 그 결과를 연결하여 최종적인 결과(예를 들어, 추출된 특징들)를 출력할 수 있다.
이는 본 발명에 따른 인공신경망(100)이 입력 층(40)부터 최말단의 연결층(50)에 이르기까지 서로 간섭하지 않는 독립적인 하위 신경망(10, 20, 30)들에 의해 구동되기 때문에 가능한 것이며, 이를 통해, 인공신경망(100)은 입력 층(40) 이후의 연산을 복수의 코어(511, 512, 513)를 통해 손쉽게 병렬 처리할 수 있게 된다.
도 17은 도 15의 변형 실시예를 도시한다. 도 17의 컴퓨팅 장치(600)는 도 15의 컴퓨팅 장치(500)와 대부분 그 구성 및 특징이 동일하며, 다만 프로세스(610)와 메모리(630)를 연결하는 전용의 버스(620)가 구비된 것이 상이하다.
범용 컴퓨팅 장치와 달리 특정 목적을 위해 설계된 전용 컴퓨터 장치에서는 그 목적을 더욱 효율적으로 수행하기 위해 여러가지 기술 수단을 부가하는 것을 고려할 수 있으며, 본 발명에서는 전체적인 연산 처리 속도를 더욱 높이기 위해 인공신경망 연산을 위한 데이터들이 로드된 메모리(630)를 전용 버스(620)를 통해 프로세서(610)와 다이렉트 연결하는 방법을 제안한다. 이러한 방법을 통해 프로세서(610)는 필요한 데이터를 메모리(630)로부터 더욱 빨리 읽어들일 수 있고, 그에 따라 요구되는 작업을 더욱 빨리 처리할 수 있다.
일 실시예로서, 전용 버스(620)는 별도의 데이터 라인(640)을 통해 버스(650)와 연결될 수 있다.
한편, 컴퓨팅 장치(600)에서 상기 전용 버스(620)와 관련된 부분을 제외한 나머지 부분, 즉, 프로세서(610), 메모리(630), 버스(650), 통신 인터페이스(670), 스토리지(690) 및 컴퓨터 프로그램(691)의 일반적인 구성 및 그 기능은 앞서 도 15에서 설명한 것과 그 실질적인 내용이 같으므로 설명의 중복을 피하기 위해 여기서는 그에 대한 설명을 생략한다.
도 18은 도 17의 컴퓨팅 장치(600)의 구성에 있어, 인공신경망(100) 연산의 병렬 처리를 더욱 효율적으로 처리하는 실시예를 도시한다. 도 18을 참조하면, 메모리(630)는 복수의 섹션(631, 632, 633)으로 구분되고 각 섹션은 개별 하위 신경망의 연산을 처리하기 위한 데이터를 각각 구분하여 저장한다.
그리고, 프로세서(610)는 멀티 코어 프로세서로서 복수의 코어(611, 612, 613)를 포함하며, 각 코어는 대응되는 각 하위 신경망의 연산을 전용 처리한다. 예를 들어, 제1 코어(611)는 제1 하위 신경망 연산 요청을 받아 이를 처리하며 제1 하위 신경망의 연산에 최적화된 형태로 설계될 수 있다(예를 들어, 3x3 컨볼루션 연산을 가장 효과적으로 수행하도록 설계될 수 있다). 유사하게, 제2 코어(612) 및 제k 코어(613)는 각각 제2 하위 신경망 연산 요청 및 제k 하위 신경망 연산 요청을 받아 이를 처리하며, 각 하위 신경망의 연산에 최적화된 형태로 설계될 수 있다.
이때, 메모리(630)의 각 섹션과 프로세서(610)의 각 코어를 연결하는 데이터 라인(621, 622, 623)은 도 17에서 설명한 전용 버스(620)의 형태로 구현될 수 있다.
도 19는 도 18의 다른 변형 실시예를 도시한다. 도 19의 실시예는 도 18의 실시예와 대부분 실질적으로 동일하며, 다만 메모리(630)가 복수의 섹션으로 구성된 단일 메모리가 아니라, 각 섹션의 개별 메모리(631, 632, 633)로 구성된 메모리 어레이인 것이 상이하다. 이는 각 섹션을 개별 메모리(631, 632, 633)로 구현함으로써 각 메모리(631, 632, 633)가 개별 입출력 인터페이스를 통해 각 코어(611, 612, 613)들과 데이터 통신을 하도록 하기 위함이다. 가령, 도 18의 실시예에서와 같이 하나의 메모리에 복수의 섹션을 구성하면, 각 코어와의 데이터 통신이 하나의 입출력 인터페이스를 통해 이루어지므로, 그 만큼 각 섹션에 동시에 할당할 수 있는 대역폭(Bandwidth)은 작아지게 된다. 따라서, 도 19에서는 각 섹션을 개별 메모리(631, 632, 633)로 구현함으로써, 각 하위 신경망의 연산에 필요한 충분한 대역폭을 제공하여 더 빠른 연산 처리를 도모하는 것이다.
지금까지 도 1 내지 도 19를 참조하여 설명된 본 발명의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (15)

  1. 인공신경망 모델을 이용한 데이터 분석 방법에 있어서,
    분석 대상 데이터를 획득하는 단계; 및
    상기 분석 대상 데이터를 인공신경망 모델을 통해 분석하여 상기 분석 대상 데이터의 특징을 출력하는 단계를 포함하고,
    상기 인공신경망 모델은,
    제1 층;
    상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층 (Function Layer), 풀링 층(Pooling Layer) 및 상기 제1 함수 층과 상기 풀링 층 사이에 위치하는 제2 함수 층을 포함하는 제1 하위 신경망; 및
    상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함하고,
    상기 분석 대상 데이터의 특징을 출력하는 단계는,
    상기 분석 대상 데이터를 상기 제1 층에 입력하는 단계;
    상기 제1 하위 신경망을 이용하여 상기 분석 대상 데이터의 제1 특징을 획득하는 단계 - 상기 분석 대상 데이터에 기초하여 발생한 제1 층의 출력 데이터가 상기 제1 하위 신경망으로 입력되고, 상기 제1 하위 신경망에서의 연산을 통해서 상기 분석 대상 데이터의 제1 특징이 출력됨 - ;
    상기 제2 하위 신경망을 이용하여 상기 분석 대상 데이터의 제2 특징을 획득하는 단계 - 상기 분석 대상 데이터에 기초하여 발생한 제1 층의 출력 데이터가 상기 제2 하위 신경망으로 입력되고, 상기 제2 하위 신경망에서의 연산을 통해서 상기 분석 대상 데이터의 상기 제2 특징이 출력됨 - ; 및
    상기 획득한 제1 특징과 제2 특징을 기초로 상기 분석 대상 데이터의 특징을 출력하는 단계를 포함하는,
    데이터 분석 방법.
  2. 제1 항에 있어서,
    상기 제2 하위 신경망은,
    상기 제1 함수 층과 상이한 상기 제2 함수 층 및 풀링 층(Pooling Layer)을 반복적으로 포함하는,
    데이터 분석 방법.
  3. 제1 항에 있어서,
    상기 인공신경망 모델은,
    상기 제1 하위 신경망의 연산 결과와 상기 제2 하위 신경망의 연산 결과를 연결하는 연결 층(Concatenation Layer)을 더 포함하는,
    데이터 분석 방법.
  4. 제1 항에 있어서,
    상기 제1 층은 컨볼루션 층 및 풀링 층을 포함하는 전처리 층(Pre-Process Layer)인,
    데이터 분석 방법.
  5. 제1 항에 있어서,
    상기 제1 하위 신경망은,
    상기 제1 함수 층과 상기 풀링 층(Pooling Layer) 사이에 다른 함수 층을 더 포함하는,
    데이터 분석 방법.
  6. 제5 항에 있어서,
    상기 다른 함수 층은
    1x1 크기의 필터로 연산을 수행하는 컨볼루션 층인,
    데이터 분석 방법.
  7. 제1 항에 있어서,
    상기 제1 함수 층은
    제1 크기의 필터로 연산을 수행하는 컨볼루션 층인,
    데이터 분석 방법.
  8. 제1 항에 있어서,
    상기 제1 함수 층은
    소정의 크기의 필터로 풀링 연산을 수행하는 풀링 층인,
    데이터 분석 방법.
  9. 제1 항에 있어서,
    상기 제1 함수 층은
    컨볼루션 층 또는 풀링 층이 아닌 사전 정의된 다른 연산을 수행하는 함수 층인,
    데이터 분석 방법.
  10. 제1 항에 있어서,
    상기 인공신경망 모델은 컨볼루션 인공신경망(Convolution Neural Network, CNN) 모델인,
    데이터 분석 방법.
  11. 제1 항에 있어서,
    상기 인공신경망 모델은,
    상기 제2 하위 신경망의 출력 데이터를 입력 데이터로서 입력 받고, 제3 함수 층과 풀링 층을 반복적으로 포함하는 제3 하위 신경망; 및
    상기 제1 하위 신경망의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제3 하위 신경망의 연산 결과에 영향받지 않고 상기 제3 하위 신경망과 상호 독립적으로 동작하는 제4 하위 신경망을 더 포함하는,
    데이터 분석 방법.
  12. 제11 항에 있어서,
    상기 제4 하위 신경망은,
    상기 제3 함수 층과 상이한 제4 함수 층 및 풀링 층(Pooling Layer)을 반복적으로 포함하는,
    데이터 분석 방법.
  13. 프로세서;
    상기 프로세서에 의해 실행되는 컴퓨터 프로그램을 로드(load)하는 메모리; 및
    상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되,
    상기 컴퓨터 프로그램은 인공신경망 모델을 포함하고,
    상기 인공신경망 모델은,
    제1 층;
    상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층(Function Layer), 풀링 층(Pooling Layer) 및 상기 제1 함수 층과 상기 풀링 층 사이에 위치하는 제2 함수 층을 반복적으로 포함하는 제1 하위 신경망; 및
    상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함하고,
    상기 프로그램은,
    분석 대상 데이터를 상기 제1 층에 입력하는 동작;
    상기 제1 하위 신경망을 이용하여 상기 분석 대상 데이터의 제1 특징을 획득하는 동작 - 상기 분석 대상 데이터에 기초하여 발생한 제1 층의 출력 데이터가 상기 제1 하위 신경망으로 입력되고, 상기 제1 하위 신경망에서의 연산을 통해서 상기 분석 대상 데이터의 제1 특징이 출력됨 - ;
    상기 제2 하위 신경망을 이용하여 상기 분석 대상 데이터의 제2 특징을 획득하는 동작 - 상기 분석 대상 데이터에 기초하여 발생한 제1 층의 출력 데이터가 상기 제2 하위 신경망으로 입력되고, 상기 제2 하위 신경망에서의 연산을 통해서 상기 분석 대상 데이터의 상기 제2 특징이 출력됨 - ; 및
    상기 획득한 제1 특징과 제2 특징을 기초로 상기 분석 대상 데이터의 특징을 출력하는 동작을 수행하기 위한 인스트럭션들(instructions)을 포함하는,
    데이터 분석 장치.
  14. 제13 항에 있어서,
    상기 프로세서는 제1 코어 및 제2 코어를 포함하는 멀티 코어 프로세서이고,
    상기 제1 하위 신경망의 연산은 상기 제1 코어에 의해, 상기 제2 하위 신경망의 연산은 상기 제2 코어에 의해, 각각 병렬 수행되는,
    데이터 분석 장치.
  15. 데이터 분석 방법을 실행하기 위한 인공신경망 모델 및 명령어를 포함하고,
    상기 인공신경망 모델은,
    제1 층;
    상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 제1 함수 층(Function Layer), 풀링 층(Pooling Layer) 및 상기 제1 함수 층과 상기 풀링 층 사이에 위치하는 제2 함수 층을 반복적으로 포함하는 제1 하위 신경망; 및
    상기 제1 층의 출력 데이터를 입력 데이터로서 입력 받고, 상기 제1 하위 신경망의 연산 결과에 영향받지 않고 상기 제1 하위 신경망과 상호 독립적으로 동작하는 제2 하위 신경망을 포함하고,
    상기 명령어는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    분석 대상 데이터를 상기 제1 층에 입력하는 단계;
    상기 제1 하위 신경망을 이용하여 상기 분석 대상 데이터의 제1 특징을 획득하는 단계 - 상기 분석 대상 데이터에 기초하여 발생한 제1 층의 출력 데이터가 상기 제1 하위 신경망으로 입력되고, 상기 제1 하위 신경망에서의 연산을 통해서 상기 분석 대상 데이터의 제1 특징이 출력됨 - ;
    상기 제2 하위 신경망을 이용하여 상기 분석 대상 데이터의 제2 특징을 획득하는 단계 - 상기 분석 대상 데이터에 기초하여 발생한 제1 층의 출력 데이터가 상기 제2 하위 신경망으로 입력되고, 상기 제2 하위 신경망에서의 연산을 통해서 상기 분석 대상 데이터의 상기 제2 특징이 출력됨 - ; 및
    상기 획득한 제1 특징과 제2 특징을 기초로 상기 분석 대상 데이터의 특징을 출력하는 단계를 포함하는 동작들을 수행하도록 하는,
    컴퓨터로 판독가능한 기록매체에 저장되는,
    컴퓨터 프로그램.
KR1020200019608A 2020-02-18 2020-02-18 인공신경망 모델을 이용한 데이터 분석 방법 및 장치 KR102426605B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200019608A KR102426605B1 (ko) 2020-02-18 2020-02-18 인공신경망 모델을 이용한 데이터 분석 방법 및 장치
KR1020220091772A KR102522296B1 (ko) 2020-02-18 2022-07-25 인공신경망 모델을 이용한 데이터 분석 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200019608A KR102426605B1 (ko) 2020-02-18 2020-02-18 인공신경망 모델을 이용한 데이터 분석 방법 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220091772A Division KR102522296B1 (ko) 2020-02-18 2022-07-25 인공신경망 모델을 이용한 데이터 분석 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210105092A KR20210105092A (ko) 2021-08-26
KR102426605B1 true KR102426605B1 (ko) 2022-07-27

Family

ID=77465510

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200019608A KR102426605B1 (ko) 2020-02-18 2020-02-18 인공신경망 모델을 이용한 데이터 분석 방법 및 장치
KR1020220091772A KR102522296B1 (ko) 2020-02-18 2022-07-25 인공신경망 모델을 이용한 데이터 분석 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220091772A KR102522296B1 (ko) 2020-02-18 2022-07-25 인공신경망 모델을 이용한 데이터 분석 방법 및 장치

Country Status (1)

Country Link
KR (2) KR102426605B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102373827B1 (ko) * 2021-09-17 2022-03-14 주식회사 에이아이네이션 표준 운용 수준 평가 기반 산업 설비 운용 제어 장치 및 그 동작 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102662206B1 (ko) 2017-10-16 2024-04-30 일루미나, 인코포레이티드 심층 학습 기반 비정상 스플라이싱 검출

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Deep Neural Network-Based Scene Graph Generation for 3D Simulated Indoor Environments*
다중 코어 및 single instruction multiple data 기술을 이용한 심층 신경망 속도 향상*
앙상블 학습 알고리즘을 이용한 컨벌루션 신경망의 분류 성능 분석에 관한 연구*

Also Published As

Publication number Publication date
KR102522296B1 (ko) 2023-04-14
KR20210105092A (ko) 2021-08-26
KR20220110460A (ko) 2022-08-08

Similar Documents

Publication Publication Date Title
KR102419136B1 (ko) 다채널 특징맵을 이용하는 영상 처리 장치 및 방법
US10902318B2 (en) Methods and systems for improved transforms in convolutional neural networks
US10915816B2 (en) System and method of executing neural networks
KR102224510B1 (ko) 데이터 관리를 위한 시스템들 및 방법들
US20180053091A1 (en) System and method for model compression of neural networks for use in embedded platforms
US10282864B1 (en) Method and device for encoding image and testing method and testing device using the same
CN113822209B (zh) 高光谱图像识别方法、装置、电子设备及可读存储介质
CN110659069B (zh) 用于执行神经网络计算的指令调度方法及相应计算系统
US11295205B2 (en) Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization
CN112990427A (zh) 域自适应的神经网络实现的装置和方法
CN112183295A (zh) 行人重识别方法、装置、计算机设备及存储介质
US11144291B1 (en) Loop-oriented neural network compilation
KR20200072307A (ko) 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
CN114386590A (zh) 用于压缩人工神经网络的方法和设备
Singh et al. Falf convnets: Fatuous auxiliary loss based filter-pruning for efficient deep cnns
KR102522296B1 (ko) 인공신경망 모델을 이용한 데이터 분석 방법 및 장치
WO2021198809A1 (en) Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs
KR102082293B1 (ko) 컨볼루션 신경망의 이진화 연산 장치 및 방법
US11410016B2 (en) Selective performance of deterministic computations for neural networks
CN109978017B (zh) 难样本采样方法和系统
US20220067495A1 (en) Intelligent processor, data processing method and storage medium
CN112766397B (zh) 一种分类网络及其实现方法和装置
EP4128065A1 (en) Feature reordering based on similarity for improved memory compression transfers during machine learning jobs
KR20210014561A (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
CN113052303A (zh) 用于控制神经网络电路的数据输入和输出的设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant