전이 학습을 통해 기본적으로 한 Task에서 배운 것을 다른 Task에서의 일반화를 향상시키기 위해 이용할 수 있다.
컴퓨터 시각에서 신경 네트워크는 대개 이전 계층의 가장자리, 중간 계층의 모양 및 후기 계층의 일부 직무별 특징을 탐지하려고 한다. 전이학습에서는 초기층과 중간층이 사용되며 우리는 후자층만 재교육한다.
선글라스 식별에 활용될 배낭 이미지를 인식하기 위해 훈련된 모델의 예를 다시 한 번 생각해보자. 이전 층에서 모델은 물체를 인식하는 법을 배웠는데, 그 때문에 우리는 후자 층만 재교육해서 선글라스를 다른 물체와 구분하는 것을 배우게 될 것이다.
딥러닝을 사용하여 가장 중요한 특징들을 찾을 수 있다. 이를 표현 학습이라고도 하며, 손으로 디자인한 표현으로 얻을 수 있는 것보다 훨씬 더 우수한 성과를 얻을 수 있다.
머신러닝과 딥러닝의 핵심 문제는 '의미 있는 데이터로의 변환'이다. 다시 말하면 입력 데이터를 기반으로 기댓값에 가깝게 만드는 유용한 표현을 학습하는 것이다.
여기서 표현이란 데이터를 인코딩하거나 묘사하기 위해 데이터를 바라보는 다른 방법을 말한다. 예를 들어 RGB나 HSV로의 인코딩이 될 수 있으며 A표현으로는 해결하기 힘든 문제를 B표현으로 쉽게 해결할 수 도있다.
딥러닝은 머신 러닝의 특정한 한 분야로 연속된 층에서 점진적으로 의미 있는 표현을 배우는 데 강점이 있고, 데이터로부터 표현을 학습하는 새로운 방식이다.
다음은 pytorch 공식 홈페이지에서 나오는 전이학습의 예이다.
model_ft = models.resnet18(pretrained=True)
num_ftrs = model_ft.fc.in_features
# 여기서 각 출력 샘플의 크기는 2로 설정합니다.
# 또는, nn.Linear(num_ftrs, len (class_names))로 일반화할 수 있습니다.
model_ft.fc = nn.Linear(num_ftrs, 2)
model_ft = model_ft.to(device)
criterion = nn.CrossEntropyLoss()
# 모든 매개변수들이 최적화되었는지 관찰
optimizer_ft = optim.SGD(model_ft.parameters(), lr=0.001, momentum=0.9)
# 7 에폭마다 0.1씩 학습률 감소
exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)
출처: http://insightcampus.co.kr:9090/insightcommunity/?mod=document&uid=12802, https://gggggeun.tistory.com/111#:~:text=%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%80%20%EB%A8%B8%EC%8B%A0%20%EB%9F%AC%EB%8B%9D,%ED%95%99%EC%8A%B5%ED%95%9C%EB%8B%A4%EB%8A%94%20%EA%B0%9C%EB%85%90%EC%9D%84%20%EB%82%98%ED%83%80%EB%82%B8%EB%8B%A4.