transfer learning

Posted by Young Han Lee on October 08, 2015 · 1 min read

Transfer learning

Transfer learning

요즘 난리인 딥러닝, 문제는 훈련하는데 시간도 무지 오래 걸리고, 실제로 데이터를 얻기도 쉽지 않다는 것이 단점이다.
실제로 최신 GPU 몇개를 달고도 몇일씩 걸리는 것이 기본이고, 데이터 드리븐 컴퍼니가 아닌한, 데이터를 얻기도…쉽지가 않다.
뭐 물론 우리에겐 인터넷이 있긴 하지만, 태깅은 언제 할껀데;; (물론 구글이 태깅해주니 그걸 가져다 써도 되지만, 그건 이미지나 그렇고..) 뭐 암튼 그러한 이유도 있고 도메인을 달리 할 수 있다는 점에서 Transfer learning에 대한 이야기가 많이 나온다. 우선은 기존에 있는 reference 도 잘 나오는지 훈련을 돌렸었는데, 덕분에 transfer learning에 대해 테스트 해볼 수 있었다.

실제로 의미있는 결과

다른 종류의 클래스로 transfer learning을 돌려봤다. 물론 다른 종류의 클래스에 full DB를 이용해서도 결과를 뽑아놨었고, image-net으로 만들어 놓은 pre-trained model에 (full DB) / 10 만 이용하여 훈련을 돌렸는데, pre-trained model을 사용하지 않은 것에 비해서 꽤나 좋은 결과가 나타났다. 게다가 full DB를 돌리는 것과 비교해서도 시간적으로도 1 / 10 정도만 들었다. 굉장히 큰 장점이라고 볼 수 있겠다. 기본적으로 무엇인가 직접 적용할려고 들면 훈련 데이터를 초반에 수집하는 것이 쉽지 않은데, transfer learning을 통해서 초기 모델을 만들어 놓고, 이를 가지고 semi-manual로 접근을 하면 빠르고 deploy할 수 있기 때문이다. 물론 1 / 10 의 데이터라고 해도 충분히 큰;; 숫자다.

확장 가능성 및 돌려보면서 느낀 점

이것만 가지고도 사실 다양한 응용이 가능할 것 같다.
실제로 완전 다른 task에도 적용이 가능하고 클래스 조절이나 이런 부분에서도 큰 장점을 얻을 수 있다.

문헌으로만 느꼈던 부분을 실제로 적용할 수 있어서 좋은 기회였다. 대신 이 분야에 초기 진입장벽이 매우 낮다는 것을 확인할 수 있었고, 반면 그 다음 장벽은 상대적으로 높다고 느꼈다. 슬슬 코드를 좀 봐야겠다. 논문도 더 봐야겠고.