ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CNN 필터는 어떻게 '스스로' 진화하는가? (역전파와 두 가지 가중치)
    AI 2026. 2. 4. 06:13

    딥러닝의 시작은 '아무 말 대잔치' (무작위성)

    딥러닝 모델을 처음 만들었을 때, 모델은 아무것도 모르는 상태입니다.

    • 랜덤 필터: 초기 필터에는 가로선, 세로선 같은 개념이 없습니다. -0.12, 0.45 같은 무작위 숫자들만 채워져 있죠. 그
    • 노이즈 피쳐맵: 이 랜덤 필터로 이미지를 훑으면(내적하면), 결과물인 액티베이션 맵(Activation Map) 역시 의미 없는 노이즈 점수만 가득합니다.
    • 근거 없는 자신감: 모델은 이 노이즈를 보고 "이건 70% 확률로 강아지야!"라고 아무렇게나 예측을 던집니다.

    FC 레이어의 입력은 사실 '유사도 점수판'이다

    많은 분이 간과하는 핵심입니다. FC(Fully Connected) 레이어가 받는 입력값의 정체는 무엇일까요?

    앞서 Conv 레이어에서 필터(패턴)와 원본 이미지 조각을 내적했다고 했습니다.

    수학적으로 내적은 곧 '유사도'입니다. 즉, 액티베이션 맵의 각 칸은 "이 위치에 내가 찾던 패턴이 얼마나 있나?"를 나타내는 점수입니다.

    • Flatten 과정: 이 2차원 유사도 점수판(Map)을 1차원으로 길게 펼칩니다.
    • FC의 입력: 결국 FC 레이어는 이미지 자체가 아니라, "필터들이 보고해온 위치별 유사도 점수들의 나열"을 입력으로 받습니다.
    • FC의 역할: "2번 유사도 맵의 왼쪽 상단 점수가 높고, 5번 맵의 중앙 점수가 높네? 그럼 이건 고양이 귀와 코일 확률이 높겠군!"이라고 판단하는 것입니다.

     


    에포크(Epoch)' 동안 일어나는 진화의 사이클

    1 에포크란 준비된 학습 데이터 전체를 모델이 한 번 다 훑는 과정을 말합니다. 이 한 번의 주기 동안 모델은 다음과 같은 치열한 과정을 거칩니다.

    STEP 1: 순전파 (Forward) - "일단 질러보기"

    이미지 → Conv(내적) → Activation Map(유사도 점수) → FC(판단) → Softmax(확률)

    • 모델이 현재 가진 '랜덤 필터'와 '랜덤 가중치'를 가지고 최대한 정답을 추측해 봅니다.

    STEP 2: 오차 계산 (Loss) - "성적표 받기"

    • 정답은 '고양이'인데 '강아지'라고 예측했다면, 그 차이만큼 벌점(Loss)을 받습니다. 이 벌점이 클수록 수정해야 할 양도 많아집니다.

    STEP 3: 역전파 (Backpropagation) - "범인 검거 및 수정"

    오차 신호가 모델의 끝에서부터 앞으로 거꾸로 흐르며 두 그룹의 가중치를 동시에 조각합니다.

    1. 뇌를 수정하기 (FC 가중치 $W_{fc}$): "유사도 점수들을 조합하는 내 판단력이 틀렸어. 앞으론 '귀' 유사도 점수에 더 큰 가중치를 줘야지."
    2. 눈을 수정하기 (필터 가중치 $W_{filter}$): "애초에 내 눈(필터)이 고양이의 특징을 못 잡고 있네. 필터 속 숫자를 아주 조금씩 바꿔서, 고양이의 뾰족한 선과 내적했을 때 값이 커지도록 필터 모양을 완성해야지!"

     

    수식적 원리: 체인 룰(Chain Rule)의 마법

    어떻게 저 끝의 오차가 앞의 필터까지 전달될까요? 바로 미분의 연쇄 법칙 때문입니다.

    $$\frac{\partial Loss}{\partial W_{filter}} = \frac{\partial Loss}{\partial \text{Output}} \times \frac{\partial \text{Output}}{\partial \text{FC}} \times \frac{\partial \text{FC}}{\partial \text{Map}} \times \frac{\partial \text{Map}}{\partial W_{filter}}$$
    • $\mathbf{Output}$ ($y_{pred}$): 모델이 계산한 최종 확률 (예: 고양이일 확률 0.8)
    • $FC$: FC 레이어의 결과값, 고양이 = 15.2점, 강아지 = 1.4점, 버스 = -3.5점
    • $Loss$: 실제 정답(고양이=1.0)과 모델의 출력(0.8) 사이의 거리

    이 수식은 "최종 오차에 대해 필터가 얼마나 기여(잘못)했는가"를 정밀하게 계산해냅니다. 모델은 이 결과값을 바탕으로 필터와 FC 가중치를 오차가 줄어드는 방향으로 아주 조금씩 깎아 나갑니다.

     

    각 항의 의미를 뜯어보면 놀라운 논리가 숨어있습니다.

    1. $\frac{\partial Loss}{\partial Output}$ (실망감): "예측 확률이 실제 정답과 얼마나 다른가?"
    2. $\frac{\partial Output}{\partial FC}$ (판단 분석): "최종 확률을 만들기 위해 FC 레이어가 낸 점수(Logit)가 얼마나 영향을 주었는가?"
    3. $\frac{\partial FC}{\partial Map}$ (재료 분석): "그 점수를 내기 위해 사용된 각 위치의 유사도(Map)가 얼마나 기여했는가?"
    4. $\frac{\partial Map}{\partial W_{filter}}$ (도구 분석): "그 유사도를 만들기 위해 필터 가중치가 어떻게 작동했는가?"

    이 사슬을 타고 오차 신호가 전달되면, 모델은 "벌점을 줄이려면 필터 숫자를 0.001만큼 키워야겠군!" 하는 구체적인 수정 방향을 찾아냅니다.

     

     

    필터는 학습의 '결론'입니다

    "필터가 특징을 미리 알고 오는 것이 아니라, 정답을 맞히기 위해 필사적으로 노력하는 과정에서 '어떤 특징을 뽑아야 정답률이 올라가는지'를 스스로 깨달으며 모양을 완성해가는 것"

    이것이 바로 CNN이 단순한 계산기를 넘어 '지능'처럼 보이는 이유입니다. 수만 번의 벌점을 받아가며 깎여나간 필터들은 어느새 세상에서 가장 정교한 '특징 사냥꾼'이 되어 있습니다.

     

     

     

Designed by Tistory.