다시 이음

Week1-4. 리뷰 긍정부정 판별 모델 설정 프로세스 본문

Pre_Onboarding by Wanted(자연어 처리)

Week1-4. 리뷰 긍정부정 판별 모델 설정 프로세스

Taeho(Damon) 2022. 2. 24. 20:40

한국 스트리밍 서비스 (왓*, 쿠*플레이, 티*)에서 시청자가 영화를 보고 남긴 리뷰를 긍정과 부정으로 나누어 볼 수 있는 대시보드를 만들려고 합니다.

리뷰 긍부정 판별 모델을 만들려고 할 때, NLP 리서처/엔지니어로서 어떤 의사 결정을 할 것인지 각 단계에 맞춰 작성해봄으로써 실무에서의 프로세스를 간접 경험 해봅니다. (단, 수집된 리뷰 데이터의 개수가 1,000개 미만이라고 가정합니다.)

 

1. 문제 정의

풀고자 하는 문제를 정의하세요. 또한 데이터 생성 시 고려해야할 사항이 있다면 무엇인지 설명하세요. (예, 만약 긍정 리뷰가 부정 리뷰보다 많은 경우 어떻게 해야 할까?, 길이가 정말 긴 리뷰는 어떻게 전처리 해야 할까?)

 

- 문제 정의

 

한국 OTT 서비스 이용 고객이 남긴 영화리뷰를 긍정,부정 판별기를 통해 구분함으로써 영화 추천 시스템, 마케팅 등에 활용할 수 있게 됩니다. 그러나, 영화 리뷰 데이터는 너무 많은 상태이기때문에 인간이 하나하나 구분할 수 없고, 일반 머신러닝을 통해서는 정확한 구분을 할 수 없기때문에 딥러닝을 활용하여 많은 데이터를 정확하게 구분할 수 있는 해결방안이 필요합니다.

 

- 데이터 생성 시 고려사항

 

  1. 리뷰 데이터의 길이 :
    데이터의 길이가 긴 경우에 RNN 모델을 사용하게 된다면 기울기 소실로 인한 장기 의존성(Long-term dependency)문제가 생기게 됩니다. 장기 의존성을 보완하기 위하여 LSTM, GRU 모델이 개발되었지만 40개가 넘는 단어들의 집합(문장)에 적용하게 되면 똑같이 문제가 발생하게 됩니다. 추후 더 발전된 Attention 방법을 사용하는 모델을 사용하는 것을 고려해야합니다. 혹은 데이터를 제거 하는 방법도 고려해야합니다.

  2. 데이터 불균형 :
    준비된 데이터가 불균형할 경우에 충분히 학습이 이루어지지 않을 수 있습니다. 즉, 한쪽으로 치우친 부분에 대해 과적합 문제가 발생합니다. 예를들어 0인 값이 90%, 1인 값이 10%인 불균형 데이터인 경우에 모든 답을 0으로 두면 무려 정확도가 90%가 됩니다. 이러한 문제를 해결하기 위해서 불균형을 바로잡아주는 Weight balancing,Oversampling & Undersampling 과 같은 방법을 사용할 수 있습니다.

  3. 이상치 제거 :
    모든 데이터가 정확하게 같은 영화의 리뷰가 아닐 수도 있습니다. 동명의 영화에 리뷰를 잘못 작성한 경우, 리메이크작과 원작을 헷갈려 잘못 작성한 경우 등과 같이 이상치가 존재할 수 있습니다. 또한 영화 리뷰에 홍보목적의 글, 과도하게 영화에 부정적인 리뷰 같이 긍정,부정 판별에 신뢰도를 낮출 수 있는 항목은 제외하는 것이 좋습니다.

  4. 데이터 전처리 :
    해시태그(#)와 같이 특수문자를 포함하고 있는 경우, ㅠㅠ, ㅡㅡ, 0o0 등과 같이 문자로 나타낼 수 있는 이모티콘의 경우, 의미 설명을 위한 한자어, 영화 현지 외국어가 포함되어있는 경우,  에도 전처리가 필요합니다.


2. 오픈 데이터 셋 및 벤치 마크 조사

리뷰 긍부정 판별 모델에 사용할 수 있는 한국어 데이터 셋이 무엇이 있는지 찾아보고, 데이터 셋에 대한 설명과 링크를 정리하세요. 추가적으로 영어 데이터셋도 있다면 정리하세요.

 

(1) 네이버 영화 리뷰 데이터셋(Naver sentiment movie corpus v1.0)

 

링크 : https://github.com/e9t/nsmc

 

대표적인 한국어 감성분석 데이터셋입니다.

 

id, document, label열로 구성되어있습니다.

  • id: The review id, provieded by Naver
  • document: The actual review
  • label: The sentiment class of the review. (0: negative, 1: positive)

총 200,000개의 영화리뷰를 포함하고 있습니다.

  • ratings.txt: All 200K reviews
  • ratings_test.txt: 50K reviews held out for testing
  • ratings_train.txt: 150K reviews for training

모든 리뷰는 140자 이내의 길이를 가지고 있고 긍정,부정 레이블링된 데이터가 1:1 분포를 가지고 있습니다.

 

(2) SST(Stanford Sentiment Treebank) - GLUE

 

링크 : https://nlp.stanford.edu/sentiment/

 

Stanford Sentiment Treebank는 완전한 분석을 허용하는 완전히 레이블이 지정된 parse 트리가 있는 코퍼스입니다 . 

코퍼스는 Pang and Lee(2005)가 소개한 데이터셋을 기반으로 하며 영화 리뷰에서 추출한 11,855개의 단일 문장으로 구성되어 있습니다. Stanford parser로 구문 분석되었으며 해당 구문 분석 트리에서 총 215,154개의 고유한 구문이 포함되어 있으며 각 구문에는 3명의 심사위원이 주석을 달았습니다.

 

레이블링된 클래스가 5개인 데이터셋을 SST-5라고 하고 각 문구는 부정적 , 다소 부정적 , 중립적 , 다소 긍정적 또는 긍정적 으로 분류 됩니다.

레이블링된 클래스가 2개인 데이터셋을 SST-2라고 하고 전체 문장에 대한 긍정, 부정으로 분류됩니다.

 


3. 모델 조사

Paperswithcode(https://paperswithcode.com/)에서 리뷰 긍정, 부정 판별 모델로 사용할 수 있는 SOTA 모델을 찾아보고 SOTA 모델의 구조에 대해 간략하게 설명하세요.( 키워드 중심 )

 

 

SOTA 모델 : SMART-RoBERTa Large

 

위의 모델은 이름에서 보이듯이 SMART 기법 + RoBERTa + Large 의 합체입니다.

 

 

RoBERTa(A Robustly Optimized BERT Pretraining Approach)

 

BERT의 업그레이드 버전으로 기존의 BERT가 undertrained 되었다는 것을 인정하는 것부터 시작합니다.

 

BERT에서 업그레이드 된 부분

 

1) Dymanic masking (오리지널 BERT의 masking은 STATIC으로 분류) mask의 position이 다이나믹하게 변경합니다.

2) BERT에서 짧은 문장으로 주로 이용했지만 FULL-SENTENCES 로 학습을 진행합니다.

3) NSP(Next Sentence Prediction)를 사용하지 않고 중간에 짧은 길이의 sequence가 들어가는 일 없이, 오로지 full max-length 512 tokens로만 학습을 진행 합니다.

4) 기존 사전 학습된 16GB보다 큰 160GB로 사전학습을 진행합니다. 기존보다 큰 미니배치 ,오랜 steps 동안 훈련을 하여 성능을 높입니다.

5) Byte-pair Encoding(BPE)은 Word 단위와 Character 단위의 중간에 있는 text encoding방식, BERT(30k)보다 큰 사전(50k)를 사용해서 성능을 높입니다.

 

 

Large

 

base는 인코더 12개,Large는 인코더 24개를 쌓아 만든 RoBERTa입니다.

 

 

SMART(SMoothness-inducing Adversarial Regularization and BRegman pRoximal poinT opTimization


SMART는 Language Model이 대용량 Corpus를 사용한 Pre-Training을 위해 매우 많은 Parameter를 보유하고 있지만, Fine-Tuning을 수행할 때에는 데이터의 수가 많지 않기 때문에 너무나도 많은 Parameter로 인한 Overfitting의 위험성을 언급합니다.

 

이를 방지하기 위해 Smoothness-Inducing Adversarial Regularization과 Bregman Proximal Point Optimization을 도입합니다.

Smoothness-Inducing Adversarial Regularization은 Input Embedding에 Noise를 부과했을 때, Output의 분포가 Noise를 부과하지 않은 Output의 분포와 유사하도록 제어합니다. 이를 통해 매우 많은 Parameter를 보유하고 있는 Model의 급진적인 Output 변화를 방지하여, Model의 Complexity를 제어합니다.

Bregman Proximal Point Optimization은 기존 Parameter를 이용하여 산출된 Output과 새롭게 Update될 Parameter를 이용하여 산출된 Output의 분포 차이를 줄이도록 제어합니다. 이를 통해 매우 많은 Parameter를 보유하고 있는 Model의 급진적인 Update를 방지합니다. 저자들은 학습 속도를 위해 Momentum을 도입한 Momentum Bregman Proximal Point Optimization을 사용합니다.

SMART는 Single Model을 기준으로 3개의 GLUE Subtask에서 약 30배의 Parameter 수의 차이를 보이는 T5를 상회하는 성능을 기록하였고, MT-DNN과의 Ensemble을 통해 GLUE Benchmark 평균 성능에서 T5를 상회하는 성능을 기록하고, State-of-the-art를 갱신하였습니다.

 


4. 학습 방식

 

딥러닝 (Transfer Learning)


사전 학습된 모델을 활용하는 (transfer - learning)방식으로 학습하려고 합니다. 이 때 학습 과정을 간략하게 서술해주세요. (예. 데이터 전처리 → 사전 학습된 모델을 00에서 가져옴 → …)

 

(1) 데이터 전처리

 

특수기호 및 이상치 제거, 차원줄이기, 불용어(Stop words) 처리, 통계적 트리밍(Trimming),어간 추출(Stemming)과 표제어 추출(Lemmatization)와 같은 방법을 통해 전처리를 실시합니다.

 

(2) 토큰화(tokenization)

 

딥러닝 모델은 텍스트 원본을 입력값으로 가지지 못하기 때문에 벡터화를 시켜줘야 합니다.

그를 위해서 단어,문자, n-그램 단위(토큰)로 나누는 작업을 토큰화라고 합니다.

 

(3) 단어 임베딩(word embedding)

 

위에서 토큰화를 거친 토큰을 딥러닝 모델이 이해할 수 있도록 수치형 텐서로 변환시켜주는 과정입니다.

직접 데이터셋을 통한 단어 임베딩 혹은 사전학습된 단어 임베딩을 불러와서 사용합니다.

 

(4) 딥러닝 모델 적용하기

(5) 딥러닝 모델 튜닝

(6) 딥러닝 평가

 


5. 평가 방식

긍부정 예측 task에서 주로 사용하는 평가 지표를 최소 4개 조사하고 설명하세요.

 

  • 정확도(Accuracy) :
    '전체 예측 개수’와 ‘전체 예측 중에서 실제로 맞춘 참True 개수’의 비율을 나타내는 평가지표입니다.
  • 정밀도(Precision) :
    모델이 어떤 감정이 있다고 예상한 모델이 실제로 감정이 일치하는지를 확인하는 평가지표입니다.
  • 재현율(Recall) :
    실제 감정이 포함된 문서에서 모델이 제대로 감정으로 평가된 문서의 수를 측정합니다. 이는 시스템이 중립성을 얼마나 정확하게 결정하는지로 볼 수 있습니다. 일반적으로 시스템이 점점 더 많은 단어와 언어 집합을 이해해야 하기 때문에 광범위한 주제의 테스트에서 높은 성능은 매우 어렵습니다.
  • F1-score :
    Precision과 Recall의 조화평균입니다.
    재현율과 정밀도는 상충되는 개념으로 이진분류에서 정확도가 낮아지더라도 적절한 F1-score를 찾는 것이 더 좋은 모델을 만들게 됩니다.

 

Loss function : binary-Crossentropy

 

 

'Pre_Onboarding by Wanted(자연어 처리)' 카테고리의 다른 글

BERT 모델 임베딩 이해하기  (0) 2022.03.01
Pytorch - 기초 구조  (0) 2022.03.01
Week 1-3. NLG 과제  (4) 2022.02.23
NLG 란?  (0) 2022.02.23
Week 1-2 NLU 과제  (4) 2022.02.22