한국어 자연어처리 도구

2023. 7. 19. 15:45자연어처리

한국어 자연어처리 도구에 대해서 알아보자

 

Fine-tuning vs. Few-shot Learning

  • Fine-tuning: 사전 학습된 (pretrained) 언어 모델을 이용할 때는 풀고자 하는 작업에 맞게 Fine-tuning하여 사용합니다. Fine-tuning을 수행하면 풀고자 하는 작업에 맞는 학습 데이터를 이용하여 학습이 이루어지고, 이 과정에서 파라미터들이 갱신이 됩니다.
  • Few-shot learning: Few-shot learning은 추가 학습 없이, 즉 파라미터들을 갱신하지 않고 작업을 수행할 수 있습니다. 이를 위해 작업에 대한 설명, 작업에 대한 예제, 함께 풀고자 하는 문제를 프롬프트 형식으로 모델의 입력으로 사용합니다. 이 때 사용되는 예제가 없으면 Zero-shot, 1개면 One-shot, 2개 이상이면 Few-shot이라고 합니다.

 

Transfer learning (전이학습)

  • 한 작업에서 학습한 지식을 다른 관련 작업에 적용하는 기술 → 미리 학습된 모델 (pretrained model)의 일부 또는 전체를 가져와서 새로운 작업 수행 가능. 즉 적은 양의 데이터로도 효과적인 모델 구축 가능.
  • 또한, 동일한 조건에서 바닥부터 훈련시키는 것(train from the scratch)이 사전 학습된 모델 (pretrained model)을 사용하는 것보다 동일한 정확도에 도달하기 위해서 2~3배의 시간이 더 걸린다는 연구결과가 있음.
  • 많은 데이터를 학습하여 하이퍼 파라미터 값을 생성해 놓았더니, 각각의 독립적인 분류, 추론, 문장비교, 질문대답 등의 테스크에서 간단한 레이어를 추가하고, 적은 데이터와 학습시간으로 미세조정(Fine-Tuning)만 거쳐도 기존의 각 테스크별 SOTA(현 최고성적) 모델들을 압도하는 성능을 보여주었다. 이를 전이학습(Transfer Learning)이라 부른다.

 

  • 전이학습이 유용한 상황
    1. 작은 데이터셋: 새로운 작업에 필요한 데이터가 적은 경우, 전이학습을 사용하면 미리 학습된 모델의 지식을 활용하여 성능을 향상시킬 수 있습니다. 미리 학습된 모델은 이미 대규모 데이터셋에서 훈련되어 일반적인 특징을 학습했기 때문에 작은 데이터셋에서도 좋은 성능을 발휘할 수 있습니다.
    2. 유사한 작업: 전이학습은 원래 작업과 새로운 작업 간에 유사한 특성을 공유할 때 특히 효과적입니다. 예를 들어, 이미지 분류 작업에서 강아지와 고양이를 구분하는 모델을 학습한 후, 다른 동물의 분류 작업에 적용할 수 있습니다. 동물들은 일반적으로 시각적 특성을 공유하기 때문에, 이미지 분류 작업에서 학습된 모델은 다른 동물의 분류에도 유용한 특징을 가지고 있을 것입니다.
    3. 계층적인 특징 학습: 딥러닝 모델은 보통 여러 개의 계층으로 구성되어 있습니다. 이러한 모델은 저수준 특징(예: 선, 모서리 등)을 학습하는 하위 계층과 고수준 특징(예: 눈, 코, 입 등)을 학습하는 상위 계층으로 구성됩니다. 전이학습을 사용하면 하위 계층에서 이미 학습된 특징 추출기를 가져와서 새로운 작업에 적용할 수 있습니다. 이는 새로운 작업에 대해 많은 데이터를 필요로 하지 않고도 빠르게 학습을 진행할 수 있게 해줍니다.

 

GLUE (General Language Understanding Evaluation)

  • 자연어 이해 (NLU) 작업에서 다양한 모델들의 성능을 평가하고 비교하기 위해 사용되는 벤치마크 데이터셋과 평가 매트릭스의 집합
  • 상세 목록
    1. MNLI (Multi-Genre Natural Language Inference): 문장의 의미를 이해하고, 두 문장 간의 관계를 분류하는 작업입니다.
    2. QQP (Quora Question Pairs): 두 개의 질문이 의미적으로 동일한지 여부를 판별하는 작업입니다.
    3. QNLI (Question-answering Natural Language Inference): 질문과 문장이 주어졌을 때, 문장이 질문에 대한 답변을 포함하는지 여부를 판별하는 작업입니다.
    4. SST-2 (Stanford Sentiment Treebank): 문장의 감성 분류 작업으로, 문장의 감성(긍정 또는 부정)을 분류합니다.
    5. CoLA (Corpus of Linguistic Acceptability): 주어진 문장이 문법적으로 올바른지 여부를 판별하는 이진 분류 작업입니다.
    6. STS-B (Semantic Textual Similarity Benchmark): 문장 쌍 간의 의미적 유사성을 측정하는 작업입니다.
    7. MRPC (Microsoft Research Paraphrase Corpus): 두 개의 문장이 의미적으로 동일한지 여부를 판별하는 이진 분류 작업입니다.
    8. RTE (Recognizing Textual Entailment): 문장의 의미를 이해하고, 두 문장 간의 부분적인 의미 전달 여부를 판별하는 작업입니다.

 

 

Models

1. KoBERT (NLU: Natural Language Understanding)

  • BERT는 문장을 생성하지 않고 문장을 분석하고 이해하는데만 집중하는 모델로 Transformer 구조에서 디코더를 생략하고 인코더만 이용했다. KoBERT는 기존 BERT한국어 성능 한계를 극복하기 위해 개발되었다. 위키피디아나 뉴스 등에서 수집한 수백만 개의 한국어 문장으로 이루어진 대규모말뭉치(corpus)를 학습하였으며, 한국어의 불규칙한 언어 변화의 특성을 반영하기 위해 데이터 기반 토큰화(Tokenization) 기법을 적용하여 기존 대비 27%의 토큰만으로 2.6% 이상의 성능 향상을 이끌어 냈다.

2. GPT : Transformer 구조에서 인코더는 무시하고 디코더 부분만 집중

  • GPT-J: OpenAI에서 GPT-3 모델을 공개하지 않고, 데모와 API 호출을 통해 모델을 사용할 수 있도록 하여 사실상 오픈 소스 모델로 보기에는 힘들었습니다. 이에 대해 EleutherAI는 GPT-3의 오픈소스 버전인 GPT-J 모델을 학습하여 공개했습니다. GPT-J는 JAX기반으로 작성된 언어모델로, 파라미터 수는 약 60억 개로 모델 규모는 GPT-3보다 작습니다. 모델은 Huggingface Hub에 배포가 되어 있어 누구나 다운로드하여 사용이 가능합니다.
    1. KoGPT (NLG: Natural Language Generation)
      • 학습 목표
        • KoGPT에 사용된 GPT-J 모델을 모듈 단위로 분해하여 언어모델의 구조 파악
        • GPT-J 모델은 GPT-3의 오픈소스 버전.
      • 환경 필요사항
        • KaKao-Brain에서 공개한 Ko-GPT3 모델을 활용
        • 일종의 경량화 버전인 float-16 버전의 모델을 활용하여도 Colab 무료 사용으로는 실습 제한
        • 원활한 실습을 위해서는 월 9.99 달러의 Colab Pro를 활용하는것을 권장

3. DistilBert

  • Knowledge Distillation이라는 압축기술을 이용.
  • KD는 큰 모델을 선생 (Teacher)으로, 작은 모델인 학생 (Student)를 학습시킴.
  • ALBERT도 일종의 압축모델이지만, 애초에 구조를 줄여서 트레이닝 시키는 형태이고, DistilBERT는 이미 사전학습된 BERT를 압축하는 구조이다.
  • a smaller general-purpose language representation model
  • which can then be fine-tuned w/ good performances on a wide range of like its larger counterparts.
  • it is possible to reduce the size of a BERT model by 40%, while retaining 97% of its language understanding capabilities and being 60% faster.
  • 학생은 선생의 출력결과의 확률 분포를 배움으로써, 특히 0에 가까운 출력값의 복잡한 특징 신호를 단순한 구조로도 배울 수 있게 되어 성능하락이 거의 없이 빠르다.
  • we also show that our compressed models are small enough to run on the edge, e.g. on mobile phone.
  • the student network inherits some of the knowledge and representations learned by the teacher network.
  • It serves as a form of transfer learning, leveraging the pre-trained knowledge of the teacher network to aid the learning process of the student network.
  • DistilKoBERT: SKTBrain KoBERT의 경량화. 기존의 12 layers를 3 layers로 줄임. transformers를 통해 직접 업로드/다운로드 가능.'

4. RoBERTa (A Robustly Optimized BERT Pretaining Approach)

  • BERT의 파라미터 및 트레이닝 방법의 변화를 통해 성능을 향상시킨 버전.
    • 더 많은 데이터를 사용하여 더 오래, 더 큰 batch로 학습
    • NSP(next sentence prediction) 제거
    • 짧은 sequence는 배제하고 더 긴 sequence로 학습하기
    • static masking을 dynamic masking으로 바꾸기

5. ALBERT (A Lite BERT)

  • BERT에서 사이즈가 크다고 무조건 성능이 향상되지 않는다는 것을 증명하며 등장한 버전.
    • 큰 파라미터는 OOM(out-of-memory)문제, 학습시간 증가를 야기 → input token embedding 사이즈를 줄여서 전체 파라미터를 줄임 (Factorized Embedding)
    • Transformer layer 간 같은 Parameter를 공유하여 사용
    • NSP (next sentence prediction) 대신 SOP (sentence order prediction) 사용

6. BART (Bidirectional Auto-Regressive Transformer)

  • BERT가 분류 등의 일반 테스크 성능은 뛰어나지만, 문장생성 등의 테스크에서는 취약함. (디코더를 사용하지 않기 때문)
  • 이를 보완하기 위해 BART는 BERT + GPT의 디코더 구조를 사용하여 성능은 유지하고, 문장생성, 지문해석 등의 태스크에서 큰 성능향상을 보여줌.
  • 기본원리는 denoising autoencoder 방식으로 사전학습이 되는데, BERT의 MLM방식처럼 입력 텍스트에 일정부분 변형 (noise)을 가하고, 이것을 원래대로 복구하는 방식으로 학습이 진행됨.
  • BART의 특징은 BERT는 단어 하나를 masking하였는데, BART에서는 어떤 형태의 변형 (noise) 방법이든 적용 가능하다는 것이다.

7. ELECTRA: BERT에서 학습의 효율성을 높이고자 제안된 모델

  • Masked Language Modeling (MLM) 대신 Replaced Token Detection (RTD) 사용
  • masking 대신 작은 MLM이 대체단어를 생성하면 모델은 이 가짜를 구별해 내는 방식

8. KPF-BERT

  • BERT의 특징은 대량의 데이터를 사전학습하는 모델. 그렇기에 데이터 수집과 모델 트레이닝에 많은 비용과 노력이 발생. 또한 어떤 데이터의 집단이냐에 따라 학습된 모델에 편향성이 생길 수 있음.
  • 하지만 다시 말해 특정 데이터에만 적용되는 모델이라고 가정하면, 같은 계열의 데이터로 사전학습을 진행한 모델이 더 뛰어난 성능을 보일 수 있음.
  • 한국언론진흥재단에서는 언론에 특화된 사전학습된 BERT 모델을 생성함으로써 여러 언론 관련 산업에서 자연어처리 작업에 활용할 수 있는 기반을 만듦. BERT를 빅카인즈 기사 데이터를 활용해 학습시킨 모델.
  • 한국언론진흥재단이 보유한 2000년부터 2021년 8월까지의 빅카인즈 기사 약 4천만 건을 학습, 언론사 및 뉴스 기사 활용 기술에 최적화되도록 개선.

NER(Named Entity Recognition)

  • 자연어 처리 기술 중 하나로, 문장 내에서 특정한 유형의 명칭(개체)을 인식하는 작업.
  • 원리적으로는, 문자열을 입력으로 받아 단어별로 해당되는 태그를 매칭하는 multi-class 분류 작업이라고 할 수 있음.
  • 한국어에 대해서는 국립국어원(5개 태그), 한국해양대학교 자연어처리 연구실(10개 태그), Naver NER Challenge(14개 태그) 등의 데이터셋이 공개되어 있으며, 한국정보기술협회에서 15개의 카테고리(태그)를 한국어 NER의 표준으로 제시하고 있음.
  • (인물, 학문분야, 이론, 인공물, 기관, 지역, 문명, 날짜, 시간, 수량, 이벤트, 동물, 식물, 물질, 용어)
  • KoBERT와 CRF로 만든 한국어 개체명인식기 (BERT+CRF based Named Entity Recognition model for Korean)