본문 바로가기
C.W.K.
Stream
Lesson 07 of 07 · published

실전 — 텍스트 분류 미세 조정

~8 min · keras-nlp

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

트랙 전체를 하나의 흐름으로

이 마무리 실습은 앞의 내용을 하나의 절차로 묶어. 프리셋이 사전 학습 백본과 짝 토크나이저를 제공하고, num_classes분류 출력 헤드의 모양을 정해. enable_lora는 미세 조정 비용을 낮추고 save()는 배포할 수 있는 .keras 파일 하나를 만들어. 새로운 기술을 더하는 것이 아니라 이미 배운 부품을 조립하는 단계야.

성패를 가르는 선택

일반 Adam 대신 AdamW를 사용하는 이유는 분리된 가중치 감쇠가 Transformer 미세 조정의 표준이며 일반화를 조금 더 안정적으로 만들기 때문이야. BERT 크기의 모델에도 LoRA를 켜면 평범한 하드웨어에서 재현하기 쉽고 저장 결과물도 작아져. 검증 세트는 필수야. validation_data가 없으면 과적합을 알아챌 수 없고, 사전 학습 모델은 작은 데이터셋에서 3에포크만으로도 과적합할 수 있어. 가장 흔한 실패 원인은 모델이 아니라 불균형하거나 잘못 붙은 레이블이야. 잘못된 레이블은 자신감 있는 잘못된 출력을 만들어.

이후 기능은 모두 이 템플릿의 변형이야

데이터셋만 바꾸면 고객 지원 분류기가 되고, 백본을 다국어 프리셋으로 바꾸면 다른 언어를 다룰 수 있어. num_classes를 조정하면 주제 태깅이나 콘텐츠 검토에도 같은 코드를 쓸 수 있지. 이 마무리는 결승선이 아니라 이후 자연어 기능이 재사용할 출발점이야.

Code

처음부터 끝까지 — 불러오기 → LoRA → 컴파일 → 학습 → 저장·python
import keras
import keras_hub

# Load pretrained classifier
classifier = keras_hub.models.BertClassifier.from_preset(
    "bert_base_en",
    num_classes=3,
)

# Enable LoRA for efficient fine-tuning
classifier.backbone.enable_lora(rank=4)

# Compile
classifier.compile(
    optimizer=keras.optimizers.AdamW(5e-5),
    loss="sparse_categorical_crossentropy",
    metrics=["accuracy"],
)

# Train
classifier.fit(
    train_ds,
    validation_data=val_ds,
    epochs=3,
)

# Save the fine-tuned model
classifier.save("my_classifier.keras")

External links

Exercise

제품 트윗 감정처럼 특정 영역의 텍스트 분류 데이터셋을 고르거나 직접 주석을 달아. BertClassifier를 미세 조정해 .keras로 저장하고 표준 입력의 문장을 분류하는 작은 predict.py를 만들어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.