열렬히.뛰기

1장 : 자연어처리 개요

머신러닝 & 딥러닝 > 자연어처리 (1) : BERT와 GPT > 1장 : 자연어처리 개요

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

  • 딥러닝: 은닉층(neural net)을 사용.
  • 자연어를 입력받아 확률로 출력한 뒤, 후처리를 하는 구조
  • BERT와 GPT 모델이 대표적인 예시

학습방식

  1. 모델 준비 : 레이블을 달아 놓은 자료가 있어야 한다.
  2. 패턴 학습
  3. 모델의 업데이트
  4. 반복

트랜스퍼 러닝

  • 특정 task를 학습한 모델을 다른 task에 재사용하는 기법
  • 백지 상태보다 모델의 학습 속도가 빨라짐.
  • upstream task를 먼저 하고, downstream task를 하는 방식

Upstream Task

  • 먼저 해결해야 하는 task
  • 대규모 말뭉치의 문맥을 이해하는 과제
    • 다음 단어 맞추기, 빈칸 채우기 등
  • upstream task 진행과정을 프리트레인이라고 부름.

글만 있으면 다량의 학습 데이터를 싼값에 만들수 있다.

이처럼 데이터 내에서 정답을 만들고, 학습하는 과정을 자기지도 학습(self-supervised learning) 이라고 한다.

다음 단어 맞히기 “언어 모델”

  • 다음 단어 맞히기: 특정 단어 다음에 올 단어를 맞추는 것.
    • “티클 모아 ___” 을 맞춰 보시오.
  • 이를 통해 업스트립 태스크를 수행한 모델을 언어 모델이라고 함.

빈칸 채우기와 “마스크 언어 모델”

  • 빈칸 채우기 : 문장 가운데 빈 칸이 있고, 가장 적합한 단어를 맟추는 것
    • “오는 말이 _____야, 가는 말도 곱다.”
  • 이를 통해 업스트립 태스크를 수행한 모델을 마스크 언어 모델이라고 함.

Downstream Task

  • 나중에 진행하는 task
  • 자연어 처리의 구체적인 문제들
  • 문서 분류, 개체명 인식 등

종류

  1. 파인튜닝 : 다운스트림된 task data 전체를 사용. 모델 전체를 Update
  2. 프롬프트 퓨닝 : 다운스트림된 task data 전체를 사용. 모델 일부를 Update
  3. 인컨텍스트 러닝 : 다운스트림된 task data 일부를 사용. 모델 Update 안함.
    1. 제로샷 러닝 : 모델이 바로 다운스트림 task 수행
    2. 원샷 러닝 : 다운스트림된 task data 1건만 참고 후 다운스트림 task 구현
    3. 퓨샷 러닝 : 다운스트림된 task data 일부만 참고 후 다운스트림 task 구현

파인튜닝의 예시

  1. 문서 분류 → 클릭
  2. 자연어 추론 → 클릭
  3. 개체명 인식 → 클릭
  4. 질의응답 → 클릭
  5. 문장생성 → 클릭

학습 파이프라인 소개

과정

  1. 각종 설정값 정하기
    • 모델, 데이터, 학습 결과 저장소 정하기
    • 하이퍼파라미터 설정
  2. 데이터 다운로드
    • 네이버 영화리뷰 말뭉치 이용
  3. 모델 준비
    • 트랜스포머 패키지 사용
  4. 토크나이저 준비
    • 문장을 토큰 시퀀스로 분석하는 토큰화 작업이 필요
    • 이때 사용하는 도구가 토크나이저
  5. 데이터 로더 준비하기
    • 데이터 로더 : 데이터를 배치 단위로 모델에 밀어 넣어 줌.
      • 배치란? 모델의 가중치를 한번 업데이트시킬 때 사용되는 샘플들의 묶음을 의미
      • 인스턴스를 뽑아 배치 구성
      • 여러 인스턴스를 데이터셋이라고 함.
      • 리스트 → 텐서로의 변환
    • pyTorch 사용
  6. task 정의
    • pyTorch lightning 모델을 사용
      • task가 들어가 있으며, 모델, 최적화방법, 학습 과정등이 정의됨.
  7. 모델 학습
    • 배치 단위로 이뤄짐.
      • 입력 → 출력을 정답과 비교 → 차이 최소화 하는 방향으로 업데이트
      • 한 과정을 스텝이라고 함.
    • trainer 사용
  • 패키지 : ratsnlp 사용
  • 여기서는 실제 실습을 진행하지 않음.

개발환경 구성

  • 개발은 Google Colab으로 진행한다.
  • 여기선 구글 드라이브와 연동만 하면 된다.
python
from google.colab import drive
drive.mount("/gdrive", force_remount=True)
python
with open('/gdrive/My Drive/test.txt', 'w') as f:
f.writelines("test")