Logistic Regression에 대해 알아보자.
Binary Calssification
Logistic Regression이 사용되는 대표적인 문제 중 하나인 Binary Calssification을 알아보자.
두 개의 카테고리 중 어느 것에 속하는지를 분류하는 문제를 얘기한다.
어떤 이미지가 고양이를 포함하는지 아닌지 파악하는 task가 있다고 하자.
이 task는 이미지를 입력으로 받아 출력으로 고양이가 있을 확률을 출력한다.
내부적으로는 확률이지만 최종적으로는 특정 임계값을 기준으로 이 값보다 크면 1로, 작으면 0으로 취급해서 결과를 얘기할 때도 있다.
입력인 이미지는 색깔이 있는 이미지일 경우 아래처럼 RGB채널별로 값이 있을 것이다.
이 각 픽셀의 값들을 한줄로, 1차원으로 만들어 입력으로 사용한다

.
학습 시에는 하나의 이미지만 사용하지는 않기 때문에 여러 이미지가 있을 경우 아래처럼 notaion을 사용하자.

Loss Function
우리가 구하고자 하는, 주어진 이미지가 고양이일 확률을 $\hat{y}$라고 하면, 두가지 파라미터$w, b$를 사용해서 아래처럼 식을 구성할 수 있다.
$\hat{y} = \sigma(w^T x + b)$
여기서 $\sigma$는 시그모이드 함수를 의미한다.
시그모이드 함수의 특성상 결과값은 0과 1사이로 나오고, 이 특성을 활용해 결과를 바로 확률로 취급할 수 있다.

logistic regression의 목적은 예측값$\hat{y}$이 실제 정답과 가까워지도록 하는 $w,b$의 값을 구하는 것이다.
그럼 자연스럽게 이 예측치가 정답과 얼마나 가까운지, 먼지를 측정할 수단이 필요하다.
가장 쉽게 생각할 수 있는 것은 아래와 같은 간단한 식일 것이다.
$L(\hat{y}, y) = \frac{1}{2} (\hat{y} -y)^2$
이런 식은 loss function, error function, objective functinon등 여러 가지 말로 불린다.
우리의 목적은 이 식의 값을 최대한 줄이는 것이다.
위 식보다 조금 복잡한 cross entropy loss라고 불리는 식도 있다.
$L(\hat{y},y) = -(y log \hat{y} + (1-y)log (1-\hat{y})$
식이 직관적이지는 않지만 $y$가 1일 때, 0일 때 나눠서 생각해보면 금방 이해가 된다.
$y$가 1일 때는 식의 값이 작아지려면 $\hat{y}$의 값이 커져야 한다. 즉 1에 가까워야 하므로 자연스럽게 정답과 가까워진다.
$y$가 0일 때는 비슷한 이유로 $\hat{y}$가 작아져야한다.
Cost Function
방금 알아본 loss function은 하나의 이미지에 대해서만 적용이 되었다.
여러 이미지를 고려한 식은 아래와 같다.
각 이미지별 loss function을 그냥 더한 것이다.
$J(w,b) = \frac{1}{m} \sum_{i=1}^m L(\hat{y}^{(i)}, y^{(i)})$
Gradient Descent
우리의 목적은 $J(w,b)$의 값을 최소화시키는 $w,b$의 값을 찾는 것이다.
각 $w,b$의 값에 따라 $J$의 값이 아래처럼 바뀐다고 하자.
이때 가장 낮은 지점을 찾는 것으로 목표를 바꿀 수 있다.

$w$축을 기준으로 단면을 잘랐다고 생각해보자.
여기서 가장 낮은 지점을 찾는 방법은 아래 그림의 식과 같다.
어떤 지점에서 기울기를 구한다음 기울기의 아래 방향으로 이동시키는 것이다.
이를 반복하면 된다.

$w$축 뿐만이 아니라 $b$축에 대해서도 같은 작업을 하면 된다.
Computation Graph, Backpropagation
이때 미분을 쉽게 구하는 그래프가 computaion graph이다.
$J(a,b,c)=3(a+bc)$라는 식이 있다고 하자.

바로 초기변수 $a,b,c$에 대한 미분값을 구하기는 어렵기 때문에 중간 단계를 활용한다.
이후 chain rule을 사용해 쉽게 원하는 미분을 구할 수 있다.

역전파를 계산하는 법까지 알아봤다.
logistic regression에 역전파를 적용해보자.
$z=w^T x +b$
$\hat{y} = a = \sigma(z)$
$L(a,y)= -(y log a + (1-y) log (1-a))$

$dw_1$처럼 분수를 사용하지 않은 것은 대부분 최종 식($L()$)에 적용한 $\frac{dL}{dw_1}$이라고 생각하면 된다.
여기서 시그모이드 함수의 미분을 명시적으로 계산하지 않았는데 시그모이드 함수의 미분을 계산해보면 자기자신(1-자기자신)의 결과가 나온다.
이는 암기해두면 좋다.
하나의 데이터만 사용하지는 않기 때문에 m개의 데이터를 사용해 학습을 진행시키는 아래 슈도코드를 보자.

각각의 데이터에서 얻어진 gradient를 합산 후 데이터의 수로 나눠 평균을 구해 가중치를 조정한다.
데이터 하나하나에 덜 영향을 받으면서 여러 데이터에 적합하게 가중치가 조정된다는 장점이 었다.
'CS > 딥러닝' 카테고리의 다른 글
| [딥러닝] 6. 최적화 (0) | 2026.04.13 |
|---|---|
| [딥러닝] 5. Mini batch와 Batch Normalization (0) | 2026.04.01 |
| [딥러닝] 4. Deep Neural Network (0) | 2026.03.30 |
| [딥러닝] 3. multi layer network에서의 gradient 계산과 차원 (0) | 2026.03.25 |
| [딥러닝] 2. Shallow Neural Network / Activation function (0) | 2026.03.19 |