본문 바로가기
ETC

[머신러닝 앤드류응] (Week2) 3. 해석적으로 파라미터 구하기

by bigpicture 2021. 4. 5.
반응형

앤드류 응 교수님의 코세라 머신러닝 강의를 요약하는 글입니다. Week2 의 상세 목차는 아래와 같습니다.

Week2 목차

1. Environment Setup Instructions (환경 설정)
2. Multivariate Linear Regression (다변량 선형 회귀)
3. Computing Parameters Analytically (해석적으로 파라미터 구하기)
4. Submitting Programming Assignments (프로그래밍 숙제)
5. Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼)


이번 글은 Week2의 3강인 Computing Parameters Analytically 요약입니다.


Week2 

3. Computing Parameters Analytically (해석적으로 파라미터 구하기)

1) Normal Equation (일반 공식)
2) Normal Equation Noninvertibility (역행렬 못구하는 경우)

 

1) Normal Equation (일반 공식)

비용함수에서 $\theta$를 구할 때, 알고리즘을 이용하지 않고 해석적으로 구하는 방법이 있습니다. 이 방법을 일반 공식(Normal equation)이라고 합니다. 

비용함수는 아래와 같습니다. 

$J(\theta_{0},\theta_{1},...,\theta_{n})=\frac{1}{2m}\sum_{i=1}^{m}\left ( h_{\theta}(x^{(i)})-y^{(i)}  \right )^2$

엔드류응은 일반공식이 유도되는 과정을 설명하지는 않습니다. 결과만 알려줍니다. 결과는 아래와 같습니다.

독립변수의 개수가 n개이고, 각 독립변수의 데이터의 수가 m개라고 합시다. X를 아래와 같이 정의합시다. 아래첨자는 독립변수의 종류이고, 위첨자는 각 독립변수 내에서의 원소 번호입니다. 

$X=\begin{bmatrix}
1 & x_{1}^{(1)} & x_{2}^{(1)} & ... & x_{n}^{(1)} \\ 
1 & x_{1}^{(2)} & x_{2}^{(2)} & ... & x_{n}^{(2)} \\
 &  & ... &  & \\ 
1 & x_{1}^{(m)} & x_{2}^{(m)} & ... & x_{n}^{(m)} \\
\end{bmatrix}$

$\theta$ 는 아래와 같이 계산됩니다. 

$\theta=\left ( X^{T}X \right )^{-1}X^{T}y$

이 수식이 어떻게 유도되는지 알아봅시다. 

 

벡터 $\theta$를 아래와 같이 정의합시다. 

$\theta=\begin{bmatrix}
\theta_{0} \\ 
\theta_{1} \\ 
\theta_{2} \\ 
... \\ 
\theta_{n} 
\end{bmatrix}$

가설함수의 값은 아래와 같이 계산됩니다. 가설함수행렬 이라고 해야 맞습니다. 

$h(x)=X\theta$

각 행은 총 m개 중 i번째 데이터의 가설함수값입니다. 

 

$h_{\theta}(x)=X\theta=\begin{bmatrix}
\theta_{0}+\theta_{1}x_{1}^{(1)}+\theta_{2}x_{2}^{(1)}+...++\theta_{n}x_{n}^{(1)}\\ 
\theta_{0}+\theta_{1}x_{1}^{(2)}+\theta_{2}x_{2}^{(2)}+...++\theta_{n}x_{n}^{(2)}\\  
... \\ 
\theta_{0}+\theta_{1}x_{1}^{(m)}+\theta_{2}x_{2}^{(m)}+...++\theta_{n}x_{n}^{(m)}\\ 
\end{bmatrix}
$

비용함수는 아래와 같이 계산됩니다. 

 

$J(\theta)=\frac{1}{2m}\left ( X\theta-y \right )^{T}\left ( X\theta -y\right )$

 

위 식을 아래와 같이 변형합니다. 

 

$J(\theta)=\frac{1}{2m}\left ( (X\theta)^{T}-y^{T} \right ) \left ( X\theta -y\right )$

 

우변을 전개합시다. 

 

$J(\theta)=\frac{1}{2m}\left ( (X\theta)^{T}X\theta-y^{T}X\theta - (X\theta)^{T}y+y^{T}y
 \right ) $

 

$(AB)^{T}=B^{T}A^{T}$이므로 아래와 같이 변형됩니다. 

 

$J(\theta)=\frac{1}{2m}\left ( \theta^{T}X^{T}X\theta-y^{T}X\theta - \theta^{T}X^{T}y+y^{T}y
 \right )$

 

우변의 두번째와 세번째 항을 봅시다. y는 차원이 (m,1) 인 벡터이고 X는 차원이 (m,n)인 행렬이므로 $y^{T}X$는 차원이 (1,n)인 벡터입니다. 또 $y^{T}X$ 은 $X^{T}y$ 와 원소가 같습니다. 하나는 열벡터 하나는 행벡터라는 차이는 있습니다. 두번째 항은 차원이 (1,n)인 벡터 $y^{T}X$에 차원이 (n,1)인 벡터 $\theta$를 곱한 것이므로 스칼라입니다. 세번째 항은 차원이 (1,n)인 벡터 $\theta$에 차원이 (n,1)인 벡터 $X^{T}y$를 곱한 것이므로 스칼라이고, 두번째 항과 세번째 항의 계산값은 같습니다. 따라서 아래와 같이 바꿀 수 있습니다. 

 

$J(\theta)=\frac{1}{2m}\left ( \theta^{T}X^{T}X\theta-2y^{T}X\theta +y^{T}y
 \right )$

 

이제 행렬 J를 벡터 $\theta$로 미분해야 하는데요. 행렬을 벡터로 미분하는 것입니다. 행렬을 벡터로 미분할 때 아래와 같은 성질이 성립합니다. 성질까지 증명하지는 않겠습니다. 

 

- 두 벡터의 곱 $ab$ 를 $x$로 미분한 결과는 $a^{T}$이다. 
- 벡터 $a$와 행렬 $X$에서, $a^{T}Xa$를 벡터 $a$로 미분한 결과는 $(X+X^{T})a$ 이다. 

 

위 두 성질을 적용하면 수식은 아래와 같이 미분됩니다. 

 

$\frac{\partial J(\theta)}{\partial \theta }=\frac{1}{2m}\left ( 2X^{T}X\theta-2X^{T}y
 \right )$

 

이 값이 0이면 됩니다. 따라서 아래 등식이 유도됩니다. 

 

$X^{T}X\theta=X^{T}y$

 

따라서 $\theta$는 아래와 같습니다. 

 

$\theta=\left ( X^{T}X \right )^{-1}X^{T}y$

 

경사하강법을 사용한 방법과 일반공식의 비교는 아래와 같습니다. 

 

 

n이 10000 보다 작으면 일반공식이, 10000보다 크면 경사하강법이 더 빠르다고 합니다. 물론 케바케일겁니다. 

 

 

 

2) Normal Equation Noninvertibility (일반공식의 비가역성, 역행렬 못구하는 경우)

일반공식을 풀기 위해서는 $X^{T}X$ 의 역행렬을 구해야합니다. 

 

앤드류응은 not invertable 과 noninvertable 을 구분해서 사용합니다. 아마 정방행렬이 아닌 경우를 not invertable이라고 말하는 것 같습니다. inv 함수가 아니라 pinv 함수를 사용하면 정방행렬이 아니어도 역행렬을 구해준다고 합니다. pinv 는 pseudo inverse 라는 의미입니다. 무어-펜로즈 유사역행렬을 구해줍니다. 앤드류 응은 이 내용을 자세히 다루지는 않습니다. 

$X^{T}X$가 noninvertable(비가역)인 경우는 크게 두가지가 있습니다. 

- 불필요한 변수가 있는 경우
  ex) $x_{1}=size in feet^{2}$, $x_{2}=size in m^{2}$
- 데이터에 비해 변수가 너무 많은 경우  $m\leq n$

불필요한 변수가 있는 경우 하나를 삭제합니다. 

데이터에 비해 변수가 많은 경우는 변수를 줄이거나 regularization 을 하는데 뒤에서 다룬다고 합니다. 

반응형

댓글