프로필사진

IT Anthology/dictionary

자연어처리(NLP) 직무 면접 대비용 개념 한 줄 정리

다각 2020. 3. 1. 20:42

※무단 사용 및 펌을 절대 금지합니다 이 페이지에서만 봐주세요.※

하나 하나 손으로 기입한 것이어서 잘못된 내용이나 오타가 있을 수 있습니다 댓글로 제보해주세요


분야 용어 용어 풀이
텍스트 전처리

토큰화 Tokenization
언어를 한 단위의 의미를 가지는 문자열로 쪼개는 과정이다. 토큰화에는 문장 토큰화, 단어 토큰화 등이 있다. 영어는 nltk, 한국어는 konlpy를 많이 쓰며, bert의 영향으로 BPE 방식의 SentencePiece 토크나이저도 많이 사용된다.
어간 추출 Stemming
어간(stem)을 추출하는 작업으로, 룰 기반으로 작동하는 경우가 많다. 어미나 조사를 제거하여 준다.
표제어 추출 Lemmatization
표제어를 추출하는 작업으로, 사전에 실리는 대표어로 대체해주는 작업이다. 예를 들면 영어에서 'is'나 'am', 'are'은 모두 'be'가 변형된 형태이다. 이것들을 모두 'be'로 바꿔주는 작업이다.
불용어 Stop-word
큰 의미는 없지만 학습 결과에 유의미한 영향을 미칠 수 있는 토큰들을 이르는 말이다. 전처리 과정에서 이러한 불용어들을 없애준다.

임베딩 기본
임베딩 Embedding
컴퓨터가 알아듣고 학습을 할 수 있도록 자연어를 숫자로 바꿔서 넣어주는 작업이다. 보통 단순한 하나의 정수가 아닌, R차원의 벡터로 임베딩한다.
희소벡터 Sparse Vector
희소행렬(Sparse Matrix)에 속하는 벡터로, 희소행렬은 대부분의 원소가 0인 행렬을 뜻한다.
ㄴ원-핫 인코딩 One-hot encoding
모든 토큰을 하나의 class로 분리시키는 방식으로, 각각의 토큰 인덱스에 따라 그 인덱스에 해당하는 값만 '1'을 켜주고, 나머지는 다 '0'을 넣는 식으로 단어를 표현한다. 단어의 의미를 유추하기 어렵다는 단점이 있어서 자연어 임베딩에는 거의 쓰이지 않으며, 가끔 다중 분류 문제가 나올 때 정답이 되는 class들을 원-핫 인코딩하여 학습시키기도 한다.
밀집벡터 Dense Vector
밀집행렬(Dense Matrix)에 속하는 벡터로, 밀집행렬은 대부분의 원소가 0이 아닌 행렬을 뜻한다.
단어의 분산 표현
(+단어 수준의
임베딩)










단어의 분산 표현 Distributed Representation
맥락을 이용해 단어를 벡터로 표현하는 방법이다. '단어의 의미는 주변 단어에 의해 형성된다'는 분포 가설이 전제되어 있다.
통계 기반 기법 토큰의 등장 빈도수를 카운트하여 단어의 분산을 표현하는 방식이다.
ㄴTDM Term-Document Matrix (단어-문서 행렬)
단순한 빈도수를 기반하여 접근하는 방식으로, 모든 문서에 등장하는 단어(토큰)을 대상으로 각 문서 간 각 토큰의 빈도를 행렬로 표기하는 방식이다. 희소 행렬을 구성하게 된다.
단어의 순서는 고려하지 않으며, 중요하지 않는데 많이 쓰이는 토큰이 빈도수가 높게 나타날 위험이 있다.
ㄴTF-IDF Term Frequency-Inverse Document Frequency
문서의 유사도 구하기나 다른 문서와 달리 해당 문서에서 특별히 중요하게 여겨지는 단어를 구할 때 쓰인다.
TF는 특정 문서에서 특정 토큰의 등장 횟수이며,
DF는 특정 토큰이 등장한 문서의 수이다.
IDF는 DF의 역수로, DF가 작고 TF가 클수록 해당 문서의 특별한 토큰이라는 뜻이다.
단어의 순서는 고려하지 않는다는 단점이 있다.
ㄴ단어-문맥 (=co-occurence matrix, 동시발생 행렬)
분포 가설에 기반한 표현법으로, 사용자가 정한 window 안에 동시에 등장하는 단어의 빈도수를 기입한 행렬이다.
추론 기반 기법 (=예측 기반 모델)
맥락이 주어졌을 때 가장 높은 확률을 가진 단어를 택함으로 타겟 단어를 추론하는 기법이다. word2vec이 가장 대표적인 기법이다.
ㄴCBoW 모델 Continuous Bag of Words
주변 단어를 이용해 중간에 있는 단어를 예측하는 방법이다.
ㄴSkip-gram 중심 단어를 이용해 주변 단어를 예측하는 방법으로, 전반적으로 Skip-gram이 CBOW보다 성능이 좋다.
ㄴFastText 각 단어를 문자 단위로 표현하는 방식으로 한글은 자소 단위로 분해하기도 한다. (이후의 과정은 word2vec과 동일하다)
조사나 어미가 발달한 한국어에 좋은 성능을 내며, 오타나 OOV에도 강건하다.
행렬 분해 기법 행렬 분해에 의해 원래의 코퍼스 행렬을 두 개 이상의 작은 행렬로 분해하여 임베딩으로 사용하는 기법이다.
ㄴGloVe Global Word Vectors
Word2Vec과 LSA의 단점을 극복하는 모델로, 단어 간 유사도 측정을 조금 더 수월하게 하면서도 말뭉치 전체의 통계 정보를 반영한다.
임베딩된 두 단어벡터의 내적이 전체 말뭉치의 동시등장확률이 되도록 하기 위한 목적함수를 세운 방법이다. (출처: ratsgo's blog)
문장 수준의
임베딩



문장 수준의
임베딩
앞선 단어 수준의 임베딩에서의 동음이의어 문제를 해결한다.
보통 사전훈련된 모델을 이용하여 전이학습 시킨다.
ㄴELMo Embeddings from Language Model
bi-directional LSTM을 이용하여 워드 벡터들을 사전학습 시킨다.
ㄴBERT Bidirectional Encoder Representations from Transformer
트랜스포머 모델의 인코더를 활용한 언어 모델로, 단어의 양쪽 문맥을 고려하기 위해 MASK 토큰을 활용해 학습시킨다.
토픽 모델링 토픽 모델링 문서에서 주제를 추출하기 위한 통계적 모델 중 하나로, 텍스트 본문의 숨겨진 의미 구조를 발견하기 위해 사용되는 텍스트 마이닝 기법이다. (출처: 딥러닝을 이용한 자연어처리 입문)
ㄴLSA Latent Semantic Analysis, 잠재 의미 분석
앞서 언급한 단어-문서 행렬, TF-IDF 행렬, 단어-문맥 행렬 등에 특이값 분해를 수행해 차원 축소를 하며 함축적 의미를 이끌어내는 분석 방법이다.
ㄴLDA Latent Dirichlet Allocation, 잠재 디리클레 할당
단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합하여 토픽을 추출한다. (출처: 딥러닝을 이용한 자연어처리 입문)
자연어처리에서
많이 사용되는
인공신경망 모델

 
자연어처리 모델의 특징 언어는 시퀀스(Sequence) 데이터이다. 순서에 의해 전혀 다른 의미가 되기도 하는 것이다. 따라서 시퀀스 데이터를 처리하기에 알맞는 모델이 사용된다.
CNN Convolutional Neural Network, 합성곱 신경망
합성곱 계층과 풀링 계층을 사용하여 특징을 추출한다. 주로 시그모이드나 렐루와 같은 활성화 함수를 이용하며, 주로 분류 작업에 쓰인다. (이미지 분류, 텍스트 분류)
ㄴ합성곱 계층 Convolution Layer
필터(Filter)를 일정 간격(Stride, 스트라이드)으로 이동시키며 합성곱을 통해 특징을 추출하는 층이다. (합성곱은 같은 자리에 있는 애들끼리 곱해서 총합을 구하는 것이다)
ㄴ풀링 Pooling (=Subsampling)
데이터의 크기를 줄이는 작업으로, Max Pooling, Average Pooling, L2-Norm($\sqrt{ x_1^2+x_2^2+...+x_n^2}$) Pooling 등이 있다. 과적합을 방지한다.
RNN Recurrent Neural Network
문자열의 시퀀스 특징을 고려한 모델로, 전 단계의 정보를 다음 단계에 hidden state로 넘겨, 전 단계의 정보도 고려할 수 있도록 설계된 모델이다.
$$h_t=tanh(W_{hh}h_{t-1}+W_{xh}X_t+bias)$$
ㄴ교사 강요 Teacher forcing
RNN 학습 과정에서 뒤로 갈수록 엉뚱한 대답이 나오는 것을 방지하기 위해 이전 단계의 정답을 다음 단계의 입력값으로 넣는 방법이다.
ㄴ기울기 소실 Gradient Vanishing
보통의 DNN에서도 나타나지만, RNN은 시간 스텝 횟수만큼 돌아가는 깊은 구조여서 이 문제가 도드라진다. 역전파 시 그래디언트가 너무 작아져서 학습이 제대로 이뤄지지 않는 경우를 말한다. $W_{hh}$의 가장 큰 고유값이 1보다 작은 경우에 일어난다.
ㄴ기울기 폭발 Gradient Exploding
역전파 시 그래디언트가 너무 커져서 학습이 제대로 이뤄지지 않는 경우를 말한다.
 $W_{hh}$의 가장 큰 고유값이 1보다 큰 경우에 일어난다. (출처: ratsgo's blog)
LSTM Long Short-Term Memory
RNN의 경사 소실이나 경사 폭발의 단점을 보완한 모델로, cell state를 지속적으로 가져간다. LSTM cell 내부는 forget gate와 input gate, ouput gate로 이루어져 있다. (참고: 딥러닝을 이용한 자연어처리 입문)
ㄴ삭제 게이트 forget gate
시그모이드 활성화함수를 사용하며, 전 단계의 히든 벡터 정보를 취할 것인지 버릴 것인지 결정하여 cell state에 기여한다.
$$f_t=\sigma(W_{hf}h_(t-1)+W_{xf}x_t+bias)$$
ㄴ입력 게이트 input gate
현재 들어온 정보를 얼마나 반영할 것인지 결정하여 cell state에 기여한다.
$$
i_t=\sigma(W_{ht}h_{t-1}+W_{xi}x_t+bias) \\ 
g_t=tanh(W_{hg}h_{t-1}+W_{xg}x_t+bias)
$$
ㄴ셀 상태 cell state
$$C_t=f_t \circ C_{t-1}+i_t \circ g_t$$
(단, $\circ$은 원소별 곱을 뜻하는 연산자)
ㄴ출력 게이트 output gate
필요하다면 output을 내놓고, 다음 단계로 넘길 히든 벡터를 구하는 과정이다.
$$
o_t=\sigma(W_{ho}h_(t-1)+W_{xo}x_t+bias) \\
h_t=o_t \circ tanh(C_t)
$$
GRU Gated Recurrent Unit, 게이트 순환 유닛
LSTM의 변형 모델로, LSTM에서는 삭제, 입력, 출력 게이트가 있는 반면 GRU에는 업데이트 게이트와 리셋 게이트 두 가지만 있다. 
Seq2Seq Sequence to Sequence
크게 인코더(encoder)와 디코더(decoder)로 이루어져 있다. 인코더(encoder)에서 나온 컨텍스트 벡터(context vector)를 디코더(decoder)로 전달하며 정보가 전달된다. 
주로 번역에 이용되는 모델이다.
ㄴBLEU Bi-Lingual Evaluation Understudy
기계 번역 결과와 사람이 직접 번역한 결과의 유사도로 번역에 대한 성능을 측정하는 방법으로, 측정 기준은 n-gram에 기반한다. (출처: 딥러닝을 이용한 자연어처리 입문)
Seq2Seq
with Attention
Sequence to Sequence with Attention
Seq2Seq 모델의 문제점인 한정된 크기의 컨텍스트 벡터로 인한 정보 손실과 (RNN의 한계인)기울기 소실 문제를 해결하기 위해 등장했다.
디코더에서 출력을 예측할 때마다 인코더의 전체 데이터를 다시 참고하는 방법이다. 단, 예측해야할 단어와 연관 있는 입력 단어 부분을 집중(attention)하여 본다. 
ㄴ쿼리 Query, Q
t 시점에서 디코더 셀에서의 은닉 상태로, 주어진 쿼리에 대해 모든 키와의 유사도를 구한다.
ㄴ키 Keys, K
모든 시점의 인코더 셀의 은닉 상태들이다.
ㄴ값 Values, V
키와 맵핑되어 있는 값으로, 모든 시점의 인코더 셀의 은닉 상태들이다.
유사도가 반영된 값들(Values)을 모두 더해서 리턴한다. 이를 어텐션 값(Attention Value)이라고 한다. (출처: 딥러닝을 이용한 자연어처리 입문)
ㄴ어텐션 스코어 Attention Score
현재 디코더의 시점 t에서 단어를 예측하기 위해, 인커더의 모든 은닉 상태 각각이 디코더의 현 시점 은닉상태와 얼마나 유사한지 판단하는 스코어값 (출처: 딥러닝을 이용한 자연어처리 입문)
ㄴ어텐션 분포 Attention Distribution
어텐션 스코어값의 묶음에 소프트맥스 함수를 적용한 확률 분포이며, 각각의 확률 값은 어텐션 가중치(Attention Weight)라고 한다.
ㄴ어텐션 값 Attention Value (=Context vector, 컨텍스트 벡터)
각 인코더의 은닉 상태와 어텐션 가중치값들을 곱하고, 이것들을 모두 더한 값
seq2seq에서 인코더의 마지막 은닉 상태를 컨텍스트 벡터라고 하는 것과는 대조된다.
트랜스포머 Transformer
"Attention is all you need" 논문에 나온 모델로, RNN없이 인코더들과 디코더들로만 모델을 구성하여 속도를 높인 모델이다.
ㄴ인코더 Encoder
Seq2Seq의 인코더에서는 RNN cell을 사용했던 것과 대조적으로, 트랜스포머에서는 셀프어텐션 층과 FFNN(피드 포워드 신경망)으로 구성된다. 데이터의 시퀀스 특징을 유지하기 위해 임베딩 후에 위치 정보를 표시(Positional Encoding)해준다.
ㄴQ, K, V 트랜스포머에서의 쿼리, 키, 밸류는 입력 문장의 모든 단어 벡터들이다.
ㄴ디코더 Decoder
Masked Multi-Head Attention층과 인코더-디코더 Multi-Head Attention층, FFNN 이렇게 세 개의 층으로 이루어져 있다.
BERT










BERT란 Bidirectional Encoder Representations from Transformer
트랜스포머의 인코더 구조를 활용하여 양방향으로 학습하는 언어모델이다. BERT의 학습은 크게 두 가지로 나뉘는데, 사전학습 단계와 미세조정 단계가 있다.
BERT의 입력 BERT에서는 세가지의 임베딩값을 이용해 학습한다.
ㄴ토큰 임베딩 Token Embeddings
BPE 알고리즘에 기반하여 토큰화한다.
ㄴ세그먼트 임베딩 Segment Embeddings
각 문장을 구분하기 위한 임베딩 값으로, QA 데이터를 학습시키기 위해 고안된 임베딩이다. 입력 문장이 하나일 경우에는 모두 '0'을 부여한다.
ㄴ포지션 임베딩 Position Embeddings
데이터의 시퀀스 특징을 유지하기 위한 임베딩이다.
사전 학습 Pre-train
ㄴMLM Masked Language Model
단어의 양쪽 문맥을 고려하기 위한 학습 방법으로, 입력된 시퀀스의 임의의 단어를 마스킹하여 예측하는 방식이다.
ㄴNSP Next Sentence Prediction
문장끼리의 관계를 학습하는 방법으로, 두 문장이 관련이 있는지 없는지를 판가름한다. 질문-답변 과제나 자연어 추론 과제 해결에 이용된다.
미세 조정 Fine-Tuning
사전 학습이 끝난 BERT에 분류 층 하나를 추가하고 새로운 코퍼스에 대한 추가적인 학습을 시켜, 파라미터를 미세하게 업데이트하는 과정이다.
ㄴ시퀀스 단위 문장 쌍 분류 과제나 단일 문장 분류 과제에 사용되며, [CLS] 토큰의 출력 값을 이용한다.
ㄴ토큰 단위 NER이나 형태소 분석과 같은 단일 문장 태깅이나 질문-답변 과제에서 이용되는 방법이다.

 

'IT Anthology > dictionary' 카테고리의 다른 글

데이터 관련 직무 면접 대비용 개념 한 줄 정리  (0) 2020.03.01
SQL 명령문 총정리  (1) 2020.02.29