KR20240020482A - 시스템 및 그의 동작 방법 - Google Patents
시스템 및 그의 동작 방법 Download PDFInfo
- Publication number
- KR20240020482A KR20240020482A KR1020220098576A KR20220098576A KR20240020482A KR 20240020482 A KR20240020482 A KR 20240020482A KR 1020220098576 A KR1020220098576 A KR 1020220098576A KR 20220098576 A KR20220098576 A KR 20220098576A KR 20240020482 A KR20240020482 A KR 20240020482A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- group
- query
- similarity
- processor
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title description 2
- 239000013598 vector Substances 0.000 claims description 115
- 230000006870 function Effects 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 31
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000007635 classification algorithm Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 210000004709 eyebrow Anatomy 0.000 description 1
- 230000037308 hair color Effects 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 기술에 따른 시스템은 메모리, 및 메모리에 저장된 데이터 그룹들 각각 및 외부에서 수신된 쿼리 사이의 제1 유사도들과, 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터들 각각 및 쿼리 사이의 제2 유사도들의 최소값의 비교 결과에 기초하여, 데이터 그룹들 중에서 선택된 데이터 그룹을 포함하는 스캔 대상을 결정하고, 스캔 대상에 포함된 데이터 그룹의 스캔 데이터들 중에서, 기준 개수에 따라 선택된 스캔 데이터를 쿼리에 대한 결과 데이터로 출력하는 프로세서를 포함한다.
Description
본 발명은 시스템 및 그의 동작 방법에 관한 것으로, 보다 구체적으로는 분류 알고리즘에 따라 데이터를 분류하는 시스템 및 그의 동작 방법에 관한 것이다.
KNN(K-nearest neighbor) 알고리즘은 지도 학습에 속하는 머신러닝의 분류(classification) 알고리즘이다. KNN 알고리즘은 쿼리가 입력되면, 쿼리와 가장 가까운(또는 유사한) K개의 데이터를 선택하여 결과 데이터로 출력한다. 이를 위해, 모든 데이터를 스캔하여 새로운 데이터와 비교해야 하는데, 이 경우 메모리 엑세스가 증가하여 병목 현상(bottleneck)이 발생하는 문제가 있다. 이를 해결하기 위한 방안이 요구되고 있다.
본 개시의 일 실시 예는 메모리 엑세스가 감소된 데이터 분류 동작을 수행하는 시스템 및 그의 동작 방법을 제공하기 위함이다.
본 개시의 일 실시 예에 따른 시스템은, 메모리, 및 메모리에 저장된 데이터 그룹들 각각 및 외부에서 수신된 쿼리 사이의 제1 유사도들과, 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터들 각각 및 쿼리 사이의 제2 유사도들의 최소값의 비교 결과에 기초하여, 데이터 그룹들 중에서 선택된 데이터 그룹을 포함하는 스캔 대상을 결정하고, 스캔 대상에 포함된 데이터 그룹의 스캔 데이터들 중에서, 기준 개수에 따라 선택된 스캔 데이터를 쿼리에 대한 결과 데이터로 출력하는 프로세서를 포함할 수 있다.
본 개시의 일 실시 예에 따른 시스템은, 메모리, 및 복수의 데이터 그룹 각각 및 외부 장치로부터 수신된 쿼리 사이의 그룹 유사도들을 계산하고, 복수의 데이터 그룹들 중에서 그룹 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터들 각각 및 쿼리 사이의 데이터 유사도들을 기초로 기준값을 결정하고, 복수의 데이터 그룹들 중에서, 기준값 이상의 그룹 유사도를 갖는 데이터 그룹을 포함하는 스캔 대상을 결정하고, 스캔 대상에 포함된 스캔 데이터들 중에서, 스캔 데이터들 각각 및 쿼리 사이의 데이터 유사도가 큰 순서로 기준 개수에 따라 선택된 스캔 데이터를 쿼리에 대한 결과 데이터로 출력하는 프로세서를 포함할 수 있다.
본 개시의 일 실시 예에 따른 시스템의 동작 방법은, 복수의 데이터 그룹들에 각각 대응되는 복수의 그룹 벡터들을 저장하는 단계, 외부 장치로부터 쿼리를 수신하는 단계, 복수의 데이터 그룹들 중, 쿼리의 쿼리 벡터 및 복수의 그룹 벡터들 각각 사이의 그룹 유사도들의 최대값에 대응되는 데이터 그룹을 결정하는 단계, 결정된 데이터 그룹에 포함된 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도들의 최소값에 기초하여, 복수의 데이터 그룹들 중 스캔 대상에 포함되는 데이터 그룹의 스캔 데이터들을 결정하는 단계, 및 스캔 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도에 기초하여, 스캔 데이터들 중에서 쿼리에 대한 결과 데이터를 결정하는 단계를 포함할 수 있다.
본 개시의 일 실시예에 따르면, 메모리 엑세스가 감소된 데이터 분류 동작을 수행하는 시스템 및 그의 동작 방법을 제공할 수 있다.
도 1은 일 실시 예에 따른 시스템을 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 시스템의 동작을 설명하기 위한 도면이다.
도 3a는 일 실시 예에 따른 그룹 유사도를 산출하는 과정을 설명하기 위한 도면이다.
도 3b는 일 실시 예에 따른 데이터 그룹을 그룹핑하는 방법을 설명하기 위한 도면이다.
도 3c는 일 실시 예에 따른 유사도 함수를 설명하기 위한 도면이다.
도 4는 일 실시 예에 따른 그룹 유사도에 따라 데이터 그룹을 결정하는 과정을 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 데이터 유사도를 산출하는 과정을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 데이터 유사도의 최소값을 결정하는 과정을 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 스캔 대상을 결정하는 과정을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 결과 데이터를 결정하는 과정을 설명하기 위한 도면이다.
도 9는 일 실시 예에 따른 시스템의 동작 방법을 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 시스템의 동작을 설명하기 위한 도면이다.
도 3a는 일 실시 예에 따른 그룹 유사도를 산출하는 과정을 설명하기 위한 도면이다.
도 3b는 일 실시 예에 따른 데이터 그룹을 그룹핑하는 방법을 설명하기 위한 도면이다.
도 3c는 일 실시 예에 따른 유사도 함수를 설명하기 위한 도면이다.
도 4는 일 실시 예에 따른 그룹 유사도에 따라 데이터 그룹을 결정하는 과정을 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 데이터 유사도를 산출하는 과정을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 데이터 유사도의 최소값을 결정하는 과정을 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 스캔 대상을 결정하는 과정을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 결과 데이터를 결정하는 과정을 설명하기 위한 도면이다.
도 9는 일 실시 예에 따른 시스템의 동작 방법을 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 일 실시 예에 따른 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 시스템(100)은 네트워크를 통해 외부 장치(200)와 통신할 수 있다. 일 실시 예에서, 시스템(100)은 서버 장치이고, 외부 장치(200)는 사용자의 단말 장치일 수 있다. 다만, 이는 일 실시 예일 뿐이며, 시스템(100) 및 외부 장치(200) 각각은 그 종류나 명칭에 제한되지 아니하고 동종 또는 이종의 다양한 전자 장치로 구현될 수 있다. 예를 들어, 외부 장치(200)는 스마트폰, PC(personal computer), 태블릿 PC, 텔레비전, 셋톱 박스, 스마트 스피커, 게임 콘솔 등으로 구현될 수 있다. 시스템(100)은 클라우드 서버 장치, 인트라넷 서버 장치, 임베디드 서버 장치, 홈 서버 장치 등으로 구현될 수 있다. 다만, 이는 일 실시 예일 뿐이며, 시스템(100)은 스마트폰, 스마트 스피커 등으로 구현될 수 있다.
시스템(100)은 네트워크 인터페이스(110), 프로세서(120), 메모리(130) 및 스토리지(140) 중 적어도 하나를 포함할 수 있다.
네트워크 인터페이스(110)는 다양한 유형의 통신 표준에 따라 외부 장치(200)와 통신을 수행할 수 있는 장치이다. 예를 들어, 네트워크 인터페이스(110)는 블루투스 방식의 통신을 수행하는 블루투스 모듈, 와이파이 방식의 통신을 수행하는 와이파이 모듈, 유선 통신을 수행하는 이더넷 모듈, USB(Universal Serial Bus) 모듈, 썬더볼트 모듈 등으로 구현될 수 있다.
프로세서(120)는 연산을 수행하거나 또는 시스템(100)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(120)는 CPU(Central Processing Unit), APU(Accelerated Processing Unit) 등으로 구현될 수 있다.
메모리(130)는 다양한 데이터를 저장할 수 있다. 구체적으로, 메모리(130)는 프로세서(120)가 빠르게 액세스하기 위한 데이터를 로딩하여 임시 저장할 수 있다. 또는 메모리(130)는 프로세서(120)가 처리한 데이터를 임시 저장할 수 있다. 이를 위해, 메모리(130)는 예를 들어 DRAM(Dynamic Random Access Memory)일 수 있다. 다만, 이에 제한되지 아니하고, 메모리(130)는 SRAM(Static RAM), MRAM(Magnetoresistive RAM), STT-MRAM(Spin-Transfer Torque MRAM), PRAM(Phase-change RAM), RRAM(Resistive RAM), FeRAM(Ferroelectric RAM) 등과 같이 다양한 종류의 RAM으로 변형되어 실시될 수 있다.
스토리지(140)는 다양한 데이터를 저장할 수 있다. 구체적으로, 스토리지(140)는 전원이 공급되지 않아도 저장된 데이터를 계속 유지할 수 있는 비휘발성 메모리일 수 있다. 예를 들어, 스토리지(140)는 플래시 메모리, HDD(Hard Disk Drive), SSD(Solid State Drive) 등으로 구현될 수 있다. 한편, 스토리지(140)는 시스템(100)에 내장되는 내부 스토리지 장치로 구현되거나, 또는 DAS(Direct Attach Storage), NAS(Network Attach Storage), SAN(Storage Area Network) 등의 형태로 네트워크를 통해 시스템(100)에 연결되는 외부 스토리지 장치로 구현될 수 있다.
일 실시 예에서, 메모리(130) 또는 스토리지(140)는 복수의 데이터 그룹들을 저장할 수 있다. 일 실시 예에서, 메모리(130) 또는 스토리지(140)는 복수의 데이터 그룹들에 각각 대응되는 복수의 그룹 벡터들을 저장할 수 있다.
도 2는 일 실시 예에 따른 시스템의 동작을 설명하기 위한 도면이다.
도 1 및 도 2를 참조하면, 프로세서(120)는 프로세서(120)의 외부에서 쿼리(query)를 수신할 수 있다. 여기서, 쿼리(query)는 결과 데이터(r_data)를 요청하는 데이터일 수 있다. 예를 들어, 쿼리(query)는 K개의 이미지를 결과 데이터(r_data)로서 요청하는 이미지 또는 문자 등의 데이터일 수 있다. 구체적인 예를 들어, 쿼리(query)는 프로필 사진과 가장 닮은 K개의 얼굴 사진을 검색해달라는 요청일 수 있다. 여기서, K는 자연수이다. 한편, 상술한 쿼리(query)의 예시는 일 실시 예일 뿐이며, 다양하게 변형되어 실시될 수 있다.
이를 위해, 네트워크 인터페이스(110)는 외부 장치(200)로부터 쿼리(query)를 수신할 수 있다. 네트워크 인터페이스(110)는 수신된 쿼리(query)를 프로세서(120) 또는 메모리(130)로 전달할 수 있다.
프로세서(120)는 쿼리(query)가 수신되면, 스토리지(140)에 저장된 데이터(data)를 메모리(130)에 로딩할 수 있다. 이 경우, 메모리(130)에 데이터(data)가 저장될 수 있다. 여기서, 쿼리(query)는 어느 하나의 클래스로 분류되지 않은 상태이고, 메모리(130) 또는 스토리지(140)에 저장된 데이터(data)는 어느 하나의 클래스로 분류된 상태일 수 있다. 예를 들어, 데이터(data)는 하나의 클래스로 분류되어 데이터 그룹에 포함된 형태로 메모리(130) 또는 스토리지(140)에 저장되어 있을 수 있다. 데이터(data)는 이미지, 문자, 음성, 수치, 명령어 등 다양한 종류의 정보를 나타낸다.
일 실시 예에 있어서, 데이터 그룹들 각각은 대응되는 클래스에 따라 분류된 데이터들을 포함할 수 있다. 구체적으로, 하나의 데이터 그룹은 하나의 클래스에 대응되며, 대응되는 클래스로 분류된 데이터들을 포함할 수 있다. 즉, 데이터들이 각각의 클래스로 분류된 다음에, 분류된 데이터들을 그룹핑한 것이 데이터 그룹일 수 있다. 한편, 클래스는 데이터가 분류되는 항목을 나타낼 수 있다. 예를 들어, 각 클래스는 성별, 피부색, 머리 색깔 등으로 미리 정의될 수 있다. 한편, 상술한 클래스의 예시는 일 실시 예일 뿐이며, 다양하게 변형되어 실시될 수 있다.
프로세서(120)는 쿼리(query) 및 데이터(data)의 유사도(similarity)를 기반으로, 데이터(data) 중에서 결과 데이터(r_data)를 결정할 수 있다. 여기서, 유사도는 두 데이터가 얼마나 같은지를 나타내는 정량적인 지표일 수 있다. 예를 들어, 프로세서(120)는 유사도가 가장 높은 K개의 데이터를 결과 데이터(r_data)로 결정할 수 있다. 그리고, 프로세서(120)는 결과 데이터(r_data)를 메모리(130)에 저장할 수 있다. 또는 프로세서(120)는 결과 데이터(r_data)를 외부 장치(200)로 전송하도록 네트워크 인터페이스(110)를 제어할 수 있다. 이 경우, 외부 장치(200)에 전송된 결과 데이터(r_data)는 외부 장치(200)의 디스플레이를 통해 출력될 수 있다.
일 실시 예에서, 프로세서(120)는 데이터 그룹들 각각 및 쿼리 사이의 제1 유사도들과, 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터들 각각 및 쿼리 사이의 제2 유사도들의 최소값의 비교 결과에 기초하여, 데이터 그룹들 중에서 선택된 데이터 그룹을 포함하는 스캔 대상을 결정할 수 있다. 프로세서(120)는 스캔 대상에 포함된 데이터 그룹의 스캔 데이터들 중에서, 기준 개수에 따라 선택된 스캔 데이터를 쿼리에 대한 결과 데이터로 출력할 수 있다.
구체적으로, 프로세서(120)는 쿼리(query)가 수신되면, 데이터 그룹 및 쿼리 사이의 제1 유사도를 각각 계산할 수 있다. 제1 유사도는 쿼리와 특정한 데이터 그룹이 얼마나 같은지를 나타내는 값일 수 있다. 여기서, 제1 유사도는 그룹 유사도라고 지칭할 수 있다.
그리고, 프로세서(120)는 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터 및 쿼리 사이의 제2 유사도를 각각 계산할 수 있다. 제1 유사도들의 최대값을 갖는 데이터 그룹은 복수의 데이터 그룹들 중에서 쿼리와 가장 유사한 데이터 그룹을 나타낼 수 있다. 제2 유사도는 쿼리와, 데이터 그룹에 포함된 데이터가 얼마나 같은지를 나타내는 값일 수 있다. 여기서, 제2 유사도는 데이터 유사도라고 지칭할 수 있다.
일 실시 예에서, 프로세서(120)는 쿼리(query)의 쿼리 벡터 및 데이터 그룹의 그룹 벡터를 유사도 함수에 입력하여 제1 유사도를 계산할 수 있다. 예를 들어, 프로세서(120)는 쿼리(query)가 수신되면, 쿼리(query)로부터 쿼리 벡터를 추출할 수 있다. 프로세서(120)는 쿼리 벡터와 메모리(130)에 저장된 그룹 벡터를 유사도 함수에 입력한 결과로 제1 유사도를 획득할 수 있다. 유사도 함수는 2개의 벡터를 이용해 유사도를 구하는 함수를 나타낸다. 그룹 벡터는 하나의 데이터 그룹에 포함된 데이터들을 대표할 수 있다.
일 실시 예에 있어서, 프로세서(120)는 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터들에 대응되는 데이터 벡터들 각각 및 쿼리 벡터를 유사도 함수에 입력하여 제2 유사도들을 계산할 수 있다. 예를 들어, 프로세서(120)는 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터로부터 데이터 벡터를 각각 추출할 수 있다. 그리고, 프로세서(120)는 데이터 벡터와 쿼리 벡터를 유사도 함수에 입력하여 제2 유사도를 계산할 수 있다. 다른 실시 예에서, 후술하는 그룹 벡터와 같은 방식으로, 전체 데이터 각각에 대한 데이터 벡터가 미리 추출되어 스토리지(140)에 저장되어 있을 수 있다.
여기서, 쿼리 벡터, 그룹 벡터 및 데이터 벡터 각각은 n차원(n-dimensionality)의 벡터일 수 있다. n은 자연수이다. n차원의 벡터는 n개의 값을 포함할 수 있다.
일 실시 예에서, 메모리(130)는 데이터 그룹들에 각각 대응되는 그룹 벡터들을 저장할 수 있다. 예를 들어, 그룹 벡터는 K-평균(K-means) 알고리즘을 이용하여 데이터 그룹으로부터 미리 추출되어, 스토리지(140)에 저장될 수 있다. 그리고, 프로세서(120)는 쿼리(query)가 수신되면, 스토리지(140)에 저장된 그룹 벡터들을 메모리(130)에 로딩할 수 있다. 프로세서(120)는 수신된 쿼리(query)로부터 쿼리 벡터를 추출할 수 있다. 프로세서(120)는 쿼리 벡터, 및 메모리(130)에 저장된 그룹 벡터를 유사도 함수에 입력한 결과로 제1 유사도를 획득할 수 있다.
그리고, 프로세서(120)는 제1 유사도들과, 제2 유사도들의 최소값의 비교 결과에 기초하여, 전체 데이터 그룹들 중에서 일부 데이터 그룹을 선택할 수 있다. 여기서, 제2 유사도들의 최소값은 쿼리(query)와 가장 유사한 데이터 그룹 내에서 쿼리(query)와 가장 다른 데이터의 유사도를 나타낼 수 있다. 즉, 프로세서(120)는 제2 유사도들의 최소값을 기준으로 전체 데이터 그룹들 중에서 일부 데이터 그룹을 선택할 수 있다. 그리고, 프로세서(120)는 선택된 데이터 그룹을 포함하는 스캔 대상을 결정할 수 있다.
일 실시 예에 있어서, 프로세서(120)는 비교 결과에 따라, 데이터 그룹들 중에서 제2 유사도들의 최소값 이상의 제1 유사도를 갖는 데이터 그룹을 포함하는 스캔 대상을 결정할 수 있다. 즉, 제2 유사도들의 최소값 이상의 제1 유사도를 갖는 데이터 그룹은 스캔 대상에 포함될 수 있다.
일 실시 예에 있어서, 프로세서(120)는 비교 결과에 따라, 데이터 그룹들 중에서 제2 유사도들의 최소값 미만의 제1 유사도를 갖는 데이터 그룹을 제외한 스캔 대상을 결정할 수 있다. 즉, 제2 유사도들의 최소값 미만의 제1 유사도를 갖는 데이터 그룹은 스캔 대상에서 제외될 수 있다.
그리고, 프로세서(120)는 스캔 대상에 포함된 데이터 그룹의 스캔 데이터들 중에서, 기준 개수에 따라 스캔 데이터를 선택할 수 있다. 기준 개수는 쿼리(query)가 요청하는 개수 또는 미리 설정된 개수일 수 있다. 예를 들어, 기준 개수는 K개일 수 있다. K는 자연수이다. 스캔 데이터는 스캔 대상에 포함된 데이터 그룹에 포함된 데이터를 나타낼 수 있다. 그리고, 프로세서(120)는 선택된 스캔 데이터를 쿼리(query)에 대한 결과 데이터(r_data)로 결정하고, 결과 데이터(r_data)를 출력할 수 있다.
일 실시 예에서, 프로세서(120)는 스캔 대상에 포함된 스캔 데이터들 중에서, 기준 개수에 따라 스캔 데이터를 임의로(즉, 무작위로) 선택할 수 있다.
일 실시 예에 있어서, 프로세서(120)는 스캔 대상에 포함된 스캔 데이터들 중에서, 스캔 데이터들 각각 및 쿼리 사이의 제3 유사도가 큰 순서로 기준 개수에 따라 스캔 데이터를 선택할 수 있다. 제3 유사도는 쿼리와 스캔 데이터가 얼마나 같은지를 나타내는 값일 수 있다. 여기서, 제3 유사도는 데이터 유사도라고 지칭할 수 있다. 예를 들어, 프로세서(120)는 스캔 데이터들 중에서 제3 유사도가 큰 순서로 기준 개수만큼 스캔 데이터를 선택하고, 선택된 스캔 데이터를 결과 데이터(r_data)로 결정할 수 있다.
이 경우, 프로세서(120)는 결과 데이터(r_data)를 외부 장치(200)로 전송하도록 네트워크 인터페이스(110)를 제어할 수 있다. 또는, 프로세서(120)는 결과 데이터(r_data)를 저장하도록 메모리(130)로 출력할 수 있다.
본 개시의 일 실시 예에 따르면, 프로세서(120)는 제1 유사도 및 제2 유사도를 이용하여 메모리(130)에 저장된 모든 데이터가 아닌 일부 데이터를 스캔함으로써, 메모리 엑세스를 감소시키면서도 정확한 결과 데이터(r_data)를 결정할 수 있다. 이와 같이, 시스템(100)은 정확성을 유지하면서 메모리 엑세스가 감소된 데이터 분류 동작을 수행할 수 있다.
도 3a는 일 실시 예에 따른 그룹 유사도를 산출하는 과정을 설명하기 위한 도면이다. 그룹 유사도는 상술한 제1 유사도를 나타낸다.
도 3a를 참조하면, 프로세서(120)는 복수의 데이터 그룹(G1~G3) 각각 및 쿼리(query) 사이의 그룹 유사도들(sg_1~sg_3)을 계산할 수 있다.
구체적으로, 복수의 데이터 그룹(G1~G3) 각각은 대응되는 클래스로 분류된 데이터들(d_11~d_13, d_21~d_23, d_31~d_33)을 포함할 수 있다. 예를 들어, 제1 데이터 그룹(G1)은 제1 클래스로 분류된 데이터들(d_11~d_13)을 포함할 수 있다. 제2 데이터 그룹(G2)은 제2 클래스로 분류된 데이터들(d_21~d_23)을 포함할 수 있다. 제3 데이터 그룹(G3)은 제3 클래스로 분류된 데이터들(d_31~d_33)을 포함할 수 있다. 한편, 미분류된 데이터들을 분류하여 데이터 그룹으로 그룹핑하는 과정은 도 3b를 참조하여 설명하도록 한다.
프로세서(120)는 복수의 데이터 그룹(G1~G3) 각각으로부터 대응되는 그룹 벡터(gv_1~gv_3)를 추출할 수 있다. 프로세서(120)는 추출된 그룹 벡터(gv_1~gv_3)를 메모리(130) 또는 스토리지(140)에 저장할 수 있다. 이후, 프로세서(120)는 쿼리(query)가 수신되면, 쿼리(query)로부터 쿼리 벡터(qv)를 추출할 수 있다.
프로세서(120)는 복수의 그룹 벡터들(gv_1~gv_3) 각각 및 쿼리 벡터(qv)를 유사도 함수에 입력하여 그룹 유사도들을 계산할 수 있다. 예를 들어, 프로세서(120)는 제1 그룹 벡터(gv_1) 및 쿼리 벡터(qv)를 유사도 함수에 입력하여 제1 그룹 유사도(sg_1)를 계산할 수 있다. 프로세서(120)는 제2 그룹 벡터(gv_2) 및 쿼리 벡터(qv)를 유사도 함수에 입력하여 제2 그룹 유사도(sg_2)를 계산할 수 있다. 프로세서(120)는 제3 그룹 벡터(gv_3) 및 쿼리 벡터(qv)를 유사도 함수에 입력하여 제3 그룹 유사도(sg_3)를 계산할 수 있다. 유사도 함수는 도 3c에서 구체적으로 설명하도록한다.
도 3b는 일 실시 예에 따른 데이터 그룹을 그룹핑하는 방법을 설명하기 위한 도면이다.
도 3b의 (1) 내지 (6)은 클러스터링 알고리즘을 이용하여 데이터 그룹을 그룹핑하는 순서를 나타낸 것이다. 클러스터링 알고리즘은 머신 러닝 알고리즘 중 비지도 학습에 해당하며, 데이터를 각각의 군집으로 묶어서 같은 군집의 요소들은 서로 비슷하도록, 다른 군집에 속하는 것들은 달라지도록 하는 그룹을 찾아가는 방식으로 데이터를 분류할 수 있다.
도 3b의 (1)을 참조하면, 프로세서(120)는 미분류된 데이터들을 벡터 공간 상에서 데이터 벡터에 대응되는 위치에 배치할 수 있다.
도 3b의 (2)를 참조하면, 프로세서(120)는 K개의 중심점들(centroid, 321, 322)을 벡터 공간 상의 임의의 위치에 배치할 수 있다. 여기서, K는 자연수이다. K는 데이터 그룹들(G1, G2)의 개수와 같을 수 있다. 이하에서는, K는 2로 가정하여 설명하도록 한다.
도 3b의 (3)을 참조하면, 프로세서(120)는 미분류된 데이터들 각각의 위치와 2개의 중심점들(331, 332) 각각의 위치를 비교하여, 미분류된 데이터들 각각을 2개의 중심점들(331, 332) 중 더 가까운 중심점에 할당할 수 있다. 예를 들어, 제1 중심점(331)에 가까운 데이터들은 제1 중심점(331)에 할당되고, 제1 중심점(331)에 대응되는 제1 데이터 그룹(G1)으로 분류될 수 있다. 제2 중심점(332)에 가까운 데이터들은 제2 중심점(332)에 할당되고, 제2 중심점(332)에 대응되는 제2 데이터 그룹(G2)으로 분류될 수 있다.
이 경우, 프로세서(120)는 2개의 중심점들(331, 332) 각각에 할당된 데이터들을 기초로, 복수의 중심점들(331, 332) 각각의 위치를 재배치할 수 있다. 예를 들어, 제1 중심점(331)이 할당된 데이터들(즉, 제1 데이터 그룹(G1)으로 분류된 데이터들)의 중심 위치로 제1 중심점(331)의 위치가 재배치될 수 있다. 제2 중심점(332) 또한 같은 방식으로 재배치될 수 있다. 도 3b의 (4)는 위치가 재배치된 중심점들(341, 342)을 나타낸 것이다. 즉, 중심점들(341, 342) 각각은 위치가 업데이트될 수 있다.
도 3b의 (5)를 참조하면, 프로세서(120)는 데이터들 각각을 재배치된 복수의 중심점들(351, 352) 중 더 가까운 중심점에 할당할 수 있다. 구체적으로, 할당된 데이터들 각각의 위치 및 복수의 중심점들(351, 352) 각각의 위치를 비교하여, 할당된 데이터들을 복수의 중심점들(351, 352) 중 더 가까운 중심점으로 재할당할 수 있다. 즉, 제1 데이터 그룹(G1) 및 제2 데이터 그룹(G2)으로 분류된 데이터들을 재분류할 수 있다.
다시, 프로세서(120)는 2개의 중심점들(351, 352) 각각에 할당된 데이터들을 기초로, 복수의 중심점들(351, 352) 각각의 위치를 재배치할 수 있다.
예를 들어, 도 3b의 (6)과 같이 중심점들(361, 362)은 위치가 재배치될 수 있다. 그리고, 데이터들 각각을 재배치된 복수의 중심점들(361, 362) 중 더 가까운 중심점에 할당할 수 있다. 이러한 동작은 중심점(361, 362)의 위치가 변경되지 않을 때까지 반복하여 수행될 수 있다.
그리고, 프로세서(120)는 최종적으로 결정된 하나의 중심점(361, 362)에 할당된 데이터들을 하나의 데이터 그룹(G1, G2)으로 그룹핑할 수 있다. 이와 같이, 하나의 데이터 그룹(G1, G2)은 데이터 벡터의 위치가 인접한 데이터들을 포함할 수 있다. 또한, 하나의 데이터 그룹(G1, G2)의 중심점(361, 362)에 대응되는 벡터가 그룹 벡터로 결정될 수 있다. 예를 들어, 제1 데이터 그룹(G1)의 그룹 벡터는 제1 중심점(361)에 대응되는 벡터일 수 있다. 같은 방식으로 제2 데이터 그룹(G2)의 그룹 벡터는 제2 중심점(362)에 대응되는 벡터일 수 있다.
도 3c는 일 실시 예에 따른 유사도 함수를 설명하기 위한 도면이다.
도 3c의 (1)을 참조하면, A 및 B는 n차원의 벡터를 나타낸다. 여기서, n은 자연수이다. n차원의 벡터는 n개의 값을 포함할 수 있다. 예를 들어, 각 차원(또는 원소)은 눈, 코, 눈썹 등과 같이 미리 정의된 특징을 나타내며, 각 값은 크기, 형상, 색상 등을 나타낼 수 있다. 다만, 이는 일 실시 예일 뿐이며, 벡터의 차원에 할당된 특징은 다양하게 변형되어 실시될 수 있다. 한편, A는 쿼리 벡터이고, B는 그룹 벡터 또는 데이터 벡터일 수 있다.
일 실시 예에서, 유사도 함수는 유클리드 거리 함수 및 코사인 유사도 함수 중 하나일 수 있다.
도 3c의 (2-1)를 참조하면, 유사도 함수는 코사인 유사도 함수(cos(θ))일 수 있다. 코사인 유사도 함수(cos(θ))는 두 벡터 사이의 코사인 각도를 이용하여 유사도를 계산하는 함수를 나타낼 수 있다. 코사인 유사도 함수(cos(θ))에 A 및 B를 입력한 결과로 유사도(similarity)를 계산할 수 있다. 이때, 유사도(similarity)는 스칼라 값일 수 있다.
도 3c의 (2-2)를 참조하면, 유사도 함수는 유클리드 거리 함수(||A-B||)일 수 있다. 유클리드 거리 함수(||A-B||)는 공간 상에서 두 점 사이의 거리를 이용하여 유사도를 계산하는 함수를 나타낼 수 있다. 유클리드 거리 함수(||A-B||)에 A 및 B를 입력한 결과로 유사도(similarity)를 계산할 수 있다. 이때, 유사도(similarity)는 스칼라 값일 수 있다.
한편, 상술한 실시 예는 일 실시 예일 뿐이며, 유사도 함수는 Jaccard Distance, Mahalanobis Distance, Hamming Distance, Manhattan Distance, Minkowski Distance 등 다양한 함수들 중 하나로 변형될 수 있다.
도 4는 일 실시 예에 따른 그룹 유사도에 따라 데이터 그룹을 결정하는 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 프로세서(120)는 복수의 데이터 그룹들(G1~G3) 중에서 그룹 유사도들(sg_1~sg_3)의 최대값을 갖는 데이터 그룹을 기준 데이터 그룹(410)으로 결정할 수 있다. 이는, 쿼리(query)와 가장 유사한 데이터 그룹을 기준 데이터 그룹(410)으로 선정하여, 전체 데이터 그룹 중 기준 데이터 그룹(410)에 포함된 모든 데이터들을 우선적으로 스캔하기 위한 것이다.
예를 들어, 제1 테이블(400)은 프로세서(120)에 의해 쿼리(query) 및 각 데이터 그룹(G1~G3) 사이의 그룹 유사도(sg_1~sg_3)가 계산된 결과를 나타낸다. 여기서, 제1 그룹 유사도(sg_1)가 가장 크고, 제3 그룹 유사도(sg_3)가 다음으로 크고, 제2 그룹 유사도(sg_2)가 가장 작은 것을 가정하도록 한다.
이 경우, 프로세서(120)는 그룹 유사도들(sg_1~sg_3)의 상대적인 크기에 따라, 그룹 유사도들(sg_1~sg_3) 각각에 랭킹을 부여하거나 그룹 유사도들(sg_1~sg_3)을 정렬할 수 있다. 프로세서(120)는 랭킹 또는 정렬에 따라, 그룹 유사도들(sg_1~sg_3)의 최대값인 제1 그룹 유사도(sg_1)를 갖는 제1 데이터 그룹(G1)을 기준 데이터 그룹(410)으로 결정할 수 있다.
이하에서는 기준 데이터 그룹(410)은 제1 데이터 그룹(G1)인 것으로 가정하여 설명하도록 한다.
도 5는 일 실시 예에 따른 데이터 유사도를 산출하는 과정을 설명하기 위한 도면이다.
도 5를 참조하면, 프로세서(120)는 복수의 데이터 그룹들(G1~G3) 중에서 그룹 유사도들의 최대값을 갖는 제1 데이터 그룹(G1)에 포함된 데이터들(d_11~d_13) 각각 및 쿼리(query) 사이의 데이터 유사도들(sd_11~sd_13)을 계산할 수 있다. 여기서, 제1 데이터 그룹(G1)은 기준 데이터 그룹(410)으로 결정된 것일 수 있다.
구체적으로, 프로세서(120)는 제1 데이터 그룹(G1)에 포함된 데이터들(d_11~d_13) 각각의 데이터 벡터(dv_11~dv_13) 및 쿼리(query)의 쿼리 벡터(qv) 사이의 데이터 유사도들(sd_11~sd_13)을 계산할 수 있다. 데이터 벡터(dv_11~dv_13)는 제1 데이터 그룹(G1)에 포함된 데이터들(d_11~d_13) 각각으로부터 추출될 수 있다. 쿼리 벡터(qv)는 쿼리(query)로부터 추출될 수 있다. 한편, 쿼리 또는 데이터로부터 벡터가 추출되는 방식은 컨벌루션 신경망(Convolutional Neural Network: CNN), MFCC(mel frequency cepstral coefficient) 등 다양한 알고리즘이 이용될 수 있다.
프로세서(120)는 데이터 벡터(dv_11~dv_13) 및 쿼리 벡터(qv)를 유사도 함수에 입력하여 데이터 유사도(sd_11~sd_13)를 계산할 수 있다. 예를 들어, 프로세서(120)는 제1 데이터 벡터(dv_11) 및 쿼리 벡터(qv)를 유사도 함수의 매개변수로 이용하여 유사도 함수를 계산하고, 유사도 함수의 계산 결과인 제1 데이터 유사도(sd_11)를 획득할 수 있다. 같은 방식으로 프로세서(120)는 제2 데이터 유사도(sd_12) 및 제3 데이터 유사도(sd_13)를 획득할 수 있다. 유사도 함수는 도 3c 및 관련 단락에서 전술한 내용과 중복되는 점에서 생략하도록 한다.
도 6은 일 실시 예에 따른 데이터 유사도의 최소값을 결정하는 과정을 설명하기 위한 도면이다.
도 6을 참조하면, 프로세서(120)는 제1 데이터 그룹(G1)에 포함된 데이터들(d_11~d_13) 각각에 대한 데이터 유사도들(sd_11~sd_13)의 최소값을 기준값(610)으로 결정할 수 있다. 여기서, 제1 데이터 그룹(G1)은 복수의 데이터 그룹들(G1~G3) 중에서 그룹 유사도들의 최대값을 갖는 데이터 그룹이다. 여기서, 기준값(610)은 쿼리(query)와 가장 유사한 데이터 그룹 내 가장 다른 데이터에 대한 유사도를 나타내며, 다른 데이터 그룹을 스캔할 것인지 여부를 결정하는 기준이 되는 값이다.
구체적으로, 제2 데이터 유사도(sd_12)가 가장 크고, 제3 데이터 유사도(sd_13)가 다음으로 크고, 제1 그룹 유사도(sd_11)가 가장 작은 것을 가정하도록 한다.
이 경우, 프로세서(120)는 제1 데이터 그룹(G1)에 포함된 데이터들(d_11~d_13) 각각에 대한 데이터 유사도들(sd_11~sd_13)의 상대적인 크기에 따라, 데이터 유사도들(sd_11~sd_13) 각각에 랭킹을 부여하거나 데이터 유사도들(sd_11~sd_13)을 정렬할 수 있다. 예를 들어, 제2 테이블(600)와 같이 프로세서(120)에 의해 쿼리(query) 및 데이터(d_11~d_13) 사이의 데이터 유사도들(sd_11~sd_13)이 계산되고 랭킹이 부여된 결과가 나타날 수 있다.
프로세서(120)는 랭킹 또는 정렬에 따라, 데이터 유사도들(sd_11~sd_13)의 최소값인 제1 데이터 유사도(sd_11)를 기준값(610)으로 결정할 수 있다. 이하에서는 기준값(610)은 제1 데이터 유사도(sd_11)인 것으로 가정하여 설명하도록 한다.
도 7은 일 실시 예에 따른 스캔 대상을 결정하는 과정을 설명하기 위한 도면이다.
도 7을 참조하면, 프로세서(120)는 복수의 데이터 그룹들(G1~G3) 중에서, 기준값(sd_min) 이상의 그룹 유사도를 갖는 데이터 그룹을 포함하는 스캔 대상을 결정할 수 있다.
구체적으로, 프로세서(120)는 데이터 그룹(G2, G3)에 대한 그룹 유사도(sg_2, sg_3)와 기준값(sd_min)의 크기를 비교할 수 있다. 여기서, 데이터 그룹(G2, G3)은 복수의 데이터 그룹들(G1~G3) 중에서 기준 데이터 그룹을 제외한 나머지 데이터 그룹일 수 있다. 기준 데이터 그룹은 그룹 유사도들(sg_1~sg_3)의 최대값을 갖는 제1 데이터 그룹(G1)일 수 있다. 기준값(sd_min)은 제1 데이터 그룹(G1)에 포함된 데이터들(d_11~d_13)에 대한 데이터 유사도들(sd_11~sd_13)의 최소값일 수 있다.
일 실시 예에 있어서, 프로세서(120)는 기준값(sd_min) 미만의 그룹 유사도를 갖는 데이터 그룹(710)을 제외한 스캔 대상을 결정할 수 있다. 예를 들어, 프로세서(120)는 기준값(sd_min) 미만인 제2 그룹 유사도(sg_2)를 갖는 제2 데이터 그룹(G2)을 스캔 대상에서 제외할 수 있다.
일 실시 예에 있어서, 프로세서(120)는 기준값(sd_min) 이상의 그룹 유사도를 갖는 데이터 그룹(720)을 포함하는 스캔 대상을 결정할 수 있다. 예를 들어, 프로세서(120)는 기준값(sd_min) 이상인 제3 그룹 유사도(sg_3)를 갖는 제3 데이터 그룹(G3)을 스캔 대상에 포함시킬 수 있다.
일 실시 예에 있어서, 프로세서(120)는 기준 데이터 그룹으로 결정한 제1 데이터 그룹(G1)을 스캔 대상에 포함시킬 수 있다. 여기서, 제1 데이터 그룹(G1)의 데이터들(d_11~d_13) 및 쿼리(query) 사이의 데이터 유사도(sd_11~sd_13)는 앞서 계산되어 메모리(130)에 저장되어 있을 수 있다. 예를 들어, 도 4의 제1 테이블(400)은 메모리(130)에 저장되어 있을 수 있다.
이 경우, 제3 테이블(700)과 같이 제2 데이터 그룹(G2)은 스캔 대상에서 제외되고, 제3 데이터 그룹(G3)은 스캔 대상에 포함될 수 있다. 이 경우, 프로세서(120)는 제3 데이터 그룹(G3)에 포함된 데이터들(d_31~d_33) 각각 및 쿼리(query) 사이의 데이터 유사도를 계산할 수 있다. 예를 들어, 도 5에서 설명한 내용과 같이, 프로세서(120)는 데이터들(d_31~d_33) 각각에 대한 데이터 벡터와 쿼리 벡터(qv)를 유사도 함수에 입력하여 데이터 유사도를 계산할 수 있다. 그리고, 프로세서(120)는 앞서 계산된 제1 데이터 그룹(G1)의 데이터들(d_11~d_13) 및 쿼리(query) 사이의 데이터 유사도(sd_11~sd_13)와, 스캔 대상에 포함된 제3 데이터 그룹(G3)의 데이터들(d_31~d_33) 및 쿼리(query) 사이의 데이터 유사도를 비교하여, 결과 데이터(r_data)를 결정할 수 있다. 구체적인 내용은 도 8을 참조하여 설명하도록 한다.
도 8은 일 실시 예에 따른 결과 데이터를 결정하는 과정을 설명하기 위한 도면이다.
도 8을 참조하면, 프로세서(120)는 스캔 대상에 포함된 제1 데이터 그룹(G1) 및 제3 데이터 그룹(G3)에 포함된 데이터들(d11~d13, d31~d33)의 데이터 유사도(sd11~sd13, sd31~sd33)의 크기를 비교할 수 있다. 한편, 스캔 대상에 포함된 데이터들의 데이터 유사도(sd11~sd13, sd31~sd33)는 제3 유사도라 지칭할 수 있다.
프로세서(120)는 데이터 유사도(sd11~sd13, sd31~sd33)의 상대적인 크기에 따라, 데이터 유사도(sd11~sd13, sd31~sd33) 각각에 랭킹을 부여하거나 데이터 유사도(sd11~sd13, sd31~sd33)를 정렬할 수 있다. 이 경우, 정렬된 결과는 제4 테이블(800)과 같이 나타날 수 있다.
그리고, 프로세서(120)는 스캔 대상에 포함된 데이터들(d11~d13, d31~d33) 중에서, 데이터 유사도(sd11~sd13, sd31~sd33)가 큰 순서(즉, 랭킹이 높은 순서)로 기준 개수에 따라 데이터를 선택할 수 있다. 기준 개수는 쿼리(query)가 요청하는 개수 또는 미리 설정된 개수일 수 있다. 예를 들어, 기준 개수는 3개일 수 있다.
이 경우, 프로세서(120)는 데이터 유사도가 큰 순서로 3개의 데이터(d_12, d_13, d_31)를 선택하여 결과 데이터(810)로 결정할 수 있다. 프로세서(120)는 결과 데이터(810)를 메모리(130) 또는 네트워크 인터페이스(110)로 출력할 수 있다.
도 9는 일 실시 예에 따른 시스템의 동작 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 시스템(100)의 동작 방법은 복수의 데이터 그룹들에 각각 대응되는 복수의 그룹 벡터들을 저장하는 단계(S910), 외부 장치(200)로부터 쿼리를 수신하는 단계(S920), 복수의 데이터 그룹들 중, 쿼리의 쿼리 벡터 및 복수의 그룹 벡터들 각각 사이의 그룹 유사도들의 최대값에 대응되는 데이터 그룹을 결정하는 단계(S930), 결정된 데이터 그룹에 포함된 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도들의 최소값에 기초하여, 복수의 데이터 그룹들 중 스캔 대상에 포함되는 데이터 그룹의 스캔 데이터들을 결정하는 단계(S940), 및 스캔 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도에 기초하여, 스캔 데이터들 중에서 쿼리에 대한 결과 데이터를 결정하는 단계(S950)를 포함할 수 있다.
구체적으로, 복수의 데이터 그룹들에 각각 대응되는 복수의 그룹 벡터들을 저장할 수 있다(S910). 데이터 그룹은 클래스에 대응되는 데이터들을 포함할 수 있다. 그룹 벡터는 데이터 그룹 또는 데이터 그룹에 포함된 데이터들을 대표하는 벡터일 수 있다.
그리고, 외부 장치(200)로부터 쿼리를 수신할 수 있다(S920). 쿼리는 사용자의 요청을 나타내는 데이터일 수 있다.
그리고, 복수의 데이터 그룹들 중, 쿼리의 쿼리 벡터 및 복수의 그룹 벡터들 각각 사이의 그룹 유사도들의 최대값에 대응되는 데이터 그룹을 결정할 수 있다(S930). 쿼리 벡터는 쿼리가 벡터로 변환된 것을 나타낼 수 있다.
그리고, 결정된 데이터 그룹에 포함된 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도들의 최소값에 기초하여, 복수의 데이터 그룹들 중 스캔 대상에 포함되는 데이터 그룹의 스캔 데이터들을 결정할 수 있다(S940).
일 실시 예에 있어서, 스캔 데이터들을 결정하는 단계(S940)는 복수의 데이터 그룹들 중에서, 최소값 이상의 그룹 유사도를 갖는 데이터 그룹을 포함하는 스캔 대상을 결정할 수 있다.
일 실시 예에 있어서, 스캔 데이터들을 결정하는 단계(S940)는 복수의 데이터 그룹들 중에서, 최소값 미만의 그룹 유사도를 갖는 데이터 그룹을 제외한 스캔 대상을 결정할 수 있다.
그리고, 스캔 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도에 기초하여, 스캔 데이터들 중에서 쿼리에 대한 결과 데이터를 결정할 수 있다(S950).
일 실시 예에 있어서, 결과 데이터를 결정하는 단계(S950)는 스캔 데이터들 중에서, 스캔 데이터들 각각의 데이터 벡터 및 쿼리 벡터 사이의 데이터 유사도가 큰 순서로 기준 개수에 따라 선택된 결과 데이터를 결정할 수 있다.
일 실시 예에 있어서, 시스템(100)의 동작 방법은 결과 데이터를 결정하는 단계(S950) 이후에, 결과 데이터를 외부 장치(200)로 전송하거나 또는 메모리(130)에 저장하는 단계를 더 포함할 수 있다.
일 실시 예에 있어서, 시스템(100)의 동작 방법은 복수의 그룹 벡터들을 저장하는 단계(S910) 이전에, 메모리(130)에 저장된 데이터들을 복수의 데이터 그룹들로 각각 그룹핑하는 단계를 더 포함할 수 있다.
구체적인 일 실시 예에 있어서, 벡터 공간 상의 임의의 위치에 복수의 중심점들을 배치하고, 데이터들을 각 데이터 벡터에 대응되는 위치에 배치할 수 있다. 그리고, 데이터들 각각을 복수의 중심점들 중 더 가까운 중심점에 할당할 수 있다.
그리고, 복수의 중심점들 각각에 할당된 데이터들을 기초로, 복수의 중심점들 각각의 위치를 재배치할 수 있다. 즉, 중심점의 위치는 다른 위치로 업데이트될 수 있다. 예를 들어, 해당 중심점이 할당된 데이터들의 중심 위치로 중심점의 위치가 재배치될 수 있다. 그리고, 데이터들 각각을 재배치된 복수의 중심점들 중 더 가까운 중심점에 할당할 수 있다. 한편, 복수의 중심점들 각각의 위치를 재배치하는 단계와 데이터들 각각을 가까운 중심점에 할당하는 단계는 재배치에 따른 중심점의 위치가 변경되지 않을 때까지 반복하여 수행될 수 있다.
그리고, 하나의 중심점에 할당된 데이터들을 복수의 데이터 그룹들 중 하나의 데이터 그룹으로 그룹핑할 수 있다.
100: 시스템
110: 네트워크 인터페이스
120: 프로세서
130: 메모리
140: 스토리지
200: 외부 장치
110: 네트워크 인터페이스
120: 프로세서
130: 메모리
140: 스토리지
200: 외부 장치
Claims (20)
- 메모리; 및
상기 메모리에 저장된 데이터 그룹들 각각 및 외부에서 수신된 쿼리 사이의 제1 유사도들과, 상기 제1 유사도들의 최대값을 갖는 데이터 그룹에 포함된 데이터들 각각 및 상기 쿼리 사이의 제2 유사도들의 최소값의 비교 결과에 기초하여, 상기 데이터 그룹들 중에서 선택된 데이터 그룹을 포함하는 스캔 대상을 결정하고,
상기 스캔 대상에 포함된 데이터 그룹의 스캔 데이터들 중에서, 기준 개수에 따라 선택된 스캔 데이터를 상기 쿼리에 대한 결과 데이터로 출력하는 프로세서;를 포함하는 시스템.
- 제1항에 있어서,
상기 메모리는,
상기 데이터 그룹들에 각각 대응되는 그룹 벡터들을 저장하고,
상기 프로세서는,
상기 쿼리가 수신되면, 상기 쿼리에 대응되는 쿼리 벡터 및 상기 그룹 벡터들 각각을 유사도 함수에 입력하여 상기 제1 유사도들을 계산하는 시스템.
- 제2항에 있어서,
상기 유사도 함수는,
유클리드 거리 함수 및 코사인 유사도 함수 중 하나를 포함하는 시스템.
- 제3항에 있어서,
상기 프로세서는,
상기 최대값을 갖는 데이터 그룹에 포함된 데이터들에 대응되는 데이터 벡터들 각각 및 상기 쿼리 벡터를 상기 유사도 함수에 입력하여 상기 제2 유사도들을 계산하는 시스템.
- 제1항에 있어서,
상기 프로세서는,
상기 비교 결과에 따라, 상기 데이터 그룹들 중에서 상기 제2 유사도들의 상기 최소값 이상의 제1 유사도를 갖는 데이터 그룹을 포함하는 상기 스캔 대상을 결정하는 시스템.
- 제1항에 있어서,
상기 프로세서는,
상기 비교 결과에 따라, 상기 데이터 그룹들 중에서 상기 제2 유사도들의 상기 최소값 미만의 제1 유사도를 갖는 데이터 그룹을 제외한 상기 스캔 대상을 결정하는 시스템.
- 제1항에 있어서,
네트워크 인터페이스;를 더 포함하고,
상기 프로세서는,
상기 스캔 데이터들 중에서, 상기 스캔 데이터들 각각 및 상기 쿼리 사이의 제3 유사도가 큰 순서로 상기 기준 개수에 따라 선택된 상기 스캔 데이터를 외부 장치로 전송하도록 상기 네트워크 인터페이스를 제어하는 시스템.
- 제1항에 있어서,
데이터 그룹들 각각은,
대응되는 클래스에 따라 분류된 데이터들을 포함하는 시스템.
- 메모리; 및
상기 메모리에 저장된 복수의 데이터 그룹들 각각 및 외부 장치로부터 수신된 쿼리 사이의 그룹 유사도들을 계산하고,
상기 복수의 데이터 그룹들 중에서 상기 그룹 유사도들의 최대값을 갖는 기준 데이터 그룹에 포함된 데이터들 각각 및 상기 쿼리 사이의 데이터 유사도들을 기초로 기준값을 결정하고,
상기 복수의 데이터 그룹들 중에서, 상기 기준값 이상의 그룹 유사도를 갖는 데이터 그룹을 포함하는 스캔 대상을 결정하고,
상기 스캔 대상에 포함된 스캔 데이터들 중에서, 상기 스캔 데이터들 각각 및 상기 쿼리 사이의 데이터 유사도가 큰 순서로 기준 개수에 따라 선택된 스캔 데이터를 상기 쿼리에 대한 결과 데이터로 출력하는 프로세서;를 포함하는 시스템.
- 제9항에 있어서,
상기 프로세서는,
상기 복수의 데이터 그룹들에 대응되는 복수의 그룹 벡터들 각각 및 상기 쿼리에 대응되는 쿼리 벡터를 유사도 함수에 입력하여 상기 그룹 유사도들을 계산하고,
상기 최대값을 갖는 데이터 그룹에 포함된 데이터들 각각의 데이터 벡터 및 상기 쿼리 벡터를 상기 유사도 함수에 입력하여 상기 데이터 유사도들을 계산하는 시스템.
- 제10항에 있어서,
상기 유사도 함수는,
유클리드 거리 함수 및 코사인 유사도 함수 중 하나를 포함하는 시스템.
- 제9항에 있어서,
상기 프로세서는,
상기 복수의 데이터 그룹들 중에서, 상기 기준값 미만의 그룹 유사도를 갖는 데이터 그룹을 제외한 상기 스캔 대상을 결정하는 시스템.
- 제9항에 있어서,
상기 복수의 데이터 그룹들을 저장하는 스토리지;를 더 포함하고,
상기 프로세서는,
상기 쿼리가 수신되면, 상기 스토리지에 저장된 상기 복수의 데이터 그룹들을 상기 메모리에 로딩하는 시스템.
- 복수의 데이터 그룹들에 각각 대응되는 복수의 그룹 벡터들을 저장하는 단계;
외부 장치로부터 쿼리를 수신하는 단계;
상기 복수의 데이터 그룹들 중, 상기 쿼리의 쿼리 벡터 및 상기 복수의 그룹 벡터들 각각 사이의 그룹 유사도들의 최대값에 대응되는 데이터 그룹을 결정하는 단계;
상기 결정된 데이터 그룹에 포함된 데이터들 각각의 데이터 벡터 및 상기 쿼리 벡터 사이의 데이터 유사도들의 최소값에 기초하여, 상기 복수의 데이터 그룹들 중 스캔 대상에 포함되는 데이터 그룹의 스캔 데이터들을 결정하는 단계; 및
상기 스캔 데이터들 각각의 데이터 벡터 및 상기 쿼리 벡터 사이의 데이터 유사도에 기초하여, 상기 스캔 데이터들 중에서 상기 쿼리에 대한 결과 데이터를 결정하는 단계;를 포함하는 시스템의 동작 방법.
- 제14항에 있어서,
상기 스캔 데이터들을 결정하는 단계는,
상기 복수의 데이터 그룹들 중에서, 상기 최소값 이상의 그룹 유사도를 갖는 데이터 그룹을 포함하는 상기 스캔 대상을 결정하는 시스템의 동작 방법.
- 제14항에 있어서,
상기 스캔 데이터들을 결정하는 단계는,
상기 복수의 데이터 그룹들 중에서, 상기 최소값 미만의 그룹 유사도를 갖는 데이터 그룹을 제외한 상기 스캔 대상을 결정하는 시스템의 동작 방법.
- 제14항에 있어서,
상기 결과 데이터를 결정하는 단계는,
상기 스캔 데이터들 중에서, 상기 스캔 데이터들 각각의 상기 데이터 벡터 및 상기 쿼리 벡터 사이의 상기 데이터 유사도가 큰 순서로 기준 개수에 따라 선택된 상기 결과 데이터를 결정하는 시스템의 동작 방법.
- 제14항에 있어서,
메모리에 저장된 데이터들을 상기 복수의 데이터 그룹들로 각각 그룹핑하는 단계;를 더 포함하는 시스템의 동작 방법.
- 제18항에 있어서,
상기 그룹핑하는 단계는,
벡터 공간 상의 임의의 위치에 복수의 중심점들을 배치하고, 상기 데이터들을 각 데이터 벡터에 대응되는 위치에 배치하는 단계;
상기 데이터들 각각을 상기 복수의 중심점들 중 더 가까운 중심점에 할당하는 단계;
상기 복수의 중심점들 각각에 할당된 데이터들을 기초로, 상기 복수의 중심점들 각각의 위치를 재배치하는 단계;
상기 데이터들 각각을 상기 재배치된 복수의 중심점들 중 더 가까운 중심점에 할당하는 단계; 및
하나의 중심점에 할당된 데이터들을 상기 복수의 데이터 그룹들 중 하나의 데이터 그룹으로 그룹핑하는 단계;를 포함하는 시스템의 동작 방법.
- 제14항에 있어서,
상기 결과 데이터를 상기 외부 장치로 전송하거나 또는 메모리에 저장하는 단계;를 더 포함하는 시스템의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220098576A KR20240020482A (ko) | 2022-08-08 | 2022-08-08 | 시스템 및 그의 동작 방법 |
US18/168,045 US20240045861A1 (en) | 2022-08-08 | 2023-02-13 | System for classifying data based on a classification algorithm and method of operating the same |
CN202310505183.1A CN117540068A (zh) | 2022-08-08 | 2023-05-08 | 基于分类算法对数据进行分类的系统及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220098576A KR20240020482A (ko) | 2022-08-08 | 2022-08-08 | 시스템 및 그의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240020482A true KR20240020482A (ko) | 2024-02-15 |
Family
ID=89769165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220098576A KR20240020482A (ko) | 2022-08-08 | 2022-08-08 | 시스템 및 그의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240045861A1 (ko) |
KR (1) | KR20240020482A (ko) |
CN (1) | CN117540068A (ko) |
-
2022
- 2022-08-08 KR KR1020220098576A patent/KR20240020482A/ko unknown
-
2023
- 2023-02-13 US US18/168,045 patent/US20240045861A1/en active Pending
- 2023-05-08 CN CN202310505183.1A patent/CN117540068A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117540068A (zh) | 2024-02-09 |
US20240045861A1 (en) | 2024-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102449191B1 (ko) | 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법 | |
Gordo et al. | Asymmetric distances for binary embeddings | |
Grauman et al. | Learning binary hash codes for large-scale image search | |
US20160203191A1 (en) | Recommendation system with metric transformation | |
US9442929B2 (en) | Determining documents that match a query | |
WO2019178155A1 (en) | Efficient convolutional network for recommender systems | |
US10528613B2 (en) | Method and apparatus for performing a parallel search operation | |
JP5794036B2 (ja) | 画像検索装置、画像検索方法、およびプログラム | |
US11281645B2 (en) | Data management system, data management method, and computer program product | |
EP3907628A1 (en) | Technologies for performing random sparse lifting and procrustean orthogonal sparse hashing using column read-enabled memory | |
US20210406312A1 (en) | Information processing apparatus and information processing method | |
WO2022007596A1 (zh) | 图像检索系统、方法和装置 | |
KR101435010B1 (ko) | 다수의 특징을 이용한 순차적 바이너리 코드 학습 방법 및 학습 장치 | |
US9104946B2 (en) | Systems and methods for comparing images | |
WO2022179023A1 (zh) | 一种排序装置及方法 | |
Cherian | Nearest neighbors using compact sparse codes | |
KR20240020482A (ko) | 시스템 및 그의 동작 방법 | |
Elleuch et al. | Multi-index structure based on SIFT and color features for large scale image retrieval | |
JP2017138892A (ja) | 情報処理装置、処理装置、及び、データ検索方法 | |
NL2028948B1 (en) | Facilitating improved use of stochastic associative memory | |
Antaris et al. | Similarity search over the cloud based on image descriptors' dimensions value cardinalities | |
WO2020237511A1 (zh) | 相似性搜索方法、装置、服务器及存储介质 | |
Daoudi et al. | A fast and efficient fuzzy approximation-based indexing for CBIR | |
Georgiadis et al. | Skyline-based dissimilarity of images | |
US20180032912A1 (en) | Data processing method, and data processing apparatus |