임베딩, Embedding

: 자연어 처리 문제를 다룰 때 널리 사용되는 기법

 

머신러닝 알고리즘에서 데이터를 표현하는 일반적인 방법은 One-hot Encoding이다.

 

하지만 이 표현법은 Sparse하다는 문제점을 가지고 있다. (sparse? 희소, 부족)

예를 들어 10,000개의 단어사전에 있는 단어 하나를 one-hot encoding으로 표현하면 10,000x1 행렬에서 1개의 행에만 1이라는 값이 들어있고, 나머지 9999개의 행에는 0이라는 의미없는 값이 들어가 있게 된다. 

 

이런 문제를 해결하기 위해서 Sparse한 데이터 표현을 Dense한 표현형태로 변환하는 기법이 필요해졌고, 이것이 Embedding이다. 

이는 원본 데이터에 Dense한 임베딩 행렬(Embedding matrix)을 곱하는 방식으로 진행된다.

임베딩 수행 예시

 

Embedding의 장점

1. sparse 한 데이터 표현을 dense한 표현 형태로 변경하여 딥러닝 모델이 학습하기 좋은 형태가 됨

2. dimension reduction 효과로 연산량 감소

3. 의미있는 embedding metrix 였다면 embedding vector가 유의미한 단어들 간의 연관성을 표현할 수 있게 됨

(벡터 형상 자체에 어느 정도의 의미 정도 포함)

 

 

Language Modeling

: 자연어 처리에서 광범위하게 사용되는 개념

단어 배열에 기반하여 다음에 어떤 단어가 오는게 적합한지 예측하는 문제

 

 

Char-RNN

: 하나의 글자 Character를 RNN의 입력값으로 받고, RNN은 다음에 올 글자를 예측하는 문제

 

이 학습을 위해 RNN의 타겟 데이터를 인풋 문장에서 한 글자씩 뒤로 민 형태로 구성하면 된다.

ex) "HELLO"라는 문장을 학습하고자 하는 경우, (인풋 데이터, 타겟 데이터) 쌍을 (H,E),(E,L),(L,L),(L,O)로 구성하면 된다.

출처 https://jfun.tistory.com/190

 

인풋 데이터는 Character에 대한 원-핫 인코딩으로 표현된다. 

Char-RNN의 출력값 형태는 학습에 사용하는 전체 문자(단어) 집합에 대한 Softmax 출력 값이다.

 

따라서 영어 문자로만 구성된 데이터셋일 경우, 전체 문자 집합은 알파벳 글자 개수인 26이 된다.

즉, Char-RNN의 출력값은 다음에 올 26개의 알파벳 문자에 대한 확신의 정도를 나타내는 26x1 크기의 행렬이 된다.

그 중에서 argmax로 가장 확률이 높은 글자를 다음에 올 글자로 확정하고 그 글자를 이용해서 또 다음에 올 글자를 예측하는 과정을 반복한다.

 

 

 

'Study > Deep Learning' 카테고리의 다른 글

Gradient Clipping  (0) 2021.10.20
TensorFlow 2.0을 이용한 Char-RNN 구현  (0) 2021.10.20
순환신경망(RNN)  (0) 2021.10.19
Pre-Trained CNN 모델을 이용한 Image Classification  (0) 2021.10.18
Fine-Tuning(Transfer Learning)  (0) 2021.10.18

+ Recent posts