Study Record/AI Data Science

[Conversational AI 3강] Language Models

Sungyeon Kim 2024. 7. 6. 18:31

서울대 조요한 교수님 Conversational AI 3강 정리

 

Language Model

- 뒤에 따라올 candidate text의 conditional probability 계산하는 것

- 최신의 dialogue system은 '대부분' LMs로 이루어져 있다.

 

[질문]

그렇다면 LM 말고 다른 방법론으로 개발된 dialogue system도 있나요?

규칙 기반 챗봇 말고

 

1. Word2vec

단어를 dense vector로 표현

* dense vector   vs   sparse vector(one-hot)

* dense vector를 LM의 input으로 사용하기 시작한지 얼마 되지 않았다.

 

Word Embedding으로 얻어야 하는 특징

- 유사한 단어끼리는 좌표상에서 가까워야 함 = 유사한 벡터

- 유사함의 기준 = 단어가 사용되는 맥락(비슷한 주변 단어)

-> 따라서 word를 input으로 context(주변 단어)를 예측하도록 학습시켜 word embedding을 얻자!

 

[2가지 학습 알고리즘]

1) Skip-gram

(1) cat의 one hot vector를 input으로

(2) trainable Matrix로 matrix transformation 거쳐서 dense vector로 변환

(3) 이 dense vector로 the의 one hot vector와 sat의 one hot vector를 예측해야 함

-> dense vector에 새로운 trainable matrix로 transformation + softmax 거쳐서 the의 확률이 가장 높게 나오도록 학습

-> dense vector에 새로운 trainable matrix로 transformation + softmax 거쳐서 sat의 확률이 가장 높게 나오도록 학습

(4) sliding window(노란색)을 계속 오른쪽으로 옮기면서 sliding window 별로 학습 시키기

 

*** input이 원핫이기에 dense vector는 trainable matrix의 특정 row를 가리킴.

-> 예를 들어 cat의 dense vector는 왼쪽 trainable matrix의 첫번째 row

 

2) CBOW

얘는 반대로 주변 word를 input으로 가운데 단어 예측

 

[질문]

그럼 CBOW에서 cat의 dense vector는 오른쪽 trainable matrix의 첫 번째 열인가요?

 

3) 이렇게 학습을 하면

각 vector의 dimension이 interpretable한 특징을 표현 (e.g., 어떤 dimension은 gender, 어떤 dimension은 품사)

 

4) 단점

??? ㄷㄷ.. 한국어 이정도인 줄은 몰랐네...

얘네 다 학습시키려면...

 

5) 이를 보완하기 위해 FastText

단어 하나를 Unit으로 보지 말고

단어 안에 character들을 unit으로 보자.

-> 각 ngram들의 word embedding을 합쳐서 orange의 최종 embedding을 만듦

 

왜 좋아? 

- OOV word도 word embedding 생성 가능 -> typo에 robust (word2vec은 불가)

 

6) Limitations of Word2vect & FastText

- one word can have different meanings -> fixed vector is not flexible

 

따라서 이러한 한계를 극복하기 위해 

BERT, ELMo 탄생!!

 

2. Seq2Seq model

= encoder-decoder model

- encoder: a sequence of tokens을 embedding

- decoder: embedding을 기반으로 새로운 a sequence of tokens를 생성

 

얘의 문제점

-> loop (똑같은 말 반복)

-> long sentences에서 성능 안 좋음 (초반 단어 기억 잘 못해)

-> unknown words

 

3. Attention mechanism

각 input 단어들의 중요도 계산하고 (곱해서 유사도 측정)

그걸로 hidden state들 weighted sum = c

c + (현재 hidden state) 합쳐서 얘로 다음 output token(y) 예측!

-> 모든 encoding 가지고 있을 필요 없이 필요한 input 단어의 encoding만 간직함으로써 메모리 절약

 

그럼 당연히 현재 자기가 예측하려는 단어 위치에 해당하는 input 단어가 제일 score 높은 거 아니야? 라고 생각할 수 있지만

아님.