로지스틱 회귀는 훌륭한 분류기지만, 복잡한 비선형 결정 경계를 가진 데이터를 분류하는 데는 한계가 있다. 신경망(Neural Networks)은 이러한 한계를 극복하고, 모델이 데이터로부터 고차원의 복잡한 피처를 스스로 학습하여 문제를 해결하게 해주는 강력한 모델이다.
1. 신경망의 구조: 뇌에서 영감을 얻다
1.1. 뉴런 (Neuron): 하나의 로지스틱 회귀 유닛
신경망의 가장 기본 단위인 '뉴런'은 사실상 우리가 배운 로지스틱 회귀 유닛과 동일하다. 여러 입력을 받아 가중합을 구하고, 이를 **활성화 함수(Activation Function, 예: 시그모이드)**에 통과시켜 하나의 출력값을 만든다.
1.2. 계층 (Layer): 뉴런들의 집합
신경망은 이러한 뉴런들을 여러 층(Layer)으로 쌓아 구성된다.
- 입력층 (Input Layer): 외부 데이터를 받아들이는 층.
- 은닉층 (Hidden Layer): 입력층과 출력층 사이의 모든 층. 이 층이 깊어질수록 '딥러닝'이 된다. 은닉층은 데이터로부터 더 복잡하고 추상적인 피처를 스스로 학습하는 핵심적인 역할을 한다.
- 출력층 (Output Layer): 모델의 최종 예측값을 출력하는 층.
2. 신경망의 두 가지 핵심 동작
2.1. 순전파 (Forward Propagation): 예측값 계산하기
'순전파'는 입력 데이터가 신경망을 통과하여 최종 예측값이 나오는 과정이다. 입력층에서 출력층 방향으로 계산이 순차적으로 진행된다.
- 입력 데이터
x가 첫 번째 은닉층의 각 뉴런으로 전달된다.
- 첫 번째 은닉층의 각 뉴런은 자신만의 가중치(
W⁽¹⁾)로 계산을 수행하여 출력값a⁽¹⁾을 만든다.
- 첫 번째 은닉층의 출력(
a⁽¹⁾)이 두 번째 은닉층의 입력이 된다.
- 이 과정이 출력층까지 반복되어 최종 예측값
H(x)가 계산된다.
앞선 층의 출력이 다음 층의 입력이 되는 이 연쇄적인 계산을 통해, 신경망은 점차 복잡한 고차원의 피처를 만들어 간다.
2.2. 역전파 (Backpropagation): 똑똑하게 학습하기
'역전파'는 신경망이 수많은 가중치를 어떻게 학습할지를 알려주는 핵심 알고리즘이다. 출력층에서 입력층의 역방향으로 오차(Error)를 전달하여 각 가중치가 오차에 얼마나 기여했는지(기울기)를 효율적으로 계산한다.
- 순전파로 예측값
H(x)를 계산한다.
- 예측값
H(x)와 실제 정답y를 비교하여 오차를 계산한다.
- 계산된 오차를 출력층에서부터 거꾸로 전파하며, 각 층의 각 가중치가 이 오차에 얼마나 '책임'이 있는지(기울기)를 계산한다.
- 계산된 기울기 값을 이용하여 경사 하강법으로 모든 가중치를 업데이트한다.
W := W - α * (계산된 기울기)
3. 학습과 추론: 두 단계의 명확한 구분
신경망의 동작은 "학습" 단계와 "추론" 단계로 명확히 나뉜다.
3.1. 학습 (Training) 단계: 순전파 + 역전파
"오픈북 시험을 보며 공부하는 과정"
- 문제 풀기 (순전파): 훈련 문제를 현재 아는 지식(가중치)으로 풀어본다.
- 정답과 비교 (오차 계산): 내 답과 실제 정답을 비교해 얼마나 틀렸는지 확인한다.
- 오답 노트 작성 (역전파): 왜 틀렸는지 원인을 분석하여, 각 가중치가 오차에 얼마나 기여했는지(기울기)를 계산한다.
- 지식 업데이트 (가중치 업데이트): 오답 노트를 바탕으로, 다음엔 더 잘 풀도록 뇌 속의 지식(가중치)을 수정한다.
결론: 학습 단계에서는
순전파 → 오차계산 → 역전파 → 가중치 업데이트의 전체 사이클이 계속 반복된다.3.2. 예측/추론 (Inference) 단계: 순전파 ONLY
"공부를 다 끝내고 실전 시험을 보는 과정"
- 문제 풀기 (순전파): 처음 보는 새로운 문제를 받는다.
- 답안 제출 (예측값 출력): 그동안 열심히 공부해서 **최적화된 고정된 지식(가중치)**만을 이용해 문제를 풀어 최종 답안을 제출한다.
결론: 추론 단계에서는 더 이상의 학습 없이, 오직 순전파 과정만 일어난다.