본문 바로가기

AI

Seq2Seq Text Generation

Input sentence: <bos>지난 여름은 너무 더웠어<eos> → 'source'

Output sentence: <bos>It was so hot last summer<eos> → 'target'

→ bos, eos는 문장의 시작과 끝을 말해주는 token인데, 이걸 알려줘야 text generation이 제대로 된다.

 

그래서 결국엔 어떤 Input이 주어졌을때, 그거에 맞는 Output이 나올 conditional probablilty를 구하는 것.

conditional probablilty는? "지난 여름은 너무 더웠어"를 인풋으로 줬을 때, It이 나올 확률을 의미한다.

→ 이 확률을 학습시키며 높여가는 것을 의미한다.

inbedding weight가 나타나있진 않지만, 있어야한다.

 

define해야되는 Model components

1. The embedding weight E

2. Encoder에 해당하는 RNN하나, Decoder에 해당하는 RNN하나

3. Fully connected layer(여러개가 있는 것처럼 보이지만, 1개이다.)

 

Main process

1. Greedy

2. Beam Search

3. Top - K Sampling

4. Top - P Sampling


Attention

Attention이 있음으로써, transfomer가 나왔고, GPT가 나오게 된 것이라고 보면 된다.

Attention 매커니즘이 어디서부터 시작했는지를 살펴보자.

Encoder에서 나온 마지막 hidden layer만 Decoder로 넘어가는데,

이게 과연, Encoder의 모든 input sequence를 인코딩 할 수 있는가

라는 의문에서부터 Attention은 시작했다.

 

그래서 각각의 hidden layer 에서 다음으로 넘어갈 때,

weight(각각의 Source에 얼마정도 집중을 해야되는가?의 수치) 를 부여해서, weight sum을 넘겨주자!

라는 것이 Attention(어디에 주목해야되는가?) 이다.

α를 구하고 h와 곱해서 c값 weight sum(context vector) 을 만들자. 그래서 α가 무엇이냐? α는 probability distribution인데 다 합치면 1이 되도록.

 

attention된 부분을 시각화

 

Self-Attention

 

1. 각 단어의 임베딩에서 Query, Key, Value(W^Q, W^K, W^V) 벡터 생성

2. 하나의 단어를 기준으로 다른 단어와의 관계를 계산하여 점수 산정 Score(Q,K) = Q K^T

3. 점수를 Divide by 8(루트 Dk) 해준뒤, Softmax한다. (모든 단어의 점수 합은 1) (8로 나누는건 Dot Product)

4. Value 벡터에 가중치를 곱한뒤(weight value), weight value를 전부 합산

Weight value = Attention weight x V

Output Vector = (Weighted Value)

5. 4번 결과는 Fully-Connected Layer에 전달되어 추가 변환 및 처리

 

Masked Self-Attention

 

 

'AI' 카테고리의 다른 글

[NLP] 시작  (5) 2025.04.16
Transformer  (0) 2024.12.16
Language Model  (0) 2024.11.29
Linear Classifier, Loss Func, Softmax Func, Optimization  (0) 2024.11.04
Image Classification, Text Classification  (0) 2024.09.23