전이 학습

전이 학습이란?

전이 학습은 한 작업에 대해 훈련된 모델을 사용해 유사한 작업을 수행하는 모델의 기초로 활용하는 딥러닝 접근법입니다. 전이 학습을 통해 신경망을 업데이트하고 재훈련시키는 것이 처음부터 신경망을 훈련시키는 것보다 빠르며 쉽습니다. 전이 학습은 영상 분류, 객체 검출, 음성 인식 및 기타 응용 사례에서 사용됩니다.

전이 학습이 중요한 이유

전이 학습을 통해 여러분은 딥러닝 커뮤니티의 전문 지식을 활용할 수 있습니다. 널리 사용되는 사전 훈련된 모델은 견고한 아키텍처를 제공하며, 이를 사용하면 처음부터 새로 시작할 필요가 없습니다. 전이 학습은 지도 학습에 일반적으로 사용되는 기법이며, 그 이유는 다음과 같습니다.

  • 이미 대규모 데이터셋으로 훈련된 널리 쓰이는 모델을 재사용함으로써 더 적은 레이블 지정 데이터로 모델을 훈련시킬 수 있습니다.
  • 이를 통해 훈련 시간과 연산 리소스를 줄일 수 있습니다. 전이 학습을 사용하면 사전 훈련된 모델이 이전 학습을 기반으로 이미 가중치를 학습했기 때문에 신경망 가중치를 처음부터 학습하지 않습니다.
  • GoogLeNetYOLO와 같이 널리 사용되는 아키텍처 등 딥러닝 연구 커뮤니티에서 개발한 모델 아키텍처를 사용할 수 있습니다.
모델 1(데이터셋 1로 훈련됨)에서 모델 2(데이터셋 2로 훈련됨)로 지식이 전이되는 과정을 보여주는 전이 학습의 도식. 데이터셋 1이 데이터셋 2보다 큽니다.

사전 훈련된 모델에서 더 적은 수의 레이블 지정 데이터로 훈련시킬 수 있는 다른 모델로의 지식 이전.

처음부터 훈련 또는 전이 학습

딥러닝 모델을 생성하려면 모델을 처음부터 훈련시키거나 사전 훈련된 모델을 사용하여 전이 학습을 수행할 수 있습니다.

처음부터 모델을 개발하고 훈련시키는 방법은 기존 모델을 사용할 수 없는 매우 특정한 작업에 더 효과적입니다. 이 접근법의 단점은 정확한 결과를 얻으려면 일반적으로 많은 양의 데이터가 필요하다는 것입니다. 처음부터 모델을 만드는 방법은 소규모 신경망에서 원하는 정확도를 달성할 수 있는 경우에도 효과적입니다. 예를 들어, RNN(순환 신경망) 및 LSTM(장단기 기억) 신경망은 다양한 길이의 순차 데이터에 특히 효과적이며, 신호 분류시계열 예측 등의 문제를 해결할 수 있습니다.

전이 학습은 다양한 사전 훈련된 모델이 있는 작업에 유용합니다. 예를 들어, 널리 사용되는 많은 CNN(컨벌루션 신경망)은 1,400만 개 이상의 영상과 수천 개의 영상 클래스를 포함하는 ImageNet 데이터셋에 대해 사전 훈련되었습니다. 만약 여러분이 정원의 꽃 영상(또는 ImageNet 데이터셋에 포함되지 않은 영상)을 분류해야 하는데 꽃 영상 수가 제한적인 경우, SqueezeNet 신경망에서 계층과 가중치를 전이하고 최종 계층을 교체한 후 보유한 영상으로 모델을 재훈련시킬 수 있습니다.

이 접근법으로 여러분은 전이 학습을 통해 더 짧은 시간에 더 높은 모델 정확도를 달성할 수 있습니다.

전이 학습을 적용한 신경망과 그렇지 않은 신경망 간의 훈련에 대한 신경망 성능 비교. 전이 학습의 성능 곡선은 시작점, 기울기 및 점근선이 더 높습니다.

처음부터 훈련시키는 경우와 전이 학습을 수행하는 경우의 신경망 성능(정확도) 비교.

전이 학습 응용 사례

전이 학습은 다음과 같이 많은 딥러닝 응용 사례에서 널리 사용되고 있습니다.

컴퓨터 비전

컴퓨터 비전 응용 사례에는 영상 인식, 객체 검출, 영상 분할, 라이다 포인트 클라우드 처리 등이 있습니다. MATLAB 예제 전이 학습을 사용한 다중분해능 블록 형식 영상에서 종양 분류하기를 참조하십시오.

음성 및 오디오 처리

MATLAB 예제 심층 신경망 디자이너에서 사전 훈련된 오디오 신경망을 사용한 전이 학습을 참조하십시오.

텍스트 분석

MATLAB GitHub 예제 Fine Tune BERT Model for Japanese Text를 참조하십시오.

전이 학습을 위한 사전 훈련된 모델

전이 학습의 중심에는 딥러닝 연구자들이 수백만 개의 샘플 데이터 점으로 훈련시킨 사전 훈련된 딥러닝 모델이 있습니다.

많은 사전 훈련된 모델이 존재하며 각각의 모델에는 고려해야 할 다음과 같은 장단점이 있습니다.

  1. 예측 속도: 모델이 얼마나 빠르게 새 입력을 예측할 수 있는가? 예측 속도는 하드웨어 및 배치 크기와 같은 인자에 따라 달라질 수 있지만, 모델의 아키텍처와 크기에 따라 달라질 수도 있습니다.
  2. 크기: 모델에 필요한 메모리 사용량이 어느 정도인가? 모델 크기의 중요성은 모델을 어디로 그리고 어떻게 배포하려는지에 따라 달라집니다. 예로 모델을 임베디드 하드웨어 또는 데스크탑에서 실행할 것인지에 따라 달라질 수 있습니다. 리소스가 제약된 타겟에 배포하는 경우에는 신경망의 크기가 중요합니다.
  3. 정확도: 재훈련하기 전의 모델의 성능이 얼마나 좋은가? ImageNet 데이터셋에 대해 좋은 성능을 보이는 모델은 새로운 유사 작업에서도 좋은 성능을 보일 가능성이 높습니다. 그러나 ImageNet에서 정확도 점수가 낮다고 해서 모델이 모든 작업에서 성능이 떨어지는 것은 아닙니다.
전이 학습에 사용될 수 있는 사전 훈련된 CNN 모델의 모델 크기, 예측 속도, 정확도 비교.

널리 사용되는 CNN 사전 훈련 모델의 모델 크기, 속도 및 정확도 비교.

전이 학습 워크플로에 가장 적합한 모델은 무엇일까요?

선택할 수 있는 전이 학습 모델이 많으므로, 각각의 장단점과 특정 프로젝트의 전반적인 목표를 기억하는 것이 중요합니다. 좋은 접근법은 다양한 모델을 시도하여 여러분의 응용 사례에 가장 적합한 모델을 찾는 것입니다.

GoogLeNet, VGG-16 및 VGG-19 등의 시작하기 적합한 단순한 모델을 사용하면 신속하게 반복하고 다양한 데이터 전처리 단계와 훈련 옵션을 실험해 볼 수 있습니다. 일단 어떤 설정이 잘 작동하는지 파악한 후에는 더 정확한 신경망을 사용해 결과가 향상되는지 확인할 수 있습니다.

배포 환경으로 인해 모델 크기가 제한되는 경우 SqueezeNet, MobileNet-v2, ShuffleNet과 같이 계산적으로 효율적인 경량 모델을 선택하는 것이 좋습니다.

MATLAB에서 사전 훈련된 모델을 사용하려면 어떻게 해야 하나요?

최신 모델을 카테고리별로 살펴보고 모델 선택을 위한 팁을 얻으려면MATLAB Deep Learning Model Hub를 살펴볼 수 있습니다. 대부분의 모델은 darknet19 함수와 같은 단일 MATLAB 함수로 불러올 수 있습니다.

외부 플랫폼에서 사전 훈련된 신경망을 가져올 수도 있습니다. importNetworkFromTensorFlow 함수와 같은 가져오기 함수를 사용하여 TensorFlow™, PyTorch® 또는 ONNX™의 모델을 MATLAB 모델로 변환할 수 있습니다.

사전 훈련된 딥러닝 모델을 MATLAB에서 직접 가져오거나 외부 딥러닝 플랫폼(PyTorch, TensorFlow, ONNX)에서 가져올 수 있습니다.

소프트 센서 설계에 적용된 전이 학습

Poclain Hydraulics에서 MATLAB의 사전 훈련된 신경망을 활용하여 소프트 센서의 설계를 가속화한 방법에 대해 읽어볼 수 있습니다.

“우리는 이미 MATLAB에 구현된 두 개의 신경망을 확인했고, 이러한 신경망을 통해 코드를 하드웨어에 내장하여 온도를 실시간으로 예측할 수 있었습니다.”

Bruno Dandine, Poclain Hydraulics

MATLAB을 사용한 전이 학습

Deep Learning Toolbox™와 함께 MATLAB을 사용하여 수백 개의 사전 훈련된 모델을 이용하고 내장 함수 또는 대화형 방식의 앱으로 전이 학습을 수행할 수 있습니다. 다른 전이 학습 응용 사례의 경우, Computer Vision Toolbox™, Audio Toolbox™, Lidar Toolbox™ 또는 Text Analytics Toolbox™ 등의 다른 툴박스를 사용해야 할 수도 있습니다.

전이 학습 워크플로

전이 학습 워크플로에는 사전 훈련된 신경망을 가져오고, 수정하며, 재훈련시킨 후 이를 새로운 데이터에 대한 예측에 사용하는 작업이 포함됩니다.

전이 학습 워크플로 단계의 도식.

다양한 전이 학습 아키텍처와 응용 사례가 있지만, 대부분의 전이 학습 워크플로는 공통된 일련의 단계를 따릅니다. 다음 그림에서는 영상 분류에 대한 전이 학습 워크플로를 볼 수 있습니다. 여기서는 전이 학습이 사전 훈련된 GoogLeNet 모델에 대해 수행되는데, 이 모델은 1,000개의 객체 범주로 분류하도록 22개 계층이 심층 훈련된 널리 사용되는 신경망입니다.

  1. 사전 훈련된 모델 선택. 시작할 때는 단순한 모델을 선택하는 것이 도움이 될 수 있습니다.
영상 분류 작업에서 전이 학습을 위해 수정될 수 있는 사전 훈련된 CNN 모델.

22개 계층이 있고 1,000개의 객체 범주를 분류하도록 훈련된 신경망인 GoogLeNet 모델의 아키텍처.

  1. 최종 계층 교체. 새로운 영상 및 클래스 세트를 분류하도록 신경망을 재훈련하려면 GoogLeNet 모델의 마지막 학습 가능 계층과 최종 분류 계층을 교체하면 됩니다. 최종 완전 연결 계층(마지막 학습 가능 계층)은 새로운 클래스의 수와 동일한 수의 노드를 포함하도록 수정됩니다. 새 분류 계층은 소프트맥스 계층에서 계산된 확률을 기반으로 출력을 생성합니다.
모델을 재훈련하기 전에 사전 훈련된 CNN 모델의 최종 계층을 교체하는 것은 전이 학습에서 필수적입니다.

모델을 재훈련시키기 전에 모델의 마지막 학습 가능 계층 및 분류 계층을 교체합니다.

계층을 수정한 후 최종 완전 연결 계층은 신경망이 학습할 새로운 클래스 개수를 지정하고, 분류 계층은 사용 가능한 새로운 출력 범주에서 출력을 결정합니다. 예를 들어, GoogLeNet은 원래 1,000개의 계층에 대해 훈련되었지만, 최종 계층을 교체하여 관심 있는 객체의 5개(또는 다른 수)의 범주만 분류하도록 재훈련시킬 수 있습니다.

  1. 선택적으로 가중치 동결. 신경망의 앞쪽 계층의 학습률을 0으로 설정하여 해당 계층의 가중치를 동결할 수 있습니다. 훈련 중에 이런 동결 계층의 파라미터는 업데이트되지 않으므로, 신경망의 훈련 속도를 대폭 향상할 수 있습니다. 새 데이터셋의 크기가 작은 경우 가중치를 동결하면 새 데이터셋에 대한 신경망의 과적합을 방지할 수도 있습니다.
  2. 모델 재훈련. 재훈련을 통해 새 영상 및 범주와 관련된 특징을 학습하고 식별하도록 신경망을 업데이트합니다. 대부분의 경우 재훈련에는 모델을 처음부터 훈련하는 경우와 비교하여 더 적은 수의 데이터가 필요합니다.
  3. 신경망 정확도 예측 및 평가. 모델의 재훈련을 수행한 후에는 새 영상을 분류하고 신경망의 성능을 평가할 수 있습니다.

전이 학습에 대한 대화형 방식의 접근법

심층 신경망 디자이너 앱을 사용하면 MATLAB, TensorFlow 또는 PyTorch에서 사전 훈련된 모델의 선택 또는 가져오기, 최종 계층의 수정 및 새 데이터를 사용한 신경망 재훈련을 비롯한 전체 전이 학습 워크플로를 거의 또는 전혀 코딩 없이 대화형 방식으로 완료할 수 있습니다.

전이 학습에 대해 자세히 알아보기

아래의 비디오를 보고 명령줄에서 또는 심층 신경망 디자이너를 사용하여 전이 학습을 시작할 수 있습니다.

관련 주제