Transfer Learning

다른 데이터셋으로 만든 모델을 현재 데이터에 적용

일반적으로 대용량 데이터셋으로 만들어진 모델의 성능이 높다.

현재의 DL에서는 가장 일반적인 학습 기법

backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행하는 방식

TorchVision에서 다양한 모델을 제공한다.

NLP는 HuggingFace가 사실상 표준이 되었다.

Freezing

pretrained model을 활용할 때 모델의 일부분을 frozen 시킨다.

이를 통해 backpropagation을 전체가 아닌 일부에만 수행한다.

Untitled

vgg = models.vgg16(pretrained=True).to(device)
class MyNewNet(nn.Module): 
		def init (self):
				super(MyNewNet, self).__init () 
				self.vgg19 = models.vgg19(pretrained=True) 
				self.linear_layers = nn.Linear(1000, 1)
		# Defining the forward pass 
		def forward(self, x):
				x = self.vgg19(x)
				return self.linear_layers(x)
for param in my_model.parameters():  
		param.requires_grad = False # Freezing
for param in my_model.linear_layers.parameters(): 
		param.requires_grad = True