KR102027034B1 - 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 - Google Patents

병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 Download PDF

Info

Publication number
KR102027034B1
KR102027034B1 KR1020170158951A KR20170158951A KR102027034B1 KR 102027034 B1 KR102027034 B1 KR 102027034B1 KR 1020170158951 A KR1020170158951 A KR 1020170158951A KR 20170158951 A KR20170158951 A KR 20170158951A KR 102027034 B1 KR102027034 B1 KR 102027034B1
Authority
KR
South Korea
Prior art keywords
tensor
matrices
update
characteristic
core
Prior art date
Application number
KR1020170158951A
Other languages
English (en)
Other versions
KR20190060600A (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 KR1020170158951A priority Critical patent/KR102027034B1/ko
Publication of KR20190060600A publication Critical patent/KR20190060600A/ko
Application granted granted Critical
Publication of KR102027034B1 publication Critical patent/KR102027034B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명의 일 실시예는, 복수 개의 속성들을 갖는 다차원 데이터를 수집하는 통신부; 상기 각각에 속성들에 대하여 한 개씩 대응되며, 상기 각각의 속성들에 상응하는 숨은 특징들에 대한 정보를 포함하는 특성 행렬들을 갱신하고 결정하는 특성 행렬 결정부; 상기 숨은 특징들 간의 관계 정보를 포함하는 한 개의 코어 텐서를 결정하는 코어 텐서 결정부; 및 상기 특성 행렬들을 갱신함에 있어서, 상기 특성 행렬들을 손실 함수를 최소화하도록 갱신하는 갱신 연산들을 분할 단위로 나누고, 병렬 처리를 수행할 복수의 쓰레드들에 대한 리소스 정보를 수집하고, 상기 리소스 정보를 고려하여 상기 쓰레드들에 분할된 갱신 연산들을 분배하여 할당하는 연산 분배부를 포함하는 것을 특징으로 하는, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치를 제공한다.

Description

병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 {APPARATUS FOR SUPPORTING MULTI-DIMENSIONAL DATA ANALYSIS THROUGH PARALLEL PROCESSING AND METHOD FOR THE SAME}
본 발명은 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법에 관한 것으로, 병렬 처리를 통하여 고확장성, 고속 및 고정확도로 다차원 데이터에 상응하는 텐서를 분해함으로써 다차원 데이터의 분석을 지원하는 장치 및 그 방법에 관한 것이다.
최근 빅데이터 분석을 통하여 사용자에게 맞춤형 추천을 제공하거나 트랜드를 분석하는 서비스 등에 대한 분야가 주목을 받고 있다. 이러한 빅 데이터의 구조를 살펴보면, 데이터의 축이 여러 개가 존재하는 다차원 배열의 형태가 많다. 예를 들어, 영화 평점 데이터는 (사용자, 영화, 시간; 평점)의 3차원적 구조를 가질 수 있다. 이러한 다차원적 구조는 수학 물리학에서 텐서(tensor)라고 불리는 모델로 표현되고 분석된다. 즉, 텐서란 1차원 이상의 다차원 배열(multi-dimensional array)을 의미하며, 특히 1차원의 경우 벡터(vector), 2차원의 경우 행렬(matrix)로도 불린다.
다차원의 배열로 구성된 텐서는 각 차원의 데이터가 늘어남에 따라 그 크기가 기하급수적으로 커지게 되며, 텐서의 희소도(sparsity)가 급격히 증가하게 된다. 희소 텐서(sparse tensor)는 텐서의 전체 규모에 비해 실제 포함된 데이터가 적은 텐서를 의미하며, 희소 텐서의 전체 규모가 아닌 희소도에 비례하는 복잡도를 가진 분석 방법을 설계하는 것이 필수적이다. 또한, 규모가 큰 텐서로부터 각 항목 간의 관계, 비어있는 원소의 예측 등을 수행하기 위한 효과적인 분석 방법이 필요하다. 이에 따라, 텐서를 분해하는 여러 기법들이 연구되었다.
기존의 텐서 분해 기법들은 스케일, 속도, 메모리 및 정확도 측면에서 모두 만족스러운 효과를 갖지 못하였다. 예컨대, 스케일, 속도, 메모리에서 우위를 점하는 기법들은 정확도가 높지 않은 문제가 있었으며, 정확도를 높인 기법들은 스케일, 속도, 메모리의 한계가 발생하였다. 예컨대 특정 기법은 비어있는 원소에 대하여는 0으로 예측하여 수집되지 않은 데이터에 대한 예측이 불가능한 문제가 있었다. 특히, 큰 스케일의 텐서에 대하여는 텐서 분해 과정에서의 중간 데이터가 방대하게 발생하여 이른바 중간 데이터 폭발(Intermediate Data Explosion)의 문제가 발생한다. 따라서, 중간 데이터 폭발을 회피하면서 고속, 고확장성 및 고정확도의 텐서 분해 기법이 필요하다.
전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라할 수는 없다.
국내 등록특허공보 제10-1629395호
본 발명의 목적은 병렬 처리를 통하여 다차원 데이터 분석을 지원하는 장치 및 그 방법을 제공하는 것이다.
또한, 본 발명의 목적은 반복되는 연산에 대하여 캐시를 이용하는 다차원 데이터 분석을 지원하는 장치 및 그 방법을 제공하는 것이다.
또한, 본 발명의 목적은 텐서 분해 알고리즘을 적용함에 있어서 코어 텐서의 노이즈를 제거하여 다차원 데이터 분석을 지원하는 장치 및 그 방법을 제공하는 것이다.
본 발명의 일 실시예는, 복수 개의 속성들을 갖는 다차원 데이터를 수집하는 통신부; 상기 각각에 속성들에 대하여 한 개씩 대응되며, 상기 각각의 속성들에 상응하는 숨은 특징들에 대한 정보를 포함하는 특성 행렬들을 갱신하고 결정하는 특성 행렬 결정부; 상기 숨은 특징들 간의 관계 정보를 포함하는 한 개의 코어 텐서를 결정하는 코어 텐서 결정부; 및 상기 특성 행렬들을 갱신함에 있어서, 상기 특성 행렬들을 손실 함수를 최소화하도록 갱신하는 갱신 연산들을 분할 단위로 나누고, 병렬 처리를 수행할 복수의 쓰레드들에 대한 리소스 정보를 수집하고, 상기 리소스 정보를 고려하여 상기 쓰레드들에 분할된 갱신 연산들을 분배하여 할당하는 연산 분배부를 포함하는 것을 특징으로 하는, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치를 제공한다.
이때, 상기 분할 단위는 상기 특성 행렬들에 대한 행 단위이고, 상기 분할된 갱신 연산들은 갱신 대상 행에 상응하는 특성 행렬을 제외한 나머지 특성 행렬들과 상기 코어 텐서를 이용하여, 상기 갱신 대상 행을 상기 손실 함수를 최소화하도록 갱신하는 연산들일 수 있다.
이때, 상기 리소스 정보는 상기 쓰레드들 각각에 상응하는 연산 처리 능력, 현재 할당된 연산량 및 연산 처리 지연도 중 적어도 하나 이상을 포함할 수 있다.
이때, 반복되는 연산을 줄이기 위하여 상기 갱신 연산들에 포함된 연산들 중에서 기설정된 고반복 연산에 대한 연산 결과를 캐시(cache)하고, 상기 특성 행렬들이 갱신될 때 상기 갱신된 특성 행렬들을 이용하여 상기 캐시된 연산 결과를 갱신하는 캐싱 처리부를 더 포함하고, 상기 연산 분배부는 상기 쓰레드들에 상기 고반복 연산들을 분배하고, 상기 쓰레드들에 상기 캐시된 연산 결과를 이용하는 갱신 연산들을 분배할 수 있다.
이때, 상기 코어 텐서의 각 원소들에 상응하는 에러 값들을 계산하고, 상기 에러 값들을 기반으로 상기 코어 텐서의 각 원소들 중에서 제거 대상 원소들을 선정하여 상기 코어 텐서에서 상기 제거 대상 원소들을 제거하는 잡음 제거부를 더 포함할 수 있다.
본 발명에 따르면 다차원 데이터 분석을 지원하는 장치 및 그 방법에 의해, 병렬 처리를 통하여 큰 스케일의 다차원 데이터에 대하여도 고속 및 고정확도로, 각 속성 간의 연관 관계를 나타내는 코어 텐서와 각 속성의 숨은 특징들에 대한 정보를 포함하는 특성 행렬들을 획득할 수 있다.
또한, 본 발명은 병렬 처리를 통하여 다차원 데이터 분석을 지원하는 장치 및 그 방법에 의해, 반복되는 연산은 캐시를 이용함으로써 연산 속도를 더욱 높일 수 있다.
또한, 본 발명은 병렬 처리를 통하여 다차원 데이터 분석을 지원하는 장치 및 그 방법에 의해, 텐서 분해 알고리즘을 적용함에 있어서 코어 텐서의 노이즈를 제거함으로써 연산 속도를 더욱 높일 수 있다.
도 1은 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 시스템의 구성을 나타낸 도면이다.
도 2는 도 1에 도시된 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치의 일 예를 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 텐서 분해 기법을 도식화한 도면이다.
도 4는 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 방법을 나타낸 동작 흐름도이다.
도 5는 도 4에 도시된 특성 행렬들을 갱신하는 단계의 일 예를 나타낸 동작 흐름도이다.
도 6은 종래의 텐서 분해 알고리즘의 일 예를 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 텐서 분해 방법의 일 예를 나타낸 도면이다.
도 8은 도 7에 도시된 특성 행렬들을 갱신하는 과정의 일 예를 나타낸 도면이다.
도 9는 도 7에 도시된 코어 텐서의 노이즈를 제거하는 과정의 일 예를 나타낸 도면이다.
도 10은 본 발명의 일 실시예에서 특성 행렬들을 갱신하는 과정을 도식화한 도면이다.
도 11은 본 발명의 일 실시예에 따른 행 갱신 연산 과정을 나타낸 도면이다.
도 12 및 13은 코어 텐서의 원소들 각각에 상응하는 에러 값들의 분포를 나타낸 그래프와 에러 값들을 누적한 그래프이다.
도 14 내지 17은 본 발명의 일 실시예에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 성능을 비교하는 도면이다.
도 18 및 19는 현실의 큰 스케일의 다차원 데이터에 대하여 본 발명의 일 실시예에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 성능을 비교하는 도면이다.
도 20 및 21은 본 발명의 일 실시예에 따른 텐서 분해 방법에서 캐시 기능을 이용함에 따른 성능을 비교하는 도면이다.
도 22 및 23은 본 발명의 일 실시예에 따른 텐서 분해 방법에서 코어 텐서의 노이즈를 제거하는 기능을 이용함에 따른 성능을 비교하는 도면이다.
도 24 및 25는 본 발명의 일 실시예에 따른 텐서 분해 방법에서 쓰레드의 개수와 성능의 상관 관계를 나타낸 도면이다.
도 26 및 27은 현실의 큰 스케일의 다차원 데이터에 대하여 본 발명의 일 실시예에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 정확도를 비교하는 도면이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성되어 다양한 형태로 구현될 수 있다. 이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다. 또한, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는한 복수의 표현을 포함한다. 또한, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 시스템(1)의 구성을 나타낸 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 시스템(1)에서 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)는 다차원 데이터 제공 장치(200) 및 데이터 분석 장치(300)와 상호 연결된다. 또한, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)는 하나 이상의 연산 장치들(400)과 상호 연결될 수 있다.
본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)는 분해 대상 텐서에 상응하는 다차원 데이터를 입력 받고, 대상 텐서를 분해하여 생성할 하나의 코어 텐서와 특성 행렬들을 초기화한다. 병렬 처리를 수행할 쓰레드들(Threads)의 리소스 정보를 획득하고, 리소스 정보를 이용하여 손실 함수를 최소화하는 각 특성 행렬에 대한 갱신 연산들을 쓰레드들에 분할하여 할당한다. 각 쓰레드들에서 갱신 연산들이 수행되면 갱신 연산들의 결과들을 수집하여 특성 행렬들을 갱신한다. 특성 행렬들에 대한 갱신이 종료되면 특성 행렬들을 직교화(Orthogonalize)하고, 직교화에 상응하여 코어 텐서를 갱신한다. 이에 따라, 대상 텐서는 코어 텐서와 특성 행렬들로 분해된다. 특히, 분해의 대상이 되는 대상 텐서는 희소(sparse)형의 텐서일 수 있다.
여기서, 다차원 데이터는 하나의 차원이 하나의 속성(attribute)에 대응되며, 속성에는 예컨대 영화 종류, 시간, 사용자 등이 포함될 수 있다. 다차원 데이터에 상응하는 대상 텐서는 코어 텐서와 특성 행렬들로 분해되며, 각 특성 행렬은 대응되는 속성에 대한 숨은 특징들에 대한 정보를 포함하며, 코어 텐서는 각 속성의 각 숨은 특징들에 대한 상관 관계에 대한 정보를 포함할 수 있다. 코어 텐서와 특성 행렬들을 이용하여 다차원 데이터의 각 속성들에 대한 분석함으로써, 추천, 군집화, 트렌드 분석 등이 가능하다. 즉, 다차원 데이터 분석을 지원하기 위하여 다차원 데이터에 상응하는 텐서를 분해할 수 있고, 이하에서 텐서 분해 방법은 다차원 데이터 분석을 지원하기 위하여 코어 텐서와 특징 행렬들을 결정하는 방법을 의미할 수 있다.
하기 표 1은 본 명세서에서 이용되는 기호들을 나타낸다.
기호 정의
X,
Figure 112017117629974-pat00001
대상 텐서 (
Figure 112017117629974-pat00002
)
G,
Figure 112017117629974-pat00003
코어 텐서 (
Figure 112017117629974-pat00004
)
N X의 차수(order)
In X의 n모드에서의 차원수(dimensionality)
Jn G의 n모드에서의 차원수(dimensionality)
A(n) n번째 특성 행렬 (
Figure 112017117629974-pat00005
)
Figure 112017117629974-pat00006
A(n)의 (in, jn)번째 원소
Ω X의 관측 가능한 원소들의 집합
Figure 112017117629974-pat00007
n모드의 인덱스가 in인 관측 가능한 원소들의 집합
|Ω| X의 관측 가능한 원소들의 개수
|G| G의 관측 가능한 원소들의 개수
λ 특성 행렬에 대한 정규화(regularization) 파라미터
||X|| X의 프로베니우스 노옴(Frobenius Norm)
T 쓰레드의 개수
α X의 (i1, …, iN) 엔트리
β G의 (j1, …, jN) 엔트리
Pres 캐시 테이블 (
Figure 112017117629974-pat00008
)
p 절단률(truncation rate)
이때, 병렬 처리를 수행할 쓰레드들은 다차원 데이터 분석을 지원하는 장치(100)에 포함된 프로세서에 포함된 쓰레드들이나, 다차원 데이터 분석을 지원하는 장치(100)와 별도로 존재하는 연산 장치들(400)에 포함된 쓰레드들 중에서 적어도 하나 이상을 포함할 수 있다. 즉, 다차원 데이터 분석을 지원하는 장치(100)에 포함된 복수 개의 쓰레드들 만을 이용할 수도 있고, 연산 장치들(400)에 포함된 쓰레드들을 적어도 하나 이상 포함하여 이용할 수도 있다.
이때, 리소스 정보에는 각 쓰레드들에 대한 연산 처리 능력(예컨대, 클럭 수), 현재 할당된 연산량, 연산 처리 지연도 등이 포함될 수 있다.
이때, 특성 행렬들은 대상 텐서의 차수(order)만큼 생성 및 초기화할 수 있다. 즉, 3차 텐서에 대하여는 3개의 특성 행렬을 초기화할 수 있다. 여기서, 각 특성 행렬들은 대상 텐서의 각 축(axis)에 상응하는 특성 행렬이다.
이때, 코어 텐서는 대상 텐서보다 크기가 작고, 밀도가 높을 수 있다.
이때, 코어 텐서와 특성 행렬들에 대한 초기화는 각 요소 혹은 원소들을 0부터 1 사이의 임의의 숫자로 초기화될 수 있다.
이때, 특성 행렬들의 직교화는 특성 행렬들 각각에 대하여 QR 분해(QR Decomposition)을 수행하고, Q 행렬들을 각각에 상응하는 특성 행렬로 갱신하고, 코어 텐서에 R 행렬들을 n모드 곱셈을 통하여 코어 텐서를 갱신할 수 있다. 즉, QR 분해를 통하여 획득하는 Q 행렬은 열 방향 직교 정규 행렬(Columnwise Orthonormal Matrix)이므로, 이를 통하여 직교화된 특성 행렬을 획득할 수 있다. 그리고, QR 분해를 통하여 획득하는 R 행렬은 상삼각 행렬(Upper Triangular Matrix)이다. 특히, n번째 특성 행렬을 QR 분해를 통하여 R 행렬은 코어 텐서와 n모드 곱셈을 수행하여 갱신할 수 있다.
이때, 갱신 연산들에 대한 분할 단위는 각 특성 행렬들에 대한 행 단위로 설정할 수 있다. 이는, 각 특성 행렬들에 대한 연산을 이에 따라 특성 행렬들의 각 행들에 대한 갱신 연산을 분할하여 병렬적으로 수행할 수 있다. 이는, 종래에는 손실 함수를 최소화하기 위하여 특성 행렬 전체에 대하여 연산을 수행하여야 하였으나, 본 발명에서 제안하는 방법에 의하는 경우에는 특성 행렬들의 각 행별로 손실 함수를 최소화하는 연산을 수행하여도, 이들이 서로 독립적이기 때문에, 결국 특성 행렬 전체에 대한 손실 함수를 최소화할 수 있기 때문이다.
이때, 갱신 연산들은 갱신 대상이 되는 특성 행렬을 제외한 나머지 특성 행렬들과 코어 텐서를 이용하여 손실 함수를 최소화하는 값으로 갱신 대상 특성 행렬을 갱신하는 연산을 의미할 수 있다. 예컨대, 총 N개의 특성 행렬들 중에서 n번째 특성 행렬을 갱신하고자 하는 경우에는 n번째 특성 행렬을 제외한 (N-1)개의 나머지 특성 행렬들과 코어 텐서를 이용하여 손실 함수를 최소화하는 값으로 n번째 특성 행렬을 갱신하는 연산을 수행할 수 있다. 이에 대한 구체적인 설명은 후술한다.
선택적 실시예에서, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)는 쓰레드들에 대하여 갱신 연산들을 분배하여 할당할 때, 갱신 연산들에 포함된 연산들 중에서 기설정된 고반복 연산들을 쓰레드들에 대하여 우선적으로 연산하도록 분배하여 할당하고, 고반복 연산에 대한 연산 결과를 캐시(cache)하고, 쓰레드들에 대하여 캐시된 데이터를 이용하여 갱신 연산들을 수행할 것을 명령할 수 있다. 또한, 특성 행렬들을 갱신함에 있어서 갱신된 특성 행렬들을 이용하여 캐시된 데이터를 갱신하도록 명령할 수 있다. 즉, 반복적으로 수행되는 연산들을 고반복 연산으로 설정하고 이를 미리 계산하여 저장해놓음으로써, 반복적인 연산을 수행하는데 소모되는 리소스와 시간을 절약할 수 있다. 여기서, 고반복 연산은 1개의 갱신 연산에 포함된 복수의 연산들 중에서 일부를 의미할 수 있다. 따라서, 각각의 갱신 연산마다 고반복 연산과 그렇지 않은 연산들로 구분될 수 있다.
선택적 실시예에서, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)는 쓰레드들에 대하여 갱신 연산들을 분배하여 할당할 때, 코어 텐서의 각 원소들에 상응하는 에러 값들을 계산하고, 에러 값들을 기반으로 코어 텐서의 각 원소들 중에서 제거 대상 원소들을 선정하고, 코어 텐서에서 제거 대상 원소들을 제거할 수 있다. 즉, 갱신 연산들을 반복하는 과정에서 에러 값 계산을 통한 코어 텐서의 노이즈(noise)를 제거함으로써, 코어 텐서의 0이 아닌 원소의 숫자들이 줄어들고 이에 따라 갱신 연산들에 소모되는 자원과 시간을 절약할 수 있다.
이때, 제거 대상 원소들을 제거한다는 의미는 해당 원소의 값을 0으로 설정하는 것을 의미할 수 있다.
이때, 제거 대상 원소들의 선정은, 에러 값이 높은 순서대로 기설정된 비율만큼 혹은 기설정된 개수만큼을 제거 대상 원소들로 선정할 수 있다. 또한, 제거 대상 원소들의 선정을 에러 값이 기설정된 기준치를 상회하는 원소들을 제거 대상 원소들로 선정할 수 있다.
다차원 데이터 제공 장치(200)는 텐서 분해의 대상이 되는 텐서에 상응하는 다차원 데이터를 제공하는 장치로, 다차원 데이터를 저장하고 있는 데이터베이스를 포함할 수 있다. 또한, 다차원 데이터 제공 장치(200)는 다차원 데이터를 수집하여 저장할 수 있다.
데이터 분석 장치(300)는 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)에서 대상 텐서를 분해한 결과들인 코어 텐서와 특성 행렬들을 이용하여, 상응하는 다차원 데이터에 대한 분석을 수행하는 장치이다. 예컨대, 다차원 데이터에 대한 트렌드 분석, 군집화, 추천, 원소 값 예측 등의 분석을 수행할 수 있다.
연산 장치(400)는 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)와 구분되어 존재하는 연산이 가능한 장치이다. 이는 다차원 데이터 분석을 지원하는 장치(100)의 연산을 대신 수행해주는 역할을 할 수 있으며, 분산 처리 시스템을 의미할 수 있다.
도 2는 도 1에 도시된 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)의 일 예를 나타낸 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)는 제어부(110), 통신부(120), 메모리(130), 연산 분배부(140), 특성 행렬 결정부(150), 코어 텐서 결정부(160), 캐싱 처리부(170) 및 잡음 제거부(180) 등을 포함한다.
상세히, 제어부(110)는 일종의 중앙처리장치로서 병렬 처리를 통한 텐서 분해의 전체 과정을 제어한다. 즉, 제어부(110)는 연산 분배부(140), 특성 행렬 결정부(150), 코어 텐서 결정부(160), 캐싱 처리부(170) 및 잡음 제거부(180) 등을 제어하여 다양한 기능을 제공할 수 있다.
여기서, 제어부(110)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
통신부(120)는 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(100)와 다차원 데이터 제공 장치(200), 데이터 분석 장치(300) 및 연산 장치(400) 간의 송수신 신호를 전송하는데 필요한 통신 인터페이스를 제공한다.
여기서, 통신부(120)는 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다.
메모리(130)는 제어부(110)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행한다. 여기서, 메모리(130)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
이때, 메모리(130)는 텐서 분해 과정 중에 발생하는 중간 데이터를 저장할 수 있다. 특히, 메모리(130)는 캐시 기능을 이용하여 고반복 연산을 미리 계산한 경우에, 고반복 연산에 대한 결과를 캐시할 수 있다.
연산 분배부(140)는 대상 텐서의 분해 결과물인 코어 텐서와 특성 행렬들에 대한 갱신 연산들을 쓰레드들에 분배한다. 여기서, 특정한 특성 행렬에 대한 갱신 연산은 자신을 제외한 나머지 특성 행렬들과 코어 텐서를 이용하여 이루어지는 연산일 수 있다.
이때, 갱신 연산들은 손실 함수를 최소화하는 값으로 특성 행렬들을 갱신하는 연산을 의미할 수 있다. 특히, 갱신 연산들은 특성 행렬들의 행 단위로 갱신하는 연산을 의미하며, 손실 함수를 최소화하는 행을 해당 특성 행렬의 행으로 갱신하는 연산을 의미할 수 있다. 예컨대, 행 단위 갱신 연산들은 하기 수학식 1 및 수학식 2로 표현될 수 있다.
[수학식 1]
Figure 112017117629974-pat00009
[수학식 2]
Figure 112017117629974-pat00010
상기 수학식 1은 특성 행렬의 행을 손실 함수를 최소화하는 값으로 갱신하는 것을 나타내며, 상기 수학식 2는 손실 함수를 나타낸다. 특히, 상기 수학식 2의 손실 함수는 하기 수학식 8의 재구축 에러(Reconstruction Error)에서 기계 학습에 대한 오버피팅(overfitting) 문제를 해결하기 위한 일부 수정이 가해진 식이다. 그리고, 상기 수학식 1 및 2는 하기 수학식 3 내지 7을 이용하여 계산할 수 있다.
[수학식 3]
Figure 112017117629974-pat00011
[수학식 4]
Figure 112017117629974-pat00012
[수학식 5]
Figure 112017117629974-pat00013
[수학식 6]
Figure 112017117629974-pat00014
[수학식 7]
Figure 112017117629974-pat00015
상기 수학식 3에 의하여 손실 함수를 최소화하는 행 벡터를 계산할 수 있으며, 이에 따라 상기 수학식 4와 같이 간단한 계산을 통하여 특성 행렬의 행을 갱신할 수 있다. 상기 수학식 3 및 4의
Figure 112017117629974-pat00016
는 Jn×Jn 행렬로, (j1, j2)번째 원소가 상기 수학식 5와 같다. 상기 수학식 3 및 4의
Figure 112017117629974-pat00017
는 길이 Jn의 벡터로, j번째 원소가 상기 수학식 6과 같다. 상기 수학식 3 및 4의
Figure 112017117629974-pat00018
은 길이 Jn의 벡터로, j번째 원소가 상기 수학식 7과 같다.
이때, 연산 분배부(140)는 각 특성 행렬들을 1회씩 갱신하는 갱신 연산들을 1-싸이클 갱신 연산으로 하여 쓰레드들에 분배하고, 1-싸이클 갱신 연산을 반복하여 쓰레드들에 분배함으로써 특성 행렬들을 반복하여 갱신시킬 수 있다.
이때, 연산 분배부(140)는 병렬 처리에 이용될 쓰레드들에 대하여 대한 리소스 정보를 수집하고, 각 쓰레드들에 대한 리소스 정보를 고려하여 갱신 연산들을 분배할 수 있다. 여기서, 리소스 정보에는 쓰레드의 연산 처리 능력, 현재 할당된 연산량, 연산 처리 지연도 등이 포함될 수 있다. 예컨대, 특정 쓰레드가 다른 쓰레드들보다 할당된 연산량이 적은 경우에는, 해당 쓰레드에 갱신 연산을 더 할당할 수 있다. 여기서, 각 쓰레드는 자신에 분배된 갱신 연산들을 순차적으로 처리할 수 있다.
이때, 연산 분배부(140)는 갱신 연산들을 행 단위 갱신 연산으로 분리하여 쓰레드들에 분배할 수 있다. 종래에는 1개 특성 행렬에 대한 갱신 연산이 해당 특성 행렬 전체에 대하여 이루어져야 했으며, 이에 따라 1개 특성 행렬을 갱신하는데 요구되는 불가분적인 연산량과 메모리 요구량이큰 문제점이 있었다. 하지만, 본 발명에서는 1개 특성 행렬에 대한 갱신 연산을 해당 특성 행렬의 행 단위의 갱신 연산으로 분할함으로써, 단일 쓰레드에서의 연산량과 메모리 요구량을 감소시킬 수 있다.
이때, 연산 분배부(140)는 각 쓰레드들에 대하여 재구축 에러(Reconstruction Error)를 계산하기 위한 연산들을 분배할 수 있다. 즉, 텐서의 분해를 반복된 연산을 통한 학습으로 수행하는바, 학습의 정확도 판단을 위한 에러값의 계산이 필요한데, 이를 각 쓰레드들에 분배하여 병렬 처리함으로써 연산 효율을 높일 수 있다. 여기서, 재구축 에러는 하기 수학식 8과 같이 정의될 수 있다.
[수학식 8]
Figure 112017117629974-pat00019
특성 행렬 결정부(150)는 최초에 대상 텐서의 차수(order)만큼의 특성 행렬들을 초기화하여 생성하고, 쓰레드들에서 수행된 특성 행렬들에 대한 갱신 연산들의 결과를 수집하여 특성 행렬들을 갱신한다. 여기서, 특성 행렬들의 초기화는 특성 행렬들의 각 원소들을 0에서 1 사이의 임의의 값으로 할당하는 것을 의미할 수 있다.
이때, 각 특성 행렬들은 대상 텐서의 각 축에 대응하며, 해당 축에 대한 숨은 특징(latent feature)들을 나타낸다. 대상 텐서의 축을 구성하는 항목들에 대한 분석은 특성 행렬들과 코어 텐서와의 연산을 통하여 이루어질 수 있다. 예컨대, n번째 특성 행렬 A(n)은 대상 텐서 X의 n모드에 대한 항목의 숨은 특징들을 나타낼 수 있으며, 그 차원은 (대상 텐서 X의 n번째 축의 차원수, 숨은 특징 수)로 설정할 수 있다. 특히, 각 특성 행렬들에 대한 숨은 특징 수는 대상 텐서 X에 상응하는 코어 텐서 G의 n번째 축의 차원수와 동일하며, 미리 주어진 값일 수 있다. 예컨대, 대상 텐서 X의 차원이 I1×I2×...×IN이고, 코어 텐서 G의 차원이 J1×J2×...×JN인 경우에는, n번째 특성 행렬의 차원은 In×Jn일 수 있다.
이때, 특성 행렬 결정부(150)는 각 쓰레드들에서 행 단위로 이루어진 갱신 연산의 결과로써 특성 행렬에 대한 갱신된 행 정보를 수집할 수 있고, 수집된 갱신된 행 정보를 이용하여 특성 행렬들을 갱신할 수 있다.
이때, 특성 행렬 결정부(150)는 특성 행렬들에 대한 갱신이 종료되면 특성 행렬들을 직교화한다. 여기서, 특성 행렬들에 대한 갱신의 종료는 기설정된 횟수만큼의 1-싸이클 갱신 연산이 수행되었거나, 재구축 에러가 기설정된 값보다 작거나, 재구축 에러가 수렴하는 경우에 이루어질 수 있다. 예컨대, 특성 행렬들을 각각 100번씩 갱신하였을 때 특성 행렬들에 대한 갱신을 종료할 수도 있고, 특성 행렬들에 대한 갱신을 수행하여 재구축 에러의 변화율이 1% 이내로 감축되어 수렴하는 경우에 특성 행렬들에 대한 갱신을 종료할 수도 있다. 특히, 특성 행렬들에 대한 직교화는 하기 수학식 9와 같이 각 특성 행렬들을 QR 분해하여, 하기 수학식 10과 같이 Q행렬을 특성 행렬로 갱신함으로써 직교화할 수 있다. 이는, QR 분해의 Q행렬이 직교 행렬이기 때문이다. 여기서, QR 분해에 따른 R행렬은 코어 텐서를 갱신하는데 이용할 수 있다.
[수학식 9]
Figure 112017117629974-pat00020
[수학식 10]
Figure 112017117629974-pat00021
코어 텐서 결정부(160)는 최초에 코어 텐서를 초기화하여 생성하고, 특성 행렬들에 대한 갱신이 완료됨에 따라 특성 행렬들을 이용하여 코어 텐서를 갱신한다. 여기서, 코어 텐서의 초기화는 코어 텐서의 각 원소들을 0에서 1 사이의 임의의 값으로 할당하는 것을 의미할 수 있다.
이때, 코어 텐서의 각 원소들은 특성 행렬들의 열 간의 관계의 가중치를 나타낼 수 있다. 그리고, 코어 텐서의 차원은 각 특성 행렬들의 숨은 특징 수에 상응하도록 결정될 수 있다. 예컨대, 대상 텐서 X의 차원이 I1×I2×...×IN이고, 코어 텐서 G의 차원이 J1×J2×...×JN인 경우에는, n번째 특성 행렬의 차원은 In×Jn이 되고 숨은 특징 수는 Jn개가 된다.
이때, 코어 텐서 결정부(160)는 각 특성 행렬들에 대한 갱신이 종료되면, 특성 행렬들을 이용하여 코어 텐서를 갱신한다. 특히, 특성 행렬들에 대한 직교화는 각 특성 행렬들을 QR 분해하여 Q행렬을 특성 행렬로 갱신함으로써 직교화할 수 있고, 하기 수학식 11과 같이 R행렬들을 코어 텐서에 곱하여 코어 텐서를 갱신할 수 있다.
[수학식 11]
Figure 112017117629974-pat00022
상기 수학식 11의 ×n은 텐서와 행렬 간의 n모드 곱셈을 의미한다.
캐싱 처리부(170)는 특성 행렬들을 갱신함에 있어서 반복되는 연산을 캐싱하여 연산 효율을 높이는 과정을 제어한다.
이때, 캐싱 처리부(170)는 갱신 연산들에 포함된 연산들 중에서 기설정된 고반복 연산을 쓰레드들에 대하여 미리 연산하도록 하고, 고반복 연산에 대한 연산 결과를 캐시하고, 쓰레드들에 대하여 캐시된 데이터를 이용하여 갱신 연산들을 처리하도록 명령할 수 있다. 즉, 갱신 연산들에 포함된 연산들 중에서 자주 반복되는 연산에 대하여는 미리 계산하여 캐시 테이블에 보관하고, 캐시된 데이터를 이용함으로써 갱신 연산들에 요구되는 리소스를 감축할 수 있다.
이때, 캐싱 처리부(170)는 쓰레들에서 갱신 연산들이 수행되어 특성 행렬들이 갱신된 이후에, 갱신된 특성 행렬들을 이용하여 캐시된 데이터를 갱신할 수 있다. 즉, 특성 행렬들에 대한 갱신 연산들은 현재 특성 행렬들의 정보를 이용하여 수행되는 것이므로, 특성 행렬들이 갱신되면 이후의 갱신 연산들에 사용되는 특성 행렬들의 정보가 변경되며, 이에 따라 캐시된 데이터를 갱신한다.
잡음 제거부(180)는 코어 텐서에서 잡음을 제거하여 연산 효율을 높이는 과정을 제어한다. 코어 텐서의 잡음을 제거함으로써 0이 아닌 원소의 개수가 줄어들어 연산량이 감소하여 연산 효율이 좋아질 수 있다.
이때, 잡음 제거부(180)는 특성 행렬들이 갱신되면 코어 텐서의 각 원소들에 대하여 에러들을 계산하고, 계산된 에러 값에 따라 제거 대상 원소를 결정하여 해당 제거 대상 원소를 제거할 수 있다. 여기서, 코어 텐서의 원소 β에 대한 에러 R(β)는 하기 수학식 12와 같이 정의되고, 하기 수학식 13과 같이 정리할 수 있다.
[수학식 12]
Figure 112017117629974-pat00023
[수학식 13]
Figure 112017117629974-pat00024
이때, 잡음 제거부(180)는 코어 텐서의 각 원소들에 중에서 에러가 기설정된 기준치 이상인 것들을 제거 대상 원소로 결정할 수도 있고, 각 원소들 중에서 에러가 높은 순서대로 기설정된 개수만큼을 제거 대상 원소로 결정할 수도 있다.
이때, 잡음 제거부(180)는 기설정된 횟수만큼 코어 텐서의 노이즈를 제거하고, 그 이후에는 노이즈를 제거하지 않을 수 있다. 예컨대, 처음 14회의 1-싸이클 갱신 연산이 수행될 동안에만 코어 텐서에 대한 노이즈를 제거하고, 그 이후에는 코어 텐서에 대한 노이즈를 제거하지 않도록 할 수 있다.
이때, 잡음 제거부(180)는 이전의 1-싸이클 갱신 연산이 수행될 때 코어 텐서의 원소의 에러 중에서 가장 큰 값과 현재 1-싸이클 갱신 연산이 수행 될 때 코어 텐서의 에러 중에서 가장 큰 값을 비교하여, 코어 텐서의 노이즈를 제거하는 작업을 수행할지 여부를 판단할 수 있다. 여기서, 비교 대상이 되는 이전의 에러는 바로 직전의 1-싸이클 갱신 연산이 수행될 때의 코어 텐서의 원소에 대한 에러뿐만 아니라 그 이전에 수행된 1-싸이클 갱신 연산에서의 코어 텐서의 원소에 대한 에러를 포함할 수 있다.
이때, 잡음 제거부(180)는 제거 대상 원소의 값을 0으로 설정하여 제거 대상 원소를 코어 텐서에서 제거할 수 있다.
위의 과정을 거쳐 특성 행렬들과 코어 텐서에 대한 갱신을 마치면, 대상 텐서의 코어 텐서와 특성 행렬들로의 분해가 완료되는 것이다. 이렇게 분해된 코어 텐서와 특성 행렬들은 대상 텐서에 상응하는 다차원 데이터에 대하여 트렌드, 연관성, 추천, 군집화 등의 분석을 수행하는데 이용될 수 있다.
도 3은 본 발명의 일 실시예에 따른 텐서 분해 기법을 도식화한 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 텐서 분해 기법은 분해 대상이 되는 입력 텐서 혹은 대상 텐서(31)를 한 개의 코어 텐서(32)와 대상 텐서(31)의 차수(order)만큼의 특성 행렬들(33, 34 및 35)로 분해한다. 특히, 도 3은 대상 텐서(31)이 3차 텐서인 경우를 나타낸다.
여기서, 대상 텐서(31)가 3차 텐서이며 차원이 I1×I2×I3일 경우, 코어 텐서(32)는 3차 텐서이고 특성 행렬들(33, 34 및 35)는 3개로 구성된다. 또한, 코어 텐서(32)의 차원이 J1×J2×J3인 경우에는, n번째 특성 행렬의 차원은 In×Jn이 되고 숨은 특징 수는 Jn개가 된다.
본 발명은 대상 텐서를 코어 텐서와 특성 행렬들로 분해함에 있어서 병렬 처리를 통하여 연산의 효율을 높여 고속, 고정확도, 고확장성을 보장한다.
도 4는 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 방법을 나타낸 동작 흐름도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 방법은 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(도 1의 100 참조)가, 분해 대상 텐서를 결정한다(S401). 이는, 다른 다차원 데이터 보관 장치 혹은 다차원 데이터 수집 장치로부터 획득한 텐서 데이터 중에서 분해 대상 텐서를 결정하는 것을 의미할 수 있다.
또한, 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 방법은 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(도 1의 100 참조)가, 대상 텐서를 분해하여 생성될 코어 텐서와 특성 행렬들을 초기화한다(S403).
이때, 코어 텐서와 특성 행렬들의 각 원소들을 0에서 1 사이의 임의의 값으로 설정하여 코어 텐서와 특성 행렬들을 초기화할 수 있다.
또한, 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 방법은 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(도 1의 100 참조)가, 병렬 처리를 통하여 특성 행렬들을 갱신한다(S405). 본 발명은 특성 행렬들에 대하여 반복적인 갱신 연산을 수행하여 특성 행렬들을 결정하며, 이를 효과적으로 수행하기 위하여 다수의 쓰레드들에 갱신 연산들을 분배하여 병렬 처리하는 것을 특징으로 한다.
이때, 병렬 처리를 수행하는 쓰레드들에 대한 리소스 정보를 수집하고, 각 쓰레드들에 대한 정보를 이용하여 특성 행렬들에 대한 갱신 연산들을 분배할 수 있다. 각 쓰레드들은 분배된 갱신 연산들을 수행하고, 이 결과들은 특성 행렬들을 갱신하는데 이용할 수 있다. 여기서, 쓰레드들은 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(도 1의 100 참조)에 포함된 쓰레드들 뿐만 아니라, 별개의 연산 장치(도 1의 400 참조)에 포함된 쓰레드들을 포함할 수 있다.
이때, 특성 행렬들의 갱신은 각 특성 행렬들에 대하여 1회씩 갱신 연산을 수행하는 1-싸이클 갱신 연산을 여러 번 반복하여 이루어질 수 있다.
또한, 본 발명의 일 실시예에 따른 병렬 처리를 통한 다차원 데이터 분석을 지원하는 방법은 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치(도 1의 100 참조)가, 특성 행렬들을 직교화하고 이를 이용하여 코어 텐서를 갱신한다(S407).
이때, 각 특성 행렬들에 대하여 QR 분해를 통하여 Q행렬과 R행렬을 획득하고, 각 특성 행렬에 상응하는 Q행렬을 해당 특성 행렬로 대체함으로써 특성 행렬들을 직교화할 수 있다. 그리고, 코어 텐서에 대하여 R행렬들을 곱함으로써 코어 텐서를 갱신할 수 있다.
도 5는 도 4에 도시된 특성 행렬들을 갱신하는 단계(S405)의 일 예를 나타낸 동작 흐름도이다.
도 5를 참조하면, 도 4에 도시된 특성 행렬들을 갱신하는 단계(S405)는, 특성 행렬들을 갱신하는 갱신 연산들에 포함된 연산들 중에서 고반복 연산으로 설정된 중간 연산을 미리 연산하여 캐싱한다(S501). 자주 반복되는 연산을 미리 계산하여 캐싱함으로써, 추후 특성 행렬들에 대한 갱신 연산을 수행할 때 캐싱된 데이터를 이용하여 보다 효율적으로 갱신 연산을 수행할 수 있다.
이때, 쓰레드들에 대해서 고반복 연산을 병렬 처리하도록 명령하고, 고반복 연산의 결과를 캐싱할 수 있다. 즉, 각 쓰레드들에서 특성 행렬들을 갱신하기 위한 연산이 수행되므로, 각 쓰레드들에서 고반복 연산을 미리 수행하고 이를 캐싱하여 추후에 이용하도록 할 수 있다.
이때, 캐싱된 데이터는 특성 행렬들이나 코어 텐서에 변화가 생기면, 이를 반영하여 갱신된 것일 수 있다. 특히, 캐싱된 데이터의 갱신은 특성 행렬들에 대한 1-싸이클 갱신 연산이 완료될 때마다 수행될 수 있다.
또한, 도 4에 도시된 특성 행렬을 갱신하는 단계(S405)는, 특성 행렬들에 대한 갱신 연산을 행 단위로 쓰레드들에 분산하여 할당하여 연산한다(S503). 즉, 1 개의 특성 행렬이라도 갱신 연산을 행 단위로 분할함에 따라 크기가 큰 대상 텐서에 대한 특성 행렬에 대하여도 메모리 초과의 문제를 손쉽게 극복할 수 있다.
이때, 각 쓰레드들은 캐싱된 데이터를 이용하여 행 단위의 갱신 연산을 수행할 수 있다.
또한, 도 4에 도시된 특성 행렬을 갱신하는 단계(S405)는, 코어 텐서의 각 원소들에 상응하는 에러를 계산하여 제거 대상 원소를 결정하고, 제거 대상 원소를 제거함으로써 코어 텐서의 잡음을 제거한다(S505).
또한, 도 4에 도시된 특성 행렬을 갱신하는 단계(S405)는, 1-싸이클 갱신 연산의 반복 종료 조건이 충족되었는지 여부를 판단한다(S507).
이때, 반복 종료 조건은 기설정된 반복 횟수 도달 여부, 재구축 에러의 기설정된 기준치 도달 여부, 재구축 에러의 수렴 여부 등을 포함할 수 있다.
단계(S507)의 판단 결과 반복 종료 조건을 충족하지 못한 경우에는, 1-싸이클 갱신 연산을 수행하는 단계들(S501, S503 및 S505)를 다시 수행한다.
단계(S507)의 판단 결과 반복 종료 조건을 충족하는 경우에는, 특성 행렬들을 갱신하는 단계를 종료한다.
도 6은 종래의 텐서 분해 알고리즘의 일 예를 나타낸 도면이다.
도 6을 참조하면, 터커(Tucker) 분해 기법이라고도 불리우는 종래의 텐서 분해 알고리즘은, N차 I1×I2×...×IN차원의 분해 대상 텐서 X와, 코어 텐서의 차원도(dimensionality) J1, J2, ..., JN을 입력으로 하고, N차 J1×J2×...×JN차원의 코어 텐서 G와 N개의 특성 행렬들을 출력으로 한다. 여기서, n번째 특성 행렬 A(n)은 In×Jn차원의 행렬이다.
터커 분해 기법은 우선 특성 행렬들을 초기화한다(1행). 그리고, 각 특성 행렬에 대하여 갱신을 수행하는 연산을 반복적으로 수행한다(2행 내지 6행). 그리고, 갱신된 특성 행렬들을 대상 텐서 X와 곱하여 코어 텐서 G를 계산한다(7행).
이때, 각 특성 행렬에 대한 갱신은 ALS(Alternating Least Squares) 알고리즘을 이용하여 이루어질 수 있으며, 이는 갱신 대상이 되는 자기 자신을 제외한 나머지 특성 행렬들과 대상 텐서를 이용하여 갱신 대상 특성 행렬을 갱신하는 알고리즘이다(4행 및 5행).
즉, 종래의 터커 분해 기법은 하나의 특성 행렬을 단위로 갱신 연산이 수행되어야하며, 분해 대상 텐서와 나머지 특성 행렬들에 대하여 모두 연산을 수행해야하는 특징으로 인하여 중간 데이터 폭발의 문제가 발생한다.
도 7은 본 발명의 일 실시예에 따른 텐서 분해 방법의 일 예를 나타낸 도면이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 텐서 분해 방법은 P-터커(P-Tucker) 혹은 병렬-터커(Parallel-Tucker) 분해 기법이라 부를 수 있다. 이는, 기존의 터커 분해 기법에서 병렬 처리 기능을 도입하여 고속, 고확장성, 고정확도의 특별한 효과를 갖는 텐서 분해 방법이다. 만약, 본 발명의 일 실시예에 따른 텐서 분해 방법이 코어 텐서의 노이즈를 제거하는 기능을 포함하는 경우에는, P-터커-근사(P-Tucker-Approx) 혹은 병렬-터커-근사(Parallel-Tucker-Approx) 분해 기법이라 부를 수 있다. 만약, 본 발명의 일 실시예에 따른 텐서 분해 방법이 고반복 연산을 캐시하는 기능을 포함하는 경우에는, P-터커-캐시(P-Tucker-Cache) 혹은 병렬-터커-캐시(Parallel-Tucker-Cache) 분해 기법이라 부를 수 있다.
본 발명의 일 실시예에 따른 텐서 분해 방법은, N차 I1×I2×...×IN차원의 분해 대상 텐서 X와, 코어 텐서의 차원도(dimensionality) J1, J2, ..., JN을 입력으로 하고, N차 J1×J2×...×JN차원의 코어 텐서 G와 N개의 특성 행렬들을 출력으로 한다. 여기서, n번째 특성 행렬 A(n)은 In×Jn차원의 행렬이다. 만약, 본 발명의 일 실시예에 따른 텐서 분해 방법이 코어 텐서의 노이즈를 제거하는 기능을 포함하는 경우에는, 코어 텐서의 노이즈 제거 비율을 나타낸 절단률 p를 추가적으로 입력받을 수 있다.
본 발명의 일 실시예에 따른 텐서 분해 방법은 우선 특성 행렬들과 코어 텐서를 초기화한다(1행). 그리고, 각 특성 행렬에 대하여 갱신을 수행하는 연산을 병렬 처리를 통하여 반복적으로 수행한다(2행 내지 7행). 그리고, 갱신된 특성 행렬들을 QR 분해를 통한 Q행렬을 이용하여 직교화하고, 특성 행렬들의 R행렬들을 코어 텐서 G와 곱하여 코어 텐서 G를 갱신한다(8행).
이때, 각 특성 행렬들에 대하여 도 8에 도시된 알고리즘 3에 따라 상술한 1-싸이클 갱신 연산을 다수의 쓰레드들에 분산하여 수행하고(3행), 1-싸이클 갱신 연산이 마쳐지면 재구축 에러를 계산할 수 있다(4행). 만약, 코어 텐서의 노이즈를 제거하는 기능을 포함하는 경우에는(5행), 도 9에 도시된 알고리즘 4에 따라 코어 텐서의 노이즈를 제거할 수 있다(6행).
도 8은 도 7에 도시된 특성 행렬들을 갱신하는 과정의 일 예를 나타낸 도면이다.
도 8을 참조하면, 도 7에 도시된 특성 행렬들을 갱신하는 과정은, 만약 본 발명의 일 실시예에 따른 텐서 분해 방법이 고반복 연산을 캐시하는 기능을 포함하는지 판단하여 고반복 연산을 미리 수행하여 캐시 테이블을 저장할 수 있다(1행 내지 4행). 여기서, 캐시 테이블 Pres는 |Ω|×|G| 차원의 행렬일 수 있다. 특히, 캐시 테이블 Pres는 도 8의 4행의 수학식과 같이 계산될 수 있으며, 이는 특성 행렬들에 대한 갱신 연산 중에서 상기 수학식 7에서 자주 반복되는 연산이다. 즉, 이와 같이 자주 반복되는 연산을 미리 계산하여 캐시함으로써, 추후 반복될 갱신 연산에서 불필요하게 반복되는 연산의 숫자를 획기적으로 줄일 수 있다.
또한, 각 특성 행렬들에 대하여 각 행별로 갱신을 수행한다(5행 내지 19행). 만약 캐시 기능을 이용하지 않는 경우에는 상기 수학식 7에 따라 중간 데이터 중에 하나인 벡터 δ를 계산하고(10행), 만약 캐시 기능을 이용하는 경우에는 캐시된 데이터 Pres를 이용하여 δ를 계산한다(12행). 다만, 12행 및 19행에서 캐시된 데이터를 이용하는 경우에 분모가 0이 되는 경우에는, 캐시된 데이터를 이용하지 않고 10행에 따라 δ를 계산하고, 1행 내지 4행에 따라 Pres를 갱신할 수 있다. 그리고 상기 수학식 5 및 6에 따라 중간 데이터 중 행렬 B와 벡터 c를 계산하고(13행), 상기 수학식 4에 따라 특성 행렬의 행 벡터를 갱신한다(14행 및 15행).
만약, 고반복 연산을 캐시하는 경우에는 캐시된 데이터 Pres를 새로이 갱신할 수 있다(16행 내지 19행).
상술한 특성 행렬들을 갱신하는 연산들은 행 단위 갱신 연산으로 구분되어 여러 쓰레드들에 분배되어 처리됨으로써, 메모리 오버플로우 문제를 해결하고 고속으로 연산할 수 있다. 특히, 캐시 데이터를 이용하지 않는 경우에는 주어진 (α, β)번째에서의 δ에 대한 연산 복잡도가 O(N)이지만(10행), 캐시 데이터를 이용하는 경우에는 주어진 (α, β)번째에서의 δ에 대한 연산 복잡도가 O(1)에 불과하다(12행). 즉, 캐시 테이블을 저장함으로 인한 메모리 사용량이 일부 증가하지만, 이에 따라 연산량을 획기적으로 감소시킬 수 있다.
도 9는 도 7에 도시된 코어 텐서의 노이즈를 제거하는 과정의 일 예를 나타낸 도면이다.
도 9를 참조하면, 도 7에 도시된 코어 텐서의 노이즈를 제거하는 과정은, 코어 텐서의 각 원소들에 대하여 상기 수학식 12 또는 13에 의하여 에러를 계산하고(1행 및 2행), 에러가 높은 순서대로 정렬하여(3행), 절단률 p에 따라 에러가 높은 원소들을 제거한다(4행).
특히, 코어 텐서의 노이즈를 제거하는 과정은, 도 9에 도시된 것과 같이 절단률 p에 따라 에러가 높은 원소들을 일정 비율만큼 제거하는 방법 이외에도, 에러가 기설정된 기준값을 상회하는 원소들을 제거할 수도 있다.
이때, 코어 텐서의 노이즈를 제거하는 작업은 특성 행렬들에 대한 1-싸이클 갱신 연산이 이루어질 때마다 반복되어 수행될 수 있다.
이와 같이, 코어 텐서의 원소들 각각에 대하여 에러를 계산하고 에러가 큰 원소들을 잡음으로 판단하여 제거함으로써, 코어 텐서의 0이 아닌 원소들이 줄어들게 되는바 특성 행렬들을 갱신하는데 필요한 연산이 줄어들어 연산의 효율성이 증가한다. 또한, 코어 텐서의 원소들 각가에 대하여 에러를 계산하여 제거 대상 원소를 판단함으로써, 단순히 값이 작은 코어 텐서의 원소를 노이즈로 판단하는 문제를 해결할 수 있다.
도 10은 본 발명의 일 실시예에서 특성 행렬들을 갱신하는 과정을 도식화한 도면이다.
도 10을 참조하면, 분해 대상 텐서(10a)는 한 개의 코어 텐서(6b)와 복수 개의 특성 행렬들(10c_1 내지 10c_N)으로 분해된다. 여기서 특성 행렬들(10c_1 내지 10c_N)의 개수는 대상 텐서(10a)의 차수인 N개이다.
특성 행렬들(10c_1 내지 10c_N)에 대한 갱신은 특성 행렬 하나씩 갱신되며, 특성 행렬 10d는 갱신 대상이 되는 특성 행렬을 행 단위로 구분하여 나타낸 것이다. 여기서, 하나의 특성 행렬에 대한 갱신 연산은 자신을 제외한 나머지 특성 행렬들과 코어 텐서를 이용하여 이루어진다.
이때, 갱신 대상 특성 행렬(10d)는 In개의 행으로 구성되는데, 이 특성 행렬들의 각 행들은 손실 함수를 최소화하는 과정이 서로에게 독립적인 특징을 갖고 있으므로, 특성 행렬들에 대한 갱신 연산은 각 행들에 대한 갱신 연산으로 분할할 수 있다. 갱신 대상 특성 행렬(10d)의 행렬 갱신 연산은 In개의 행 갱신 연산들로 구분할 수 있으며, 행 갱신 연산들은 병렬 처리를 수행할 쓰레드들(10e_1 내지 10e_T)에 분배한다. 여기서, 쓰레드들(10e_1 내지 10e_T)에 대한 행 갱신 연산들의 분배는 리소스 정보를 참조하여 이루어질 수 있다.
이때, 각 쓰레드들(10e_1 내지 10e_T)은 분배된 행 갱신 연산들을 분배 순서대로 순차적으로 처리하여 특성 행렬들에 대한 행을 갱신하는 연산을 수행한다. 예컨대, 갱신 대상 특성 행렬(10d)의 i1번째 행(Row i1)과 In번째 행(Row In)은 쓰레드 10e_1에 분배되고, 분배된 순서대로 각각 행 갱신 연산이 수행될 수 있다. 여기서, 각 쓰레드들(10e_1 내지 10e_T)는 서로 연산을 병렬적으로 수행한다.
이때, 각 쓰레드들(10e_1 내지 10e_T)에서 행 갱신 연산들에 대한 결과를 수집하여 갱신 대상 특성 행렬(10d)를 갱신하여 갱신된 특성 행렬(10f)를 획득할 수 있다. 예컨대, 갱신된 i1번째 행(Row i1, updated)을 갱신 대상 특성 행렬(10d)의 i1 번째 행으로 대체하고, 갱신된 In번째 행(Row In, updated)을 갱신 대상 특성 행렬(10d)의 In 번째 행으로 대체하여, 갱신된 특성 행렬(10f)를 획득할 수 있다.
도 11은 본 발명의 일 실시예에 따른 행 갱신 연산 과정을 나타낸 도면이다.
도 11을 참조하면, 갱신 대상 특성 행렬 A(n)(11a)의 in번째 행에 대한 갱신은 상기 수학식 4를 이용하여 수행할 수 있다. 이때, 행 갱신 연산에 이용되는 중간 데이터는 길이 Jn의 벡터
Figure 112017117629974-pat00025
(11b), 크기 Jn×Jn의 행렬
Figure 112017117629974-pat00026
(11c), 길이 Jn의 벡터
Figure 112017117629974-pat00027
(11d) 등이 있다. 또한,
Figure 112017117629974-pat00028
은 크기 Jn×Jn의 단위 행렬이며, λ는 정규화 파라미터를 의미한다.
이때, 벡터
Figure 112017117629974-pat00029
(11b)는 상기 수학식 6에 의하여 벡터
Figure 112017117629974-pat00030
(11d)를 참조하여 계산하고, 벡터
Figure 112017117629974-pat00031
(11b)의 j번째 원소는 벡터
Figure 112017117629974-pat00032
(11d)의 j번째 원소를 참조하여 계산할 수 있다.
이때, 행렬
Figure 112017117629974-pat00033
(11c)는 상기 수학식 5에 의하여 벡터
Figure 112017117629974-pat00034
(11d)를 참조하여 계산하고, 행렬
Figure 112017117629974-pat00035
(11c)의 (j1, j2)번째 원소는 벡터
Figure 112017117629974-pat00036
(11d)의 j1번째 원소와 j2번째 원소를 참조하여 계산할 수 있다.
도 12 및 13은 코어 텐서의 원소들 각각에 상응하는 에러 값들의 분포를 나타낸 그래프와 에러 값들을 누적한 그래프이다.
도 12 및 13을 참조하면, 코어 텐서의 원소들 각각에 상응하는 에러 값들(Partial Reconstruction Error R(β))은 내림 차순으로 정렬하게 되면 일부의 원소들만이 큰 에러 값을 가지며, 대부분의 원소들은 상대적으로 기하급수적으로 감소된 작은 에러 값을 갖는다. 대체로 약 20퍼센트의 원소들이 전체 에러 값들의 80퍼센트 가량을 차지함을 확인할 수 있다. 즉, 코어 텐서의 원소들 각각에 대한 에러를 계산하여 에러 값이 높은 순서대로 일정 비율만큼을 제거함으로써 코어 텐서에 포함된 노이즈들을 효과적으로 제거할 수 있다.
하기 표 2는 도 14 내지 27에서 본 발명에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 성능을 비교하기 위하여 이용한 텐서에 대한 정보를 나타낸다.
Name Order Dimensionality |Ω| Rank
Yahoo-music 4 (1M, 625K, 113, 24) 252M 10
MovieLens 4 (138K, 27K, 21, 24) 20M 10
Video (Wave) 4 (112, 160, 3, 32) 160K 3
Image (Lena) 3 (256, 256, 3) 20K 3
Synthetic 3~10 100~10M ~100M 3~11
특히, 도 14 내지 17, 20 내지 25는 상기 표 2의 가상(Synthetic) 텐서를 이용한 도면이며, 도 18, 19, 26 및 27은 상기 표 2의 현실의 음악, 영화, 비디오 및 이미지와 관련된 텐서를 이용한 도면이다. 특히, 음악 데이터는 (사용자, 음악, 년-월, 시간, 평점)의 데이터를 포함하고, 영화 데이터는 (사용자, 영화, 년, 시간, 평점)의 데이터를 포함하고, 비디오 데이터와 이미지 데이터는 원본 데이터에서 10%-샘플링한 텐서이다. 그리고, 가상 텐서는 각 원소들이 임의의 좌표를 가지고, 그 값이 0에서 1 사이의 임의의 실수로 결정된 텐서를 의미한다.
도 14 내지 17은 본 발명의 일 실시예에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 성능을 비교하는 도면이다.
도 14 내지 17에서 본 발명의 일 실시예에 따른 텐서 분해 방법은 P-Tucker(14a, 15a, 16a 및 17a)이며, 기존의 다른 텐서 분해 방법들은 Tucker-CSF(14b, 15b, 16b 및 17b), S-HOTscan(14c, 15c, 16c 및 17c) 및 Tucker-wOpt(14d 및 15d)이다. 특히, 도 14 내지 17에서 y축은 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 초 단위로 나타낸 것으로, 로그 스케일로 나타나져 있다.
도 14는 분해 대상 텐서의 차수(order)에 따른 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프로, 본 발명의 텐서 분해 방법인 P-Tucker(14a), Tucker-CSF(14b), S-HOTscan(14c) 및 Tucker-wOpt(14d) 순서대로 연산 수행 시간이 짧다. 즉, 본 발명에 따른 텐서 분해 방법이 가장 연산 속도가 빠름을 알 수 있다. 특히, Tucker-wOpt(14d)는 분해 대상 텐서의 차수가 4차일 때 본 발명에 따른 텐서 분해 방법과 연산 시간이 6만배의 차이가 나며, 분해 대상 텐서의 차수가 5차 이상일 때에는 메모리 초과(O.O.M: Out Of Memory) 상태가 된다. 그리고 Tucker-CSF(14b)와 S-HOTscan(14c)는 분해 대상 텐서의 차수가 10차일 때에도, 본 발명에 따른 텐서 분해 방법과 연산 시간이 7.1배만큼의 차이가 난다.
도 15는 분해 대상 텐서의 차원수(dimensionality)에 따른 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프로, 본 발명의 텐서 분해 방법인 P-Tucker(15a), Tucker-CSF(15b), S-HOTscan(15c) 및 Tucker-wOpt(15d) 순서대로 연산 수행 시간이 짧다. 즉, 본 발명에 따른 텐서 분해 방법이 가장 연산 속도가 빠름을 알 수 있다. 특히, Tucker-wOpt(15d)는 분해 대상 텐서의 차원수가 103일 때 본 발명에 따른 텐서 분해 방법과 연산 시간이 2만배의 차이가 나며, 분해 대상 텐서의 차원수가 103을 초과할 때에는 메모리 초과(O.O.M: Out Of Memory) 상태가 된다. 그리고 Tucker-CSF(15b)와 S-HOTscan(15c)는 분해 대상 텐서의 차원수가 107일 때에도, 본 발명에 따른 텐서 분해 방법과 연산 시간이 10.7배만큼의 차이가 난다.
도 16은 분해 대상 텐서의 관측 가능한 원소의 개수(number of observable entries)에 따른 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프로, 본 발명의 텐서 분해 방법인 P-Tucker(16a)가 가장 연산 수행 시간이 짧다. 즉, 본 발명에 따른 텐서 분해 방법이 가장 연산 속도가 빠름을 알 수 있다. 특히, Tucker-wOpt(16d)는 분해 대상 텐서의 원소 수가 103 이상일 때에는 메모리 초과(O.O.M: Out Of Memory) 상태가 된다. 그리고 Tucker-CSF(16b)와 S-HOTscan(16c)는 분해 대상 텐서의 원소 수가 107일 때에도, 본 발명에 따른 텐서 분해 방법과 연산 시간이 14.1배 이상의 차이가 난다.
도 17는 분해 대상 텐서의 랭크(rank)에 따른 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프로, 본 발명의 텐서 분해 방법인 P-Tucker(17a), Tucker-CSF(17b), S-HOTscan(17c) 및 Tucker-wOpt(17d) 순서대로 연산 수행 시간이 짧다. 즉, 본 발명에 따른 텐서 분해 방법이 가장 연산 속도가 빠름을 알 수 있다. 특히, Tucker-wOpt(17d)는 분해 대상 텐서의 랭크가 3 이상일 때 메모리 초과(O.O.M: Out Of Memory) 상태가 된다. 그리고 Tucker-CSF(17b)와 S-HOTscan(17c)는 분해 대상 텐서의 랭크가 11일 때에도, 본 발명에 따른 텐서 분해 방법과 연산 시간이 12.9배만큼의 차이가 난다.
따라서, 본 발명에 따른 텐서 분해 방법은 기존의 텐서 분해 방법들과 비교하였을 때 최소 7배 이상의 성능 향상이 이루어짐을 확인할 수 있다.
도 18 및 19는 현실의 큰 스케일의 다차원 데이터에 대하여 본 발명의 일 실시예에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 성능을 비교하는 도면이다.
도 18 및 19에서 본 발명의 일 실시예에 따른 텐서 분해 방법은 P-Tucker와 P-Tucker-APPROX이며, 기존의 다른 텐서 분해 방법들은 Tucker-CSF, S-HOTscan 및 Tucker-wOpt이다. 특히, 도 18 및 19에서 y축은 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 초 단위로 나타낸 것으로, 로그 스케일로 나타나져 있다. P-Tucker는 본 발명의 특성 행렬의 갱신을 행 단위로 나누어 병렬 처리하는 텐서 분해 방법이며, P-Tucker-APPROX는 본 발명의 P-Tucker에서 코어 텐서의 노이즈를 제거하는 과정을 추가적으로 수행하는 텐서 분해 방법이다.
도 18은 특정 음악 제공 서비스에서 수집한 다차원 데이터와 특정 영화 서비스에서 수집한 다차원 데이터에 대하여, 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프이다. 도 18을 참조하면, 음악 서비스 분석이나 영화 서비스 분석에 대하여 본 발명에 따른 P-Tucker-APPROX, P-Tucker, 그리고 기존의 텐서 분해 방법인 Tucker-CSF, S-HOTscan, Tucker-wOpt 순으로 연산 속도가 빠름을 확인할 수 있다. 여기서, 기존의 텐서 분해 방법 중에서 Tucker-wOpt의 경우에는 메모리 초과 상태가 되어 도 18에 나타나지 않았다. 특히, 본 발명에 따른 P-Tucker-APPROX가 기존의 텐서 분해 기법 중에서 가장 빠른 Tucker-CSF와 비교하여도 음악 서비스 분석시에 소요되는 시간이 2.4배 차이나고, 영화 서비스 분석시에 소요되는 시간이 2.9배 차이나는 것을 확인할 수 있다.
도 19는 특정 비디오 제공 서비스에서 수집한 다차원 데이터와 레나 이미지에 대한 다차원 데이터에 대하여, 특성 행렬들에 대한 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프이다. 도 19를 참조하면, 비디오 서비스 분석이나 레나 이미지 분석에 대하여 본 발명에 따른 P-Tucker-APPROX 또는 P-Tucker가 기존의 텐서 분해 방법인 Tucker-CSF, S-HOTscan, Tucker-wOpt 보다 연산 속도가 빠름을 확인할 수 있다. 특히, 비디오 분석에서 본 발명에 따른 P-Tucker-APPROX가 기존의 텐서 분해 기법 중에서 가장 빠른 Tucker-CSF와 비교하여 소요되는 시간이 1.7배 차이나고, 레나 이미지 분석에서 본 발명에 따른 P-Tucker가 기존의 텐서 분해 기법 중에서 가장 빠른 Tucker-CSF와 비교하여 소요되는 시간이 5.3배 차이나는 것을 확인할 수 있다.
따라서, 본 발명에 따른 텐서 분해 방법은 현실의 큰 스케일의 다차원 데이터를 분해함에 있어서도 기존의 텐서 분해 방법들과 비교하였을 때 최소 1.7배 이상의 성능 향상이 이루어짐을 확인할 수 있다.
도 20 및 21은 본 발명의 일 실시예에 따른 텐서 분해 방법에서 캐시 기능을 이용함에 따른 성능을 비교하는 도면이다.
도 20 및 21에서 본 발명의 일 실시예에 따른 텐서 분해 방법 중 고반복 연산을 캐시하는 기능을 이용하지 않는 경우는 P-Tucker(20a 및 21a)이며, 고반복 연산을 캐시하는 기능을 이용하는 경우는 P-Tucker-Cache(20b 및 21b)이다.
도 20은 분해 대상 텐서의 차수(order)에 따른 특성 행렬들에 대하여 평균적으로 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프로, 캐시 기능을 이용하는 P-Tucker-Cache(20b)가 캐시 기능을 이용하지 않는 P-Tucker(20a)보다 연산 시간이 짧음을 확인할 수 있다. 특히, 분해 대상 텐서의 차수가 증가함에 따라 연산 시간의 차이는 커지며, 텐서 차수가 10차일 때, 연산 시간이 1.7배만큼 차이가 난다.
도 21은 분해 대상 텐서의 차수(order)에 따른 특성 행렬들을 갱신하는데 요구되는 메모리 사용량을 비교한 그래프로, 캐시 기능을 이용하는 P-Tucker-Cache(21b)가 캐시 기능을 이용하지 않는 P-Tucker(21a)보다 메모리 사용량이 큼을 확인할 수 있다. 캐시 기능을 이용하지 않는 P-Tucker(21a)는 텐서 차수가 증가하더라도 메모리 사용량이 크게 증가하지 않는 반면에, 캐시 기능을 이용하는 P-Tucker-Cache(21b)는 텐서 차수가 증가함에 따라 메모리 사용량이 꾸준히 증가한다. 특히, 분해 대상 텐서의 차수가 증가함에 따라 메모리 사용량의 차이는 커지며, 텐서 차수가 10차일 때, 메모리 사용량이 29.5배만큼 차이가 난다.
즉, 본 발명에 따른 텐서 분해 방법은 캐시 기능을 이용함에 따라 연산 속도를 높일 수 있으나, 데이터를 캐시함에 따른 메모리 사용량이 크게 증가함을 알 수 있다. 따라서, 메모리 사용량과 연산 속도가 서로 트레이드 오프(trade off) 관계에 있으며, 메모리 사용량이 증가하더라도 연산 속도를 높일 필요가 있는 경우에는 캐시 기능을 이용할 수 있다.
도 22 및 23은 본 발명의 일 실시예에 따른 텐서 분해 방법에서 코어 텐서의 노이즈를 제거하는 기능을 이용함에 따른 성능을 비교하는 도면이다.
도 22 및 23에서 본 발명의 일 실시예에 따른 텐서 분해 방법 중 코어 텐서의 노이즈를 제거하는 기능을 이용하지 않는 경우는 P-Tucker(22a 및 23a)이며, 코어 텐서의 노이즈를 제거하는 기능을 이용하는 경우는 P-Tucker-APPROX(22b 및 23b)이다.
도 22는 특성 행렬들에 대한 1-싸이클 갱신 연산을 반복한 횟수에 따른 1-싸이클 갱신 연산을 수행하는데 소요되는 시간을 비교한 그래프이다. 반복 횟수가 적을 때에는 코어 텐서의 원소들에 대하여 노이즈를 계산하는 연산으로 인하여 1-싸이클 갱신 연산을 수행하는데 걸리는 시간이 P-Tucker-APPROX(22b)가 P-Tucker(22a)보다 더 오래 걸리는 것을 확인할 수 있다. 그리고, 반복 횟수가 7회를 초과하게 되면 코어 텐서의 노이즈가 줄어듬에 따라 1-싸이클 갱신 연산에 포함된 계산의 숫자가 줄어드는 효과가 커지고 1-싸이클 갱신 연산을 수행하는데 걸리는 시간이 P-Tucker-APPROX(22b)가 P-Tucker(22a)보다 더 짧아진다는 것을 확인할 수 있다. 반복 횟수가 증가함에 따라 P-Tucker-APPROX(22b)는 연산 속도가 더욱 빨라지게 된다. 특히, 반복 횟수가 14회일 경우에는 P-Tucker-APPROX(22b)가 P-Tucker(22a)보다 연산 시간이 약 2.7배만큼 빠르다.
도 23은 특성 행렬들에 대한 1-싸이클 갱신 연산을 반복한 횟수에 따른 정확도를 비교한 그래프이다. 전체적으로 코어 텐서의 노이즈를 제거하는 P-Tucker-APPROX(23b)는 코어 텐서의 노이즈를 제거하지 않는 P-Tucker(23a)와 비교하여 정확도가 낮음을 확인할 수 있다. 코어 텐서의 노이즈를 제거하는 P-Tucker-APPROX(23b)는 반복 횟수가 증가하더라도 정확도가 일정 선을 유지하다가, 특정 반복 횟수(14회)를 넘어서면 정확도가 급격히 떨어지게 된다. 이는 코어 텐서의 노이즈를 제거하는 것이 반복되면서 의미있는 수치가 노이즈로 판단되어 제거되는 현상이 발생하기 때문이다. 따라서, 반복 횟수가 14회일 때(23c), 코어 텐서의 노이즈를 제거하는 텐서 분해 방법의 최적 지점이라 볼 수 있다.
도 22 및 23에 따르면, 반복 횟수가 14회일 때 코어 텐서의 노이즈를 제거하는 P-Tucker-APPROX의 연산이 코어 텐서의 노이즈를 제거하지 않는 P-Tucker에 비하여 정확도 손실대비 연산 속도 증가량이 가장 큼을 확인할 수 있다. 즉, 코어 텐서의 노이즈를 제거하는 경우에는 연산 속도와 정확도가 서로 트레이드 오프 관계에 있음을 알 수 있다.
도 24 및 25는 본 발명의 일 실시예에 따른 텐서 분해 방법에서 쓰레드의 개수와 성능의 상관 관계를 나타낸 도면이다.
도 24는 본 발명에 따른 병렬 처리를 통한 텐서 분해 방법에서 다수의 쓰레드를 이용할 때의 연산 속도와 하나의 쓰레드를 이용할 때의 연산 속도의 비율(24a)을 나타낸 그래프이다. 이는, 하나의 쓰레드를 이용할 때의 연산 시간을 다수의 쓰레드를 이용할 때의 연산 시간으로 나눔으로써 계산할 수도 있다. 병렬 처리에 이용되는 쓰레드가 증가함에 따라 연산 속도는 거의 선형적으로 증가함을 확인할 수 있으며, 20개의 쓰레드를 이용하는 경우에는 1개의 쓰레드를 이용하는 경우에 비하여 약 15배의 연산 속도 증가의 효과가 있음을 확인할 수 있다. 쓰레드의 증가와 연산 속도의 증가가 선형적으로 이루어지므로, 병렬 처리의 규모를 키우더라도 늘어난 규모에 비례하여 연산 속도에서 이득을 볼 수 있는 장점이 있다.
도 25는 본 발명에 따른 병렬 처리를 통한 텐서 분해 방법에서 다수의 쓰레드를 이용할 때의 메모리 요구량(25a)을 나타낸 그래프이다. 병렬 처리에 이용되는 쓰레드가 증가함에 따라 메모리 증가량은 거의 선형적으로 증가함을 확인할 수 있으며, 20개의 쓰레드를 이용하는 경우에는 1개의 쓰레드를 이용하는 경우에 비하여 약 4배의 메모리 요구량 증가의 효과가 있음을 확인할 수 있다.
도 24 및 25에 따르면, 쓰레드가 증가함에 따라 연산 속도의 증가와 메모리 요구량의 증가가 선형적으로 이루어지며, 연산 속도의 증가 폭이 메모리 요구량의 증가 폭보다 크므로 쓰레드 개수를 늘리는 것이 연산 효율을 효과적으로 높일 수 있다.
도 26 및 27은 현실의 큰 스케일의 다차원 데이터에 대하여 본 발명의 일 실시예에 따른 텐서 분해 방법과 기존의 텐서 분해 방법들의 정확도를 비교하는 도면이다.
도 26 및 27에서 본 발명의 일 실시예에 따른 텐서 분해 방법은 P-Tucker와 P-Tucker-APPROX이며, 기존의 다른 텐서 분해 방법들은 Tucker-CSF, S-HOTscan 및 Tucker-wOpt이다.
도 26은 음악 데이터, 영화 데이터, 비디오 데이터, 이미지 데이터에 대하여, 텐서 분해에 따른 재구축 에러를 비교한 그래프이다. 본 발명에 따른 텐서 분해 방법은 코어 텐서의 노이즈를 제거하지 않는 P-Tucker가 코어 텐서의 노이즈를 제거하는 P-Tucker-APPROX보다 재구축 에러가 작다. 그리고 본 발명에 따른 P-Tucker와 P-Tucker-APPROX 모두 기존의 텐서 분해 방법보다 재구축 에러가 작다. 음악 데이터와 영화 데이터에서는 Tucker-wOpt는 메모리 초과 상태가 되었으며, 비디오 데이터와 이미지 데이터에서는 Tucker-wOpt가 S-HOTscan 및 Tucker-CSF보다 재구축 에러가 작다. 즉, 본 발명에 따른 텐서 분해 방법을 이용하는 경우에는 큰 스케일의 현실 데이터에 대하여도 기존의 텐서 분해 방법과 비교하여 최소 1.4배부터 최대 4.8배만큼 정확도가 높다.
도 27은 음악 데이터, 영화 데이터, 비디오 데이터, 이미지 데이터에 대하여, 텐서 분해에 따른 평균 제곱근 오차(RMSE; Root Mean Square Error)를 비교한 그래프이다. 평균 제곱근 오차를 계산할 때에는, 원래 데이터에서 10%를 분리한 테스트 데이터에 대해 계산했으며, 갱신 연산은 나머지 90%의 데이터를 사용하여 계산하였다. 본 발명에 따른 텐서 분해 방법은 코어 텐서의 노이즈를 제거하지 않는 P-Tucker가 코어 텐서의 노이즈를 제거하는 P-Tucker-APPROX보다 평균 제곱근 오차가 작다. 그리고 본 발명에 따른 P-Tucker와 P-Tucker-APPROX 모두 기존의 텐서 분해 방법보다 평균 제곱근 오차가 작다. 음악 데이터와 영화 데이터에서는 Tucker-wOpt는 메모리 초과 상태가 되었으며, 비디오 데이터와 이미지 데이터에서는 Tucker-wOpt가 S-HOTscan 및 Tucker-CSF보다 평균 제곱근 오차가 작다. 즉, 본 발명에 따른 텐서 분해 방법을 이용하는 경우에는 큰 스케일의 현실 데이터에 대하여도 기존의 텐서 분해 방법과 비교하여 최소 1.4배부터 최대 4.3배만큼 정확도가 높다.
이와 같이, 본 발명에 따른 병렬 처리를 통한 텐서 분해 방법은 종래의 텐서 분해 방법들과 비교하였을 때, 정확도, 연산 속도, 스케일 및 메모리에서 큰 성능 향상이 있음을 확인할 수 있다. 하기 표 3은 기존의 텐서 분해 방법들과 본 발명에 따른 텐서 분해 방법들의 스케일, 속도, 메모리, 정확도 측면에서의 특징들을 비교한 것이고, 하기 표 4는 기존의 텐서 분해 방법들과 본 발명에 따른 텐서 분해 방법들의 1-싸이클 갱신 연산에 대한 시간 복잡도와 메모리 복잡도를 비교한 것이다.
Method Scale Speed Memory Accuracy
Tucker-wOpt O
Tucker-CSF O O
S-HOTscan O O O
P-Tucker O O O O
Method Time Complexity
(per iteration)
Memory Complexity
P-Tucker O(NIJ3 + N2|Ω|JN) O(TJN)
P-Tucker-CACHE O(NIJ3 + N|Ω|JN) O(|Ω|JN)
P-Tucker-APPROX O(NIJ3 + N2|Ω||G|) O(JN)
Tucker-wOpt O(N
Figure 112017117629974-pat00037
(IN-kJk))
O(IN-1J)
Tucker-CSF O(NJN-1(|Ω| + J2(N-1)) O(IJN-1)
S-HOTscan O(NJN + N|Ω|JN) O(JN-1)
본 발명의 텐서 분해 방법은 스케일이 큰 데이터에 대하여도 메모리 초과 없이 고속 및 고정확도로 텐서를 분해할 수 있으므로, 분해된 특성 행렬들과 코어 텐서를 이용하여 다차원 데이터에 대한 분석을 효과적으로 수행할 수 있다. 특히, 텐서 분해 과정에서 비어있는 원소의 값을 단순히 0으로 예측하는 종래의 텐서 분해 방법들과는 달리, 본 발명에 따른 텐서 분해 방법은 병렬 처리에 의하여 비어있는 원소의 값에 대하여도 높은 정확도로 예측할 수 있으므로, 실제 데이터에 대하여 높은 정확도로 트렌드, 군집화, 추천 등의 분석이 가능하다. 예컨대, 빅데이터 분석 분야뿐만 아니라, 생명공학에서 인간 유전자를 분석할 때 비슷한 유전자들을 군집화할 수 있으며, 산업 공학에서는 대규모의 센서 데이터에 대한 이상 값 또는 트렌드를 분석하는데 사용할 수 있다.
하기 표 5 및 6은 현실의 영화 데이터로부터 본 발명의 텐서 분해 방법에 따라 분해된 코어 텐서와 특성 행렬들을 이용한 영화 컨셉 분석 결과와 영화 관계 분석 결과를 나타낸 것이다. 여기서 이용된 영화 데이터는 표 2에 나타낸 영화 데이터와 같다. 제시한 컨셉 분석이나 관계 분석은 다차원 데이터 분석 장치(도 1의 300 참조)에서 수행될 수 있다.
Concept Index Attributes
C1: Thriller 15535
4880
24694
Inception, 2010, Action|Crime|Sci-Fi
Vanilla Sky, 2001, Mystery|Romance
The Imitation Game, 2014, Drama|Thriller
C2: Comedy 6373
16680
12811
Bruce Almighty, 2003, Drama|Fantasy
Home Alone 4, 2002, Children|Comedy
Mamma Mia!, 2008, Musical|Romance
C3: Drama 19822
11873
214
Life of Pi, 2012, Adventure|drama|IMAX
Once, 2006, Drama|Musical|Romance
Before Sunrise, 1995, Drama|Romance
Relations G Value Details
R1: Drama-Hour 1.65×106 Most preferred hours for drama genre
8am, 4pm, 1am, 9pm, and 6pm
R2: Comedy-Year 1.29×106 Comedy genre is favored in this period
(1997, 1998, 1999), (2005, 2006, 2007)
R3: Year-Hour 2.29×106 Most preferred hour for watching movies
(2015, 2pm), (2014, 0am), (2013, 9pm)
상기 표 5는 특성 행렬들의 각 행이 숨은 특징을 나타내는 점을 이용하여, 영화에 상응하는 특성 행렬에 대하여 K-means 클러스터링 알고리즘을 적용하여 영화에 대한 컨셉을 분석한 것이다. 영화에 상응하는 특성 행렬에서는 각 행이 영화에 대한 숨은 특징을 나타내기 때문에, 클러스터링된 행들을 분석함으로써 영화의 장르를 파악할 수 있다.
상기 표 6은 코어 텐서가 특성 행렬들 간의 관계를 나타내는 점을 이용하여, 영화에 대한 여러 속성들 간의 관계를 분석한 것이다. 코어 텐서의 특정 원소의 값이 크면, 해당 원소의 좌표에 상응하는 특성 행렬들의 열 간에 강한 상관관계를 가짐을 알 수 있다. 예컨대, 코어 텐서의 가장 큰 원소 3개로부터 년-시간(Year-Hour) 관계 분석을 통해, '2015년 오후 2시', '2014년 오전 0시', '2013년 오후 9시' 순서대로 가장 영화 시청이 선호되었음을 파악할 수 있다.
주어진 다차원 데이터를 정확하게 코어 텐서와 특성 행렬들로 분해할수록, 다차원 데이터를 분석하여 얻는 결과의 정확도도 높아지게 된다. 따라서, 본 발명은 큰 규모의 다차원 데이터에 대하여도 빠른 속도로 정확하게 분해할 수 있으므로, 기존의 기술들에 비하여 효율성뿐만 아니라 정확성까지 도모할 수 있는 장점이 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
본 발명에서 설명하는 특정 실행들은 실시예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
1: 병렬 처리를 통한 다차원 데이터 분석을 지원하는 시스템
100: 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치
110: 제어부 120: 통신부
130: 메모리 140: 연산 분배부
150: 특성 행렬 결정부 160: 코어 텐서 결정부
170: 캐싱 처리부 180: 잡음 제거부
200: 다차원 데이터 제공 장치 300: 데이터 분석 장치
400: 연산 장치

Claims (5)

  1. 복수 개의 속성들을 갖는 다차원 데이터를 수집하는 통신부;
    상기 각각에 속성들에 대하여 한 개씩 대응되며, 상기 각각의 속성들에 상응하는 숨은 특징들에 대한 정보를 포함하는 특성 행렬들을 갱신하고 결정하는 특성 행렬 결정부;
    상기 숨은 특징들 간의 관계 정보를 포함하는 한 개의 코어 텐서를 결정하는 코어 텐서 결정부;
    상기 특성 행렬들을 갱신함에 있어서, 상기 특성 행렬들을 손실 함수를 최소화하도록 갱신하는 갱신 연산들을 분할 단위로 나누고, 병렬 처리를 수행할 복수의 쓰레드들에 대한 리소스 정보를 수집하고, 상기 리소스 정보를 고려하여 상기 쓰레드들에 분할된 갱신 연산들을 분배하여 할당하는 연산 분배부; 및
    상기 코어 텐서의 각 원소들에 상응하는 에러 값들을 계산하고, 상기 에러 값들을 기반으로 상기 코어 텐서의 각 원소들 중에서 제거 대상 원소들을 선정하여 상기 코어 텐서에서 상기 제거 대상 원소들을 제거하는 잡음 제거부
    를 포함하는 것을 특징으로 하는, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치.
  2. 청구항 1에 있어서,
    상기 분할 단위는
    상기 특성 행렬들에 대한 행 단위이고,
    상기 분할된 갱신 연산들은
    갱신 대상 행에 상응하는 특성 행렬을 제외한 나머지 특성 행렬들과 상기 코어 텐서를 이용하여, 상기 갱신 대상 행을 상기 손실 함수를 최소화하도록 갱신하는 연산들인 것을 특징으로 하는, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치.
  3. 청구항 2에 있어서,
    상기 리소스 정보는
    상기 쓰레드들 각각에 상응하는 연산 처리 능력, 현재 할당된 연산량 및 연산 처리 지연도 중 적어도 하나 이상을 포함하는 것을 특징으로 하는, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치.
  4. 청구항 1에 있어서,
    반복되는 연산을 줄이기 위하여 상기 갱신 연산들에 포함된 연산들 중에서 기설정된 고반복 연산에 대한 연산 결과를 캐시(cache)하고, 상기 특성 행렬들이 갱신될 때 상기 갱신된 특성 행렬들을 이용하여 상기 캐시된 연산 결과를 갱신하는 캐싱 처리부
    를 더 포함하고,
    상기 연산 분배부는
    상기 쓰레드들에 상기 고반복 연산들을 분배하고, 상기 쓰레드들에 상기 캐시된 연산 결과를 이용하는 갱신 연산들을 분배하는 것을 특징으로 하는, 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치.
  5. 삭제
KR1020170158951A 2017-11-24 2017-11-24 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 KR102027034B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170158951A KR102027034B1 (ko) 2017-11-24 2017-11-24 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170158951A KR102027034B1 (ko) 2017-11-24 2017-11-24 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20190060600A KR20190060600A (ko) 2019-06-03
KR102027034B1 true KR102027034B1 (ko) 2019-09-30

Family

ID=66849489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170158951A KR102027034B1 (ko) 2017-11-24 2017-11-24 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102027034B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102326202B1 (ko) * 2019-10-01 2021-11-15 주식회사 아이옵스테크놀러지 장애를 예측하기 위한 관리서버
KR102595098B1 (ko) 2021-07-30 2023-10-26 서울대학교산학협력단 텐서 분석 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170316312A1 (en) 2016-05-02 2017-11-02 Cavium, Inc. Systems and methods for deep learning processor

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101629395B1 (ko) 2015-12-24 2016-06-13 한국과학기술정보연구원 데이터 분석 장치, 데이터 분석 방법 및 데이터를 분석하는 프로그램을 저장하는 저장매체
US9875104B2 (en) * 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170316312A1 (en) 2016-05-02 2017-11-02 Cavium, Inc. Systems and methods for deep learning processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
신기정 외, "Fully Scalable Methods for Distributed Tensor Factorization", IEEE Transactions on Knowledge and Data Engineering, Volume 29, Issue 1(2017.01.) 1부.*

Also Published As

Publication number Publication date
KR20190060600A (ko) 2019-06-03

Similar Documents

Publication Publication Date Title
Oh et al. Scalable tucker factorization for sparse tensors-algorithms and discoveries
US9760538B2 (en) Computer-implemented system and method for efficient sparse matrix representation and processing
Yagoubi et al. Dpisax: Massively distributed partitioned isax
US20160378809A1 (en) Massive time series correlation similarity computation
US10685067B2 (en) Data visualization system
CN108170639B (zh) 基于分布式环境的张量cp分解实现方法
CN106062732A (zh) 数据处理系统、计算节点和数据处理的方法
Yang et al. A scalable data chunk similarity based compression approach for efficient big sensing data processing on cloud
KR102027034B1 (ko) 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법
CN112925821B (zh) 基于MapReduce的并行频繁项集增量数据挖掘方法
Ma et al. An image enhancing pattern-based sparsity for real-time inference on mobile devices
EP3076310A1 (en) Variable virtual split dictionary for search optimization
Dorier et al. Adaptive performance-constrained in situ visualization of atmospheric simulations
CN114035936A (zh) 一种基于人工智能的多维并行处理方法、系统、设备和可读存储介质
CN108549696B (zh) 一种基于内存计算的时间序列数据相似性查询方法
KR101301607B1 (ko) 분산 데이터 저장소를 위한 데이터 파티셔닝 장치 및 방법
De Vries et al. Parallel streaming signature em-tree: A clustering algorithm for web scale applications
KR101946692B1 (ko) 그래프 랭킹 수행 방법 및 장치
KR100907283B1 (ko) 지속적으로 발생되는 데이터 객체들로 구성되는 비한정적데이터 집합인 데이터 스트림으로부터 클러스터를 찾는방법 및 장치
CN111198766B (zh) 数据库访问操作部署方法、数据库访问方法及装置
JP6393411B2 (ja) データ分析支援システム及びデータ分析支援方法
CN110751161A (zh) 基于Spark的节点相似度计算方法、装置及终端
KR102022794B1 (ko) 데이터 압축방법 및 이를 수행하기 위한 데이터 압축장치
US11989235B2 (en) Explorable visual analytics system having reduced latency
CN113962156B (zh) 基于矩阵分解模型的剪枝方法、装置、设备、存储介质

Legal Events

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