hyunzzzzzz
자신의 속도로 꾸준히
hyunzzzzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (18)
    • 개발 (3)
      • Linux (1)
      • Python (1)
      • Git, Gitlab (0)
      • gRPC (1)
      • DVC (0)
      • Docker (0)
    • 딥러닝 (0)
    • 원티드 프리온보딩 AI•ML (NLP) (6)
    • 학습 기록 (9)
      • 선형 대수 & 통계 (0)
      • 논문 리뷰 (1)
      • 데이터 엔지니어링 (3)
      • 딥러닝 (1)
      • 데이터 처리 (1)
      • 태블로 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 머신러닝
  • dl
  • pre trained
  • 비선형 활성화 함수
  • 프로젝트 목표
  • 은닉층
  • 객체 인식
  • weight decay
  • 딥러닝
  • 태블로 기본
  • 분산/편향
  • 막대 차트
  • 과/소적합
  • 기준모델
  • 프로젝트
  • http
  • NLP
  • API
  • 데이터 증강
  • 프로젝트 기획

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
hyunzzzzzz

자신의 속도로 꾸준히

Week1-2. NLU와 Semantic Textual Similarity
원티드 프리온보딩 AI•ML (NLP)

Week1-2. NLU와 Semantic Textual Similarity

2022. 2. 22. 21:01

NLU (Natural Language Understanding)

NLU의 목표

NLU의 목표는 자연어를 이해해 특정 task를 풀 수 있는 모델을 만드는 것이다. NLU 모델은 방대한 데이터에서 우리가 보고 싶은 정보만 뽑아주고 정리하는 역할을 수행함으로써 정보 처리 자동화에 기여하고, 시간이 많이 소요되는 반복적인 업무를 대신 수행할 것이다.

 

언어를 이해하는 기준

NLU 모델은 자연어를 이해한다고 하는데, 과연 이해의 기준이 무엇일까? 여기엔 두가지 기준이 존재한다.

  • Syntactic 
    • 문법적으로 옳은 문장인지 구분할 수 있는가?
  • Semantic
    • 문장의 의미를 아는가?
    • 의미를 다루는 대표적인 NLU의 sub task
      • 감정 분석(긍정/부정), 문장간 유사도, 의도 파악, 질문에 대답, 추론 등
💡 즉, 기계(모델, 프로그램)이 문법을 잘 맞추고, 문장이나 대화의 의미를 잘 알고 있다면, 언어를 이해한다고 할 수 있다.

 

GLUE & SQuAD 

GLUE와 SQuAD는 NLU task에 적합한 대표적인 벤치마크 데이터셋이다.

  • GLUE (The General Language Understanding Evaluation)
데이터셋 테스크 데이터 출처 결과
CoLA
(Corpus of Linguistic Acceptability)
문법 (언어적 용인 가능성)
: 영어 문장이 문법적으로 용인 가능한지 확인한다.
  문법이 적절한지 주석 (-1, 1, 0)
SST
(The Stanford Sentiment Treebank)
감정 분석 영화 리뷰 긍정/ 부정 (이진분류)
STS-Benchmark
(Semantic Textual Similarity Benchmark)
의미론적 유사도 예측
(문장쌍이 얼마나 의미적으로 유사한지 확인)
뉴스 헤드라인, 비디오와 이미지 캡션, NLI 데이터 유사도 1-5스코어
MRPC
(Microsoft Research Paraphrase Corpus)
온라인 뉴스
데이터
 
QQP
(Quora Question Pairs)
Quora에 올라온 질의 응답 쌍  
SLNI 자연어 추론 전제, 가설로 이루어진 데이터셋  
MNLI
(Multi-Genre Natural Language Inference)
예시, 연설 스크립트, 소설, 기관 보고서 등의 전제/가설 로 이루어진 데이터셋 전제 문장를 기준으로 가설 문장을
entailment/ conrtradiction/ neutral로 다중 분류
RTE
(Recognizing Textual Entailment)
뉴스, 위키피디아
(MNLI와 유사하나 데이터가 적음)
entailment/ not entailment (neutral, contradiction 포함) 분류
WNLI
(Winograd NLI)
언급 대상 추론
(ex. 문장 내 it/he/she가 누구를 의미하는가)
소설 상호참조(대명사의 선행어 연결)

 

  • SQuAD (The Stanford Question Answering Dataset)
    • 기계 독해 테스크를 위한 벤치마크 데이터셋으로 위키피디아 데이터를 출처로 한다. 
    • 질문과 답변에 대한 정보들이 존재
{
  "version": "v2.0", // SQuAD 버전 정보
  "data": [
    {
      "title": "Normans", // 출처 문서의 제목
      "paragraphs": [
        {
          "qas": [
            {
              "question": "In what country is Normandy located?", // 질문
              "id": "56ddde6b9a695914005b9628",  // 질문 id
              "answers": [
                {
                  "text": "France", // 답변 텍스트
                  "answer_start": 159 // 지문에서의 답변 위치(offset 기준)
                },
                {
                  "text": "France",
                  "answer_start": 159
                }
              ],
              "is_impossible": false  // 정답이 있는 질문은 true, 없는 질문은 false
            }
          ]
        },
        {
          "context": "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy ...."
        }
      ]
    }
  ]
}

 

 


Semantic Textual Similarity 

NLU는 다양한 sub task를 가지고 있지만, 오늘 포스팅에서는 STS(Semantic Textual Similarity, 의미론적 문서 유사성) 테스크에 대해 집중적으로 알아보려한다.

STS task의 문제를 정의하고,
STS task를 수행하는 Language Model(LM)들이 많이 사용하는 대표적인 벤치마크 데이터셋에 대해 알아보고,
해당 벤치마크 데이터셋에서 높은 성능을 기록한 SOTA LM을 확인해보려 한다.

 

문제 정의

STS(Semantic Textual Similarity, 의미론적 문서 유사성)는 명칭에서도 알 수 있듯, 텍스트의 의미를 이해하고 이를 기반으로 텍스트 간 의미적 유사성을 측정하는 NLU 테스크이다. 

 

주요 데이터셋

STS 테스크에 사용되는 주요한 벤치마크 데이터셋에는 GLUE의 STS-Benchmark(STSB), GLUE의 MRPC(Microsoft Reasearch ParaPhrase Corpus), SICK(Sentences Involving Compositional Knowledge) 등이 있다. 이 중 STSB를 살펴보려 한다.

 

GLUE의 STS-Benchmark

2012년과 2017년 사이에 SemEval의 맥락에서 구성된 STS 작업에 사용된 영어 데이터 세트로 구성되어 있다.
이미지 캡션, 뉴스 헤드라인 및 사용자 포럼의 텍스트를 포함하여 데이터셋을 구성했다.
  • 데이터 구성
# 전체 데이터 구성 (총 8628개의 문장 쌍 데이터)
# 행 : 데이터 출처
# 열 : train, dev, test dataset

		train  dev test total 
       -----------------------------
       news     3299  500  500  4299
       caption  2000  625  625  3250
       forum     450  375  254  1079
       -----------------------------
       total    5749 1500 1379  8628

Similarity scores with explanations and English examples from Agirre et al. (2013).

위의 표와 같이 STS-Benchmark의 데이터는 두 문장의 쌍이 하나의 데이터가 되고, 각 문장쌍에는 사람이 판단한 문장 쌍의 유사도가 라벨로 붙어있다.

0~5 사이의 정수값
- 의미가 중복되지 않을 수록 0
- 의미가 동등할수록 5

 

  • 성능 평가 방식

성능은 모델이 예측한 유사성 라벨값과 사람이 직접 붙인 유사성 라벨값 사이의 피어슨 상관 관계(Pearson Correlation)에 의해 측정된다. 그 외에도 스피어맨 상관 관계(Spearman Correlation), 정확도(Accuracy) 같은 성능 평가 방식도 사용하고 있다. 

STS Benchmark 데이터셋에 대한 STS 테스크 성능 평가 화면 (Paperwithcode)

 

 

SOTA 모델 (on STS-Benchmark Dataset)

STS Benchmark 데이터셋에 대한 STS 테스크 성능 평가 화면 (Paperwithcode)
STS Benchmark 데이터셋에 대한 STS 테스크 성능 평가 화면 (Paperwithcode)

 

1. SMART-RoBERTa Large (2019)

Keyword : SMART, Smoothness-inducing regularization, Bregman proximal point optimization

SMART (SMoothness inducing Adversarial Regularization and BRegman pRoximal poinT opTimization)

많은 SOTA 자연어 처리 모델들은 대규모 텍스트 말뭉치를 통해 사전 학습을 받은 사전 학습 모델이다. 우리는 해결하려는 테스크에 대하여 우리와는 다른 도메인 데이터로 학습한 사전학습 모델을 가져와서, 같은 테스크에 쓰이지만 학습에 쓰인 데이터와는 다른 도메인을 갖고 있는 적은 양의 (타겟) 데이터로 fine-tuning한다.

이렇게 대규모 데이터셋에 훈련된 모델의 가중치를 가지고 와 우리가 해결하고자 하는 과제(도메인/테스크)에 맞게 재보정해서 사용하는 것을 전이 학습이라 한다.  그러나 대규모 데이터로 사전학습된 모델을 가져와 너무 적은 양의 데이터로 fine-tuning을 하게 되면, 이전에 사전 학습된 데이터보다 이후에 fine-tuning에 사용된 적은 양의 데이터에 과적합하는 문제가 발생하게 된다. 일반화에 실패한 모델은 우리가 해결하고자 하는 테스크의 (학습/fine-tuning에 사용되지 않은) 새로운 데이터(unseen data)에 대한 예측을 제대로 하지 못하게 된다. (일반화 성능↓)

이와 같은 사전 학습 모델의 문제 완화를 위해 2가지 요소가 포함된 학습 프레임워크를 SOTA 언어 모델의 전이 학습 과정에 도입하길 제안하고 있다.

1. Smoothness-inducing regularization
- 목적 : 모델의 복잡성을 효과적으로 관리
- 사전 학습 언어 모델의 fine-tuning 단계에서 모델 복잡성을 효과적으로 제어하기 위해 정규화를 도입할 것을 제안
- input에 작은 변화를 줄 때도 모델의 출력이 크게 변화하지 않도록 한다. 
- 결과 : 특히 특정 작업에 대한 낮은 리소스 타겟 도메인(=라벨링 된 데이터가 적은 fine-tuning에 사용하는 데이터의 도메인)에서 과적합 방지와 일반화 성능 향상에 도움이 된다. 

2. Bregman proximal point optimization
(브레그만 근위점 최적화, 이것은 신뢰 영역 방법의 한 예이며 공격적인 업데이트를 방지할 수 있다)
- 목적 : 공격적인 업데이트를 방지하고 fine-tuning 과정을 안정화
- 각 반복에서 신뢰 영역 유형의 정규화를 도입한 다음 이전 반복의 작은 인접 영역 내에서만 모델을 업데이트한다.
- 결과 : 사전 훈련된 모델의 도메인 외 데이터에 대한 지식을 효과적으로 유지할 수 있게 만든다.

 

2. T5-11B (Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, 2019)

Keyword : transfer learning, natural language processing, multi-task learning, attentionbased models, deep learning

Transfer Learning (전이 학습 모델)
- 대규모의 데이터를 활용해 사전 학습을 시킨 후, 모델 사용을 위해 이후 fine-tuning을 하는 전이 학습 모델이다.

Encoder-Decoder Transformer
- 입력 토큰 시퀀스는 벡터화되어 인코더로 전달된다.
- 인코더에는 입력을 정규화하는 Self-Attention layer와 Feed-Forward network가 포함되어 있다.
- 그런 다음 각 요소의 입력은 drop-out과 함께 residual skip connection을 사용하여 모델의 출력에 추가된다.
- 디코더는 self-attention mechanism 위에 additional standard attention model을 제외하고 인코더와 유사하며 fixed position embedding 대신 relative position embeddings을 사용한다.

 

+) Mnet-Sim (2021) 

Keyword : multi-layer network, network science, semantic similarity

   

문제 해결을 위한 최적의 모델 찾기

풀고자 하는 문제(테스크)의 SOTA 모델이 과연 나에게 최적의 모델일까? Paperswithcode를 통해 벤치마크 데이터셋에서 최고의 성능을 자랑하는 SOTA모델을 찾았다고 하더라도 모델 선택 전에 고려해야할 사항들이 존재한다.

1. 모델의 크기 
모델의 크기는 모델을 돌리는 시간과 직결된다. 

또한 엄청난 양의 데이터를 사전 학습(pre-trained)한 모델을 가져와서
fine-tuning을 위해 소량의 도메인 데이터만 추가로 학습시킨다면, 풀고자하는 도메인 문제를 잘 풀어낼 수 있을까?

Many existing state-of-the-art models are first pre-trained on a large text corpus and then fine-tuned on downstream tasks. However, due to limited data resources from downstream tasks and the extremely large capacity of pre-trained models, aggressive fine-tuning often causes the adapted model to overfit the data of downstream tasks and forget the knowledge of the pre-trained model. 

2. train dataset의 도메인
신문이나 논문같은 문어체 위주의 텍스트로 학습 시킨 모델을 사용해 구어체를 구사하는 챗봇을 만들어낼 수 없다. 
따라서 해결하고자 하는 문제의 도메인과 모델의 학습 데이터 간의 괴리를 고려해야 한다.

 

 

Reference

  • Paperswithcode (https://paperswithcode.com/task/natural-language-understanding)
  • NLP 벤치마크 데이터셋 - 영어와 한국어 (https://ifdean.tistory.com/3)
  • NLP 데이터셋 소개(SQuAD, KoQuAD, KLUE) (https://happygrammer.github.io/nlp/dataset/#squad)
  • STS-Benchmark 관련 설명 출처 (https://aclanthology.org/S17-2001.pdf)
저작자표시 비영리 변경금지 (새창열림)

'원티드 프리온보딩 AI•ML (NLP)' 카테고리의 다른 글

Week2-1. Pytorch tutorial (1) - Tensor  (0) 2022.04.07
Week1-4. NLP의 Transfer Learning의 학습 방식  (0) 2022.02.25
Week1-3. NLG와 extractive summarization task  (4) 2022.02.23
NLP와 벤치마크 데이터셋  (0) 2022.02.22
Week1-1. NLP Sub-Task 탐색  (3) 2022.02.21
    '원티드 프리온보딩 AI•ML (NLP)' 카테고리의 다른 글
    • Week1-4. NLP의 Transfer Learning의 학습 방식
    • Week1-3. NLG와 extractive summarization task
    • NLP와 벤치마크 데이터셋
    • Week1-1. NLP Sub-Task 탐색
    hyunzzzzzz
    hyunzzzzzz
    천천히 자신의 속도에 맞춰 가되, 후퇴하거나 멈추지 않고 꾸준히 나아가는 신입 AI 엔지니어의 기록 공간입니다. 즐겁게 일하며 원하는 서비스를 만드는데 기여하는 것, 그래서 서비스와 제가 함께 과정에서 성장하는 것을 목표합니다. 이를 위해 매일매일 상승과 하강 곡선을 그리는 마음을 다독이고 행복하게 일하기 위한 마인드셋을 세우려 노력합니다.

    티스토리툴바