ML의 정의
어떤 컴퓨터 프로그램이 경험 E로부터 어떤 과제 T에 대해 성능 P가 향상되도록, 즉 학습하는 것
Learning Algorithm
Task T
보통 사람이 고정된 규칙으로 풀기 어려운 문제를 주로 던진다.
지도(분류, 회귀), 비지도(클러스터링), 강화학습으로 분류할 수 있다.
지도학습은 훈련 데이터에 정답 label이 있어서 입력으로 분류/수치를 예측 가능한 것이다.
비지도학습은 훈련 데이터에 정답 label이 없이 입력으로 유사한 그룹을 찾는 것이다.
강화학습은 에이전트가 환경과 상호작용하며 행동을 하고 보상을 받으며 더 나은 전략을 학습하는 것이다.
Performance P
이는 성능을 평가하는 방법인데, 정량적으로 모델의 성능을 측정한다.
분류 T에서는 Accuracy, Recall, Precision, Error rate, Average log-probability
회귀 T에서는 MSE, RMSE, R_square
이렇게 사용하는데, 좋은 지표를 고르기 어려운 T들도 있다. (번역같은 생성형)
그리고 이 성능 평가를 위해서는 data set을 분리해야 한다.
보통 training set으로 학습을 하고, validation set으로 학습을 멈추고, test set으로 마지막으로 모델을 test한다.
Experience E
학습은 학습을 위해 얻은 데이터나 경험, 즉 학습 재료를 말한다.
비지도학습은 많은 특성을 가진 데이터셋에서, 유용한 정보나 구조, 분포를 얻어내어 군집화한다. 이건 x->p(x)로 볼 수 있다.
지도학습에서는 feature와 label(target)을 가지고 학습 진행. 이건 x, y->p(y|x)로 볼 수 있다.
이때 데이터셋에 모순이 있으면 안되는 게,
input = {나이, 거주지, 일주일 외식 평균 횟수} 이고 output = {일주일 외식 횟수} 라면?
이미 input의 하나의 feature는 output feature와 연관돼있고, 미래참조라고 볼 수 있다. 이럼 안됨~~!
글고 머.. 데이터를 나타낼 땐 디자인 행렬로 나타내는데, 이건 상수항 때문이라고 보면 된다.
디자인 행렬은 0번째 열의 값이 모두 1인 행렬!
예를 들어 Learning Algorithm을 선형회귀에 적용시켜보자.
이때 Task는 y=ax+b에서 MSE를 최소화하는 최적의 a, b를 찾는 것이고,
Performance는 (회귀이므로) MSE이다.
단순선형회귀에서 만약 y=wx로 나타냈다면, w_hat = inv(X'X)*X'*y 로 구할 수 있다.
Generalization(일반화)
보통 머신러닝에서 주요 도전은, 새로운 test data에서 잘 작용하는 모델을 만드는 것이다.
물론 train data에서도 잘 작동해야 하지만, 진짜는 test data에서의 성능이라는 것이다.
즉.. 지금은 일단 있는 데이터를 train/val/test로 나누어 사용하지만,
진짜 목표는 지금 있는 데이터로 train하고 새로운 데이터에 모델을 적용해보는 것!
그치만.. 새로운 테스트 데이터가 없으니.. 그냥 가정을 해버리자.
train/test set은 i.i.d를 따르고, 각 샘플은 독립적이라고!
Model Capacity
모델의 용량은, 모델이 표현할 수 있는 가설 집합과 같다.
너무 단순한 모델이면 underfitting, 너무 복잡한 모델이면 overfitting된다.
최적 용량은, training error는 낮아지지만 generalization error는 높아지는 구간을 꼽으면 된다.
훈련 샘플 수에 따라 최적 용량이 달라진다.
No Free Lunch 이론 (NFL)
- 모든 문제에 '항상' 좋은 알고리즘은 없다.
- 각 데이터셋(형태, 크기)에 따라 다른 최적의 모델이 존재
Regularization(정규화)
weight decay로 과적합 방지 기법. L2 정규화항 같은 애를 추가하는 것!
목적함수인 J(w)를 MSE_train+gamma*||w||^2로 정의해서,
J(w)를 최소화하는 방향으로 움직이는 것!
근데 여기서 gamma가 0이 되면 그냥 train set에만 너무 맞는 모델이 된다.
그렇다고 gamma가 너무 커지기엔, J(w)가 최소화돼야 하므로 옳지 않다.
이 두 갈등을 해결하는 것이 정규화!
Hyperparameter
계속 말해왔던 parameter는 모델 안에 존재하고, 데이터로부터 추정되는 것이다.
이 hyperparameter는 모델 밖에 존재하고, 인간이 설정하는 것이다.
Validation set
기존 데이터셋을 train/val/test set으로 나눌 수 있고,
만약 기존 데이터셋을 test를 제외한 부분을 5개의 set으로 나눈다면 5-fold cross validation이 된다.
Fold1~Fold5 중, [F1~F4로 train & F5로 test], [F1,2,3,5로 train & F4로 test]... 이렇게 진행하는 것!
Estimator(추정기)
만약 데이터 생성기 Y=f(x)가 있고, 이건 data(x, y)를 노이즈와 함께 생성한다고 하자.
우린 저 함수를 추정하고 싶지만, 진짜 함수는 알 수 없고 추정기를 사용해서 데이터 기반으로 함수를 근사하는 것이다.
학습된 모델 g_hat이 추정기로 사용된다.
1. bias
평균적으로 예측값이 실제값과 얼마나 차이나는지!
여러 data set으로 하나의 모델을 여러 번 학습해본 후,
만약 x=3인 경우, f_1(3), f_2(3), f_3(3), ..., f_n(3)의 예측값들의 평균을 구한다.
이후 그 평균예측이 원래 데이터에서의 값.. 즉 f(3)과 얼마나 차이나는지를 따지는 것이다.
모델이 너무 단순해서 데이터와 상관없이 예측이 거의 안 바뀌면 bias가 크다고 한다.
2. variance
모델이 학습 데이터에 따라 예측이 얼마나 불안정하게 변하는지!
여러 data set으로 여러 모델을 학습 시키고,
이후 하나의 입력 x0에 대한 예측 값들의 흩어짐 정도를 따지는 것!
모델이 너무 민감해서 데이터셋이 조금만 바뀌어도 예측이 크게 달라진다면 variance가 크다고 한다.
3. Bias-Variance Decomposition(오차 분해)
원래 오차 공식이 Bias^2 + Var로 되는데, 따라서 당연히 분해가 되겠지?
비례 : 모델 복잡도, 1/Bias, Var
오차 공식엔 뭐 Noise도 포함돼있는 게 맞긴 한데, 이건 어차피 제거 못하니까 신경쓰지 않음.
따라서 우리가 줄일 수 있는 건 Bias와 Var. 근데 얘네 둘이 trade-off 관계이기에 알아서 잘 조절해야 함!
그래서 정규화/cross-validation 같은 것들을 통한 모델 용량 조절이 중요함.
'AI > 딥러닝' 카테고리의 다른 글
| Regularization (1) | 2025.04.24 |
|---|---|
| 족보 (1) | 2025.04.24 |
| Perceptron, MLP (0) | 2025.04.24 |
| DL Basic.. + Optimization (0) | 2025.04.23 |
| ML과 DL (2) | 2025.04.22 |