전이학습(transfer learning) 재밌고 쉽게 이해하기

공부/머신러닝, 딥러닝|2020. 2. 4. 02:18

안녕하세요. 비스카이비전입니다. 오늘은 전이학습(transfer learning)에 대해 설명드리도록 하겠습니다. 먼저 위키피디아의 정의를 한 번 보시고 가겠습니다. 

 

"Transfer learning (TL)is a research problem in machine learning (ML) that focuses on storing knowledge gained while solving one problem and applying it to a different but related problem." [1]

 

일반적으로 CNN 기반의 딥러닝 모델을 제대로 훈련시키려면 많은 수의 데이터가 필요합니다. 그런데 불행히도 충분히 큰 데이터셋을 얻는 것은 쉽지 않은 일입니다. 그러한 데이터셋을 만드려면 돈이 많이 들거나, 시간이 많이 듭니다. 문제는 그렇게 많은 돈과 시간을 가진 사람은 많지 않다는 것입니다.

 

이러한 현실적 어려움을 해결한 것이 바로 전이학습입니다. 전이학습이란 이미지넷과 같이 아주 큰 데이터셋에 훈련된 모델의 가중치를 가지고 와서 우리가 해결하고자 하는 과제에 맞게 재보정해서 사용하는 것을 의미합니다. 결과적으로 비교적 적은 수의 데이터를 가지고도 우리가 원하는 과제를 해결할 수 있는 딥러닝 모델을 훈련시킬 수 있게 되었습니다. 

 

 

전이학습을 직관적으로 이해하실 수 있도록 제가 아주 짧은 소설을 만들어봤습니다. ㅎㅎ

 

-----

 

한 명의 개발자가 있습니다. 이 개발자는 개, 고양이, 말, 소, 양을 구별할 수 있는 이미지 분류용 CNN 모델을 만들어야합니다. 보스가 시켰으니까요. 그래서 이 개발자는 수많은 개, 고양이, 말, 소, 양의 이미지를 인터넷상에서 많이 찾아왔습니다. 이 이미지들을 가지고 CNN 모델을 훈련시켰습니다. 수많은 테스트를 통해 최적의 모델 가중치(weights)를 찾아냈습니다. 즉, CNN 모델 내의 많은 가중치들이 개, 고양이, 말, 소, 양을 분류하기에 적합하도록 조정이 된 것이죠. 

 

그런데 갑자기 보스가 개, 고양이, 말, 소, 양은 분류할 필요가 없어졌다고 합니다. 그것 대신 사슴, 코끼리, 토끼, 염소, 호랑이를 분류할 수 있는 모델을 만들어달라고 합니다. 최대한 빨리! 이 개발자는 너무나 짜증이 났습니다. 힘들게 모델을 만들었는데, 무용지물이 되고 만 것이죠. 다시 처음부터 이 과정을 반복하자니 너무 막막합니다. 그래서 개발자는 아이디어를 냅니다. '동물들 종류만 바뀌었지 동물의 종을 분류해내야하는 것은 동일하니 이전에 만든 모델의 가중치를 가져와서 그것을 추가적으로 새로운 과제에 맞게 조정해보면 어떨까?' 이 개발자의 아이디어는 통했습니다. 아예 처음부터 새로 훈련하는 것보다는 훨씬 더 빠르게 수렴했습니다. 생각보다 빠른 시간내에 새로운 분류기를 만들어낸 것이죠. 이 개발자는 의기양양하게 보스를 찾아갑니다.

 

"보스, 다 만들었습니다."

"오 벌써 만들었다고? 자네 대단한 인재군. 연봉 좀 높여줘야겠어."

"보스, 사랑합니다. 전이학습 만세!"

 

-----

 

재밌게 읽으셨나요? (재미없죠? ㅋㅋ) 

 

언젠가부터 컴퓨터비전 분야에서 전이학습(transfer learning)을 사용하여 좋은 성능을 내는 논문들을 많이 접하게 되는 것 같습니다. 좋은 학습법이라는 증거죠. 2016년에 딥러닝 분야의 거장 중의 한 명인 앤드류 응 교수님이 말씀하신 것이 현실이 되어 가고 있습니다.

 

앤드류 응 曰 "지도학습 이후로 전이학습이 머신러닝에서 대세가 될 것이다." 

 

전이학습은 사실 우리 인간들이 사용하는 학습법 중 하나입니다. 우리는 과거에 이런저런 문제들을 해결하면서 축적된 경험을 토대로 그것과 유사한 문제를 해결하지 않나요? 이것이 바로 전이학습의 본질입니다. 

 

항상 질문과 지적은 환영합니다. 빠르게 답변드리도록 노력하고 있으니 댓글 남겨주세요.^^ 

 

 

<참고자료>

[1] https://en.wikipedia.org/wiki/Transfer_learning, 위키피디아(영문), "Transfer learning"