개발/머신러닝

[요약] 핸즈온 머신러닝 - 04. 모델 훈련

소년택이 2022. 5. 6. 08:58

선형 회귀

정의

선형 회귀 모델의 예측 정의

$\hat{y} = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} + ... + \theta_{n}x_{n} = \sum_{i=0}^{n}\theta_{i}x_{i} = h_{\theta}(\textbf{x}) = \Theta\cdot\textbf{x}$

  • $\hat{y}$ = 예측값.
  • $x_{i}$ =$i$ 번째 특성 값. 단 $x_{0} = 1$.
  • $\theta_{i}$ =$i$ 번째 모델 파라미터. $\theta_{0}$ 은 편향 또는 bias 라 부른다.
  • $h_{\theta}(\textbf{x})$ = 가설함수.

벡터 표현

머신러닝에서는 계산의 편의를 위해 변수를 열벡터로 나타낸다. 따라서 모든 훈련 세트 $X$ 에 대한 예측값 벡터 $\hat{\textbf{y}}$는 다음과 같이 나타낸다.

$\hat{\textbf{y}} = X^{T}\Theta$

비용함수

$MSE(X,h_{\theta}) = MSE(\Theta) = \frac{1}{m}\sum_{i=1}^{m}(\Theta^{T}\textbf{x}^{(i)}-y^{(i)})^{2}$

 

정규 방정식 - 해석적 방법

정의

$\hat{\Theta} = (X^{T}X)^{-1}X^{T}\textbf{y}$

비용 함수를 최소화 모델 파라미터 $\hat{\Theta}$ 는 정규 방정식을 이용하여 직접 계산할 수 있다. 만약 $X^{T}X$의 역행렬이 존재하지 않는다면 유사역행렬(무어-펜로즈 역행렬)을 이용하여 계산할 수 있다. 

복잡도

$X^{T}X$의 역행렬을 계산하는 과정이 $O(n^{2}) ~ O(n^{3})$ 사이이므로 특성수가 늘어날 수록 지수적으로 느려진다. 하지만 예측시에는 샘플 수와 특성수에 대해 $O(n)$ 이므로 선형으로 시간이 소요된다.

 

경사 하강법 (Gradient Descent)

 선형 회귀 뿐만 아니라 많은 분야에서 사용이 가능한 최적화 알고리즘.

기본 순서

  1. 임의의 $(\theta)$를 지정한다 (무작위 초기화).
  2. $MSE(\theta)$ 에 대한 그래디언트를 구한다.
  3. 그래디언트가 감소하는 방향으로 이동한다.
  4. 2번으로 돌아간다.
  5. 만약 그래디언트가 0 가 된다면 그 부분이 최솟값이다.

 

학습률

경사 하강법에서 매 반복을 "학습 스텝" 이라고 하며, 매 학습스텝마다 모델 파라미터를 조정하는데, 이 조정 값의 비율을 학습률 (learning rate) 라고 한다.

학습률이 너무 큰 경우

  • 스텝이 크다 = 학습이 빠르다.
  • 골짜기를 가로질러 반대편으로 간다 = 발산할 수 있다.

학습률이 너무 작은 경우

  • 스텝이 작다 = 학습이 느리다.
  • 수렴하기 쉽다 = 지역 최솟값에 수렴할 수 있다.

 

선형회귀의 비용함수는 볼록 함수 (convex function) 이므로 지역 최솟값이 없다. 따라서 학습률이 너무 작더라도 전역 최솟값을 찾을 수 있다. 하지만 볼록 함수가 아닌 비용함수에 대해서는 (학습률이 너무 작은 경우) 경사 하강법이 반드시 전역 최솟값을 찾을 수 있다는 보장을 할 수 없다.

 

배치 경사 하강법

비용함수의 그래디언트를 구하고, 일정한 비율만큼 그래디언트 방향으로 이동하여 모델 파라미터를 얻은 다음, 해당 지점에서 다시 그래디언트를 구하여 이동하는 과정(batch)를 반복하면 언젠가는 최솟값에 수렴할 수 있다. 반드시 전역 최솟값에 수렴한다는 보장은 없지만, 선형 회귀의 비용함수는 2차 식이므로 볼록함수이다. 따라서 지역 최솟값은 존재하지 않는다.

비용 함수의 도함수는 다음과 같이 나타낸다.

$\frac{\partial}{\partial\theta_{j}}MSE(\theta)=\frac{2}{m}\sum_{i=1}^{m}(\theta^{T}\textbf{x}^{(i)}-y^{(i)})x_{j}^{(i)}$

이를 벡터화 하면 다음과 같다.

$\triangledown_{\theta}MSE(\theta)=\frac{2}{m}X^{T}(X\theta-\textbf{y})$

학습률을 고려한 다음 스텝의 모델 파라미터는 다음과 같이 구할 수 있다.

$\theta^{(next step)}=\theta-\eta\triangledown_{\theta}MSE(\theta)$

배치 경사 하강법은 비용함수의 그래디언트를 구하기 위해 모든 훈련세트의 샘플을 이용하여 계산한다. 따라서 샘플이 늘어날 수록 계산 소요 시간이 증가한다. 하지만 대체로 안정적으로 최솟값에 수렴한다.

 

확률적 경사 하강법

배치 경사 하강법과 동일한 방법이지만 훈련세트의 모든 샘플을 이용하여 그래디언트를 계산하는 대신, 무작위로 고른 특정 샘플에 대해서 그래디언트를 구하는 방법으로 배치 경사 하강법에 비해 불안정하지만 (샘플 개수와 무관하게) 빠르고, 지역 최솟값에 수렴을 피할 수 있다는 장점이 있다. 하지만 무작위로 샘플을 선택하는 만큼 최솟값에 다가갈 수록 오히려 수렴하지 못하는 현상이 발생할 수 있다. 이는 학습률을 점진적으로 감소시킴(학습 스케쥴 함수)으로써 해결할 수 있다. 

확률적 경사 하강법이 원활하게 동작하려면 다음이 전제 되어야 한다.

  • 훈련 샘플이 독립적이며 고르게 분포해야 한다.
  • 모든 샘플에 대하여 무작위 순서로 선택해야 한다.

그렇지 않으면 특정 샘플에 최적화 되거나, 특정 패턴으로 학습하게 되어 최솟값에 도달하지 못할 수 도 있다.

 

미니배치 경사 하강법

배치 경사 하강법과 확률적 경사 하강법의 중간으로, 일부 샘플에 대해서 배치 경사 하강법을 수행하는 방법이다.

 

다항 회귀

만약 데이터의 형태가 비선형적이더라면 기존의 특성을 제곱, 세제곱하여 새로운 특성을 만들고 마치 독립된 새로운 특성으로 간주한다면 위에서 다룬 선형 회귀를 그대로 적용할 수 있다.

 

학습 곡선 

선형, 다항 회귀 모델의 성능을 검토하는 방법 중 하나로 학습 곡선이 있다.학습 곡선은 훈련 세트와 검증 세트의 RMSE 를 비교하여 과대 / 과소 적합 여부를 판단하는 도구이다.

과소 적합

형태

  • 훈련 세트와 검증 세트가 금방 수렴한다.
  • RMSE 가 높다.

해법

  • 추가 학습이 의미가 없다.
  • 모델을 더 복잡하게 바꾸거나, 특성을 변경한다.

과대 적합

형태

  • 훈련 세트의 RMSE 는 낮거나 적절하다.
  • 훈련 세트와 검증 세트 사이에 갭이 있으며, 수렴하지 않고 평행하다.

해법

  • 검증 오차가 훈련 오차에 수렴할 때 까지 더 많은 훈련 데이터를 반영한다.
  • 모델을 규제한다 (=단순하게 한다).

 

규제가 있는 선형 모델

릿지 회귀

정의

$J(\theta)=MSE(\theta)+\alpha\frac{1}{2}\sum_{i=1}^{n}\theta_i^2$

특징

  • 모든 모델의 가중치가 가능한 작게 유지되도록 한다.
  • $\alphs$ 의 값이 클 수록 규제가 크다 = 모든 가중치가 낮아진다 = 단순한 모델이 된다.
  • 입력 특성의 스케일에 민감하므로 데이터 스케일링 필요하다.

 

라쏘 회귀

정의

$J(\theta)=MSE(\theta)+\alpha\sum_{n}^{i=1}\left|\theta_{i}\right|$

특징

  • 덜 중요한 특성의 가중치를 0에 수렴시킨다.
  • $\theta_{i}=0$ 일때 미분 불가하므로 전역 최적값 근처에서 진동한다.
  • 점진적으로 학습률을 낮춰야 수렴이 가능하다.

 

엘라스틱넷

정의

$J(\theta)=MSE(\theta)+\gamma\alpha\sum_{n}^{i=1}\left|\theta_{i}\right|+\frac{1-\gamma}{2}\sum_{i=1}^{n}\theta_{i}^2$

릿지 회귀와 라쏘 회귀를 섞어 사용한다.

 

규제의 선택

  • 단순 선형 회귀 : 규제 불필요.
  • 일반적으로 : 릿지 회귀 사용.
  • 실효 특성이 일부라 의심 : 라쏘, 엘라스틱넷 사용.

 

로지스틱 회귀

정의

$\hat{p}=h_{\theta}(\textbf{x})=\sigma(\theta^T\textbf{x})$

$\sigma(t)=\frac{1}{1+e^{(-t)}}$

따라서 확률 0.5 를 기준으로 미만일때 0, 이상일때 1로 예측한다.

 

비용함수

$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{(i)}log(\hat{p}^{(i)}) + (1-y^{(i)})log(1-\hat{p}^{(i)}) \right ]$

비용 함수가 y=1 일때와 y=0 일때로 구분되어있지만 둘을 하나의 식으로 합치는 것이 가능하다. 따라서 로지스틱 비용함수의 gradient 는 다음과 같이 나타낸다.

$\frac{\partial}{\partial\theta_{j}}J(\theta)=\frac{1}{m}\sum_{m}^{i=1}(\sigma(\theta^{T}\textbf{x}^{(i)})-y^{(i)})x_{j}^{(i)}$

비용함수는 볼록함수 이므로 반드시 전역 최적점으로 수렴한다.

 

결정경계

$\theta^{T}\textbf{x}$ = \theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...$ 이므로 결정경계면은 항상 n 차원 선형이다. 

 

소프트맥스 회귀

로지스틱 회귀 모델이 0 vs 1 로 분류하는 2진 분류기일때, 소프트맥스 회귀는 이를 3개 이상의 멀티클래스에서 사용할 수 있도록 일반화 한 모델이다. OvA (일대다) 로지스틱 회귀라면 N 개의 모델 중 가장 높은 점수를 선택하는 방식이지만 소프트맥스 회귀는 모든 클래스의 파라미터를 포함하는 행렬을 만들어 학습하고 졍규화 하여 특정 클래스에 속할 확률을 구하는 방식이다. 소프트맥스는 "타깃 클레스에 대해서는 높은 확률을, 그 외의 클래스에 대해서느너 낮은 확률을" 추정토록 하는 크로스 엔트로피 비용함수를 이용한다.

$J(\Theta)=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}y_{k}^{(i)}\log(\hat{p}_{k}^{(i)})$

이 함수의 그래디언트는 다음과 같다.

$\nabla_{\theta^{(k)}}J(\Theta)=\frac{1}{m}\sum_{i=1}^{m}(\hat{p}_{k}^{(i)}-y_{k}^{(i)})\textbf{x}^{(i)}$