1. Introduction
최근 "객체 인식" 문제에 "머신러닝" 방식이 필수적
성능 개선을 위해서는
- 데이터셋 크기 ↑
- 강력한 모델
- 오버피팅 방지를 위한 더 나은 기술
데이터셋 크기
- 간단한 작업의 경우 작은 크기의 데이터로도 해결 가능
- BUT 현실에서는 다양하기 때문에 적은 크기의 데이터셋의 한계 인지
→ 더 큰 크기의 훈련데이터 필요
- 새로운 Larger Dataset 등장 ( LabelMe , ImageNet )
강력한 모델
- Larger Dataset을 다룰 수 있는 모델 필요
- 엄청나게 복잡한 객체 인식 작업을 위해서는
- ImageNet과 같이 큰 데이터셋으로도 부족
- 그래서 모델이 가지지 못한 데이터를 보완하기 위한 많은 prior knowledge 필요
- CNNs (Convolutional neural networks)
- 깊이 , 너비 파라미터 조정
- 이미지에 대해 대부분 올바르게 예측
- 다른 순방향 신경망에 비해 connection↓ & parameter↓ → 쉬운 훈련
오버피팅 방지
- 고성능 GPU + 최적화된 2D 합성곱 → 더 큰 CNN 훈련 가능
- 모델이 커질수록 오버피팅 위험 증가
- 이를 해결하기 위해 논문에서는 오버피팅 방지 기법 적용
이 논문에서 제안하는 CNN의 특징
1. 성능 개선 & 훈련 시간 감소
2. 오버피팅 방지
3. 5 convolutional layers & 3 fully-connected layers
*깊이(depth) 조정이 성능에 결정적 역할
2. The Dataset
- 주로 사용한 데이터셋 : ILSVRC-2010
- ILSVRC : ImageNet의 일부 데이터
- ILSVRC-2010 : test set label이 가능한 유일한 ILSVRC 버전
- Train : 1,200,000 / Val : 50,000 / Test : 150,000
- Pre-Processing
- 이미지별 resolution이 다양하므로, 모든 이미지를 256 X 256으로 downsample
- 더 짧은 변을 256px로 rescale → 중앙에서 256×256 패치 자르기
3. The Architecture
- 8개의 학습된 층 (5 CONV & 3 FCs)
논문에서 제시한 CNN 구조의 새로운 특징
3.1 ReLU Nonlinearity
- 기존 활성화 함수 (neuron's output , activation function) : Tanh 함수
- f(x)=tanh(x) or f(x)=(1+e−x)−1
- Tanh 함수의 특징
- 수의 범위 [-1,1]로 압축
- 0 중심
- 포화 상태에서 기울기 소실 (Saturated)

- 훈련 시간 감소를 위해 "비포화 함수인 ReLU 함수" 사용


- 이전에도 Tanh 함수의 한계 극복을 위해 f(x)=∣tanh(x)∣ 제안되었음.
하지만 이는 오버피팅 방지에 초점을 맞춘 접근법.
- 위 논문에서는 "학습 속도"에 초점을 맞춰 ReLU 사용
- 빠른 학습 : 큰 데이터셋을 훈련하는 큰 모델의 성능에 영향↑
3.2 Training on Multiple GPUs
- 참고로 GPU 성능이 발전되어 최근에는 잘 사용하지 않는 기술
- 과거에는 GTX 580 GPU는 3GB 메모리밖에 없었기 때문에,
하나의 GPU로는 1,200,000개의 이미지를 학습하기에 부족함
Cross-GPU Parallelization
- 2개의 GPU 활용
- 특정 single layer 내에 2개의 GPU가 존재해 서로 데이터가 공유됨
(다른 layer와는 공유 X)
- kernel은 절반으로 나누어 각각의 GPU에 적용
- 효과 : 1개의 GPU로 학습한 네트워크에 비해 학습 시간↓ & top-1과 top-5 오류율↓
3.3 Local Response Normalization
- 참고로 LRN 또한 최근에 거의 사용되지 않음. 대신 Batch Normalization 사용..?
- ReLU는 포화(saturating) 문제를 방지하기 위한 입력 정규화(normalization)은 필요 없음
- 하지만 LRN은 일반화 성능을 향상시켜줌
- 실제 뉴런에서 발생하는 "측면 억제(lateral inhibition)"와 같은 기능을 함
- 큰 활성화 값을 가진 뉴런이 억제되는 효과
- ReLU 활성화 함수는 음수는 0으로 만들고, 양수는 그대로 전달 → 특정 뉴런이 과도하게 활성화될 가능성이 있음
- 이러한 문제를 해결하기 위해 각 뉴런의 활성화 값이 주변 kernel의 값들과 비교해 정규화

3.4 Overlapping Pooling
- s (이동 간격) z (크기)
- s = z
- 주로 사용하는 방식
- non-overlapping
- 기존 크기 유지
- s < z
- AlexNet의 경우, 모든 pooling unit의 값을 동일하게 값 적용 → s=2, z=3 (s < z)
- non-overlapping pooling unit에 비해, overlapping pooling unit은 top-1와 top-5 오류율을 각각 0.4%와 0.3% 감소시켜주고, 오버피팅 방지해줌.
3.5 Overall Architecture
- 5개의 convolutional layers & 3개의 fully-connected layers
- 마지막 FC layer는 1000개의 클래스 레이블로 분류하는 Softmax 함수
- AlexNet은 다항 로지스틱 회귀 목적함수를 최대화
= 정답 레이블이 예측될 확률에 대한 로그확률이 최대가 되도록 학습
- 한번 AlexNet의 구조에 따라 각 레이어에 따른 output size의 변화를 계산해보았습니다!
