데이터 한 그릇

텍스트 요약을 위한 BERTSUM 탐색 본문

NLP/구글 BERT의 정석

텍스트 요약을 위한 BERTSUM 탐색

장사이언스 2022. 2. 17. 10:44

텍스트 요약 태스크를 수행하기 위해서 사전 학습된 BERT 모델을 활용해 파인 튜닝을 진행하는 법을 알아본다.

텍스트 요약에 맞춰 파인 튜닝된 BERT 모델을 BERTSUM 모델이라고 한다. (텍스트 요약에 맞춘 파인 튜닝 BERT 모델 : BERTSUM)

 

 

먼저 다양한 텍스트 요약 방식을 이해 (추출 요약, 생성 요약)

 

그리고 밑의 세 가지 추출 요약 수행 법을 배운다.

  • 분류기가 있는 BERTSUM
  • 트랜스포머를 활용한 BERTSUM
  • LSTM을 활용한 BERTSUM

 

그 다음으로는 추출 요약을 수행하기 위해 BERTSUM을 어떻게 활용하는지 알아본다.

그 다음으로 ROUGE 메트릭 : 텍스트 요약 평가 지표를 알아본다. (ROUGE - N, ROUGE - L)

그 다음으로 BERTSUM 모델의 성능을 확인한다.

 

마지막으로 BERTSUM 학습 방법을 살펴본다. 총 정리하면 다음과 같다.

 

  • 텍스트 요약
  • 텍스트 요약에 맞춘 BERT 파인 튜닝
  • BERT를 활용한 추출 요약
  • BERT를 활용한 생성 요약
  • ROUGE 평가 지표 이해하기
  • BERTSUM 모델의 성능
  • BERTSUM 모델 학습

텍스트 요약

  1. 텍스트 요약 : 긴 텍스트의 문서 => 짧은 문장으로 요약하는 과정.
  2. 텍스트 요약의 두 가지 유형
    • 추출 요약
    • 생성 요약
  3. 추출 요약(Extractive summarization)
    • 주어진 텍스트에서 중요한 문장만 추출해 요약하는 과정을 의미.
    • 많은 문장이 포함된 문서에서 문서의 본질적인 의미를 나타내는 문장만 추출해서 문서를 요약.
  4. 생성 요약(abstractive summarization)
    • 텍스트를 의역(pparaphrasing) 해 요약을 만든다.
    • 의역이란 텍스트의 의미를 더 명확하게 하기 위해서 다른 단어를 사용해 주어진 텍스트를 새롭게 표현하는 것(주어진 텍스트의 의미만 지닌 다른 단어 사용)

텍스트 요약에 맞춘 BERT 파인 튜닝

  • 추출 요약을 위해 BERT를 어떻게 파인 튜닝하는지 알아보자.
  • 생성 요약을 위해 BERT 파인 튜닝을 어떻게 하는지 알아보자.

 

BERT를 활용한 추출 요약

사전 학습된 BERT를 이용해서 추출 요약을 하려면, BERT 모델 입력 데이터 형태를 수정해야 한다.

본래의 BERT 모델의 입력 데이터는 다음과 같다.

 

"Paris is a beautiful city" , "I love Paris"

 

  1. 먼저 입력 문장을 토큰화 한다.
  2. 첫 번째 문장의 시작에 cls 토큰을 추가하고 문장이 끝날 때마다 sep 토큰을 추가한다.
    • [cls, Paris, is, a, beautiful, city,sep, I, love, paris, sep]
  3. 토큰 임베딩, 세그먼트 임베딩, 위치 임베딩에 각각 넣어주고 3개의 임베딩 형태를 얻는다.
  4. 이 세가지 임베딩 값을 더해주고 BERT 에 입력한다.
    • 이 세 가지 임베딩 값을 입력값으로 받은 BERT는 모든 토큰의 표현 벡터를 출력한다.

이제 사전 학습된 BERT 모델을 텍스트 요약을 위해 사용하기 위해서 본래의 BERT 입력 데이터를 변화시켜준다.

BERT는 모든 토큰의 표현을 얻는다는 것을 우리는 알고 있다.

하지만 추출 요약 태스크는 모든 토큰의 표현을 얻을 필요가 없다. 추출 요약 태스크는 문장의 표현만 얻으면 된다.

추출 요약 태스크는 중요한 문장은 그대로 남겨두고 중요하지 않은 문장은 지워버리는 형식이기 때문이다.

자 입력 데이터를 바꿔보자.

  1. 우리는 BERT 모델에서 문장의 표현을 담고 있는 토큰을 cls 라고 알고 있다. 하지만, 텍스트 요약의 추출 요약은 모든 문장의 표현이 필요하므로,나머지 문장이 끝날 때마다 sep 을 넣어주는건 동일하다.
  2. 본래는 [cls, Paris, is, a, beautiful, city,sep, I, love, paris,sep] 였지만, [cls, Paris, is, a, beautiful, city,sep, cls,I, love, paris, sep] 로 바꿀 수 있다.
  3. 본래의 입력 데이터를 변형시켜준다. 본래처럼 첫 문장이 시작할때만 cls 를 넣는 게 아니라, 문장이 시작할 때마다 cls 를 넣어준다.
  4. 입력 토큰을 토큰, 세그먼트, 위치 임베딩 레이어에 입력하고 입력 토큰을 임베딩 형태로 변환한다.
  5. 토큰 임베딩 레이어에 집어 넣기
  6. 세그먼트 임베딩 레이어에 집어 넣기
    • 본래는 두 개의 문장을 토큰하 한 후 , 토큰 x가 문장 a에 속하면 E_a로 매핑, x가 문장 b에 속하면 E_b로 매핑했다.
    • 하지만 텍스트 요약을 위해서는 입력 문장이 2개 이상 들어간다. 그러면 어떻게 문장 내 토큰들을 E_a, E_b로 매핑할까?
    • **인터벌 세그먼트 임베딩** 사용
      • 홀수번째 문장에서 발생한 토큰 E_a로, 짝수번째 문장에서 발생한 토큰을 E_b로 지정한다.
      • 문장 1의 모든 토큰은 E_A, 문장 2의 모든 토큰은 E_b, 문장 3의 모든 토큰은 E_a, 문장 4의 모든 토큰은 E_b
  7. 위치 임베딩 레이어에 집어넣기
  8. BERT에 위 과정을 거친 입력값을 넣어주고 모든 토큰에 대현 표현 값을 얻는다.
  9. 따라서 각 문장에 대한 cls 표현 값을 얻을 수 있다.
  10. BERT 모델을 사용해, 입력 데이터 형식을 변경해서 표현한 모델을 BERTSUM 이라고 부른다.

자 그럼 여기까지 사전 학습된 BERT모델을 이용해서(입력데이터 변경) 각 문자의 표현을 얻는 방법을 알아봤다.

그렇다면 어떻게 추출 요약 태스크에 이를 적용할 수 있을까?

 

분류기가 있는 BERTSUM

 

 

추출요약은 중요한 문장만 선택해서 요악을 생성한다.

 

위에서 각 문장의 표현을 얻었는데, 이 문장의 표현을 간단한 이진 분류기(binary classifier) 에 공급하고, 분류기에서 문장의 중요성 여부를 판단한다.(분류기는 포함시킬지 안할지 확률을 반환)

이 분류 레이어를 **요약 레이어(summarization layer)** 라고 한다.

 

 

각 문장의 cls 표현 값이 순서대로 R_1, R_2, R_3 이라고 할 때, 각 표현의 중요성 확률을 Y_1, Y_2, Y_3 로 나타낸다.

 

확률식은 시그모이드 함수를 써서 다음과 같다.

 

 

Y_i = 시그모이드(W_o * R_i + b_o)

 

 

 

예측확률 Y_i와 실제 Y의 확률의 분류 손실을 최소화 하는 방향으로 사전 학습된 BERT 모델과 요약 레이어를 함께 학습시킨다.

 

트랜스포머와 LSTM을 활용한 BERTSUM

 

 

BERT 모델을 활용해 입력 데이터 형식을 변경해서 만든 텍스트 추출 모델인 BERTSUM 을 지금까지 살펴봤다.(이걸로 문장의 표현값을 얻었다.)

 

이때 분류기에서 시그모이드를 사용하는 대신 다른 두 가지 접근 방법을 사용할 수 있다.

  • 문장 간 트랜스포머(inter-sentence transformer)
  • LSTM(long-short memory)

BERT에서 얻은 문장에 대한 표현을 시그모이드 분류기에 집어넣는 대신에 트랜스포머와 LSTM에 입력해 더 나은 결과를 얻으려고 한다.

(문장 표현을 트랜스포머, LSTM 에 집어넣는다.)

 

 

BERT에서 얻은 문장 표현값을 트랜포머에 집어넣는다.

 

트랜스포머는 위치 정보를 임베딩값에 추가하기 위해서 위치 인코딩이 존재한다.

위치인코딩 PosEmb 를 시행하고 입력 임베딩값에 위치 정보를 넣어준다.

최종적인 입력값을 트랜스포머에 집어넣으면 트랜스포머의 인코더에 들어가는 것과 같다.

트랜스포머의 인코더는 서브레이어로 구성되어 있는데 한 개의 인코더는 두 개의 멀티 헤드 어텐션과 한 개의 피드포워드 레이어를 가지고 있다.

(디코더와 다르다.)

 

 

정규화 과정도 거치면서 최종 인코더 레이어에서 표현한 은닉 상태 표현값이 존재한다.

 

이 값을 시그모이드 분류기에 입력해 각 문장을 요약에 포함시킬지 여부의 확률을 얻는다.

 

BERT에서 얻은 문장 표현을 직접 사용하는 대신에, 트랜스포머의 인코더에 넣어 활용한다.

 

LSTM을 활용한 BERTSUM

 

 

동일하게 BERT를 이용해서 얻은 문장 표현을 LSTM 모델에 집어 넣어서 은닉 상태를 얻게 되고, 이 은닉 상태를 분류기에 입력해서 그 문장을 포함할지 안할지의 확률을 출력한다.

 

 

 

지금까지 BERTSUM 을 활용하는 방법을 알아봤다.

 

  • 단일 분류기를 활용한 BERTSUM
  • 문장 간 트랜스포머를 활용한 BERTSUM
  • LSTM을 활용한 BERTSUM

BERT를 사용한 생성 요약

생성 요약은 주어진 텍스트를 의역해서 요약 문장을 생성한다.

생성 요약을 수행하는 데는 트랜스포머의 인코더-디코더 아키텍처를 사용한다.

이때 트랜스포머의 인코더로 BERT 모델을 사용할 수 있다.

 

 

issue :

 

인코더는 사전 학습되어 있지만 디코더는 초기화 상태다.

따라서 파인 튜닝 중에 불일치가 발생한다.(과적합, 과소적합 발생 가능하다.)

 

 

solution:

 

아담 옵티마이저 2개를 사용.

하나는 인코더에, 나머지 하나는 디코더에 사용.

(인코더와 디코더에 서로 다른 학습률 적용하는 것과 같다.)

=> 인코더에는 이미 사전 학습이 되어있기 때문에 학습률을 줄이고 좀 더 부드럽게 감쇠하도록 설정한다.

###


ROUNG 평가 지표 이해하기

텍스트 요약 태스크를 평가하는 데는 ROUNGE(Recall -Oriented Understudy for Gisting Evaluation) 라는 평가 지표를 사용한다.

ROUNGE 의 다섯 가지 평가 지표

  • ROUNGE - N
  • ROUNGE - L
  • ROUNGE - W
  • ROUNGE - S
  • ROUNGE - SU

 

ROUNGE-N 과 ROUNGE - L 만 중점적으로 다룸.

 

 

ROUNGE-N 메트릭 이해하기

후보 요약(예측 요약) - 참조 요약(실제 요약) 간의 n-gram 재현율이다.

 

재현율 = 서로 겹치는 n-gram의 수 / 참조 요약의 n-gram 의 수

 

 

ROUNGE-1

 

 

rounge-1은 후보 요약과 참조 요약 간의 유니그램 재현율이다.

 

  • 후보 요약 : Machine learning is a seen as a subset of artificial intelligence
  • 참조 요약 : Machine Learning is a subset of artificial intelligence

ROUNGE-1 계산 :

재현율 = 서로 겹치는 유니그램 수 / 참조 요약의 유니그램 수

  • 후보 요약 유니그램 : Machine,learning,is,seen,as,a,subset,of,artificial,intelligence
  • 참조 요약 유니그램 : Machine,Learning,is,a,subset,of,artificial,intelligence

 

ROUNGE - 1 의 재현율 = 8/8 = 1

 

 

ROUNGE -2

후보 요약과 참조 요약 간의 바이그램(bigram) 재현율이다.

  • 후보 요약 : Machine learning is seen as a subset of artificial intelligence
  • 참조 요약 : Machine Learning is a subset of artificial intelligence.

재현율 = 서로 겹치는 바이그램 수 / 참조 요약의 바이그램 수

  • 후보 요약 바이그램 : (machine learning), (learning is), (is seen), (seen as), (as a), (a, subset), (subset, of), (of, artificial), (artificial intelligence)
  • 참조 요약 바이그램 : (machine learning), (learning is), (is a),(a subset), (subset, of), (of artificial),(artificial, intelligence)

###

재현율 = 6 / 7 = 0.85

이렇게 n그램에 대한 ROUNGE-N 점수를 계산할 수 있다.

(유니그램, 바이그램)

 

ROUNGE -L 이해하기

가장 긴 공통 시권스(LCS) 를 기반으로 한다.

두 시퀀스 사이의 LCS 란 최대 길이를 가지는 공통 하위 시퀀스

 

 

재현율(R_lcs) = LCS(후보, 참조) / 참조 요약의 전체 단어 수

 

정밀도(P_lcs) = LCS(후보, 참조) / 후보 요약의 전체 단어의 수

 

 

F - measure = (1 + b^2)R_lcs * P_lcs / R+lcs + b^2 * P_lcs

 

(b는 정밀도와 재현율의 중요도를 조절하는데 사용.)

 

F - measure 이 바로 ROUNGE - L

 


BERTSUM 모델의 성능

추출 요약에서는 트랜스포머가 가장 성능이 좋게 나왔고

 

생성 요약에서는 BERTSUMABS 에서는 ROUNGE -1 의 평가지표가 가장 크게 나왔다.

 


마치며

텍스트 요약이 무엇이고 그 종류(추출, 생성)

사전 학습된 BERT를 이용한 BERTSUM의 작동 원리

분류기, 트랜스포머, LSTM 결합해 사용하는 법

 

생성 요약은 트랜스포머의 인코더 디코더 아키텍처 형식 사용

인코더는 사전 학습된 BERTSUM 사용.

학습률을 인코더와 디코더에 다르게(디코더는 사전학습 안되어 초깃값이므로)

 

ROUNGE 평가 지표

ROUNGE - N(유니그램, 바이그램) : 재현율

ROUNGE - L 가장 긴 공통 하위 시퀀스를 기반

 

 

 

 

 

 

 

'NLP > 구글 BERT의 정석' 카테고리의 다른 글

다른 언어에 BERT 적용하기  (0) 2022.02.21
BERT 파생 모델 2 : 지식 증류 기반  (0) 2022.02.16
BERT 파생 모델  (0) 2022.02.15
BERT 활용하기  (0) 2022.02.10
BERT 이해하기  (0) 2022.02.09
Comments