[NLP] BERT & GPT 기반 자연어 처리_ 01 자연어 처리

JAsmine_log·2024년 5월 24일

NLP(Natural Language Processing)

01 자연어 처리

01-1 딥러닝기반 자연어처리 모델

기계의 자연어처리

컴퓨터는 인간의 자연어(natural language)를 계산(computation) 또는 처리(processing)하며, 이를 기계의 자연어처리라고 할 수 있다.
기계가 사람말을 알아 듣는 것은 입력(input)을 받아 처리하는 함수(function), 즉 모델(model)을 이용하기 때문이다. 모델의 출력은 확률(probability)이고, 어떤 사건이 나타날 가능성을 "0~1" 값으로 수치화하여 특정 범주의 값으로 반환하는 것이다.

자연어처리 모델
자연어를 입력받아 특정 범주의 확률로 반환하는 확률 함수이다.

모델의 종류

  • 딥러닝(deep learning) : 데이터 패턴을 스스로 학습하여 익히는 것으로, hidden layer을 많이 쌓아(deep) 사용한다는 의미이다. 딥러닝 모델의 출력은 확률을 후처리(post processing)하여 반환한다.
    • GPT(Generative Pre-trained Transformer)
    • BERT(Bidrectional Encoder Representation)

자연어처리 분류 종류

  • 문서 분류(document classification)
  • 문장 쌍 분류(sentence pair classification)
  • 개체명 인식(named entity recognition)
  • 질의응답(question answering)
  • 문장생성(sentence generation)

딥러닝 모델 학습

딥러닝 자연어처리 모델을 학습하기 위해서는 데이터(data)를 학습과 테스트용으로 구분하여 준비한다. 이 때, 데이터의 정보를 구분할 수 있도록 레이블(label)을 달아준다. 이후, 준비한 데이터를 모델(model)에 학습(training)시켜 패턴(pattern)을 스스로 익히게 한다.

f(x)=y,x=자연어,y:감성분류=긍정,중립,부정f(x)=y, x=자연어, y:감성분류={긍정, 중립, 부정}
f(좋아요)=긍정f(좋아요)=긍정
f(괜찮아요)=중립f(괜찮아요)=중립
f(그저그래요)=부정f(그저그래요)=부정

위와 같은 형태의 데이터를 준비하여 계속 학습해주면, 해당 단어나 문장을 학습하여 특정 입력 x에 대한 y 출력을 반환한다.이러한 학습을 통해서 목적하는 출력에 차이가 있거나, 문제를 풀지 못하거 경우에는 모델을 조정하여 업데이트한다.

즉, 학습이란 출력이 정답에 가깝도록 모델을 업데이트하는 과정이다.

01-2 Transfer learning

Transfer Learning

특정 택스크를 학습한 모델을 다른 태스크 수행에 재수행하는 것이다. 즉, 이전에 학습한 지식이이나 경험을 새로운 지식이나 경험을 학습할 때 도움을 주는 것이다. 이러한 것을 지식 전이(knoweldge transfer)라고 한다.

[ 데이터1 -> 모델 -> 태스크1]

[ 데이터2 -> 모델 -> 태스크2]

트랜스퍼 러닝의 장점은, 기존 모델 학습 속도보다 빠르다는 점이다. 태스크1은 업스트림 태스크(upstream task)이고, 태스트2는 다운스트림 태스크(downstream task)로 이와 반대되는 개념이다.

  • 태스크1: 대규모 말뭉치의 문맥이해

    • 다음단어 예측, 빈칸 채우기 등
  • 태스크2: 자연어 처리의 구체적인 문제들

    • 다음단어 예측, 빈칸 채우기 등

Upstream Task

Transfer Learning의 핵심은 업스트림 태스크와 프리트레인이다. 자연어의 문맥(context)를 내재화한 모델을 다양한 다운 스트림 태스크에 적용해 성능을 향상시켰다.

  • 다음 단어 예측 : (GPT 계열, 언어 모델=language model) 모델이 대규모 말뭉치를 통해 다음단어를 예측하는 과정을 반복적으로 수행하였을 때, 다음에 어떤 단어가 오는 것이 자연스러운지 알수 있게 한다.
    • 티끌 모아 (____)
  • 빈칸 채우기 : (BERT 계열, 마스크 언어 모델=mask language model) 모델이 대량의 데이터로 빈칸 채우기를 반복하며 학습하면, 압뒤 문맥을 보고 적합한 단어를 알 수 있다.
    • 티끌 (____) 태산

Downstream Task

모델을 업스트림 태스트로 프리트레인하면, 다운스트림 태스크를 잘 하기 때문이다. 다운스트림 태스크는 프리트레인한 모델의 구조를 바꾸지 않고 그대로 사용하거나 태스크 모듈을 추가하여 사용한다. 다운 스트림태스크는 자연어를 입력받아 분류하는 것이 목적이며, 자연어 출력이 특정 범주의 확률로 반환되도록 한다. 다운스트림 태스크 학습은 파인튜닝(fine tuning)을 통해 프리트레인한 모델을 다운스트림 태스크에 맞게 업데이트 한다.

이러한 과정을 통해서 문서 분류, 자연어 추론, 개체명인식, 질의응답, 문장생성을 할 수 있다.

다운스트림 학습 방식(Tuning & Learning)

Fine tuning
다운스트림 태스크 데이터의 전체를 사용하여, 모델 전체를 업데이트
Prompt tuning
다운스트림 태스크 데이터의 전체를 사용하여, 모델 일부를 업데이트

In-context learning
다운스트림 태스크 데이터의 일부를 사용하고, 모델은 업데이트하지 않음

  • Zero-shot learning
    다운스트림 태스크 데이터를 전혀 사용하지 않고, 모델이 바로 다운 스트림 태스크를 수행
  • One-shot learning
    다운스트림 태스크 데이터를 한 건만 사용하여, 모델은 한 건의 데이터가 어떻게 수행되는지 참고하여 다운스트림 태스크를 수행
  • Few-shot learning
    다운스크림 태스크 데이터를 몇 건만 사용하여, 모델은 몇 건의 데이터가 어떻게 수행되는지 참고하여 다운스트림 태스크를 수행

01-3 학습 파이프라인

학습 파이프라인

각종 값 설정
=> 데이터 다운
=> 프리트레인 모델 준비
=> 토크나이저 준비
=> 데이터 로더 준비
=> 태스크 정의
=> 모델 학습

값 설정

모델을 만들기 위해 여러 값을 설정해야한다. 이 때, 프리트레인 모델, 학습 데이터, 학습 결과 저장 등을 결정한다.
Hypter Parameter

  • 모델 구조와 학습 등에 직접 영향을 주는 값
  • learning rate, batch size 등

Data download

  • Local 저장소 또는 웹 저장소에서 데이터를 로드

Preparing Pre-trained model

  • 허깅페이스(huggingface) 등에 업로드된 모델을 활용할 수 있음
  • Transformers, kcbert-base 등

Preparing Tokenizer

  • 토큰(token)은 문장보다 작은 단위로, 자연어 처리 모델의의 입력 단위로 사용됨
  • 토큰 분리 기준은 문장 띄어쓰기, 형태소 단위(morpheme)등 다양한 기준으로 나뉠 수 있음
  • 토크나이저(tokenizer)는 문장을 토큰 시퀀스(token sequence)로 분석기 위해 토큰화(tokenzation) 과정을 수행하는 프로그램

Preparing Data Loader

  • 파이토치(pytorch) 데이터로더를 정의하여 데이터를 입력
  • 데이터 로더(data loader)는 batch 단위로 데이터를 입력하고, 샘플(인스턴스 추출)하여 배치를 구성
  • 데이터셋(dataset)은 데이터 구성 요소의 하나로, 문서와 레이블을 보유
  • batch는 샘플한 데이터의 토큰 수가 모두 같아야 하고, 이러한 정비를 통해서 최종으로 입력을 주는 것을 collate라고 함
  • collate는 파이썬 리스트에서 파이토치 텐서로 변환하는 과정을 포함

Defining tasks

  • 모델을 학습하기 위해 반복하는 일련의 과정인 스텝(step)이라고 하며, 태스크(task)는 하나의 스텝에서 벌어지는 일들을 정의함
  • 모델 학습은 batch단위로 이루어지며, 모델 입력에 대한 출력의 값을 정답과 비교해서 차이를 계산(truth-actual)하여, 차이를 최소화하도록 학습
  • 최적화(optimizaion)은 옵티마이저(opimizer)나 러닝 레이트 스케줄러(learning rate scheduler)를 통해서 특정 조건에서 최대 또는 최소가 되도록 하는 과정

Training the Model

  • Trainer를 통해서 실제 학습을 수행
  • 하드웨어 설정, 학습 기록 로깅, 체크포인트 저장 등을 자동으로 수행

Reference
[1] 이기창, DO it! BERT와 GPT로 배우는 자연어 처리 - 트랜스포머 핵심 원리와 허깅페이스 패키지 활용법(한국어 말뭉치)

profile
Everyday Research & Development

0개의 댓글