Загружаем каталог…
Загружаем каталог…
선형대수로 이해하는 선형회귀 2편 — 성분별 미분에서 행렬 미분까지 1편에서는 집 네 채의 예측 가격과 실제 가격의 차이를 모아 손실함수 $J(\theta)$를 만들었다. 손실이 작을수록 현재 계수로 만든 예측 평면이 이 네 집의 가격에 더 잘 맞는다는 뜻이다. 그러나 $J(2,0.5,0.5)=0.25$라는 값만으로는 손실을 줄이려면 어떤 계수를 어느 방향으로 바꿔야 하는지 알 수 없다. 손실이 계수의 변화에 따라 어떻게 달라지는지를 알아야 다음 이동 방향을 정할 수 있다. 이번 편에서는 먼저 계수 하나만 바꾸어 변화율의 뜻을 확인하고, 그 결과를 세 계수와 행렬 전체로 확장한다. 선형대수로 이해하는 선형회귀 1편. 잔차와 손실함수 2편. 성분별 미분에서 행렬 미분까지 (현재 글) 3편. 벡터 미분과 Hessian (준비 중) 4편. 경사하강법과 뉴턴 방법 (준비 중) 5편. 정규방정식과 최소제곱해 (준비 중) 방 수 계수 하나만 바꾸어 보기 1편에서 계산을 위해 고른 계수는 $\theta=(2,0.5,0.5)^T$였다. 이때 집 네 채의 잔차는 차례로 $0.5,-0.5,0,0$억 원이고 손실은 $0.25$였다. 이제 이 계수에서 출발해, 계수를 조금 바꾸었을 때 손실이 어떻게 달라지는지 계산한다. 한꺼번에 세 계수를 바꾸면 어느 계수가 손실에 영향을 주었는지 구분하기 어렵다. 먼저 절편 $\theta_0=2$와 면적 계수 $\theta_1=0.5$는 그대로 두고, 방 수 계수 $\theta_2$만 바꾸어 보자. 바꾼 양을 $\delta$라고 쓰면 새 계수는 다음과 같다. $\delta>0$이면 계수를 늘리고, $\delta<0$이면 줄인 것이다. $$ \theta(\delta)=\begin{pmatrix}2\0.5\0.5+\delta\end{pmatrix}. $$ 집의 면적과 방 수, 실제 가격은 그대로다. 예측식에 새 계수를 넣으면 $\delta$가 어디에 영향을 주는지 보인다. $$ \begin{aligned} h_{\theta(\delta)}(x_{i1},x_{i2}) &=2+0.5x_{i1}+(0.5+\delta)x_{i2}\ &=\underbrace{2+0.5x_{i1}+0.5x_{i2}} {\text{기존 예측값}}+x {i2}\delta. \end{aligned} $$ 방이 두 개인 집의 예측 가격은 $2\delta$, 방이 세 개인 집은 $3\delta$만큼 변한다. $\delta$의 단위는 억 원/개이므로 각각의 변화량은 억 원 단위다. 실제 가격 $y_i$는 바뀌지 않으므로 잔차 $r_i=\text{예측값}-y_i$도 같은 양만큼 변한다. 앞에서 구한 네 예측 가격 $5.5,6,6.5,7$을 이용하면 $$ \begin{aligned} r_1(\delta)&=(5.5+2\delta)-5=0.5+2\delta,\ r_2(\delta)&=(6+3\delta)-6.5=-0.5+3\delta,\ r_3(\delta)&=(6.5+2\delta)-6.5=2\delta,\ r_4(\delta)&=(7+3\delta)-7=3\delta \end{aligned} $$ 가 된다. $\delta=0$을 넣으면 다시 1편의 잔차 $0.5,-0.5,0,0$이 나온다. 손실함수는 잔차를 제곱해 더한 값의 절반이다. 방금 구한 네 잔차를 손실함수에 넣으면 다음 식이 된다. 각 제곱은 $(a+b)^2=a^2+2ab+b^2$로 전개한다. $$ \begin{aligned} J(\theta(\delta)) &=\frac12\bigl[(0.5+2\delta)^2+(-0.5+3\delta)^2+(2\delta)^2+(3\delta)^2\bigr]\ &=\frac12\bigl[(0.25+2\delta+4\delta^2) +(0.25-3\delta+9\delta^2)+4\delta^2+9\delta^2\bigr]\ &=\frac12(0.5-\delta+26\delta^2)\ &=0.25-0.5\delta+13\delta^2. \end{aligned} $$ 두 괄호에서 나온 $2\delta$와 $-3\delta$를 더하면 $-\delta$가 된다. $\delta^2$의 계수는 $4+9+4+9=26$이다. 아직 작은 항을 버린 것이 아니다. 이 식은 $\delta$를 얼마로 잡든 정확하다. 처음 손실은 $J(\theta(0))=0.25$다. 새 손실에서 이 값을 빼면, 계수를 $\delta$만큼 바꿔서 생긴 손실의 변화량이 나온다. $$ J(\theta(\delta))-J(\theta(0))=-0.5\delta+13\delta^2. $$ 예를 들어 $\delta=0.01$이면 새 손실은 $0.2463$이고 변화량은 $0.2463-0.25=-0.0037$이다. 방 수 계수를 $0.01$ 늘렸더니 손실이 줄었다. 반대로 $\delta=-0.01$이면 새 손실은 $0.2563$, 변화량은 $+0.0063$이다. 같은 만큼 계수를 줄였더니 손실이 늘었다. 이 두 결과는 각각 $0.01$만큼 이동했을 때의 손실 차이를 보여 준다. 하지만 $0.01$은 임의로 고른 하나의 이동량일 뿐이다. 현재 계수 $\theta_2=0.5$에서 손실이 어느 쪽으로, 얼마나 빠르게 변하는지 알려면 이동량을 바꾸어도 비교할 수 있는 양이 필요하다. $\delta=0.001$로 움직이면 손실의 변화량은 $-0.000487$이다. 이동량이 작아지면 손실 변화량 자체도 함께 작아지므로, 손실 변화량만 비교해서는 두 이동을 공정하게 비교할 수 없다. 그래서 손실 변화량을 계수의 변화량으로 나눈 평균 변화율을 계산한다. 이는 일변수 함수에서 두 점 사이의 평균 변화율을 구하는 것과 같다. $$ \begin{aligned} \delta=0.01 &: \quad \frac{-0.0037}{0.01}=-0.37,\ \delta=0.001 &: \quad \frac{-0.000487}{0.001}=-0.487. \end{aligned} $$ 두 평균 변화율이 다른 이유는 손실 그래프가 직선이 아니라 곡선이기 때문이다. $-0.37$은 $\delta=0$부터 $0.01$까지, $-0.487$은 $\delta=0$부터 $0.001$까지의 평균 기울기다. 따라서 둘 다 출발점 바로 그곳 의 변화율은 아니다. 출발점에서의 변화율을 얻으려면 이동 구간을 0에 한없이 가깝게 줄여야 한다. 이를 한 번에 계산하기 위해 일반적인 $\delta$에 대해 평균 변화율을 정리하면 $$ \begin{aligned} \frac{J(\theta(\delta))-J(\theta(0))}{\delta} &=\frac{(0.25-0.5\delta+13\delta^2)-0.25}{\delta}\ &=\frac{-0.5\delta+13\delta^2}{\delta}\ &=-0.5+13\delta\qquad(\delta\ne0). \end{aligned} $$ 가 된다. $\delta=0$을 직접 넣으면 $0$으로 나누게 되므로, 대신 $\delta$를 $0$에 한없이 가깝게 보낸다. 그러면 $13\delta$가 $0$으로 가고 평균 기울기는 $-0.5$에 가까워진다. 이것이 출발점에서의 변화율이다. 다른 두 계수를 고정한 채 한 계수에 대해 이렇게 구한 변화율을 편미분 이라고 한다. $$ \left.\frac{\partial J}{\partial\theta_2}\right| {\theta=(2,0.5,0.5)} =\lim {\delta\to0}\frac{J(\theta(\delta))-J(\theta(0))}{\delta} =-0.5. $$ 파란 곡선은 $J(\theta(\delta))=0.25-0.5\delta+13\delta^2$를 그대로 그린 것이다. 검은 점은 $\delta=0$에서의 손실 $0.25$이고, 양쪽 빨간 점은 $\delta=\pm0.01$의 손실이다. 검은 점에서 오른쪽 빨간 점까지의 평균 기울기는 앞에서 계산한 $-0.37$이다. 회색 점선은 구간을 점점 줄였을 때 얻는 기울기 $-0.5$로 검은 점을 지나는 접선이다. 실제 곡선과 접선의 차이는 $13\delta^2$이므로 출발점에 가까워질수록 그 차이가 이동량 $\delta$에 비해 작아진다. 접선의 기울기가 음수라는 것은 방 수 계수를 지금 값에서 조금 늘릴 때 손실이 내려간다는 뜻이다. 계속 늘려도 언제나 내려간다는 뜻은 아니다. 세 계수의 변화율을 모으기 방 수 계수의 변화율 $-0.5$만으로는 나머지 두 계수를 어떻게 바꿔야 할지 알 수 없다. 앞에서는 $\theta_2$를 움직여 각 집의 잔차가 달라지는 양을 구했다. 절편 $\theta_0$와 면적 계수 $\theta_1$에도 같은 계산을 적용해 보자. 집 $i$의 예측값은 $\theta_0+\theta_1x_{i1}+\theta_2x_{i2}$다. $\theta_0$만 $\delta$만큼 늘리면 어느 집이든 예측값이 $\delta$만큼 늘어난다. $\theta_1$만 늘리면 집 $i$의 예측값은 $x_{i1}\delta$만큼, $\theta_2$만 늘리면 $x_{i2}\delta$만큼 늘어난다. 관측값은 그대로이므로 잔차도 각각 같은 양만큼 변한다. 세 경우를 한 식으로 쓰기 위해 절편 앞의 $1$을 $x_{i0}=1$이라고 놓는다. 그러면 $j=0,1,2$ 중 하나를 고르고 그 계수만 바꿀 때 $$ r_i(\delta)=r_i+x_{ij}\delta $$ 가 된다. 여기서 $r_i$는 바꾸기 전의 잔차다. 앞 절에서 $j=2$일 때 네 잔차가 $0.5+2\delta,-0.5+3\delta,2\delta,3\delta$가 된 것도 이 식에 해당한다. 잔차의 변화가 손실의 변화로 어떻게 이어지는지도 집 한 채에서 확인해 보자. 집 $i$의 손실을 $L_i=\frac12r_i^2$라고 놓으면 전체 손실은 $J=L_1+L_2+L_3+L_4$다. 첫 번째 집에서는 $$ r_1=\theta_0+5\theta_1+2\theta_2-5, \qquad L_1=\frac12r_1^2 $$ 이다. $\theta_2$를 바꾸면 먼저 잔차 $r_1$이 바뀌고, 그 잔차 때문에 $L_1$이 바뀐다. 즉 $\theta_2\to r_1\to L_1$의 두 단계를 거친다. $r_1$이 변할 때 손실이 변하는 비율과 $\theta_2$가 변할 때 잔차가 변하는 비율을 따로 계산하면 $$ \frac{dL_1}{dr_1} =\frac{d}{dr_1}\left(\frac12r_1^2\right)=r_1, \qquad \frac{\partial r_1}{\partial\theta_2}=2=x_{12} $$ 가 된다. 뒤 식에서는 다른 계수와 집의 입력값을 고정했으므로 $2\theta_2$만 미분값에 남는다. 두 변화율을 곱하는 연쇄법칙을 적용하면 $$ \frac{\partial L_1}{\partial\theta_2} =\frac{dL_1}{dr_1}\frac{\partial r_1}{\partial\theta_2} =r_1x_{12} $$ 다. 지금 계수에서 $r_1=0.5$이고 $x_{12}=2$이므로 첫 번째 집의 기여는 $0.5\cdot2=1$이다. 계수가 잔차에 미치는 영향 $2$와 잔차가 손실에 미치는 영향 $0.5$를 곱한 값이다. 다른 집도 같은 방식으로 미분한다. $J$는 네 집의 손실을 더한 것이므로 합의 미분법에 따라 $$ \begin{aligned} \frac{\partial J}{\partial\theta_2} &=\frac{\partial L_1}{\partial\theta_2} +\frac{\partial L_2}{\partial\theta_2} +\frac{\partial L_3}{\partial\theta_2} +\frac{\partial L_4}{\partial\theta_2}\ &=r_1x_{12}+r_2x_{22}+r_3x_{32}+r_4x_{42}\ &=\sum_{i=1}^4r_ix_{i2}. \end{aligned} $$ 마지막의 $\sum$는 네 항의 덧셈을 줄여 쓴 표기다. 방 수 계수만 특별한 것은 아니다. 앞에서 $x_{i0}=1$로 놓았으므로, 어느 $j=0,1,2$에 대해서도 $r_i=\theta_0+\theta_1x_{i1}+\theta_2x_{i2}-y_i$를 $\theta_j$로 미분하면 $x_{ij}$가 남는다. 같은 연쇄법칙을 집 $i$에 적용하면 $$ \frac{\partial L_i}{\partial\theta_j} =\frac{dL_i}{dr_i}\frac{\partial r_i}{\partial\theta_j} =r_ix_{ij} $$ 다. 집 네 채의 손실을 각각 미분해서 더하면 $\partial J/\partial\theta_j=\sum_{i=1}^4r_ix_{ij}$가 된다. 이는 새로 정한 공식이 아니라 $J$를 실제로 미분해 얻은 결과다. 이제 계수 벡터에서도 어느 계수 하나만 바꿨는지 표시하자. $\mathbf e_0=(1,0,0)^T$, $\mathbf e_1=(0,1,0)^T$, $\mathbf e_2=(0,0,1)^T$는 각각 해당 자리만 $1$인 벡터다. 예를 들어 $\theta+\delta\mathbf e_1=(\theta_0,\theta_1+\delta,\theta_2)^T$는 면적 계수만 바꾼 경우다. 마찬가지로 $\theta+\delta\mathbf e_j$는 $\theta_j$만 $\delta$만큼 바꾼 계수를 뜻한다. 앞 절에서 사용한 변화량 계산으로도 같은 결과가 나오는지 확인해 보자. 새 잔차를 $J=\frac12\sum_{i=1}^4r_i^2$에 넣고 제곱을 전부 펼친 뒤 기존 손실을 빼면 $$ \begin{aligned} J(\theta+\delta\mathbf e_j)-J(\theta) &=\frac12\sum_{i=1}^4(r_i+x_{ij}\delta)^2-\frac12\sum_{i=1}^4r_i^2\ &=\frac12\sum_{i=1}^4\bigl(r_i^2+2r_ix_{ij}\delta+x_{ij}^2\delta^2\bigr)-\frac12\sum_{i=1}^4r_i^2\ &=\delta\sum_{i=1}^4r_ix_{ij}+\frac{\delta^2}{2}\sum_{i=1}^4x_{ij}^2. \end{aligned} $$ 두 번째 줄의 $r_i^2$ 합과 마지막에 뺀 기존 $r_i^2$ 합이 정확히 상쇄되어 세 번째 줄이 나온다. $\delta^2$ 항은 유한한 이동에서는 남아 있다. 앞 절처럼 변화량을 $\delta$로 나누면 $$ \frac{J(\theta+\delta\mathbf e_j)-J(\theta)}{\delta} =\sum_{i=1}^4r_ix_{ij}+\frac{\delta}{2}\sum_{i=1}^4x_{ij}^2 \qquad(\delta\ne0) $$ 가 된다. 이제 $\delta\to0$으로 보내면 $\delta$가 붙은 마지막 항이 사라진다. 따라서 지금 계수에서 $\theta_j$만 움직일 때의 변화율은 연쇄법칙으로 구한 값과 같이 $$ \left.\frac{\partial J}{\partial\theta_j}\right| {\theta=(2,0.5,0.5)} =\sum {i=1}^4r_ix_{ij} $$ 가 된다. $\frac12$와 제곱을 펼칠 때 나온 $2$가 서로 없어졌기 때문에 합 앞에 별도의 계수가 붙지 않는다. 이제 네 집의 잔차 $\mathbf r=(0.5,-0.5,0,0)^T$를 대입한다. 집 $i$ 잔차 $r_i$ 절편: $r_ix_{i0}$ 면적: $r_ix_{i1}$ 방 수: $r_ix_{i2}$ 1 $0.5$ $0.5\cdot1=0.5$ $0.5\cdot5=2.5$ $0.5\cdot2=1$ 2 $-0.5$ $-0.5\cdot1=-0.5$ $-0.5\cdot5=-2.5$ $-0.5\cdot3=-1.5$ 3 $0$ $0$ $0$ $0$ 4 $0$ $0$ $0$ $0$ 열의 합 $0$ $0$ $-0.5$ 한 열의 합이 그 계수 하나에 대한 편미분값이다. 예를 들어 면적 계수는 첫째 집에서 $2.5$, 둘째 집에서 $-2.5$만큼 손실의 순간 변화율에 기여해 둘이 상쇄된다. 방 수 계수는 두 집의 기여가 $1-1.5=-0.5$라 상쇄되지 않는다. 이는 앞 절에서 직접 얻은 $\partial J/\partial\theta_2=-0.5$와 일치한다. 절편과 면적 계수의 편미분이 $0$이라고 해서 이 계수들을 바꿔도 손실이 그대로인 것은 아니다. 위의 정확한 변화량 에 네 집의 $x_{ij}^2$를 넣으면, 다른 두 계수를 고정하고 하나만 움직일 때 각각 $$ \begin{aligned} J(\theta+\delta\mathbf e_0)&=0.25+2\delta^2,\ J(\theta+\delta\mathbf e_1)&=0.25+74\delta^2,\ J(\theta+\delta\mathbf e_2)&=0.25-0.5\delta+13\delta^2 \end{aligned} $$ 가 된다. 첫 식의 $2$는 $(1^2+1^2+1^2+1^2)/2$, 둘째 식의 $74$는 $(5^2+5^2+7^2+7^2)/2$다. 절편이나 면적 계수를 조금만 바꾸면 손실은 $\delta^2$만큼 변하지만, 출발점에서의 1차 변화율 은 $0$인 것이다. 세 계수의 편미분을 세로로 쌓은 벡터를 gradient라고 한다. 지금 위치에서 계산한 값은 $$ \left.\nabla_\theta J\right| {\theta=(2,0.5,0.5)} =\begin{pmatrix} \partial J/\partial\theta_0\ \partial J/\partial\theta_1\ \partial J/\partial\theta_2 \end{pmatrix} {\theta=(2,0.5,0.5)} =\begin{pmatrix}0\0\-0.5\end{pmatrix}. $$ 이 벡터는 세 계수를 각각 조금 바꿨을 때의 손실 변화율을 한곳에 모은 것이다. 현재 위치에서는 방 수 계수를 조금 늘리면 손실이 줄고, 나머지 두 계수의 1차 변화율은 $0$이다. 열별 합의 행렬 표현 앞의 표에서 절편에 대한 편미분은 $r_1\cdot1+r_2\cdot1+r_3\cdot1+r_4\cdot1$이었다. 면적과 방 수에 대한 편미분은 그 자리에 각각 네 집의 면적 $5,5,7,7$과 방 수 $2,3,2,3$을 곱해 더했다. 이 세 계산에 쓰인 숫자는 이미 1편의 입력 행렬 $X$에 들어 있다. $$ X=\begin{pmatrix} 1&5&2\ 1&5&3\ 1&7&2\ 1&7&3 \end{pmatrix}, \qquad \mathbf r=\begin{pmatrix}0.5\-0.5\0\0\end{pmatrix}. $$ $X$에서는 집 한 채가 한 행 이고, 계수 하나에 곱해지는 값들이 한 열 이다. 그런데 행렬과 벡터를 곱하면 행마다 값 하나가 나온다. 따라서 계수별 열 합 세 개를 한 번에 얻으려면 $X$의 열을 행으로 바꾸어야 한다. 행과 열을 맞바꾼 행렬을 전치행렬이라고 하며 $X^T$로 쓴다. $$ X^T=\begin{pmatrix} 1&1&1&1\ 5&5&7&7\ 2&3&2&3 \end{pmatrix}. $$ $X^T$의 첫 행은 절편에 곱해진 네 개의 $1$, 둘째 행은 네 집의 면적, 셋째 행은 방 수다. 이제 각 행에 잔차 벡터를 곱하면 앞의 표에서 열마다 더했던 계산이 그대로 나온다. $$ \begin{aligned} X^T\mathbf r &=\begin{pmatrix} 1(0.5)+1(-0.5)+1(0)+1(0)\ 5(0.5)+5(-0.5)+7(0)+7(0)\ 2(0.5)+3(-0.5)+2(0)+3(0) \end{pmatrix}\ &=\begin{pmatrix}0\0\-0.5\end{pmatrix}. \end{aligned} $$ 첫째 성분은 $\partial J/\partial\theta_0$, 둘째는 $\partial J/\partial\theta_1$, 셋째는 $\partial J/\partial\theta_2$와 일치한다. 이는 우연히 숫자가 같아진 것이 아니다. $X^T$에서 계수 $\theta_j$에 대응하는 행에는 $x_{1j},x_{2j},x_{3j},x_{4j}$가 있고, 이 행에 $\mathbf r$을 곱하면 앞에서 구한 $\sum_{i=1}^4r_ix_{ij}$가 된다. $j=0$에서는 $x_{i0}=1$이다. 따라서 세 편미분을 모은 식은 $$ \nabla_\theta J(\theta) =X^T\mathbf r =X^T(X\theta-\mathbf y) $$ 이다. 앞에서 이미 구한 편미분을 행렬 곱으로 짧게 쓴 것이지, 새로운
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
선형대수로 이해하는 선형회귀 2편. 선형대수로 이해하는 선형회귀 2편 — 성분별 미분에서 행렬 미분까지 1편에서는 집 네 채의 예측 가격과 실제 가격의 차이를 모아 손실함수 $J(\theta)$를 만들었다. 손실이 작을수록 현재 계수로 만든 예측 평면이 이 네 집의 가격에 더 잘 맞는다는 뜻이다. 그러나 $J(2,0.5,0.5)=0.25$라는 값만으로는 손실을 줄이려면 어떤 계수를 어느 방향으로 바꿔야 하는지 알 수 없다. 손실이 계수의 변화에 따라 어떻게 달라지는지를 알아야 다음 이동 방향을 정할 수 있다. 이번 편에서는 먼저 계수 하나만 바꾸어 변화율의 뜻을 확인하고, 그 결과를 세 계수와 행렬 전체로 확장한다. 선형대수로 이해하는 선형회귀 1편. 잔차와 손실함수 2편. 성분별 미분에서 행렬 미분까지…
Открыть источник