AI

부스트코스 '딥러닝을 이용한 자연어 처리' 강좌

쿠쿠*_* 2023. 7. 10. 22:58

 

 

딥러닝을 이용한 자연어 처리

부스트코스 무료 강의

www.boostcourse.org

 

1. Introduction

교수자: 조경현 교수

New York University

Courant Institute (Computer Science) and Center for Data Science

Facebook AI Research

2. Basic ML: 지도학습

  • 알고리즘: 어떤 문제를 푸는데 있어서 필요한 일련의 명령들
  • 머신러닝: data-driven algorithm design
  • 지도 학습에서 결정해야할 일
  • [Provided]

1. N 개의 Input 과 Output 으로 구성된 훈련 샘플(Training Examples)

 D={(x1​,y1​),⋯,(xN​,yN​)}  

2. Loss Function: 머신러닝 모델 M 의 Output, M(X) 와 실제 값들인 y 를 평가할 지표

 L(M(x),y)≥0 

3. 모델을 평가할 검정 세트(Validation Set: Dval​) 와 테스트 세트(Test Set: Dtest​): 만든 모델이 기존에 보지 않았던 데이터를 풀 수 있는가를 검정한다.

  • [Decide]

1. 가설 집합(Hypothesis Sets): 가설이란 이 문제를 풀기위한 알고리즘, 모델 아키텍쳐를 설정하는 과정이다.

2. 최적화 알고리즘(Optimization algorithm): Loss를 낮출 수 있는 머신을 찾을 수 있는 지에 대한 학습 방법을 결정한다.

 

  • 모든 것이 결정 되면, 지도학습은 각 가설 Hm​ 에 대하여 최적화 알고리즘을 사용해 제일 좋은 모델을 찾는다.

1. [Training] 각 가설마다, Training Set 을 사용해서 퍼포먼스가 제일 좋은 모델들을 찾는다. 

 

2. [Model Selection] Validation Set 을 사용해서 훈련된 모델들 중에 제일 좋은 모델을 선택한다. 

 

                                                 3. [Reporting] Test Set 를 사용해서 제일 좋은 모델의 퍼포먼스를 측정한다.

 

  • 앞으로 우리는 3가지를 정해야한다.
    • 가설 집합(Hypothesis set)
    • 비용함수(Loss function)
    • 최적화 알고리즘(Optimization algorithm)

3. 텍스트 분류

How to represent sentence & token?

이미지나 signal과 달리 language는 살짝 다른게 token들이 arbitrary하다는 것이다. 문장은 일련의 토큰(tokens)으로 구성되어 있다. 다시말해, 텍스트 토큰은 주관적, 임의적(arbitrary)인 성격을 띄고 있다.  

  • One hot Encoding: 길이가 단어장의 총 길이(∣V∣)인 벡터에서, 단어의 index 위치에 있는 값은 1, 나머지는 0으로 구성한다.
    • 단점: 모든 토큰 간에 거리가 같다. 하지만 모든 단어의 뜻이 같지 않기 때문에 거리가 달라져야 우리가 원하는 단어간의 관계가 성립 다. 

  • Embedding: 각 토큰을 연속 벡터 공간(Continuous vector space) 에 투영하는 방법으로 신경망이 토큰의 의미를 잡아낼 수 있도록 하려고 한다. 즉, 벡터 또는 행렬의 값이 대부분이 0으로 표현되는 방법인 희소표현이 아닌, 단어의 의미를 다차원 공간에 벡터화하는 방법을 사용하는 분산표현을 이용하여 단어간 의미적 유사성을 벡터화하는 작업을 일컬음.
  • Table Look Up: 각 one hot encoding 된 토큰에게 벡터를 부여하는 과정. 실질적으로 one hot encoding 벡터( x )와 연속 벡터 공간( W )을 내적 한 것 이다. (모든 문장 토큰은 연속적이고 높은 차원의 벡터로 변함.)

 

CBoW & RN & CNN

* 원-핫 벡터는 단어 벡터간 유의미한 유사도를 계산할 수 없다는 단점이 존재함.

=> 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를 수치화 할수 있는 방법이 필요

=> 그것이 바로 'Word2Vec'! (Word2Vec에는 CBoW와 Skip-Gram 두가지 방식이 존재함.)

 

CBoW(Continuous bag-of-words): 단어장을 단어 주머니로 보게되고, 이에 따라 단어의 순서는 무시한다. 문장에 대한 표현은 단어 벡터들을 평균시킨 벡터로 구하며, 공간상에서 가까우면 비슷한 의미 그렇지 않으면 다른 의미가 될 것이다.

 

Relation Network(Skip-Bigram): 문장안에 있는 모든 토큰 쌍(pairs)을 보고, 각 쌍에 대해서 신경망을 만들어서 문장표현을 찾는다. 장점으로는 여러 단어로 된 표현을 탐지 할 수 있지만, 모든 단어간의 관계를 보기에 전혀 연관이 없는 단어도 보게 된다는 단점도 존재한다. 간단히 말해서, CBOW에서는 주변 단어를 통해 중심 단어를 예측했다면, Skip-gram은 중심 단어에서 주변 단어를 예측한다. 

 

Convolution Neural Network(CNN): k-gram을 계층적으로(hierachically) 보게된다. Layer를 쌓을 때 마다, 점진적으로 넓은 범위를 보기 때문에, "단어> 다중 단어 표현> 구절 > 문장"순으로 보는 인간의 인식과도 알맞으며, 1차원의 Convolutional Network이다.

 

Self Attention & RNN

CNN의 단점은 layer를 계속 쌓아야 한다는 단점이 있지만, Relation같은 경우는 무조건 연결시킨다는 단점이 존재한다. 그래서 이 두개를 어떻게 합쳐서 사용할수 있을까가 관건이다. 그렇게 나온 개념이 Self Attention이다.

한번 CNN 방식을 가중치가 부여된 RN의 일종으로 봐보자.

  • Self Attention

 

4-1. Transformer(Self Attention) [초등학생도 이해하는 자연어처리]

안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Master.M'입니다. 현재 저는 '초등학생도 이해하는 자연어 처리'라는 주제로 자연어 처리(NLP)에 대해 포스팅을 하고 있습니다. 제목처럼 진

codingopera.tistory.com

  • Recurrent Neural Network(RNN)
    • 메모리를 가지고 있어서 현재까지 읽는 정보를 저장할 수 있으며, 문장의 정보를 시간의 순서에 따라 압축 할 수 있다.
    • 단점
      • 문장이 많이 길어질 수록 고정된 메모리에 압축된 정보를 담아야 하기 때문에, 앞에서 학습한 정보를 잊는다. 이는 곧 정보의 손실을 뜻함.
      • 토큰을 순차적으로 하나씩 읽어야 하기 때문에, 훈련 할때 속도가 기타 네트워크 보다 느리다.
    • Long Term Dependency(문제와 단어간의 사이가 멀어질수록 잘 기억을 하지 못하는 문제로, 이 문제가 있으면 과거의 중요한 정보에 대한 학습이 어려워짐.) 해결방법
      • bidirectional network를 쓴다.
      • LSTM, GRU 등 RNN의 변형을 사용함.

 

최근에는 텍스트 분류 퍼포먼스를 높이기 위해 Self Attention과 RNN을 결합해 사용한 논문등이 나오고 있기도 한다.

 

정리하자면...

Token representation: Training this neural network leads to so-called continuous word embedding.

Sentence representation: We learned 5 different ways to do so => CBoW, RN, CNN, Self-Attention, RNN

4. 뉴럴 랭귀지 모델 

Language Modelling(문장이 얼마나 likely한지, probability가 어떻게 되는지를 본다.=> 즉 scoring하는 것)

  • Input: a sentence
  • Output: the probability of the input sentence
  • A language model captures the distribution over all possible sentences.
  • Unlike text classification, it is unsupervised learning. =>We will however turn the problem into a sequence of supervised learning

 

Autoregressive language modelling

  • Autoregressive sequence modelling
    • The distribution over the next token is based on all the previous tokens. 
    • This equality holds exactly due to the def. of conditional distribution

  • Unsupervised learning becomes a set of supervised problems.
    • Each conditional is a neural network classifier.
    • Input is all the previous tokens (a partial sentence).
    • Output is the distribution over all possible next tokens (classes).
    • It is a text classification problem.

 

Loss function은 negative log-probabilities를 사용함

N-Gram Language Models

임의의 개수를 정하기 위한 기준을 위해 사용하는 것이 N-Gram이다. N-Gram은 n개의 연속적인 단어 나열을 의미한다. 갖고 있는 코퍼스에서 N개의 단어 뭉치 단위로 끊어서 이를 하나의 토큰으로 간주한다. 예를 들어서 문장 An adorable little boy is spreading smiles이 있을 때, 각 N에 대해서 N-Gram을 전부 구해보면 다음과 같다.

unigrams : an, adorable, little, boy, is, spreading, smiles
bigrams : an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles

 

그러나 역시 N-Gram에도 단점이 존재한다.

  • 희소 문제(Sparsity Problem): 문장에 존재하는 앞에 나온 단어를 모두 보는 것보다 일부 단어만을 보는 것으로 현실적으로 코퍼스에서 카운트 할 수 있는 확률을 높일 수는 있었지만, N-Gram 언어 모델도 여전히 N-Gram에 대한 희소 문제가 존재함.
  • n을 선택하는 것은 trade-off 문제
    • n을 크게 선택하면 실제 훈련 코퍼스에서 해당 n-gram을 카운트할 수 있는 확률은 적어지므로 희소 문제는 점점 심각해진다. 또한 n이 커질수록 모델 사이즈가 커진다는 문제점도 있다. 기본적으로 코퍼스의 모든 n-gram에 대해서 카운트를 해야 하기 때문이다.
    • n을 작게 선택하면 훈련 코퍼스에서 카운트는 잘 되겠지만 근사의 정확도는 현실의 확률분포와 멀어진다. 그렇기 때문에 적절한 n을 선택해야 한다. 앞서 언급한 trade-off 문제로 인해 정확도를 높이려면 n은 최대 5를 넘게 잡아서는 안 된다고 권장되고 있다.

 N-gram Language Model의 한계점을 극복하기위해 분모, 분자에 숫자를 더해서 카운트했을 때 0이 되는 것을 방지하는 등의 여러 일반화(generalization) 방법들이 존재한다. 하지만 그럼에도 본질적으로 n-gram 언어 모델에 대한 취약점을 완전히 해결하지는 못하였고, 이를 위한 대안으로 N-gram Language Model보다 대체적으로 성능이 우수한 인공 신경망을 이용한 언어 모델을 사용한다.

 

Neural N-Gram Language Mode

  • 신경망을 사용함으로서 데이터 희소성(data sparsity) 문제를 해결 할 수 있다.
  • 기존의 카운트 기반 모델 보다 훈련 데이터에서 나오지 않았었던 N-gram 을 계산 할 수가 있었기 때문이다.
  • 이것이 가능한 이유는 아래와 같이 데이터 희소성(data sparsity) 문제가 생기는 이유를 살펴봐야 한다.
    • 간단한 대답은 토큰들이 훈련시에는 생기지 않지만, 테스트시에 만 생기기 때문이다. 즉, 디테일하게 가자면  이산 공간(discrete space) 에서 카운트하여 토큰들의 유사도 측정이 불가능 하기 때문이다. => 그러나 신경망에서는 토큰을 연속 벡터 공간(continuous vector space) 에 매핑(mapping) 시킨다. 나오지 않았던 단어들도 유사도를 계산을 통해 연속 벡터 공간에서 의미가 있는 분포를 찾을 수 있게 되며, 이러한 학습을 통해 데이터 희소성 문제를 해결 할 수 있다.

 

Long Term Dependency

신경망을 이용한 n-gram 모델이 장기의존성 문제를 해결하지 못한 이유는 단순히 n-gram 을 보기 때문이다. 신경망을 사용하여 데이터 희소성 문제는 없어졌지만, 단순하게 n 을 늘리게 되면 네트워크 규모가 커져 학습해야할 매개변수가 많아지고, 이에 따른 데이터도 많이 필요하게 된다.

해결방법 1: Convolution Language Model
해결방법 2: CBoW
해결방법 3: Recurrent Language Model
해결방법 4: Recurrent Memory Networks

5. 신경망 기계번역

Encoder - Source Sentence Representation

  • Encode the source sentence into a set of sentence representation vectors
  • We do not want to collapse them into a single vector. (왜냐하면 하나의 벡터로 합치게 되면 정보 손실이 생기게 되고, 문장의 길이가 길어질수록 훈련하기도 힘들고 모델의 크기를 키워야하기 때문이다.)

 

Decoder - Language Modelling

  • Autoregressive Language modelling with an infinite context n→∞
    • Recurrent Networks, Self-attention, (dilated) Convolutional network 등을 사용하게 됨.
  • Conditional Language modelling
    • 이전에 출력된 단어와 인코딩된 소스 문장, 두 가지를 동시에 보고 다음에 어떤 단어나 나올지 결정하게 됨.

 

RNN Neural Machine Translation

[Conceptual process]
1. Encode: read the entire source sentence to know what to translate
2. Attention: at each step, decide which source token(s) to translate next
3. Decode: based on what has been translated and what need to be translated, predict the next target token.
4. Repeat 2-3 until the special token is generated.

Attention mechanism 설명

위의 그림은 소스 토큰과 연관성이 높은 타겟 토큰을 시각화 한 그림을 보여준다. 선의 굵기가 선명할 수록 높은 연관성이 높다고 할 수 있다. 예로 들면, 영어-불어 번역에서 "Economic" 과 "economique"에 굵은 선이 연결된 것을 볼 수 있다. 기계가 "economique" 이라는 토큰을 예측 할때, 소스 문장에서 "Economic" 토큰에 큰 가중치가 붙부여 했다는 점을 시사한다.

 

'AI' 카테고리의 다른 글

연세대학교 대학원 인공지능학과 합격!  (2) 2023.06.17
딥러닝 기술면접 준비 2  (0) 2023.05.31
딥러닝 기술면접 준비 1  (0) 2023.05.29