본 게시글은 학부 강의 'AI 데이터 표현과 모델링'을 기반으로 이해하고 학습한 내용을 정리하였습니다.
Neural Network Development Pattern
실제 구현 패턴
Machine Learning Block
Statistical Machine Learning의 기본 프로세스. 거의 모든 ML 기법에 따르는 과정.
- Data Preparation - 데이터 준비
- Model Implementation - 모델 구현
- Loss Implementation - 손실 함수 구현
- Updater Implementation - 업데이터 구현
- Iterative Learning - 반복적 학습
Deep Learning Tasks
일반 ML과 DL을 대응시켜 볼께요.
| 일반 ML | Deep Learning | 구체적 내용 |
| Data Preparation | Prepare TENSOR | 데이터를 텐서로 변환(이미지 → 텐서, 단어 → ID) |
| Model Implementation | Neural Network Design | CNN, RNN, Transformer 등 선택 |
| Loss Implementation | Losses for Tasks | 태스크별 손실 함수 적용 |
| Updater Implementation | Optimization | Adam, AdamW, SGD 등 선택 |
| Iterative Learning | Epoch, Step, ... | 반복 학습 루프 |
PyTorch를 쓴다면 이 5가지 단계를 그대로 밟아야 합니다. LLM이든 ChatGPT든 Claude가 내놓은 결과물도 정확히 이 5단계의 골격을 가지고 만들어냅니다.
Data Preparation
1. 데이터 접근
데이터를 다운로드하거나 데이터베이스에 접근하여 획득
2. 데이터 분할

전체 데이터를 세 가지로 분할
Training Data(훈련 데이터)
- 파라미터 업데이트에 직접 활용되는 데이터
- 오로지 이 데이터만 파라미터 업데이트에 적용된다.
- 문제집
Validation Data(검증 데이터, Dev data)
- 파라미터 업데이트에는 사용되지 않는다.
- 훈련 중간중간 지금 잘 배우고 있는지를 체크하는 용도
- 모의고사
Validation Data가 필요한 이유가 있어요.
ML 모델은 정답을 외워버릴 수 있습니다. 문제집은 달달 외웠는데 밖에서 시험 보면 0점인 상황이 발생할 수 있습니다.
이를 방지하기 위해 아래와 같은 방법을 써볼 수 있어요. <Overfitting>
- 훈련 데이터에서의 Loss가 쭉 떨어진다. 이건 당연하죠.
- 각 단계마다 Validation 데이터로 시험을 본다.
- 처음에는 Validation Loss도 같이 떨어지다가, 어느 순간 올라가기 시작하면 모델이 답을 외워버리고 있다는 뜻입니다.
- 그 지점에서 훈련을 멈춘다. 이것을 Early Stopping.
- 지금부터 더 공부하는 건 쓸데가 없다는 거죠. 그래서 일찍 공부를 멈춰버린다 해서 Early Stopping이라 부릅니다.
Test Data
- 모델이 한 번도 노출되지 않았던 완전히 새로운 데이터 입니다.
- 일반화 능력, Generalization을 평가합니다.
- 수능
논문이나 프로덕트를 외부에 공개할 때 보고하는 점수가 이 Test score입니다.
일반적으로 8:1:1 또는 6:2:2 나누기는 하는데 개발자마다 다릅니다. 이건 하기 나름이에요.
그래도 데이터를 분할할 때 주의사항이 있습니다.
1살부터 100살까지 건강 데이터인데, 훈련 데이터를 1-60살로 모으고 테스트 데이터를 70-100살로 하면 모델이 망하겠죠. 60살까지밖에 말할 수 없기 때문입니다. 세 데이터의 분포가 겹쳐야 해요. 같은 데이터를 보라는 게 아니라 데이터의 성향이 비슷해야 한다.
텐서화 그리고 배치화
실제 데이터를 텐서로 변환하는 작업이 필요합니다.
e.g.
png 파일을 tensor로 또는 words를 id로
Stochastic Gradient Descent(SGD)
데이터 포인트 하나를 보고 기울기를 계산하여 업데이트. 뽑아보고 결정하고, 다시 넣고 뽑아보고 결정하는 것을 Stochastic이라 부릅니다.
빠르다는 장점이 있지만 하나만 보고 결정하기 때문에 변동이 너무 크다는 단점이 있습니다.
Batch Gradient Descent
전체 데이터를 모두 보고 나서 하나의 기울기를 계산하여 업데이트
가장 안정적이다는 장점을 가집니다. 전체를 관통하는 하나의 선을 찾으니까요.
데이터가 10만 개, 100만 개면 메모리 / 시간 문제가 발생합니다. 이게 단점이죠.
Mini-Batch Gradient Descent
실제 실무에서 많이 사용하는 방식입니다.
Mini-Batch Size를 정하고(e.g. 10개 100개 etc.) 해당 개수만큼 묶어서 학습합니다.
- 전체 100문제를 랜덤하게 섞습니다. 챕터 1만 잘 푸는 것을 방지하기 위함입니다.
- 10개씩 묶어서 총 10개의 배치로 나눕니다.
- 첫 번째 Batch(10개) → 기울기 계산 → 업데이트
- 두 번째 Batch(10개) → 기울기 계산 → 업데이트
- ... 반복
현재 PyTorch나 TensorFlow는 기본적으로 Batch Gradient를 지향하지만 제약상 무조건 Mini-Batch로 갈 수 밖에 없다. 우리가 나중에 보게될 Batch Size는 이 Mini-Batch Size를 의미합니다.
Mini-Batch Size에 대한 원칙이 있습니다.
컴퓨터가 좋다면 무조건 키워야 해요. 우리가 지향하는 것은 전체를 관통하는 하나의 선을 찾는 것입니다. 가장 이상적으로는 모든 데이터를 한 번에 보는 것이기 때문이죠. 그게 안되니까 현실적으로 줄여서 가는 겁니다.
Batch based Loss 계산
Mini-Batch에서의 Loss Function
$$L = \frac{1}{B} \sum_{k=1}^{B} L(y_k, \hat{y}_k)$$
- B = Batch Size
- 각 데이터의 Loss를 개별적으로 보는 게 아니라, 배치 내 모든 데이터의 Loss 평균으로 업데이트
Training 과정을 좀 정리해볼께요.
- Data Feeding
- 배치화된 데이터를 입력으로 제공
- Feed Foward
- Network를 통과시켜 예측값(PREDICTED) 생성
- Loss Calculation
- PREDICTED와 REFERENCE를 비교하여 손실 계산(배치 내 평균)
- Parameter Update(Backpropagation)
- Loss가 작아지는 방향으로 모든 파라미터 자동 업데이트
- Performance Check
- Training / Validation Accuracy를 모니터링
위 과정을 Iteration, 반복합니다.
Test 과정
- 훈련이 완료된 Network를 가져온다.
- Test 데이터를 Feed Forward만 수행(파라미터 업데이트 없음)
- 예측값을 정답과 비교하여 성능(Accuracy 등)을 측정하고 보고
'CS & AI > Welcome to AI' 카테고리의 다른 글
| 아 그 변신 로봇? / Transformer (0) | 2026.04.25 |
|---|---|
| 이제 우리는 매트릭스 세상을 만들 수 있을지도 (0) | 2026.04.25 |
| 이제는 컴퓨터도 하는 자기주도학습 (0) | 2026.04.25 |
| 이제는 '대' 지피티 세상 (0) | 2026.04.18 |
| 인공신경망 (0) | 2026.04.17 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!