일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- ASAC5기
- 머신러닝
- ASAC
- text summarization
- pandas
- deep learning
- 크롤링
- 백준
- ML
- sql eda
- 데이터분석
- ASAC14일차
- YouTube
- Machine learning
- BFS
- DFS
- Crawling
- CCP자격증
- 파이썬
- JSON
- cnn optuna
- Shorts
- SQL
- 파이썬 이미지 처리
- join
- selenium
- EDA
- 뷰티 광고
- Python
- Today
- Total
낼름낼름 동동이
[ASAC 0619] Transfer Learning, Fine Tuning 본문
6월 19일의 기록
요새 항상 늦게오고 자꾸 게을러지는 것 같아서 개인적으로 일찍 오는 계기를 만들고자 아침 스터디를 하기로 하였다. 나는 아침형 인간인지.. 아침에는 집중이 잘된다. 그렇지만 저녁이 가까워질수록 집중도가 급격히 떨어진다.. 중요한 일은 아침에 잘 할수 있도록 노력해야지..!
아침에는 뇌를 깨우기 위해 코딩테스트 문제를 먼저 풀자. 그리고 그날의 할일을 계획하는 시간으로 삼아서 아침부터 보람차게 시작하자.
오늘은 딥러닝 프로젝트를 위주로 공부하면서 학습해나가야겠다. fine-tuning을 하는 다양한 방법에 대해서 찾아보면서 공부를 하고 실제 프로젝트에 적용해봐야지
Transfer Learning (전이 학습)
성능이 좋은 딥러닝 모델을 만드는 최고의 방법은 바로 많은 수의 데이터를 확보하는 것이다.
단, 보유한 데이터의 수가 많지 않거나 데이터를 확보하는데 많은 비용이 드는 경우가 존재할 수 있다. 또한 학습을 시도하는데도 비용이 매우 많이 들기 때문에, 가능하다면 이미 학습된 신경망을 사용하는게 좋은데 이를, pretrained Model이라고 부른다. (대표적으로 ImageNet, ResNet etc…)
이러한 대규모 데이터셋으로 훈련된 pretrained model들을 가져와 사용자가 적용하려고 하는 문제 상황 (데이터셋의 규모, pretrained model 데이터셋과 문제상황에서 사용되는 데이터셋과의 연관성 등)에 맞게 모델의 가중치를 변화하여 사용한다.
사전 학습된 모델을 재정의했다면, pretrained model의 classifier는 삭제하고, 목적에 맞는 새로운 classifier를 추가한다. 이렇게 새롭게 만들어진 모델을 3가지 전략 중 한가지 방법을 이용해 Fine Tuning을 진행하게 된다.
전이 학습의 실제 응용 예시
이미지 분류
일반적으로 ImageNet과 같은 대규모 데이터셋으로 사전 훈련된 컨볼루션 신경망(CNN) 모델을 사용하여 특정 종류의 동식물을 분류할 수 있다. 이러한 모델들은 이미 복잡한 이미지 특징을 학습했기 때문에, 새로운 이미지 분류 작업에 적용할 때 더 빠른 학습과 높은 정확도를 기대할 수 있게 된다.
자연어 처리
BERT나 GPT와 같은 대규모 언어 모델은 감정 분석, 텍스트 분류, 질문 응답 시스템 등 다양한 자연어 처리 작업에 활용될 수 있다. 이 모델들은 광범위한 언어 데이터로부터 학습되어, 새로운 언어 처리 작업에 효과적으로 적용될 수 있다.
의료 이미지 분석
의료 영상 분석은 종종 제한된 데이터로 인해 어려움을 겪는다. 사전 훈련된 모델을 사용하여 MRI나 CT 스캔 이미지에서 병변을 탐지하거나 진단하는 데 활용될 수 있는데, 이러한 접근 방식은 의료 분야에서 데이터가 부족할 때 효과적인 해결책을 제공한다.
전이 학습은 현재 딥러닝 분야에서 필수적인 전략으로 자리 잡았으며, 데이터가 부족하거나 추가 데이터를 수집하기 어려운 상황에서 특히 중요하다. 이 방법을 통해 개발자와 연구자들은 개발 시간을 단축하고, 모델의 성능을 향상시키며, 새로운 응용 분야로 확장할 수 있는 기회를 갖게 된다. 전이 학습의 이러한 장점은 다양한 분야에서 혁신을 촉진하는 중요한 도구로서의 역할을 하고 있다.
Fine-Tuning
Fine Tuning은 기존의 신경망을 이용한 재학습 과정을 의미한다.
Fine-tuning이란 기존에 학습되어져 있는 모델을 기반으로 아키텍쳐를 새로운 목적에 맞게 변형하고 이미 학습된 모델의 가중치를 미세하게 조정하여 학습시키는 방법이다.
이때, 완전히 랜덤한 초기 파라미터를 사용하거나 가장 아래쪽의 레이어의 파라미터를 학습하게 되면 Overfitting(과적합)이 발생하거나 전체 파라미터가 망가질 수 있으니 주의해야 한다.
초기 가중치 활용
사전 훈련된 모델의 가중치를 시작점으로 사용하는 것은 파인 튜닝의 핵심이다. 이 초기 가중치들은 이미 많은 일반적인 특징들을 학습한 상태이며, 이를 기반으로 새로운 데이터에 대한 학습을 보다 효율적으로 진행할 수 있다.
조정과 재학습
모델의 일부 또는 전체를 새로운 데이터셋에 맞게 조정하고 재학습하는 과정을 통해, 모델은 특정 태스크에 더욱 최적화 된다. 이 과정에서 모델의 아키텍처를 조정하거나, 학습률과 같은 하이퍼파라미터를 세밀하게 조정할 수 있다.
학습률 조절
파인 튜닝 과정에서는 학습률을 낮춰야 한다. 사전 훈련된 모델의 지식을 좀 세심하게 보존하는게 중요하고, 이를 바탕으로 새로운 데이터에 맞춰 조정하는게 필요하기 때문이다. 너무 높은 학습률은 사전 학습된 유용한 특징들을 손상시킬 수 있다.
전략 1 : 모델 전체를 새로 학습하기
사전 학습 모델의 구조만 사용하면서, 자신의 데이터셋에 맞게 모델을 전부 새롭게 학습시키는 방법이다.
전략 2 : Conv base은 일부분 고정(Freezing)나머지 Conv Base 계층과 Classifier를 새로 학습
Conv Base는 합성곱 층과 풀링 층이 여러 겹 쌓여있는 부분으로, 특징을 추출하는 부분이다.
Classifier는 주로 완전연결계층으로 이루어져 있으며, Conv base가 데이터셋에서 추출한 특징들을 잘 학습하여 각각의 이미지 샘플들을 알맞은 class로 분류(image classification)하는 부분 이다.
낮은 레벨의 계층은 일반적이고 독립적인 특징(신형성)을 추출하고, 높은 라벨의 계층은 보다 구체적이고 명확한 특징(형상)을 추출한다. 이런 특성을 고려하여 어느 정도까지 재학습시킬 것인지 정한다
전략 3 : Conv Base는 고정(Freezing) Classifier만 새로 학습
컴퓨팅 연산 능력이 부족하거나, 데이터 셋이 너무 작을 때, 혹은 적용하려는 task가 학습 모델이 pretrained model의 데이터셋과 매우 비슷할 때 사용한다.
상황1 : 크기가 크고 유사성이 작은 데이터셋일 때
이 경우에는 전략1(전체 모델을 새로 학습)을 이용한다. 데이터셋의 크기가 크므로, 모델을 다시 처음부터 내가 원하는대로 다시 학습시키는 것이 가능하다. 사전 학습 모델의 구조만 사용하고, 많은 데이터셋을 이용하여 모델을 학습시킨다.
상황 2: 크기가 크고 유사성도 높은 데이터셋일 때
이 경우에는 어떤 선택을 하던 상관이 없지만 전략2(Convolutional base은 일부분 고정, 나머지 계층과 Classifier를 새로 학습)이 효과적이다. 데이터셋이 크기 때문에 과적합 현상은 문제가 안되지만, 데이터의 유사도가 높기 때문에 pre-trained 모델이 이전에 학습한 지식을 활용하는 것이 효과적이다.
상황 3: 크기가 작고 유사성도 작은 데이터셋일 때
좋지 않은 상황이다. 이런 상황에서는 전략2(Convolutional base은 일부분 고정, 나머지 계층과 Classifier를 새로 학습)을 선택한다. 하지만 Convolutional base에서 몇 개의 층을 학습시키고 몇 개의 층을 freezing해야 하는지 알기가 어렵다. 너무 많은 계층을 학습시키면 과적합 현상이 발생할 수 있고, 너무 적은 계층만을 학습시키면 제대로 학습이 되지 않기 때문이다. 상황 2보다는 조금 더 깊은 계층까지 새로 학습을 시켜야 한다.
+) Data Augmentation도 하나의 방법이 될 수 있다.
상황 4: 크기는 작지만 유사성이 높은 데이터셋일 때
이런 경우에 전략 3을 선택한다. convolutional base 부분을 특징 추출기로써 사용하고, classifier부분만을 변경하여 학습시킨다.
출처 :
'데이터분석 > 머신&딥러닝' 카테고리의 다른 글
[ASAC 0621] Yolo 이론 2 (0) | 2024.06.24 |
---|---|
[ASAC 0620] yolo 이론 공부 1 (0) | 2024.06.21 |
[ASAC 0603] ResNet 논문 리뷰 (0) | 2024.06.03 |
[ASAC 0529] CNN_Optuna & Image_Intro (0) | 2024.05.29 |
[ASAC 0523] 딥러닝 활성 함수 (0) | 2024.05.23 |