인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8]

admin | | 조회 5


[주요 목차]

BERT 모델 생성과 옵티마이저 설정

학습 진행과 데이터 규모에 따른 성능 변화

모델 평가·저장·다운로드 실전 팁


BERT 파인튜닝으로 직접 만든 분류 모델이 50% 정확도밖에 안 나와서 좌절한 적 있나요? 저번 영상에서 데이터 준비까지 끝냈다면, 이번 파트 2에서는 실제 모델링부터 학습·평가·다운로드까지 한 번에 정리해 드릴게요. BERT 파인튜닝을 처음 접하는 분들도 따라오기 쉽도록, 코드 한 줄 한 줄의 의미와 실수했던 포인트, 데이터 양을 늘렸을 때 정확도가 어떻게 변했는지까지 구체적으로 담았습니다. 이 글을 끝까지 읽으면, 여러분도 3에폭 만으로 70% 수준까지 끌어올린 모델을 로컬에 저장하고 다음 백엔드 단계로 바로 넘어갈 수 있어요.


인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8] - 현장 스냅 1 - BERT인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8] · 현장 스냅 1

BERT 모델 생성과 옵티마이저 설정

BERT 파인튜닝의 첫 단계는 모델 아키텍처를 직접 쌓는 일입니다. 스크립트에서는 TensorFlow Keras의 Adam 옵티마이저를 불러온 뒤, TFBertModel을 불러와 두 개의 입력(토큰 ID와 어텐션 마스크)을 넣는 구조를 만들었어요. 여기서 중요한 점은 input이 두 개라는 사실입니다. BERT는 기본적으로 input_ids와 attention_mask를 동시에 받아야 제대로 동작하죠.

실제 코드에서는 마지막에 Dense(1, activation='sigmoid') 레이어를 붙여 0~1 사이 확률값을 출력하게 했습니다. 0.5를 기준으로 이진 분류를 하는 거예요. 처음 코드를 짤 때 activation 인자를 빼먹거나 스펠링을 틀려서 에러가 자주 났는데, 이런 사소한 실수가 초보자들에게 가장 흔합니다. 미리 shape를 확인하는 습관을 들이면 (batch, 768) → (batch, 32) → (batch, 1)로 줄어드는 과정을 시각적으로 이해할 수 있어요.

또한 옵티마이저를 Adam으로 선택한 이유는 학습률이 자동으로 조정되기 때문입니다. 만약 다른 옵티마이저(SGD 등)를 쓰면 초반 수렴이 느려질 수 있어요. 처음부터 복잡한 콜백(체크포인트, 얼리 스탑핑)은 넣지 말고, 3에폭처럼 짧은 학습에서는 생략하는 게 효율적입니다.

인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8] - 참고 컷 2 - BERT인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8] · 참고 컷 2

학습 진행과 데이터 규모에 따른 성능 변화

모델을 컴파일한 뒤 fit을 실행하면 실제 파인튜닝이 시작됩니다. 스크립트에서는 에폭을 3으로 고정하고, 데이터 400개로 돌렸을 때 정확도가 50%밖에 나오지 않았습니다. 이는 동전 던지기 수준이라 실전에서 전혀 쓸모가 없었죠.

여기서 핵심은 데이터 양입니다. 400개 → 1000개로 늘리자 정확도가 70%까지 상승했습니다. 20%p라는 수치 차이는 BERT 파인튜닝에서 데이터 규모가 얼마나 중요한지를 단적으로 보여줍니다. 10만 개 수준까지 확보하면 더 안정적인 성능을 기대할 수 있지만, 개인 프로젝트에서는 1,000~5,000개만으로도 충분히 의미 있는 결과를 얻을 수 있어요.

학습 시간은 1,000개 기준으로 약 5분 정도 걸렸습니다. 매일 퇴근 후 1시간씩만 투자해도 한 달 안에 비슷한 수준까지 도달할 수 있다는 점을 강조하고 싶어요. 처음부터 큰 목표를 세우지 말고, 작은 데이터셋으로 빠르게 돌려보며 성취감을 쌓는 게 포기하지 않는 비결입니다.

인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8] - 참고 컷 3 - BERT인공지능 모델링 - 버트 (BERT) 를 활용한 파인튜닝 (fine-tuning) 파트 2 | 인공지능 웹서비스 만들기 [8] · 참고 컷 3

모델 평가·저장·다운로드 실전 팁

모델 학습이 끝나면 evaluate로 검증 데이터셋을 확인해야 합니다. 스크립트에서는 별도로 떼어둔 검증용 데이터를 넣어 65~70% 정확도를 확인했어요. 만약 이 모델로 유료 서비스를 만들 계획이라면 65%는 절대 부족하다는 점을 명심하세요. 더 나은 메트릭(F1-score 등)이나 10만 개 규모 데이터를 준비하는 걸 추천합니다.

모델 저장은 model.save('bert_finetuned_v1.h5') 한 줄로 끝납니다. H5 포맷은 나중에 불러오기 쉽고, Colab에서 로컬로 다운로드할 때도 안정적이에요. 파일 크기가 1GB를 넘기 때문에 다운로드에 1~2분 정도 소요될 수 있습니다. 저장 후에는 반드시 로컬에서 load_model로 다시 불러와 predict 테스트를 해보는 습관을 들이세요.

마지막으로, 코드 전체를 한 번에 실행할 수 있게 미리 함수화해두면 반복 작업이 훨씬 편해집니다. 회사에서는 이 과정을 Airflow나 스크립트 자동화로 처리하지만, 개인은 Jupyter나 Colab에서 순차 실행하는 것만으로도 충분합니다.


[자주 묻는 질문]

BERT 파인튜닝할 때 데이터가 몇 개 있어야 최소한의 성능이 나오나요?

개인 프로젝트 기준으로는 최소 800~1,000개부터 의미 있는 결과가 나오기 시작합니다. 스크립트에서도 400개일 때는 50%에 불과했지만 1,000개로 늘리자 70%까지 올라갔어요. 10만 개 규모가 이상적이지만, 처음에는 1,000개 정도로 빠르게 실험하면서 데이터 전처리와 모델 구조를 다듬는 게 효율적입니다.

파인튜닝 후 모델 파일(h5)이 너무 커서 다운로드가 오래 걸려요. 어떻게 해야 하나요?

1GB 이상 되는 BERT 모델은 다운로드에 시간이 걸리는 게 정상입니다. 저장할 때 include_optimizer=False 옵션을 주면 용량을 조금 줄일 수 있고, 나중에 .keras 포맷이나 SavedModel로 변환하는 방법도 있습니다. Colab에서 다운로드할 때는 브라우저가 멈추지 않게 새 탭에서 진행하세요.

3에폭만 돌렸는데 더 학습을 시켜야 할까요?

3에폭은 빠른 실험용으로 적합합니다. 만약 검증 정확도가 계속 오르고 있다면 에폭을 5~10으로 늘려보세요. 대신 얼리 스탑핑 콜백을 추가하면 불필요한 학습을 막을 수 있습니다. 현재 70% 수준이라면 데이터 양을 먼저 늘리는 게 성능 향상에 더 효과적입니다.

목록
글쓰기
한국 서버호스팅
전체보기 →

댓글 0

jpg/png/gif/webp/zip · 최대 100MB · 10개

리뷰

0
0건의 리뷰
5★
0
4★
0
3★
0
2★
0
1★
0
0/5000
아직 작성된 리뷰가 없습니다. 첫 리뷰를 남겨주세요!