KR102577342B1 - 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법 - Google Patents

거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법 Download PDF

Info

Publication number
KR102577342B1
KR102577342B1 KR1020210007875A KR20210007875A KR102577342B1 KR 102577342 B1 KR102577342 B1 KR 102577342B1 KR 1020210007875 A KR1020210007875 A KR 1020210007875A KR 20210007875 A KR20210007875 A KR 20210007875A KR 102577342 B1 KR102577342 B1 KR 102577342B1
Authority
KR
South Korea
Prior art keywords
class
learning
classes
training
training steps
Prior art date
Application number
KR1020210007875A
Other languages
English (en)
Other versions
KR20220105316A (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 KR1020210007875A priority Critical patent/KR102577342B1/ko
Publication of KR20220105316A publication Critical patent/KR20220105316A/ko
Application granted granted Critical
Publication of KR102577342B1 publication Critical patent/KR102577342B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Error Detection And Correction (AREA)
  • Image Analysis (AREA)

Abstract

다양한 실시예들은 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법에 관한 것으로, 거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하고, 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하도록 구성될 수 있다.

Description

거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법{COMPUTER SYSTEM FOR LEARNING WITH MEMORY-BASED VIRTUAL CLASS FOR METRIC LEARNING, AND METHOD THEREOF}
다양한 실시예들은 거리 지표 학습(metric learning)을 위해 메모리 기반의 가상 클래스(virtual class)로 학습하는 컴퓨터 시스템 및 그의 방법에 관한 것이다.
널리 사용되는 분류(classification) 학습 분야에서는, 훈련 데이터(training data)의 클래스 정보와 테스트 데이터(test data)의 클래스 정보가 동일하다. 이와 비교하여, 거리 지표 학습 분야에서는, 훈련 데이터의 클래스 정보와 테스트 데이터의 클래스 정보가 다르다. 이로 인해, 거리 지표 학습 분야에서는, 훈련 데이터의 클래스들을 이용하여, 테스트 데이터의 클래스들을 일반화(generalization)해야 하는 문제점이 있다. 이러한 문제점을 해결하기 위한 다양한 방안들이 제안되고 있다. 그러나, 제안되는 방안들은 모두 훈련 데이터의 클래스들에 대한 피팅(fitting)에 중점으로 두고 있기 때문에, 훈련 데이터의 클래스들에 대한 과도한 피팅(over-fitting)을 야기한다. 이는, 테스트 데이터에 대한 학습 성능을 저하시킨다.
다양한 실시예들은, 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법을 제공한다.
다양한 실시예들에 따른 컴퓨터 시스템의 방법은, 거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 상기 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하는 단계, 및 상기 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하는 단계를 포함할 수 있다.
다양한 실시예들에 따른 컴퓨터 프로그램은, 상기 방법을 상기 전자 장치에 실행시키기 위해 비-일시적인 컴퓨터 판독 가능한 기록 매체에 저장될 수 있다.
다양한 실시예들에 따른 비-일시적인 컴퓨터 판독 가능한 기록 매체는, 상기 방법을 상기 전자 장치에 실행시키기 위한 프로그램이 기록되어 있다.
다양한 실시예들에 따른 컴퓨터 시스템은, 메모리, 및 상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고, 상기 프로세서는, 거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 상기 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하고, 상기 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하도록 구성될 수 있다.
다양한 실시예들에 따르면, 컴퓨터 시스템이 훈련 프로세스에서 거리 지표 학습을 위해 실제 클래스와 함께 가상 클래스를 사용함으로써, 높은 학습 안정성을 달성할 수 있다. 이 때 컴퓨터 시스템은 추가적인 연산 없이 가상 클래스를 생성하므로, 손실 함수에 대한 수정이 요구되지 않을 수 있다. 그리고, 컴퓨터 시스템이 커리큘럼 학습 방식에 따라 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 사용하기 위한 클래스들의 개수를 점차로 늘림으로써, 보다 높은 학습 안정성을 달성할 수 있다. 아울러, 훈련 데이터의 클래스들에 대한 과도한 피팅이 방지되므로, 훈련 데이터의 클래스들을 이용하여 테스트 데이터의 클래스들을 일반화하는 성능이 향상될 수 있다. 이에 따라, 거리 지표 학습의 테스트 데이터에 대한 성능 저하가 방지될 수 있다.
도 1은 다양한 실시예들에 따른 컴퓨터 시스템을 도시하는 도면이다.
도 2 및 도 3은 다양한 실시예들에 따른 컴퓨터 시스템의 동작 특징을 설명하기 위한 도면들이다.
도 4는 다양한 실시예들에 따른 컴퓨터 시스템의 방법을 도시하는 도면이다.
도 5는 도 4의 가상 클래스를 사용하여 학습하는 단계를 도시하는 도면이다.
도 6은 다양한 실시예들에 따른 컴퓨터 시스템의 방법을 설명하기 위한 도면이다.
도 7은 다양한 실시예들에 따른 컴퓨터 시스템의 동작 알고리즘을 도시하는 도면이다.
도 8, 도 9, 도 10, 도 11, 도 12 및 도 13은 다양한 실시예들에 따른 컴퓨터 시스템의 성능을 설명하기 위한 도면들이다.
이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 설명된다.
도 1은 다양한 실시예들에 따른 컴퓨터 시스템(100)을 도시하는 도면이다. 도 2 및 도 3은 다양한 실시예들에 따른 컴퓨터 시스템(100)의 동작 특징을 설명하기 위한 도면들이다.
도 1을 참조하면, 다양한 실시예들에 따른 컴퓨터 시스템(100)은 입력 모듈(110), 출력 모듈(120), 메모리(130) 또는 프로세서(140) 중 적어도 하나를 포함할 수 있다. 어떤 실시예에서, 컴퓨터 시스템(100)의 구성 요소들 중 적어도 하나가 생략될 수 있으며, 적어도 하나의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서, 컴퓨터 시스템(100)의 구성 요소들 중 적어도 두 개가 하나의 통합된 회로로 구현될 수 있다. 이 때 컴퓨터 시스템(100)은 적어도 하나의 장치, 예컨대 적어도 하나의 서버(server) 또는 적어도 하나의 전자 장치(electronic device) 중 적어도 하나로 이루어질 수 있다. 어떤 실시예에서, 컴퓨터 시스템(100)이 복수의 장치들을 포함하는 경우, 컴퓨터 시스템(100)의 구성 요소들은 장치들 중 하나에 구성되거나, 장치들 중 적어도 두 개에 분산되어 구성될 수 있다.
입력 모듈(110)은 컴퓨터 시스템(100)의 적어도 하나의 구성 요소에 사용될 신호를 입력할 수 있다. 입력 모듈(110)은, 사용자가 컴퓨터 시스템(100)에 직접적으로 신호를 입력하도록 구성되는 입력 장치, 주변의 변화를 감지하여 신호를 발생하도록 구성되는 센서 장치, 또는 외부 기기로부터 신호를 수신하도록 구성되는 수신 장치 중 적어도 하나를 포함할 수 있다. 예를 들면, 입력 장치는 마이크로폰(microphone), 마우스(mouse) 또는 키보드(keyboard) 중 적어도 하나를 포함할 수 있다. 어떤 실시예에서, 입력 장치는 터치를 감지하도록 설정된 터치 회로(touch circuitry) 또는 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로 중 적어도 하나를 포함할 수 있다.
출력 모듈(120)은 컴퓨터 시스템(100)의 외부로 정보를 출력할 수 있다. 출력 모듈(120)은, 정보를 시각적으로 출력하도록 구성되는 표시 장치, 정보를 오디오 신호로 출력할 수 있는 오디오 출력 장치, 또는 정보를 무선으로 송신할 수 있는 송신 장치 중 적어도 하나를 포함할 수 있다. 예를 들면, 표시 장치는 디스플레이, 홀로그램 장치 또는 프로젝터 중 적어도 하나를 포함할 수 있다. 일 예로, 표시 장치는 입력 모듈(110)의 터치 회로 또는 센서 회로 중 적어도 하나와 조립되어, 터치 스크린으로 구현될 수 있다. 예를 들면, 오디오 출력 장치는 스피커 또는 리시버 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 수신 장치와 송신 장치는 통신 모듈로 구현될 수 있다. 통신 모듈은 컴퓨터 시스템(100)에서 외부 기기와 통신을 수행할 수 있다. 통신 모듈은 컴퓨터 시스템(100)와 외부 기기 간 통신 채널을 수립하고, 통신 채널을 통해, 외부 기기와 통신을 수행할 수 있다. 여기서, 외부 기기는 위성, 기지국, 서버 또는 다른 컴퓨터 시스템 중 적어도 하나를 포함할 수 있다. 통신 모듈은 유선 통신 모듈 또는 무선 통신 모듈 중 적어도 하나를 포함할 수 있다. 유선 통신 모듈은 외부 기기와 유선으로 연결되어, 유선으로 통신할 수 있다. 무선 통신 모듈은 근거리 통신 모듈 또는 원거리 통신 모듈 중 적어도 하나를 포함할 수 있다. 근거리 통신 모듈은 외부 기기와 근거리 통신 방식으로 통신할 수 있다. 예를 들면, 근거리 통신 방식은, 블루투스(Bluetooth), 와이파이 다이렉트(WiFi direct), 또는 적외선 통신(IrDA; infrared data association) 중 적어도 하나를 포함할 수 있다. 원거리 통신 모듈은 외부 기기와 원거리 통신 방식으로 통신할 수 있다. 여기서, 원거리 통신 모듈은 네트워크를 통해 외부 기기와 통신할 수 있다. 예를 들면, 네트워크는 셀룰러 네트워크, 인터넷, 또는 LAN(local area network)이나 WAN(wide area network)과 같은 컴퓨터 네트워크 중 적어도 하나를 포함할 수 있다.
메모리(130)는 컴퓨터 시스템(100)의 적어도 하나의 구성 요소에 의해 사용되는 다양한 데이터를 저장할 수 있다. 예를 들면, 메모리(130)는 휘발성 메모리 또는 비휘발성 메모리 중 적어도 하나를 포함할 수 있다. 데이터는 적어도 하나의 프로그램 및 이와 관련된 입력 데이터 또는 출력 데이터를 포함할 수 있다. 프로그램은 메모리(130)에 적어도 하나의 명령을 포함하는 소프트웨어로서 저장될 수 있으며, 운영 체제, 미들 웨어 또는 어플리케이션 중 적어도 하나를 포함할 수 있다.
프로세서(140)는 메모리(130)의 프로그램을 실행하여, 컴퓨터 시스템(100)의 적어도 하나의 구성 요소를 제어할 수 있다. 이를 통해, 프로세서(140)는 데이터 처리 또는 연산을 수행할 수 있다. 이 때 프로세서(140)는 메모리(130)에 저장된 명령을 실행할 수 있다. 프로세서(140)는 거리 지표 학습(metric learning)을 수행할 수 있다. 프로세서(140)는 거리 지표 학습을 위한 훈련 프로세스와 테스트 프로세스를 진행할 수 있다. 프로세서(140)는 훈련 데이터를 기반으로 훈련 프로세스를 진행하고, 테스트 데이터를 기반으로 테스트 프로세스를 진행할 수 있다. 여기서, 훈련 데이터의 클래스 정보와 테스트 데이터의 클래스 정보는 다를 수 있다.
다양한 실시예들에 따르면, 거리 지표 학습을 수행하기 위해, 프로세서(140)는 도 2에 도시된 바와 같이 훈련 데이터를 기반으로 인공 신경망(241)을 학습하고, 인공 신경망(241)의 출력을 기반으로 손실 함수(loss function)(243)를 계산할 수 있다. 훈련 프로세스는 복수의 훈련 스텝들로 이루어질 수 있다. 프로세서(140)는 훈련 스텝들을 수행하면서, 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장할 수 있다. 클래스는 클래스 웨이트(class weight) 및 복수의 임베딩(embedding)들을 포함할 수 있다. 여기서, 클래스는 실제(actual) 클래스로도 지칭될 수 있으며, 실제 클래스는 인공 신경망(241)의 출력으로서, 훈련 데이터로부터 결정될 수 있다. 프로세서(140)는 현재 훈련 스텝에서, 이전의 훈련 스텝들 중 적어도 하나에서 사용된 적어도 하나의 클래스를 가상(virtual) 클래스로 사용하여 학습할 수 있다. 이 때 프로세서(140)는 적어도 하나의 실제 클래스와 가상 클래스를 손실 함수(243)의 입력 값으로 사용할 수 있다.
다양한 실시예들에 따르면, 학습 안정성을 높이기 위해, 프로세서(140)는 커리큘럼 학습(curriculum learning) 방식을 적용할 수 있다. 즉, 프로세서(140)는 저장된 클래스들을 한꺼번에 가상 클래스로 사용하지 않을 수 있다. 대신에, 프로세서(140)는 도 3에 도시된 바와 같이 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 사용하기 위한 클래스들의 개수를 점차로 늘릴 수 있다. 즉, 프로세서(140)는 초기에 가상 클래스를 사용하지 않고, 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 가상 클래스로 구성되는 클래스들의 개수를 점차로 늘릴 수 있다. 예를 들면, 프로세서(140)는 C 개의 클래스들, 즉 클래스 웨이트들과 B 개의 임베딩들로 시작하여, 가상 클래스로 구성될 클래스들과 임베딩들의 개수를 늘리며, 최종적으로 (N+1)C 개의 클래스들과 (N+1)B 개의 임베딩들을 사용할 수 있다. 여기서, N은 가상 클래스로 구성될 클래스들의 개수를 나타낼 수 있다.
다양한 실시예들에 따르면, 훈련 프로세스는 웜-업(warm-up) 구간과 스텝-페이싱(step-pacing) 구간으로 스케줄링(scheduling)될 수 있다. 웜-업 구간에서, 프로세서(140)는 웜-업 구간의 훈련 스텝들을 수행하면서, 그 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 메모리 큐에 저장할 수 있다. 이 때 웜-업 구간의 훈련 스텝들의 각각에서, 프로세서(140)는 적어도 하나의 실제 클래스 만을 사용하여 학습할 수 있다. 스텝-페이싱 구간에서, 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들의 각각에서 가상 클래스를 사용하여 학습할 수 있다. 즉, 스텝-페이싱 구간의 훈련 스텝들의 각각에서 적어도 하나의 실제 클래스와 가상 클래스를 사용하여 학습할 수 있다. 이 때 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 가상 클래스로 구성되는 클래스들의 개수를 점차로 늘릴 수 있다. 그리고, 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들을 수행하면서, 그 훈련 스텝들의 각각에서 사용되는 클래스들, 즉 실제 클래스 및 가상 클래스의 클래스들을 기반으로, 메모리 큐를 업데이트할 수 있다.
도 4는 다양한 실시예들에 따른 컴퓨터 시스템(100)의 방법을 도시하는 도면이다. 도 5는 도 4의 가상 클래스를 사용하여 학습하는 단계(420 단계)를 도시하는 도면이다. 도 6은 다양한 실시예들에 따른 컴퓨터 시스템(100)의 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 컴퓨터 시스템(100)은 410 단계에서 거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 훈련 스텝들 중 각각에서 사용되는 적어도 하나의 클래스를 저장할 수 있다. 도 6에 도시된 바와 같이, 훈련 스텝들의 각각에서, 프로세서(140)는 메모리 큐(600)에 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장할 수 있다. 각 클래스는 클래스 웨이트 및 복수의 임베딩들을 포함할 수 있다.
이 때 메모리 큐(600) 내에서, 훈련 스텝들에 대해 저장 영역들이 개별적으로 할당될 수 있다. 메모리 큐(600) 내에서, 저장 영역들의 순서는 훈련 스텝들의 순서와 동일하며, 저장 영역들은 가장 최근의 훈련 스텝으로부터 가장 오래된 훈련 스텝에 대응하도록 위치될 수 있다. 바꿔 말하면, 메모리 큐(600)의 말단에 근접할수록, 오래된 훈련 스텝의 저장 영역이 위치될 수 있다. 그리고, 프로세서(140)는 저장 영역들의 각각에 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장할 수 있다. 어떤 실시예들에서, 메모리 큐(600)는 웨이트 큐(610)와 임베딩 큐(620)를 포함하며, 프로세서(140)는 각 클래스의 클래스 웨이트를 웨이트 큐(610)에 저장하고, 각 클래스의 임베딩들을 임베딩 큐(620)에 저장할 수 있다.
이를 통해, 프로세서(140)는 메모리 큐(600)를 채울 수 있다. 이러한 구간은 웜-업 구간으로 지칭될 수 있다. 즉, 웜-업 구간의 훈련 스텝들의 각각에서, 프로세서(140)는 적어도 하나의 실제 클래스 만을 사용하여 학습할 수 있다. 이 때 인공 신경망(241)이 훈련 데이터를 기반으로, 적어도 하나의 실제 클래스를 출력하고, 손실 함수(243)가 인공 신경망(241)으로부터 출력되는 적어도 하나의 실제 클래스를 입력 값으로 사용할 수 있다. 그리고, 프로세서(140)는 메모리 큐(600)에 웜-업 구간의 훈련 스텝들의 각각에 대응하여 적어도 하나의 실제 클래스를 저장할 수 있다.
다음으로, 컴퓨터 시스템(100)은 420 단계에서 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습할 수 있다. 도 6에 도시된 바와 같이, 다른 훈련 스텝에서, 프로세서(140)는 메모리 큐(600)에 저장된 적어도 하나의 클래스로 가상 클래스를 생성하고, 훈련 데이터로부터의 적어도 하나의 클래스, 즉 실제 클래스와 가상 클래스를 사용하여 학습할 수 있다. 이 때 프로세서(140)는 420 단계를 반복적으로 수행하면서, 메모리 큐(600)를 업데이트할 수 있다.
이를 통해, 프로세서(140)는 메모리 큐(600)에 저장된 클래스들을 활용할 수 있다. 이러한 구간은 스텝-페이싱 구간으로 지칭될 수 있다. 즉, 스텝-페이싱 구간의 훈련 스텝들의 각각에서, 프로세서(140)는 실제 클래스와 함께 가상 클래스를 사용하여 학습할 수 있다. 이 때 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 가상 클래스로 구성되는 클래스들의 개수를 점차로 늘릴 수 있다. 그리고, 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들의 각각을 수행하면서, 메모리 큐(600)를 업데이트할 수 있다. 이하에서는, 스텝-페이싱 구간의 훈련 스텝들의 각각에 대해, 도 5 및 도 6을 참조하여, 보다 상세하게 후술될 것이다.
도 5를 참조하면, 컴퓨터 시스템(100)은 521 단계에서 메모리 큐(600)에 저장된 클래스들 중 적어도 하나를 선택할 수 있다. 이를 위해, 현재 훈련 스텝에 대해, 선택 개수(N)와 마진(M)이 정의될 수 있다. 선택 개수(N)는 선택하기 위한 이전 훈련 스텝의 개수, 바꿔 말하면 선택하기 위한 저장된 클래스의 개수를 나타내고, 마진(M)은 선택하기 위한 이전 훈련 스텝에 대한 간격(M)을 나타낼 수 있다. 이를 위해, 메모리 큐의 사이즈는 N(M+1)로 정의될 수 있다. 프로세서(140)는 현재 훈련 스텝에 대해 선택 개수(N) 및 마진(M)을 결정하고, 도 6에 도시된 바와 같이 선택 개수(N) 및 마진(M)을 기반으로 메모리 큐(600)에 저장된 클래스들 중 적어도 하나를 선택할 수 있다. 선택 개수(N)가 1일 때, 프로세서(140)는 메모리 큐(600)의 말단으로부터 마진(M)만큼 이격되는 이전 훈련 스텝의 저장 영역에 저장된 클래스를 선택할 수 있다. 선택 개수(N)가 2 이상일 때, 프로세서(140)는 메모리 큐(600) 내에서 마진(M)만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들을 선택할 수 있다.
이어서, 컴퓨터 시스템(100)은 523 단계에서 선택된 적어도 하나의 클래스로 가상 클래스를 생성할 수 있다. 도 6에 도시된 바와 같이, 프로세서(140)는 선택된 적어도 하나의 클래스의 클래스 웨이트로 가상 클래스의 클래스 웨이트를 생성하고, 선택된 적어도 하나의 클래스의 임베딩들로 가상 클래스의 임베딩들을 생성할 수 있다. 하나의 클래스가 선택된 경우, 프로세서(140)는 선택된 클래스의 클래스 웨이트 및 임베딩들로 가상 클래스의 클래스 웨이트 및 임베딩들을 생성할 수 있다. 적어도 두 개의 클래스들이 선택된 경우, 프로세서(140)는 선택된 클래스들의 클래스 웨이트들로 가상 클래스의 클래스 웨이트를 생성하고, 선택된 클래스들의 임베딩들로 가상 클래스의 임베딩들을 생성할 수 있다.
계속해서, 컴퓨터 시스템(100)은 525 단계에서 적어도 하나의 클래스와 가상 클래스를 사용하여 학습할 수 있다. 도 6에 도시된 바와 같이, 프로세서(140)는 현재 훈련 스텝에서, 훈련 데이터로부터의 적어도 하나의 클래스, 즉 실제 클래스와 가상 클래스를 사용하여 학습할 수 있다. 이 때 인공 신경망(241)이 훈련 데이터를 기반으로, 적어도 하나의 실제 클래스를 출력하고, 손실 함수(243)가 인공 신경망(241)으로부터 출력되는 적어도 하나의 실제 클래스와 가상 클래스를 입력 값으로 사용할 수 있다. 예를 들면, 프로세서(140)는 하기 [수학식 1]과 같이 손실 함수(243)를 기반으로 학습할 수 있다.
여기서, 은 손실 함수(243)를 나타내고, 는 실제 클래스의 임베딩들을 나타내고, 는 가상 클래스의 임베딩들을 나타내고, 는 실제 클래스의 클래스 웨이트를 나타내고, 는 가상 클래스의 클래스 웨이트를 나타내고, 는 손실 함수(243)에 입력되는 각 임베딩을 나타내고, 는 손실 함수(243)에 입력되는 각 임베딩의 대응하는 레이블(label)을 나타낼 수 있다.
마지막으로, 컴퓨터 시스템(100)은 527 단계에서 메모리 큐(600)를 업데이트할 수 있다. 프로세서(140)는 현재 훈련 스텝에서 사용되는 클래스들을 기반으로, 메모리 큐(600)를 업데이트할 수 있다. 즉, 프로세서(140)는 현재 훈련 스텝에서 사용되는 실제 클래스 및 가상 클래스의 클래스들을 기반으로, 메모리 큐(600)를 업데이트할 수 있다. 이 때 프로세서(140)는 메모리 큐(600) 내에서 가상 클래스를 생성하기 위해 선택된 클래스의 저장 영역을 제거할 수 있다. 그리고, 프로세서(140)는 메모리 큐(600) 내에서 현재 훈련 스텝을 위해 저장 영역을 할당하고, 현재 훈련 스텝에서 사용되는 클래스들을 그 저장 영역에 저장할 수 있다. 여기서, 현재 훈련 스텝을 위한 저장 영역은 메모리 큐(600)의 말단에 위치될 수 있다.
도 7은 다양한 실시예들에 따른 컴퓨터 시스템(100)의 동작 알고리즘을 도시하는 도면이다. 여기서, MemVir는 다양한 실시예들에 따라 메모리 기반 가상 클래스(memory-based virtual class)로 학습하는 기법을 지칭한다.
도 7을 참조하면, 컴퓨터 시스템(100)은 전술된 바와 같이 동작하여, 훈련 프로세스를 진행할 수 있다. 즉, 프로세서(140)는 훈련 프로세스의 전체 훈련 스텝들에서 학습을 수행할 수 있다. 웜-업 구간에서, 프로세서(140)는 웜-업 구간의 훈련 스텝들을 수행하면서, 그 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 메모리 큐에 저장할 수 있다. 이 때 웜-업 구간의 훈련 스텝들의 각각에서, 프로세서(140)는 적어도 하나의 실제 클래스 만을 사용하여 학습할 수 있다. 스텝-페이싱 구간에서, 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들의 각각에서 가상 클래스를 사용하여 학습할 수 있다. 즉, 스텝-페이싱 구간의 훈련 스텝들의 각각에서 적어도 하나의 실제 클래스와 가상 클래스를 사용하여 학습할 수 있다. 이 때 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 가상 클래스로 구성되는 클래스들의 개수를 점차로 늘릴 수 있다. 그리고, 프로세서(140)는 스텝-페이싱 구간의 훈련 스텝들을 수행하면서, 그 훈련 스텝들의 각각에서 사용되는 클래스들, 즉 실제 클래스 및 가상 클래스의 클래스들을 기반으로, 메모리 큐(600)를 업데이트할 수 있다.
도 8, 도 9, 도 10, 도 11, 도 12 및 도 13은 다양한 실시예들에 따른 컴퓨터 시스템(100)의 성능을 설명하기 위한 도면들이다. 도 10, 도 11, 도 12 및 도 13에서, 괄호와 관련하여, (선택 개수(N), 마진(M))이 정의될 수 있다.
도 8을 참조하면, 다양한 실시예들은 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 사용하기 위한 클래스들의 개수를 점차로 늘린다. 즉, 다양한 실시예들은 웜-업 구간에서 초기에 가상 클래스를 사용하지 않고, 스텝-페이싱 구간에서 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 가상 클래스로 구성되는 클래스들의 개수를 점차로 늘린다. 이에 반해, 기존 기술은 훈련 프로세스의 전체 훈련 스텝들에서 동일한 개수의 클래스들을 사용한다. 한편, 제 1 비교예(w/o warm-up)는, 훈련 프로세스가 웜-업 구간 없이 스텝-페이싱 구간만으로 이루어지는 경우로서, 훈련 프로세스의 초기부터 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 가상 클래스로 구성되는 클래스들의 개수를 점차로 늘린다. 한편, 제 2 비교예(w/o step-pacing)는, 훈련 프로세스가 웜-업 구간을 갖되, 웜-업 구간 종료 시 웜-업 구간에서 저장된 모든 클래스들을 한꺼번에 가상 클래스로 사용하는 경우이다. 도 9에 도시된 바와 같이 다양한 실시예들을 기존 기술, 제 1 비교예 및 제 2 비교예와 비교하면, 다양한 실시예들이 가장 높은 학습 안정성을 보장한다.
도 10 및 도 11을 참조하면, 다양한 실시예들은 실제 클래스와 함께 가상 클래스를 사용하여 학습함으로써, 학습 디피컬티(difficulty)가 증가된다. 즉, 다양한 실시예들에 따른 학습 디피컬티는 기존 기술의 학습 디피컬티에 비해 현저하게 증가된다. 다양한 실시예들에 따르면, 학습 디피컬티는 선택 개수(N)와 마진(M)에 따라 조절된다. 도 10에 도시된 바와 같이, 선택 개수(N)가 동일할 때(N=1), 마진(M)이 작을수록, 학습 디피컬티가 크다. 여기서, 선택 개수(N)는 선택하기 위한 이전 훈련 스텝의 개수, 바꿔 말하면 선택하기 위한 저장된 클래스의 개수를 나타내고, 마진(M)은 선택하기 위한 이전 훈련 스텝에 대한 간격(M)을 나타낼 수 있다. 한편, 도 11에 도시된 바와 같이, 마진(M)이 동일할 때(M=100), 선택 개수(N)가 클수록, 학습 디피컬티가 크다. 즉, 선택 개수(N)가 클수록, 그리고 마진(M)이 작을수록, 다양한 실시예들에 따른 학습 디피컬티는 증가된다.
도 12를 참조하면, 다양한 실시예들은 실제 클래스와 함께 가상 클래스를 사용하여 학습함으로써, 각 훈련 스텝에서 사용되는 클래스들의 훈련 데이터를 기반으로 하는 클래스들에 대한 유사도(similarity)가 감소된다. 즉, 다양한 실시예들에 따른 유사도는 기존 기술의 유사도에 비해 감소된다. 이는, 거리 지표 학습에 있어서, 훈련 데이터를 기반으로 하는 클래스들에 대한 과도한 피팅(over-fitting)이 방지됨을 나타낸다. 도 13에 도시된 바와 같이 다양한 실시예들을 기존 기술과 비교하면, 다양한 실시예들이 높은 학습 안정성을 보장한다.
다양한 실시예들에 따르면, 컴퓨터 시스템(100)이 훈련 프로세스를 진행한 다음 테스트 프로세스를 진행할 때, 훈련 데이터의 클래스들을 이용하여 테스트 데이터의 클래스들을 일반화(generalization)하는 성능이 향상될 수 있다. 즉, 컴퓨터 시스템(100)이 실제 클래스와 함께 가상 클래스를 사용하여 학습함으로써, 각 훈련 스텝에서의 학습 결과가 훈련 데이터를 기반으로 하는 클래스들에 과도하게 포커싱되지 않고, 이에 따라 일반화하는 성능이 향상될 수 있다.
전술한 바와 같이, 컴퓨터 시스템(100)이 추가적인 연산 없이 가상 클래스를 생성하므로, 손실 함수(243)에 대한 수정 없이도, 다양한 실시예들이 구현될 수 있다. 다양한 실시예들에 따르면, 컴퓨터 시스템(100)이 커리큘럼 학습 방식에 따라 훈련 스텝들이 진행될수록, 훈련 스텝들의 각각에서 사용하기 위한 클래스들의 개수를 점차로 늘림으로써, 높은 학습 안정성을 달성할 수 있다. 아울러, 훈련 데이터의 클래스들을 이용하여 테스트 데이터의 클래스들을 일반화하는 성능이 향상됨에 따라, 다양한 실시예들에 따른 거리 지표 학습의 테스트 데이터에 대한 성능 저하가 방지될 수 있다.
다양한 실시예들에 따른 컴퓨터 시스템(100)의 방법은, 거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하는 단계(410 단계), 및 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하는 단계(420 단계)를 포함할 수 있다.
다양한 실시예들에 따르면, 저장된 클래스들은, 클래스 웨이트 및 복수의 임베딩들을 각각 포함할 수 있다.
다양한 실시예들에 따르면, 가상 클래스를 사용하여 학습하는 단계(420 단계)는, 적어도 하나의 클래스와 함께 가상 클래스를 사용하여 학습할 수 있다.
다양한 실시예들에 따르면, 적어도 하나의 클래스를 저장하는 단계(410 단계)는, 훈련 스텝들의 각각에서, 메모리 큐(600) 내의 훈련 스텝들의 각각에 할당되는 저장 영역에 적어도 하나의 클래스를 저장할 수 있다.
다양한 실시예들에 따르면, 가상 클래스는, 메모리 큐(600) 내에서 정해진 간격만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들로부터 생성될 수 있다.
다양한 실시예들에 따르면, 컴퓨터 시스템(100)의 방법은, 다른 훈련 스텝에서 사용되는 클래스들을 기반으로, 메모리 큐(600)를 업데이트하는 단계(527 단계)를 더 포함할 수 있다.
다양한 실시예들에 따르면, 메모리 큐를 업데이트하는 단계(527 단계)는, 메모리 큐 내에서 적어도 두 개의 저장 영역들을 제거하는 단계, 및 메모리 큐 내에서 다른 훈련 스텝에 할당되는 저장 영역에 사용되는 클래스들을 저장하는 단계를 포함할 수 있다.
다양한 실시예들에 따르면, 가상 클래스를 사용하여 학습하는 단계(420 단계)는, 가상 클래스를 입력 값으로 사용하는 손실 함수(243)를 기반으로 학습할 수 있다.
다양한 실시예들에 따르면, 적어도 하나의 클래스는, 훈련 데이터로부터 결정될 수 있다.
다양한 실시예들에 따른 컴퓨터 시스템(100)은, 메모리(130), 및 메모리(130)와 연결되고, 메모리(130)에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서(140)를 포함할 수 있다.
다양한 실시예들에 따르면, 프로세서(140)는, 거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하고, 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하도록 구성될 수 있다.
다양한 실시예들에 따르면, 저장된 클래스들은, 클래스 웨이트 및 복수의 임베딩들을 각각 포함할 수 있다.
다양한 실시예들에 따르면, 프로세서(140)는, 적어도 하나의 클래스와 함께 가상 클래스를 사용하여 학습할 수 있다.
다양한 실시예들에 따르면, 프로세서(140)는, 훈련 스텝들의 각각에서, 메모리 큐(600) 내의 훈련 스텝들의 각각에 할당되는 저장 영역에 적어도 하나의 클래스를 저장하도록 구성될 수 있다.
다양한 실시예들에 따르면, 가상 클래스는, 메모리 큐(600) 내에서 정해진 간격만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들로부터 생성될 수 있다.
다양한 실시예들에 따르면, 프로세서(140)는, 다른 훈련 스텝에서 사용되는 클래스들을 기반으로, 메모리 큐(600)를 업데이트하도록 구성될 수 있다.
다양한 실시예들에 따르면, 프로세서(140)는, 메모리 큐(600) 내에서 적어도 두 개의 저장 영역들을 제거하고, 메모리 큐(600) 내에서 다른 훈련 스텝에 할당되는 저장 영역에 사용되는 클래스들을 저장하도록 구성될 수 있다.
다양한 실시예들에 따르면, 프로세서(140)는, 가상 클래스를 입력 값으로 사용하는 손실 함수를 기반으로 학습하도록 구성될 수 있다.
다양한 실시예들에 따르면, 적어도 하나의 클래스는, 훈련 데이터로부터 결정될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
다양한 실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이 때 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 그리고, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성 요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성 요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성 요소를 다른 구성 요소와 구분하기 위해 사용될 뿐 해당 구성 요소들을 한정하지 않는다. 어떤(예: 제 1) 구성 요소가 다른(예: 제 2) 구성 요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로 연결되거나, 다른 구성 요소(예: 제 3 구성 요소)를 통하여 연결될 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
다양한 실시예들에 따르면, 기술한 구성 요소들의 각각의 구성 요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성 요소들 중 하나 이상의 구성 요소들 또는 단계들이 생략되거나, 또는 하나 이상의 다른 구성 요소들 또는 단계들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성 요소들(예: 모듈 또는 프로그램)은 하나의 구성 요소로 통합될 수 있다. 이런 경우, 통합된 구성 요소는 복수의 구성 요소들 각각의 구성 요소의 하나 이상의 기능들을 통합 이전에 복수의 구성 요소들 중 해당 구성 요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 단계들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 단계들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 단계들이 추가될 수 있다.

Claims (20)

  1. 컴퓨터 시스템의 방법에 있어서,
    상기 방법은,
    거리 지표 학습(metric learning)을 위한 복수의 훈련 스텝들을 수행하면서, 상기 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하는 단계; 및
    상기 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하는 단계
    를 포함하고,
    상기 적어도 하나의 클래스를 저장하는 단계는,
    상기 훈련 스텝들의 각각에서, 메모리 큐 내의 상기 훈련 스텝들의 각각에 할당되는 저장 영역에 상기 적어도 하나의 클래스를 저장하고,
    상기 가상 클래스는,
    상기 메모리 큐 내에서 정해진 간격만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들로부터 생성되는, 방법.
  2. 제 1 항에 있어서,
    상기 저장된 클래스들은,
    클래스 웨이트(class weight) 및 복수의 임베딩(embedding)들을 각각 포함하는,
    방법.
  3. 제 1 항에 있어서,
    상기 가상 클래스를 사용하여 학습하는 단계는,
    적어도 하나의 클래스와 함께 상기 가상 클래스를 사용하여 학습하는,
    방법.
  4. 삭제
  5. 삭제
  6. 컴퓨터 시스템의 방법에 있어서,
    상기 방법은,
    거리 지표 학습(metric learning)을 위한 복수의 훈련 스텝들을 수행하면서, 상기 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하는 단계; 및
    상기 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하는 단계
    를 포함하고,
    상기 적어도 하나의 클래스를 저장하는 단계는,
    상기 훈련 스텝들의 각각에서, 메모리 큐 내의 상기 훈련 스텝들의 각각에 할당되는 저장 영역에 상기 적어도 하나의 클래스를 저장하고,
    상기 방법은,
    상기 다른 훈련 스텝에서 사용되는 클래스들을 기반으로, 상기 메모리 큐를 업데이트하는 단계
    를 더 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 가상 클래스는,
    상기 메모리 큐 내에서 정해진 간격만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들로부터 생성되고,
    상기 메모리 큐를 업데이트하는 단계는,
    상기 메모리 큐 내에서 상기 적어도 두 개의 저장 영역들을 제거하는 단계; 및
    상기 메모리 큐 내에서 상기 다른 훈련 스텝에 할당되는 저장 영역에 상기 사용되는 클래스들을 저장하는 단계
    를 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 가상 클래스를 사용하여 학습하는 단계는,
    상기 가상 클래스를 입력 값으로 사용하는 손실 함수(loss function)를 기반으로 학습하는,
    방법.
  9. 제 1 항에 있어서,
    상기 적어도 하나의 클래스는,
    훈련 데이터로부터 결정되는,
    방법.
  10. 제 1 항 내지 제 3 항, 또는 제 6 항 내지 제 9 항 중 어느 한 항의 방법을 전자 장치에 실행시키기 위해 비-일시적인 컴퓨터 판독 가능한 기록 매체에 저장되는 컴퓨터 프로그램.
  11. 제 1 항 내지 제 3 항, 또는 제 6 항 내지 제 9 항 중 어느 한 항의 방법을 전자 장치에 실행시키기 위한 프로그램이 기록되어 있는 비-일시적인 컴퓨터 판독 가능한 기록 매체.
  12. 컴퓨터 시스템에 있어서,
    메모리; 및
    상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고,
    상기 프로세서는,
    거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 상기 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하고,
    상기 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하도록 구성되고,
    상기 프로세서는,
    상기 훈련 스텝들의 각각에서, 메모리 큐 내의 상기 훈련 스텝들의 각각에 할당되는 저장 영역에 상기 적어도 하나의 클래스를 저장하도록 구성되고,
    상기 가상 클래스는,
    상기 메모리 큐 내에서 정해진 간격만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들로부터 생성되는,
    컴퓨터 시스템.
  13. 제 12 항에 있어서,
    상기 저장된 클래스들은,
    클래스 웨이트 및 복수의 임베딩들을 각각 포함하는,
    컴퓨터 시스템.
  14. 제 12 항에 있어서,
    상기 프로세서는,
    적어도 하나의 클래스와 함께 상기 가상 클래스를 사용하여 학습하는,
    컴퓨터 시스템.
  15. 삭제
  16. 삭제
  17. 컴퓨터 시스템에 있어서,
    메모리; 및
    상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고,
    상기 프로세서는,
    거리 지표 학습을 위한 복수의 훈련 스텝들을 수행하면서, 상기 훈련 스텝들의 각각에서 사용되는 적어도 하나의 클래스를 저장하고,
    상기 거리 지표 학습을 위한 다른 훈련 스텝에서, 저장된 클래스들 중 적어도 하나로부터 생성되는 가상 클래스를 사용하여 학습하도록 구성되고,
    상기 프로세서는,
    상기 훈련 스텝들의 각각에서, 메모리 큐 내의 상기 훈련 스텝들의 각각에 할당되는 저장 영역에 상기 적어도 하나의 클래스를 저장하도록 구성되고,
    상기 프로세서는,
    상기 다른 훈련 스텝에서 사용되는 클래스들을 기반으로, 상기 메모리 큐를 업데이트하도록 구성되는,
    컴퓨터 시스템.
  18. 제 17 항에 있어서,
    상기 가상 클래스는,
    상기 메모리 큐 내에서 정해진 간격만큼 이격되는 적어도 두 개의 저장 영역들에 저장된 클래스들로부터 생성되고,
    상기 프로세서는,
    상기 메모리 큐 내에서 상기 적어도 두 개의 저장 영역들을 제거하고,
    상기 메모리 큐 내에서 상기 다른 훈련 스텝에 할당되는 저장 영역에 상기 사용되는 클래스들을 저장하도록 구성되는,
    컴퓨터 시스템.
  19. 제 12 항에 있어서,
    상기 프로세서는,
    상기 가상 클래스를 입력 값으로 사용하는 손실 함수를 기반으로 학습하도록 구성되는,
    컴퓨터 시스템.
  20. 제 12 항에 있어서,
    상기 적어도 하나의 클래스는,
    훈련 데이터로부터 결정되는,
    컴퓨터 시스템.
KR1020210007875A 2021-01-20 2021-01-20 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법 KR102577342B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210007875A KR102577342B1 (ko) 2021-01-20 2021-01-20 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210007875A KR102577342B1 (ko) 2021-01-20 2021-01-20 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법

Publications (2)

Publication Number Publication Date
KR20220105316A KR20220105316A (ko) 2022-07-27
KR102577342B1 true KR102577342B1 (ko) 2023-09-11

Family

ID=82701379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210007875A KR102577342B1 (ko) 2021-01-20 2021-01-20 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법

Country Status (1)

Country Link
KR (1) KR102577342B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122362A (ja) * 2005-10-27 2007-05-17 Toyota Motor Corp ニューラルネットワークを用いた状態推定方法及びニューラルネットワークを用いた状態推定装置
US20170228641A1 (en) 2016-02-04 2017-08-10 Nec Laboratories America, Inc. Distance metric learning with n-pair loss

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102535411B1 (ko) * 2017-11-16 2023-05-23 삼성전자주식회사 메트릭 학습 기반의 데이터 분류와 관련된 장치 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122362A (ja) * 2005-10-27 2007-05-17 Toyota Motor Corp ニューラルネットワークを用いた状態推定方法及びニューラルネットワークを用いた状態推定装置
US20170228641A1 (en) 2016-02-04 2017-08-10 Nec Laboratories America, Inc. Distance metric learning with n-pair loss

Also Published As

Publication number Publication date
KR20220105316A (ko) 2022-07-27

Similar Documents

Publication Publication Date Title
US11783227B2 (en) Method, apparatus, device and readable medium for transfer learning in machine learning
CN110807515B (zh) 模型生成方法和装置
US20180260621A1 (en) Picture recognition method and apparatus, computer device and computer- readable medium
US11521038B2 (en) Electronic apparatus and control method thereof
US20180293512A1 (en) New rule creation using mdp and inverse reinforcement learning
KR20180109619A (ko) 컨볼루션 신경망 처리 방법 및 장치
CN111523640B (zh) 神经网络模型的训练方法和装置
CN110852421A (zh) 模型生成方法和装置
JP5932612B2 (ja) 情報処理装置、制御方法、プログラム、及び記録媒体
CN109829164B (zh) 用于生成文本的方法和装置
US10817669B2 (en) Automatic classification of adverse event text fragments
US9632921B1 (en) Validation using scenario runners
KR102074909B1 (ko) 소프트웨어 취약점 분류 장치 및 방법
US20190317737A1 (en) Methods and apparatus to recommend instruction adaptations to improve compute performance
KR102577342B1 (ko) 거리 지표 학습을 위해 메모리 기반의 가상 클래스로 학습하는 컴퓨터 시스템 및 그의 방법
US9250890B2 (en) Optimizing performance of a computer system in response to a software change
CN111346373B (zh) 游戏中虚拟摇杆显示控制方法、装置及电子设备
CN109413663B (zh) 一种信息处理方法和设备
US20200410367A1 (en) Scalable Predictive Analytic System
CN117859136A (zh) 用于深度神经网络的基于扭矩的结构化修剪的电子设备和方法
US20220261685A1 (en) Machine Learning Training Device
CN111191795B (zh) 一种训练机器学习模型的方法、装置及系统
CN110782017B (zh) 用于自适应调整学习率的方法和装置
KR20210144510A (ko) 뉴럴 네트워크를 이용하는 데이터 처리 방법 및 데이터 처리 장치
US20220067487A1 (en) Electronic device for generating data and improving task performance by using only very small amount of data without prior knowledge of associative domain and operating method thereof

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