기계의 자연어 처리
영화 추천 프로젝트에 앞서 자연어 처리에 대해 학습해본다.
기계가 사람 말을 알아듣게 하기 위해서는 모델을 사용해야한다. 모델은 입력을 받아 어떤 처리를 수행하는 함수이다. 즉 사람 말을 알아듣는 모델을 만들면 되는것이다. 자연어 처리 모델에서 입력은 사람 말, 즉 자연어고 출력은 해당 입력이 특정 범주일 확률이다.
예를 들어 영화 리뷰에서 한 문장을 입력시키면 내부 계산 과정을 거처 해당 문장이 긍정일 확률, 부정일 확률을 출력한다.
요즘 가장 인기 있는 모델 종류는 딥러닝인데 그 가운데서도 BERT와 GPT 모델이 주목받고 있다.
딥러닝 모델 학습
딥러닝 자연어 처리 모델을 만들기 위해서는 먼저 각 문장에 긍정인지, 부정인지와 같은 '감성'이라는 레이블이 달려있는 학습 데이터를 준비한다. 그리고 학습 데이터를 가지고 모델이 데이터의 패턴을 익힐 수 있게 학습 시킨다.
처음에는 '와 이 영화 재밌다' 문장이 어떤 감성인지 모른다. 학습을 통해 긍정 점수는 높이고 부정 점수는 낮춰 문장에 대해 긍정의 패턴을 갖게 만들면 다음에 입력받았을 때 긍정이라고 평가하게 되는 것이다.
트랜스퍼 러닝
특정 태스크를 학습한 모델을 다른 태스크 수행에 재사용하는 기법

태스크 2를 배울때 트랜스퍼 러닝을 활용해 학습 속도를 향상시킬 수 있다. 태스크1은 업스트림 태스크, 태스크2는 다운스트림 태스크라고 부른다.
업스트림 태스크
- 다음 단어 맞히기 ex) 티클 모아 __
- 빈칸 채우기 ex) 티클 __ 태산
- 대규모 말뭉치를 가지고 학습하면서 정답인 단어면 해당 확률을 높히고 나머지는 반대로 모델을 업데이트 한다
다운스트림 태스크
- 풀어야할 자연어 처리의 구체적인 과제
- 다운스트림 태스크의 학습 방식은 파인튜닝(프리트레인을 마친 모델을 다운스트림 태스크에 맞게 업데이트)
- 문서분류, 자연어 추론, 개체명 인식, 문장 생성
모델 학습의 전체 파이프라인
1. 각종 설정값 정하기
- 러닝 레이트, 배치 크기같은 하이퍼 파라미터 설정
- 어떤 프리트레인 모델 사용할지, 학습 데이터는 무엇인지
2. 데이터 내려받기
- korpora 오픈소스를 통해 한국어 말뭉치 내려받기
3. 프리트레인을 마친 모델 준비하기
- 허깅페이스에서 만든 트랜스포머 오픈소스 사용
4. 토크나이저 준비하기
- 한 문장은 여러 개의 토큰으로 구성된다. 토큰 분리 기준은 띄어쓰기, 형태소 등 다양하다.
- 토크나이저: 토큰화를 수행하는 프로그램
- BPE, 워드피스 알고리즘 사용
5. 데이터 로더 준비하기
- 파이토치에 데이터 로더 있음
- 데이터 로더: 데이터를 배치단위로 모델에 밀어 넣어주는 역할
- 전체 데이터 가운데 일부 인스턴스를 뽑아 배치를 구성
6. 태스크 정의하기
- 파이토치 라이트닝 라이브러리 사용해 모델 학습, 반복적인 내용 대신 수행해준다
- lightning 모듈을 상속받아 task를 정의
- 배치 단위로 모델 학습
7. 모델 학습하기
- trainer는 파이토치 라이트닝에서 제공하는 객체로 실제 학습을 수행
'머신러닝' 카테고리의 다른 글
[머신러닝] 미리 학습된 언어 모델과 트랜스포머 (0) | 2023.02.17 |
---|---|
[머신러닝] 자연어 처리: 문장을 작은 단위로 쪼개기 (2) | 2023.02.14 |
[머신러닝] 자연어 처리 유사도 분석 (0) | 2023.02.13 |
댓글