일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- BFS
- DFS
- 함수 종속성
- 카카오엔터프라이즈
- 구름
- 동전 퍼즐
- softeer
- 소프티어
- 알고리즘
- s3
- java
- 자바
- 코드트리
- es_java_home
- objectstorage
- 백엔드 개발
- 인가인증
- dockercompose
- DP
- 정렬
- db
- jsonwebtoken
- bfs
- On-Premise
- 완전탐색
- 카카오클라우드
- bitmask
- MESSAGEBROKER
- CODETREE
- sonarqube
- Today
- Total
wooing
[논문] Alexnet(2012) 본문

Alexnet이란?
Alexnet은 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)2012년 대회에서 1위를 한 CNN구조이다.
논문 제목: ImageNet Classification with Deep Convolutional Neural Networks
https://papers.nips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
순서
1. Overall
2. The Dataset
3. The Architecture
4. Reducing Overfitting
5. Details of learning
Overall

5개의 Convolutional layers와 3개의 Full-connected layers를 가진다. GPU두대를 병렬처리 하였다. 활성화 함수로는 ReLU를 사용하였고 Normalization으로는 Local Response Normalization을 사용하였고 Overlapping Pooling과 Dropout을 사용하였다.
1층엔 96개의 11*11사이즈 커널, 2층엔 256개의 5 * 5 * 48사이즈 커널, 3층엔 384개의 3 * 3 * 256사이즈 커널, 4층엔 384개의 3* 3* 192사이즈 커널, 5층엔 256개의 3 * 3 * 192사이즈 커널을 사용한다.
pooling은 1, 2, 5층에 사용하고 Normalization은 1, 2층에 사용한다.
*논문에서는 입력 이미지의 크기를 224라고 하였지만 각 층을 계산하였을때 위의 값들과 맞지 않는다. 대부분 오타로 생각하고 있으며 227인 경우 제대로 나온다고 한다.
Dataset
Imagenet에서 1000개의 클래스로 이루어진 약 120만개의 훈련 이미지, 5만개의 검증 이미지, 15만개의 테스트이미지로 학습하였다고 한다. 입력으로 균일한 크기의 이미지가 입력되어야 하기 때문에 256 * 256 크기로 Resize하였다. 직사각형의 사진인 경우 길이가 짧은 쪽을 256으로 rescale한 후에 가운데를 중심으로 잘랐다고 한다. 이미지는 RGB 3채널 이미지 이며 resize외의 전처리 과정은 없다.

The Architecture
순서는 논문에 나온 순서 그대로 이며 이번 구조에서 중요한 순서로 되어있다고 한다.
1. ReLU Nonlinearity
이 논문이 나왔을 당시 일반적으로 활성화 함수를 Tanh나 Sigmoid함수로 사용했다고 한다. 그러나 Alexnet에서는 ReLU함수를 사용하였는데 그 이유로 Tanh나 Sigmoid는 포화 비선형성이고 ReLU는 비포화 비선형인데, 포화 비선형성이 비포화 비선형성보다 느리기 때문이라고 한다.


오른쪽의 그림은 4층 CNN구조에서 Cifar-10분류 모델에 ReLU와 Tanh를 각각 활성화 함수로 사용하였을때 에러율 25%에 달성까지 걸린 epochs를 나타낸 그래프이다. 직선은 ReLU이고 점선은 Tanh이며 ReLU가 Tanh보다 약 6배 빠르다고 한다.
ReLU는 모든 층에 사용된다.
2. Training on Multiple GPUs
두번째로는 2개의 GPU를 사용한 것 이다. 2개의 GPU로 망을 분산시켜 소요시간을 감소시켰다고 한다. 각 GPU에 채널의 반씩 할당하여 학습한다.

conv1에서 output채널이 96이지만 절반씩 나누기때문에 48채널인것을 볼 수 있다. 논문에서는 Additional trick으로 3째와 Full-connceted층을 제외하고 모든 층은 같은 GPU에서만 채널을 공유하도록 했다고 한다.

1층으로 입력되는 이미지들로 위의 48개는 GPU1에게 아래의 48개는 GPU2에게 할당된다. 위의 이미지엔 주로 색상정보가 없지만 아래는 다양한 색상을 담고있다. 이런 이유로 특정층을 제외하고 같은 GPU끼리의 채널을 공유하도록 한다.
3. Local Response Normalization
특정값에 의해 과대적합되는것을 방지하기 위해 LRN(Local Response Normalization)을 사용한다. LRN은 실제 뉴런에서 일어나는 현상인 "측면 억제"현상을 활용하였다고 한다.

k: 편향
α: 학습률
N: 커널의 총 갯수
n: 탐색하는 커널 갯수
x, y: 이미지 좌표
논문에서는 k = 2, n = 5, α = 10^-4 β = 0.75로 사용했다고 한다. 공식은 i번째에서 n개의 인접 커널 x,y좌표값의 제곱합을 구하여 현재값을 새로운 값으로 만들어준다.
4. Overlapping Pooling
일반적인 Pooling은 커널사이즈와 stride크기가 같아 충접되는 영역이 없다. overlapping pooling은 커널이 중첩되도록 stride가 커널 사이즈보다 작도록 한 것이다. 논문에서는 커널 사이즈를 3 * 3으로 하고 stride를 2로 하였다고 한다.
4. Reducing Overfitting
Alexnet구조에서 사용되는 파라미터의 수는 약 600만개인데 이는 과대적합을 유발할 수 있으며 이를 방지하기 위해 2가지 방법을 사용하였다고 한다.
첫번째는 Data argumentation이고 두번째는 Drop out이다.
1. Data argumentation
과대적합을 방지하는 방법중에 하나는 데이터의 양을 늘리는것 이다. 그러나 데이터의 양을 늘리기위해 라벨링 하는것은 많은 비용을 필요로 하므로 CPU 연산으로 이미지를 변형시켜 데이터를 늘리도록 했다고 한다. 첫번째 방법으로는 256 * 256 이미지를 224 * 224 크기로 랜덤으로 자르고 좌우반전을 적용하는것 이다. 이 방법을 사용하는 경우 데이터의 양을 2048배 늘릴수 있다고 한다. 그러나 이는 오히려 과대적합될 수 있으므로 상하좌우 중앙 총 10개의 이미지를 만들었다고 한다. 이런 이유로 input size가 224라고 한다.

두번째 방법으로는 pca를 사용하여 이미지의 RGB값을 변환시키는것 이다. 3 * 3 공분산에서 고유벡터, 고유값을 구한 후 RGB값에 더해준다.

(pca:주성분 분석, 주로 이미지 압축이나 변환에 사용)
2. Drop out
드랍아웃은 신경망 일부를 사용하지 않는 방법이다. 확률은 0.5를 사용하였다. 그러나 테스트시에는 모든 뉴런을 사용하고 결과값에 0.5를 곱해주었다고 한다.
5. Details of learning
옵티마이저는 확률적 경사 하강법(SGD)을 사용한다.

모멘텀은 0.9 가중치 감쇠는 0.0005로 한다.
합성곱 2, 4, 5층에는 가중치를 0으로 초기화 하고 전결합층은 편향을 1로 초기화한다.
(그러나 초기화를 모두 0으로 하는것은 오히려 성능을 저하시킨다고 한다.)
References:
https://papers.nips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
'인공지능 > 머신러닝' 카테고리의 다른 글
합성곱 신경망(Convolutional Neural Network) (0) | 2023.01.30 |
---|---|
과적합, 기울기 소실, 기울기 폭주 (1) | 2023.01.30 |
퍼셉트론(Perceptron) (0) | 2023.01.29 |
소프트맥스 회귀(Softmax Regression) (0) | 2023.01.20 |
정수 인코딩, 원-핫 인코딩(Integer Encoding, One-hot Encoding) (0) | 2023.01.19 |