K 개발자

모델 작동 원리 본문

인공지능/핸즈온 머신러닝

모델 작동 원리

ddingz 2020. 9. 30. 14:11

선형 회귀

선형 모델은 입력 특성의 가중치 합과 편향bias(절편intercept)이라는 상수를 더해 예측

선형 회귀 모델의 예측

$\hat{y}=\theta _ {0}+\theta _ {1}x_{1}+\theta _ {2}x_{2}+\cdots +\theta _ {n}x_{n}$

  • $\hat{y}$은 예측값
  • $n$은 특성의 수
  • $x_{i}$는 $i$번째 특성값
  • $\theta _ {j}$는 $j$번째 모델 파라미터 (편향 $\theta _{0}$과 특성의 가중치 $\theta _{1}, \theta _{2}, \cdots, \theta _{n}$을 포함)

선형 회귀 모델의 예측(벡터 형태)

$\hat{y}=h_{\theta }(x)=\theta \cdot x$

  • $\theta$는 편향 $\theta _ {0}$과 $\theta _ {1}$에서 $\theta _ {n}$까지의 특성 가중치를 담은 모델의 파라미터 벡터
  • $x$는 $x_{0}$에서 $x_{n}$까지 담은 샘플의 특성 벡터 ($x_{0}$는 항상 1)
  • $\theta \cdot x$는 벡터 $\theta$와 $x$의 점곱 ($\theta _ {0}x_{0}+\theta _ {1}x_{1}+\theta _ {2}x_{2}+\cdots +\theta _ {n}x_{n}$)
  • $h_{\theta}$는 모델 파라미터 $\theta$를 사용한 가설hypothesis 함수

선형 회귀 모델의 MSE 비용 함수

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

모델을 훈련시키려면 성능 측정 지표를 최소화하는 $\theta$를 찾아야 한다.
RMSE보다 MSE를 최소화하는 것이 같은 결과를 내면서 더 간단

정규방정식normal equation

비용 함수를 최소화하는 $\theta$값을 찾기 위한 해석적인 방법
$\hat{\theta }=(X^{T}X)^{-1}X^{T}y$

  • $\hat{\theta }$은 비용 함수를 최소화하는 $\theta$값
  • $y$는 $y^{(1)}$부터 $y^{(m)}$까지 포함하는 타깃 벡터

경사 하강법gradient descent(GD)

$\theta$를 임의의 값으로 시작해서 (무작위 초기화random initialization) 한 번에 조금씩 비용 함수(e.g. MSE)가 감소되는 방향으로 진행하여 알고리즘이 최솟값에 수렴할 때까지 점진적으로 향상

학습률learning rate

경사 하강법에서 중요한 파라미터는 스텝의 크기로, 학습률 하이퍼파라미터로 결정
학습률이 너무 작으면 알고리즘이 수렴하기 위해 반복을 많이 진행해야 하므로 시간이 오래 걸린다.
학습률이 너무 크면 알고리즘을 더 큰 값으로 발산하게 만들어 적절한 해법을 찾지 못하게 한다.

문제점

무작위 초기화 때문에 알고리즘이 전역 최솟값global minimum보다 덜 좋은 지역 최솟값local minimum에 수렴할 수 있다.
알고리즘이 평탄한 지역을 지나면 시간이 오래 걸리고 일찍 멈추게 되어 전역 최솟값에 도달하지 못할 수 있다.

스케일

경사 하강법을 사용할 때는 반드시 모든 특성이 같은 스케일을 갖도록 만들어야 한다. 그렇지 않으면 수렴하는 데 오래 걸린다.

배치 경사 하강법batch gradient descent

경사 하강법을 구현하려면 각 모델 파라미터 $\theta_{j}$에 대해 비용 함수의 그레이디언트를 계산

비용 함수의 편도함수partial derivative

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

비용 함수의 그레이디언트 벡터

$\nabla_{\theta}MSE(\theta)=\begin{pmatrix}
\frac{\partial}{\partial\theta_{0}}MSE(\theta)
\\ \frac{\partial}{\partial\theta_{1}}MSE(\theta)
\\ \vdots
\\ \frac{\partial}{\partial\theta_{n}}MSE(\theta)
\end{pmatrix}=\frac{2}{m}X^{T}(X\theta-y)$

경사 하강법의 스텝

$\theta^{(\text{next step})}=\theta-\eta\nabla_ {\theta}MSE(\theta)$
$\eta$는 학습률

확률적 경사 하강법stochastic gradient descent

매 스텝에서 한 개의 샘플을 무작위로 선택하고 그 하나의 샘플에 대한 그레이디언트를 계산
매 반복에서 다뤄야 할 데이터가 매우 적기 때문에 알고리즘이 빠르고 또한 매우 큰 훈련 세트도 훈련시킬 수 있다.
확률적(i.e. 무작위)이므로 비용 함수가 최솟값에 다다를 때까지 부드럽게 감소하지 않고 위아래로 요동치며 평균적으로 감소
무작위성은 지역 최솟값에서 탈출시켜줘서 좋지만 알고리즘을 전역 최솟값에 다다르지 못하게 한다는 점에서는 좋지 않다.

학습 스케줄learning schedule(학습률 스케줄learning rate schedule)

시작할 때는 학습률을 크게 하고 (수렴을 빠르게 하고 지역 최솟값에 빠지지 않게 한다.), 점차 작게 줄여서 알고리즘이 전역 최솟값에 도달하게 한다.
학습률이 너무 빨리 줄어들면 지역 최솟값에 갇히거나 최솟값까지 가는 중간에 멈춰버릴 수도 있다.
학습률이 너무 천천히 줄어들면 오랫동안 최솟값 주변을 맴돌거나 훈련을 일찍 중지해서 지역 최솟값에 머무를 수 있다.

미니배치 경사 하강법mini-batch gradient descent

각 스텝에서 미니배치라 부르는 임의의 작은 샘플 세트에 대해 그레이디언트를 계산
주요 장점은 행렬 연산에 최적화된 하드웨어, 특히 GPU를 사용해서 얻는 성능 향상
미니배치를 어느 정도 크게 하면 이 알고리즘은 파라미터 공간에서 SGD보다 덜 불규칙하게 움직인다.
SGD보다 최솟값에 더 가까이 도달하게 될 것이지만 지역 최솟값에서 빠져나오기는 더 힘들지도 모른다.

알고리즘 m이 클 때 외부 메모리 학습 지원 n이 클 때 하이퍼파라미터 수 스케일 조정 필요 사이킷런
정규방정식 빠름 No 느림 0 No N/A
SVD 빠름 No 느림 0 No LinearRegression
배치 경사 하강법 느림 No 빠름 2 Yes SGDRegressor
확률적 경사 하강법 빠름 Yes 빠름 ≥2 Yes SGDRegressor
미니배치 경사 하강법 빠름 Yes 빠름 ≥2 Yes SGDRegressor

(m은 훈련 샘플 수, n은 특성 수)


다항 회귀polynomial regression

비선형 데이터를 학습하는 데 선형 모델을 사용 가능
각 특성의 거듭제곱을 새로운 특성으로 추가하고, 이 확장된 특성을 포함한 데이터셋에 선형 모델을 훈련


학습 곡선

이 그래프는 훈련 세트와 검증 세트의 모델 성능을 훈련 세트 크기(또는 훈련 반복)의 함수로 나타낸다.
이 그래프를 생성하기 위해서는 단순히 훈련 세트에서 크기가 다른 서브 세트를 만들어 모델을 여러 번 훈련시킨다.
훈련 세트 오차와 검증 세트 오차 곡선이 수평한 구간을 만들고 높은 오차에서 가까이 근접해 있으면 과소적합
훈련 세트 오차와 검증 세트 오차 곡선 사이에 공간이 있으면 과대적합


규제가 있는 선형 모델

과대적합을 감소시키기 위해 선형 회귀 모델에서는 보통 모델의 가중치를 제한함으로써 규제
적어도 규제가 약간 있는 것이 대부분의 경우에 좋으므로 일반적인 평범한 선형 회귀는 피해야 한다.
릿지가 기본이지만 쓰이는 특성이 몇 개뿐이라고 의심되면 라쏘나 엘라스틱넷
특성 수가 훈련 샘플 수보다 많거나 특성 몇 개가 강하게 연관되어 있을 때는 보통 라쏘가 문제를 일으키므로 엘라스틱넷을 선호
규제가 있는 모델은 대부분 입력 특성의 스케일에 민감하기 때문에 수행하기 전에 데이터의 스케일을 맞추는 것이 중요

릿지ridge 회귀(티호노프Tikhonov 규제)

릿지 회귀의 비용 함수

$J({\theta}) = MSE({\theta}) + \alpha \dfrac{1}{2}\sum\limits_ {i=1}^{n}{\theta_i}^2$
규제항 $\alpha\sum\limits_ {i=1}^{n}{\theta_i}^2$ 이 비용 함수에 추가돼서 학습 알고리즘을 데이터에 맞추는 것뿐만 아니라 모델의 가중치가 가능한 작게 유지되도록 노력
규제항은 훈련하는 동안에만 비용 함수에 추가하고 모델의 훈련이 끝나면 모델의 성능을 규제가 없는 성능 지표로 평가
$\alpha=0$이면 릿지 회귀는 선형 회귀와 같아진다.
$\alpha$가 아주 크면 모든 가중치가 거의 0에 가까워지고 결국 데이터의 평균을 지나는 수평선이 된다.
편향 $\theta_{0}$는 규제되지 않는다.
경사 하강법에 적용하려면 MSE 그레이디언트 벡터에 $\alpha w$를 더하면 된다.

릿지 회귀의 정규방정식

$\hat{\theta}=(X^{T}X+\alpha A)^{-1}X^{T}y$
A는 편향에 해당하는 맨 왼쪽 위의 원소가 0인 (n+1)x(n+1)의 단위행렬identity matrix

라쏘least absolute shrinkage and selection operator(Lasso) 회귀

라쏘 회귀의 비용 함수

$J({\theta}) = MSE({\theta}) + \alpha \sum\limits_ {i=1}^{n}\left| \theta_i \right|$
중요한 특징은 덜 중요한 특성의 가중치를 제거 (i.e. 가중치가 0)
자동으로 특성 선택을 하고 희소 모델sparse model을 만든다. (i.e. 0이 아닌 특성의 가중치가 적다.)

라쏘 회귀의 서브그레이디언트 벡터subgradient vertor

$g(\theta,J)=\nabla_ {\theta}MSE(\theta)+\alpha \begin{pmatrix}
sign(\theta_ {1})\\
sign(\theta_ {2})\\
\vdots\\
sign(\theta_ {n})
\end{pmatrix}\text{ 여기서 }sign(\theta_ {i})=\begin{cases}
-1 & \theta_ {i}< 0\text{일 때}\\
0 & \theta_ {i}= 0\text{일 때}\\
+1 & \theta_ {i}> 0\text{일 때}
\end{cases}$
$\theta=0$일 때 미분 가능

엘라스틱넷elastic net

$J({\theta}) = \text{MSE}({\theta}) + r \alpha \sum\limits_{i=1}^{n}\left| \theta_i \right| + \dfrac{1 - r}{2} \alpha \sum\limits_{i=1}^{n}{{\theta_i}^2}$
규제항은 릿지와 라쏘의 규제항을 단순히 더해서 사용하며, 혼합 정도는 혼합 비율 $r$을 사용해 조절 (r=0이면 릿지, r=1이면 라쏘)

조기 종료early stopping

검증 에러가 최소에 도달하는 즉시 훈련을 멈춘다.
확률적 경사 하강법이나 미니배치 경사 하강법에서는 곡선이 매끄럽지 않아 검증 에러가 일정 시간 동안 최솟값보다 클 때 (모델이 더 나아지지 않는다고 확신이 들 때) 학습을 멈추고 검증 에러가 최소였을 때의 모델 파라미터로 되돌린다.


로지스틱 회귀logistic regression(로짓 회귀logit regression)

확률 추정

로지스틱 회귀 모델의 확률 추정(벡터 표현식)

$\hat{p}=h_{\theta}(x)=\sigma (\theta^{T}x)$
로지스틱logistic은 $\sigma (\cdot)$로 표시

로지스틱 함수

$\sigma (t)=\frac{1}{1+exp(-t)}$
로지스틱은 0과 1 사이의 값을 출력하는 시그모이드 함수sigmoid function

로지스틱 회귀 모델 예측

$\hat{y}=\begin{cases} 0 &\hat{p}<0.5\text{일 때} \\ 1 &\hat{p}\geq 0.5\text{일 때} \end{cases}$
$t<0$이면 $\sigma (t)<0.5$이고, $t\geq0$이면 $\sigma (t)\geq0.5$이므로 로지스틱 회귀 모델은 $\theta^{T}x$가 양수일 때 1(양성 클래스)이라고 예측하고, 음수일 때 0(음수 클래스)이라고 예측

훈련과 비용 함수

하나의 훈련 샘플에 대한 비용 함수

$c({\theta}) =\begin{cases} -\log(\hat{p}) & y=1\text{일 때} \\ -\log(1 - \hat{p}) & y=0\text{일 때} \end{cases}$
모델이 양성 샘플을 0에 가까운 확률로 추정하면 비용이 크게 증가하고 음성 샘플을 1에 가까운 확률로 추정해도 비용이 증가
반대로 음성 샘플의 확률을 0에 가깝게 추정하거나 양성 샘플의 확률을 1에 가깝게 추정하면 비용은 0에 가까워진다.

로지스틱 회귀의 비용 함수(로그 손실log loss)

$J({\theta}) = -\dfrac{1}{m} \sum\limits_{i=1}^{m}{\left[ y^{(i)} log\left(\hat{p}^{(i)}\right) + (1 - y^{(i)}) log\left(1 - \hat{p}^{(i)}\right)\right]}$
전체 훈련 세트에 대한 비용 함수는 모든 훈련 샘플의 비용을 평균한 것

로지스틱 비용 함수의 편도함수

$\dfrac{\partial}{\partial \theta_j}J({\theta}) = \dfrac{1}{m}\sum\limits_{i=1}^{m}\left(\sigma(\theta^T x^{(i)}) - y^{(i)}\right)x_j^{(i)}$
비용 함수의 $j$번째 모델 파라미터 $\theta_ {j}$에 대해 편미분

소프트맥스 회귀softmax regression(다항 로지스틱 회귀multinomial logistic regression)

클래스 k에 대한 소프트맥스 점수

$s_ {k}(x)=(\theta^{(k)})^{T}x$
샘플 $x$가 주어지면 먼저 소프트맥스 회귀 모델이 각 클래스 k에 대한 점수를 $s_ {k}(x)$를 계산하고, 그 점수에 소프트맥스 함수softmax function(정규화된 지수 함수normalized exponential function)를 적용하여 각 클래스의 확률을 추정
각 클래스의 파라미터 벡터 $\theta^{(k)}$를 파라미터 행렬parameter matrix $\Theta$에 행으로 저장

소프트맥스 함수

$\hat{p}_ {k}=\sigma (s(x))_ {k}=\frac{exp(s_ {k}(x))}{\sum_{j=1}^{k}exp(s_ {j}(x))}$

  • K는 클래스 수
  • $s(x)$는 샘플 $x$에 대한 각 클래스의 점수를 담은 벡터
  • $\sigma (s(x))_ {k}$는 샘플 $x$에 대한 각 클래스의 점수가 주어졌을 때 이 샘플이 클래스 $k$에 속할 추정 확률

소프트맥스 회귀 분류기의 예측

$\hat{y}=\underset{k}{\text{argmax}}\sigma (s(x))_ {k}=\underset{k}{\text{argmax}}s_ {k}(x)=\underset{k}{\text{argmax}}((\theta^{(k)})^{T}x)$
추정 확률이 가장 높은 클래스(가장 높은 점수를 가진 클래스)를 선택

크로스 엔트로피cross entropy 비용 함수

$J({\Theta}) = - \dfrac{1}{m}\sum\limits_{i=1}^{m}\sum\limits_ {k=1}^{K}{y_ k^{(i)}\log\left(\hat{p}_ k^{(i)}\right)}$
이 식에서 $y_ {k}^{(i)}$는 $i$번째 샘플이 클래스 $k$에 속할 타깃 확률
일반적으로 샘플이 클래스에 속하는지 아닌지에 따라 1 또는 0

클래스 k에 대한 크로스 엔트로피의 그레이디언트 벡터

$\nabla_ {{\theta}^{(k)}} J({\Theta}) = \dfrac{1}{m} \sum\limits_ {i=1}^{m}{(\hat{p}^{(i)}_ k - y_ k^{(i)}) x^{(i)}}$


실습코드링크 : 회귀 모델들

'인공지능 > 핸즈온 머신러닝' 카테고리의 다른 글

결정 트리  (0) 2020.10.10
서포트 벡터 머신  (0) 2020.10.06
분류 시스템  (0) 2020.09.12
머신러닝 프로젝트 주요 단계  (0) 2020.09.03
머신러닝이란  (0) 2020.09.03
Comments