Residual-block을 잘 파악하기 위해, 기존 CNN 기본 흐름을 먼저 정리하겠다.
CNN(Convolutional Neural Network)은 이미지나 영상 데이터를 처리하기 위해 설계된 딥러닝 모델로, 주요 구성 요소는 다음과 같다.
1.입력 이미지: 원본 이미지 데이터 (예: 32x32x3 크기의 컬러 이미지)
2.합성곱 계층 (Convolutional Layer): 이미지에서 특징을 추출하는 계층. 필터(커널)를 이용해 엣지, 선, 점 같은 시각적인 특징 추출
배치 정규화 (Batch Normalization): 학습을 안정화하고 속도를 향상시키는 계층. Conv 출력값을 평균 0, 표준편차 1로 정규화해서 → 학습 속도 빠르게, 불안정한 값 방지
활성화 함수 (ReLU 등): 비선형성을 추가하여 모델의 표현력을 높임. 비선형성 추가해서 신경망이 복잡한 패턴도 학습 가능하게 함
풀링 계층 (Pooling Layer): 특징 맵의 크기를 줄여 연산량을 감소시키고, 중요한 정보를 강조. 특징을 요약하고, 크기를 줄여 연산량도 줄임
완전 연결 계층 (Fully Connected Layer): 추출된 특징을 기반으로 최종 분류를 수행. 최종 추출된 특징들을 모두 연결해서 → 클래스 분류 결정(확률 출력)
출력 (Softmax 등): 각 클래스에 대한 확률을 출력
Conv는 특징을 뽑고, BN은 학습을 안정화하고, FC는 그걸 바탕으로 최종 판단하는 역할이다. 실제 CNN은 이 3가지를 모두 잘 섞어 쓴다.



딥러닝의 각 층에서 출력값의 분포를 정규화(Normalize)해서 학습을 빠르고 안정되게 만드는 기법
필요성 : 딥러닝에서는 층이 깊어질 수록, 각 층의 출력값 분포가 계속 바뀌어서, 학습이 느려지고 불안정해지는 문제가 있다. 이를 Internal Covariate Shift 라고 한다.
BN은 이 문제를 해결해준다. 각 배치의 출력값을 평균 0, 표준편차 1로 정규화시켜서 학습 안정성 향상+수렴속도 빨라짐
작동방식 : 미니배치의 평균과 표준편차 계산 후 정규화, 학습가능한 scale, shift 파라미터로 다시 변형

모든 입력 노드를 모든 출력 노드에 연결하는 인공신경망의 기본 구조.
FC Layer는 Conv로 뽑아낸 특징을 최종적으로 조합해서 분류를 결정하는 ‘판단기’ 역할을 하는 층이다.
이해 : 이전 레이어에서 나온 모든 값들을 일렬로(flatten)하게 만든 후, 모든 입력을 각각 모든 출력 노드에 곱해서 계산하는 방식.
예)입력이 128개고, 출력이 10이면 : 파라미터 수 + 128 X 10 = 1280개
FC layer 코드 사용 예

Conv (Convolution Layer)는 이미지 속 특징(feature)을 뽑아내기 위해
작은 필터(커널) 를 이미지 위에 슬라이딩하며 연산하는 층.
작동방식 : 전체 이미지 위를 슬라이딩 하면서, 각 영역의 특징을 수치로 바꿔서 피처맵 생성. 필터 수 많을 수록 다양한 특징을 동시에 추출 가능.

https://paperswithcode.com/method/residual-block
Conv → BN → ReLU 흐름이 반복되는 구간에 → “ResidualBlock”이 그 자체로 하나의 블록으로 끼어들어감. ResNet (Residual Network)은 딥러닝 네트워크가 깊어질 때 학습이 어려워지는 문제를 해결하기 위해 등장한 구조
필요성 : 깊은 네트워크에서 안되던 학습이 되게 해줌. 그래서 ResNet이 딥러닝 역사에 큰 영향을 줌.

기존 CNN 구조에서 대체/보완하는 부분

핵심 아이디어 : 입력값을 다음 층의 출력에 직접 더해주는 Skip Connection을 추가.
즉, 기존 Conv 쌓는 부분을 Residual Block으로 묶고 skip connection을 추가한 것
