Transfer Learning
이하 전이 학습이란, 한 데이터셋으로 사전 훈련된(pre-trained) 모델을 다른 데이터셋 혹은 다른 문제(Task)에 적용시켜 푸는 것을 의미한다. 특히 컴퓨터 비전(Computer Vision)의 분야에서 전이 학습으로 모델을 학습시키면 더 좋은 성능을 이끌어낼 수 있어 가장 많이 사용하는 방법 중 하나입니다. 왜냐하면, 전이 학습을 사용하지 않은 모델에 비해 비교적 빠르고, 정확한 성능을 이끌어내기 때문입니다.
이러한 아이디어는 한 데이터셋에서 모델은 다음 그림과 같이 다양한 이미지의 보편적인 특징(Feature)들을 학습하여, 다른 데이터셋에서도 이 보편적인 특징(Feature) 사용할 수 있는 경우가 많지 않을까? 라는 가정으로 접근했다고 합니다.
그러면 어떻게 전이학습을 하는 것이 좋을까요 ?
가지고 있는 데이터 셋이 충분히 많고 사전 훈련된 데이터셋과 다르다면 모델 전체 네트워크를 전이학습 하고,
가지고 있는 데이터 셋이 충분히 많고 사전 훈련된 데이터셋과 비슷하다면 CNN의 Conv Layer를 대부분 Freeze하여 전이학습 하고,
가지고 있는 데이터 셋이 적고 사전 훈련된 데이터셋과 다르다면 CNN의 Conv Layer를 일부분 Freeze하여 전이학습 하고,
가지고 있는 데이터 셋이 적고 사전 훈련된 데이터셋과 비슷하다면 CNN의 Conv Layer를 모두 Freeze하여 전이학습 합니다.
일반적으로 Conv Layer를 학습할 때는 학습률(Learning-rate)를 낮게 주어 천천히 학습하고, Fc Layer를 학습할 때는 조금 더 높게 주어 빠르게 학습하도록 합니다.
Knowledge Distillation
이하 지식 증류 방법이란, 큰 모델(Teacher Network)로 부터 증류한 지식을 작은 모델(Student Network)로 전이(Transfer)하는 일련의 과정이라고 할 수 있습니다.
딥러닝 모델은 최고의 성능을 내기 위해 매우 복잡하고 연산량도 많아지도록 설계 되어 있습니다. 이를 실제 서비스에 적용하게 된다면, 비용이 매우커지게 되어 비효율적일 수 밖에 없습니다. 이런 상황을 해결하기 위해 Knowledge Distillation은 작은 네트워크에서 큰 네트워크와 비슷한 성능을 낼 수 있도록, 학습 과정에서 큰 네트워크의 지식을 작은 네트워크로 전달합니다.
가장 일반적인 방법으로, 다음 그림과 같이 우선 Pre-trained 된 Teacher 모델을 준비하고, 아직 학습되지 않은 초기화 된 Student 모델을 준비합니다. 이때, Student 모델은 일반적으로 Teacher 모델보다 작은 모델을 사용합니다. 그리고 같은 입력에 대해서 Teacher, Student의 출력을 구하여 이 출력의 차이를 Loss(KL Divergence Loss)를 통해 측정한 후 역전파(Backpropagation)을 통해 Student 모델의 가중치를 업데이트합니다.
KL Divergence를 사용하는 이유는 Teacher 모델의 출력 분포와 Stduent 모델의 출력 분포를 최대한 비슷하게 만들어 Student 모델이 Teacher 모델의 행동을 최대한 따라가도록 만들기 위해서 사용됩니다.
그리고 이 과정은 Label을 전혀 사용하지 않았기 때문에 비지도 학습(Unsupervised Leanring)이라고 합니다. 따라서 Teacher 모델에서 학습된 데이터를 그대로 사용할 필요가 없다는 장점을 가집니다.
만약 Label이 존재하는 데이터를 가지고 있다면 어떻게 Knowledeg Distillation을 진행할까요 ?
우선, Label(Ground truth)을 가지고 있기 때문에, Student 모델의 분류 결과와 Ground truth와의 차이를 Cross Entropy Loss로 계산합니다.
$$ (1-\alpha)L_{CE}(\sigma (Z_s), \hat{y}) $$
Teacher 모델과 Student 모델의 분류 결과 차이는 위에서 설명한 KL Divergence Loss로 계산합니다.
여기서 두 모델의 분류 결과를 비교하기 위해서 Hard Label이 아닌, Soft Label을 사용하는데, 다음과 같이 One-hot vetcor로 나타낸다면 Hard Label, 분류 결과에 다른 정보도 있을 것 같다로 표현하고 싶다면 Soft Label을 사용합니다.
이렇게 Teacher 모델과 Student 모델의 분류 결과를 Soft label을 사용해 구하고, 정보의 손실 없이 비교해 Student 모델이 Teacher 모델을 모방하도록 학습합니다.
위 식에서 \(\alpha\)는 왼쪽항과 오른쪽 항에 대한 가중치로, \(\alpha\)가 크면 오른쪽 항 Loss를 더 중요하게 보고 학습하게 됩니다. \(T\)는 Temperature를 의미하며, Softmax 함수의 입력이 큰 것은 아주 크게, 작은 것은 아주 작게 만드는 성질을 완화시켜 줍니다.
마찬 가지로 역전파(Backpropagation)은 Student 모델만 하여 weight를 업데이트 합니다.
'ML & DL > 기초 이론' 카테고리의 다른 글
ReLU Family (0) | 2024.10.23 |
---|---|
Parameter Estimation (모수 추정), 가능도 (Likelihood), MLE (Maximum Likelihood Estimation) (0) | 2023.03.22 |
Probability Model(확률 모형), Random Variable(확률 변수) (0) | 2023.03.22 |
Regularization: Overfitting을 해결하는 방법들 (0) | 2023.03.21 |
Overfitting & Underfitting (0) | 2023.03.21 |