📅 2026.10.07
오늘은 모델이 예측을 만들고 손실을 계산한 뒤, 기울기를 이용해 파라미터를 수정하는 과정을 배웠다. 학습에 사용하는 Loss와 실제 성능을 평가하는 Metric은 역할이 다르다. Task에 맞는 출력과 평가 기준을 정하고, 경사하강법으로 학습 목표를 최적화하되 별도 데이터에서 실제 성능을 확인해야 한다.
배치 호출 → 모델 예측 → 손실 계산 → 기울기 계산 → 가중치 업데이트
| 단계 | 역할 | 예시 |
|---|---|---|
| 배치 호출 | 데이터를 일정 개수씩 가져온다 | 이미지 32장 |
| 모델 예측 — 순전파 | 현재 파라미터로 출력을 계산한다 | 고양이 확률 0.7 |
| 손실 계산 | 예측과 학습 목표의 차이를 계산한다 | 정답 고양이에 대한 교차 엔트로피 |
| 기울기 계산 — 역전파 | 각 파라미터에 대한 손실의 미분값을 계산한다 | 가중치를 바꾸면 손실이 얼마나 변하는가 |
| 가중치 업데이트 | 기울기와 학습률로 파라미터를 수정한다 | Optimizer로 갱신 |
| 성능 평가 | 별도 데이터에서 실제 성능을 확인한다 | 검증 Accuracy 측정 |
슬라이드의 ‘모델 추론’은 학습 중 예측을 계산하는 순전파로 이해한다. 학습 후 사용하는 추론에서는 일반적으로 가중치를 업데이트하지 않는다.
성능 평가는 반드시 매 배치마다 하는 것이 아니라 일정 Step마다 또는 Epoch가 끝난 뒤 수행할 수 있다. 검증 데이터로 설정을 조정하고, 최종 테스트 데이터로 최종 성능을 확인한다.
Batch, Iteration, Epoch
데이터 1,000개, 배치 크기 100이라면 10번 업데이트가 1 Epoch다. 마지막 배치가 불완전한 경우에는 포함 여부에 따라 Step 수가 달라진다.
CNN — Convolutional Neural Network
이미지의 공간적 패턴을 추출하는 신경망이다.
이미지 → 합성곱·ReLU → 풀링 → 특징 표현 → 출력 점수
| 요소 | 역할 |
|---|---|
| Convolution — 합성곱 | 필터로 지역적인 패턴을 추출 |
| ReLU | 비선형 변환을 적용 |
| Max Pooling | 공간 크기를 줄이며 강한 반응을 남김 |
| Fully Connected — 완전연결층 | 특징을 조합해 최종 점수를 생성 |
앞부분은 선·경계 등의 특징을, 뒷부분은 이를 조합한 복잡한 패턴을 학습할 수 있다. 강의 그림에서는 뒤로 갈수록 공간 크기는 줄고 채널 수는 증가한다.
56 × 56 × 256은 높이 56, 너비 56, 특징 채널 256개를 뜻한다. 마지막 1 × 1 × 1000은 1,000개 클래스의 출력 점수로 해석한다. 그림의 224 × 224 × 64는 원본 RGB 이미지가 아니라 첫 합성곱 블록의 특징맵이다.
RNN — Recurrent Neural Network
순서가 있는 입력을 차례로 처리하고, 은닉 상태로 이전 정보를 전달한다.
ht = tanh(W_x x_t + W_h h(t-1) + b)
“나는 → 오늘 → 학교에 → 갔다”를 처리할 때, 현재 단어와 이전 상태를 함께 이용한다. 은닉 상태는 과거 정보를 압축한 벡터이며, 이전 내용을 완벽하게 보관하는 것은 아니다.
그림의 여러 A 상자는 서로 다른 모델이 아니라 같은 셀을 시간 순서로 펼친 것이다. 은닉 상태를 출력층에 넣으면 클래스나 다음 토큰의 점수를 계산할 수 있다.
입력 → 특징 표현 h → 출력 점수 z → 최종 예측
분류·회귀처럼 많은 Task는 추출한 벡터를 원하는 개수의 값으로 바꾸는 출력부를 사용한다.
z = Wh + b
| Task | 필요한 출력 |
|---|---|
| 집값 회귀 | 실수 1개 |
| 10종 이미지 분류 | 클래스 점수 10개 |
| 다음 토큰 예측 | 어휘 크기만큼의 점수 |
왜 MLP 또는 완전연결층을 사용하는가?
다만 모든 출력부가 깊은 MLP일 필요는 없다. 은닉층과 비선형성을 가진 MLP 대신 선형층 하나만 사용하기도 한다. 표현이 항상 완벽하게 선형 분리된다는 보장도 없다.
확률 해석은 MLP 자체가 아니라 Softmax·Sigmoid가 부여한다. 다중 클래스 분류에서는 Softmax, 이진·다중 라벨 분류에서는 Sigmoid를 사용할 수 있다. 회귀에서는 수치를 직접 출력하기도 한다.
일반적인 분류 출력과 다른 사례
| 사례 | 출력과 학습 목적 | 출력부의 예시 |
|---|---|---|
| Metric Learning — Triplet | 같은 대상은 가깝고 다른 대상은 먼 임베딩 학습 | 선형층·MLP |
| Diffusion — Noise Prediction | 노이즈가 섞인 입력에서 노이즈 예측 | 합성곱·선형 투영 등 |
| RL — Policy + Value | 행동 분포와 기대 보상 예측 | 별도 정책·가치 Head, 흔히 MLP |
| Multi-modal Alignment | 이미지·텍스트 등을 공통 표현 공간으로 정렬 | 모달리티별 선형층·MLP |
이 사례들을 ‘MLP가 아닌 경우’라고 단정하면 부정확하다. 핵심 차이는 MLP 사용 여부보다 출력의 의미와 학습 목표다.
Loss Function — 손실함수
예측이 정답 또는 학습 목표에서 얼마나 벗어났는지 숫자로 계산하는 함수다. 계산 결과가 Loss, 즉 손실값이다.
정답이 5이고 제곱 오차를 사용한다면:
이 경우 정답에 가까워질수록 손실이 작아진다. 손실함수는 모델에게 어떤 결과를 좋은 것으로 볼지 알려주는 학습 기준이다.
모델 학습의 목표
| 기호 | 의미 |
|---|---|
| θ | 가중치·편향 등 학습할 파라미터 전체 |
| L(θ) | 해당 파라미터에서의 손실 |
| arg min_θ | 손실을 가장 작게 만드는 파라미터를 찾음 |
| θ* | 손실을 최소로 만드는 파라미터 |
L(θ) = (θ - 3)²이면:
실제 딥러닝 학습은 전역 최솟값을 반드시 찾는 것이 아니라, 제한된 자원 안에서 좋은 파라미터를 찾는 과정이다. 학습 손실 최소화와 새 데이터에서의 좋은 성능도 구분한다.
실제 목표를 직접 최적화하기 어려워, 학습 가능한 대리 목표를 사용한다.
정확도·순위·문장 품질 같은 기준은 이산적이거나 일반적인 역전파에 적합한 기울기를 제공하지 않는다.
| 실제 목표 | 대표 대리 손실 | 학습 방향 |
|---|---|---|
| 분류 Accuracy 최대화 | Cross-entropy | 정답 클래스의 확률 높이기 |
| 정확하고 자연스러운 번역 | 토큰별 Cross-entropy | 정답 다음 토큰의 확률 높이기 |
| 검색 Ranking 품질 향상 | Pairwise·Contrastive Loss | 관련 항목에 더 높은 점수 부여 |
Accuracy와 Cross-entropy의 차이
정답이 고양이인 두 클래스 분류에서 높은 확률의 클래스를 선택한다고 가정한다.
| 고양이 확률 | 최종 예측 | 정답 여부 | Cross-entropy — 자연로그 |
|---|---|---|---|
| 0.40 | 강아지 | 오답 | 약 0.92 |
| 0.49 | 강아지 | 오답 | 약 0.71 |
| 0.51 | 고양이 | 정답 | 약 0.67 |
| 0.99 | 고양이 | 정답 | 약 0.01 |
Accuracy는 최종 예측이 맞았는지만 센다. 고양이 확률이 0.40에서 0.49로 개선되어도 여전히 오답이므로 Accuracy는 그대로다. Cross-entropy는 이 변화에도 학습 신호를 준다.
고양이 확률 0.49가 Accuracy 49%라는 뜻은 아니다. 확률은 개별 예측의 점수이고, Accuracy는 전체 예측에서 정답을 맞힌 비율이다.
대리 손실의 한계
Loss가 줄었다고 실제 목표가 반드시 개선된 것은 아니다. 별도 Metric으로 확인한다.
| 구분 | 핵심 역할 | 예시 |
|---|---|---|
| Loss | 파라미터를 어떻게 개선할지 학습 신호 제공 | Cross-entropy, MSE |
| Metric | 실제 목적에 맞는 성능 측정 | Accuracy, F1, MRR |
| Benchmark | 문제·데이터·지표·평가 절차를 묶은 표준 평가 체계 | 같은 문제와 조건으로 여러 모델 비교 |
Loss의 핵심 요건: 기울기 기반 학습에 적합할 것
모든 지점에서 완벽하게 미분 가능해야만 하는 것은 아니다. 일부 지점에서 미분 불가능해도 학습에 사용할 수 있다. 중요한 것은 파라미터를 개선할 수 있는 유용한 기울기 신호다.
Metric의 핵심 요건: 실제 성능을 잘 반영할 것
평가에는 미분 가능성이 필수는 아니다. 목적에 맞는 지표를 선택해야 한다. 양성이 1%인 데이터에서 모두 음성으로 예측하면 Accuracy는 99%지만 양성 Recall은 0이다.
Loss도 평가 시 측정할 수 있고, MSE처럼 Loss와 Metric으로 모두 쓰이는 함수도 있다. 사용 목적에 따라 역할을 구분한다.
Benchmark의 역할
특정 Benchmark에서 높은 점수를 얻었다고 모든 Task에서 우수한 것은 아니다. 평가 데이터 오염이나 특정 문제 유형에 대한 적응도 점수 해석에 영향을 줄 수 있다.
스팸을 양성, 정상 메일을 음성으로 두는 예시다.
| 구분 | 의미 |
|---|---|
| TP — True Positive | 실제 스팸을 스팸으로 예측 |
| FP — False Positive | 정상 메일을 스팸으로 잘못 예측 |
| FN — False Negative | 스팸을 정상으로 잘못 예측 |
| TN — True Negative | 정상 메일을 정상으로 예측 |
| 지표 | 수식 | 핵심 질문 |
|---|---|---|
| Accuracy | (TP + TN) / (TP + FP + FN + TN) | 전체에서 얼마나 맞혔나? |
| Precision | TP / (TP + FP) | 양성이라고 예측한 것 중 진짜 양성은? |
| Recall | TP / (TP + FN) | 실제 양성 중 얼마나 찾아냈나? |
| F1 | 2PR / (P + R) | Precision과 Recall을 함께 보면 어떤가? |
Precision은 오탐, Recall은 누락을 중요하게 볼 때 유용하다. F1은 조화평균이므로 둘 중 하나가 낮으면 높은 점수를 받기 어렵고, TN은 직접 반영하지 않는다. 다중 클래스에서는 클래스별 점수를 Macro·Micro 등 어떤 방식으로 평균했는지도 확인한다.
AUROC — Area Under the ROC Curve
임계값을 바꾸며 다음 두 비율을 계산해 ROC 곡선을 만든다.
AUROC는 ROC 곡선 아래의 면적이다. 양성 샘플에 음성 샘플보다 높은 점수를 주는 구분 능력을 평가한다.
Accuracy·Precision·Recall·F1은 특정 임계값에서의 판단을 평가한다. AUROC는 여러 임계값에 걸쳐 평가하지만, 실제 사용할 임계값의 Precision이나 Recall을 보장하지는 않는다.
회귀는 집값·온도처럼 숫자를 예측한다. y_i는 실제값, ŷ_i는 예측값, n은 샘플 수다.
| 지표 | 수식 | 해석 |
|---|---|---|
| MAE | (1/n) Σ_i |y_i - ŷ_i| | 절대 오차의 평균 |
| MSE | (1/n) Σ_i (y_i - ŷ_i)² | 제곱 오차의 평균, 큰 오차에 강한 벌점 |
| RMSE | √MSE | 큰 오차를 강조하면서 원래 단위로 표현 |
| R² | 1 - Σ_i(y_i - ŷ_i)² / Σ_i(y_i - ȳ)² | 실제값 평균만 예측하는 기준 대비 성능 |
실제값 [10, 20, 30], 예측값 [12, 18, 34]의 예시:
온도가 단위라면 MAE·RMSE는 °C, MSE는 °C²다. MAE·MSE·RMSE는 낮을수록 좋고, R²는 높을수록 좋다.
R²의 의미
R² = 0.88은 Accuracy 88%가 아니다. 이 정의에서는 평균값 기준보다 제곱 오차가 88% 줄었다는 의미다. 실제값이 모두 같으면 분모가 0이 되어 일반적인 수식으로 해석할 수 없다.
검색 결과가 관련 항목을 얼마나 찾고 얼마나 위에 배치했는지 평가한다.
| 지표 | 핵심 질문 | 특징 |
|---|---|---|
| MRR | 첫 정답이 얼마나 위에 있나? | 첫 관련 결과의 순위를 중요하게 봄 |
| NDCG@K | 관련성이 높은 결과를 상위에 배치했나? | 관련성 등급과 순위 할인 반영 |
| Recall@K | 전체 정답 중 상위 K개에서 얼마나 찾았나? | 상위 K개 내부의 순서는 직접 반영하지 않음 |
MRR — Mean Reciprocal Rank
MRR = (1/Q) Σ_q 1/r_q
Q는 질의 수, r_q는 첫 관련 결과의 순위다. 첫 정답이 2위면 해당 질의 점수는 0.5, 10위면 0.1이다. 평가 범위에 정답이 없으면 0으로 처리한다.
NDCG — Normalized Discounted Cumulative Gain
흔히 사용하는 정의:
DCG@K = Σ_(i=1)^K (2^(rel_i) - 1) / log₂(i + 1)
NDCG@K = DCG@K / IDCG@K
rel_i는 관련성 등급이고, IDCG는 이상적인 순서의 DCG다. 관련성이 높고 상위에 있을수록 큰 점수를 얻는다. 보통 0~1이며 1은 이상적인 순위다. 관련 항목이 전혀 없어 IDCG가 0인 경우의 처리는 평가 규약을 확인한다.
Recall@K
Recall@K = 상위 K개에서 찾은 관련 항목 수 / 전체 관련 항목 수
전체 관련 문서가 4개이고 상위 5개에서 3개를 찾으면 Recall@5는 3/4 = 0.75다. 같은 경우 Precision@5는 3/5 = 0.6이다.
정답이 하나인 질의에서는 Recall@K가 정답의 상위 K개 포함 여부에 따라 1 또는 0이 된다. 여러 질의의 결과를 평균해 평가한다.
IoU — Intersection over Union
IoU = 예측 영역과 정답 영역의 교집합 / 합집합
겹친 면적이 60, 합친 영역의 면적이 100이면 IoU는 0.6이다. 완전히 일치하면 1, 겹치지 않으면 0이다.
mAP — mean Average Precision
객체 탐지는 종류와 위치를 맞히면서 오탐과 누락도 줄여야 한다.
고양이 AP 0.8, 강아지 AP 0.6이면 mAP는 0.7이다. 같은 객체의 중복 탐지는 추가 정답으로 세지 않고, 대응하지 못한 예측은 FP가 된다.
| 표기 | 평가 기준 |
|---|---|
| mAP@0.5 | IoU 0.5 이상을 위치가 맞은 탐지로 인정 |
| mAP@0.75 | IoU 0.75 이상으로 더 엄격하게 평가 |
| COCO mAP@[0.5:0.95] | 0.5~0.95의 IoU 기준을 0.05 간격으로 평가해 평균 |
AP 계산에는 평가 규약별 차이가 있으므로 IoU 기준과 데이터셋 규약을 함께 확인한다. IoU는 영역 일치도이고, mAP는 탐지 결과 전체의 품질이다.
NLG — Natural Language Generation
번역·요약은 같은 의미를 여러 표현으로 생성할 수 있다. Exact Match만으로 평가하면 적절한 다른 표현을 오답으로 처리할 수 있다.
| 지표 | 주요 사용처 | 평가 대상 |
|---|---|---|
| BLEU | 번역 | 정답과 생성 문장의 n-gram 겹침, Precision 중심 및 짧은 출력 벌점 |
| ROUGE-1 | 요약 | 단어 단위 겹침 |
| ROUGE-2 | 요약 | 연속된 두 단어의 겹침 |
| ROUGE-L | 요약 | 가장 긴 공통 부분 수열 |
ROUGE는 전통적으로 Recall을 중시하지만 Precision과 F1도 보고한다. n-gram은 연속된 n개 토큰 묶음이며, 실제 결과는 토큰화 방식에도 영향을 받는다.
BLEU·ROUGE는 의미 유사성을 직접 측정하지 않는다. 의미가 같아도 다른 단어를 쓰면 점수가 낮을 수 있고, 단어가 많이 겹쳐도 부정 표현 때문에 의미가 반대일 수 있다.
LLM 평가 방법
| 방법 | 방식 | 한계 |
|---|---|---|
| Human Evaluation | 사람이 점수 부여 또는 답변 쌍 비교 | 비용·시간, 평가자 간 차이 |
| LLM-as-a-judge | 평가용 LLM에 기준과 답변을 주고 판단 요청 | 사실 오류, 길이·제시 순서 등의 편향 |
| Preference Modeling | 선호 데이터를 학습해 답변의 선호 점수 예측 | 선호가 사실적 정확성과 같지 않음 |
| Embedding-based Metrics | 벡터 표현의 유사성 평가 | 숫자·이름·부정 표현의 오류를 놓칠 수 있음 |
LLM-as-a-judge는 기존 LLM에 평가를 요청하는 방식이고, Preference Modeling은 선호 데이터로 평가 모델을 학습하는 방식이다. 선호 모델을 보상 모델로 활용해 추가 학습에 사용할 수도 있다.
문장 임베딩의 코사인 유사도나 토큰 표현을 비교하는 BERTScore는 표현 겹침을 넘어 유사성을 평가하는 방법이다. 다만 의미 유사도가 사실성을 보장하지는 않는다.
정확성·유용성·자연스러움·지시 준수 등을 목적에 맞게 평가하며, 한 가지 지표만으로 전체 품질을 판단하지 않는다.
GD — Gradient Descent, 경사하강법
현재 위치에서 손실이 줄어드는 방향으로 파라미터를 조금씩 수정한다.
기울기는 손실이 가장 빠르게 증가하는 방향을 가리키므로 반대 방향으로 이동한다.
파라미터가 하나라면 기울기가 양수일 때 값을 줄이고, 음수일 때 값을 늘린다.
간단한 예시
L(w) = (w - 3)², 미분하면 dL/dw = 2(w - 3)이다.
현재 w = 0, 학습률 0.1이면:
w_new = 0 - 0.1 × (-6) = 0.6
최솟값을 만드는 w = 3에 가까워지고, 손실은 9에서 5.76으로 감소한다.
학습률이 너무 작으면 느리고, 너무 크면 좋은 지점을 지나쳐 진동하거나 발산할 수 있다. 기울기의 반대 방향이라고 해서 임의의 큰 이동에서도 손실 감소가 보장되는 것은 아니다.
미분을 생략하는 것이 아니다.
사람이 미분식을 직접 작성하지 않을 뿐, 자동 미분으로 실제 미분값을 계산한다. SGD도 미분하며, 일부 데이터로 전체 평균 기울기를 추정한다.
SGD — Stochastic Gradient Descent, 확률적 경사하강법
Stochastic은 무작위 데이터 선택에서 오는 확률성을 뜻한다.
| 방식 | 한 번의 업데이트에 쓰는 데이터 | 특징 |
|---|---|---|
| Full-batch GD | 전체 N개 | 전체 학습 손실의 정확한 기울기 |
| SGD — 좁은 의미 | 무작위 1개 | 업데이트가 가볍지만 기울기 변동이 큼 |
| Mini-batch GD | 일부 B개 | 계산 효율과 안정성의 절충 |
실무와 해당 강의에서는 미니배치 방식도 SGD라고 부른다.
미니배치 업데이트
균등 무작위 샘플링에서는 배치 기울기의 평균이 전체 기울기와 일치한다. 하지만 개별 업데이트의 방향은 전체 기울기와 다를 수 있다. 실무에서는 매 Epoch 데이터를 섞고 배치로 나누는 방식도 흔히 사용한다.
GD 대신 SGD를 사용하는 이유
전체 데이터 100만 개, 배치 100개라면 GD는 전체를 보고 한 번 업데이트하지만 미니배치 SGD는 100개마다 업데이트한다. 한 Epoch에서 처리하는 데이터 양은 같으므로 총계산량이 무조건 적다는 뜻은 아니다.
Full-batch GD도 데이터를 나눠 읽으며 기울기를 누적할 수 있다. 전체 데이터를 반드시 한 번에 메모리에 올려야 하는 것은 아니다. 미니배치로 줄어드는 메모리와 모델 파라미터·Optimizer 상태의 메모리도 구분한다.
배치 크기와 학습률
배치 크기와 학습률은 함께 조정한다. 같은 Epoch 수에서는 배치가 커질수록 업데이트 횟수가 줄어든다.
손실 지형의 어려움
| 개념 | 의미와 문제 |
|---|---|
| Local Minimum — 지역 최솟값 | 주변보다 낮지만 전체 최솟값은 아닐 수 있음 |
| Saddle Point — 안장점 | 어떤 방향에서는 증가하고 다른 방향에서는 감소 |
| Plateau — 평탄한 구간 | 손실이 높아도 기울기가 작아 진행이 느림 |
| Ravine — 좁고 긴 골짜기 | 방향별 경사가 달라 하나의 학습률로 이동하기 어려움 |
SGD의 잡음은 일부 정체 구간을 벗어나는 데 도움이 될 수 있지만, 항상 탈출하거나 전역 최솟값을 찾는 것은 아니다. 최솟값 주변에서 진동할 수도 있다.
특징의 스케일 차이는 Ravine을 만들 수 있고, 표준화로 완화할 수 있다. 특징 간 강한 상관관계 때문에 생기는 Ravine은 각 특징의 표준화만으로 해결되지 않을 수 있다.
토론토 강의 페이지의 그래프 읽기
전체 손실 지형은 같아도 배치별 지형은 바뀌므로 SGD의 경로는 더 흔들린다. 그래프의 특정 매끄러운 GD 경로가 모든 문제에서 보장되는 것은 아니다.
PPL은 언어 모델이 실제 텍스트의 다음 토큰을 얼마나 잘 예측하는지 평가하는 지표다. 낮을수록 좋다.
BLEU·ROUGE가 생성 문장과 기준 문장의 표현을 비교한다면, PPL은 실제 다음 토큰에 모델이 부여한 확률을 평가한다.
모델은 앞의 문맥을 보고 어휘 전체에 대한 확률 분포를 출력한다. PPL 계산에는 그중 실제로 이어진 토큰의 확률을 사용한다.
“나는 밥을 먹었다”에서 각 단어가 하나의 토큰이라고 가정해보자.
| 앞의 문맥 | 실제 다음 토큰 | 확인하는 확률 |
|---|---|---|
| 나는 | 밥을 | P(밥을 ∣ 나는) |
| 나는 밥을 | 먹었다 | P(먹었다 ∣ 나는 밥을) |
PPL은 평균 토큰 교차 엔트로피에 지수함수를 적용한 값이다.
실제 토큰의 확률이 높아지면 교차 엔트로피가 줄고 PPL도 낮아진다.
모든 평가 위치에서 실제 다음 토큰에 같은 확률을 줬다고 가정하면:
| 실제 다음 토큰의 확률 | PPL |
|---|---|
| 0.5 | 2 |
| 0.1 | 10 |
| 0.01 | 100 |
PPL은 직관적으로 다음 토큰을 선택할 때의 유효한 후보 수처럼 이해할 수 있다. 모든 위치에서 후보 10개에 같은 확률을 주고 실제 토큰이 그중 하나라면 PPL은 10이다. 실제 후보 개수를 그대로 세는 지표는 아니다.
별도의 정답 번역문·요약문은 없어도 되지만, 평가할 텍스트는 필요하다.
평가 텍스트 자체의 다음 토큰이 정답 역할을 하므로, 별도의 정답 라벨을 만들 필요가 없는 것이다. 모델의 확률 분포만 보고 실제 토큰 없이 계산할 수 있다는 뜻은 아니다.
PPL은 생성된 답변의 품질 전체보다, 평가 텍스트의 실제 다음 토큰에 얼마나 높은 확률을 부여하는지 평가한다.
Colab Pro+와 무료 이용의 차이
500 CU는 500시간이 아니다. 런타임 구성에 따라 시간당 소모량이 달라지므로 현재 잔액과 소모율을 확인한다. 위 내용은 오늘 확인한 안내 기준이며, 실제 구독 화면의 조건도 확인한다.
Drive 파일을 /content에 복사해 사용
Drive에서 작은 파일을 반복해서 읽으면 I/O가 병목이 될 수 있다. 학습 데이터를 Colab 로컬 디스크에 복사해 사용하고, 파일이 많으면 압축 파일을 복사한 뒤 로컬에서 풀 수 있다.
from google.colab import drive
import shutil
drive.mount("/content/drive")
# 예시 경로: 실제 파일 위치에 맞게 변경
shutil.copy2(
"/content/drive/MyDrive/data/train.csv",
"/content/train.csv",
)
DATA_PATH = "/content/train.csv"
/content는 임시 저장 공간이다. 런타임이 삭제·초기화되면 로컬 파일과 실행 상태를 잃을 수 있으므로 중요한 결과와 체크포인트는 Drive 등 영구 저장소에 저장한다. 파일 복사는 Drive 원본을 삭제하지 않는다.
Secrets에서 HF_TOKEN 불러오기
from google.colab import userdata
from huggingface_hub import login
login(token=userdata.get("HF_TOKEN"))
토큰은 코드에 직접 넣거나 출력하지 않는다. 모델에 따라 별도의 접근 승인도 필요할 수 있다. 위 코드는 Colab에서 사용하는 예시이며 이 로컬 프로젝트에서 실행한 결과는 아니다.
어제는 Task에 맞게 정답과 모델 출력을 설계하는 과정을 배웠고, 오늘은 그 출력을 어떤 목표로 학습하고 어떤 기준으로 평가할지 배웠다.
모델은 Loss를 줄이도록 학습하지만, 실제로 원하는 것은 높은 정확도·좋은 검색 순위·자연스럽고 정확한 문장이다. 직접 최적화하기 어려운 목표에는 Surrogate Loss를 사용하고, 결과는 Task에 맞는 Metric과 Benchmark로 확인해야 한다.
처음에는 경사하강법이 미분을 대신하는 방법인지 헷갈렸지만, 미분은 이동 방향을 계산하고 경사하강법은 그 방향으로 파라미터를 바꾸는 방법이다. SGD는 미분을 생략하지 않고 일부 데이터로 전체 기울기를 추정한다.
PPL은 토큰 단위 교차 엔트로피와 연결되는 언어 모델 평가 지표다. 다음 토큰 예측이 좋아지는 것과 생성 문장 전체가 정확하고 유용해지는 것은 구분해야 한다.
앞으로 학습 결과를 볼 때는 Loss가 낮아졌는지만 보지 않고, 어떤 오류가 줄었는지와 실제 목적에 맞는 Metric이 개선됐는지를 함께 확인해야겠다.