키워드
1. 이미지 분류에서 딥러닝의 효시를 알렸으며, 대규모 데이터셋에 CNN을 적용하여 큰 성과를 거둠.
2. "ImageNet Classification with Deep Convolutional Neural Networks" (2012)
3. ReLU + Local response normalization, Dropout , Data Augmentation
AlexNet
현실은 다양성이 매우 크기 때문에 이를 인식하는 방법을 배우려면 훨씬 더 큰 훈련 세트가 필요하다. 또한, 수백만 개의 이미지에서 수천 개의 개체에 대해 학습하려면 학습 용량이 큰 모델이 필요하다.
AlexNet은 6천만개의 파라미터 + 650,000개의 뉴런 + 5개의 Conv 레이어 + Max pooling 레이어 + 3개의 Fully Connected 레이어 + softmax로 이루어진 용량이 큰 CNN 모델이다. 중간 특정 레이어를 제거하면 Top-1 오류율이 2% 증가하며, 좋은결과를 얻으려면 깊이가 중요하다는 것을 확인하였다.
활성화 함수로 ReLU를 사용하였으며, "드롭아웃(dropout)"을 사용하였다. 또한 매우 효율적인 GPU 병렬 방식 구현되었으나, 현실적으로 당시 단일 GPU로 구성할 수 없어서 병렬로 구현된 것이다. 비슷한 크기의 레이어를 가진 FC 신경망과 비교할 때 CNN은 연결과 매개 변수가 훨씬 적기 때문에 훈련하기가 더 쉽지만, 이론적으로 최고 성능은 약간 더 나쁠 가능성이 있다.
데이터셋
ILSVRC-2010 및 ILSVRC-2012 대회에서 사용된 ImageNet 이미지 사용하였으며, 이는120만 개의 훈련 이미지, 50,000개의 검증 이미지, 150,000개의 테스트 이미지로 이루어져 있다. ImageNet은 가변 해상도 이미지로 고정 해상도 256 x 256으로 다운샘플링 전처리하였다. 또한120만 개의 레이블이 지정된 예제가 있어도, 네트워크 크기로 인해 과적합이 문제가 되며,이를 해결하기 위해 몇 가지를 트릭을 사용하였다
Data Augmentation
데이터 세트를 인위적으로 증가 시키는 방식이다.첫번째 방법으로 이미지 변환 및 좌우 대칭으로 새로운 이미지를 구성하였다. 두번째 방법으로 훈련 이미지의 RGB 채널 강도를 변경하였다. 강도는ImageNet 훈련 세트 전체의 RGB 픽셀 값에 대해 PCA를 수행한 뒤, 각 훈련 이미지에 eigen vector에 특정 배수를 곱하여 변경하였다.이를 통해 물체의 정체성이 조명의 강도와 색상의 변화에 변하지 않는다는 것을 알 수 있음.
아키텍처
8개의 학습된 레이어(5개의 컨벌루션 레이어와 3개의 완전 연결 레이어)가 포함된다.자세한 아키텍처의 w*h*d 는 생략하였다.
ReLU
훈련 시간 측면에서 포화 비선형성(Sigmoid, tanh)은 비포화 비선형성(ReLU)보다 훨씬 느리다. ReLU와 함께 작동하는 CNN은 tanh를 사용하는 CNN보다 몇 배 더 빠르게 학습된다. 빠른 학습은 대규모 데이터세트로 훈련된 대규모 모델의 성능에 큰 영향을 미친다.
다중 GPU 학습
단일 GTX 580 GPU에는 메모리가 3GB 수준으로 용량 상의 문제로 커널(또는 뉴런)의 절반을 각 GPU에 배치하며 구현하였다. 정보의 교환을 위해 위 아키텍처 이미지에서 레이어 3의 커널은 레이어 2의 모든 커널 맵(GPU 1 & 2)에서 입력을 받는다.다만 레이어 4의 커널은 동일한 GPU에 있는 레이어 3의 커널 맵에서만 입력을 받는다.
Local Response Normalization
ReLU는 포화를 방지하기 때문에, input normalization이 불필요하다.다만 local normalization이 일반화에 도움이 된다는 것을 발견했다. 이에ReLU가 수행된 뒤 normalization을 적용하며, 다양한 커널을 사용하여 계산된 뉴런 출력 간에 normalization을 수행한다.Local response normalization은 오류율을 Top-1 1.4%, Top-5 1.2% 만큼 줄이는 효과가 있다.
중첩 pooling
기존의 pooling은 영역이 겹치지 않는다.Alexnet은 stride= 2, size= 3 으로 기존 pooling과 다르게 일부 영역이 겹치게 구현되었다.중첩 pooling을 사용하는 모델이 과적합되기가 약간 더 어렵다는 것을 관찰할 수 있다.
Dropout
하이퍼파리미터로 0.5의 확률로 각 숨겨진 뉴런의 출력을 0으로 설정하는 트릭이다."Dropout"된 뉴런은 forward pass 및 bacward pass에 기여하지 않는다. 이에 따라테스트 시에는 모든 뉴런을 사용하지만 출력에 0.5를 곱해야한다. 뉴런이 특정 다른 뉴런에 의존할 수 없기 때문에, 뉴런의 복잡한 상호 연관성을 감소시키나, 수렴하는 데 필요한 반복 횟수를 대략 두 배로 늘리는 부효과도 있다.
결과
AlexNet은 Top-1 37.5% 및 Top-5 17.0%의 상 테스트 세트 오류율을 달성하였다.
Kernel을 시각화한 이미지를 참고하면, 네트워크는 다양한 색상 뿐만 아니라 다양한 주파수 및 방향을 학습했다. 또한 GPU 별로 특징이 특수화되는데, GPU 1의 커널은 대체로 색상에 구애받지 않는 반면, GPU 2의 커널은 대체로 색상별로 다르다. 모든 실행 중에 발생하며 가중치 초기화와는 독립적인 현상이다.
네트워크의 시각적 지식을 조사하는 또 다른 방법은 마지막 hidden layer(4096D)에 의해 계산된 벡터를 고려하는 것이다. 두 이미지의 벡터간 유클리드 거리가 작으면, 이미지가 유사하다고 간주할 수 있다. 두 개의 4096차원 실수 벡터 사이의 유클리드 거리를 사용하여 유사성을 계산하는 것은 비효율적이지만, 자동 인코더를 훈련하여 이미지 벡터를 짧은 이진 코드로 압축하면 효율적으로 만들 수 있다.이는 Raw 픽셀 값에 자동 인코더를 적용하는 것보다 훨씬 더 나은 이미지 검색 방법이다.
Reference
'딥러닝 > Classification' 카테고리의 다른 글
[Classification] GoogLeNet (0) | 2024.07.25 |
---|---|
[Classification] VGGNet (2) | 2024.07.20 |
[Classification] ZFNet (1) | 2024.07.18 |
[Classification] LeNet (0) | 2024.07.11 |
[Classification] Classification 발전 과정 (0) | 2024.07.06 |