Study/자연언어처리 NLP

자연언어처리 - BERT 이전 모델

김 도경 2025. 1. 13. 18:56

앞부분 요약정리

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 값에 더하여 인코더와 디코더의 입력값으로 입력