📌 Linear regression (Multidimension)
2차원일 때 1차원과의 차이점
(키, 손 크기) vs. 몸무게
$x= (x_1,x_2)$ $x \in \mathcal{X} = \mathbb{R}^2, y \in \mathcal{Y} = \mathbb{R}$
- Input : 키와 손 사이즈 2개의 입력
- Output : 몸무게
- Model Class : \mathcal{G} = {g_{a1, a2, b}(x) = a_1x_1 + a_2x_2 + b}$
- $\theta = (a_1, a_2, b)$ , 3개 순서쌍 찾기
- Loss Function
$l(g_\theta(x^{(i)}), y^{(i)})$ = $(g_\theta(x^{(i)}) - y^{(i)})^2$ = $((a_1x_1^{(i)} + a_2x_2^{(i)} + b) - y^{(i)})^2$
$L(a_1, a_2, b) = \frac {1}{3} \sum^3_{i=1} (y^{(i)} - (a_1x_1^{(i)} + a_2x_2^{(i)} + b))^2$
▶ $a_1, a_2, b$로 이루어진 이차식
- Gradient = 0
$\triangledown L(a_1, a_2, b) = (\frac {\partial L}{\partial a_1}, \frac{\partial L}{\partial a_2}, \frac{\partial L}{\partial b})$
▶ $a_1, a_2, b$에 대해 미분한 것으로 이루어진 벡터
▶ gradient는 함수가 어느 방향으로 가장 빠르게 증가하는지 나타내는 지표
∴ 각각 미분하면 일차식 3개 생성되므로 연립방정식 형태로 푸는 문제 형식은 동일
d차원
이미지 등의 다차원 벡터
- data : $x = (x_1, x_2, ...., x_d) \in \mathbb{R}^d$, $y \in \mathcal{Y} = \mathbb{R}$
- Function class : $\mathcal{G} ={g_{a,b}(x) = a^Tx + b : a \in \mathbb{R}^d, b \in \mathbb{R}}$
- $\theta = (a_1, a_2, ...., a_d, b)$
- Loss function : $l(g_{a,b}(x^{(i)}, y^{(i)}) = (g_{a,b}(x^{(i)}) - y^{(i)})^2$
➕ $a^Tx +b$ 선형 함수
$a_1x_1, ... a_dx_d +b$ 형태
▶paramter는 $a_1, ... a_d$ 라고 불리는 a 벡터와 상수 b
if ) data에 가상의 $x_0 = 1$이 추가되어 있다고 가정
- data : $x = (1, x_1, x_2, ... , x_d) \in \mathbb{R}^{d+1}$ , $y \in \mathbb{R}$
▶ $a^Tx = a_0x_0 + a_1x_1 + \cdots + a_dx_d$ = $ a_0 + a_1x_1 + \cdots + a_dx_d$
▶ $a_0$가 b 역할을 하는 방식
- Function Class : $\mathcal{G} = {g_a = a^Tx : a \in \mathbb{R}^{d+1}}$
▶ 위에서는 a가 d차원, b가 scala였다면 a가 d+1 차원인 하나의 벡터로 표헌 가능
- $\theta : (a_0, a_1, a_2, ... a_d)$ = $a$
- Loss function : $l(g_a(x^{(i)}), y^{(i)}) = (g_a(x^{(i)})) - y^{(i)})^2$
- $\mathcal{L}(a) = \frac{1}{n} \sum^n_{i=1} (g_a(x^{(i)})) - y^{(i)})^2$
▶ $g_a(x) = a^Tx$
d+1개 변수에 대해 미분 진행 => $a_0, a_1, ... , a_d$
▶ d+1개 변수와 d+1개 식으로 이루어진 문제
Normal Equation
$a_0, a_1, .. $ 각각을 하나씩 고려하는 것이 아닌 Gradient 한 번에 고려해서 문제 푸는 방식
✅ 원래 Loss function : 각각의 데이터 포인트에 대해 제곱한 것을 다 더한 값
$ X = \begin{bmatrix} x^{(1)} \\ x^{(2)} \\ \vdots \\ x^{(n)} \end{bmatrix} \in \mathbb{R}^{n \times d}$ , $Y = \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(n)} \end{bmatrix} \in \mathbb{R}^n$
▶ x로 이루어진 행렬 & y로 이루어진 벡터
$\mathcal{L}(a) = \begin{Vmatrix} \begin{bmatrix} a^Tx^{(1)} - y^{(1)} \\ a^Tx^{(2)} - y^(2) \\ vdots \\ a^Tx^{(n)} - y^{(n)} \end{bmatrix} \end{Vmatrix} ^2$ = $\begin{Vmatrix} Xa - Y \end{Vmatrix}^2$
▶ $a^Tx^{(1)} - y^{(1)} ~ a^Tx^{(n)} - y^{(n)}$ 을 컴포넌트로 가지는 벡터의 크기
▶ Xa = $a^Tx^{(1)} ~ a^Tx{(n)}$
▶ Y = $y^{(1)} ~ y^{(n)}$
∴ 두 값을 뺀 벡터의 크기가 손실값
식 최소화 과정은 a 벡터에 대한 이차식처럼 다룰 수 있음
= $Y^TY - 2Y^TXa + a^TX^TXa$
▶ a에 대한 이차식이므로 a에 대해 미분
- 벡터 미분
$ \frac {\partial \mathcal{L}(a)}{\partial a} = -2X^TY + 2X^TXa = 0$
▶ a에 대한 Gradient 값이 0인 지점이 Loss function이 가장 작아지는 지점
$X^TXa = X^TY$
∴ $a = (X^TX)^{-1}X^TY$
What if we want to fit quadratic equation?
Q. 선형적으로 존재하지 않는 데이터를 어떻게 설명할 수 있을까?
A. 이차함수, ...
Q. 선형 회귀가 아닌 이차 함수로 맞추는 이차 회귀인가?
A. No, Linear Regression의 일부
▶ x에 대한 이차식으로 y를 표현하는 문제이지만 x와 y는 주어진 것이고 계수들을 구해야 함, 일차식 유지
We fit parameter "a"
$y = a_0 + a_1x + a_2x^2$
▶ x는 키, 몸무게와 같은 상숫값
▶ 함수를 찾는 것은 $a_0, a_1, a_2$ 를 찾는 문제, 일차식 선형 함수 동일
- data : $\tilde{x} = (1, x, x^2) \in \mathbb{R}^3$ , $y \in \mathbb{R}$
- Model Class : $\mathcal{G} = {g_a(x) = a^T\tilde{x} : a \in \mathcal{R}^3}$
- $g_a(x) = a_0 + a_1x + a_2x^2$
- Loss function : $\mathcal{L}(a) = \sum^n_{i=1} ((a_0 + a_1x^{i} + a_2(x^{(i)})^2) - y^{(i)})^2$
You can always add features
$x^2, x^3, ... , e^x$ 형태의 feature, kernel 추가로 표현력 높은 함수 표현 가능
▶ Overfitting 문제 발생 가능
▶ 적절한 방식은 좋은 방향
Overfitting : Bias-Variance Tradeoff
데이터가 조금 변형되었을 때, 낮은 복잡도의 함수는 큰 차이가 없으나 높은 복잡도 함수는 큰 차이를 보임
▶ Overfitting 문제
모델의 복잡도 대비 데이터가 충분히 확보되었는지 확인하는 것 필요
Underfitting vs. Overfitting
✅ Underfit (=High bias)
모델 성능이 떨어져 데이터를 잘 표현할 수 없는 경우
▶ loss 값이 큼
✅ Just right
추세의 적절한 표현
✅ Overfit (=High Variance)
과하게 데이터에 맞추는 형태
▶ 데이터 한 개에 대한 모델의 변화도가 큼
How can we recognize overfitting?
Q. 중간 부분을 어떻게 찾을 수 있을까?
▶ 실제 데이터는 매우 고차원적이므로 그래프 시각화가 어려움
A. Validation set의 활용
- train set
- validation set
모델이 overfitting 되어 있지 않다면 train set의 loss 와 validation set의 loss 간격이 심하지 않음
▶ Validation Loss (검증 손실) & Train Loss (학습 손실)
💡 데이터 학습 과정
1. 데이터를 학습 데이터와 검증 데이터로 구분
2. train loss 가 유의미하게 작아지는지 확인
▶ underfitting 발생 여부
3. Overfitting 발생 여부 확인 = train loss와 validation loss의 차이 비교
Train - Validation - Test
Train : 대략 데이터의 80%
Validation : 대략 데이터의 20%Test : train & validation 과 별도로 분리되어 있는 데이터 사용
Rules
Based on prior knowledge (or theory)
- Occam's Razor
" The explanation that requires the fewest assumptions is usually correct."
유의미한 모델이 여러 개라면 가급적 단순하고 간단한 모델 사용하는 것이 안전하다
✅ Low training error : Underfitting 피하기
✅ Train error ~ Validation error : 둘 사이의 loss가 비슷하게
✅ Train error << Validation error : Overfitting 상황
If you are in overfit
- 모델 복잡도 낮추기
- 더 많은 데이터 수집 ( = 복잡하고 고비용)
Cross Validation (교차 검증)
데이터가 적을 때 사용할 수 있는 방법
- 데이터셋을 20%씩 다섯 개로 분리
- 첫 번째 stage, 첫 set를 validation set으로 사용, 나머지는 train에 사용
- 두 번째 stage, 두 번째 set을 validation set으로 사용, 나머지를 train에 사용
- ....
- 즉, 다섯 개의 stage를 거쳐 데이터를 전부 활용할 수 있는 학습 방식
Regularization (정규화)
Overfitting은 loss를 최소화에 너무 매몰되어 발생하는 문제
▶ 모델(함수)의 계수들이 너무 fit한 값을 가지지 않도록 loss를 줄이면서 ||a|| 크기는 유지하는 제약
$ \mathcal{L}(a) + \lambda \mathcal{L}_{reg}(a) = \sum^n_{i=1} l(g_{\theta} (x^{(i)}), y^{(i)} ) + \lambda ||a||^2$
- Large $\lambda$ : loss를 줄이는 것보다 a가 커지는 것을 경계하는 형태, 정규화 ▲
- Small $\lambda$ : Overfitting이 심각하지 않은 경우에 사용, 정규화 ▼
Augmentation (증강)
기존 데이터의 본질적 특성이 변하지 않도록 일정한 변화를 주어 데이터를 증강시키는 방식
▶ 데이터에 특정 변화에 대해 불변성을 가지는 성질 활용
- 뒤집기
- 확대
- 회전
- noise 추가
- 색상 및 밝기 변환 등 ...
⚠️ 하지만 불변성이 통용되지 않는 데이터의 경우에는 사용할 수 없음
'WorkOut > LG Aimers' 카테고리의 다른 글
LG Aimers | Supervised Learning (지도학습) (11) | 2024.07.24 |
---|---|
LG Aimers | LLM (Large Language Models; 초거대 언어모델) (0) | 2024.07.24 |
LG Aimers | Overfitting & Underfitting (머신러닝 과대적합 & 과소적합) (2) | 2024.07.23 |
LG Aimers | Machine Learning 개론 (9) | 2024.07.22 |
LG Aimers | Convex Optimization (볼록 최적화) (6) | 2024.07.22 |