CS/딥러닝

[딥러닝] 1. Logistic Regression

CSE 2026. 3. 11. 10:01

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를 합산 후 데이터의 수로 나눠 평균을 구해 가중치를 조정한다.

데이터 하나하나에 덜 영향을 받으면서 여러 데이터에 적합하게 가중치가 조정된다는 장점이 었다.