https://youtu.be/SHEPb1JHw5o?si=TFQH2yxCxw4X8XKc
저번 강의에서 로지스틱 회귀 모델에 대해 알아봤습니다. 매개 변수들 $w$와 $b$를 학습하려면 비용함수를 정의해야 합니다. 로지스틱 회귀를 학습할 수 있는 비용함수에 대해 알아봅시다.
$\hat{y}=\sigma(w^Tx+b)\text{, where }\sigma(z)=\frac{1}{1+e^{-z}}$
지난번에 정의한 것을 요약하자면 $y$의 예측값은 $w^T \times x + b$의 시그모이드이며, 이때 시그모이드 함수 $σ(z)$는 상단 가운데 수식처럼 정의됩니다.
$\text{Given }\{(x^{(1)},y^{(1)})\text{, ... , }(x^{(m)},y^{(m)})\}\text{, want }\hat{y}^{(i)}\approx y^{(i)}$
로지스틱 회귀 모델의 매개 변수들 $w$와 $b$를 주어진 $m$개의 훈련 샘플로 학습할 때, 당연히 훈련 세트를 바탕으로 출력한 $\hat{y}^{[i]}$의 예측값이 훈련 세트에 포함된 참값 $y^{[i]}$에 가까워지도록 하고 싶을 것입니다.
맨 위의 공식을 더 설명하자면, 이 공식은 훈련 샘플 $x$가 주어졌을 때 $y$의 예측값을 정의하며, 각각의 훈련 샘플은 괄호로 감싸진 위첨자를 사용해 순서가 표시됩니다.
$\hat{y}^{(i)}=\sigma(w^Tx^{(i)}+b)\text{, where }\sigma(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}}$
$i$번째 훈련 샘플의 $\hat{y}$은 $w^Tx^{(i)} + b$에 시그모이드 함수를 적용해 구할 수 있습니다.
$z^{(i)}=w^Tx^{(i)}+b$
또한 여기서 $z^{(i)}$를 $w^Tx^{(i)} + b$로 정의할 수 있습니다.
앞으로도 이 강의에서는 $i$가 괄호 안에 위첨자로 있으면, 그것이 $x$이든 $y$이든 $z$이든 $i$번째 훈련 샘플에 관한 데이터임을 뜻하는 표기법으로서 쓰겠습니다.
이제 위첨자 $^{(i)}$의 뜻을 알았으니, 알고리즘이 얼마나 잘 가동되는지를 측정할 수 있는 손실 함수 또는 오차 함수에 대해 알아봅시다.
$\text{Loss (error) function : }\mathcal{L}(\hat{y},y)=\frac{1}{2}(\hat{y}-y)^2$
한 가지 할 수 있는 것은 알고리즘이 출력한 $\hat{y}$과 참값 $y$의 제곱 오차의 반으로 손실 함수를 정의할 수 있습니다. 이런 방식을 쓸 수 있지만 로지스틱 회귀에서는 주로 사용하지 않습니다. 이는 매개 변수들을 학습하기 위해 풀어야 할 최적화 함수가 볼록하지 않기 때문입니다. 그러므로 여러 개의 지역 최적값을 가지고 있게 되어 문제가 생깁니다. 이럴 경우 경사 하강법이 전역 최적값을 못 찾을 수도 있습니다. 방금 말한 것들을 이해하지 못했다면 나중에 설명할 테니 걱정하지 마세요.
여기서 얻어갈 점은 $L$이란 함수는 손실 함수이고, 출력된 $\hat{y}$과 참값 $y$ 사이에 오차가 얼마나 큰지 측정합니다. 제곱 오차가 합리적인 선택으로 보일 수 있지만 로지스틱 회귀에서는 경사 하강법을 적용하지 못하게 만듭니다.
그러므로 제곱 오차와 비슷한 역할을 하지만 최적화 문제가 볼록해지는 또 다른 손실 함수를 정의할 것입니다. 이러하면 최적화하기 더 쉬워집니다. 로지스틱 회귀에서는 이러한 손실 함수를 대신 씁니다.
$\mathcal{L}(\hat{y},y)=−(y × \log(\hat{y}) + (1 − y) × \log(1 − \hat{y}))$
이런 손실 함수를 왜 쓰는지에 대한 직관적인 이유를 드리자면, 우리가 만약 제곱 오차를 쓴다 하면 그 오차를 최소화하려 할 것입니다. 똑같이 이 로지스틱 회귀 손실 함수를 사용할 때 이 값을 최소화해야 합니다. 왜 이런 함수를 쓰는지 알아보기 위해 두 가지 경우를 살펴보겠습니다.
$\text{If}\quad y=1:\quad\mathcal{L}(\hat{y},y)=-\log\hat{y},\quad\text{want }\log\hat{y}\text{ large, want }\hat{y}\text{ large}$
첫번째 경우로 $y$가 1일 경우, 손실 함수 $L(\hat{y}, y)$는 그냥 $−\log(\hat{y})$이 됩니다. 이는 $y$가 1이기 때문에 두 번째 항 $(1 − y)$가 0이 되기 때문입니다. 그렇다면 $y$가 1일 경우 $−\log(\hat{y})$이 최대한 커지기를 원할 것입니다. 그러려면 $\log(\hat{y})$이 최대한 커져야 할 것이며, 따라서 $\hat{y}$이 최대한 커야 합니다. 하지만 $\hat{y}$은 시그모이드 함수 값이기 때문에 1보다 클 수 없습니다. 그러므로 $y$가 1일 경우 $\hat{y}$이 1보다 클 순 없으므로 1에 수렴하길 원한다는 뜻입니다.
$\text{If}\quad y=0:\quad\mathcal{L}(\hat{y},y)=-\log(1-\hat{y}),\quad\text{want }\log1-\hat{y}\text{ large, want }\hat{y}\text{ small}$
다른 경우는 $y$가 0일 경우입니다. $y$가 0일 때 손실 함수의 첫 항이 0이 됩니다. 그러면 두 번째 항이 남고, 손실 함수는 $−\log(1 − \hat{y})$이 됩니다. 따라서 학습 중에 손실 함수 값을 줄이고 싶다면, 마이너스 부호가 붙어 있기 때문에 $\log(1 − \hat{y})$이 최대한 커야 합니다. 따라서 아까와 비슷한 논리로 $y$의 예측값이 최대한 작아야 한다는 것을 알 수 있습니다. $\hat{y}$은 0과 1 사이여야 하므로, $y$가 0이면 손실 함수는 $\hat{y}$이 0에 수렴하도록 매개 변수들을 조정할 것입니다.
$y$가 1일 때 $\hat{y}$이 크고, $y$가 0일 때 $\hat{y}$이 작은 성질을 가지고 있는 함수들은 많습니다. 위에 적은 것은 이 손실 함수에 대한 비공식적인 검증이고, 왜 로지스틱 회귀에서 이러한 형태의 손실 함수를 사용하는지에 대한 더 공식적인 증명은 나중에 관련된 강의를 올릴 테니 참고하시면 됩니다.
손실 함수는 훈련 샘플 하나에 관하여 정의돼서, 그 하나가 얼마나 잘 예측 되었는지 측정해줍니다. 이제 비용 함수가 무엇인지 소개해 드리자면, 훈련 세트 전체에 대해 얼마나 잘 추측되었는지 측정해주는 함수입니다.
$\text{Cost function : }\mathcal{J}(w,b)=\frac{1}{m}\sum_{i=1}^m\mathcal{L}(\hat{y}^{(i)},y^{(i)})$
비용 함수 $\mathcal{J}$는 매개 변수 $w$와 $b$에 대해 손실 함수를 각각의 훈련 샘플에 적용한 값의 합들의 평균, 즉 $m$으로 나눈 값입니다.
$\text{Cost function : }\mathcal{J}(w,b)=-\frac{1}{m}\sum_{i=1}^m[(y^{(i)}\log\hat{y}^{(i)} + (1 − y^{(i)})\log(1 − \hat{y}^{(i)})]$
여기서 $\hat{y}^{(i)}$은 로지스틱 회귀 알고리즘이 정해진 매개 변수들 $w$와 $b$를 적용해서 출력하는 값이고, 위의 손실 함수의 정의를 이용해 이것을 풀어쓰자면 비용 함수는 $−(1 ÷ m)$를 $[(y^{(i)}\log\hat{y}^{(i)} + (1 − y^{(i)})\log(1 − \hat{y}^{(i)})]$을 $i = 1$부터 $i = m$까지의 합에 곱한 값과 같습니다. $y$에 관한 항을 전부 대괄호로 닫아 놓았기 때문에 마이너스 부호를 바깥으로 뺄 수 있습니다.
요점은 손실 함수가 하나의 훈련 샘플에 적용이 된다는 것이고, 비용 함수는 매개 변수의 비용처럼 작용한다는 것입니다. 결과적으로 로지스틱 회귀 모델을 학습하는 것이란 손실 함수 $J$를 최소화해주는 매개 변수들 $w$와 $b$를 찾는 것입니다.
이렇게 로지스틱 회귀 알고리즘의 큰 틀을 살펴보았습니다. 훈련 샘플에 대한 손실 함수와 알고리즘의 매개 변수들에 대한 비용 함수를 말입니다. 흥미롭게도 로지스틱 회귀는 아주 작은 신경망과 같습니다.
다음 강의에선 이를 다뤄 여러분이 신경망에 대한 직관을 얻으실 수 있도록 하겠습니다. 로지스틱 회귀가 어떻게 작은 신경망과 같은지, 다음 강의에서 함께 보도록 합시다.

댓글