Cross Entropy 미분, 파트 5: 역전파를 이용한 바이어스 최적화
Source: Dev.to

이전 기사에서는 교차 엔트로피 손실의 도함수를 계산했습니다.
이번 기사에서는 역전파를 사용해 편향 항 (b_3)을 최적화하는 작업을 시작합니다.
Source:
초기 바이어스 설정
우리는 바이어스 (b_3)를 초기값으로 고정합니다:
[ b_3 = -2 ]
역전파가 실제로 모델을 개선하는지 확인하기 위해, 먼저 이 (b_3) 값에 대해 훈련 데이터 전체에 대한 교차 엔트로피를 계산합니다.
사용된 바이어스 값

우리는
[ b_3 = -2 ]
를 유지합니다.
순방향 전달 계산
단일 입력 예제에 대해 중간 값을 다음과 같이 계산합니다.
상위 노드

하위 노드

원시 출력 값

소프트맥스 확률

샘플당 교차 엔트로피 손실
| 꽃잎 | 꽃받침 | 종 | (p) | 교차 엔트로피 |
|---|---|---|---|---|
| 0.04 | 0.42 | Setosa | 0.15 | 1.89 |
| 1.00 | 0.54 | Virginica | 0.71 | 0.35 |
| 0.50 | 0.37 | Versicolor | 0.65 | 0.43 |
(b_3 = -2) 일 때 총 교차 엔트로피는
[ \text{Total CE} = 2.67 ]
손실 곡선 시각화
(b_3)의 다양한 값에 따라 전체 교차 엔트로피가 어떻게 변하는지 시각화하려면 (b_3)를 x축에, 전체 교차 엔트로피를 y축에 놓고 그래프를 그립니다. 여러 (b_3) 값을 평가하면 명확한 최소값을 가진 부드러운 핑크색 곡선이 나타납니다.
플롯을 생성하는 파이썬 코드
import numpy as np
import matplotlib.pyplot as plt
def relu(x):
return np.maximum(0, x)
def softmax(raws):
exp_vals = np.exp(raws)
return exp_vals / np.sum(exp_vals)
# 고정된 바이어스
b1 = 1.6
b2 = 0.7
b4 = 0
b5 = 1
# 샘플 학습 데이터: (꽃잎, 꽃받침, 실제 클래스)
data = [
(0.04, 0.42, 0), # Setosa
(1.00, 0.54, 2), # Virginica
(0.50, 0.37, 1), # Versicolor
]
def total_cross_entropy(b3):
total_ce = 0.0
for petal, sepal, target in data:
upper = petal * -2.5 + sepal * 0.6 + b1
bottom = petal * -1.5 + sepal * 0.4 + b2
raw_setosa = relu(upper) * -0.1 + relu(bottom) * 1.5 + b3
raw_versi = relu(upper) * 2.4 + relu(bottom) * -5.2 + b4
raw_virg = relu(upper) * -2.2 + relu(bottom) * 3.7 + b5
probs = softmax([raw_setosa, raw_versi, raw_virg])
total_ce += -np.log(probs[target])
return total_ce
b3_values = np.linspace(-6, 4, 200)
losses = [total_cross_entropy(b3) for b3 in b3_values]
plt.plot(b3_values, losses, color="pink")
plt.xlabel("b₃")
plt.ylabel("Total Cross Entropy")
plt.title("Cross Entropy vs b₃")
plt.show()

플롯은 핑크색 곡선을 보여주며, 가장 낮은 지점이 전체 교차 엔트로피를 최소화하는 (b_3) 값에 해당합니다.
다음은?
다음 기사 부분에서는 역전파(back‑propagation)를 사용하여 (b_3)를 이 최소값 쪽으로 이동시키고 단계별로 업데이트할 것입니다.
도구, 라이브러리 또는 전체 저장소를 더 쉽게 설치할 방법을 찾고 계신가요?
Installerpedia를 사용해 보세요 – 커뮤니티 기반, 구조화된 설치 프로그램.
설치 플랫폼은 최소한의 번거로움과 명확하고 신뢰할 수 있는 가이드로 거의 모든 것을 설치할 수 있게 해줍니다.
그냥 실행하세요:
ipm install repo-name
… 그리고 끝! 🚀
