부스트캠프 AI Tech 4기

(NLP 기초대회) N21 - Sentence Classification

쉬엄쉬엄블로그 2023. 7. 21. 11:22
728x90

이 색깔은 주석이라 무시하셔도 됩니다.

N21 (Sentence Classification) 이론

Neural Network based Classification

접근방법

  • supervised learning (교사 학습)
    1. 예제 문제를 풀게하고
    2. 정답과 비교하여
    3. 잘 맞추는 방향으로 학습
    • 구현하기도 쉽고 성능도 안정적으로 올라감
    • 하지만 사람들이 직접 데이터를 구축해야 하는 단점이 있음
  • classification (분류)
    • 가장 높은 숫자를 부여받는 class가 선택되도록 학습

감성 분류기 구현 예

  • 감성분석
    • 다음에 또 가려구요! - Positive
    • 이게 좀 비좁은 느낌을 가져다 줄지도! - Negative
    • 역시나 비싼 호텔인가 싶었어요. - Neutral
    • 무료 Wi-Fi - Objective
    • Class 설계 (4개 Class)
      • Positive (긍정)
      • Negative (부정)
      • Neutral (중립)
      • Objective (객관)

신경망 디자인

  • Design

  • Prediction

    • 3번째 클래스의 결과값이 가장 크기 때문에 3번째 클래스인 중립이 결과가 됨
  • 간단한 수준의 신경망 예

    • 뉴럴 네트워크는 일종의 그래프 방식으로 디자인 가능함
    • 그래프의 선에 해당하는 하나하나가 파라미터와 일대일 대응 됨
    • 보통 FC 레이어에서는 bias까지 포함됨
      • 그래서 위 그림에서는 4x6개의 파라미터가 필요

신경망 분류 기법

  • 하위 문제들

    1. Reference Representation
      • 정답 표현
    2. Scoring Normalization
      • 점수 정규화
    3. Cost Function Design
      • 비용 함수 설계
    4. Parameter Update
      • 파라미터 갱신
  • 정답표현

    • 정답을 어떻게 표현할 수 있을까?

      • 다음에 또 가려구요! [Positive]

        • 긍정의 정도를 다르게 하지 않고 긍정이라면 Positive class에 1을 부여
        • classification 방법의 기본적인 가정은 두 가지의 한계를 가짐
          • 4가지 감성들이 있을 때 하나의 감성만 출력이 가능
          • 감성 안에서도 여러가지 정도가 있을텐데 그런 정도는 표현하지 않음
  • Score Normalization

    • 예측과 정답을 서로 비교하기 위해서는 서로 같은 Scale의 값이어야 한다.
  • Softmax

    • Softmax Function

      • 0.0 ~ 1.0의 값으로 변환
    • 지수 함수의 특징($e^x$)

      • 어떤 값이든 양수 값으로 바꿔줌
      • 큰 값일수록 더욱 크게 만들어줌

  • Cost Function

    • 예측 값과 정답 값의 범위를 맞춰줬다면 예측 값과 실제 정답이 얼마나 같거나 다른지 비교해야 함
    • loss fucntion, cost function, object function은 모두 같은 의미를 가짐
    • cost function은 미분이 가능해야함
    • 분류 task에 있어서는 Cross Entropy라는 좋은 cost function이 이미 만들어져있음
    • 예측과 정답이 얼마나 같은지 다른지를 계산하는 문제를 형태를 바꿔서 A라는 확률분포와 B라는 확률분포가 얼마나 유사한지 접근할 수 있음
    • 그러한 metric이 통계, 확률쪽에서 잘 정의되어 있음
    • 바로 KL-Divergence
    • KL-Divergence는 방향성이 있음
      • A라는 확률분포가 B라는 확률분포로 가는 것, B라는 확률 분포가 A라는 확률분포로 가는 것의 점수가 서로 다름
    • 수식적으로 KL-Divergence의 방향성을 없애놓은 버전이 바로 Cross-Entropy가 됨
  • Parameter Update

    • 어느 방향으로 학습을 진행해야 하는가?

      • 오류가 작아지는 방향으로 진행

    • 오류가 작아지는 방향이란 어느 쪽인가?

    • 얼마나 고쳐야 오류를 작아지게 할 수 있을까?

      • 방향과 양을 고려해서 파라미터를 업데이트해야 함
      • 이러한 부분의 연구는 이미 뉴턴이 해놨음 → gradient descent
    • 방향을 결정하는 방법

      • 위 그림의 지점에서의 기울기 방향을 구해서, 기울기가 작아지는 방향으로 간다면, 오류를 작게 만들 수 있을 것
      • 미분, 기울기 = Gradient
  • 정리

    • 위 프로세스의 흐름이 전형적인 신경망 기반 훈련 / 예측의 구조가 됨
    • 위 과정을 보통 PyTorch, TensorFlow 등 여러가지 라이브러리에서 1step이라고 부름
      • 1step : Feed Forward부터 Back Propagate까지 이루어지는 것
      • 1step마다 파라미터가 업데이트 됨

N21 Problem

What is N21 Problem?

  • N개의 입력으로 1개의 출력을 구하는 문제
  • Encoder + Fully Connected Layer 형태의 모델을 사용
  • 현 시점에서 가장 안정적인 성능을 보이는 Transformer를 기본 Encoder로 설명함
  • ex) Topic Classification, Semantic Textual Similarity, …
  • N개의 입력이 들어와서 C개의 class에 해당하는 확률분포가 출력되면 그 확률분포를 이용해서 정답을 예측함

Encoder + Linear

  • Encoder 기반 분류기의 구조

    https://ratsgo.github.io/nlpbook/docs/language_model/transformers/

  • Input / Output Modeling

    https://ratsgo.github.io/nlpbook/docs/language_model/transformers/

    1. 입력을 적절한 단위로 Tokenization

    2. Tokens에 대해 Encoder가 Sentence Encoding 수행

    3. Encoder의 최종 Output vector를 Classification을 위해 class 개수만큼의 차원으로 Projection

      • BertPooler Block을 통해 Projection됨
      • activation function으로 Tanh()를 사용하여 -1 ~ 1의 값으로 만들어줌

N21 example

  • Example : Spam Classifier

    • Input : SMS(문자메시지)

      • ex) OK lar… Joking wif u oni…
    • Output : 스팸 판별

      • ex { ham, ham, spam, ham }
    • 데이터

https://ratsgo.github.io/nlpbook/docs/language_model/transformers/
  • Example : News Classification (KLUE YNAT)

    • Input : 뉴스 기사 제목

      • ex) 유튜브 내달 2일까지 크리에이터 지원 공간 운영
    • Output : 기사의 주제

      • ex) 3 (생활문화)

Input / Output

Input

  • Transformer 계열에서의 Input 설명

    • huggingface의 문법 기준 예제


    • input_ids

      • tokenization vocab에서 각 단어가 몇 번째 id에 해당하는지 나타냄
    • attention_mask

      • 트랜스포머 안에서 문장에 대해서 self-attention이 여러 번 일어날텐데 그 때 attention이 이루어져야 하는 대상을 지정해주는 mask
      • 0 또는 1 로 지정됨
        • 모두 1로 지정되면 불필요한 정보가 없다는 의미
      • self-attention에 고려되어야 하는 정보에는 1을 넣어주고 그렇지 않은 정보에는 0을 넣어줌
      • 보통은 batch size에 따라 패딩이 적용되어 가짜 공백을 넣어주기 때문에 pad 토큰에 해당되는 것들은 attention_mask가 0으로 지정됨
    • token_type_ids

      • BERT에서 제안된 아이디어에서 출발
      • 2가지 문장이 들어올 때 첫 번째 문장을 0으로 넣어주고 두 번째 문장을 1로 넣어줘서 문장 순서를 구분함
    • 이렇게 가공된 벡터 정보가 뉴럴 네트워크의 입력으로 들어감

Output

  • 여기에서 나오는 Logits 값은 아직 확률 값이 아님
  • Logits 값에 softmax를 적용해주면 확률 값으로 바뀜

Loss function

N21 - Loss

  • ‘1’에 해당하는 output의 성격에 따라 사용되는 Loss function도 달라진다.

Regression Loss

  • MSE (Mean Squared Error)
    • Regression 문제에서의 loss function
      • $MSE=\frac{1}{N}\sum^N_{i=1}(y_i-\hat y_i)^2$
    • ex) y = 1
      • $\hat y$ = -0.3028
      • MSE = $(1-(-0.3028))^2=1.6972$
  • MSE의 자연어처리 적용 예
    • MRC(Machine Reading Comrehension) 문제에서의 정답 위치 → 숫자를 맞추는 문제
    • 두 문장의 문장유사도 → 숫자를 맞추는 문제
    • 추천 등의 문제에서 추천 정도 → 숫자를 맞추는 문제

Classification Loss

  • Cross Entropy
- 2개의 확률 분포가 얼마나 차이가 나는지를 잘 잡아낼 수 있는 Score - *확률 분포 A와 B를 방향성이 없게끔 서로 비교해 주는 Score* - <span style=color:lightgray> *대부분의 분류 문제에서는 CE를 loss 함수로 써서 모델링하면 웬만하면 잘 작동됨* </span>

출처: 부스트캠프 AI Tech 4기(NAVER Connect Foundation)