앞부분 요약정리
Seq2Seq
- 기계번역 (Neural machine translation, NMT)
- 입력된 언어를 다른 언어로 번역하는 Task e.g) 파파고 - 자연어와 컴퓨터언어
- 자연어, 사람이 이해할 수 있는 데이터 : 텍스트 형태 e.g) 이순신 장군은 우리나라의 영웅이다.
- 컴퓨터 언어, 컴퓨터가 이해할 수 있는 데이터 : 숫자 형태 e.g) [2, 10661, 2073, 7339, 2079, 7073, 28674, 3] - 인코더 (Encoder)
- 사람이 이해할 수 있는 자연어를 컴퓨터가 이해할 수 있는 컴퓨터 언어로 변환해주는 장치
- 아래 그림과 같이, 입력 시퀀스 문장을 고정된 길이의 벡터 (Context vector)로 변환 - 디코더 (Decoder)
- 컴퓨터가 이해할 수 있는 컴퓨터 언어를 사람이 이해할 수 있는 자연어로 변환해주는 장치
- 아래 그림과 같이, 고정된 길이의 벡터 (Context vector)를 입력으로 받아, 출력 문장으로 변환 - Seq2Seq (Sequence to Sequence) 구조
- 인코더 (Encoder)와 디코더 (Decoder) 를 결합한 구조
- 기계번역 기준, 입력 언어를 고정된 길이의 벡터로 변환한 후에, (고정된 길이의 벡터를) 타깃 언어로 번역하는 구조
RNN (Recurrent Neural Network)
- RNN
- 현재 타임 스텝 (t)에서 이전 스텝 (t-1)까지의 정보들을 기반으로 출력값을 계산하는 딥러닝 모델
- 입력값과 출력값의 갯수에 따라서 5가지로 나눔
- One-to-one , Vanilla RNN 예시로는 이미지분류
- One-to-many 예시로는 음악이나 텍스트 생성
- Many-to-one 예시 예시로는 언어모델 (Language Modeling), 감성 분류
- Many-to-many (Tx = Ty) 예시로는 개체명인식 (NER)
- Many-to-many (Tx != Ty) 예시로는 기계번역 (NMT) - 장점
- 시퀀스 (squence) 데이터의 시퀀셜한 (순서대로 나열되는) 특성을 학습
- 타임스텝마다 이전 매개변수를 공유하기 때문에 지난 정보들을 고려하여 계산
- 입출력 시퀀스의 길이가 다른 것이 가능하여, 다양한 길이의 입출력을 처리하는데 용이함 - 단점
- 시퀀스의 길이가 길어질수록 과거의 정보들을 잘 기억하지 못하는 장기 의존성 문제 (Long-term dependency)가 존재
- 시퀀스의 앞선 타임스텝들 계산에 대한 종속성으로 인하여 계산 속도가 느림
- 학습과정에서 그레디언트 소실 문제 (Gradient Vanishing Problem)가 발생 - LSTM (Long-Short-Term-Memory)
- Vanilla RNN 의 단점인 장기 의존성 문제를 보완하여 나온 RNN 모델
- LSTM 은 cell state 에 핵심 정보들을 모두 담아두고, 각 타임 스텝 (time step)마다 필요한 정보만을 hidden state 에 업데이트하여 사용되도록 학습
- 오차역전파 (backpropagation) 진행시 RNN 은 그레디언트 소실 문제 (Gradient Vanishing Problem)가 있었지만, LSTM 은 이 문제를 cell state 와 게이트 (gate)라는 개념을 통해 그레디언트 소실 문제를 개선함 - GRU(Gated Recurrent Unit)
- LSTM 모델 구조를 더 단순화한 RNN 모델
- LSTM 은 2가지 상태 (state)와 3가지 게이트 (gate)를 활용한 반면, GRU 는 1가지 상태 (state)와 2가지 게이트 (gate)를 활용함
- 다만 cell state 가 없이 하나의 state 만 사용하여, 장기 의존성 문제에는 LSTM 보다 취약함
Attention
- 사람이 사물을 보는 방식
- 사람은 사물을 볼 때, 시야 내의 모든 부분을 동일하게 보지않고 일부에 집중 (Attention)하게된다 - RNN + Attention
- Seq2Seq RNN 구조 위에 Attention 구조를 추가한 형태
- 디코더의 특정 예측 시점에서 디코더의 hidden state 가 인코더의 각 스텝의 hidden state 중 어느것에 유사한 지 계산하여, 디코더가 어디에 집중 (Attention)할 지 반영하는 형태로 학습을 고도화
Transformer
- “Attention is All you need” 논문에서 소개된 모델
- 기억해야할 포인트
- Seq2Seq Model
- Multi-head Attention
- Self-Attention
- Positional Encoding
- Self-Attention
- 같은 문장 (Self) 내의 토큰들끼리 어텐션을 취하는 것
- 기존 어텐션은 인코더-디코더간 어텐션이었던 반면, 인코더/디코더 각각에 입력된 문장 내에서 어텐션 진행
- 아래 과정을 통해서 Attention 이 동작하며, 기존 RNN + Attention 구조와 달리 RNN 이 존재하지 않는다. - Multi-head Attention
- 입력 문장의 토큰 간의 다양한 유형의 종속성을 포착하기 위해, Attention (Query, Key, Value) 을 여러 개의 Head 로 나눠서 병렬로 계산
- 도출된 Attention Value 들은 마지막에 concatenate 를 통해 하나로 연결
- 전체 hidden_size 를 num_attention_heads 로 나눠서 학습을 진행
- 단, hidden_size 가 num_attention_heads 로 나눠떨어져야함
e.g) hidden_size = 1,024 & num_attention_heads = 8 -> attention_head_size = 128 만약, num_attention_heads 가 7이면 에러 발생 - Query,Key,Value 연산하기
1. 입력값 X 에 대해 가중치 (W_q, W_k, W_v)를 곱해서 Q, K , V 를 생성
2. Query 에 대해서 각각의 Key 와 내적하여 attention scores 계산
3. 내적한 값에 scaling 및 softmax 를 취해준다
4. softmax 까지 취해준 attention_probs 를 Value 에 곱해준다. - Positional Encoding
- RNN, CNN 과 달리, (Transformer는) 입력 시퀀스의 단어들이 어떤 순서로 들어왔는지 에 대한 정보가 누락되기에 이를 보완하기 위해 추가된 기능
- sin,cos 과 같은 주기함수를 통해 주기를 가지는 값을 제공
- Input embedding 값에 더하여 인코더와 디코더의 입력값으로 입력
'Study > 자연언어처리 NLP' 카테고리의 다른 글
Encoder Model (BERT) (0) | 2025.01.17 |
---|---|
자연어 처리 Task와 파이프라인 (2) | 2025.01.15 |
자연언어처리의 연구와 서비스 (1) | 2025.01.13 |
딥러닝 기반의 자연언어처리 (0) | 2025.01.13 |
자연언어처리의 역사 (0) | 2025.01.13 |