Q. 딥러닝을 배우기 전 머신러닝을 배워야 하는 이유?
딥러닝은 최근 AI 기술의 핵심이라고 볼 수 있습니다. GPT, 자율주행, 이미지 생성모델 등 모두 딥러닝 덕분에 가능해졌죠.
딥러닝에 관심을 갖는 분이라면 이런 궁금증을 한 번쯤은 갖고 계셨을 겁니다.
"딥러닝을 하고 싶은데 굳이 머신러닝을 먼저 배워야 될까?"
정답은 '그렇다'입니다. 이에 대해 설명해보겠습니다.
1. 딥러닝은 머신러닝의 한 갈래다.
AI에 관한 구조를 보면 인공지능 ) 머신러닝 ) 딥러닝 순으로 포함관계입니다.
즉, 딥러닝을 하려면 머신러닝의 기본 개념을 알고 있어야 한다는 뜻입니다.
2. 머신러닝의 핵심 주제가 딥러닝에 쓰인다.
딥러닝을 배우다 보면 앞으로 계속 보게 될 단어들이 있습니다.
Loss function, Gradient Descent, Overfitting & Regularization, Data Split, Accuracy 등
이러한 개념들은 머신러닝에서 다루는 핵심 주제입니다. 그렇기 때문에 머신러닝의 기초를 다지지 못한다면 딥러닝에서 왜 이걸 쓰는지 모르게 되고 결국 자유롭게 활용하지 못하게 될 것입니다.
3. 딥러닝도 결국 복잡한 머신러닝일 뿐입니다.
머신러닝 기초에 대해 공부하다보면 'y = wx + b'라는 폼을 많이 볼 수 있습니다.
이 구조는 사실 딥러닝의 출력층과 동일합니다. 딥러닝은 이걸 여러 층으로 쌓고 비선형 함수를 추가한 형태입니다. 따라서 딥러닝의 근본은 머신러닝이라고 볼 수 있습니다.
4. 성능 문제에 대한 답은 머신러닝 지식에서 옵니다.
딥러닝 모델을 만들다보면 필연적으로 성능이 안나오는 과정을 겪게 됩니다. 이때 머신러닝의 지식을 활용하게 됩니다.
- 데이터 정규화 여부
- 오버피팅 방지 여부
- 하이퍼파라미터 적절한지
- 데이터 분할 방식이 적절한지
이런 문제들은 머신러닝 지식이 있어야 가능합니다. 딥러닝만 배운다면 디버깅을 할 때 많은 어려움을 겪을 수 있습니다.
따라서, 머신러닝은 딥러닝의 근본이 되는 분야입니다. 반드시 머신러닝을 거치고 딥러닝을 공부하시는 것을 추천합니다.
Q. 딥러닝 성능 향상을 위한 주요 하이퍼파라미터
하이퍼파라미터는 모델이 학습되기 전에 사용자가 직접 설정하는 값으로, 모델의 성능을 크게 좌우합니다.
1. Learning Rate
- 모델이 손실을 얼마나 빠르게 줄이려고 시도하는지
- 너무 클 경우: 발산하거나 수렴하지 못함
- 너무 작을 경우: 학습이 느리고 지역 최솟값에 갇힐 수 있음
- ex. torch.optim.SGD(model.parameters(), lr=0.01)
2. Batch Size
- 한 번에 학습에 사용할 데이터 샘플 수
- 작을수록 자주 가중치 업데이트 -> 노이즈가 더 많지만 일반화를 높임
- 클수록 안정적이고 빠르지만 메모리를 많이 씀
- 32, 64, 128 등의 값 자주 사용 (2의 제곱수)
3. Epochs
- 전체 데이터를 몇 번 반복 학습할 건지
- 너무 클 경우: Overfitting
- 너무 작을 경우: Underfitting
- Early Stopping 기법으로 적정 시점에 멈추는 것 필요
4. Depth, Width
- 층 수, 층당 노드 수
- 깊고 넓을수록 복잡한 패턴 학습하는 대신 Overfitting + 연산량 증가
- ex. nn.Linear(128, 64) -> nn.ReLU() -> nn.Linear(64, 10)
5. Weight Initialization
- 시작점을 잘 잡아야 빠르고 안정적인 학습 가능
- Xavier, He Initialization 등
- ex. nn.init
6. Optimizer
- 가중치를 어떤 방식으로 업데이트할 건지
- SGD(확률적 경사하강법), Adam(적응형 학습률), RMSprop 등
- 모델, 데이터, 학습률과 함께 조합을 잘 선택해야 함
7. Regularization
- Overfitting 방지 기법
- Dropout, L2, Batch Normalization
- ex. nn.Dropout(p=0.5)
8. Activation Function
- 각 층의 출력값에 비선형성 부여
- ReLU, Sigmoid, Tanh, Leaky ReLU, GELU 등
9. Loss Function
- 예측값 - 실제값
- MSELoss(회귀), BCELoss(이진 분류), CrossEntropyLoss(다중 클래스 분류) 등
10. Hyperparameter Search
- 자동으로 최적의 하이퍼파라미터 조합 찾아주는 탐색기법
- Grid Search, Random Search, Bayesian Optimization 등
하이퍼파라미터 자동 튜닝 라이브러리도 존재합니다. (Optuna, Ray Tune 등)
하이퍼파라미터는 조율이 핵심입니다.
전체 조합과 실험을 통해 균형있게 튜닝해야 좋은 성능을 낼 수 있습니다.