1. 소개
최종 업데이트: 2022년 3월 28일
머신러닝
머신러닝은 매우 빠른 속도로 진화하는 분야입니다. 이전에는 불가능했던 사용 사례를 구현하기 위해 새로운 연구와 가능성이 매일 등장합니다.
이러한 출시에는 일반적으로 모델이 동반됩니다. 모델은 입력(예: 이미지)이 결과(예: 분류)를 출력하는 매우 긴 수학 방정식으로 이해할 수 있습니다.
- 이러한 새 모델 중 하나를 자체 데이터로 사용하려면 어떻게 해야 할까요?
- 사용 사례나 앱에서 이러한 최신 모델의 이점을 얻으려면 어떻게 해야 할까요?
이 Codelab에서는 손쉽게 자체 데이터에 맞게 머신러닝 모델을 맞춤설정하는 과정을 안내합니다.
머신러닝 모델을 빌드하고 학습시키는 데는 여러 가지 어려움이 있습니다.
- 시간이 많이 걸립니다.
- 대용량 데이터를 사용합니다.
- 수학 및 통계 등의 분야에서 전문성을 갖추어야 합니다.
- 리소스 집약적: 일부 모델의 학습에는 며칠이 걸릴 수 있습니다.
새 모델 아키텍처를 빌드하는 데는 많은 시간이 소요되며 수많은 실험과 수년 간의 경험이 필요할 수 있습니다. 하지만 갖고 있는 문제를 위한 최신 연구를 맞춤설정하여 이 모든 지식을 활용해 자체 데이터를 활용할 수 있다면 어떨까요? 바로 전이 학습이라는 기법을 사용하면 가능합니다.
이 Codelab에서는 전이 학습의 작동 원리, 작동 방식, 사용 시점을 알아봅니다.
학습할 내용
- 전이 학습의 정의와 사용 사례
- 전이 학습 사용 방법
- 모델을 세부 조정하는 방법
- TensorFlow Lite Model Maker 사용 방법
- TensorFlow Hub 사용 방법
필요한 항목
- 모든 코드는 Google Colaboratory를 사용하여 실행되므로 시스템에 아무것도 설치할 필요가 없습니다. Colab에 로그인하려면 인터넷과 Google 계정만 있으면 됩니다.
- TensorFlow 및 Keras API에 관한 기본 지식
- Python에 관한 지식
TensorFlow 또는 머신러닝에 관한 기본 지식이 없더라도 전이 학습에 관해 자세히 알아볼 수 있습니다. 기법에 대한 이론의 다음 단계인 '전이 학습이란?'을 읽어보고 'Model Maker를 사용한 전이 학습'을 진행하세요. 더 자세히 살펴보고 싶다면 TensorFlow Hub를 사용한 전이 학습에 관한 섹션을 참조하세요.
2. 전이 학습이란?
선행 학습된 모델은 일반적으로 대규모 이미지 분류 작업에서 대규모 데이터 세트를 대상으로 이전에 학습된 저장된 네트워크입니다. 선행 학습된 모델을 그대로 사용하거나 전이 학습을 사용하여 이 모델을 주어진 작업에 맞게 맞춤설정하세요.
이미지 분류를 위한 전이 학습의 직관은 모델이 충분히 크고 일반적인 데이터 세트에서 학습되면 이 모델이 시각적 세계의 일반 모델 역할을 효과적으로 한다는 점입니다. 그런 다음 대규모 데이터 세트에서 대량의 모델을 학습시키면 처음부터 시작할 필요 없이 학습된 특성 맵을 활용할 수 있습니다.
머신러닝 모델을 맞춤설정하는 방법에는 두 가지가 있습니다.
- 특성 추출: 이전 샘플에서 학습한 표현을 사용하여 새 샘플에서 중요한 특성을 추출합니다. 데이터 세트에서 이전에 학습한 특성 맵의 용도를 변경할 수 있도록 사전 학습된 모델 위에 처음부터 학습된 새 분류기를 추가하기만 하면 됩니다. 전체 모델을 다시 학습시키지 않아도 됩니다. 기본 컨볼루셔널 네트워크에는 이미 사진 분류에 유용한 기능이 일반적으로 포함되어 있습니다. 그러나 선행 학습된 모델의 최종 분류 부분은 원래의 분류 작업에 적용되며, 이후에는 모델이 훈련된 클래스 집합에 따라 달라집니다.
- 세부 조정: 고정된 모델 기반의 최상위 레이어 몇 개를 고정 취소하고 새로 추가된 분류기 레이어와 기본 모델의 마지막 레이어를 함께 학습시킵니다. 이를 통해 기본 모델의 고차 특성 표현을 '세부 조정'하여 특정 작업의 관련성을 높일 수 있습니다.
특성 추출은 학습 속도가 더 빠르지만 세부 조정으로 더 나은 결과를 얻을 수 있습니다.
전이 학습의 두 가지 방법(특성 추출과 세부 조정)을 사용하여 둘 다 시도해 봅니다.
- TensorFlow Lite Model Maker 라이브러리는 대부분의 데이터 파이프라인과 모델 생성을 자동으로 지원하므로 프로세스가 훨씬 더 쉬워집니다. 결과 모델을 모바일 및 브라우저에서 사용하도록 쉽게 내보낼 수도 있습니다.
- TensorFlow Hub 모델은 TensorFlow Hub에서 사용할 수 있는 방대한 머신러닝 모델의 저장소를 활용합니다. 연구원과 커뮤니티는 이러한 모델을 활용하여 최신 상태의 모델을 훨씬 더 다양하게 선보이고 있습니다.
3. Model Maker를 사용한 전이 학습
지금까지 전이 학습의 개념을 배웠으니, 이제 쉽게 사용할 수 있는 도구인 TensorFlow Lite Model Maker 라이브러리를 사용해보겠습니다.
TensorFlow Lite Model Maker 라이브러리는 전이 학습 프로세스를 간소화하고 모바일 및 웹 개발자와 같은 비ML 개발자가 프로세스에 훨씬 더 쉽게 접근할 수 있도록 하는 오픈소스 lib입니다.
Colab 노트북에서 다음 단계를 안내합니다.
- 데이터 로드
- 데이터 분할
- 모델 생성 및 학습
- 모델 평가
- 모델 내보내기
이 단계를 완료하면 동일한 프로세스를 따라 자체 데이터로 전이 학습을 시작할 수 있습니다.
Colaboratory
다음은 Google Colab으로 이동하여 커스텀 모델을 학습시켜 보겠습니다.
설명을 살펴보고 노트북의 기본사항을 이해하는 데 15분 정도 걸립니다.
장점:
- 모델을 맞춤설정하는 쉬운 방법입니다.
- TensorFlow 또는 Keras API를 몰라도 괜찮습니다.
- 사용자가 아직 구현되지 않은 특정 항목이 필요한 경우 변경할 수 있는 오픈소스 도구입니다.
- 모바일 또는 브라우저 실행을 위해 직접 모델을 내보냅니다.
단점
- 이전 두 가지 방법과 마찬가지로 전체 파이프라인을 빌드하고 직접 모델링하는 것보다 구성 가능성이 적습니다.
- 기본 모델을 선택해도 일부 모델은 기본 모델로 사용할 수 없습니다.
- 데이터 파이프라인이 더 복잡한 대량의 데이터에 적합하지 않습니다.
4. TensorFlow Hub에서 모델 찾기
이 섹션을 마치고 나면 다음을 수행할 수 있습니다.
- TensorFlow Hub에서 머신러닝 모델을 찾습니다.
- 컬렉션을 이해합니다.
- 다양한 모델 유형 이해합니다.
전이 학습을 수행하려면 다음 두 가지로 시작해야 합니다.
- 데이터(예: 인식하려는 대상의 이미지)
- 데이터에 맞춤설정할 수 있는 기본 모델
데이터 부분은 일반적으로 비즈니스에 따라 다르지만, 가장 간단한 방법은 인식하려는 대상의 사진을 많이 찍는 것입니다. 하지만 기본 모델은 어떨까요? 어디에서 찾을 수 있을까요? 여기 TensorFlow Hub가 도움이 될 수 있습니다.
TensorFlow Hub는 TensorFlow 모델의 요구사항을 위한 모델 저장소입니다.
수천 가지 모델의 문서를 검색하고 읽어서 바로 사용할 수 있으며 대부분의 모델은 전이 학습 및 세부 조정에 사용할 수 있습니다.
모델 검색
먼저 나중에 코드에서 사용할 수 있는 TensorFlow Hub에서 사용할 모델을 간단히 검색해 보겠습니다.
1단계: 브라우저에서 tfhub.dev 사이트를 엽니다.
이미지 도메인에서 전이 학습의 경우 특징 벡터가 필요합니다. 특징 벡터는 분류 모델과 비슷하지만 분류 헤드가 없습니다.
특징 벡터는 이미지를 N번째 공간의 숫자 표현으로 변환할 수 있습니다(여기서 N은 모델의 출력 레이어의 차원 수).
TFHub에서 특정 카드를 클릭하여 특징 벡터를 구체적으로 검색할 수 있습니다.
왼쪽에 있는 필터로 모델 이름을 검색하여 Image feature vectors
만 표시할 수도 있습니다.
파란색 아이콘이 있는 카드는 모델의 컬렉션입니다. 이미지 컬렉션을 클릭하면 선택할 수 있는 비슷한 여러 모델에 액세스할 수 있습니다. 이미지 컬렉션을 선택해 보겠습니다.
아래로 스크롤하여 MobileNet V3
를 선택합니다. 모든 특징 벡터가 가능합니다.
모델의 세부정보 페이지에서 모델의 모든 문서를 읽거나, 코드 스니펫을 확인하여 모델을 사용해 보거나, Colab 노트북에서 직접 모델을 사용해 볼 수도 있습니다.
지금은 상단에 있는 URL만 있으면 됩니다. 이는 모델 핸들로서 TensorFlow Hub 라이브러리에서 쉽게 모델에 액세스할 수 있습니다.
5. TensorFlow Hub를 사용한 전이 학습
이제 사용할 모델을 선택했으므로 TensorFlow Hub 라이브러리에서 KerasLayer 메서드로 로드하여 맞춤설정해 보겠습니다.
이 방법은 모델의 레이어로 사용할 수 있는 방식으로 모델을 로드하여 이 레이어를 중심으로 모델을 빌드할 수 있게 해줍니다.
이전에는 Model Maker 사용 방법을 학습할 때 이해하기 쉽도록 모든 내부 요소를 숨겼습니다. 이번에는 Model Maker가 이면에서 하는 일을 확인할 수 있습니다.
Colaboratory
다음은 Google Colab으로 이동하여 커스텀 모델을 학습시켜 보겠습니다.
설명을 살펴보고 노트북의 기본사항을 이해하는 데 20분 정도 걸립니다.
장점:
- 연구원과 커뮤니티에서 다양한 데이터 세트에 대해 학습된 1,000여 개의 모델을 제공합니다.
- 비전, 텍스트, 오디오와 같은 모든 작업을 위한 모델입니다.
- 다양한 유사 모델을 간편하게 실험합니다. 기본 모델을 변경하는 데 문자열을 하나만 변경해야 할 수 있습니다.
단점
- 모델을 사용하려면 여전히 TensorFlow/Keras 전문성이 필요합니다.
더 자세히 알아보려면 Keras 애플리케이션을 사용한 전이 학습을 진행하면 됩니다. 이 과정은 TensorFlow Hub 사용과 매우 비슷하지만 핵심 TensorFlow API만 사용합니다.
6. 수고하셨습니다.
수고하셨습니다. 전이 학습의 정의와 내 데이터에 적용하는 방법을 배웠습니다.
이 Codelab에서 전이 학습이라는 기법을 사용하여 머신러닝 모델을 자체 데이터에 맞춤설정하는 방법을 배웠습니다.
다음 2가지 형식의 전이 학습을 시도했습니다.
- TensorFlow Lite Model Maker와 같은 도구를 사용하는 경우
- TensorFlow Hub의 특징 벡터를 사용하는 경우
두 옵션 모두 장단점이 있으며 특정 요구사항에 맞는 여러 구성이 가능합니다.
또한 데이터에 더 적합하도록 가중치를 약간 조정하여 모델을 더 세밀하게 조정할 수 있다는 것도 배웠습니다.
두 옵션 모두 모델을 세밀하게 조정할 수 있습니다.
전이 학습 및 세부 조정은 이미지 관련 모델뿐만이 아닙니다. 학습된 도메인 표현을 사용하여 데이터 세트를 조정하는 것이 목표이므로 텍스트 및 오디오 도메인에도 사용할 수 있습니다.
다음 단계
- 자체 데이터로 시험해 봅니다.
- 프로젝트를 통해 소셜 미디어에 TensorFlow를 빌드하고 태그를 지정한 내용을 공유합니다.
자세히 알아보기
- BERT와 같은 최신 모델의 세부 조정에 관한 자세한 내용은 BERT 모델 세부 조정을 참조하세요.
- 오디오 모델의 전이 학습에 대한 자세한 내용은 환경음 분류를 위해 YAMNet을 사용한 전이 학습을 참조하세요.