Transfer Learning
Transfer Learning(전이학습)은 높은 정확도를 비교적 짧은 시간 내에 달성할 수 있기 때문에 컴퓨터 비전 분야에서 유명한 방법론 중 하나다.
전이학습을 이용하면, 이미 학습한 문제와 다른 문제를 풀 때에도, 밑바닥에서부터 모델을 쌓아올리는 대신에 이미 학습되어있는 패턴들을 활용해서 적용시킬 수 있다.
컴퓨터 비전에서 말하는 전이학습은 주로 사전학습 된 모델 (pre-trained model) 을 이용하는 것을 뜻한다.
사전학습 된 모델이란, 내가 풀고자 하는 문제와 비슷하면서 사이즈가 큰 데이터로 이미 학습이 되어 있는 모델이다.
그런 큰 데이터로 모델을 학습시키는 것은 오랜 시간과 연산량이 필요하므로, 관례적으로는 이미 공개되어있는 모델들을 import해서 사용한다.
Fine Tuning이란?
사전학습 된 모델 (pre-trained model) 을 활용하여 새로운 모델을 학습하는 과정을 말함.
사전에 학습된 모델을 내 프로젝트에 맞게 재정의하기 위해서 먼저 원래 모델에 있던 classifier를 삭제하고, 내 목적에 맞는 새로운 classifier를 추가한다. 그 후 새로운 모델을 아래의 세 가지 전략 중 한 가지 방법을 이용해 파인튜닝(fine-tune)을 진행한다.
# 전략 1 : 전체 모델을 새로 학습시키기
이 방법은 사전학습 모델의 구조만 사용하면서, 내 데이터셋에 맞게 전부 새로 학습시키는 방법이다. 모델을 밑바닥에서부터 새로 학습시키는 것이므로, 큰 사이즈의 데이터셋이 필요하다. (+좋은 컴퓨팅 연산 능력)
ㅤ
# 전략 2 : Convolutional base의 일부분은 고정시킨 상태로, 나머지 계층과 classifier를 새로 학습시키기
낮은 레벨의 계층은 일반적인 특징(어떤 문제를 푸느냐에 상관 없이 독립적인 특징)을 추출하고, 높은 레벨의 계층은 구체적이고 특유한 특징(문제에 따라 달라지는 특징)을 추출한다. 이런 특성을 이용해서, 신경망의 파라미터 중 어느 정도까지를 재학습시킬지를 정할 수 있다.
만약 데이터셋이 작고 모델의 파라미터가 많다면, 오버피팅이 될 위험이 있으므로 더 많은 계층을 건들지 않고 그대로 둔다. 반면에, 데이터셋이 크고 그에 비해 모델이 작아서 파라미터가 적다면, 오버피팅에 대한 걱정을 할 필요가 없으므로 더 많은 계층을 학습시켜서 내 프로젝트에 더 적합한 모델로 발전시킬 수 있다.
ㅤ
# 전략 3 : Convloutional base는 고정시키고, classifier만 새로 학습시키기
convolutional base는 건들지 않고 그대로 두면서 특징 추출 메커니즘으로써 활용하고, classifier만 재학습시키는 방법을 사용한다. 이 방법은 컴퓨팅 연산 능력이 부족하거나 데이터셋이 너무 작을때, 그리고/또는 내가 풀고자 하는 문제가 사전학습모델이 이미 학습한 데이터셋과 매우 비슷할 때 고려해볼 수 있다.
비교적 간단히 사용할 수 있는 세 번째 전략과 다르게, 첫 번째와 두 번째 전략은 learning rate에 대해서 조심해야 할 필요가 있다.
learning rate는 신경망에서 파라미터를 얼마나 재조정할 것인지를 결정하는 하이퍼 파라미터인데, CNN 베이스의 사전학습 모델을 사용할 때에는, 이전에 학습한 내용들을 모두 잊어버릴 위험이 있기 때문에 작은 learning rate를 사용하는 것이 바람직하다.
사전학습 모델이 잘 학습되었다는 가정하에, 작은 learning rate으로 학습을 시킨다면 CNN 모델의 파라미터들을 너무 빠르게, 혹은 너무 많이 왜곡시키지 않고 원래 학습되어있던 지식을 잘 보존하면서 추가로 학습을 해 나갈 것이다.
'Tensorflow' 카테고리의 다른 글
XG Boosting (0) | 2021.03.12 |
---|---|
Model Checkpoint와 CSVLogger (0) | 2021.03.12 |
판다스 Date Time Index #일자 / 시간 데이터 처리법 (0) | 2021.03.04 |
타임시리즈 데이터 분석을 위한 Prophet (0) | 2021.03.04 |
이미지 데이터 제너레이터가 하는 역할과 코드 (0) | 2021.03.03 |