분류 모델: FC Layer → 활성화 함수 (Sigmoid/Softmax)
회귀 모델: FC Layer → 활성화 함수 없음
이를 통해 분류에서는 확률을, 회귀에서는 연속적인 값을 얻음
Convolutional Networks
0. Background

- Linear Classifier, MLP 문제 :
- Spatial 한 구조를 flatten한 column을 신경망에 넣음
- 이미지의 Spatial 구조를 무시한채 분류 수행
- Convolution Layers : 이미지의 Spatial 구조를 유지하도록 하는 새로운 Operator를 도입
1. Convolutional Neural Networks (CNN)
- 이미지와 같은 데이터의 공간적 구조를 보존하며 학습하는 신경망 구조
- 선형 분류기는 이미지의 공간적 구조( spatial structure of images ) 고려 X
- 해결책: 이미지에서 작동하는 새로운 계산 노드를 정의 ⇒ Fully-Connected Network 필요
- 주요 구성 요소: 합성곱 층, 풀링 층, 완전 연결 층, 활성화 함수, 정규화.

2. 합성곱 층 (Convolution Layer)
3. 풀링 층 (Pooling Layer)
ex) 1998년에 제안된 CNN 구조인 LeNet-5

- 문제점 :
- Pooling Layer와 Strided Conv layer 를 거치면서 Spatial Size가 너무 작아지게 됨
- 처음에 Grayscale이었던 Channel이 엄청나게 늘어나게 됨
- 이렇게 될 경우 네트워크가 학습되기 어렵
4. 정규화 (Normalization)
- 아이디어: Layer의 output을 평균이 0, 분산이 1이 되도록 정규화
- 효과: internal covariate shift( 신경망의 각 층에서 입력 데이터의 분포가 계속해서 변하는 현상 )를 줄여서 최적화가 잘되도록 함
- 정규화 시키는 함수는 미분가능한 함수 => 네트워크 학습시 역전파시켜서 연산할 수 있음 ( 손실함수의 기울기를 각 층에 전달, 모델의 가중치가 업데이트 될 수 있도록 함 )

- 배치 정규화 (Batch Normalization):
- 학습 과정에서 각 층의 출력을 정규화하여 학습 속도 향상 및 안정화
- 문제점 1) : 평균을 0, 분산을 1로 정규화하는 과정이 어렵
- 해결 ) : Learnable scale, shift parameters를 도입해서 이를 학습하도록 함

- 문제점 2) : 미니배치별로 정규화를 수행하기 때문에 Train 과정에서나 학습되지 Test 과정에서는 미니배치별로 예측을 수행하지 않기 때문에 사용할 수 없음
- 해결 ) : 학습하는 대신 Fixed Scalar 값을 사용

- 채널을 건드리지 않고 배치별로 하나씩 정규화 됨을 확인
- 보통 가중치가 적용되는 층 ( FC layer나 Conv layer ) 다음에, 활성화 함수 적용하기 전에 적용
- 장점: 학습시키기 쉬워지고, 높은 학습률도 커버 가능하며, 더 빠르게 수렴
- 단점: 아직 이론적으로 완벽하게 왜 좋은지 증명 안됨, 학습과 추론시에 다르게 작동해서 버그가 자주 일어남
- 레이어 정규화 (Layer Normalization):
- 레이어 전체를 정규화. 즉, 각 샘플의 모든 뉴런들에 대해 평균과 분산을 계산하여 정규화
- 인스턴스 정규화
- 인스턴스(샘플) 내의 각 채널을 정규화
- 그룹 정규화
- 인스턴스(샘플) 내의 채널을 그룹으로 나누어 정규화

CNN Architectures
ImageNet Classification Challenge
- CNN 구조의 모델들이 얼마나 이미지 분류를 잘해왔는지 살펴보기 위해 2010년부터 매년 열려왔던 ImageNet Classification Challenge 확인
- ImageNet Dataset: 1.2 million 정도의 이미지와 1000개의 Class를 지닌 거대한 데이터셋

AlexNet
AlexNet은 2012년 ImageNet 대회에서 혁신적인 성과를 거둔 모델로, CNN의 대중화를 이끌었음.ReLU 비선형 함수를 처음 사용한 CNN 구조가 특징
- 구성요소: 5개의 Convolutional Layer와 3개의 Fully-Connected Layer로 구성됨. 각 층 사이에 ReLU 활성화 함수가 사용

-
특징:
- 필터 크기(11x11)와 높은 스트라이드(4)를 통해 연산 효율성을 높임. 두 개의 GTX 580 GPU를 사용해 병렬 학습을 수행함.
- Local response normlization 이라는 정규화 기법을 사용했지만 현재는 Batch Normalization 주로 사용
- 2019년 기준 약 46000 정도의 인용 ( 찰스 다윈의 '종의 기원'이 50000 정도의 인용 )
- AlexNet의 위와 같은 구조는 Trial-and-error 방식으로 찾은것임
- "trial-and-error 방식": 최적의 신경망 구조와 하이퍼파라미터를 찾기 위해 반복적으로 설정을 조정하며 실험
-
연산량:
- 앞으로 나오는 CNN 모델들이 Floating point operations(연산량)을 얼마나 효율적으로 줄였는지에 대해 Contribution으로 내세우기 때문에 중요
- CONV Layer 연산량 :


- Pooling Layer 연산량 :
이러한 이유로 풀링 레이어의 아웃풋 H/W 값이 27이 됨


-
AlexNet 구조의 모습과 Memory 사용량, 학습해야할 Parameter 수, 연산량에 대한 표:



-
메모리 사용량: Conv layer가 가장 많고 그리고 초반 Conv layer가 가장 많음
- 초반 Conv layer가 다루는 이미지가 고해상도이기 때문
-
학습해야할 파라미터 수: FC layer가 가장 많음
- FC layer는 Weight matrix를 학습해야하는데 이미지를 Flatten 시켰기 때문에 가중치 행렬이 커서 학습 파라미터의 수가 많음
-
연산량: Conv layer가 많음
- 고화질 상황에서 여러 개의 필터를 사용하다보니 연산량이 커짐
-
성과: 당시 최신 기술보다 현저히 낮은 오류율을 기록하여 CNN의 가능성을 입증함.
ZFNet

- ImageNet Classification Challenge의 2013년 우승자
- Imagenet top 5 error : 16.4% => 11.7%
- AlexNet의 구조를 개선하여 첫 번째 합성곱 층에서 필터 크기와 스트라이드를 줄이고, 3~5번째 합성곱 층에서 필터 수를 늘린 신경망
VGG
ImageNet Classification Challenge 2014년 우승자는 아니었지만, 우승자보다 더 많은 관심을 받은 모델
- Alexnet과 Vgg와의 비교


- 특징: 수작업 trial-and-error 방식에서 벗어나 일관된 설계 원칙 정립
- VGG 모델의 연산량은 AlexNet보다 19배 더 많아, 훨씬 거대한 네트워크 구조를 형성
- 일정한 크기의 필터를 사용하지만 Stage가 증가할 때마다 필터의 개수를 2배로 증가
- 구조 : conv-conv-pool 구조를 반복하는 Stage로 구성
- 풀링 레이어: Pool layer는 2x2 stride 2의 max pooling을 사용.
- Conv Layer 사용 방식: Nonlinear function 없이 Conv layer를 겹쳐서 사용하며, 작은 필터(3x3)를 여러 개 겹쳐 사용하여 연산량 최적화
- 채널 수 증가: Max pooling 이후 채널 수를 2배로 증가시켜 연산량 균형 유지
GoogLeNet
GoogLeNet은 "효율적인 컴퓨팅"을 목표로 설계된 네트워크임.

ResNet
-
특징: ImageNet Classification Challenge 2015년 우승 모델로, ILSVRC, COCO 등 다양한 이미지 분류 대회에서 최고 성적을 기록
-
Deep 모델의 문제점 해결: 깊은 네트워크 구조의 학습 어려움을 해결하기 위해 Residual Learning 도입, 깊은 모델임에도 불구하고 효율적인 학습이 가능
- Batch Normalization 발견 후 사람들은 그동안의 네트워크 구조보다 훨씬훨씬 깊은 네트워크를 쌓으려고 노력
- 하지만 성능 안좋음. 더 많은 레이어를 쌓았는데 성능이 안좋다는 것은 오버피팅아닐까? 라고 생각함

- 하지만 확인해보니 애초에 학습이 잘 안되는 언더피팅임을 확인
- Deep한 모델이 Shallow한 모델을 모방해보는 것은 어떨까라는 아이디어에서 시작
-
구조: Residual Block을 반복하여 깊이 있는 네트워크 구조 형성.

-
Additive Shortcut: 기존 Conv Block에 Additive "shortcut"을 추가하여, Identity Function 학습이 가능하도록 구성.

-
Global Average Pooling: GoogLeNet처럼 Global Average Pooling을 사용하여 연산량을 줄임.

-
aggressive stem : GoogLeNet처럼 네트워크 초반에 이미지를 다운샘플링하여 연산량 감소

-
모델 제안: 다양한 깊이의 모델(ResNet-50, ResNet-101, ResNet-152) 제안, 깊이에 따라 성능과 연산량의 Trade-off 존재 (1개의 Residual Block은 2개의 Conv Layer으로 이루어짐)
-
Bottleneck Residual Block: 1x1 Conv를 사용해 채널 수를 조정하고 연산량을 줄이며, 비선형성을 증가시킴.


-
Resnet-50은 Basic blocks을 Bottleneck Blocks으로 변경한 형태이며 지금까지도 baseline 아키텍쳐로 사용중


지금까지 살펴본 모델들의 성능과 복잡성
ResNet이 확실히 상대적으료 효율적이면서 가장 좋은 성능
ResNeXt
- 특징: ResNet의 성공을 기반으로 G개의 병렬적인 Residual Block을 사용한 모델.
- Grouped Convolution을 사용하여 연산량을 유지하면서도 더 나은 성능 달성.

![]
- Grouped Convolution: 입력 채널을 여러 그룹으로 나누어 각각 독립적으로 합성곱 연산을 수행 => 전체 연산량 줄어듬
- 예) groups=2 일때 2개의 병렬적인 레이어

K는 필터의 크기

그룹을 추가 할수록 연산량 유지하면서 성능 올림 확인 가능
Squeeze-and-Excitation Networks (SE Networks)
MobileNets & ShuffleNet
- 경량화 모델: 성능보다 효율성에 중점을 둔 경량화 모델.
- Depthwise Separable Convolution: MobileNets에서 사용되는 주요 기법으로, 연산량을 크게 감소시킴.
- 효율적 설계: 성능을 유지하면서도 가벼운 모델을 목표로 함

- Depthwise Convolution: 각 입력 채널에 대해 개별적으로 합성곱을 수행하며, 그룹의 수는 입력 채널 수(C)와 동일이 과정에서는 채널 간의 상호작용 X
- Pointwise Convolution: 1x1 크기의 필터를 사용하여 1x1 필터는 입력 텐서의 한 위치에서 모든 채널에 대해 가중합을 계산을 해 새로운 출력 채널을 생성 => 채널 간의 상호작용 만듬. 이는 입력 채널을 C에서 C로 변환
- 채널 간의 정보 결합을 통해 새로운 특징을 생성하는게 목적
- 질문 : 1x1 필터는 입력 텐서의 한 위치에서 모든 채널에 대해 가중합을 계산하는 것인데 어떻게 채널 차원에서의 복잡성을 처리할 수 있는거야?
- 연산량 측 출력은 H×W×Cout 크기의 텐서.
- 1x1 Convolution은 각 입력 위치에서 모든 채널에 대해 가중합을 계산하여 출력 채널 수(Cout)를 만듬. Cout은 1x1 필터의 개수에 비례
- 1x1 Convolution을 사용하면 Cout(출력 채널 수)를 줄일 수 있기 때문에, 결과적으로 연산량도 줄어듬
Neural Architecture Search (NAS)
- 구조 자동화: 네트워크 구조 설계 과정을 자동화하는 방법론으로, 연산 자원이 많이 필요하지만 새로운 구조를 탐색 가능.
CNN 아키텍쳐 발전 총정리
- 초기 연구 (AlexNet -> ZFNet -> VGG): 초기 연구들은 더 큰 네트워크가 더 좋은 성능을 보인다는 것을 보여줌
- GoogLeNet: GoogLeNet은 효율성에 집중한 최초의 모델 aggressive stem, 1x1 bottleneck convolutions, FC 레이어 대신 global avg pool등을 특징으로 함
- ResNet: ResNet은 매우 깊은 네트워크를 훈련할 수 있는 방법, 네트워크가 커질수록 성능 향상이 줄어드는 현상 보임
- ResNet 이후: 효율적인 네트워크가 중심이 되었으며, 복잡성을 증가시키지 않고 어떻게 정확도를 향상시킬 수 있을지에 대한 연구가 이어짐
- 작은 네트워크: 모바일 장치를 겨냥한 작은 네트워크들이 등장함.대표적으로 MobileNet, ShuffleNet
- Neural Architecture Search (NAS): NAS는 아키텍처 설계를 자동화할 수 있는 가능성을 제시
아키텍쳐 선택 가이드
성능이 필요하다면 ResNet, 속도가 필요하다면 MobileNet, ShuffleNet
[PT Lecture Review] 발표한 자료는 아래와 같습니다

발표자료 :
참고 강의: