15. 전이학습 (Transfer Learning)

이번 장에서는 전이학습에 대해 살펴보겠습니다. 전이학습은 자연어처리 대회에서 자주 사용되는 기법입니다.

최근 NLP 모델들의 복잡도가 증가함에 따라 학습 시간 및 학습시 요구되는 장비의 사양이 증가했습니다. 2018년에 구글에서 발표한 BERT는 3억 4천만개의 변수를 학습해야 합니다. 구글은 Nvidia V100 32GB GPU를 8개를 가지고 2주간 BERT를 학습했습니다. V100은 서버용 GPU이며 개당 가격은 대략 $13,061 입니다. GPU 하나당 약 1500만원이라고 볼 수 있는데 이것을 8개를 사용해 2주간 학습을 해야 합니다. 2020년에 OpenAI에서 발표한 GPT-3 모델은 1,750억개의 변수를 학습해야 합니다. 학습 비용만 약 460만 달러 정도가 소요 된다고 추정됩니다. 모델 하나를 학습하는데 약 5억원이 필요한 것입니다. 그렇기 때문에 일반인 뿐만 아니라 웬만한 기업에서도 BERT나 GPT-3를 처음부터 학습하기에는 굉장히 많은 비용과 시간이 필요합니다.

그래서 BERT와 GPT-3처럼 복잡하지만 성능이 좋은 모델을 새로운 데이터에 적용하기 위해 나온 개념이 전이학습입니다. 전이학습은 이미 학습된 모델을 가지고 와서 새로운 데이터에 학습시키는 방법입니다. 처음 부터 학습을 해도 되지 않기 때문에 비용과 시간이 절약되는 방법입니다.

전이학습에는 Freeze와 Fine-tune 방법이 존재합니다. Freeze는 선학습된 모델은 고정하고 레이어를 추가해서 추가된 레이어만 학습하는 방법입니다. 이 경우 freeze된 모델의 역할은 주어진 입력값을 고정된 출력값으로 산출하는 encoding 역할을 하게 되며 학습은 추가된 레이어에서 진행됩니다. Fine-tune은 선학습된 모델과 추가한 레이어 모두 새로운 데이터로 학습을 하는 방법입니다.

실습 코드에서 BERT를 fine-tuning하는 과정을 확인할 수 있습니다.

15.1 선학습 NLP 모델 라이브러리

전이학습을 하기 위해선 선학습된 NLP 모델이 필요합니다. 선학습된 NLP 모델들을 제공하는 라이브러리로 Transfomers와 Tensorflow Hub 라이브러리가 존재합니다.

  • 그림 15-1 Transformers 로고(출처)

Transfomers에서는 최신 NLP 모델들을 제공합니다. 오픈소스로 공개된 32개의 공식 모델과 더불어 커뮤니티에서 개발한 모델들 또한 제공합니다. Transformers는 PyTorch와 Tensorflow/Keras 2.0과 호환되지만 대부분의 예제 코드는 PyTorch로 구현돼 있습니다.

Tensorflow Hub은 Tensorflow/Keras 2.0에서 사용가능한 선학습 NLP 모델을 제공합니다. 이번 실습 파일에서는 Tensorflow Hub을 사용해 전이학습을 구현했습니다.

이번 실습 파일외에도 커뮤니티에서 제공되는 Transformers를 사용한 예제Tensorflow Hub을 사용한 예제를 참고하실 수 있습니다.

15.2 참고자료

자연어 처리 분야가 최근들어 빠르게 발전하고 있기 때문에 입문자가 관련 연구를 따라가기 어려울 수 있습니다. 아래 참고 자료를 통해 최신 개념을 익혀 보시길 바랍니다.