요즘 딥러닝 좀 만져봤다 하는 사람치고 Pre-trained Model
안 써본 사람 없을 거다. 거대 모델들이 이미 학습해놓은 방대한 지식을 쪽쪽 빨아먹는(?) Transfer Learning
(전이 학습)은 이제 자연스럽다. 그리고 그 핵심 기술 중 하나가 바로 Fine-tuning
(미세 조정)이다.
작업할 당시 생긴 궁금증이 있다. “파인튜닝할 때 모델의 모든 가중치(weight)
가 다 업데이트되는 걸까?” 아니면 일부만 업데이트되는 걸까? 🤔
이 궁금증을 해결하기 위해, 음성 인식(ASR) 분야의 대표 주자 중 하나인 wav2vec 2.0
논문[1]을 샅샅이 뒤져보며 파인튜닝의 실체를 파헤쳐 보자!
파인튜닝?
먼저 파인튜닝
이 뭔지 간단히 짚고 넘어가자. 파인튜닝(fine-tuning)
은 직역하면 미세 조정이라는 말이다. 풀어서 얘기하면 이미 대규모 데이터셋(Source Dataset)으로 **사전 학습(Pre-training)**된 모델을 가져와서, 우리가 **실제로 풀고 싶은 특정 작업(Target Task)과 관련된 데이터셋(Target Dataset)**으로 추가 학습시키는 과정을 말한다.
[2]
비유적으로 설명하자면 영어 원어민에게 한국어 수능 문제를 풀도록 가르치는 것과 비슷하다. 기본적인 언어 능력(사전 학습된 지식)은 이미 갖춰져 있으니, 유치원 과정부터 가르치는 일은 없어도 될거다. 그러니 목표 시험(Target Task)에 맞춰 약간의 요령(추가 학습)만 알려주면 훨씬 빠르고 효과적으로 목표를 달성할 수 있다. d2l.ai
[2]의 설명처럼, 사전 학습된 모델 파라미터가 가진 지식이 목표 데이터셋에도 유용할 것이라는 가정하에 진행된다.
We assume that these model parameters contain the knowledge learned from the source dataset and this knowledge will also be applicable to the target dataset. - d2l.ai[2]
자, 그럼 이제 wav2vec 2.0
은 파인튜닝을 어떻게 수행하는지 본격적으로 살펴보자.
wav2vec 2.0 파인튜닝: 선택과 집중의 미학 ✨
wav2vec 2.0
은 Self-Supervised Learning (자기 지도 학습) 방식으로 사전 학습된 음성 표현(Speech Representation) 모델이다. 이 모델을 특정 음성 인식 작업(예: 특정 언어 받아쓰기)에 맞게 파인튜닝하는 과정은 논문에 꽤 구체적으로 나와 있다.
논문의 두 부분을 통해 그 비밀을 엿볼 수 있다.
1. 간단한 모델 구조
Pre-trained models are fine-tuned for speech recognition by adding a randomly initialized linear projection on top of the context network into C classes representing the vocabulary of the task. - wav2vec 2.0[1]
사전 학습된 모델(feature encoder
+ Transformer
) 위에 새로운 linear projection
레이어를 랜덤 초기화해서 추가한다고 한다. 이 레이어는 최종적으로 우리가 인식해야 할 단어 집합(vocabulary
)의 종류(C classes
)만큼의 출력을 내뱉는 역할을 한다. 다음은 wav2vec의 큰 모듈들이다.
Feature Encoder
(f: X -> Z): 입력된 원시 음성 파형(Raw Audio,X
)을 받아 잠재 음성 표현(latent speech representations
,Z
)으로 변환한다. 음성의 저수준 특징(음향 특징 등)을 추출하는 역할이다.Transformer
(g: Z -> C):Feature Encoder
가 만든Z
를 입력받아 문맥 정보를 고려한 표현(context representations
,C
)으로 변환한다. 음성 내 시간적 관계나 문맥을 파악하는 역할이다.Linear Projection
(추가됨):Transformer
위에 새로 추가된 분류기(Classifier).C
를 입력받아 최종 단어(vocabulary
) 확률을 출력한다.
2. 파인튜닝 학습 전략 (Experimental Setup Part)
For the first 10k updates only the output classifier is trained, after which the Transformer is also updated. The feature encoder is not trained during fine-tuning. - wav2vec 2.0[1]
바로 여기에 우리의 핵심 궁금증에 대한 답이 있다!
- 처음 10,000
업데이트(step)
동안은 새로 추가된output classifier
(Linear Projection)만 학습시킨다. 😮 - 그 이후에는
Transformer
부분도 같이 학습시킨다. - 놀랍게도,
Feature Encoder
는 파인튜닝 과정에서 전혀 학습시키지 않는다 (frozen). 🧊
결론적으로 wav2vec 2.0
의 파인튜닝에서는 모든 가중치가 업데이트되는 것이 아니었다! Feature Encoder
는 얼려두고, Classifier
와 Transformer
만 선택적으로 업데이트하는 전략을 사용한다.
잠깐! wav2vec 2.0의 사전 학습은 어떻게 하는 걸까?
자, 그런데 한 가지 중요한 부분을 건너뛰었다. 애초에 wav2vec 2.0
이 뭐길래 이렇게 파인튜닝할 때 특별한 전략이 필요한 걸까? 먼저 wav2vec 2.0
의 핵심인 Self-Supervised Learning (SSL, 자기 지도 학습) 방식부터 알아보자.
레이블 없이 어떻게 학습한다고?
wav2vec 2.0
의 가장 인상적인 부분은 음성 인식을 위한 학습을 레이블 없이 진행한다는 것이다. 그냥 날것의 오디오 파일만 있으면 된다! 물론 파인튜닝 단계에서는 레이블이 필요하긴 하지만 학습을 하는데 labled data가 필요하지 않다니 상당히 매력적이다.
기존의 음성 인식 모델들은 수천 시간의 음성 데이터와 이에 대응하는 텍스트 전사본(Transcription)이 필요했다. 하지만 모든 언어에 대해 이런 데이터를 구하는 것은 매우 어렵고 비용이 많이 든다. 특히 저자원 언어(Low-resource languages)의 경우 더욱 그렇다.
wav2vec 2.0
은 이런 문제를 해결하기 위해 사람이 텍스트 레이블을 제공하지 않아도 스스로 학습할 수 있는 방법을 고안했다.
마스킹과 예측: 음성 BERT?
한마디로 하자면 wav2vec 2.0
의 사전 학습 방식은 텍스트 분야의 BERT
와 개념적으로 유사하다. 입력의 일부를 가리고(마스킹), 가려진 부분을 주변 문맥으로부터 예측하는 방식이다.
구체적인 사전 학습 과정을 자세히 설명해보고자 한다. 조금 길어도 참아주시길 하하..
1. Feature Extraction: 음성 신호를 의미 있는 표현으로 변환
먼저 원시 오디오 파형(X
)을 Feature Encoder
를 통해 잠재 표현(Z
)으로 변환한다.
- CNN 기반 인코더: 논문에서는 7개의 블록으로 구성된 1D 컨볼루션 네트워크를 사용한다. 첫번째 블록은 스트라이드가 5, 나머지 6개는 2 이므로 5 * (2^6) = 320이다.
- 다운샘플링 효과: 이러한 구성으로 인해 원본 오디오는 약 320배 정도 다운샘플링된다. 예를 들어, 16kHz로 샘플링된 10초 길이의 오디오(160,000 샘플)는 약 500개의 특징 벡터로 변환되고, 하나의 벡터는 20ms의 오디오 정보를 담는다.
- 레이어 정규화와 GELU: 각 CNN 블록 후에는 레이어 정규화와 GELU 활성화 함수가 적용된다.
왜 이렇게까지 Feature 를 뽑는 것일까? 내 추측이지만 아마도 전통적 특징 추출 법은 인간의 청각 시스템에 기반했고, 사전에 정의된 필터로 정보 손실의 가능성이 있어서 이지 않을까 싶다. 그러나 당시 facebook 연구진들은 이것마저 신경망에 맡기려고 한 것 같다.
어쨌든 이렇게 추출된 특징 벡터들(Z
)은 원시 파형보다 훨씬 더 의미 있는 표현을 갖게 된다. 예를 들어, 음소(phoneme)와 같은 음성 단위나 음향적 특성(피치, 음색 등)을 포착할 수 있다.
2. Masking: 예측 과제 생성을 위한 정보 가리기
변환된 특징 벡터들(Z
) 중 일정 비율을 무작위로 마스킹한다. 이는 모델이 “채워 넣기” 과제를 학습하도록 하기 위함이다.
- 마스킹 비율: 논문에서는 특징 벡터의 약 ~40%를 마스킹한다. 이 비율은 경험적으로 결정된 값으로, 너무 적으면 과제가 너무 쉬워지고, 너무 많으면 너무 어려워진다.
- 마스킹 전략: 개별 타임스텝을 독립적으로 마스킹하는 것이 아니라, 연속된 타임스텝 그룹(span)을 마스킹한다. 기본 설정에서는 10개의 타임스텝을 그룹으로 마스킹한다. 이는 음성의 시간적 특성을 고려한 설계다.
- 마스킹 표현: 마스킹된 부분은 학습 가능한 벡터(
마스크 임베딩
)로 대체된다. 이 벡터는 “이 부분은 마스킹되었다"라는 표시자 역할을 한다.
예를 들어, 특징 벡터 시퀀스 [z₁, z₂, z₃, z₄, z₅, z₆, z₇, z₈, z₉, z₁₀]
에서 [z₄, z₅, z₆]
을 마스킹한다면, 시퀀스는 [z₁, z₂, z₃, M, M, M, z₇, z₈, z₉, z₁₀]
(여기서 M
은 마스크 임베딩)으로 변환된다.
3. Quantization: 연속적 표현을 이산적 코드로 변환
원래의 Z
(마스킹되기 전)를 이산적인 표현 Q
로 양자화한다. 이 과정은 실제로 음성의 의미 있는 단위(예: 음소)를 발견하는 데 중요하다.
- 코드북(Codebook) 구성: 논문에서는
G=2
개의 코드북을 사용하며, 각 코드북은V=320
개의 항목(entry)을 갖는다. 이는 총G×V=640
개의 가능한 코드 조합을 제공한다. 코드북 시스템은 쉽게음소 사전
이라고 생각하면 된다. 그러니Q
로 양자화 했다는 것은 음성 신호를 정해진 음소 entry에 매핑됐다는 의미이다. - 벡터 양자화 과정:
- 특징 벡터
z
에 선형 투영(linear projection)을 적용하여 로짓(logit) 벡터를 얻는다. - 이 로짓으로부터 각 코드북에서 가장 가능성 높은 코드를 선택한다(Gumbel-Softmax 사용).
- 선택된 각 코드에 해당하는 임베딩을 가져와 합산한다.
- 특징 벡터
- 효과: 이 양자화 과정을 통해 연속적인 음성 특징 공간을 유한한 수의 ‘음소 단위’로 매핑할 수 있다.
예를 들어, 특정 음소 “아"에 해당하는 특징 벡터들은 비슷한 코드 조합(예: 코드북 1에서 코드 15[실제론 256차원 벡터], 코드북 2에서 코드 42[실제론 256차원 벡터])으로 양자화될 가능성이 높다.
다음으로 넘어가기 전에 궁금증이 든다. 왜 처음보는 Gumbel-Softmax를 사용했을까?
Gumbel-Softmax ?
- 양자화 과정인 이산적 과정에서 argmax 연산이 들어가게 된다. 이 argmax는 미분이 불가능하므로 학습이 되지 않는다.
- 일반 softmax는 미분이 가능하나 확률 분포만 출력할 뿐, 샘플을 뽑는 과정은 포함되어 있지 않다. 양자화에는 실제 이산적 선택(하나의 코드북 선택)이 필요하다.
- gumbel softmax는 미분 가능성을 유지하면서도 확률 분포에서 샘플을 뽑는 과정이 내장 되어 있다.
- gumbel noise를 통해 초기 학습 단계에서 다양한 코드북 항목을 탐색 하도록 한다.
4. Context Network: 문맥 정보 통합
마스킹된 특징 벡터들(일부가 마스크 임베딩으로 대체된 Z
)을 Transformer
모델에 통과시켜 문맥화된 표현(C
)을 얻는다.
- Transformer 구조: 논문에서는 12개 또는 24개의 Transformer 블록을 사용한다. 각 블록은 자기 주의(self-attention) 메커니즘과 피드포워드 네트워크로 구성된다.
- 상대적 위치 인코딩: 절대적 위치 대신 상대적 위치 인코딩(relative positional encoding)을 사용하여 시퀀스 내 위치 정보를 제공한다.
- 문맥 통합 과정: Transformer는 각 타임스텝에서 주변 정보(마스킹되지 않은 부분)를 활용하여 마스킹된 부분에 대한 예측을 가능하게 하는 문맥화된 표현을 생성한다.
예를 들어, “안녕하_요"에서 마스킹된 부분 “_“을 예측하기 위해, Transformer는 “안녕하"와 “요” 부분의 정보를 종합하여 “세"가 들어갈 가능성이 높다고 추론할 수 있다. transformer가 학습하는 “세"는 Q의 결과와 유사하게끔 학습된다.
5. Contrastive Learning: 비교를 통한 학습
Contrastive Learning이란 “이것은 저것과 같다/다르다"를 구별하는 방식으로 학습하는 방법이다.
몇번 들어본 cross entropy라든지, MSE 같은 loss 함수가 아닌 InfoNCE(Noise-Contrastive Estimation) loss 함수로 학습이 된다. 이 함수는 자기지도학습에서 주로 사용되는 요소로 “올바른 쌍과 잘못된 쌍을 구별하는 능력"을 학습하는 방법이라고 생각하면 된다.
한 마디로 하자면 모델은 실제 양자화 벡터(Q
)와 다양한 “false” 양자화 벡터(negative samples)를 구별하는 법을 학습한다. 좀 더 구체적으로 설명해보겠다.
InfoNCE의 Loss 함수
핵심 아이디어는 “같은 위치의 C
와 Q
는 가깝게, 다른 위치의 C
와 Q
는 멀게” 이다.
InfoNCE의 Loss 함수의 변형으로
$$L_m = -\log\left[ \frac{\exp(\text{sim}(c_t, q_t)/\tau)}{\exp(\text{sim}(c_t, q_t)/\tau) + \sum \exp(\text{sim}(c_t, \tilde{q})/\tau)} \right]$$
이런 식을 사용하며,
- $L$: 최소화하고자 하는 InfoNCE 손실 값
- $c_t$: 시간 스텝 $t$에서의 Transformer 출력 벡터 (문맥 표현)
- 마스킹된 위치에서 모델이 생성한 표현
- 차원: Transformer의 은닉층 크기와 동일 (일반적으로 768 또는 1024)
- $q_t$: 시간 스텝 $t$에서의 실제 양자화 벡터 (정답 타겟)
- 마스킹되기 전 원래 오디오 부분의 양자화된 표현
- 차원: 모델의 은닉층 크기와 동일
- $\tilde{q}$: 부정적 샘플들 (negative samples)
- 다른 시간 위치나 다른 오디오 파일에서 가져온 잘못된 양자화 벡터들
- wav2vec 2.0에서는 보통 100개의 부정적 샘플 사용
- $\text{sim}(\cdot,\cdot)$: 유사도 함수
- 일반적으로 코사인 유사도 사용: $\text{sim}(a,b) = \frac{a \cdot b}{||a|| \cdot ||b||}$
- 두 벡터가 얼마나 유사한지 -1에서 1 사이 값으로 측정
- $\tau$: 온도 파라미터 (temperature)
- 일반적으로 wav2vec 2.0에서는 0.1 사용
- 낮을수록 차이를 더 뚜렷하게 만들고, 높을수록 차이를 부드럽게 만듦
- $\exp(\cdot)$: 지수 함수
- 유사도 점수를 항상 양수로 변환하고 차이를 강조
- $\sum$: 모든 부정적 샘플에 대한 합계
- 분모에서 모든 부정적 샘플들의 점수를 합산
단일 대조 학습 프레임워크
Transformer의 출력 C가 Q를 직접 “출력"하도록 학습하는 것이 아니다. 대신, C와 Q 사이의 유사성(similarity)을 최대화하도록 학습되고, 이 과정이 InfoNCE 손실 함수를 통해 이루어진다.
- 총 손실 함수
$$ L = L_m + αL_d$$
$L_m$: 주요 대조 손실 (마스크 예측용)
$L_d$: 코드북 다양성 손실 (보조 목적) L_d = -H(q̄) = Σ_g Σ_v p(g,v) log p(g,v)
$α$: 다양성 손실의 가중치
이렇게 총 loss 함수로 학습이 되며, 부정 샘플링을 100개씩 뽑아서 loss를 계산한다고 한다.
배치 내 부정 샘플을 뽑거나, 같은 오디오 안에서 다른 타입스텝의 양자화 벡터를 뽑거나 하는 방식을 사용한다고 한다.
이러한 loss 함수 학습 과정을 통해, 모델은 점차적으로:
- 음성의 시간적 패턴과 문맥적 관계를 이해하게 된다.
- 의미 있는 음향 단위(음소 등)를 스스로 발견하게 된다.
- 다양한 발화자, 환경, 언어적 변이에 강인한 표현을 학습하게 된다.
그리고 이것이 바로 wav2vec 2.0
이 레이블 없이도 강력한 음성 표현을 학습할 수 있는 비결이다!
파인튜닝 전략과 궁금증!
이제 위에서 설명한 사전 학습 과정과 파인튜닝 전략이 어떻게 연결되는지 이해할 수 있다.
- 왜
Feature Encoder
는 얼리는 걸까?Feature Encoder
는 음성의 가장 기본적인 음향 특징(acoustic features)을 추출하는 역할을 한다. 이 특징은 특정 언어나 작업에 크게 구애받지 않는 범용적인(general) 정보일 가능성이 높다. 따라서 사전 학습된 상태를 유지하는 것이 오히려 다른 작업으로의 전이에 유리할 수 있다. 또한, 이 부분을 얼려두면 파인튜닝 시 업데이트해야 할 파라미터 수가 줄어들어 학습이 더 안정적이고 빨라질 수 있다.
- Transformer를 미세 조정하는 이유:
Transformer
는 문맥적 관계를 모델링하는데, 이는 특정 언어의 음소 순서나 단어 패턴 등과 연관될 수 있다. 따라서 목표 작업에 맞게 조정이 필요하다. - Classifier를 먼저 학습시키는 이유: 새로 추가된
Classifier
는 특정 언어의 단어 집합에 맞게 최적화되어야 하고, 이 과정에서 발생하는 큰 오차가 사전 학습된 표현을 손상시키지 않도록 먼저 안정화시킬 필요가 있다. - 왜 처음 10k 스텝 동안은
Classifier
만 학습시킬까?- 새로 추가된
Classifier
는 가중치가 랜덤하게 초기화되어 있다. 만약 처음부터 사전 학습된Transformer
와 함께 학습시키면, 이 랜덤한 가중치에서 발생하는 큰 오차(error
)가Transformer
에게 잘못된 방향으로 영향을 줄 수 있다 (catastrophic forgetting
현상과 유사). 따라서 새로운Classifier
를 먼저 어느 정도 안정화시킨 후, 전체 모델을 함께 미세 조정하는 것이 더 안정적인 학습 전략일 수 있다.
- 새로 추가된
- 그럼
10k
라는 숫자는 절대적인 기준일까?- 그렇지는 않다.
10k
는 해당 논문의 실험 조건에서 찾은 경험적인(empirical) 값일 가능성이 높다. 실제로는 사용하는 데이터셋의 크기, 태스크의 종류, 모델 구조 등에 따라 최적의 스텝 수는 달라질 수 있다. 중요한 것은 **“새로운 레이어를 먼저 안정화시킨다”**는 전략 그 자체다.
- 그렇지는 않다.
- 사전 학습된 가중치는 초기값 역할만 할 뿐일까?
- 단순한 초기값 이상이다. 사전 학습은 모델이 데이터의 유의미한 구조나 특징을 이미 학습한 상태로 만들어준다.
fine-tuning
은 이 좋은 출발점에서 시작하여 목표 작업에 맞게 살짝 방향만 틀어주는 과정이다. 덕분에 적은 데이터로도 훨씬 빠르고 좋은 성능을 얻을 수 있다. 즉, 좋은 초기값을 제공할 뿐만 아니라, 학습 과정 전체에 긍정적인 영향을 미친다.
- 단순한 초기값 이상이다. 사전 학습은 모델이 데이터의 유의미한 구조나 특징을 이미 학습한 상태로 만들어준다.
결국 wav2vec 2.0
의 파인튜닝 전략은 사전 학습된 지식을 최대한 보존하면서 새로운 작업에 효과적으로 적응하기 위한 선택과 집중의 결과라고 볼 수 있다.
실전에서의 wav2vec 2.0 의미는?
wav2vec 2.0
이 단순히 학술적 성과로 끝났을까? 그렇지 않다. 실제로 이 모델은 저자원 언어 음성 인식 분야에 혁명을 가져왔다.
놀라운 성능, 적은 데이터로도! 📊
아래 논문의 실험 결과를 살펴보자.
- LibriSpeech 100h (100시간 레이블 데이터)만으로 파인튜닝했을 때, 기존 지도 학습 방식보다 훨씬 낮은 오류율을 보였다.
- 무려 10분(!) 분량의 레이블된 데이터만으로도 놀라울 정도로 작동하는 음성 인식기를 만들 수 있었다. 바닥부터 학습해도 이 정도 결과는 안 나온다는 게 논문의 요지다.
- 53개 언어에 대한 모델(XLSR-53)을 사전 학습하여 언어 간 전이가 가능함을 보여주었다.
| 훈련 데이터량 | wav2vec 2.0 | 기존 지도 학습 |
|--------------|------------|--------------|
| 10분 | 4.8% WER | 분석 불가능 |
| 1시간 | 3.5% WER | 17.0% WER |
| 10시간 | 2.9% WER | 11.1% WER |
| 100시간 | 2.2% WER | 6.5% WER |
| 960시간 | 1.9% WER | 2.5% WER |
특히 저자원 상황(10분~10시간)에서의 성능 차이는 정말 극적이다. 이는 현실에서 학습 데이터를 구하기 어려운 많은 언어들에게 실질적인 희망이 되었다.
wav2vec 2.0의 미래: 후속 모델들과 발전 방향
wav2vec 2.0
이후 음성 자기 지도 학습은 계속 발전하고 있다. 주요 후속 모델들을 간단히 살펴보자:
1. wav2vec-U: 완전한 비지도 학습의 꿈
wav2vec-U
(Unsupervised)는 한 걸음 더 나아가 파인튜닝 단계에서도 레이블이 전혀 필요 없는 완전한 비지도 학습 방식을 제안했다. 음성 데이터와 텍스트 데이터만 있고, 이들의 쌍(pair)은 없어도 모델을 학습시킬 수 있다는 놀라운 접근법이다.
2. HuBERT: 마스킹에서 클러스터링으로
HuBERT
(Hidden-Unit BERT)는 wav2vec 2.0
의 양자화 방식 대신 클러스터링 기반 목표를 사용하여 더 안정적인 학습을 가능하게 했다. 또한 사전 학습과 파인튜닝의 차이를 줄여 더 좋은 성능을 얻을 수 있었다. 나중엔 HuBERT에 대해서도 포스팅을 해봐야 겠다.
3. WavLM: 음향 이벤트까지 고려한 표현 학습
WavLM
은 음성뿐만 아니라 다양한 음향 이벤트(배경 소음, 화자 중첩 등)까지 고려한 표현 학습을 제안했다. 이는 실제 환경에서의 강인한 음성 인식을 가능하게 한다.
4. 다양한 도메인으로의 확장
이러한 자기 지도 학습 방식은 음성 인식(ASR)을 넘어 다양한 영역으로 확장되고 있다:
- 음성 감정 인식: 화자의 감정 상태 파악
- 화자 식별: 누가 말하는지 구분
- 음성 합성: 자연스러운 음성 생성
- 다국어 음성 번역: 한 언어에서 다른 언어로 직접 번역
다시 파인튜닝으로: 우리가 배울 수 있는 교훈
지금까지 wav2vec 2.0
의 사전 학습 방식, 파인튜닝 전략, 실제 응용, 그리고 후속 연구까지 살펴보았다. 이제 처음 던졌던 질문으로 돌아가보자: 파인튜닝에서 모든 가중치가 업데이트되어야 할까?
wav2vec 2.0
의 사례는 “아니오"라고 명확히 답해준다. 오히려 더 중요한 질문은:
- 어떤 레이어가 일반적인 지식을 담고 있어 고정해도 될까?
- 어떤 레이어가 태스크별로 특화된 정보를 학습해야 할까?
- 학습 과정에서 안정성과 효율성을 위한 최적의 전략은 무엇일까?
이러한 질문들은 wav2vec 2.0
에만 국한되지 않고, 최근 급증하고 있는 모든 거대 사전 학습 모델들(GPT, BERT, CLIP 등)의 효과적인 파인튜닝에도 적용될 수 있는 보편적인 고민이다.
결론: 파인튜닝, 아는 만큼 보인다!
fine-tuning
작업을 할 때 모든 가중치가 업데이트될 것이라고 막연히 생각하기 쉽지만, wav2vec 2.0
의 사례처럼 실제로는 어떤 레이어를 얼리고, 어떤 레이어를 학습시킬지 선택하는 전략이 매우 중요하다는 것을 알 수 있다.
어떤 부분을 얼리고 어떤 부분을 학습시킬지는 모델의 구조, 사전 학습 방식, 목표 작업의 특성 등 다양한 요소를 고려하여 결정된다. 단순히 코드를 돌리는 것을 넘어, 이러한 전략적 선택의 이유를 이해하는 것이 모델의 성능을 최대한 끌어올리는 열쇠가 될 것이다.
앞으로 fine-tuning
을 할 때는 “이 모델은 어떤 부분을 업데이트하고 있을까?” 하고 한 번쯤 더 고민해보는 습관을 들여보는 것은 어떨까?
References
- [1] wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations: https://arxiv.org/abs/2006.11477
- [2] Dive into Deep Learning - Fine-Tuning: https://d2l.ai/chapter_computer-vision/fine-tuning.html
...