논문 "ImageNet Classification with Deep Convolutional Neural Networks" 을 보면서, AlexNet에 대해 정리한다.
다음의 사이트를 완전 참조함
[CNN 알고리즘들] AlexNet의 구조
LeNet-5 => https://bskyvision.com/418 AlexNet => https://bskyvision.com/421 VGG-F, VGG-M, VGG-S => https://bskyvision.com/420 VGG-16, VGG-19 => https://bskyvision.com/504 GoogLeNet(inception v1) =>..
bskyvision.com
해당 논문의 저자 이름이 Alex 였기 때문에 네트워크 이름이 AlexNet이라고 함.
AlexNet
AlexNet의 기본구조는 LeNet-5와 크게 다르지 않다. 2개의 GPU로 병렬연산을 수행하기 위해 병렬적인 구조로 설계되었다는 점이 가장 큰 변화이다. AlexNet의 기본 구조는 아래와 같다.
AlexNet의 구조도
AlexNet은 총 8개의 layer 층으로 형성되어 있으며, 5개의 convolution layer와 3개의 full-connected layer로 구성되어 있다.
2번째, 4번째, 5번째 컨보루션 레이어들은 전 단계의 같은 채널의 특성맵들과만 연결되어 있는 반면, 3번째 컨볼루션 레이어는 전 단계의 두 채널의 특성맵들과 모두 연결되어 있다.
각 레이어마다 수행되는 작업을 살펴본다. AlexNet에 입력되는 데이터는 227 * 227 사이즈의 RGB 컬러 이미지인 227 * 227 * 3 이미지다. (그림에는 224로 되어 있는데, 그림 오류)
1) 1번째 layer(컨볼루션 레이어): 96개의 11 * 11 * 3 사이즈 필터커널로 입력 영상을 컨볼루션한다. Stride (컨볼루션 보폭) 를 4로 설정했고, zero-padding은 사용하지 않았다. 이로써 96장의 55 * 55 사이즈 특성맵들 (55 * 55 * 96 특성맵) 이 산출되고, ReLU 함수로 활성화한다. 이어서 3 * 3 overlappoing max pooling 이 stride 2로 시행된다. 그 결과 27 * 27 * 96 특성맵을 갖게되고, 이후 수렴 속도를 높이기 위해 local response normalization 이 시행된다. local response normalization은 특성맵의 차원을 변화시키지 않으므로, 특성맵의 크기는 27 * 27 * 96으로 유지된다.
=> 결과: 27 * 27 * 96 의 특성맵
2) 2번째 layer(컨볼루션 레이어): 256개의 5 * 5 * 48 커널을 사용하여 전 단계의 특성맵을 컨볼루션한다. stride 는 1로, zero-padding은 2로 설정한다. 따라서 256장의 27 * 27 * 256의 특성맵을 산출한다. 역시 ReLU 함수로 활성화하고, 그 다음에 3 * 3 overlapping max pooling 을 stride 2로 시행한다. 그 결과 13 * 13 * 256 특성맵을 얻게 되고, 이후 local response normalization 이 시행된다.
=> 결과: 13 * 13 * 256 의 특성맵
3) 3번째 layer(컨볼루션 레이어): 384개의 3 * 3 * 256 커널을 사용하여 전 단계의 특성맵을 컨볼루션한다. Stride와 zero-padding은 모두 1로 설정한다. ReLU 함수로 활성화한다.
=> 결과: 13 * 13 * 384의 특성맵
4) 4번째 layer(컨볼루션 레이어): 384개의 3 * 3 * 192 커널을 사용해서 전 단계의 특성맵을 컨볼루션한다. Stride와 zero-padding 모두 1로 설정한다. ReLU 함수로 활성화한다.
=> 결과: 13 * 13 * 384의 특성맵
5) 5번째 layer(컨볼루션 레이어): 256개의 3 * 3 * 192 커널을 사용해서 전 단계의 특성맵을 컨볼루션한다. Stride와 zero-padding 모두 1로 설정한다. 따라서 13 * 13 * 256 특성맵을 얻게 된다 역시 ReLU 함수로 활성화한다. 그 다음 3 * 3 overlapping max pooling을 stride 2로 시행한다.
=> 결과: 6 * 6* 256의 특성맵
6) 6번째 layer(Fully connected layer): 6 * 6 * 256 특서맵을 flatten 한 후, 6 * 6 * 256 = 9216 차원의 벡터로 만들어준다. 그것을 여섯번째 레이어의 4096개의 뉴런과 fuly connected 한다. 그 결과를 ReLU 함수로 활성화한다.
7) 7번째 layer(Fully connected layer): 4096개의 뉴런으로 구성되어 있다. 전 단계의 4096개 뉴런과 fully connected 되어 있다. 출력 값은 ReLu 함수로 활성화된다.
8) 8번째 layer(Fully connected layer): 1000개의 뉴런으로 구성되어 있다. 전 단계의 4096개 뉴런과 fully connected 되어 있다. 1000개 뉴런의 출력값에 softmax 함수를 적용해 1000개 클래스 각각에 속할 확률을 나타낸다.
'Artificial Intelligence > DL' 카테고리의 다른 글
[개념 정리] Feedforward Neural Network (FFNN) (0) | 2021.01.05 |
---|---|
[개념 정리] LeNet-5 (0) | 2021.01.05 |