KR20210098247A - 전자 장치 및 그 동작방법 - Google Patents
전자 장치 및 그 동작방법 Download PDFInfo
- Publication number
- KR20210098247A KR20210098247A KR1020200012189A KR20200012189A KR20210098247A KR 20210098247 A KR20210098247 A KR 20210098247A KR 1020200012189 A KR1020200012189 A KR 1020200012189A KR 20200012189 A KR20200012189 A KR 20200012189A KR 20210098247 A KR20210098247 A KR 20210098247A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- compression
- vectors
- vector
- electronic device
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title description 4
- 230000015654 memory Effects 0.000 claims abstract description 344
- 239000013598 vector Substances 0.000 claims abstract description 266
- 230000006835 compression Effects 0.000 claims abstract description 222
- 238000007906 compression Methods 0.000 claims abstract description 222
- 238000012545 processing Methods 0.000 claims abstract description 61
- 239000011159 matrix material Substances 0.000 claims abstract description 53
- 238000013528 artificial neural network Methods 0.000 claims abstract description 37
- 238000000034 method Methods 0.000 claims description 61
- 238000013507 mapping Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 6
- 230000005236 sound signal Effects 0.000 description 6
- 238000013139 quantization Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Machine Translation (AREA)
Abstract
복수의 워드들에 대응되는 벡터들을 압축한 압축 벡터들을 포함하는 압축 임베딩 행렬과 압축 벡터들에 대응되는 스케일링 팩터들을 저장하는 제1 메모리, 제1 메모리보다 동작 속도가 빠르고, 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 복수의 압축 벡터들 중 일부를 저장하고, 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 스케일링 팩터들 중 일부를 저장하는 제2 메모리 및 제1 메모리 또는 제2 메모리로부터, 입력된 워드에 대응하는 제1 압축 벡터 및 제1 스케일링 팩터를 획득하고, 획득한 제1 압축 벡터 및 제1 스케일링 팩터를 신경망을 이용하여 처리하는 프로세서를 포함하는, 언어 모델을 이용하여 워드를 처리하는 전자 장치가 개시된다.
Description
다양한 실시예들은 전자 장치 및 그 동작방법에 관한 것으로, 더욱 상세하게는, 언어 모델을 이용하여, 입력된 워드를 처리하는 전자 장치 및 그 동작방법에 관한 것이다.
인공지능(Artificial Intelligence, AI) 시스템은 인간 수준의 지능을 구현하는 컴퓨터 시스템이며, 기존 룰(Rule) 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템이다. 인공지능 시스템은 사용할수록 인식률이 향상되고 사용자 취향을 보다 정확하게 이해할 수 있게 되어, 기존 룰 기반 스마트 시스템은 점차 딥러닝 기반 인공지능 시스템으로 대체되고 있다.
인공지능 기술은 다양한 분야에 응용될 수 있으며, 일 예로 인간의 언어/문자를 인식하고 응용/처리하는 기술로서, 자연어 처리, 기계 번역, 대화시스템, 질의 응답, 음성 인식/합성 등에 이용될 수 있다. 예를 들어, 인공 지능 시스템은 다양한 문장을 학습하고 학습 결과에 따른 언어 모델을 생성하며, 생성된 언어 모델을 이용하여, 워드를 분류하거나 기계 번역을 수행하거나 새로운 워드를 제공하거나 문장을 완성하거나 질문에 대한 답변을 제공할 수 있다.
이러한 언어 모델은 문장의 단어들을 입력으로 받아들이는 임베딩 행렬을 포함하며, 보통 언어 모델은 최소 만 단어, 또는 그 이상의 단어들을 대상으로 하기 때문에, 임베딩 행렬의 크기가 매우 크다. 이에 따라, 메모리가 작은 장치에서는 언어 모델을 이용하기 어려운 문제점이 있었다. 또는, 언어 모델을 이용한 연산 시에, 임베딩 행렬의 모든 데이터를 읽어올 수 없어, 부분 데이터를 여러 번 읽어오고 연산을 반복해야 하므로, 오버헤드가 크게 발생하는 문제점이 있었다.
다양한 실시예들은, 임베딩 행렬의 특성을 고려하여 압축된 임베딩 행렬을 효율적으로 저장하고, 압축된 임베딩 행렬을 이용하여 워드를 처리할 수 있는 전자 장치 및 그 동작방법을 제공할 수 있다.
일 실시예에 따른 언어 모델을 이용하여, 워드를 처리하는 전자 장치는, 복수의 워드들에 대응되는 벡터들을 압축한 압축 벡터들을 포함하는 압축 임베딩 행렬과 압축 벡터들에 대응되는 스케일링 팩터들을 저장하는 제1 메모리, 상기 제1 메모리보다 동작 속도가 빠르고, 상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 상기 복수의 압축 벡터들 중 일부를 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 상기 스케일링 팩터들 중 일부를 저장하는 제2 메모리 및 상기 제1 메모리 또는 제2 메모리로부터, 입력된 워드에 대응하는 제1 압축 벡터 및 제1 스케일링 팩터를 획득하고, 상기 획득한 제1 압축 벡터 및 제1 스케일링 팩터를 신경망을 이용하여 처리하는 프로세서를 포함할 수 있다.
일 실시예에 따른 제1 메모리는 상기 프로세서의 외부에 위치하고, 상기 제2 메모리는 상기 프로세서의 내부에 위치할 수 있다.
일 실시예에 따른 압축 벡터들은, 상기 압축 벡터들 각각에 대응하는 단어의 빈도수가 높을수록 상기 압축 임베딩 행렬에서의 로우를 나타내는 인덱스가 작은 값을 가질 수 있다.
일 실시예에 따른 압축 벡터들 중 k개의 압축 벡터들에는 제2 스케일링 팩터가 할당되고, k 개의 압축 벡터들보다 빈도수가 낮은 m 개의 압축 벡터들에는 제3 스케일링 팩터가 할당되며, 상기 k는 상기 m보다 작을 수 있다.
일 실시예에 따른 제2 메모리는 상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 빈도수가 기 설정된 제1 값 이상인 압축 벡터들을 미리 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 빈도수가 기 설정된 제2 값 이상인 스케일링 팩터들을 미리 저장할 수 있다.
일 실시예에 따른 제2 메모리는, 상기 복수의 압축 벡터들 중 일부를 저장하는 제1 캐시 메모리 및 상기 스케일링 팩터들 중 일부를 저장하는 제2 캐시 메모리를 포함하고, 상기 프로세서는, 상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하는 지 결정하여, 상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하는 경우, 상기 제1 압축 벡터를 상기 제1 캐시 메모리로부터 읽어오고, 상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하지 않는 경우, 상기 제1 압축 벡터를 상기 제1 메모리로부터 읽어오며, 상기 제1 스케일 팩터가 상기 제2 캐시 메모리에 존재하는 지 결정하여, 상기 제1 스케일 팩터가 상기 제2 캐시 메모리에 존재하는 경우, 상기 제1 스케일 팩터를 상기 제2 캐시 메모리로부터 읽어오고, 상기 제1 스케일 팩터가 제2 캐시 메모리에 존재하지 않는 경우, 상기 제1 스케일 팩터를 상기 제1 메모리로부터 읽어올 수 있다.
일 실시예에 따른 프로세서는, 상기 제1 압축 벡터의 어드레스 정보에 기초하여, 상기 제1 스케일링 팩터의 어드레스 정보를 결정하고, 상기 제1 스케일링 팩터의 어드레스 정보에 기초하여, 상기 제1 메모리 또는 제2 메모리로부터 상기 제1 스케일링 팩터를 획득할 수 있다.
일 실시예에 따른 프로세서는, 상기 복수의 압축 벡터들과 상기 스케일링 팩터들의 매핑 관계를 나타내는 매핑 정보를 이용하여, 상기 제1 압축 벡터에 대응하는 상기 제1 스케일링 팩터를 결정할 수 있다.
일 실시예에 따른 전자 장치는, 상기 워드를 입력받는 입력부를 더 포함할 수 있다.
일 실시예에 따른 프로세서는, 상기 신경망으로부터 출력된 데이터에 기초하여 결과 값을 획득하고, 상기 전자 장치는, 획득된 결과 값을 출력하는 출력부를 더 포함할 수 있다.
일 실시예에 따른 언어 모델을 이용하여, 워드를 처리하는 전자 장치의 동작방법은, 복수의 워드들에 대응되는 벡터들을 압축한 압축 벡터들을 포함하는 압축 임베딩 행렬과 압축 벡터들에 대응되는 스케일링 팩터들을 제1 메모리에 저장하는 단계, 상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 상기 복수의 압축 벡터들 중 일부를 상기 제1 메모리보다 동작 속도가 빠른 제2 메모리에 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 상기 스케일링 팩터들 중 일부를 상기 제2 메모리에 저장하는 단계, 상기 제1 메모리 또는 제2 메모리로부터, 입력된 워드에 대응하는 제1 압축 벡터 및 제1 스케일링 팩터를 획득하는 단계, 및 상기 획득한 제1 압축 벡터 및 제1 스케일링 팩터를 신경망을 이용하여 처리하는 단계를 포함할 수 있다.
일 실시예에 따른 전자 장치는 임베딩 행렬의 압축으로 획득된 압축 벡터들과 스케일링 팩터들을 메모리에 저장하고, 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리함으로써, 연산의 효율은 향상되며, 전력 소비는 감소될 수 있다.
도 1은 일 실시예에 따른 전자 장치를 나타내는 도면이다.
도 2는 일 실시예에 따른 언어 모델을 설명하기 위해 참조되는 도면이다.
도 3은 일 실시예에 따른 임베딩 행렬이 압축되는 방법을 설명하기 위해 참조되는 도면이다.
도 4는 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 5는 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 6은 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 7은 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 8은 일 실시예에 따른 전자 장치의 동작방법을 나타내는 흐름도이다.
도 9는 일 실시예에 따른 전자 장치의 구성을 나타내는 블록도이다.
도 10은 다른 실시예에 따른 전자 장치의 구성을 나타내는 블록도이다.
도 2는 일 실시예에 따른 언어 모델을 설명하기 위해 참조되는 도면이다.
도 3은 일 실시예에 따른 임베딩 행렬이 압축되는 방법을 설명하기 위해 참조되는 도면이다.
도 4는 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 5는 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 6은 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 7은 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
도 8은 일 실시예에 따른 전자 장치의 동작방법을 나타내는 흐름도이다.
도 9는 일 실시예에 따른 전자 장치의 구성을 나타내는 블록도이다.
도 10은 다른 실시예에 따른 전자 장치의 구성을 나타내는 블록도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 명세서의 실시예에서 “사용자”라는 용어는 가전 기기(또는 주변 기기), 디스플레이 장치, 및 모바일 장치의 기능 또는 동작을 제어하는 사람을 의미하며, 관리자 또는 설치 기사를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 실시예들에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 일 실시예에 따른 전자 장치를 나타내는 도면이다.
도 1을 참조하면, 일 실시예에 따른 전자 장치(100)는 입력된 워드를 언어 모델을 이용하여 처리하는 전자 장치일 수 있다. 일 실시예에 따른 전자 장치(100)는 휴대폰, 태블릿 PC, 디지털 카메라, 캠코더, 노트북 컴퓨터(laptop computer), 태블릿 PC, 데스크탑, 전자책 단말기, 디지털 방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션, MP3 플레이어, 캠코더, IPTV(Internet Protocol Television), DTV(Digital Television), 착용형 기기(wearable device) 등과 같은 다양한 전자 장치로 구현될 수 있다.
일 실시예에 따른 전자 장치(100)는 언어 모델을 이용하여, 워드를 분류하거나, 기계 번역을 수행하거나, 입력된 워드의 다음에 나올 워드를 예측(추천 워드를 제공)하거나, 입력된 질문에 답변을 제공할 수 있다. 도 1에는 전자 장치(100)가 언어 모델을 이용하여, 입력된 질문에 답변을 제공하는 예를 도시하였으나, 이에 한정되지 않는다.
도 1을 참조하면, 전자 장치(100)는, 질문(예를 들어, “오늘 날씨가 어때?”)을 입력 받고, 언어 모델을 이용하여 입력된 질문에 포함되는 워드들을 처리하고, 질문에 대한 답변을 획득할 수 있다. 또한, 전자 장치(100)는 질문에 대한 답변(예를 들어, 오늘의 기온은 영상 23도이며, 날씨는 맑음입니다.)을 출력할 수 있다.
이하, 도 2를 참조하여, 언어 모델에 대해서 설명하기로 한다.
도 2는 일 실시예에 따른 언어 모델을 설명하기 위해 참조되는 도면이다.
도 2를 참조하면, 일 실시예에 따른, 언어 모델은 임베딩 레이어(210), 신경망(220), 및 분류기(230)를 포함할 수 있다. 임베딩 레이어(210)에는 문장(워드 시퀀스)이 입력될 수 있다. 임베딩 레이어(210)는 임베딩 행렬을 이용하여, 입력된 워드 시퀀스에 대응하는 히든 벡터들을 출력한다. 히든 벡터들은, 워드 시퀀스에 포함되는 워드들 각각에 대응하는 벡터와 임베딩 행렬의 곱 연산에 의해 획득될 수 있다. 임베딩 행렬에 대해서는 도 3을 참조하여 자세히 후술하기로 한다.
한편, 신경망(220)은 임베딩 레이어(210)로부터 히든 벡터들을 입력 받아, 소정의 연산을 수행하고, 연산이 수행된 결과 데이터를 분류기(230)로 출력할 수 있다. 이때, 신경망(220)은 RNN(순환신경망)일 수 있으며, RNN은 시계열 데이터와 같이 시간의 흐름에 따라 변화하는 데이터를 학습하기 위한 딥 러닝 모델의 일종이다. 또한, 신경망(220)은 GRU, LSTM, Transformer, BERT 등을 포함할 수 있으며, 다양한 형태로 이루어질 수 있다.
신경망(220)으로부터 출력된 결과 데이터는 분류기(230)로 입력될 수 있으며, 분류기(230)는 소정의 연산을 수행하여 결과값을 출력할 수 있다. 예를 들어, 분류기(230)로부터 출력되는 결과값은, 임베딩 레이어(210)에 입력된 워드 시퀀스를 특정 그룹으로 분류한 결과값일 수 있다. 이때, 결과값은 워드 시퀀스에 대응하는 레이블(label)로, 간단하게는 “예” 또는 “아니오”일수도 있으며, 복수 개의 다양한 레이블들을 포함할 수 있다.
또한, 도 2에는 신경망(220)으로부터 출력된 데이터가 분류기(230)로 입력되는 것으로 도시하였으나, 신경망(220)으로부터 출력된 데이터가 분류기(230) 대신 디코더로 입력될 수 있다. 디코더는 소정의 연산을 수행하여 결과값을 출력할 수 있으며, 디코더로부터 출력되는 결과값은, 임베딩 레이어(210)에 입력된 워드에 대한 기계 번역을 수행한 결과값, 임베딩 레이어(210)에 입력된 워드의 다음에 나올 워드를 예측한 결과값, 및 임베딩 레이어(210)에 입력된 질문에 대한 답변 결과값 중 적어도 하나일 수 있다. 다만, 이에 한정되지 않는다.
도 3은 일 실시예에 따른 임베딩 행렬이 압축되는 방법을 설명하기 위해 참조되는 도면이다.
도 3을 참조하면, 일 실시예에 따른 임베딩 레이어(210)에서 이용되는 임베딩 행렬(310)은 M x N의 크기를 가지며, 이때, M은 언어 모델을 학습시키기 위해 이용되는 복수의 문장들에 포함되는 워드의 종류에 따라 결정될 수 있으며, 일반적으로 매우 많은 종류의 워드가 포함되므로, M의 크기는 N에 비해 매우 클 수 있다. 예를 들어, 복수의 문장들에 15000개의 서로 상이한 워드가 포함된 경우, M은 15000일 수 있으며, 보통, N은 300~1000 정도의 크기를 가진다.
임베딩 행렬(310)은 크기가 매우 커서, 언어 모델을 이용한 워드 처리 시에, 전자 장치(100)의 프로세서 상에 임베딩 행렬 전체가 로딩될 수 없으며, 프로세서는 프로세서 외부에 존재하는 메모리로부터 임베딩 행렬의 일부 데이터를 읽어오는 과정을 반복해야 한다. 이에 따라, 워드 처리 시에, 오버헤드가 크게 발생하게 되며, 오버헤드를 줄이고, 워드 처리 연산의 효율을 높이기 위해 임베딩 행렬(310)은 압축될 필요가 있다.
임베딩 레이어(210)에서, 임베딩 행렬(310)과 곱해지는 벡터(워드에 대응하는 벡터)는 one-hot vector로 구성될 수 있다. one-hot vector는 1 x M의 크기를 가지는 벡터일 수 있으며, M개의 열(column) 중 하나의 값이 1이고, 나머지는 0인 벡터일 수 있다. 이때, 복수의 워드들에 대응하는 one-hot vector들은 값이 1인 열의 위치가 서로 상이할 수 있다. 이에 따라, 임베딩 레이어(210)에서, 임베딩 행렬(310)을 이용하여, 워드에 대응하는 벡터를 히든 벡터로 변환하는 경우, 임베딩 행렬(310)에 포함되는 복수의 로우 벡터들 중 하나의 로우 벡터가 히든 벡터로써 획득된다. 이때, 로우 벡터는, 임베딩 행렬(310)을 구성하는 하나의 로우(row)를 의미한다.
임베딩 행렬(310)에 포함되는 로우 벡터들 각각은 워드들 각각에 대응되는 히든 벡터가 될 수 있다.
또한, 임베딩 행렬(310)은 워드의 빈도수에 기초하여 정렬될 수 있다. 빈도수가 높은(자주 사용되는) 워드에 대응하는 로우 벡터가 임베딩 행렬(310)의 상단에 위치하도록 정렬될 수 있다. 또는, 임베딩 행렬(310)은 워드의 중요도에 기초하여 정렬될 수 있다. 중요도가 높은 워드에 대응하는 로우 벡터가 임베딩 행렬(310)의 상단에 위치하도록 정렬될 수 있다. 다만, 이에 한정되지 않는다.
일 실시예에 따른 임베딩 행렬(310)은, 임베딩 행렬(310)에 포함된 로우 벡터들 각각을 스케일링 팩터(320)와 압축(양자화된) 벡터(330)의 곱으로 나타냄으로써 압축될 수 있다. 이때, 압축 벡터에 포함되는 엘리먼트들 각각은 1-bit로 표현될 수 있으나 이에 한정되지 않는다. 또한, 복수의 로우 벡터들 각각에는 서로 다른 스케일링 팩터가 할당되거나, 동일한 스케일링 팩터가 할당될 수 있다. 이때, 중요도 또는 빈도수에 따라, 로우 벡터들에 할당하는 스케일링 팩터의 개수를 다르게 할 수 있다. 예를 들어, 중요도 또는 빈도수가 높은 로우 벡터들(중요도 또는 빈도수가 높은 워드들에 대응하는 로우 벡터들)에는, 중요도 또는 빈도수가 상대적으로 낮은 로우 벡터들(중요도 또는 빈도수가 상대적으로 워드들에 대응하는 로우 벡터들)보다 더 많은 수의 스케일링 팩터들을 할당할 수 있다. 이에 따라, 중요도 또는 빈도수가 높은 로우 벡터들에는 압축율이 낮더라도 압축 손실(양자화 에러)이 적어지는 방향으로 스케일링 팩터가 할당되고, 중요도 또는 빈도수가 낮은 로우 벡터들에는 압축 손실(양자화 에러)이 증가하더라도 압축율을 높이는 방향으로 스케일링 팩터가 할당될 수 있다.
예를 들어, 임베딩 행렬이 M개의 로우 벡터들을 포함하고, 제1 로우 벡터 내지 제3 로우 벡터들이 제4 내지 제6 로우 벡터보다 중요도 또는 빈도수가 높은 경우, 제1 내지 제3 로우 벡터들 각각에 서로 다른 스케일 팩터가 할당될 수 있다. 제1 로우 벡터에는 스케일링 팩터 a1이 할당되어, 제1 로우 벡터는 스케일링 팩터 a1과 제1 압축 벡터의 곱으로 나타낼 수 있다. 또한, 제2 로우 벡터에는 스케일링 팩터 a2가 할당되어, 제2 로우 벡터는 스케일링 팩터 a2와 제2 압축 벡터의 곱으로 나타내고, 제3 로우 벡터에는 스케일링 팩터 a3이 할당되어, 제3 로우 벡터는 스케일링 팩터 a3과 제3 압축 벡터의 곱으로 나타낼 수 있다.
또한, 제4 내지 제6 로우 벡터에는 스케일링 팩터 a4가 동일하게 할당되어, 제4 로우 벡터는 스케일링 팩터 a4와 제4 압축 벡터의 곱으로, 제5 로우 벡터는 스케일링 팩터 a4와 제5 압축 벡터의 곱으로, 제6 로우 벡터는 스케일링 팩터 a4와 제6 압축 벡터의 곱으로 나타낼 수 있다.
또는, 제1 로우 벡터가 제2 및 제3 로우 벡터보다 중요도 또는 빈도수가 높은 경우, 제1 로우 벡터에는 2개의 스케일링 팩터가 할당될 수도 있다. 제1 로우 벡터의 일부에는 스케일링 팩터 a11이 할당되고, 제1 로우 벡터의 나머지 부분에는 스케일링 팩터 a12이 할당됨으로써, 제1 로우 벡터는 압축율이 낮더라도 압축 손실(양자화 에러)이 적어지는 방향으로 스케일링 팩터가 할당될 수 있다.
일 실시예에 따른 임베딩 행렬(310)에 포함되는 복수의 로우 벡터들은 빈도수 또는 중요도가 높은 순서로 정렬되고, 정렬된 순서로 복수의 그룹들로 분할되어, 그룹마다 동일한 스케일링 팩터가 할당될 수 있다. 이때, 상단에 위치하는 그룹들은 하단에 위치하는 그룹들에 비해, 하나의 그룹에 포함되는 로우 벡터들의 개수가 작을 수 있다. 이에 따라, 상단에 위치하는 로우 벡터들(빈도수 또는 중요도가 높은 로우 벡터들)에는 압축율이 작더라도 압축 손실(양자화 에러)이 적어지는 방향으로 스케일링 팩터가 할당되고, 하단에 위치하는 로우 벡터들(빈도수 또는 중요도가 낮은 로우 벡터들)에는 압축 손실(양자화 에러)이 증가하더라도 압축율을 높이는 방향으로 스케일링 팩터가 할당될 수 있다.
임베딩 행렬(310)의 압축이 수행되어, 스케일링 팩터들(320)과 압축 벡터들(320)이 획득되면, 스케일링 팩터들(320)과 압축 벡터들(320)은 전자 장치(100)에 저장될 수 있다. 이때, 압축 벡터들(320)은 압축 임베딩 행렬로 지칭될 수 있다.
이하, 도 4 내지 7을 참조하여, 전자 장치(100)가 압축 벡터들(압축 임베딩 행렬) 및 스케일링 팩터들을 저장하고, 입력된 워드에 대응하는 압축 벡터 및 스케일링 팩터를 획득하며, 획득한 압축 벡터 및 스케일링 팩터를 이용하여, 입력된 워드를 처리하는 방법을 설명하기로 한다.
도 4는 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
일 실시예에 따른 전자 장치(100)는 제1 메모리(410), 제2 메모리(420) 및 프로세서(430)를 포함할 수 있다.
도 3에서 설명한 바와 같이, 임베딩 행렬의 압축으로 획득된 스케일링 팩터들(320)과 압축 벡터들(압축 임베딩 행렬, 330)은 제1 메모리(410)에 저장될 수 있다. 제1 메모리(410)는 프로세서(430)의 외부에 위치하는 메모리일 수 있다. 제1 메모리(410)는 DRAM을 포함할 수 있다.
압축 임베딩 행렬(330)에 포함되는 압축 벡터들은 빈도수 또는 중요도가 높은 순서로 정렬될 수 있으며, 압축 벡터들의 빈도수 또는 중요도가 높을수록 압축 임베딩 행렬(330)에서의 로우를 나타내는 인덱스가 작은 값을 가질 수 있다.
도 4에서는 제1 메모리(410)를 하나의 메모리로 도시하였으나, 제1 메모리(410)는 물리적으로 구별되는 복수의 메모리를 포함할 수 있다. 이에 따라, 스케일링 팩터들(320)과 압축 벡터들(330)은 동일한 메모리에 저장되거나 물리적으로 구별되는 서로 다른 메모리에 저장될 수 있다.
일 실시예에 따른 제2 메모리(420)는 프로세서(430)의 외부에 위치하는 메모리일 수 있으며, SRAM을 포함할 수 있다. 또한, 제2 메모리(420)는 제1 메모리(410)에 비해, 동작 속도가 빠르고, 용량이 작을 수 있다. 또한, 제2 메모리(420)는 제1 메모리(410)에 비해 고 비용일 수 있다.
제2 메모리(420)는 제1 메모리(410)에 저장된 복수의 압축 벡터들(330) 중 일부(335)를 저장할 수 있다. 이때, 압축 벡터들에 대응하는 워드들의 빈도수 또는 중요도 정보에 기초하여, 빈도수 또는 중요도가 높은 워드들에 대응하는 일부 압축 벡터들(335)을 제2 메모리(420)에 미리 저장할 수 있다.
또한, 제2 메모리(420)는 캐시 메모리로 동작할 수 있으며, 제2 메모리(420)는 제1 메모리(410)에 저장된 복수의 스케일링 팩터들(320) 중 일부(325)를 저장할 수 있다. 이때, 스케일링 팩터들의 빈도수 또는 중요도 정보에 기초하여, 빈도수 또는 중요도가 높은 일부 스케일링 팩터들을 제2 메모리(420)에 미리 저장할 수 있다. 스케일링 팩터들의 빈도수 또는 중요도 정보는, 스케일링 팩터들에 대응하는 워드들의 빈도수 또는 중요도 정보에 기초하여, 결정될 수 있다. 예를 들어, 제1 내지 제3 워드에 대응하는 로우 벡터들에 제1 스케일링 팩터가 공통으로 할당되어 압축된 경우, 제1 워드의 빈도수, 제2 워드의 빈도수 및 제3 워드의 빈도수의 합 또는 가중 합으로 제1 스케일링 팩터의 빈도수 또는 중요도 정보가 결정될 수 있다. 또는, 제1 워드에 대응하는 로우 벡터에 제1 스케일링 팩터 및 제2 스케일링 팩터가 할당되어 압축된 경우, 제1 워드의 빈도수에 기초하여, 제1 스케일링 팩터 및 제2 스케일링 팩터 각각의 빈도수 또는 중요도 정보가 결정될 수 있다. 다만, 이에 한정되지 않는다.
또한, 도 4에는 제2 메모리(420)를 하나의 메모리로 도시하였으나, 제2 메모리(420)는 물리적으로 구별되는 복수의 메모리를 포함할 수 있다. 이에 따라, 일부 스케일링 팩터들(325)과 일부 압축 벡터들(335)은 동일한 메모리에 저장되거나, 물리적으로 구별되는 서로 다른 메모리에 저장될 수도 있다.
프로세서(430)는 전자 장치(400)에 입력된 워드를 처리하기 위하여, 입력된 워드(입력된 워드 시퀀스에 포함되는 워드)에 대응하는 압축 벡터와 스케일링 팩터를 제1 메모리(410) 또는 제2 메모리(420)로부터 획득할 수 있다.
프로세서(430)는 입력된 워드에 대응하는 압축 벡터 및 스케일링 팩터를 제1 메모리(410) 또는 제2 메모리(420)로부터 읽어올 수 있다. 프로세서(430)는 입력된 워드에 대응하는 압축 벡터 및 스케일링 팩터를 요청하는 명령을 우선 제2 메모리(420)로 전송할 수 있다.
프로세서(430)는 압축 벡터의 인덱스 정보(또는 어드레스 정보)에 기초하여, 압축 벡터에 할당된 스케일링 팩터의 인덱스 정보(또는 어드레스 정보)를 결정할 수 있다. 예를 들어, 프로세서(430)는 압축 벡터의 인덱스 정보와 스케일링 팩터의 인덱스 정보를 서로 맵핑한 맵핑 정보에 기초하여, 압축 벡터에 대응하는 스케일링 팩터의 인덱스 정보를 결정할 수 있다. 이때, 압축 벡터의 인덱스 정보와 스케일링 팩터의 인덱스 정보는 기 설정된 규칙에 의하여 매핑될 수 있으며, 이 경우 압축 벡터의 인덱스 정보에 간단한 연산을 이용하여 스케일링 팩터의 인덱스 정보를 결정할 수 있다. 또는, 맵핑 정보는, 압축 벡터의 인덱스 정보와 스케일링 팩터의 인덱스 정보를 서로 맵핑한 테이블일 수 있으나, 이에 한정되지 않는다.
제2 메모리(420)는 요청된 압축 벡터의 인덱스 또는 어드레스 정보에 기초하여, 요청된 압축 벡터가 제2 메모리(420)에 존재하는 지 여부를 판단할 수 있다. 판단 결과, 요청된 압축 벡터가 제2 메모리(420)에 존재하는 경우, 압축 벡터를 프로세서(430)로 전달하고, 요청된 압축 벡터가 제2 메모리(420)에 존재하지 않는 경우, 제1 메모리(410)로 압축 벡터를 요청한다. 제1 메모리(410)는 요청된 압축 벡터를 제2 메모리(420) 및 프로세서(430)로 전달할 수 있다. 제2 메모리(420)는 제1 메모리(410)로부터 전달받은 압축 벡터를 제2 메모리(420)에 저장할 수 있다. 이때, 제2 메모리(420)에 기 저장된 데이터들 중 가장 오래되거나 빈도수가 적은 압축 벡터를 삭제하고, 제1 메모리(410)로부터 전달 받은 압축 벡터를 저장할 수 있다. 이때, 제2 메모리(420)에 저장된 일부 압축 벡터는 삭제되지 않고 제2 메모리(420)에 계속 저장되도록 설정될 수 있다. 다만, 이에 한정되지 않는다.
또한, 제2 메모리(420)는 요청된 압축 벡터에 할당된 스케일링 팩터가 제2 메모리(420)에 존재하는 지 여부를 판단하여, 요청된 압축 벡터에 할당된 스케일링 팩터가 제2 메모리(420)에 존재하는 경우, 스케일링 팩터를 프로세서(430)로 전달하고, 존재하지 않는 경우, 스케일링 팩터를 제1 메모리(410)로 요청한다. 제1 메모리(410)는 요청된 스케일링 팩터를 제2 메모리(420) 및 프로세서(430)로 전달할 수 있다. 제2 메모리(420)는 제1 메모리(410)로부터 전달받은 스케일링 팩터를 제2 메모리(420)에 저장할 수 있다. 이때, 제2 메모리(420)에 기 저장된 데이터들 중 가장 오래되거나 빈도수가 적은 스케일링 팩터를 삭제하고, 제1 메모리(410)로부터 전달 받은 스케일링 팩터를 저장할 수 있다. 이때, 제2 메모리(420)에 저장된 일부 스케일링 팩터는 삭제되지 않고, 제2 메모리(420)에 계속 저장되도록 설정될 수 있다. 다만, 이에 한정되지 않는다.
프로세서(430)는 획득한 압축 벡터와 스케일링 팩터에 기초하여, 워드에 대한 처리를 수행할 수 있다. 프로세서(430)는 도 2에서 설명한 신경망(220)을 이용하여, 워드에 대한 처리를 수행할 수 있다. 예를 들어, 획득한 압축 벡터 및 스케일링 팩터는 신경망(220)에 입력될 수 있다. 이때, 획득한 압축 벡터 및 스케일링 팩터는 신경망(220)의 구조에 따라, 곱해져서 신경망(220)에 입력되거나, 곱해지지 않고 별도의 값들로 신경망(220)에 입력될 수 있다. 프로세서(430)는 신경망(220)을 이용하여, 소정의 연산을 수행함으로써, 획득된 결과 데이터를 분류기(230) 또는 디코더로 출력할 수 있다. 프로세서(430)는 신경망(220)으로부터 출력된 결과 데이터에 대하여, 도 2에서 설명한 분류기(230) 또는 디코더의 동작을 수행함으로써, 결과값을 제공할 수 있다. 결과값에 대해서는 도 2에서 자세히 설명하였으므로 동일한 설명은 생략하기로 한다.
도 5는 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
일 실시예에 따른 전자 장치(100)는 제1 메모리(510), 제2 메모리(520), 및 프로세서(530)를 포함할 수 있다.
도 3에서 설명한 바와 같이, 임베딩 행렬의 압축으로 획득된 스케일링 팩터들(320)과 압축된 벡터들(압축 임베딩 행렬, 330)은 제1 메모리(510)에 저장될 수 있다. 제1 메모리(510)는 도 4의 제1 메모리(410)에 대응되는 구성이며, 제1 메모리(410)에 대해서는 도 4에서 구체적으로 설명하였으므로, 동일한 설명은 생략하기로 한다.
일 실시예에 따른 제2 메모리(520)는 프로세서(530)의 외부에 위치하는 메모리일 수 있으며, SRAM을 포함할 수 있다. 또한, 제2 메모리(520)는 제1 메모리(510)에 저장된 복수의 압축 벡터들(330) 중 일부(335)를 저장할 수 있다. 이때, 압축 벡터들에 대응하는 워드들의 빈도수 또는 중요도 정보에 기초하여, 빈도수 또는 중요도가 높은 워드들에 대응하는 일부 압축 벡터들(335)을 제2 메모리(520)에 미리 저장할 수 있다.
일 실시예에 따른 프로세서(530)는 제3 메모리(531) 및 데이터 처리부(532)를 포함할 수 있다.
제3 메모리(531)는 프로세서(530)의 내부에 위치하는 메모리일 수 있다. 제3 메모리(531)는 SRAM을 포함할 수 있다. 제3 메모리(531)는 제1 메모리(510) 및 제2 메모리(520)에 비해, 동작 속도가 빠르고, 용량이 작을 수 있다. 또한, 제3 메모리(531)는 제1 메모리(510) 및 제2 메모리(520)에 비해 고 비용일 수 있다.
제3 메모리(531)는 제1 메모리(510)에 저장된 복수의 스케일링 팩터들(320)의 빈도수 또는 중요도 정보에 기초하여 일부(325)를 저장할 수 있다. 빈도수 또는 중요도 정보에 기초하여 일부 스케일링 팩터들(325)을 저장하는 방법에 대해서는 도 4에서 자세히 설명하였으므로 동일한 설명은 생략하기로 한다.
데이터 처리부(532)는 도 4의 프로세서(430)에 대응하는 구성으로, 도 4에서 설명한 프로세서(430)의 동작들을 수행할 수 있다. 데이터 처리부(532)는 워드가 입력되면, 입력된 워드에 대응하는 압축 벡터를 제2 메모리(520) 또는 제1 메모리(510)로부터 획득할 수 있으며, 입력된 워드에 대응하는 스케일링 팩터를 제3 메모리(531) 또는 제1 메모리(510)로부터 획득할 수 있다.
데이터 처리부(532)가 제2 메모리(520) 또는 제1 메모리(510)로부터 압축 벡터를 획득하는 동작들은 도 4의 프로세서(430)가 제2 메모리(420) 또는 제1 메모리(410)로부터 압축 벡터를 획득하는 동작들에 대응되며, 제3 메모리(531) 또는 제1 메모리(510)로부터 스케일링 팩터를 획득하는 동작들은 도 4의 프로세서(430)가 제2 메모리(420) 또는 제1 메모리(410)로부터 스케일링 팩터를 획득하는 동작들에 대응되므로, 동일한 설명은 생략하기로 한다.
또한, 데이터 처리부(532)는 획득한 압축 벡터와 스케일링 팩터에 기초하여, 워드에 대한 처리를 수행할 수 있으며, 데이터 처리부(532)가 압축 벡터 및 스케일링 팩터에 기초하여 워드에 대한 처리를 수행하는 방법은, 도 4의 프로세서(430)가 워드에 대한 처리를 수행하는 방법에 대응하므로, 동일한 설명은 생략하기로 한다.
도 6은 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
일 실시예에 따른 전자 장치(100)는 제1 메모리(610), 제2 메모리(620), 프로세서(630), 및 제4 메모리(640)를 포함할 수 있으며, 프로세서(630)는 제3 메모리(631) 및 데이터 처리부(632)를 포함할 수 있다.
도 3에서 설명한 바와 같이, 임베딩 행렬의 압축으로 획득된 스케일링 팩터들(320)과 압축된 벡터들(압축 임베딩 행렬, 330)은 제1 메모리(610)에 저장될 수 있다. 제1 메모리(610)는 도 4의 제1 메모리(410)에 대응되는 구성이며, 제1 메모리(410)에 대해서는 도 4에서 구체적으로 설명하였으므로, 동일한 설명은 생략하기로 한다.
일 실시예에 따른 제2 메모리(620)는 제1 메모리(610)에 저장된 복수의 압축 벡터들(330) 중 일부(335)를 저장할 수 있으며, 도 5의 제2 메모리(520)에 대응되는 구성이다. 제2 메모리(520)에 대해서는 도 5에서 구체적으로 설명하였으므로, 동일한 설명은 생략하기로 한다.
일 실시예에 따른 제4 메모리(640)는 프로세서(630)의 외부에 위치하는 메모리일 수 있으며, SRAM을 포함할 수 있다. 또한, 제4 메모리(640)는 제1 메모리(610)에 저장된 복수의 스케일링 팩터들(320) 중 일부(325)를 저장할 수 있다. 빈도수 또는 중요도 정보에 기초하여 일부 스케일링 팩터들(325)을 저장하는 방법에 대해서는 도 4에서 자세히 설명하였으므로 동일한 설명은 생략하기로 한다.
일 실시예에 따른 제3 메모리(631)는 프로세서(630)의 내부에 위치하는 메모리일 수 있으며, SRAM을 포함할 수 있다. 제3 메모리(631)는 제1 메모리(610), 제2 메모리(620), 및 제4 메모리(640)에 비해 동작 속도가 빠르고 용량이 작을 수 있다. 또한, 제3 메모리(631)는 제1 메모리(610), 제2 메모리(620), 및 제4 메모리(640)에 비해 고 비용일 수 있다.
또한, 제3 메모리(631)는 제1 메모리(610)에 저장된 복수의 스케일링 팩터들(320)의 빈도수 또는 중요도 정보에 기초하여, 일부(327)를 저장할 수 있다. 이때, 제3 메모리(631)에 저장된 일부 스케일링 팩터들(327)은 제4 메모리(640)에 저장된 일부 스케일링 팩터들(325)보다 빈도수 또는 중요도가 높은 스케일링 팩터들일 수 있다.
데이터 처리부(632)는 도 4의 프로세서(430)에 대응하는 구성으로, 도 4에서 설명한 프로세서(430)의 동작들을 수행할 수 있다. 데이터 처리부(632)는 워드가 입력되면, 입력된 워드에 대응하는 압축 벡터를 제2 메모리(520) 또는 제1 메모리(510)로부터 획득할 수 있다. 데이터 처리부(532)가 제2 메모리(520) 또는 제1 메모리(510)로부터 압축 벡터를 획득하는 동작들은 도 4의 프로세서(430)가 제2 메모리(420) 또는 제1 메모리(410)로부터 압축 벡터를 획득하는 동작들에 대응되므로, 동일한 설명은 생략하기로 한다.
또한, 데이터 처리부(632)는 입력된 워드에 대응하는 스케일링 팩터를 제3 메모리(631), 제4 메모리(640) 및 제1 메모리(610) 중 어느 하나로부터 획득할 수 있다.
데이터 처리부(632)는 입력된 워드에 대응하는 스케일링 팩터를 요청하는 명령을 우선 제3 메모리(631)로 전송할 수 있다.
제3 메모리(631)는 요청된 스케일링 팩터가 제3 메모리(631)에 존재하는 지 여부를 판단할 수 있다. 판단 결과, 요청된 스케일링 팩터가 제3 메모리(631)에 존재하는 경우 스케일링 팩터를 데이터 처리부(632)로 전달하고, 요청된 스케일링 팩터가 제3 메모리(631)에 존재하지 않는 경우, 제4 메모리(640)로 스케일링 팩터를 요청한다. 제4 메모리(640)도 요청된 스케일링 팩터가 제4 메모리(640)에 존재하는 지 여부를 판단하고, 존재하는 경우, 스케일링 팩터를 제3 메모리(631)를 통해 데이터 처리부(632)로 전달하거나 데이터 처리부(632)로 직접 전달할 수 있다. 반면에 요청된 스케일링 팩터가 제4 메모리(640)에 존재하지 않는 경우, 제1 메모리(610)로 스케일링 팩터를 요청할 수 있다. 제1 메모리(610)는 요청된 스케일링 팩터를 제4 메모리(640), 제3 메모리(631)를 통해 데이터 처리부(632)로 전달하거나, 데이터 처리부(632)로 직접 전달할 수 있다.
제4 메모리(640)는 제1 메모리(610)로부터 전달 받은 스케일링 팩터를 저장할 수 있다. 이때, 제4 메모리(640)에 기 저장된 데이터들 중 가장 오래되거나 빈도수가 적은 스케일링 팩터를 삭제하고, 제1 메모리(610)로부터 전달 받은 스케일링 팩터를 저장할 수 있다. 이때, 제3 메모리(631)에 저장된 스케일링 팩터들(327)은 새로운 데이터로 대체되지 않고 제3 메모리(631)에 계속 저장되도록 설정될 수 있다. 다만, 이에 한정되지 않는다.
또한, 데이터 처리부(632)는 획득한 압축 벡터와 스케일링 팩터에 기초하여, 워드에 대한 처리를 수행할 수 있으며, 데이터 처리부(632)가 압축 벡터 및 스케일링 팩터에 기초하여 워드에 대한 처리를 수행하는 방법은, 도 4의 프로세서(630)가 워드에 대한 처리를 수행하는 방법에 대응하므로, 동일한 설명은 생략하기로 한다.
도 7은 일 실시예에 따른 전자 장치가 압축 벡터들과 스케일링 팩터들을 이용하여, 입력된 워드를 처리하는 동작을 설명하기 위해 참조되는 도면이다.
일 실시예에 따른 전자 장치(100)는 제1 메모리(710) 및 프로세서(720)를 포함할 수 있다. 또한, 프로세서(720)는 제2 메모리(721)와 데이터 처리부(722)를 포함할 수 있다.
제1 메모리(710)는 도 4의 제1 메모리(410)에 대응되는 구성이며, 제1 메모리(410)에 대해서는 도 4에서 구체적으로 설명하였으므로, 동일한 설명은 생략하기로 한다.
일 실시예에 따른 제2 메모리(721)는 프로세서(720)의 내부에 위치하는 메모리일 수 있다. 제2 메모리(721)는 SRAM을 포함할 수 있다. 제2 메모리(721)는 제1 메모리(710)에 비해, 동작 속도가 빠르고, 용량이 작을 수 있다. 또한, 제2 메모리(721)는 제1 메모리(710)에 비해 고 비용일 수 있다.
제2 메모리(721)는 제1 메모리(710)에 저장된 복수의 압축 벡터들(330) 중 일부(335)를 저장할 수 있다. 이때, 압축 벡터들에 대응하는 워드들의 빈도수 또는 중요도 정보에 기초하여, 빈도수 또는 중요도가 높은 워드들에 대응하는 일부 압축 벡터들(335)을 제2 메모리(520)에 미리 저장할 수 있다.
또한, 제2 메모리(721)는 제1 메모리(710)에 저장된 복수의 스케일링 팩터들(320) 중 일부(325)를 저장할 수 있다. 이때, 스케일링 팩터에 대응하는 워드들의 빈도수 정보에 기초하여, 빈도수가 높은 워드들에 대응하는 일부 스케일링 팩터들(325)을 제2 메모리(721)에 미리 저장할 수 있다.
도 7에는 제2 메모리(721)를 하나의 메모리로 도시하였으나, 제2 메모리(721)는 물리적으로 구별되는 복수의 메모리들을 포함할 수 있다. 이에 따라, 일부 스케일링 팩터들과 일부 압축된 벡터들은 동일한 메모리에 저장되거나, 물리적으로 구별되는 서로 다른 메모리들에 저장될 수도 있다.
데이터 처리부(722)는 도 4의 프로세서(430)에 대응하는 구성으로, 도 4에서 설명한 프로세서(430)의 동작들을 수행할 수 있다. 데이터 처리부(722)는 워드가 입력되면, 입력된 워드에 대응하는 압축 벡터와 스케일링 팩터를 제1 메모리(710) 또는 제2 메모리(721)로부터 획득할 수 있다.
데이터 처리부(722)가 제2 메모리(721) 또는 제1 메모리(710)로부터 압축 벡터 및 스케일링 팩터를 획득하는 동작들은 도 4의 프로세서(430)가 제2 메모리(420) 또는 제1 메모리(410)로부터 압축 벡터 및 스케일링 팩터를 획득하는 동작들에 대응되므로, 동일한 설명은 생략하기로 한다.
또한, 데이터 처리부(722)는 획득한 압축 벡터와 스케일링 팩터에 기초하여, 워드에 대한 처리를 수행할 수 있으며, 데이터 처리부(722)가 압축 벡터 및 스케일링 팩터에 기초하여 워드에 대한 처리를 수행하는 방법은, 도 4의 프로세서(430)가 워드에 대한 처리를 수행하는 방법에 대응하므로, 동일한 설명은 생략하기로 한다.
도 8은 일 실시예에 따른 전자 장치의 동작방법을 나타내는 흐름도이다.
도 8을 참조하면, 전자 장치(100)는 압축 벡터들 및 스케일링 팩터들을 제1 메모리에 저장할 수 있다(S810). 이때, 압축 벡터들(압축 임베딩 행렬) 및 스케일링 팩터들은 도 3에서 설명한 바와 같이, 임베딩 행렬의 압축으로 획득될 수 있다. 제1 메모리는 전자 장치(100)의 프로세서의 외부에 위치하는 메모리일 수 있으며, DRAM을 포함할 수 있다. 압축 벡터들은 압축 임베딩 행렬에서, 빈도수 또는 중요도가 높은 순서로 정렬될 수 있으며, 압축 벡터들의 빈도수 또는 중요도가 높을수록 압축 임베딩 행렬에서의 로우를 나타내는 인덱스가 작은 값을 가질 수 있다.
전자 장치(100)는 압축 벡터들의 일부와 스케일링 팩터들의 일부를 제2 메모리에 저장할 수 있다(S820). 제2 메모리는 제1 메모리에 비해 동작 속도가 빠르고 용량이 작을 수 있으며, 제1 메모리에 비해 고 비용일 수 있다. 또한, 제2 메모리는 프로세서의 외부에 위치할 수도 있으며, 내부에 위치할 수도 있다.
또한, 전자 장치(100)는 일부 압축 벡터들과 일부 스케일링 팩터들을 물리적으로 구별되는 서로 다른 메모리들에 저장할 수 있다. 또한, 전자 장치(100)는 일부 압축 벡터들은 프로세서의 외부에 위치하는 제2 메모리에 저장하고, 일부 스케일링 팩터들은 프로세서의 내부에 위치하는 제2 메모리에 저장할 수 있다. 다만, 이에 한정되지 않는다.
전자 장치(100)는 압축 벡터들에 대응하는 워드들의 빈도수 또는 중요도 정보에 기초하여, 빈도수 또는 중요도가 높은 워드들에 대응하는 일부 압축 벡터들을 제2 메모리에 저장할 수 있다. 또한, 전자 장치(100)는 스케일링 팩터들의 빈도수 또는 중요도 정보에 기초하여, 빈도수 또는 중요도가 높은 일부 스케일링 팩터들을 제2 메모리에 저장할 수 있다. 스케일링 팩터들의 빈도수 또는 중요도 정보를 결정하는 방법은, 도 4에서 자세히 설명하였으므로 구체적인 설명은 생략하기로 한다.
전자 장치(100)는 워드를 입력 받고, 입력된 워드를 처리하기 위하여, 입력된 워드에 대응하는 제1 압축 벡터와 제1 스케일링 팩터를 제1 메모리 또는 제2 메모리로부터 획득할 수 있다(S830).
전자 장치(100)는 입력된 워드에 대응하는 제1 압축 벡터 및 제1 스케일링 팩터를 요청하는 명령을 우선 제2 메모리로 전송할 수 있다.
전자 장치(100)는 제1 압축 벡터의 인덱스 정보(또는 어드레스 정보)에 기초하여, 제1 압축 벡터에 할당된 제1 스케일링 팩터의 인덱스 정보(또는 어드레스 정보)를 결정할 수 있다. 예를 들어, 전자 장치(100)는 압축 벡터의 인덱스 정보와 스케일링 팩터의 인덱스 정보를 서로 맵핑한 맵핑 정보에 기초하여, 제1 압축 벡터에 대응하는 제1 스케일링 팩터의 인덱스 정보를 결정할 수 있다.
전자 장치(100)는 요청된 제1 압축 벡터가 제2 메모리에 존재하는 경우, 제1 압축 벡터를 제2 메모리로부터 획득할 수 있다. 또한, 요청된 제1 압축 벡터가 제2 메모리에 존재하지 않는 경우, 제1 메모리로부터 제1 압축 벡터를 획득할 수 있으며, 제1 압축 벡터를 제2 메모리에 저장할 수 있다. 제1 압축 벡터가 제2 메모리에 저장되는 경우, 전자 장치(100)는 제2 메모리에 기 저장된 데이터들 중 가장 오래되거나 빈도수가 적은 압축 벡터를 삭제하고, 제1 메모리(410)로부터 전달 받은 압축 벡터를 저장할 수 있다.
또한, 전자 장치(100)는 요청된 제1 스케일링 팩터가 제2 메모리에 존재하는 경우, 제1 스케일링 팩터를 제2 메모리로부터 획득하고, 제1 스케일링 팩터가 제2 메모리에 존재하지 않는 경우, 제1 메모리로부터 제1 스케일링 팩터를 획득할 수 있다.
전자 장치(100)는 획득된 제1 압축 벡터 및 제1 스케일링 팩터에 기초하여, 워드에 대한 처리를 수행할 수 있다(S840). 전자 장치(100)는 도 2에서 설명한 신경망(220)을 이용하여, 워드에 대한 처리를 수행할 수 있다. 예를 들어, 전자 장치(100)는 획득한 압축 벡터 및 스케일링 팩터를 신경망(220)에 입력할 수 있다. 이때, 전자 장치(100)는 신경망(220)의 구조에 따라, 획득한 압축 벡터 및 스케일링 팩터를 곱해서 신경망(220)에 입력하거나, 곱하지 않고 별도의 값들로 신경망(220)에 입력할 수 있다. 전자 장치(100)는 신경망(220)을 이용하여, 소정의 연산을 수행함으로써, 결과 데이터를 획득하고, 획득된 결과 데이터를 분류기(230) 또는 디코더로 출력할 수 있다. 전자 장치(100)는 신경망(220)으로부터 출력된 결과 데이터에 대하여, 도 2에서 설명한 분류기(230) 또는 디코더의 동작을 수행함으로써, 결과값을 제공할 수 있다. 결과값에 대해서는 도 2에서 자세히 설명하였으므로 동일한 설명은 생략하기로 한다.
도 9는 일 실시예에 따른 전자 장치(100)의 구성을 나타내는 블록도이다.
도 9를 참조하면, 일 실시예에 따른 전자 장치(100)는 프로세서(110), 메모리(120), 입력부(130) 및 출력부(140)를 포함할 수 있다.
일 실시예에 따른 입력부(130)는 다양한 사용자 입력을 수신할 수 있다. 입력부(130)는 사용자가 워드 또는 워드 시퀀스(문장)를 입력하는 수단을 포함할 수 있으며, 구현 예에 따라 다양한 형태로 구현 가능하다. 예를 들어, 입력부(130)는 전자 장치(100)에 구비된 키 패드, 버튼, 터치 패드, 사용자 음성을 수신하는 마이크, 사용자 모션을 감지하는 카메라 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
일 실시예에 따른 프로세서(110)는 전자 장치(100)의 동작을 전반적으로 제어할 수 있다. 또한, 프로세서(110)는 소정 동작이 수행되도록 전자 장치(100)에 포함되는 다른 구성들을 제어할 수 있다.
일 실시예에 따른 프로세서(110)는 메모리(120)에 저장되는 하나 이상의 프로그램들을 실행할 수 있다. 프로세서(110)는 싱글 코어, 듀얼 코어, 트리플 코어, 쿼드 코어 및 그 배수의 코어를 포함할 수 있다. 또한, 프로세서(110)는 복수의 프로세서를 포함할 수 있다.
일 실시예에 따른 메모리(120)는 전자 장치(100)를 구동하고 제어하기 위한 다양한 데이터, 프로그램 또는 어플리케이션을 저장할 수 있다.
또한, 메모리(120)에 저장되는 프로그램은 하나 이상의 인스트럭션들을 포함할 수 있다. 메모리(120)에 저장된 프로그램(하나 이상의 인스트럭션들) 또는 어플리케이션은 프로세서(110)에 의해 실행될 수 있다.
일 실시예에 따른 프로세서(110)는 도 4 내지 도 7에서 도시하고 설명한 프로세서들(430, 530, 630, 720) 중 적어도 하나에 대응될 수 있으며, 일 실시예에 따른 메모리(120)는 도 4에서 설명한 제1 메모리(410) 및 제2 메모리(420), 도 5에서 설명한 제1 메모리(510), 제2 메모리(520) 및 제3 메모리(531), 도 6에서 설명한 제1 메모리(610), 제2 메모리(620), 제3 메모리(631) 및 제4 메모리(640), 도 7에서 설명한 제1 메모리(710) 및 제2 메모리(721) 중 적어도 하나를 포함할 수 있다.
일 실시예에 따른 메모리(120)는 압축 벡터들 및 스케일링 팩터들을 저장할 수 있으며, 메모리(120)가 압축 벡터들 및 스케일링 팩터들을 저장하는 방법에 대해서는 도 4 내지 도 7에서 자세히 설명하였으므로, 동일한 설명은 생략하기로 한다.
프로세서(110)는 입력부(130)를 통해 입력된 워드에 대응하는 압축 벡터 및 스케일링 팩터를 메모리(120)로부터 획득할 수 있다. 프로세서(110)는 획득한 압축 벡터와 스케일링 팩터에 기초하여, 워드에 대한 처리를 수행할 수 있다. 프로세서(110)는 도 2에서 설명한 신경망(220)을 이용하여, 워드에 대한 처리를 수행할 수 있다. 예를 들어, 획득한 압축 벡터 및 스케일링 팩터는 신경망(220)에 입력될 수 있다. 이때, 획득한 압축 벡터 및 스케일링 팩터는 신경망(220)의 구조에 따라, 곱해져서 신경망(220)에 입력되거나, 곱해지지 않고 별도의 값들로 신경망(220)에 입력될 수 있다. 프로세서(110)는 신경망(220)을 이용하여, 소정의 연산을 수행함으로써, 획득된 결과 데이터를 분류기(230) 또는 디코더로 출력할 수 있다. 프로세서(110)는 신경망(220)으로부터 출력된 결과 데이터에 대하여, 도 2에서 설명한 분류기(230) 또는 디코더의 동작을 수행함으로써, 결과값을 제공할 수 있다. 예를 들어, 결과값은 워드 또는 워드 시퀀스를 특정 그룹으로 분류한 결과값, 입력된 워드 또는 워드 시퀀스에 대한 기계 번역을 수행한 결과 값, 입력된 워드의 다음에 나올 워드를 예측한 결과 값, 입력된 워드 시퀀스에 대한 답변 결과 값 중 적어도 하나를 포함할 수 있으나, 이에 한정되지 않는다.
일 실시예에 따른 출력부(140)는 입력된 워드 또는 워드 시퀀스에 대한 결과값을 다양한 형태로 출력할 수 있다. 출력부(140)는 디스플레이, 음향 출력부 등을 포함할 수 있다. 예를 들어, 디스플레이는, 입력된 워드 또는 워드 시퀀스에 대한 결과 값을 시각적으로 사용자에게 제공할 수 있으며, 음향 출력부는 입력된 워드 또는 워드 시퀀스에 대한 결과 값을 청각적으로 사용자에게 제공할 수 있다. 다만, 이에 한정되지 않는다.
도 10은 다른 실시예에 따른 전자 장치의 구성을 나타내는 블록도이다. 도 10의 전자 장치(1000)는 도 1의 전자 장치(100)의 일 실시예일 수 있다.
도 10을 참조하면, 일 실시예에 따른 전자 장치(1000)는 프로세서(1030), 센서부(1020), 통신부(1040), 출력부(1050), 사용자 입력부(1060), A/V 입력부(1070) 및 저장부(1080)를 포함할 수도 있다.
도 10의 프로세서(1030)는 도 9의 프로세서(110)에, 도 10의 저장부(1080)는 도 9의 메모리(120)에, 도 10의 사용자 입력부(1060)는 도 9의 입력부(130)에, 도 10의 출력부(1050)는 도 9의 출력부(140)에 각각 대응될 수 있다. 도 9에서 설명한 내용과 동일한 내용은 도 10에서 생략하기로 한다.
통신부(1040)는, 전자 장치(1000)와 외부 장치 또는 서버 간의 통신을 수행하기 위한 하나 이상의 구성요소를 포함할 수 있다. 예를 들어, 통신부(1040)는, 근거리 통신부(1041), 이동 통신부(1042), 방송 수신부(1043)를 포함할 수 있다.
근거리 통신부(short-range wireless communication unit)(1041)는, 블루투스 통신부, 근거리 무선 통신부(Near Field Communication unit), WLAN(와이파이) 통신부, 지그비(Zigbee) 통신부, 적외선(IrDA, infrared Data Association) 통신부, WFD(Wi-Fi Direct) 통신부, UWB(ultra wideband) 통신부, Ant+ 통신부 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
이동 통신부(1042)는, 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신한다. 여기에서, 무선 신호는, 음성 호 신호, 화상 통화 호 신호 또는 문자/멀티미디어 메시지 송수신에 따른 다양한 형태의 데이터를 포함할 수 있다.
방송 수신부(1043)는, 방송 채널을 통하여 외부로부터 방송 신호 및/또는 방송 관련된 정보를 수신한다. 방송 채널은 위성 채널, 지상파 채널을 포함할 수 있다. 구현 예에 따라서 전자 장치(1000)가 방송 수신부(1043)를 포함하지 않을 수도 있다.
출력부(1050)는, 오디오 신호 또는 비디오 신호 또는 진동 신호의 출력을 위한 것으로, 이에는 디스플레이부(1051)와 음향 출력부(1052), 진동 모터(1053) 등이 포함될 수 있다.
음향 출력부(1052)는 통신부(1040)로부터 수신되거나 저장부(1080)에 저장된 오디오 데이터를 출력한다. 또한, 음향 출력부(1052)는 전자 장치(1000)에서 수행되는 기능(예를 들어, 호신호 수신음, 메시지 수신음, 알림음)과 관련된 음향 신호를 출력한다. 이러한 음향 출력부(1052)에는 스피커(speaker), 버저(Buzzer) 등이 포함될 수 있다.
진동 모터(1053)는 진동 신호를 출력할 수 있다. 예를 들어, 진동 모터(1053)는 오디오 데이터 또는 비디오 데이터(예컨대, 호신호 수신음, 메시지 수신음 등)의 출력에 대응하는 진동 신호를 출력할 수 있다. 또한, 진동 모터(1053)는 터치스크린에 터치가 입력되는 경우 진동 신호를 출력할 수도 있다.
프로세서(1030)는, 전자 장치(1000)의 전반적인 동작을 제어한다. 예를 들어, 프로세서(1030)는, 저장부(1080)에 저장된 프로그램들을 실행함으로써, 통신부(1040), 출력부(1050), 사용자 입력부(1060), 센싱부(1020), A/V 입력부(1070) 등을 제어할 수 있다.
사용자 입력부(1060)는, 사용자가 전자 장치(1000)를 제어하기 위한 데이터를 입력하는 수단을 의미한다. 예를 들어, 사용자 입력부(1060)에는 키 패드(key pad), 돔 스위치 (dome switch), 터치 패드(접촉식 정전 용량 방식, 압력식 저항막 방식, 적외선 감지 방식, 표면 초음파 전도 방식, 적분식 장력 측정 방식, 피에조 효과 방식 등), 조그 휠, 조그 스위치 등이 있을 수 있으나 이에 한정되는 것은 아니다.
센서부(1020)는, 사용자의 생체 정보를 센싱하는 센서(예를 들어, 지문 인식 센서 등)뿐만 아니라, 전자 장치(1000)의 상태 또는 전자 장치(1000) 주변의 상태를 감지하는 센서를 포함할 수 있다. 또한, 센서부(1020)는 센서에서 감지된 정보를 프로세서(1030)로 전달할 수 있다.
센서부(1020)는, 지자기 센서(Magnetic sensor), 가속도 센서(Acceleration sensor), 온/습도 센서, 적외선 센서, 자이로스코프 센서, 위치 센서(예컨대, GPS)), 기압 센서, 근접 센서, 및 RGB 센서(illuminance sensor) 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다. 각 센서들의 기능은 그 명칭으로부터 당업자가 직관적으로 추론할 수 있으므로, 구체적인 설명은 생략하기로 한다.
A/V(Audio/Video) 입력부(1070)는 오디오 신호 또는 비디오 신호 입력을 위한 것으로, 이에는 카메라(1071)와 마이크로폰(1072) 등이 포함될 수 있다. 카메라(1071)은 화상 통화모드 또는 촬영 모드에서 이미지 센서를 통해 정지영상 또는 동영상 등의 화상 프레임을 얻을 수 있다. 이미지 센서를 통해 캡쳐된 이미지는 프로세서(1030) 또는 별도의 이미지 처리부(미도시)를 통해 처리될 수 있다.
카메라(1071)에서 처리된 화상 프레임은 저장부(1080)에 저장되거나 통신부(1040)를 통하여 외부로 전송될 수 있다. 카메라(1071)는 전자 장치(1000)의 구성 태양에 따라 2개 이상이 구비될 수도 있다.
마이크로폰(1072)은, 외부의 음향 신호를 입력 받아 전기적인 음성 데이터로 처리한다. 예를 들어, 마이크로폰(1072)은 외부 디바이스 또는 화자로부터 음향 신호를 수신할 수 있다. 마이크로폰(1072)은 외부의 음향 신호를 입력 받는 과정에서 발생 되는 잡음(noise)를 제거하기 위한 다양한 잡음 제거 알고리즘을 이용할 수 있다.
저장부(1080)는, 프로세서(1030)의 처리 및 제어를 위한 프로그램을 저장할 수도 있고, 입/출력되는 데이터들(예컨대, 애플리케이션, 콘텐트, 외부 디바이스의 시간대 정보, 주소록 등)을 저장할 수도 있다.
저장부(1080)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 또한, 전자 장치(1000)는 인터넷(internet)상에서 저장부(1080)의 저장 기능을 수행하는 웹 스토리지(web storage) 또는 클라우드 서버를 운영할 수도 있다.
저장부(1080)에 저장된 프로그램들은 그 기능에 따라 복수 개의 모듈들로 분류할 수 있는데, 예를 들어, UI 모듈(1081), 터치 스크린 모듈(1082), 알림 모듈(1083) 등으로 분류될 수 있다.
UI 모듈(1081)은, 어플리케이션 별로 전자 장치(1000)와 연동되는 특화된 UI, GUI 등을 제공할 수 있다. 터치 스크린 모듈(1082)은 사용자의 터치 스크린 상의 터치 제스처를 감지하고, 터치 제스처에 관한 정보를 프로세서(1030)로 전달할 수 있다.
터치 스크린 모듈(1082)은 터치 코드를 인식하고 분석할 수 있다. 터치 스크린 모듈(1082)은 컨트롤러를 포함하는 별도의 하드웨어로 구성될 수도 있다.
알림 모듈(1083)은 전자 장치(1000)의 이벤트 발생을 알리기 위한 신호를 발생할 수 있다. 전자 장치(1000)에서 발생되는 이벤트의 예로는 호 신호 수신, 메시지 수신, 키 신호 입력, 일정 알림 등이 있다. 알림 모듈(1083)은 디스플레이부(1051)를 통해 비디오 신호 형태로 알림 신호를 출력할 수도 있고, 음향 출력부(1052)를 통해 오디오 신호 형태로 알림 신호를 출력할 수도 있고, 진동 모터(1053)를 통해 진동 신호 형태로 알림 신호를 출력할 수도 있다.
한편, 도 9 및 도 10에 도시된 전자 장치(100, 1000)의 블록도는 일 실시예를 위한 블록도이다. 블록도의 각 구성요소는 실제 구현되는 전자 장치(100, 1000)의 사양에 따라 통합, 추가, 또는 생략될 수 있다. 즉, 필요에 따라 2 이상의 구성요소가 하나의 구성요소로 합쳐지거나, 혹은 하나의 구성요소가 2 이상의 구성요소로 세분되어 구성될 수 있다. 또한, 각 블록에서 수행하는 기능은 실시예들을 설명하기 위한 것이며, 그 구체적인 동작이나 장치는 본 발명의 권리범위를 제한하지 아니한다.
일 실시예에 따른 전자 장치의 동작방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
또한, 개시된 실시예들에 따른 전자 장치의 동작방법 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다.
컴퓨터 프로그램 제품은 S/W 프로그램, S/W 프로그램이 저장된 컴퓨터로 읽을 수 있는 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 전자 장치의 제조사 또는 전자 마켓(예, 구글 플레이 스토어, 앱 스토어)을 통해 전자적으로 배포되는 S/W 프로그램 형태의 상품(예, 다운로더블 앱)을 포함할 수 있다. 전자적 배포를 위하여, S/W 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 제조사의 서버, 전자 마켓의 서버, 또는 SW 프로그램을 임시적으로 저장하는 중계 서버의 저장매체가 될 수 있다.
컴퓨터 프로그램 제품은, 서버 및 클라이언트 장치로 구성되는 시스템에서, 서버의 저장매체 또는 클라이언트 장치의 저장매체를 포함할 수 있다. 또는, 서버 또는 클라이언트 장치와 통신 연결되는 제3 장치(예, 스마트폰)가 존재하는 경우, 컴퓨터 프로그램 제품은 제3 장치의 저장매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 서버로부터 클라이언트 장치 또는 제3 장치로 전송되거나, 제3 장치로부터 클라이언트 장치로 전송되는 S/W 프로그램 자체를 포함할 수 있다.
이 경우, 서버, 클라이언트 장치 및 제3 장치 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 서버, 클라이언트 장치 및 제3 장치 중 둘 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다.
예를 들면, 서버(예로, 클라우드 서버 또는 인공 지능 서버 등)가 서버에 저장된 컴퓨터 프로그램 제품을 실행하여, 서버와 통신 연결된 클라이언트 장치가 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.
Claims (21)
- 언어 모델을 이용하여, 워드를 처리하는 전자 장치에 있어서,
복수의 워드들에 대응되는 벡터들을 압축한 압축 벡터들을 포함하는 압축 임베딩 행렬과 압축 벡터들에 대응되는 스케일링 팩터들을 저장하는 제1 메모리;
상기 제1 메모리보다 동작 속도가 빠르고, 상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 상기 복수의 압축 벡터들 중 일부를 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 상기 스케일링 팩터들 중 일부를 저장하는 제2 메모리; 및
상기 제1 메모리 또는 제2 메모리로부터, 입력된 워드에 대응하는 제1 압축 벡터 및 제1 스케일링 팩터를 획득하고, 상기 획득한 제1 압축 벡터 및 제1 스케일링 팩터를 신경망을 이용하여 처리하는 프로세서를 포함하는 전자 장치. - 제1항에 있어서,
상기 제1 메모리는 상기 프로세서의 외부에 위치하고, 상기 제2 메모리는 상기 프로세서의 내부에 위치하는, 전자 장치. - 제1항에 있어서,
상기 압축 벡터들은, 상기 압축 벡터들 각각에 대응하는 단어의 빈도수가 높을수록 상기 압축 임베딩 매트릭스에서의 로우를 나타내는 인덱스가 작은 값을 가지는, 전자 장치. - 제1항에 있어서,
상기 압축 벡터들 중 k개의 압축 벡터들에는 제2 스케일링 팩터가 할당되고, k 개의 압축 벡터들보다 빈도수가 낮은 m 개의 압축 벡터들에는 제3 스케일링 팩터가 할당되며, 상기 k는 상기 m보다 작은, 전자 장치. - 제1항에 있어서,
상기 제2 메모리는 상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 빈도수가 기 설정된 제1 값 이상인 압축 벡터들을 미리 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 빈도수가 기 설정된 제2 값 이상인 스케일링 팩터들을 미리 저장하는, 전자 장치. - 제1항에 있어서,
상기 제2 메모리는,
상기 복수의 압축 벡터들 중 일부를 저장하는 제1 캐시 메모리 및 상기 스케일링 팩터들 중 일부를 저장하는 제2 캐시 메모리를 포함하고,
상기 프로세서는,
상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하는 지 결정하여, 상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하는 경우, 상기 제1 압축 벡터를 상기 제1 캐시 메모리로부터 읽어오고, 상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하지 않는 경우, 상기 제1 압축 벡터를 상기 제1 메모리로부터 읽어오며,
상기 제1 스케일 팩터가 상기 제2 캐시 메모리에 존재하는 지 결정하여, 상기 제1 스케일 팩터가 상기 제2 캐시 메모리에 존재하는 경우, 상기 제1 스케일 팩터를 상기 제2 캐시 메모리로부터 읽어오고, 상기 제1 스케일 팩터가 제2 캐시 메모리에 존재하지 않는 경우, 상기 제1 스케일 팩터를 상기 제1 메모리로부터 읽어오는, 전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 제1 압축 벡터의 어드레스 정보에 기초하여, 상기 제1 스케일링 팩터의 어드레스 정보를 결정하고, 상기 제1 스케일링 팩터의 어드레스 정보에 기초하여, 상기 제1 메모리 또는 제2 메모리로부터 상기 제1 스케일링 팩터를 획득하는, 전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 복수의 압축 벡터들과 상기 스케일링 팩터들의 매핑 관계를 나타내는 매핑 정보를 이용하여, 상기 제1 압축 벡터에 대응하는 상기 제1 스케일링 팩터를 결정하는, 전자 장치. - 제1항에 있어서,
상기 전자 장치는,
상기 워드를 입력받는 입력부를 더 포함하는 전자 장치. - 제1항에 있어서,
상기 프로세서는,
상기 신경망으로부터 출력된 데이터에 기초하여 결과 값을 획득하고,
상기 전자 장치는,
획득된 결과 값을 출력하는 출력부를 더 포함하는, 전자 장치. - 언어 모델을 이용하여, 워드를 처리하는 전자 장치의 동작방법에 있어서,
복수의 워드들에 대응되는 벡터들을 압축한 압축 벡터들을 포함하는 압축 임베딩 행렬과 압축 벡터들에 대응되는 스케일링 팩터들을 제1 메모리에 저장하는 단계;
상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 상기 복수의 압축 벡터들 중 일부를 상기 제1 메모리보다 동작 속도가 빠른 제2 메모리에 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 상기 스케일링 팩터들 중 일부를 상기 제2 메모리에 저장하는 단계;
상기 제1 메모리 또는 제2 메모리로부터, 입력된 워드에 대응하는 제1 압축 벡터 및 제1 스케일링 팩터를 획득하는 단계; 및
상기 획득한 제1 압축 벡터 및 제1 스케일링 팩터를 신경망을 이용하여 처리하는 단계를 포함하는 전자 장치의 동작방법. - 제11항에 있어서,
상기 제1 메모리는 상기 워드를 처리하는 프로세서의 외부에 위치하고, 상기 제2 메모리는 상기 프로세서의 내부에 위치하는, 전자 장치의 동작방법. - 제11항에 있어서,
상기 압축 벡터들은, 상기 압축 벡터들 각각에 대응하는 단어의 빈도수가 높을수록 상기 압축 임베딩 행렬에서의 로우를 나타내는 인덱스가 작은 값을 가지는, 전자 장치의 동작방법. - 제11항에 있어서,
상기 압축 벡터들 중 k개의 압축 벡터들에는 제2 스케일링 팩터가 할당되고, k 개의 압축 벡터들보다 빈도수가 낮은 m 개의 압축 벡터들에는 제3 스케일링 팩터가 할당되며, 상기 k는 상기 m보다 작은, 전자 장치의 동작방법. - 제11항에 있어서,
상기 복수의 압축 벡터들 중 일부를 상기 제2 메모리에 저장하고, 상기 스케일링 팩터들 중 일부를 상기 제2 메모리에 저장하는 단계는,
상기 제2 메모리는 상기 복수의 압축 벡터들의 제1 빈도수 정보에 기초하여, 빈도수가 기 설정된 제1 값 이상인 압축 벡터들을 미리 저장하고, 상기 스케일링 팩터들의 제2 빈도수 정보에 기초하여, 빈도수가 기 설정된 제2 값 이상인 스케일링 팩터들을 미리 저장하는 단계를 포함하는, 전자 장치의 동작방법. - 제11항에 있어서,
상기 제2 메모리는,
상기 복수의 압축 벡터들 중 일부를 저장하는 제1 캐시 메모리 및 상기 스케일링 팩터들 중 일부를 저장하는 제2 캐시 메모리를 포함하고,
상기 제1 메모리 또는 제2 메모리로부터 제1 압축 벡터 및 제1 스케일링 팩터를 획득하는 단계는,
상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하는 지 결정하는 단계;
상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하는 경우, 상기 제1 압축 벡터를 상기 제1 캐시 메모리로부터 읽어오고, 상기 제1 압축 벡터가 상기 제1 캐시 메모리에 존재하지 않는 경우, 상기 제1 압축 벡터를 상기 제1 메모리로부터 읽어오는 단계;
상기 제1 스케일 팩터가 상기 제2 캐시 메모리에 존재하는 지 결정하는 단계; 및
상기 제1 스케일 팩터가 상기 제2 캐시 메모리에 존재하는 경우, 상기 제1 스케일 팩터를 상기 제2 캐시 메모리로부터 읽어오고, 상기 제1 스케일 팩터가 제2 캐시 메모리에 존재하지 않는 경우, 상기 제1 스케일 팩터를 상기 제1 메모리로부터 읽어오는 단계를 포함하는, 전자 장치의 동작방법. - 제11항에 있어서,
상기 제1 메모리 또는 제2 메모리로부터 제1 압축 벡터 및 제1 스케일링 팩터를 획득하는 단계는,
상기 제1 압축 벡터의 어드레스 정보에 기초하여, 상기 제1 스케일링 팩터의 어드레스 정보를 결정하는 단계; 및
상기 제1 스케일링 팩터의 어드레스 정보에 기초하여, 상기 제1 메모리 또는 제2 메모리로부터 상기 제1 스케일링 팩터를 획득하는 단계를 포함하는, 전자 장치의 동작방법. - 제11항에 있어서,
상기 제1 메모리 또는 제2 메모리로부터 제1 압축 벡터 및 제1 스케일링 팩터를 획득하는 단계는,
상기 복수의 압축 벡터들과 상기 스케일링 팩터들의 매핑 관계를 나타내는 매핑 정보를 이용하여, 상기 제1 압축 벡터에 대응하는 상기 제1 스케일링 팩터를 결정하는 단계를 포함하는, 전자 장치의 동작방법. - 제11항에 있어서,
상기 동작방법은,
상기 워드를 입력 받는 단계를 더 포함하는 전자 장치의 동작방법. - 제11항에 있어서,
상기 동작방법은,
상기 신경망으로부터 출력된 데이터에 기초하여 결과 값을 획득하는 단계; 및
획득된 결과 값을 출력하는 단계를 더 포함하는, 전자 장치의 동작방법. - 제11항의 방법을 수행하도록 하는 프로그램이 저장된 하나 이상의 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200012189A KR20210098247A (ko) | 2020-01-31 | 2020-01-31 | 전자 장치 및 그 동작방법 |
PCT/KR2020/016168 WO2021153884A1 (en) | 2020-01-31 | 2020-11-17 | Electronic device and operation method thereof |
US17/102,679 US11675973B2 (en) | 2020-01-31 | 2020-11-24 | Electronic device and operation method for embedding an input word using two memory operating speeds |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200012189A KR20210098247A (ko) | 2020-01-31 | 2020-01-31 | 전자 장치 및 그 동작방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210098247A true KR20210098247A (ko) | 2021-08-10 |
Family
ID=77061988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200012189A KR20210098247A (ko) | 2020-01-31 | 2020-01-31 | 전자 장치 및 그 동작방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11675973B2 (ko) |
KR (1) | KR20210098247A (ko) |
WO (1) | WO2021153884A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11599518B2 (en) | 2021-01-13 | 2023-03-07 | Google Llc | Efficient embedding table storage and lookup |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8682823B2 (en) * | 2007-04-13 | 2014-03-25 | A-Life Medical, Llc | Multi-magnitudinal vectors with resolution based on source vector features |
KR102167719B1 (ko) | 2014-12-08 | 2020-10-19 | 삼성전자주식회사 | 언어 모델 학습 방법 및 장치, 음성 인식 방법 및 장치 |
GB201511887D0 (en) * | 2015-07-07 | 2015-08-19 | Touchtype Ltd | Improved artificial neural network for language modelling and prediction |
US9659248B1 (en) * | 2016-01-19 | 2017-05-23 | International Business Machines Corporation | Machine learning and training a computer-implemented neural network to retrieve semantically equivalent questions using hybrid in-memory representations |
WO2018005395A1 (en) * | 2016-06-30 | 2018-01-04 | Microsoft Technology Licensing, Llc | Artificial neural network with side input for language modelling and prediction |
JP6823809B2 (ja) * | 2016-08-09 | 2021-02-03 | パナソニックIpマネジメント株式会社 | 対話行為推定方法、対話行為推定装置およびプログラム |
CN107704482A (zh) | 2016-08-09 | 2018-02-16 | 松下知识产权经营株式会社 | 方法、装置以及程序 |
US10963789B2 (en) * | 2016-11-28 | 2021-03-30 | Conduent Business Services, Llc | Long-term memory networks for knowledge extraction from text and publications |
US10691886B2 (en) * | 2017-03-09 | 2020-06-23 | Samsung Electronics Co., Ltd. | Electronic apparatus for compressing language model, electronic apparatus for providing recommendation word and operation methods thereof |
KR102488338B1 (ko) | 2017-03-09 | 2023-01-13 | 삼성전자주식회사 | 언어 모델을 압축하기 위한 전자 장치, 추천 워드를 제공하기 위한 전자 장치 및 그 동작 방법들 |
US20180357240A1 (en) * | 2017-06-08 | 2018-12-13 | Facebook, Inc. | Key-Value Memory Networks |
US11620506B2 (en) * | 2017-09-18 | 2023-04-04 | Koninklijke Philips N.V. | Condensed memory networks |
-
2020
- 2020-01-31 KR KR1020200012189A patent/KR20210098247A/ko unknown
- 2020-11-17 WO PCT/KR2020/016168 patent/WO2021153884A1/en active Application Filing
- 2020-11-24 US US17/102,679 patent/US11675973B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210240925A1 (en) | 2021-08-05 |
US11675973B2 (en) | 2023-06-13 |
WO2021153884A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11031000B2 (en) | Method and device for transmitting and receiving audio data | |
US20200118010A1 (en) | System and method for providing content based on knowledge graph | |
US20190295549A1 (en) | Device and method for providing response message to user input | |
KR102628037B1 (ko) | 제품의 판매 정보를 제공하는 방법 및 장치 | |
US11848012B2 (en) | System and method for providing voice assistant service | |
KR102531654B1 (ko) | 음성 입력 인증 디바이스 및 그 방법 | |
KR20180109499A (ko) | 사용자의 음성 입력에 대한 답변을 제공하는 방법 및 장치 | |
US12106754B2 (en) | Systems and operation methods for device selection using ambient noise | |
KR102535152B1 (ko) | 디스플레이 장치 및 디스플레이 장치의 제어 방법 | |
CN111316662A (zh) | 图像显示设备及其操作方法 | |
US20210249018A1 (en) | Method and apparatus for providing voice assistant service | |
KR20180054362A (ko) | 사용자의 음성 입력을 인식하는 방법 및 장치 | |
CN111095208B (zh) | 用于提供对设备使用询问的响应的设备和方法 | |
CN110226202B (zh) | 用于发送和接收音频数据的方法和设备 | |
US11675973B2 (en) | Electronic device and operation method for embedding an input word using two memory operating speeds | |
US11669694B2 (en) | Electronic device for obtaining sentence corresponding to context information and operating method thereof | |
US11961512B2 (en) | System and method for providing voice assistance service | |
US11645036B2 (en) | Electronic device and operating method for providing feedback information in response to user input | |
JP7018850B2 (ja) | 端末装置、決定方法、決定プログラム及び決定装置 | |
US20220309394A1 (en) | Electronic device and operation method of the same | |
US20230213896A1 (en) | Electronic device and operating method thereof | |
US20230274717A1 (en) | Electronic device having expandable display and control method thereof | |
KR20220036781A (ko) | 응답이 변화된 이유에 관한 정보를 제공하는 전자 장치 및 그 동작 방법 | |
KR20240020137A (ko) | 전자 장치 및 음성 인식 방법 | |
KR20220120052A (ko) | 데이터를 생성하는 전자 장치 및 그 동작 방법 |