[NLP] 문서 분류 모델

문서 분류 모델 정리

자연어처리의 예제 중 하나인 문서 분류 모델을 구현하기 전에, 우선 문서 분류 모델에 대해 알아보자.

문서 분류(document classification)란 문서가 주어졌을 때 해당 문서의 범주를 분류하는 과제이다.

본 과제의 예시를 살펴보면

  • 뉴스를 입력하고 정치, 경제, 연예 등 범주를 맞추기

  • 영화 리뷰가 긍정/부정 등 어떤 극성 (polarity)을 가지는지 분류하기

이번 실습에서 사용할 데이터는 네이버 영화 리뷰 말뭉치(NSMC)이다. 이번 실습에서 만들 문서 분류 모델은 영화 리뷰 문장을 입력으로 하고 해당 문장이 속한 극성의 확률을 출력한다. 문서 분류 모델의 출력은 확률값이므로 적당한 후처리 과정을 거쳐 긍정, 부정처럼 사람이 보기에 좋은 형태로 가공한다. 이를 감성 분석 (sentiment analysis)라고 한다.

모델 구조

본 chapter에서 사용하는 문서 분류 모델은 입력 문장을 토큰화한 뒤 문장 시작과 끝을 알리는 스페셜 토큰 CLSSEP를 각각 원래 토큰 시퀀스 앞뒤에 붙인다.

이를 BERT 모델에 입력하고 문장 수준의 벡터(pooler_output)를 뽑는다. 여기에 작은 추가 모듈을 덧붙여 모델 전체의 출력이 [해당 문장이 긍정일 확률, 해당 문장이 부정일 확률] 형태가 되도록 한다.

그림 1. 문서 분류

문서 분류

태스크 모듈

pooler_output 벡터 뒤에 붙는 추가 모듈의 구조는 아래의 그림과 동일하다. 우선 pooler_output벡터 (그림에서 x) 에 드롭아웃을 적용한다. 드롭아웃을 적용한다는 의미는 그림에서 입력 벡터 x의 768개 요솟값 가운데 일부를 랜덤으로 0으로 바꿔 이후 계산에 포함하지 않도록 하는 것이다.

그림 2. 문서 분류 태스크 모듈

문서 분류 태스크 모듈

그 다음 가중치 행렬을 곱해 pooler_output을 분류해야 할 범주 수만큼의 차원을 갖는 벡터로 변환한다 (그림에서 net). 만일 pooler_output벡터가 768차원이고 분류 대상 범주 수가 2개(긍정, 부정)라면 가중치 행렬의 크기는 768 * 2이 된다. 여기에 소프트맥스 함수를 취하면 모델의 최종 출력 (그림에서 y) 이 된다.

이렇게 만든 모델의 최종 출력과 정답 레이블을 비교해 모델 출력이 정답 레이블과 최대한 같아지도록 태스크 모듈과 BERT 레이어를 포함한 모델 전체를 업데이트 한다. 이를 파인튜닝(fine-tuning)이라고 한다.

태그: ,

카테고리:

업데이트:

댓글남기기