1. CNN이 하는 일
CNN은 이미지처럼 격자 구조를 가진 데이터를 처리하는 신경망입니다.
일반적인 이미지 데이터는 가로, 세로, 채널로 구성됩니다. 예를 들어 컬러 이미지는 빨강, 초록, 파랑의 3개 채널을 가집니다. CNN은 이 이미지에서 선, 모서리, 색 변화, 질감, 부분 패턴, 물체의 일부, 최종적으로 전체 물체의 특징을 단계적으로 추출합니다.
즉 CNN은 처음부터 “이것은 고양이다”라고 판단하지 않습니다. 먼저 가장 낮은 수준의 특징을 찾고, 그다음 그 특징들을 조합해서 더 복잡한 특징을 만들고, 마지막에 전체 이미지를 분류합니다.
흐름은 보통 다음과 같습니다.
입력 이미지 → 합성곱 → 활성화 함수 → 풀링 → 여러 번 반복 → 펼치기 → 완전연결층 → 출력 확률 → 손실 계산 → 역전파 → 가중치 수정
2. 순전파의 의미
순전파는 입력 데이터가 신경망의 앞에서 뒤로 이동하면서 최종 예측값을 만드는 과정입니다.
예를 들어 강아지 사진을 CNN에 넣으면, CNN은 여러 층을 거치면서 그 이미지가 강아지인지, 고양이인지, 자동차인지에 대한 점수를 만듭니다. 마지막에는 각 클래스에 대한 확률을 출력합니다.
순전파의 목적은 다음과 같습니다.
첫째, 입력 이미지에서 특징을 추출합니다.
둘째, 추출된 특징을 점점 더 추상적인 정보로 바꿉니다.
셋째, 마지막에 분류 결과를 만듭니다.
넷째, 정답과 비교하기 위한 예측값을 생성합니다.
3. 입력 단계
입력 단계에서는 이미지가 숫자 배열로 들어옵니다.
컴퓨터는 이미지를 사람처럼 그림으로 보지 않습니다. 이미지는 픽셀값의 모음입니다. 흑백 이미지는 각 위치마다 밝기값 하나를 가지고, 컬러 이미지는 각 위치마다 빨강, 초록, 파랑 값 세 개를 가집니다.
예를 들어 흑백 손글씨 숫자 이미지는 “어느 위치가 밝고 어느 위치가 어두운지”에 대한 숫자표입니다. 컬러 사진은 “각 위치의 RGB 값이 얼마인지”에 대한 숫자 덩어리입니다.
CNN의 입력은 보통 다음 정보를 포함합니다.
배치 크기: 한 번에 몇 장의 이미지를 처리하는지
채널 수: 흑백이면 1개, 컬러면 3개
높이: 이미지의 세로 크기
너비: 이미지의 가로 크기
딥러닝에서는 이미지를 한 장씩만 넣는 것이 아니라 여러 장을 묶어서 넣는 경우가 많습니다. 이를 배치라고 합니다. 배치를 사용하면 학습이 더 안정적이고 빠르게 진행됩니다.
4. 정규화 단계
이미지를 CNN에 넣기 전에 보통 정규화를 수행합니다.
이미지 픽셀값은 보통 0부터 255 사이입니다. 이 값을 그대로 사용하면 숫자 범위가 커서 학습이 불안정해질 수 있습니다. 그래서 0부터 1 사이로 줄이거나, 평균을 빼고 표준편차로 나누어 일정한 분포를 갖게 만듭니다.
정규화의 목적은 다음과 같습니다.
입력값의 범위를 안정화합니다.
학습 속도를 높입니다.
특정 채널이나 픽셀값이 지나치게 큰 영향을 주는 것을 줄입니다.
경사하강법이 더 안정적으로 작동하게 합니다.
정규화는 CNN 내부의 핵심 연산은 아니지만, 실제 학습에서는 매우 중요한 전처리 단계입니다.
5. 합성곱 계층의 역할
합성곱 계층은 CNN의 핵심입니다.
합성곱 계층은 이미지 전체를 한 번에 보는 것이 아니라, 작은 필터를 이용해 이미지의 작은 영역을 훑으면서 특징을 찾습니다.
필터는 작은 숫자 배열입니다. 예를 들어 3×3 필터는 이미지의 3×3 영역을 한 번에 봅니다. 이 필터가 이미지 위를 왼쪽에서 오른쪽으로, 위에서 아래로 이동하면서 각 위치에서 특정 패턴이 있는지 확인합니다.
필터는 다음과 같은 특징을 감지할 수 있습니다.
수직선, 수평선, 대각선, 모서리, 색 변화, 질감, 반복 패턴, 곡선
초기 CNN 층에서는 단순한 선이나 경계가 주로 감지됩니다. 깊은 층으로 갈수록 눈, 코, 창문 같은 더 복잡한 특징이 감지됩니다.
6. 필터의 의미
필터는 CNN이 학습하는 파라미터입니다.
처음에는 필터 값이 무작위로 초기화됩니다. 이때 필터는 아무 의미 있는 패턴도 잘 찾지 못합니다. 하지만 학습을 반복하면서 필터 값이 조금씩 조정됩니다.
학습이 진행되면 어떤 필터는 세로선을 잘 찾게 되고, 어떤 필터는 둥근 모양을 잘 찾게 되고, 어떤 필터는 질감을 찾습니다.
즉 필터는 사람이 직접 설계하는 것이 아니라 데이터로부터 학습됩니다.
이것이 CNN의 중요한 장점입니다. 과거의 이미지 처리에서는 사람이 직접 “모서리 검출기”, “색상 특징”, “질감 특징”을 설계해야 했습니다. CNN은 이러한 특징 추출기를 스스로 학습합니다.
7. 합성곱 연산의 실제 의미
합성곱 연산은 필터와 이미지의 작은 영역을 비교하는 과정입니다.
필터가 이미지의 한 위치에 놓이면, 그 위치의 작은 이미지 조각과 필터가 서로 얼마나 잘 맞는지 계산합니다. 잘 맞으면 큰 값이 나오고, 잘 맞지 않으면 작은 값이 나옵니다.
예를 들어 어떤 필터가 세로선을 감지하도록 학습되었다고 가정합니다. 이미지의 특정 위치에 세로선이 있으면 그 필터의 출력값이 커집니다. 세로선이 없으면 출력값이 작습니다.
이렇게 필터가 이미지 전체를 훑으면, “이미지의 어느 위치에 해당 특징이 있는지”를 나타내는 새로운 지도가 만들어집니다. 이것을 feature map 또는 activation map이라고 합니다.
8. Feature Map의 의미
Feature map은 특정 필터가 감지한 특징의 위치 정보를 담고 있습니다.
예를 들어 첫 번째 필터가 수직선을 감지한다면, 첫 번째 feature map은 이미지에서 수직선이 강하게 나타나는 위치를 표시합니다.
두 번째 필터가 수평선을 감지한다면, 두 번째 feature map은 수평선이 있는 위치를 표시합니다.
세 번째 필터가 모서리를 감지한다면, 세 번째 feature map은 모서리가 있는 위치를 표시합니다.
즉 합성곱 계층의 출력은 단순한 이미지가 아니라 여러 종류의 특징 지도입니다.
필터가 많을수록 더 다양한 특징을 추출할 수 있습니다. 예를 들어 필터가 32개라면 32개의 feature map이 생성됩니다.
9. 채널의 변화
입력 이미지가 RGB 이미지라면 입력 채널은 3개입니다.
합성곱 필터는 이 3개 채널을 동시에 봅니다. 즉 빨강 채널, 초록 채널, 파랑 채널 각각에서 정보를 가져와 하나의 출력 feature map을 만듭니다.
필터가 여러 개 있으면 출력 채널 수도 여러 개가 됩니다.
예를 들어 입력이 RGB 이미지라서 채널이 3개이고, 합성곱 계층에 필터가 64개 있다면 출력 feature map은 64개 채널을 갖게 됩니다.
즉 CNN에서는 공간 크기뿐 아니라 채널 수도 계속 변합니다.
초기에는 이미지의 실제 색상 채널이 중요하지만, 깊은 층으로 갈수록 채널은 더 이상 빨강, 초록, 파랑을 의미하지 않습니다. 대신 각각의 채널은 CNN이 학습한 특정 특징을 의미합니다.
10. Padding의 역할
합성곱을 할 때 필터가 이미지의 가장자리까지 이동하면 문제가 생깁니다. 필터가 가장자리에 놓일 때는 필터 일부가 이미지 밖으로 나가기 때문입니다.
이를 해결하기 위해 이미지 주변에 0 또는 특정 값을 덧붙이는 작업을 합니다. 이것이 padding입니다.
Padding의 목적은 다음과 같습니다.
출력 크기를 유지합니다.
이미지 가장자리 정보가 너무 빨리 사라지는 것을 막습니다.
깊은 네트워크에서 공간 크기가 급격히 줄어드는 것을 방지합니다.
가장자리 픽셀도 충분히 연산에 참여하게 합니다.
Padding이 없으면 합성곱을 할 때마다 이미지 크기가 줄어듭니다. 여러 층을 지나면 feature map이 너무 작아질 수 있습니다. 따라서 많은 CNN에서는 padding을 사용합니다.
11. Stride의 역할
Stride는 필터가 한 번에 몇 칸씩 이동하는지를 의미합니다.
Stride가 1이면 필터가 한 칸씩 이동합니다. 이 경우 세밀하게 이미지를 훑습니다.
Stride가 2이면 필터가 두 칸씩 이동합니다. 이 경우 출력 feature map의 크기가 줄어듭니다.
Stride가 클수록 다음과 같은 효과가 있습니다.
계산량이 줄어듭니다.
출력 크기가 작아집니다.
세밀한 위치 정보는 일부 손실됩니다.
더 넓은 영역을 빠르게 압축할 수 있습니다.
즉 stride는 정보의 세밀함과 계산 효율 사이의 균형을 조절합니다.
12. Bias의 역할
합성곱 계층에는 필터뿐 아니라 bias도 있습니다.
Bias는 각 필터의 출력에 추가되는 값입니다. Bias는 해당 필터가 얼마나 쉽게 활성화될지를 조절합니다.
예를 들어 어떤 필터가 특정 패턴을 감지할 때, bias가 크면 조금 약한 패턴에도 반응할 수 있습니다. bias가 작거나 음수이면 더 강한 패턴이 있어야 반응합니다.
즉 bias는 필터의 기준점을 조절하는 역할을 합니다.
13. 활성화 함수의 필요성
합성곱 연산만 반복하면 CNN은 복잡한 문제를 잘 풀 수 없습니다. 이유는 합성곱 자체가 기본적으로 선형 연산이기 때문입니다.
선형 연산만 여러 번 쌓아도 결국 하나의 큰 선형 연산과 비슷한 효과밖에 내지 못합니다. 따라서 복잡한 이미지 패턴을 표현하기 어렵습니다.
이를 해결하기 위해 활성화 함수를 사용합니다.
활성화 함수는 합성곱 결과에 비선형성을 추가합니다. 비선형성이 있어야 CNN은 단순한 선, 모서리뿐 아니라 복잡한 물체 형태까지 학습할 수 있습니다.
14. ReLU의 역할
CNN에서 가장 많이 사용되는 활성화 함수는 ReLU입니다.
ReLU는 양수 값은 그대로 통과시키고, 음수 값은 0으로 만듭니다.
이것의 의미는 다음과 같습니다.
특정 필터가 어떤 위치에서 패턴을 강하게 감지하면 그 값은 유지합니다.
패턴이 없거나 반대로 나타난 위치는 0으로 만듭니다.
불필요한 음수 반응을 제거합니다.
계산이 매우 빠릅니다.
gradient가 비교적 잘 흐릅니다.
ReLU를 사용하면 feature map이 더 희소해집니다. 즉 많은 위치가 0이 되고, 중요한 위치만 남습니다. 이것은 계산 효율과 특징 선택에 도움이 됩니다.
15. 활성화 이후 feature map의 의미
합성곱 직후의 출력은 필터와 입력 영역의 일치 정도를 나타냅니다.
활성화 함수를 거친 뒤에는 “해당 특징이 실제로 의미 있게 존재하는 위치”만 강조됩니다.
예를 들어 어떤 필터가 눈 모양을 찾는 필터라면, ReLU 이후에는 눈 모양이 있다고 판단되는 위치만 양수로 남고 나머지는 0이 될 수 있습니다.
따라서 활성화 함수는 단순한 숫자 변환이 아니라, CNN이 어떤 특징을 중요하게 볼지 결정하는 데 큰 역할을 합니다.
16. Pooling의 역할
Pooling은 feature map의 공간 크기를 줄이는 연산입니다.
이미지에서 특징이 정확히 어느 픽셀에 있는지도 중요하지만, 많은 경우에는 “대략 어느 영역에 있는지”만 알아도 충분합니다.
예를 들어 고양이 귀가 이미지의 왼쪽 위에 조금 있든, 왼쪽 위에서 몇 픽셀 아래에 있든, 여전히 고양이 귀라는 사실은 변하지 않습니다.
Pooling은 이런 작은 위치 변화에 덜 민감하게 만들어 줍니다.
Pooling의 목적은 다음과 같습니다.
공간 크기를 줄입니다.
계산량을 줄입니다.
중요한 특징만 남깁니다.
작은 위치 변화에 대한 안정성을 높입니다.
과적합을 줄이는 데 도움을 줍니다.
17. Max Pooling
Max Pooling은 작은 영역 안에서 가장 큰 값만 선택합니다.
의미는 다음과 같습니다.
어떤 영역 안에서 특정 특징이 한 번이라도 강하게 나타났다면, 그 특징이 존재한다고 판단합니다.
예를 들어 2×2 영역 안에 네 개의 값이 있을 때, 가장 큰 값 하나만 다음 층으로 보냅니다. 나머지 값은 버립니다.
Max Pooling은 특징의 존재 여부를 강조합니다. 그래서 CNN에서 매우 자주 사용됩니다.
예를 들어 어떤 영역 안에 모서리 반응이 강하게 나타났다면, 정확한 위치는 조금 버리더라도 “이 영역에 모서리가 있다”는 정보를 유지합니다.
18. Average Pooling
Average Pooling은 작은 영역 안의 값들을 평균냅니다.
Max Pooling이 가장 강한 특징 하나를 선택한다면, Average Pooling은 전체적인 평균 반응을 봅니다.
Average Pooling은 다음과 같은 경우에 의미가 있습니다.
전체적인 분포가 중요할 때
너무 강한 하나의 값보다 영역 전체의 평균적 특징을 보고 싶을 때
마지막 단계에서 전체 feature map을 요약하고 싶을 때
특히 Global Average Pooling은 CNN의 마지막 부분에서 자주 사용됩니다. 전체 feature map을 하나의 평균값으로 줄여 각 채널이 얼마나 활성화되었는지를 요약합니다.
19. 여러 합성곱 블록의 반복
실제 CNN은 합성곱, 활성화, 풀링을 한 번만 하지 않습니다.
보통 다음과 같은 블록을 여러 번 반복합니다.
합성곱 → 활성화 → 합성곱 → 활성화 → 풀링
또는
합성곱 → 배치 정규화 → 활성화 → 풀링
이렇게 여러 층을 쌓는 이유는 낮은 수준의 특징에서 높은 수준의 특징으로 점진적으로 올라가기 위해서입니다.
20. Receptive Field의 의미
Receptive field는 어떤 출력값 하나가 입력 이미지의 어느 정도 영역을 보고 만들어졌는지를 의미합니다.
초기 합성곱 층의 출력값 하나는 입력 이미지의 작은 영역만 봅니다. 예를 들어 3×3 정도의 영역만 볼 수 있습니다.
하지만 여러 합성곱 층과 풀링 층을 지나면, 깊은 층의 출력값 하나는 입력 이미지의 훨씬 넓은 영역을 반영합니다.
즉 깊은 층으로 갈수록 각 뉴런은 이미지의 더 넓은 문맥을 이해하게 됩니다.
초기 층: 작은 선, 점, 경계
중간 층: 물체의 일부
깊은 층: 물체 전체 또는 큰 구조
이것이 CNN이 계층적으로 특징을 학습한다고 말하는 이유입니다.
21. Flatten 단계
합성곱과 풀링을 여러 번 거치면, 출력은 여전히 여러 개의 feature map 형태입니다.
하지만 마지막 분류기에서는 보통 이 feature map들을 하나의 긴 벡터로 펼쳐서 사용합니다. 이 과정을 flatten이라고 합니다.
Flatten은 계산 자체가 복잡한 연산은 아닙니다. 단순히 다차원 배열을 일렬로 나열하는 작업입니다.
예를 들어 여러 장의 특징 지도를 한 줄의 긴 특징 벡터로 바꿉니다.
이 벡터에는 이미지에서 추출된 고수준 특징들이 들어 있습니다. 분류기는 이 벡터를 보고 최종 클래스를 판단합니다.
22. 완전연결층의 역할
완전연결층은 추출된 특징을 바탕으로 최종 판단을 수행합니다.
합성곱 부분이 “특징 추출기”라면, 완전연결층은 “분류기”입니다.
예를 들어 CNN 앞부분이 다음 정보를 추출했다고 가정합니다.
둥근 귀가 있다.
수염 같은 선이 있다.
두 눈이 있다.
털 질감이 있다.
얼굴 형태가 있다.
완전연결층은 이 특징들을 종합해서 “고양이일 가능성이 높다”고 판단합니다.
즉 완전연결층은 추출된 특징들의 조합을 학습합니다.
23. Logit의 의미
완전연결층의 마지막 출력은 보통 logit이라고 부릅니다.
Logit은 아직 확률이 아닙니다. 각 클래스에 대한 점수입니다.
예를 들어 모델이 세 가지 클래스를 분류한다고 가정합니다.
고양이 점수
강아지 점수
자동차 점수
이 점수들은 확률처럼 0부터 1 사이일 필요가 없습니다. 음수일 수도 있고 큰 양수일 수도 있습니다.
이 logit을 확률로 바꾸기 위해 Softmax를 사용합니다.
24. Softmax의 역할
Softmax는 여러 클래스 점수를 확률처럼 해석할 수 있게 바꾸는 함수입니다.
Softmax를 거치면 모든 클래스의 출력값이 0과 1 사이가 되고, 전체 합이 1이 됩니다.
예를 들어 최종 출력이 다음처럼 해석될 수 있습니다.
고양이: 0.82
강아지: 0.15
자동차: 0.03
이 경우 모델은 고양이라고 예측합니다.
Softmax의 역할은 단순히 가장 큰 점수를 찾는 것이 아니라, 각 클래스에 대한 상대적 확신도를 확률 형태로 표현하는 것입니다.
25. 손실 함수의 역할
손실 함수는 모델의 예측이 정답과 얼마나 다른지 측정합니다.
예를 들어 정답은 고양이인데 모델이 강아지라고 높은 확률로 예측했다면 손실이 큽니다.
정답이 고양이이고 모델도 고양이에 높은 확률을 주었다면 손실이 작습니다.
분류 문제에서는 보통 Cross Entropy Loss를 사용합니다.
이 손실 함수는 정답 클래스에 모델이 얼마나 높은 확률을 주었는지를 기준으로 손실을 계산합니다.
정답 클래스의 확률이 높을수록 손실은 작아집니다.
정답 클래스의 확률이 낮을수록 손실은 커집니다.
손실은 학습의 기준입니다. 역전파는 이 손실을 줄이기 위해 진행됩니다.
26. 순전파 전체 요약
순전파는 다음 의미를 갖습니다.
이미지를 숫자 배열로 입력받습니다.
합성곱 필터가 이미지의 작은 영역을 훑으며 특징을 찾습니다.
각 필터는 특정 패턴이 어디에 있는지 feature map으로 표시합니다.
활성화 함수는 중요한 반응만 남기고 비선형성을 추가합니다.
풀링은 공간 크기를 줄이고 중요한 특징을 압축합니다.
이 과정을 여러 번 반복하면서 단순한 특징이 복잡한 특징으로 변합니다.
Flatten은 feature map을 벡터로 펼칩니다.
완전연결층은 특징 벡터를 바탕으로 클래스 점수를 계산합니다.
Softmax는 점수를 확률로 바꿉니다.
손실 함수는 예측 확률과 정답의 차이를 계산합니다.
27. 역전파의 의미
역전파는 모델이 틀린 이유를 거꾸로 추적하는 과정입니다.
순전파에서는 입력에서 출력 방향으로 정보가 흐릅니다.
역전파에서는 손실에서 입력 방향으로 gradient가 흐릅니다.
여기서 gradient는 “이 값이 조금 변하면 손실이 얼마나 변하는가”를 의미합니다.
즉 역전파는 각 파라미터에게 다음 질문을 던지는 과정입니다.
이 필터 값이 손실을 키웠는가 줄였는가?
이 bias가 예측 오류에 얼마나 영향을 주었는가?
이 feature map의 어떤 위치가 오답에 기여했는가?
어떤 입력 특징이 최종 판단에 영향을 주었는가?
이 질문의 답을 바탕으로 모델은 가중치를 수정합니다.
28. 역전파의 기본 원리
역전파는 연쇄 법칙을 사용합니다.
하지만 수식 없이 말하면, 복잡한 계산을 여러 작은 단계로 나눈 뒤, 마지막 손실에서부터 각 단계의 책임을 거꾸로 계산하는 방식입니다.
예를 들어 다음 흐름이 있다고 가정합니다.
입력 → 합성곱 → ReLU → Pooling → 완전연결층 → 출력 → 손실
역전파는 반대로 진행됩니다.
손실 → 출력 → 완전연결층 → Pooling → ReLU → 합성곱 → 입력
각 단계는 자신이 순전파 때 어떤 계산을 했는지 기억하고 있다가, 역전파 때 그 계산에 맞게 gradient를 이전 단계로 넘깁니다.
29. 손실에서 시작하는 역전파
역전파는 손실 함수에서 시작합니다.
손실 함수는 모델의 예측과 정답의 차이를 나타냅니다. 따라서 손실이 크다는 것은 모델이 많이 틀렸다는 뜻입니다.
역전파의 첫 단계는 “최종 출력이 어떻게 바뀌면 손실이 줄어드는가”를 계산하는 것입니다.
예를 들어 정답이 고양이인데 모델이 강아지 확률을 높게 주었다면, 역전파는 다음 방향의 신호를 만듭니다.
고양이 점수는 높여야 한다.
강아지 점수는 낮춰야 한다.
자동차 점수도 필요하면 낮춰야 한다.
이 신호가 뒤쪽 계층에서 앞쪽 계층으로 전달됩니다.
30. Softmax와 Cross Entropy의 역전파 의미
Softmax와 Cross Entropy를 함께 사용하면 역전파 신호가 매우 직관적으로 해석됩니다.
각 클래스에 대해 모델의 예측 확률과 실제 정답의 차이가 gradient가 됩니다.
정답 클래스의 예측 확률이 낮으면, 그 클래스 점수를 올리라는 신호가 생깁니다.
정답이 아닌 클래스의 예측 확률이 높으면, 그 클래스 점수를 낮추라는 신호가 생깁니다.
예를 들어 정답은 고양이인데 모델이 다음과 같이 예측했다고 가정합니다.
고양이: 낮음
강아지: 높음
자동차: 조금 높음
그러면 역전파는 다음과 같은 방향을 만듭니다.
고양이로 이어지는 연결을 강화합니다.
강아지로 이어지는 잘못된 연결을 약화합니다.
자동차로 이어지는 불필요한 연결도 조정합니다.
31. 완전연결층 역전파
완전연결층에서는 입력 특징 벡터와 가중치가 결합되어 클래스 점수가 만들어집니다.
역전파에서는 세 가지를 계산합니다.
첫째, 완전연결층의 가중치를 어떻게 수정해야 하는지 계산합니다.
둘째, 완전연결층의 bias를 어떻게 수정해야 하는지 계산합니다.
셋째, 이전 단계인 flatten된 feature 벡터로 gradient를 전달합니다.
완전연결층의 가중치는 “어떤 특징이 어떤 클래스 판단에 얼마나 기여했는지”를 나타냅니다.
예를 들어 어떤 특징이 고양이 판단에 사용되었는데 실제로 정답도 고양이라면, 그 연결은 강화될 수 있습니다.
반대로 어떤 특징이 강아지 판단에 강하게 기여했지만 정답이 고양이라면, 그 연결은 약화됩니다.
즉 완전연결층 역전파는 특징과 클래스 사이의 관계를 조정합니다.
32. Flatten 역전파
Flatten은 순전파에서 feature map을 긴 벡터로 바꿨습니다.
역전파에서는 이 벡터 형태의 gradient를 다시 원래 feature map 모양으로 되돌립니다.
Flatten은 값을 계산해서 바꾸는 연산이 아니라 모양만 바꾸는 연산입니다. 따라서 역전파에서도 gradient 값 자체를 복잡하게 변형하지 않습니다.
단순히 “이 벡터의 각 원소가 원래 feature map의 어느 위치였는지”를 찾아서 다시 배치합니다.
33. Pooling 역전파의 의미
Pooling은 순전파에서 공간 정보를 줄였습니다.
역전파에서는 줄어든 gradient를 원래 pooling 이전 크기로 되돌려야 합니다.
Pooling 방식에 따라 gradient를 되돌리는 방법이 다릅니다.
Max Pooling은 최댓값이 선택된 위치로만 gradient를 보냅니다.
Average Pooling은 해당 영역 전체에 gradient를 나누어 보냅니다.
34. Max Pooling 역전파
Max Pooling은 순전파 때 각 영역에서 가장 큰 값 하나만 선택했습니다.
따라서 역전파에서도 그 선택된 위치만 책임을 집니다.
예를 들어 2×2 영역에서 네 값 중 하나가 가장 커서 출력으로 선택되었다면, 역전파 때 gradient는 그 위치로만 전달됩니다. 나머지 세 위치는 gradient를 받지 않습니다.
이유는 간단합니다.
순전파 결과에 실제로 영향을 준 값은 최댓값 하나뿐이기 때문입니다. 나머지 값들은 출력에 선택되지 않았으므로, 그 출력의 오류에 대한 직접적인 책임이 없습니다.
즉 Max Pooling 역전파는 “순전파 때 이긴 위치에게만 책임을 준다”고 이해하면 됩니다.
35. Average Pooling 역전파
Average Pooling은 순전파 때 영역 안의 모든 값을 평균냈습니다.
따라서 역전파에서는 해당 영역의 모든 값이 출력에 기여했다고 봅니다.
결과적으로 gradient는 영역 안의 모든 위치에 균등하게 나누어 전달됩니다.
즉 Average Pooling 역전파는 “모든 참여자가 동일하게 책임을 나눠 갖는다”고 이해하면 됩니다.
36. ReLU 역전파
ReLU는 순전파에서 양수는 통과시키고 음수는 0으로 만들었습니다.
역전파에서는 순전파 때 양수였던 위치만 gradient를 통과시킵니다.
순전파 때 값이 양수였다는 것은 해당 뉴런이 활성화되었다는 뜻입니다. 따라서 그 뉴런은 이후 출력에 영향을 줄 수 있었습니다.
반대로 순전파 때 값이 0 이하라서 ReLU에 의해 0이 된 위치는 이후 계산에 영향을 주지 못했습니다. 따라서 역전파 때도 gradient가 통과하지 않습니다.
즉 ReLU 역전파는 다음과 같이 이해할 수 있습니다.
켜져 있던 뉴런은 책임을 받는다.
꺼져 있던 뉴런은 책임을 받지 않는다.
37. Sigmoid와 Tanh 역전파의 의미
Sigmoid와 Tanh는 ReLU와 다르게 부드러운 곡선을 가진 활성화 함수입니다.
이 함수들은 입력이 너무 크거나 너무 작으면 출력이 거의 변하지 않는 구간에 들어갑니다. 이 구간에서는 gradient가 매우 작아집니다.
이것이 vanishing gradient 문제의 원인이 될 수 있습니다.
CNN에서는 은닉층 활성화 함수로 Sigmoid나 Tanh보다 ReLU 계열이 더 많이 사용됩니다. ReLU는 계산이 빠르고, 양수 영역에서 gradient가 비교적 잘 흐르기 때문입니다.
38. 합성곱 계층 역전파의 핵심
합성곱 계층 역전파는 CNN 학습의 핵심입니다.
합성곱 계층에서는 다음 세 가지를 계산해야 합니다.
첫째, 필터를 어떻게 바꿔야 하는가.
둘째, bias를 어떻게 바꿔야 하는가.
셋째, 이전 계층으로 어떤 gradient를 보내야 하는가.
합성곱 계층의 필터는 이미지의 여러 위치에서 반복적으로 사용됩니다. 이것을 weight sharing이라고 합니다.
하나의 필터 값은 이미지의 한 위치에서만 쓰이는 것이 아니라, 필터가 이동하는 모든 위치에서 사용됩니다.
따라서 필터의 gradient는 모든 위치에서 받은 책임을 합쳐서 계산됩니다.
39. 필터 gradient의 의미
필터 gradient는 “이 필터 값이 손실에 얼마나 영향을 주었는지”를 나타냅니다.
예를 들어 어떤 필터가 고양이 귀를 잘 찾도록 학습되어야 하는데, 현재 필터가 엉뚱한 배경 패턴에 반응하고 있다면 역전파는 그 필터를 수정하는 방향의 gradient를 만듭니다.
필터가 올바른 특징에 반응하면 그 방향은 강화됩니다.
필터가 잘못된 특징에 반응하면 그 방향은 약화됩니다.
중요한 점은 필터 하나가 이미지 전체를 훑기 때문에, 필터 gradient는 이미지의 모든 위치에서의 반응을 종합해서 만들어진다는 것입니다.
즉 필터는 한 위치에서만 학습되는 것이 아니라, 전체 이미지와 전체 배치에서 반복적으로 학습됩니다.
40. Bias gradient의 의미
Bias는 필터의 출력 전체에 더해지는 기준값입니다.
역전파에서는 해당 필터의 모든 출력 위치에서 들어온 gradient를 모아 bias를 수정합니다.
만약 어떤 필터가 전체적으로 너무 쉽게 활성화되어 오답을 만든다면 bias가 낮아질 수 있습니다.
반대로 어떤 필터가 필요한 상황에서도 잘 활성화되지 않는다면 bias가 높아질 수 있습니다.
Bias는 필터의 민감도를 조절하는 역할을 합니다.
41. 입력 gradient의 의미
합성곱 계층은 이전 계층에서 받은 feature map을 입력으로 사용합니다.
역전파에서는 현재 계층의 오류 신호를 이전 계층으로 전달해야 합니다.
이를 위해 입력 gradient를 계산합니다.
입력 gradient는 “이전 계층의 어떤 위치가 현재 계층의 오류에 얼마나 영향을 주었는지”를 나타냅니다.
이 값은 다시 이전 계층의 활성화 함수, pooling, 합성곱 계층으로 전달됩니다.
즉 입력 gradient는 학습 신호를 더 앞쪽 계층으로 되돌려 보내는 통로입니다.
42. Weight Sharing과 역전파
CNN의 중요한 특징은 weight sharing입니다.
완전연결층에서는 위치마다 다른 가중치를 사용할 수 있습니다. 하지만 합성곱에서는 하나의 필터가 이미지 전체에 공유됩니다.
이 때문에 CNN은 같은 패턴이 이미지 어디에 나타나도 감지할 수 있습니다.
예를 들어 눈이라는 패턴은 이미지의 왼쪽에 있어도, 오른쪽에 있어도, 위쪽에 있어도 감지될 수 있습니다.
역전파에서도 이 공유 구조가 반영됩니다.
하나의 필터는 여러 위치에서 사용되므로, 모든 위치에서 발생한 gradient가 하나의 필터 업데이트에 합산됩니다.
이것이 CNN이 파라미터 수를 줄이면서도 강력한 특징 추출 능력을 갖는 이유입니다.
47. 한 번의 학습 반복 과정
CNN 학습의 한 반복은 다음 순서로 진행됩니다.
첫째, 배치 데이터를 가져옵니다.
둘째, 이미지를 CNN에 입력합니다.
셋째, 합성곱, 활성화, 풀링 등을 거쳐 예측값을 만듭니다.
넷째, 예측값과 정답을 비교해 손실을 계산합니다.
다섯째, 손실에서부터 역전파를 수행합니다.
여섯째, 각 파라미터의 gradient를 계산합니다.
일곱째, optimizer가 파라미터를 수정합니다.
여덟째, 다음 배치에서 이 과정을 반복합니다.
이 과정을 수천 번, 수만 번 반복하면서 CNN은 점점 더 좋은 필터와 분류기를 학습합니다.
51. Batch Normalization의 역할
Batch Normalization은 중간 feature map의 분포를 안정화하는 방법입니다.
신경망의 각 층은 앞 층의 출력 분포가 계속 바뀌면 학습하기 어렵습니다. Batch Normalization은 각 층의 입력 분포를 일정하게 맞춰 학습을 안정화합니다.
효과는 다음과 같습니다.
학습이 빨라집니다.
gradient 흐름이 안정됩니다.
초기값에 덜 민감해집니다.
약간의 정규화 효과도 있습니다.
CNN에서는 합성곱 뒤, 활성화 함수 앞 또는 뒤에 Batch Normalization을 넣는 경우가 많습니다.
53. CNN이 위치 변화에 강한 이유
CNN은 완전연결망보다 이미지 처리에 강합니다.
이유는 세 가지입니다.
첫째, 지역 연결입니다. CNN은 이미지의 작은 영역을 중심으로 특징을 찾습니다.
둘째, 가중치 공유입니다. 같은 필터가 이미지 전체를 훑으므로 같은 패턴을 어디서든 찾을 수 있습니다.
셋째, 풀링입니다. 작은 위치 변화가 있어도 비슷한 특징 표현을 유지할 수 있습니다.
이 때문에 CNN은 이미지의 공간 구조를 잘 활용합니다.
54. CNN과 일반 완전연결망의 차이
완전연결망은 이미지를 일렬 벡터로 펼쳐서 처리합니다.
이 경우 이미지의 위치 구조가 사라집니다. 예를 들어 서로 가까운 픽셀들이 원래 이웃이었다는 정보를 직접 활용하기 어렵습니다.
반면 CNN은 이미지의 2차원 구조를 유지한 채 처리합니다.
가까운 픽셀끼리 먼저 묶어서 보고, 필터를 통해 지역 패턴을 찾습니다.
또한 CNN은 필터를 공유하기 때문에 파라미터 수가 훨씬 적습니다.
따라서 이미지 처리에는 CNN이 훨씬 효율적입니다.
55. 역전파에서 중요한 저장값
역전파를 하려면 순전파 때의 중간값을 저장해야 합니다.
예를 들어 다음 정보가 필요합니다.
합성곱 입력
필터
합성곱 출력
ReLU 적용 전 값
Pooling에서 최댓값이 선택된 위치
Flatten 이전의 원래 shape
완전연결층 입력
Softmax 출력
이 값들이 있어야 역전파 때 gradient를 정확히 계산할 수 있습니다.
그래서 학습 중에는 추론보다 메모리를 더 많이 사용합니다. 추론은 순전파만 하면 되지만, 학습은 역전파를 위해 중간 결과를 저장해야 하기 때문입니다.
57. CNN 학습이 진행되며 일어나는 변화
학습 초기에는 필터가 무작위이므로 feature map도 의미가 없습니다.
모델의 예측은 거의 랜덤에 가깝습니다.
손실이 크고, 역전파 신호도 큽니다.
학습이 진행되면 필터가 점점 의미 있는 패턴에 반응하기 시작합니다.
초기 층은 선과 경계를 찾습니다.
중간 층은 모양과 부분 구조를 찾습니다.
깊은 층은 클래스 구분에 중요한 고수준 특징을 찾습니다.
마지막 분류기는 이 특징들을 조합하여 정답 클래스의 점수를 높이는 방향으로 학습됩니다.
58. CNN 순전파와 역전파를 비유로 설명
CNN 순전파는 검사관들이 이미지를 단계별로 분석하는 과정과 비슷합니다.
첫 번째 검사관은 선과 모서리를 찾습니다.
두 번째 검사관은 선과 모서리를 조합해서 눈, 코, 바퀴 같은 부품을 찾습니다.
세 번째 검사관은 부품들을 조합해서 얼굴, 자동차, 동물 같은 더 큰 구조를 찾습니다.
마지막 판정관은 이 정보를 보고 최종 결론을 냅니다.
역전파는 판정이 틀렸을 때 책임을 되돌려 묻는 과정입니다.
최종 판정관이 왜 틀렸는지 확인합니다.
그 판정에 영향을 준 고수준 특징을 확인합니다.
그 고수준 특징을 만든 중간 특징을 확인합니다.
그 중간 특징을 만든 필터를 확인합니다.
각 필터에게 “다음에는 이 방향으로 조금 수정하라”고 지시합니다.
이 과정을 반복하면 CNN은 점점 더 정확한 검사관 집단이 됩니다.
59. 전체 흐름 최종 정리
CNN의 순전파는 이미지를 입력받아 특징을 단계적으로 추출하고, 최종적으로 클래스 확률을 출력하는 과정입니다.
합성곱은 작은 필터로 지역 특징을 찾습니다.
활성화 함수는 중요한 반응을 남기고 비선형성을 추가합니다.
풀링은 특징을 압축하고 위치 변화에 강하게 만듭니다.
여러 층을 반복하면 단순한 특징이 복잡한 특징으로 발전합니다.
Flatten은 feature map을 분류기가 사용할 수 있는 벡터로 바꿉니다.
완전연결층은 추출된 특징을 바탕으로 클래스 점수를 계산합니다.
Softmax는 점수를 확률로 바꿉니다.
손실 함수는 예측이 정답과 얼마나 다른지 측정합니다.
CNN의 역전파는 손실에서 시작해 각 계층으로 오류 책임을 되돌려 보내는 과정입니다.
출력층은 어떤 클래스 점수를 올리고 내려야 하는지 계산합니다.
완전연결층은 특징과 클래스 사이의 연결을 수정합니다.
Flatten은 gradient 모양을 원래 feature map으로 되돌립니다.
Pooling은 순전파 방식에 맞게 gradient를 되돌립니다.
ReLU는 활성화되었던 위치에만 gradient를 통과시킵니다.
합성곱 계층은 필터, bias, 입력에 대한 gradient를 계산합니다.
Optimizer는 계산된 gradient를 사용해 파라미터를 업데이트합니다.
'AL,ML 학부연구생 > 공부 기록' 카테고리의 다른 글
| metrics.py 평가 지표들 (ROUGE-1/2/L, BERT Score, BELU Score, P/R/F1, Agenda Completeness, Linking/Mentioned/Resolution Accuracy) (0) | 2026.05.18 |
|---|---|
| PEFT 중 LoRA 파인튜닝은 무엇인가? LoRA 이해하기 (0) | 2026.05.18 |
| Optimizer 이란 무엇이고, 이중 ADAM 은 무엇인가? (0) | 2026.04.10 |
| 인터넷 쿠키(Cookie)란 무엇인가 (0) | 2026.03.31 |
| 인터넷 캐시(Cache)란 무엇인가 (0) | 2026.03.31 |