GW LABS

Text Summarization (3) - Transfer Learning 본문

MachineLearning

Text Summarization (3) - Transfer Learning

GeonWoo Kim 2020. 9. 18. 14:06

Text Summarization

지난 포스팅

Text Summarization (1) - TextRank 알고리즘

Text Summarization (2) - Sequence to Sequence

 

이전 문장요약 포스팅들에서 TextRank를 이용한 알고리즘과 Sequence to Sequence 모델을 활용하는 방법을 알아보았다. 이번 포스팅에서는 전이학습(Transfer Learning)을 이용하여 문장요약을 수행하는 방법을 알아볼 것이다. 전이학습 또한 이전 포스팅과 같이 딥러닝 모델이다. 어떤 부분에서 개선이 있을 수 있는지 알아보자.

 


 

1. Transfer Learning

전이학습(Transfer Learning)은 이미 학습시켜놓은 모델을 가져와서 비슷한 문제를 변형시켜 학습하는 기법을 말한다. 예를 들어 이미지를 분류하는 작업을 수행해야 할 때, 미리 이미지 분류관련 문제로 학습이 되어있는 VGG16 모델을 사용할 수 있다. 이런 경우 어떤 장점이 있을 수 있을까?

 

첫번째로는 데이터가 적은 상황에서 모델의 성능을 끌어올릴 수 있다. 미리 방대한 데이터로 학습이 완료되고 성능이 검증된 모델들을 사용하기 때문에, 처음부터 모델을 구축하고 실험을 반복하면서 모델의 성능을 끌어올리는 수고를 줄일 수 있다. 두번째는 학습속도가 빠르다는 점이다. 이 부분은 어떻게 모델을 활용하느냐에 따라 달라질 수 있지만, 미리 학습되어 있는 모델을 사용하기 때문에 epoch 수를 줄일 수 있다는 것이다. 따라서 학습속도도 처음부터 구현하는 모델에 비해 빠를 수 있다. 그렇다면 문장요약 작업에서는 어떤 모델을 가져와서 전이학습을 시켜야할까?

 

2. Bert

출처: https://tutorials.pytorch.kr/intermediate/dynamic_quantization_bert_tutorial.html

Bert는 자연어처리 분야에서 높은 성능을 보여주고 있는 문장단위 모델이다. Transformer 모델에서 발전한 형태로, Tensorflow, Pytorch 등 대표적인 프레임워크에서도 사전학습된 모델들을 제공해주고 있다. 최근에는 Huggingface의 Transformers 라이브러리를 사용하면 손쉽게 전이학습 형태로 모델을 구성할 수 있다.

 

Huggingface transformers에는 Bert 이외에도 다양한 모델들을 제공하고 있다. GPT-2, XLM 등의 모델들을 사용해볼 수 있으며, 몇 가지 작업에 한해서는 전이학습 모델을 직접 구성할 필요없이 라이브러리를 사용하는 것만으로 학습을 진행시킬 수 있다. 

 

3. 소스코드와 데이터

blog.json
0.01MB

 

 

TextSummariation(3).ipynb

TextSummariation(3).ipynb. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

위의 소스코드에서는 Colab 환경에서 huggingface의 라이브러리들을 사용해서 위에 첨부한 예제 데이터를 전이학습시키는 예제를 담고 있다. Bert 두 개를 Sequence to Sequence 모델로 연결해 놓은 형태이다. 

위의 소스코드를 활용할 때에 몇 가지 주의할 점이 있다. 첫번째는 예제로 학습시킨 모델이기 때문에 epoch를 200번이나 수행하고 있는데, 실제로 활용할 때에는 데이터를 충분히 확보한 다음 3회 정도만 학습시켜도 성능을 기대할 수 있다. 또한 데이터와 요약작업에 따라서 문장길이 등의 환경설정 값을 변경해줘야 한다.

 

4. 결언

모델들을 처음부터 구축해본 경험이 없는 상태에서 만족할 만한 딥러닝 모델을 배포하기 위해선 전이학습이 가장 좋은 선택인 것 같다. 최근에는 많은 사람들이 자신만의 사전학습 모델들을 공유하고 있어서 전이학습 모델을 구성하기 좋은 환경이 만들어지고 있다. 어려운 문제일수록 사전학습 모델들을 적극 이용해보자.

 

이렇게 3편에 걸쳐 문장요약에 대한 포스팅을 작성해봤다. 머신러닝에 대한 지식이 아직 많이 부족하지만, 문장요약 작업을 수행해야하는 초보자분들에게 큰 도움이 되었으면 한다. 

 

 

 

Comments