KR102447870B1 - 텐서 분해 방법 및 이를 수행하기 위한 장치 - Google Patents

텐서 분해 방법 및 이를 수행하기 위한 장치 Download PDF

Info

Publication number
KR102447870B1
KR102447870B1 KR1020200121245A KR20200121245A KR102447870B1 KR 102447870 B1 KR102447870 B1 KR 102447870B1 KR 1020200121245 A KR1020200121245 A KR 1020200121245A KR 20200121245 A KR20200121245 A KR 20200121245A KR 102447870 B1 KR102447870 B1 KR 102447870B1
Authority
KR
South Korea
Prior art keywords
matrices
tensor
svd
factor
matrix
Prior art date
Application number
KR1020200121245A
Other languages
English (en)
Other versions
KR20210128887A (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 서울대학교산학협력단
Publication of KR20210128887A publication Critical patent/KR20210128887A/ko
Application granted granted Critical
Publication of KR102447870B1 publication Critical patent/KR102447870B1/ko

Links

Images

Classifications

    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • G06F17/175Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data

Landscapes

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

Abstract

일 실시예에 따른 텐서(tensor)를 분해하는 방법은, 입력 텐서를, 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하는 단계, 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하는 단계, 상기 입력 텐서를 재구성하지 않고, 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하는 단계 및 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트하는 단계를 포함한다.

Description

텐서 분해 방법 및 이를 수행하기 위한 장치 {METHOD FOR DECOMPOSING TENSOR AND APPARATUS FOR PERFORMING THE SAME}
본 명세서에서 개시되는 실시예들은 텐서를 분해하는 방법에 관한 것으로서, 자세하게는 텐서 분해에 소요되는 시간을 단축시키고, 텐서 분해 시 필요한 메모리 사용량을 감소시킬 수 있는 방법 및 장치에 관한 것이다.
최근 인공지능 시장이 급속도로 커지고 있는데, 딥러닝을 위한 데이터의 크기와 딥러닝 모델의 크기가 급속도로 증가함에 따라 모델의 성능을 유지하면서도 계산 시간, 모델 크기, 에너지 사용량 등에 대한 효율성을 높이는 모델 경량화 작업이 반드시 필요하다.
대표적인 모델 경량화 기술 중 하나가 텐서를 압축하는 텐서 분해 방법인데, 터커 분해를 활용한 경량화는 모바일 장치와 같이 상대적으로 적은 계산량과 메모리 사용량을 요구하는 장치에서 딥러닝 모델이 사용될 수 있도록 도와준다. 또한, 자율주행 시스템, 실시간 행동 분석 시스템과 같이 실시간으로 처리해야 할 딥러닝 모델에도 경량화를 위해 터커 분해 방법이 적용될 수 있다. 이외에도 동영상 콘텐츠 시장에서 동영상을 압축, 분석해낼 수 있는 터커 분해 방법에 대한 수요도 증가할 것으로 예측된다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 메모리를 적게 사용하면서도 계산 시간을 단축시킬 수 있는 텐서 분해 방법 및 이를 수행하기 위한 컴퓨팅 장치를 제공하고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면 텐서(tensor)를 분해하는 방법은, 입력 텐서를, 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하는 단계, 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하는 단계, 상기 입력 텐서를 재구성하지 않고, 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하는 단계 및 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 텐서 분해 방법을 수행하기 위한 컴퓨터 프로그램으로서, 텐서를 분해하는 방법은, 입력 텐서를, 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하는 단계, 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하는 단계, 상기 입력 텐서를 재구성하지 않고, 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하는 단계 및 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 텐서 분해 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로서, 텐서를 분해하는 방법은, 입력 텐서를, 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하는 단계, 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하는 단계, 상기 입력 텐서를 재구성하지 않고, 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하는 단계 및 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 텐서(tensor) 분해를 수행하기 위한 컴퓨팅 장치는, 데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 입출력부, 텐서 분해 방법을 수행하기 위한 프로그램이 저장되는 저장부 및 적어도 하나의 프로세서를 포함하며, 상기 프로그램을 실행시킴으로써 상기 입출력부를 통해 수신된 입력 텐서를 분해하는 제어부를 포함하며, 상기 제어부는, 상기 입력 텐서를 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하고, 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하고, 상기 입력 텐서를 재구성하지 않고 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하고, 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 입력 텐서를 여러 개의 행렬들로 표현하고 이들을 근사화함으로써, 상대적으로 계산량이 많은 텐서 계산을 피할 수 있고, 따라서 빠르고 메모리 효율적으로 텐서를 분해할 수 있는 효과를 기대할 수 있다.
또한, 수렴을 위한 반복 단계 수행 시 입력 텐서 대신에 근사화된 결과(행렬들)를 이용하고 중간 데이터가 커지지 않을 수 있도록 계산 순서를 정함으로써 인자 행렬의 초기화 및 업데이트를 빠르고 메모리 효율적으로 수행할 수 있는 효과를 기대할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 터커 분해를 통해 3차원 텐서를 분해하는 예를 도시한 도면이다.
도 2는 일 실시예에 따른 텐서 분해 방법을 수행하기 위한 컴퓨팅 장치의 구성을 도시한 도면이다.
도 3은 일 실시예에 따른 텐서 분해 방법 중 근사 단계를 설명하기 위한 도면이다.
도 4 내지 도 6은 일 실시예에 따른 텐서 분해 방법 중 초기화 단계를 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 텐서 분해 방법 중 반복 단계를 설명하기 위한 도면이다.
도 8 및 도 9는 일 실시예에 따른 텐서 분해 방법을 설명하기 위한 순서도들이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
먼저 본 명세서에서 자주 사용되는 용어들의 의미를 정의한다.
'텐서(tensor)'란 다차원 데이터를 표현하기 위한 다차원 배열(multi-dimensional array)을 의미하고, '덴스 텐서(dense tensor)'란 대부분의 요소가 0이 아닌 값으로 관측된 텐서를 의미한다.
'모드(mode)'란 텐서의 각 차원(dimension)을 의미한다.
'터커 분해(Tucker decomposition)'란 텐서로 표현되는 다차원 데이터를 분석할 때 사용되는 방법으로서, 주어진 텐서를 인자 행렬들(factor matrices) 및 코어 텐서(core tensor)로 분해함으로써 텐서에 숨겨진 의미와 패턴을 찾을 수 있도록 하는 방법이다.
'특이값 분해(Singular Value Decompostion, 이하 SVD)'란 행렬을 두 개의 직교 행렬(orthogonal matrix)들과 대각 행렬(diagonal matrix)로 분해하는 방법으로서, 임의의 행렬을 세 행렬의 곱으로 분해하는 방법이다.
위에서 정의되지 않은 용어들은 이하에서 필요할 때마다 정의한다.
먼저 일반적인 터커 분해에 대해서 설명하면, 터커 분해란 N차원 텐서
Figure 112020099836315-pat00001
를 코어 텐서
Figure 112020099836315-pat00002
와 인자 행렬들
Figure 112020099836315-pat00003
로 근사화하는 것이다.
N차원 텐서 에 대해서 터커 분해를 수행한 결과는 다음의 수학식 1과 같이 나타낼 수 있다.
Figure 112020099836315-pat00004
이때, 코어 텐서
Figure 112020099836315-pat00005
는 작지만 밀집된 텐서이고, 인자 행렬들
Figure 112020099836315-pat00006
는 열-직교(column-orthogonal)의 특성을 갖는다. (
Figure 112020099836315-pat00007
)
각각의 인자 행렬
Figure 112020099836315-pat00008
는 입력 텐서
Figure 112020099836315-pat00009
의 n번째 모드와 관련된 객체들에 잠재된 특성을 나타낸다. 코어 텐서
Figure 112020099836315-pat00010
의 각 원소들은 인자 행렬들의 열들(columns) 간 관계의 가중치를 나타낸다.
터커 분해의 목적 함수(objective function)는 다음의 수학식 2와 같이 주어진다.
Figure 112020099836315-pat00011
위 목적 함수를 최소화하는 값을 찾기 위해 일반적으로 사용되는 방식인 ALS (Alternating Least Square)에 따르면, 다른 모드들의 인자 행렬들은 고정한 상태에서 어느 하나의 모드의 인자 행렬을 업데이트하며 이 과정을 모든 모드에 대해서 반복적으로 수행한다.
본 명세서에서 개시되는 실시예들에서는 HOOI(Higher-Order Orthogonal Iteration)라고 하는 ALS 방식을 이용함으로써 위 목적 함수를 최소화하는 방향으로 인자 행렬들을 반복적으로 업데이트한다.
HOOI 방식은 아래의 표 1에 나타난 알고리즘 1(Algorithm 1)과 같이 표현된다.
Figure 112020099836315-pat00012
이하의 실시예를 통해 설명되는 터커 분해 방법의 '반복 단계'에서 알고리즘 1에 따른 인자 행렬들 및 코어 텐서의 업데이트가 수행되는데, 다만 이하의 실시예에서는 중간 데이터(intermediate data)가 커지는 것을 방지하고, 계산의 반복 횟수를 최소화하기 위해 이후에서 설명되는 알고리즘 5에서 제시하는 바와 같이 계산 순서를 조정한다. (이하의 실시예에 따른 터커 분해 방법은 근사 단계, 초기화 단계 및 반복 단계로 구성되며, 각 단계에 대해서는 아래에서 자세히 설명한다.)
알고리즘 1의 프로세스들 중에서 4번 프로세스로 인해, 입력 텐서가 덴스 텐서인 경우 계산 시간과 메모리 사용량이 지나치게 증가할 수 있다. 따라서, 이하의 실시예에 따른 텐서 분해 방법에서는 큰 덴스 텐서를 작은 텐서로 근사화한 후, '근사화된 작은 텐서를 이용하여' 인자 행렬들 및 코어 텐서를 업데이트함으로써 계산 시간 및 메모리 사용량을 비약적으로 감소시킬 수 있다.
이때, 중요한 것은 텐서를 근사화함으로 인해 발생하는 에러를 최소화하는 것인데, 이하의 실시예에 따른 텐서 분해 방법에서는 실세계(real world) 데이터를 포함하는 텐서가 가지는 특징에 기초하여 에러를 최소화하면서도 입력 텐서를 효율적으로 압축할 수 있는 방법을 제시한다. 자세한 내용은 아래의 '근사 단계' 부분에서 설명한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.
도 1은 터커 분해를 통해 3차원 텐서를 분해하는 예를 도시한 도면이다. 도 1을 참조하면, 3차원 텐서인
Figure 112020099836315-pat00013
는 텐서 분해를 수행한 결과 3개의 인자 행렬들과 하나의 코어 텐서로 분해된다.
이하에서는 설명의 편의를 위해 3차원 텐서인 입력 텐서에 대해서 일 실시예에 따른 텐서 분해 방법을 적용하는 과정에 대해서 설명한다. 하지만, 이러한 방법이 입력 텐서가 N차원 텐서인 경우까지 확장될 수 있음은 자명하다.
일 실시예에 따른 텐서 분해 방법은 (1) 근사 단계, (2) 초기화 단계 및 (3) 반복 단계로 구성되며, 아래 표 2의 알고리즘 2는 이를 표현한 것이다.
Figure 112020099836315-pat00014
일 실시예에 따른 텐서 분해 방법에 포함되는 각 단계들에 대해서는 아래에서 자세히 설명한다.
도 2는 일 실시예에 따른 텐서 분해 방법을 수행하기 위한 컴퓨팅 장치의 구성을 도시한 도면이다.
도 2를 참조하면, 일 실시예에 따른 컴퓨팅 장치(100)는 입출력부(110), 제어부(120) 및 저장부(130)를 포함할 수 있다.
입출력부(110)는 데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 구성이다. 컴퓨팅 장치(100)는 입출력부(110)를 통해 입력 텐서 및 입력 텐서에 대한 분석 요청 등을 수신할 수 있다.
제어부(120)는 CPU 등과 같은 적어도 하나의 프로세서를 포함하는 구성으로서, 저장부(130)에 저장된 프로그램을 실행함으로써 이하에서 제시되는 알고리즘에 따라 텐서를 분해하기 위한 연산을 수행한다. 제어부(120)가 텐서 분해를 위한 연산을 수행하는 방법에 대해서는 아래에서 자세히 설명한다.
저장부(130)는 파일 및 프로그램이 저장될 수 있는 구성으로서 다양한 종류의 메모리를 통해 구성될 수 있다. 특히, 저장부(130)에는 제어부(120)가 이하에서 제시되는 알고리즘에 따라 텐서 분해를 위한 연산을 수행할 수 있도록 하는 데이터 및 프로그램이 저장될 수 있다.
이하에서는 제어부(120)가 저장부(130)에 저장된 프로그램을 실행시킴으로써 일 실시예에 따른 텐서 분해 방법에 따라 입력 텐서를 분해하는 과정에 대해서 자세히 설명한다.
(1) 근사 단계(Approximation phase)
일 실시예에 따른 텐서 분해 방법에서 제어부(120)는 먼저 입력 텐서를 근사화 한다. 일 실시예에 따른 텐서 분해 방법에 포함되는 근사 단계는 다음 표 3의 알고리즘 3과 같이 표현될 수 있다.
Figure 112020099836315-pat00015
제어부(120)는 입력 텐서의 모드를 하향 순서로 재정렬(reordering)하고, 첫 번째 및 두 번째로 큰 모드로 구성된 복수의 행렬들로 입력 텐서를 슬라이스(slice)한다. 이어서 제어부(120)는 슬라이스된 복수의 행렬들에 무작위 SVD(이하, randomized SVD)를 수행함으로써 입력 텐서를 근사화한다.
도 1에 도시된 3차원 입력 텐서를 분해하는 과정을 예로 들어 설명하면 다음과 같다.
도 3은 일 실시예에 따른 텐서 분해 방법 중 근사 단계를 설명하기 위한 도면이다. 3차원 텐서인 입력 텐서
Figure 112020099836315-pat00016
의 모드 중에서 첫 번째 및 두 번째로 큰 모드를 각각
Figure 112020099836315-pat00017
Figure 112020099836315-pat00018
라고 가정하면, 제어부(120)는
Figure 112020099836315-pat00019
를 크기가
Figure 112020099836315-pat00020
Figure 112020099836315-pat00021
개의 행렬들로 슬라이스하며, 슬라이스된 행렬은
Figure 112020099836315-pat00022
라고 한다. 이어서, 제어부(120)는 슬라이스된 행렬들
Figure 112020099836315-pat00023
에 randomized SVD를 수행함으로써
Figure 112020099836315-pat00024
의 형태로 나타낸다. 이때,
Figure 112020099836315-pat00025
은 특이값들(singular values)을 대각 성분들(diagonal entries)로 갖는, 크기가
Figure 112020099836315-pat00026
인 대각 행렬(diagonal matrix)인데, 제어부(120)는 랭크값(rank value)
Figure 112020099836315-pat00027
을 적절히 설정함으로써 에러를 최소화하면서도 효율적으로 입력 텐서를 압축할 수 있다.
실세계 데이터를 포함하는 텐서들은 대부분 밀집된(dense) 특성을 갖는 동시에 일부 모드의 크기가 나머지 차원들에 비해서 매우 작은 편향된(skewed) 특성을 갖는다. 즉, 실세계 데이터를 포함하는 텐서들은 저차원 구조를 갖는 특징이 있고, 따라서 랭크값
Figure 112020099836315-pat00028
을 작게 설정하여 입력 텐서를 근사화하더라도 일반적인 텐서를 근사화하는 것과 비교할 때 발생되는 에러가 상대적으로 작다. 따라서 입력 텐서
Figure 112020099836315-pat00029
가 실세계 데이터를 포함하는 텐서인 경우, 미리 설정된 기준값 이하인 작은 랭크값
Figure 112020099836315-pat00030
을 설정하여 randomized SVD를 수행함으로써 효과적으로 입력 텐서를 압축할 수 있다. 이때, 미리 정해진 기준에 따라서 제어부(120)가 랭크값
Figure 112020099836315-pat00031
을 설정할 수도 있고, 또는 사용자가 입출력부(110)를 통해 입력하는 요청에 따라서 랭크값
Figure 112020099836315-pat00032
이 설정될 수도 있다.
(2) 초기화 단계(Initialization phase)
일 실시예에 따른 텐서 분해 방법에 따르면, 제어부(120)는 근사 단계에서 얻은 슬라이스된 행렬들의 SVD 결과를 이용하여 인자 행렬들의 초기값을 결정한다. 일 실시예에 따른 텐서 분해 방법에 포함되는 초기화 단계는 다음 표 4의 알고리즘 4와 같이 표현될 수 있다.
Figure 112020099836315-pat00033
초기화 단계란 입력 텐서의 인자 행렬들을 초기화하는 단계로서, 이후의 반복 단계에서 ALS 알고리즘을 적용하기에 적절한 초기값을 찾는 단계이다. 초기화 단계를 수행함으로써 이후의 반복 단계에서 인자 행렬들을 업데이트하는데 필요한 계산의 반복 횟수를 줄일 수 있다.
초기화를 수행하는 방법에 대해서 간단히 설명하면,
Figure 112020099836315-pat00034
를 mode-i 행렬화(matricization)한 결과의 좌특이벡터들(left singular vectors)을 인자 행렬
Figure 112020099836315-pat00035
의 초기값으로 설정한다.
기존에 사용되던 방식인 ST-HOSVD (Sequentially Truncated Higher Order SVD)의 경우, 입력 텐서를 직접 이용하여 연산을 수행해야 하므로 계산 시간이 큰 문제점이 있었다.
예를 들어 설명하면, 기존 방식에 따르면 각각의 mode-i에 대해서
Figure 112020099836315-pat00036
에 mode-i 행렬화를 수행한 결과에 SVD를 수행하는데, 이와 같이 할 경우
Figure 112020099836315-pat00037
를 계산하는데 많은 시간과 메모리가 사용되었다.
위와 같은 문제점을 해결하기 위해 일 실시예에 따른 텐서 분해 방법의 초기화 단계에서는, 입력 텐서를 재구성하지 않고, 근사 단계에서 얻은 슬라이스된 행렬들의 SVD 결과를 이용하여 인자 행렬들을 초기화한다.
또한, 일 실시예에 따른 텐서 분해 방법에서는 초기화 단계를 빠르게 수행하도록 하기 위해 계산 순서를 조정한다.
이를 도면을 참조하여 설명하면 다음과 같다.
도 4 내지 도 6은 일 실시예에 따른 텐서 분해 방법 중 초기화 단계를 설명하기 위한 도면이다.
도 4를 참조하면, 제어부(120)는 3차원 입력 텐서
Figure 112020099836315-pat00038
로부터 슬라이스된 행렬들의 SVD 결과들로부터 3개의 인자 행렬들의 초기값
Figure 112020099836315-pat00039
,
Figure 112020099836315-pat00040
Figure 112020099836315-pat00041
을 구하는데, 이와 같은 초기화를 수행하는 세부 단계들은 도 5 및 6에 나타내었다.
도 5를 참조하면, 제어부(120)는 입력 텐서
Figure 112020099836315-pat00042
로부터 슬라이스된 행렬들의 SVD 결과들에 대해서 행렬
Figure 112020099836315-pat00043
Figure 112020099836315-pat00044
들을, 행렬
Figure 112020099836315-pat00045
들과 분리하고, 분리된 행렬
Figure 112020099836315-pat00046
Figure 112020099836315-pat00047
들에 대해서 SVD를 수행한다. 일 실시예에 따르면, 초기화 단계에서는 randomized SVD가 효율성을 떨어트릴 수 있어 standard SVD를 사용할 수 있다. 도 5를 참조하면, 분리된 행렬
Figure 112020099836315-pat00048
Figure 112020099836315-pat00049
들에 SVD를 수행한 결과(510)의 왼쪽 인자 행렬인
Figure 112020099836315-pat00050
를 첫 번째 모드의 인자 행렬
Figure 112020099836315-pat00051
의 초기값으로 할당한다. 이와 같이 계산 순서를 정함으로써 계산 속도를 향상시키고 메모리 사용량을 줄일 수 있다.
이어서 제어부(120)는 도 6에 도시된 바와 같이 근사 단계에서 얻은 슬라이스된 행렬들의 SVD 결과들 중 행렬
Figure 112020099836315-pat00052
들과 첫 번째 모드의 초기화된 인자 행렬 간 행렬 곱셈을 먼저 수행하고, 그 다음에 나머지 행렬
Figure 112020099836315-pat00053
Figure 112020099836315-pat00054
들과 행렬 곱셈을 수행하여 중간 데이터
Figure 112020099836315-pat00055
를 얻는다. 제어부(120)는 중간 데이터
Figure 112020099836315-pat00056
에 대하여 mode-2 행렬화를 수행한 뒤 SVD를 수행한 결과의 왼쪽 인자 행렬
Figure 112020099836315-pat00057
를 두 번째 모드의 인자 행렬
Figure 112020099836315-pat00058
의 초기값으로 할당한다. 유사하게 제어부(120)는 N번째 모드의 인자 행렬
Figure 112020099836315-pat00059
의 초기값으로는, 텐서
Figure 112020099836315-pat00060
에 N-1번째 모드까지의 인자 행렬들이 곱해진 중간 데이터
Figure 112020099836315-pat00061
에 대해 SVD를 수행한 결과의 왼쪽 인자 행렬
Figure 112020099836315-pat00062
를 할당할 수 있다.
(3) 반복 단계(Iteration phase)
일 실시예에 따른 텐서 분해 방법에 따르면, 제어부(120)는 이상 설명한 프로세스에 따라서 인자 행렬들에 대한 초기화를 수행한 후 아래에서 설명되는 반복 단계를 통해 인자 행렬들 및 코어 텐서를 업데이트한다. 일 실시예에 따른 텐서 분해 방법에 포함되는 반복 단계는 다음 표 5의 알고리즘 5와 같이 표현될 수 있다.
Figure 112020099836315-pat00063
도 7은 일 실시예에 따른 텐서 분해 방법 중 반복 단계를 설명하기 위한 도면이다. 도 7에 도시된 바와 같이 초기화 단계에서 얻은 인자 행렬들의 초기값(도 7의 좌측 도면)에 인자 행렬들을 업데이트하기 위한 계산을 반복하여 수행함으로써 인자 행렬들 및 코어 텐서(도 7의 우측 도면)를 얻을 수 있다.
반복 단계에서 제어부(120)는 초기화 단계에서 얻은 인자 행렬들의 초기값과, 근사 단계에서 얻은
Figure 112020099836315-pat00064
,
Figure 112020099836315-pat00065
Figure 112020099836315-pat00066
행렬들(슬라이스된 행렬들의 SVD 결과)을 이용함으로써 메모리를 효율적으로 사용하면서 빠르게 인자 행렬들 및 코어 텐서를 업데이트할 수 있다.
제어부(120)는 각 반복 단계에서 첫 번째 모드의 인자 행렬을 업데이트하기 위해서 먼저 이전 단계에서의 두 번째 모드의 인자 행렬과 근사 단계에서 얻은
Figure 112020099836315-pat00067
행렬들 간 행렬 곱셈을 수행한 후에, 이어서
Figure 112020099836315-pat00068
Figure 112020099836315-pat00069
와 행렬 곱셈을 수행함으로써 중간 데이터
Figure 112020099836315-pat00070
를 얻는다. 그리고, 제어부(120)는 세 번째 모드부터 N 번째 모드의 인자 행렬들과
Figure 112020099836315-pat00071
간 N 모드 곱셈을 수행하고, 그 결과에 대해서 SVD를 수행한다. 제어부(120)는 SVD 결과 중
Figure 112020099836315-pat00072
를 첫 번째 모드의 인자 행렬로 업데이트한다. 이와 같이 계산 순서를 정함으로써 메모리 사용량을 줄이면서 빠르게 인자 행렬들을 업데이트할 수 있다.
제어부(120)는 두 번째 모드의 인자 행렬에 대한 업데이트도 유사하게 이전 단계에서의 첫 번째 모드의 인자 행렬과 근사 단계에서 얻은
Figure 112020099836315-pat00073
행렬들 간 행렬 곱셈을 수행함으로써 중간 데이터
Figure 112020099836315-pat00074
를 얻고, 이어서
Figure 112020099836315-pat00075
Figure 112020099836315-pat00076
와 행렬 곱셈을 수행하여 새로운 중간 데이터
Figure 112020099836315-pat00077
를 얻을 수 있다. 이어서 제어부(120)는 세 번째 모드부터 N 번째 모드의 인자 행렬들과
Figure 112020099836315-pat00078
간 N 모드 곱셈을 수행하고, 그 결과에 SVD를 수행한 결과 중
Figure 112020099836315-pat00079
를 두 번째 모드의 인자 행렬로 업데이트할 수 있다.
제어부(120)는 나머지 N 번째 모드에 대해서는 첫 번째 인자 행렬과 근사 단계에서 얻은
Figure 112020099836315-pat00080
, 두 번째 모드의 인자 행렬과 근사 단계에서 얻은
Figure 112020099836315-pat00081
에 대해 각각 행렬 곱셈을 수행하여 중간 데이터
Figure 112020099836315-pat00082
를 얻는다. 이어서 제어부(120)는 N 번째 모드를 제외한 나머지 인자 행렬들과 중간 데이터
Figure 112020099836315-pat00083
간의 N 모드 곱셈을 수행하고, 그 결과에 SVD를 수행한 결과 중
Figure 112020099836315-pat00084
를 N 번째 모드의 인자 행렬로 할당할 수 있다.
제어부(120)는 이상 설명한 프로세스들을 인자 행렬들 및 코어 텐서를 이용해 복원한 텐서가 입력 텐서
Figure 112020099836315-pat00085
에 수렴할 때까지 반복하여 수행한다.
이와 같이 제어부(120)는 입력 텐서와 인자 행렬들 간 곱셈을 피하고, 근사 단계에서 얻은 압축된 결과를 활용함으로써 계산량 및 메모리 사용량을 줄일 수 있을 뿐 아니라, 초기화 단계에서 얻은 인자 행렬들로부터 반복 단계를 시작함으로써 필요한 반복 횟수를 줄일 수 있다.
이하에서는 상술한 바와 같은 컴퓨팅 장치(100)를 이용하여 텐서를 분해하는 방법을 설명한다. 도 8 및 도 9는 일 실시예에 따른 텐서 분해 방법을 설명하기 위한 순서도들이다.
도 8 및 도 9에 도시된 실시예에 따른 텐서 분해 방법은 도 2에 도시된 컴퓨팅 장치(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 2에 컴퓨팅 장치(100)에 관하여 이상에서 기술한 내용은 도 8 및 도 9에 도시된 실시예에 따른 텐서 분해 방법에도 적용될 수 있다.
도 8을 참고하면, 801 단계에서 컴퓨팅 장치(100)의 제어부(120)는 입력 텐서를, 입력 텐서의 복수의 모드들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 행렬들로 슬라이스한다. 자세하게는, 제어부(120)는 입력 텐서의 모드를 하향 순서로 재정렬하고, 재정렬된 입력 텐서를 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 분해한다.
802 단계에서 제어부(120)는 슬라이스된 행렬들 각각에 대해서 SVD를 수행한다. 이때, 제어부(120)는 슬라이스된 행렬들 각각에 대해서 randomized SVD를 수행한다.
803 단계에서 제어부(120)는 입력 텐서를 재구성하지 않고, 슬라이스된 행렬들의 SVD 결과를 이용하여 입력 텐서의 인자 행렬들의 초기값을 결정한다. 803 단계에 포함되는 세부 단계들을 도 9에 도시하였다.
도 9를 참고하면, 901 단계에서 제어부(120)는 입력 텐서로부터 슬라이스된 행렬들의 SVD 결과에 대해서 행렬 U 및 Σ들을 행렬 V와 분리한다.
902 단계에서 제어부(120)는 슬라이스된 행렬들 각각에 대해서 SVD를 수행한다.
903 단계에서 제어부(120)는 슬라이스된 행렬들의 SVD 결과들 중 행렬 U들과 (i-1) 모드의 초기화된 인자 행렬 간 행렬 곱셈을 수행하고, 그 결과와 행렬 Σ 및 V들 간 행렬 곱셈을 수행하여 중간 데이터 Y를 획득한다. (단, i≥2)
904 단계에서 제어부(120)는 중간 데이터 Y에 모드-i 행렬화를 수행한 뒤 SVD를 수행한 결과의 왼쪽 인자 행렬을 i 번째 모드의 인자 행렬의 초기값으로 할당한다.
905 단계에서 제어부(120)는 모든 모드에 대한 인자 행렬의 초기값이 결정되었는지를 판단하여, 인자 행렬의 초기값이 결정되지 않은 모드가 남아있다면 903 단계를 다시 수행하고, 모든 모드에 대한 인자 행렬의 초기값이 결정되었다면 804 단계로 진행한다.
다시 도 8로 돌아와서, 804 단계에서 제어부(120)는 슬라이스된 행렬들의 SVD 결과 및 인자 행렬들의 초기값을 이용하여 인자 행렬들 및 코어 텐서를 반복해서 업데이트한다. 이때, 제어부(120)는 업데이트된 인자 행렬들과 코어 텐서를 이용해 복원된 텐서가, 입력 텐서에 수렴할 때까지 인자 행렬들 및 코어 텐서에 대한 업데이트를 수행한다.
기존의 텐서 분해에 따르면, 텐서 형태를 유지하면서 근사화를 수행하므로 계산량이 많고 에러가 큰 문제점이 있었다.
하지만 일 실시예에 따른 텐서 분해 방법에 따르면, 입력 텐서를 여러 개의 행렬들로 표현하는 방식으로 근사화를 함으로써, 상대적으로 계산량이 많은 텐서 계산을 피할 수 있고, 따라서 빠르고 메모리 효율적으로 텐서를 분해할 수 있는 효과를 기대할 수 있다.
뿐만 아니라 일 실시예에 따른 텐서 분해 방법에 따르면, 수렴을 위한 반복 단계 수행 시 입력 텐서 대신에 근사화된 결과(행렬들)를 이용하고 중간 데이터가 커지지 않을 수 있도록 계산 순서를 정함으로써 인자 행렬의 초기화 및 업데이트를 빠르고 메모리 효율적으로 수행할 수 있는 효과를 기대할 수 있다.
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 8 및 도 9를 통해 설명된 실시예에 따른 텐서 분해 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다. 예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 8 및 도 9를 통해 설명된 실시예에 따른 텐서 분해 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 8 및 도 9를 통해 설명된 실시예에 따른 텐서 분해 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
100: 컴퓨팅 장치 110: 입출력부
120: 제어부 130: 저장부

Claims (12)

  1. 컴퓨팅 장치를 통해 텐서(tensor)를 분해하는 방법에 있어서,
    상기 컴퓨팅 장치가 입력 텐서를, 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하는 단계;
    상기 컴퓨팅 장치가 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하는 단계;
    상기 컴퓨팅 장치가 상기 입력 텐서를 재구성하지 않고, 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하는 단계; 및
    상기 컴퓨팅 장치가 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 초기값을 결정하는 단계는,
    상기 컴퓨팅 장치가 상기 슬라이스된 행렬들의 SVD 결과에 대해서 행렬 U 및 Σ들을 행렬 V와 분리하는 단계;
    상기 컴퓨팅 장치가 상기 분리된 행렬 U 및 Σ들에 대해서 SVD를 수행한 결과의 왼쪽 인자 행렬을 첫 번째 모드의 인자 행렬의 초기값으로 할당하는 단계;
    상기 컴퓨팅 장치가 상기 슬라이스된 행렬들의 SVD 결과들 중 행렬 U들과 (i-1) 모드의 초기화된 인자 행렬 간 행렬 곱셈을 수행하고, 그 결과와 행렬 Σ및 V들 간 행렬 곱셈을 수행하여 중간 데이터 Y를 획득하는 단계(단, i≥2); 및
    상기 컴퓨팅 장치가 상기 중간 데이터 Y에 모드-i 행렬화를 수행한 뒤 SVD를 수행한 결과의 왼쪽 인자 행렬을 i 번째 모드의 인자 행렬의 초기값으로 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 반복해서 업데이트하는 단계는,
    상기 컴퓨팅 장치가, 업데이트된 인자 행렬들과 코어 텐서를 이용해 복원된 텐서가, 상기 입력 텐서에 수렴할 때까지 상기 인자 행렬들 및 코어 텐서에 대한 업데이트를 수행하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 복수의 행렬들로 슬라이스하는 단계는,
    상기 컴퓨팅 장치가 상기 입력 텐서의 모드를 하향 순서로 재정렬(reordering)하는 단계; 및
    상기 컴퓨팅 장치가 상기 재정렬된 입력 텐서를 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 분해하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 SVD를 수행하는 단계는,
    상기 컴퓨팅 장치가 상기 슬라이스된 행렬들 각각에 대해서 무작위 SVD(randomized SVD)를 수행하는 것을 특징으로 하는 방법.
  6. 컴퓨터에 제1항에 기재된 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  7. 컴퓨팅 장치에 의해 수행되며, 제1항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.
  8. 텐서(tensor) 분해를 수행하기 위한 컴퓨팅 장치에 있어서,
    데이터를 입력 받고, 이를 연산 처리한 결과를 출력하기 위한 입출력부;
    텐서 분해 방법을 수행하기 위한 프로그램이 저장되는 저장부; 및
    적어도 하나의 프로세서를 포함하며, 상기 프로그램을 실행시킴으로써 상기 입출력부를 통해 수신된 입력 텐서를 분해하는 제어부를 포함하며,
    상기 제어부는,
    상기 입력 텐서를 상기 입력 텐서의 복수의 모드(mode)들 중에서 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 슬라이스(slice)하고, 상기 슬라이스된 행렬들 각각에 대해서 특이값 분해(이하, SVD)를 수행하고, 상기 입력 텐서를 재구성하지 않고 상기 슬라이스된 행렬들의 SVD 결과를 이용하여 상기 입력 텐서의 인자 행렬들(factor matrices)의 초기값을 결정하고, 상기 슬라이스된 행렬들의 SVD 결과 및 상기 인자 행렬들의 초기값을 이용하여 상기 인자 행렬들 및 코어 텐서(core tensor)를 반복해서 업데이트하는, 장치.
  9. 제8항에 있어서,
    상기 제어부는 상기 초기값을 결정함에 있어서,
    상기 슬라이스된 행렬들의 SVD 결과에 대해서 행렬 U 및 Σ들을 행렬 V와 분리하고, 상기 분리된 행렬 U 및 Σ들에 대해서 SVD를 수행한 결과의 왼쪽 인자 행렬을 첫 번째 모드의 인자 행렬의 초기값으로 할당하고, 상기 슬라이스된 행렬들의 SVD 결과들 중 행렬 U들과 (i-1) 모드의 초기화된 인자 행렬 간 행렬 곱셈을 수행하고, 그 결과와 행렬 Σ및 V들 간 행렬 곱셈을 수행하여 중간 데이터 Y를 획득하고(단, i≥2), 상기 중간 데이터 Y에 모드-i 행렬화를 수행한 뒤 SVD를 수행한 결과의 왼쪽 인자 행렬을 i 번째 모드의 인자 행렬의 초기값으로 할당하는 것을 특징으로 하는 장치.
  10. 제8항에 있어서,
    상기 제어부는 상기 인자 행렬들 및 코어 텐서를 반복해서 업데이트함에 있어서,
    업데이트된 인자 행렬들과 코어 텐서를 이용해 복원된 텐서가, 상기 입력 텐서에 수렴할 때까지 상기 인자 행렬들 및 코어 텐서에 대한 업데이트를 수행하는 것을 특징으로 하는 장치.
  11. 제8항에 있어서,
    상기 제어부는 상기 복수의 행렬들로 슬라이스함에 있어서,
    상기 입력 텐서의 모드를 하향 순서로 재정렬(reordering)하고, 상기 재정렬된 입력 텐서를 첫 번째와 두 번째로 큰 모드로 구성된 복수의 행렬들로 분해하는 것을 특징으로 하는 장치.
  12. 제8항에 있어서,
    상기 제어부는 상기 슬라이스된 행렬들 각각에 SVD를 수행함에 있어서,
    상기 슬라이스된 행렬들 각각에 대해서 무작위 SVD(randomized SVD)를 수행하는 것을 특징으로 하는 장치.
KR1020200121245A 2020-04-17 2020-09-21 텐서 분해 방법 및 이를 수행하기 위한 장치 KR102447870B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200046937 2020-04-17
KR20200046937 2020-04-17

Publications (2)

Publication Number Publication Date
KR20210128887A KR20210128887A (ko) 2021-10-27
KR102447870B1 true KR102447870B1 (ko) 2022-09-27

Family

ID=78286978

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200121245A KR102447870B1 (ko) 2020-04-17 2020-09-21 텐서 분해 방법 및 이를 수행하기 위한 장치

Country Status (1)

Country Link
KR (1) KR102447870B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230160653A (ko) 2022-05-17 2023-11-24 서울대학교산학협력단 텐서 분석 장치 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101686827B1 (ko) * 2015-03-17 2016-12-16 인천대학교 산학협력단 인공 신경망의 뉴로모픽 하드웨어 구현 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Miaoyan Wang외 1명, "Tensor Decompositions via Two-Mode Higher-Order SVD (HOSVD)", Computer Science, Mathematics, (2017.4.19.)*
Stephan Rabanser외 2명, "Introduction to Tensor Decompositions and their Applications in Machine Learning", Computer Science, Mathematics, (2017.11.29.)*

Also Published As

Publication number Publication date
KR20210128887A (ko) 2021-10-27

Similar Documents

Publication Publication Date Title
KR102344473B1 (ko) 콘볼루셔널 뉴럴 네트워크들에 대한 슈퍼픽셀 방법들
JP7450815B2 (ja) 階層的重み疎畳み込み処理のための方法とシステム
WO2019090325A1 (en) Methods and systems for improved transforms in convolutional neural networks
CN113168559A (zh) 机器学习模型的自动化生成
US10956535B2 (en) Operating a neural network defined by user code
US11899744B2 (en) Apparatus and method of performing matrix multiplication operation of neural network
CN113570031B (zh) 卷积运算的处理方法、电子设备及计算机可读存储介质
US20230196113A1 (en) Neural network training under memory restraint
US20230259758A1 (en) Adaptive tensor compute kernel for sparse neural network
US20210397963A1 (en) Method and apparatus for neural network model compression with micro-structured weight pruning and weight unification
KR102447870B1 (ko) 텐서 분해 방법 및 이를 수행하기 위한 장치
US20220222318A1 (en) Performing tensor operations using a programmable control engine
US11636569B1 (en) Matrix transpose hardware acceleration
US12014505B2 (en) Method and apparatus with convolution neural network processing using shared operand
CN118043821A (zh) 混合稀疏压缩
KR101946692B1 (ko) 그래프 랭킹 수행 방법 및 장치
JP2024502225A (ja) ワークロードが平準化された活性化スパース性を用いた畳込みのための方法およびシステム
Van Barel et al. The Lanczos-Ritz values appearing in an orthogonal similarity reduction of a matrix into semiseparable form
US11748251B2 (en) Storing tensors in memory based on depth
US20230281270A1 (en) Recording medium and information processing method
KR102514264B1 (ko) 고속 부분 푸리에 변환 방법 및 이를 수행하기 위한 컴퓨팅 장치
US20240086719A1 (en) Sparse encoding and decoding at mixture-of-experts layer
CN111860825A (zh) 一种数据处理方法及相关产品
KR102469374B1 (ko) 시간 연속성을 고려한 텐서 분해 방법 및 그 장치
Manning Parallel Algorithms for Low-Rank Approximations of Matrices and Tensors

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