본문 바로가기
머신러닝

[머신러닝] 자연어 처리 개요

by whdgus928 2023. 2. 10.

기계의 자연어 처리

영화 추천 프로젝트에 앞서 자연어 처리에 대해 학습해본다.

 

기계가 사람 말을 알아듣게 하기 위해서는 모델을 사용해야한다. 모델은 입력을 받아 어떤 처리를 수행하는 함수이다. 즉 사람 말을 알아듣는 모델을 만들면 되는것이다. 자연어 처리 모델에서 입력은 사람 말, 즉 자연어고 출력은 해당 입력이 특정 범주일 확률이다.

예를 들어 영화 리뷰에서 한 문장을 입력시키면 내부 계산 과정을 거처 해당 문장이 긍정일 확률, 부정일 확률을 출력한다.

 

요즘 가장 인기 있는 모델 종류는 딥러닝인데 그 가운데서도 BERT와 GPT 모델이 주목받고 있다.

 

딥러닝 모델 학습

딥러닝 자연어 처리 모델을 만들기 위해서는 먼저 각 문장에 긍정인지, 부정인지와 같은 '감성'이라는 레이블이 달려있는 학습 데이터를 준비한다. 그리고 학습 데이터를 가지고 모델이 데이터의 패턴을 익힐 수 있게 학습 시킨다.

 

처음에는 '와 이 영화 재밌다' 문장이 어떤 감성인지 모른다. 학습을 통해 긍정 점수는 높이고 부정 점수는 낮춰 문장에 대해 긍정의 패턴을 갖게 만들면 다음에 입력받았을 때 긍정이라고 평가하게 되는 것이다.

 

트랜스퍼 러닝

특정 태스크를 학습한 모델을 다른 태스크 수행에 재사용하는 기법

트랜스퍼 러닝 개념도

태스크 2를 배울때 트랜스퍼 러닝을 활용해 학습 속도를 향상시킬 수 있다. 태스크1은 업스트림 태스크, 태스크2는 다운스트림 태스크라고 부른다.

 

업스트림 태스크

- 다음 단어 맞히기 ex) 티클 모아 __

- 빈칸 채우기 ex) 티클 __ 태산

- 대규모 말뭉치를 가지고 학습하면서 정답인 단어면 해당 확률을 높히고 나머지는 반대로 모델을 업데이트 한다

 

다운스트림 태스크

- 풀어야할 자연어 처리의 구체적인 과제

- 다운스트림 태스크의 학습 방식은 파인튜닝(프리트레인을 마친 모델을 다운스트림 태스크에 맞게 업데이트)

- 문서분류, 자연어 추론, 개체명 인식, 문장 생성

 

모델 학습의 전체 파이프라인

1. 각종 설정값 정하기

  - 러닝 레이트, 배치 크기같은 하이퍼 파라미터 설정

  - 어떤 프리트레인 모델 사용할지, 학습 데이터는 무엇인지

2. 데이터 내려받기

  - korpora 오픈소스를 통해 한국어 말뭉치 내려받기

3. 프리트레인을 마친 모델 준비하기

  - 허깅페이스에서 만든 트랜스포머 오픈소스 사용

4. 토크나이저 준비하기

  - 한 문장은 여러 개의 토큰으로 구성된다. 토큰 분리 기준은 띄어쓰기, 형태소 등 다양하다.

  - 토크나이저: 토큰화를 수행하는 프로그램

  - BPE, 워드피스 알고리즘 사용

5. 데이터 로더 준비하기

  - 파이토치에 데이터 로더 있음

  - 데이터 로더: 데이터를 배치단위로 모델에 밀어 넣어주는 역할

  - 전체 데이터 가운데 일부 인스턴스를 뽑아 배치를 구성

6. 태스크 정의하기

  - 파이토치 라이트닝 라이브러리 사용해 모델 학습, 반복적인 내용 대신 수행해준다

  - lightning 모듈을 상속받아 task를 정의

  - 배치 단위로 모델 학습

7. 모델 학습하기

  - trainer는 파이토치 라이트닝에서 제공하는 객체로 실제 학습을 수행

반응형

댓글