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
- 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.
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.
위의 그림은 소스 토큰과 연관성이 높은 타겟 토큰을 시각화 한 그림을 보여준다. 선의 굵기가 선명할 수록 높은 연관성이 높다고 할 수 있다. 예로 들면, 영어-불어 번역에서 "Economic" 과 "economique"에 굵은 선이 연결된 것을 볼 수 있다. 기계가 "economique" 이라는 토큰을 예측 할때, 소스 문장에서 "Economic" 토큰에 큰 가중치가 붙부여 했다는 점을 시사한다.
'AI' 카테고리의 다른 글
연세대학교 대학원 인공지능학과 합격! (2) | 2023.06.17 |
---|---|
딥러닝 기술면접 준비 2 (0) | 2023.05.31 |
딥러닝 기술면접 준비 1 (0) | 2023.05.29 |