[Hands-On-Machine Learning]4장 모델 훈련

YJCho·2024년 10월 1일

오늘은 4장 모델 훈련에 대해 정리하려고 한다. 수식적인 내용은 따로 더 알아보고 싶어서 이번엔 치대한 간결하게 내용만 정리했다.

🔥4.1 선형 회귀

  • 선형 회귀 방정식을 정리하면 아래와 같다
y^=θ0+θ1x1++θnxn\hat{y} = \theta_0 +\theta_1 x_1 + \cdots + \theta_n x_n

y^\hat{y}는 예측된 값
nn은 feature 개수
xix_i는 i번째 feature 값
θj\theta_j는 j번째 모델의 파라미터

이 식을 벡터화된 식으로 정리하면 아래와 같다

y^=θ0(x)=θx\hat{y} = \theta_0(\textbf{x})=\boldsymbol{\theta} \,\cdot \textbf{x}

θ\boldsymbol{\theta}는 모델의 파라미터 벡터다.
편향인 θ0\theta_0를 포함하며 feature의 가중치 θ1\theta_1부터 θn\theta_n을 포함한다

x\textbf{x}는 instance(데이터 인스턴스 또는 샘플)의 feature vector다.
x0x_0 부터 xnx_n를 포함하며, x0x_0은 1이다

θx\boldsymbol{\theta} \,\cdot \textbf{x}θ\boldsymbol{\theta}x\textbf{x} 간의 외적이다.
θ0x0+θ1x1++θnxn\theta_0 x_0 +\theta_1 x_1 + \cdots + \theta_n x_n 값을 의미한다

hθh_\thetahypothesis function(입력 데이터에 대한 예측을 수행하는 가설 함수)이며, 모델 파라미터 θ\boldsymbol{\theta}를 사용한다

모델을 훈련시키기 위해 RMSE 방식이나 MSE 방식을 사용한다

훈련 집합 X\textrm{X}에 대한 선형 회귀 가설 함수 hθh_\theta를 계산하려면 아래 식을 이용할 수 있다.

MSE(X,hθ)=1mi=1m(θTx(i)y(i))2\textbf{MSE}(\textrm{X},h_\theta) = \frac{1}{m} \sum_{i=1}^{m}(\boldsymbol{\theta}^T \textbf{x}^{(i)} - \textbf{y}^{(i)})^2

파라미터 값을 담은 θ\boldsymbol{\theta}를 최소화 하는 비용함수를 구하기 위해 여러 방법이 있다. 명확한 수식으로 구하는 방법(닫힌 형태의 해)이 있다. 이 식을 Normal Equation(정규화 식)이라 한다.

Normal Equation

θ^=(XTX)1\hat{\boldsymbol{\theta}} = (\textrm{X}^{\textrm{T}}\textrm{X})^{-1}

θ^\hat{\boldsymbol{\theta}}는 비용 함수를 최소화 한 θ\boldsymbol{\theta}
y\textrm{y}y(1)y^{(1)}부터 y(m)y^{(m)}를 포함하는 타겟값

해를 구할 때 유사역행렬을 이용하는데, 이는 SVD를 이용하면 쉽게 구할 수 있음.

🔥4.2 경사 하강법

여러 종류에서 최적의 해법을 찾을 수 있는 일반적인 최적화 알고리즘

학습률 : 파라미터 스텝의 크기, 한 번에 내려가게 되는 정도라 생각하면 될 것 같다! 너무 작으면 전역 최솟값 도달 힘듦. 너무 크면 수렴안할 수 있어서 적당한 값 선택 필수

특성 스케일을 적용해야 빠르게 도달한다고 함
(x,y축을 같은 크기로 만들어준다 생각)

4.2.1 배치 경사 하강법

비용 함수가 얼마나 바뀌는지 계산 : 편도함수
적절한 학습률을 찾기 위해 그리드 서치 이용

하지만 그리드 서치는 수레기...느려
반복 횟수를 제한하면 되는데 이때 반복 횟루를 아주 크게 지정하고 그레이디언트 벡터가 아주 작아지면, 즉 벡터의 노름이 어떤 허용오차라 불리는 값보다 작아지면 중지하면 된다. 이렇게 허용오차보다 작아지면 경사 하강법이 거의 최솟값에 도달한 것이라 볼 수 있음.

4.2.2 확률적 경사 하강법

매 스텝에서 한 개의 샘플을 랜덤으로 선택하고, 그 샘플에 대한 그레이디언트 계산한다. 랜덤으로 고르기에 훨씬 불안정하고 마구 요동치게 된다. 무엇보다 최솟값에 안착은 못한다. 하지만 전역 최솟값을 찾을 가능성이 높고 외부 메모리 학습이 가능한 등 장점이 많다

4.2.3 미니배치 경사 하강법

확률적 경사 하강법에서 한 개의 샘플이 아닌 미니 배치라 불리는 임의의 작은 샘플 세트를 고른다 보면 된다.

🔥4.3 다항 회귀

다항 함수를 그려서 예측을 할 수 있다고 보면 된다.
각 특성의 거듭제곱을 새로운 특성으로 추가하고, 이 확장된 특성을 포함한 데이터셋에 선형 모델 훈련시키면 된다.

🔥4.4 학습 곡선

고차 다항 회귀 → 훈련 데이터 과대적합 ↑

성능 ↑ 교착 검증 점수 ↓ → 과대적합
성능 ↓ 교착 검증 점수 ↓ → 과소적합

과대적합 모델 개선하려면 검증 오차가 훈련 오차에 근접할 때까지 더 많은 훈련 데이터를 추가하는 것!

🔥4.5 규제가 있는 선형 모델

릿지 회귀

규제가 추가된 선형 회귀 버전, 훈련하는 동안에만 비용 함수에 추가된다.

릿지 회귀의 정규 방정식

θ^=(XTX+αA)1XTy\hat{\boldsymbol{\theta}} = (\textrm{X}^{\textrm{T}}\textrm{X}+\alpha\textrm{A})^{-1}\textrm{X}^{\textrm{T}}\textrm{y}

라쏘 회귀

선형 회귀의 또 다른 규제 버전, 릿지 회귀처럼 비용 함수에 규제항을 더하지만 l2l2 노름 대신 l1l1 노름 사용

덜 중요한 특성의 가중치를 제거하려고 함.
즉 자동으로 특성을 수행하고 희소 모델을 만든다.

*라쏘의 비용 함수는 θi=0\theta_i =0일 때 서브그레이디언트 벡트 g\textrm{g}를 사용하면 경사하강법을 적용하는데 문제가 안 든다.

엘라스틱넷 회귀

릿지 회귀와 라쏘 회귀를 절충한 모델

규제항 : 릿지와 휘괴의 규제항을 더한 것, 혼합 정도는 혼합 비율 r을 이용해 조절
r=0 → 릿지 회귀
r=1 → 라쏘 회귀

일단 평범한 선형 모델은 피하고, 릿지기 기본이 되지만 몇 가지 특성만 유용해 보이면 라쏘나 엘라스틱넷 선택! 특성 수가 훈련 샘플 수보다 많거나 특성 몇 개가 강하게 연관되어 있을 때는 라쏘보다는 엘라스틱넷 이용!

조기 종료(early stopping)

검증 오차가 최솟값에 도달하면 바로 훈련을 중지시키는 것

제프리 힌턴이 '훌륭한 공짜 점심'이라고 부름
생각보다 효과가 크다고 한다.

🔥4.6 로지스틱 회귀

샘플이 특정 클래스에 속할 확률을 추정하는데 이용
임곗값(보통 50%) 크면 양성 클래스(label=1), 작으면 음성 클래스(label=0)

4.6.1 확률 추정

선형 회귀 모델과 같이 입력 특성의 가중치 합 계산 + 편향
선형 회귀 처럼 바로 결과 출력이 아닌 로지스틱 출력

로지스틱 : 0과 1 사이의 값을 출력하는 시그모이드 함수

4.6.2 훈련과 비용 함수

모델의 파라미터 벡터를 찾는 것

로그 손실 : 전체 훈련 세트에 대한 비용 함수는 모든 훈련 샘플의 비용을 평균한 것
로그 손실은 최적해가 없지만 convex라 경사 하강법으로 전역 최솟값을 구할 수 있음.

4.6.3 결정 경계

  • 선형으로 나타남
  • 다른 선형 모델처럼 로지스틱 회귀 모델도 l1, l2 패널티 사용하여 규제 가능, 사이킷런은 l2 패널티를 기본으로 함

4.6.4 소프트맥스 회귀

로지스틱 회귀 모델은 이진 분류기를 훈련시켜 연결하지 않고 직접 다중 클래스 지원하도록 일반화 가능

이를 소프트맥스 회귀 또는 다항 로지스틱 회귀라 부름

방법 : 샘플 x가 주어지면 소프트맥스 회귀 모델이 각 클래스에 대한 점수를 계산하고, 그 점수에 소프트맥스 함수(정규화된 지수 함수)를 적용하여 각 클래스의 확률을 추정함.

각 클래스는 자신만의 파라미터 벡터가 있고, 이 벡터들은 파라미터 행렬에 행으로 저장된다.

"모델이 타깃 클래스에 대해서는 높은 확률을, 다른 클래스에서는 낮은 확률이 추정되도록 만드는 것이 목적" → 크로스 엔트로피 비용 함수를 최소화 하는 것

profile
호로록

0개의 댓글