엄청난 양의 클래스를 이미지들로부터 학습시키기 위해서는 객체 탐지에서의 복잡성을 해결해야 하는데, 방대한 양의 데이터셋만으로는 부족 → 모델 자체도 방대한 양의 사전 지식을 가지고 있어야한다. 이를 해결하기 이해 등장한 모델 .
CNN의 경우, depth 와 width 를 조절하여 모델의 크기 조정이 가능하며, 이미지 본질에 대해 강한 추측이 가능하다. → 기존의 비슷한 크기의 신경망에 비해 CNN 이 더 적은 connection 과 parameter로 훈련 가능 & 더 좋은 효과를 나타낸다.
AlexNet은 5개의 conv layer 와 3개의 FC layer로 구성되어있으며, 온전해야한다.
ImageNet : 22,000 카테고리에 대한 1500만개의 이미지를 제공한다. 이미지넷에서 제공하는 이미지 크기가 다양한데, 알렉스넷의 경우에는 256 X 256 으로 고정된 이미지를 input으로 넣는다. 따라서 이미지 전처리 과정이 필요하다. 이미지를 downscale 해주는데, 우선적으로 이미지의 최소 부분을 256이 되도록 rescale, 256 X 256 사이즈로 중앙에서부터 crop 진행하였다.
총 8개의 레이어로 구성, 5개가 conv layer이고 3개가 FC layer 이다. 마지막 FC layer 층에서는 softmax를 사용하여 1000개의 output을 출력한다.
2,4,5번째 conv layer 에는 이전 layer에서 같은 GPU 에 존재하는 kernel map에서만 input을 받아들인다.
3번째 conv layer 에서는 모든 kernel map들로부터 input 값을 받아들인다. FC layer 의 뉴런들은 이전 레이어의 모든 뉴런들과 연결되어있다.
입력 x에 대해 f를 출력하는 기본적인 방법의 경우 f(x) = tanh(x) 혹은 f(x) = (1+e^(-x))^(-1) 인데, 경사하강법을 이용한 훈련 시간에서는 f(x) = max(0,x) 보다 느리다. CNN 구조 에서의 ReLU의 경우 기본적인 방법보다는 몇배는 빠르다. 또한 에러율도 ReLU를 이용한 4개의 CNN 층만으로도 6번 epoch 만에 에러율을 줄이는 모습을 확인할 수 있다.
ReLU를 사용하면 포화상태에 대해서 정규화 과정이 없어도 발생시키는 것을 막을 수 있으나, ReLU의 특성상 한 뉴런의 값이 엄청나게 커질 경우, 다른 뉴런에게 영향을 끼칠 수 있는데, 이 현상을 억제하고자 LRN이 나오게 되었다. 현재는 batch normalization이 더 자주 쓰인다.
데이터 증강이라고 한다. GPU에서 이전 배치에 대한 학습을 진행중 일 때, CPU 에서 다음 training set 준비를 위해 진행한다. 증강을 위한 변형 과정은 이동, 좌우반전인데, 256 256 사이즈의 이미지에서 랜덤으로 224 224 크기의 patch 를 잘라내고, test에서는 224 * 224 의 patch 들을 horizontal flip 하여 10개의 patch 로 만들어낸다. 각 패치들에 대해서는 softmax 결과를 평균하여 prediction을 진행한다.
다른 변형 과정으로는 훈련 데이터의 RGB 채널의 세기 조절을 하여 데이터를 증강시키는 과정이다. 훈련 세트 RGB 값에 PCA를 수행하여
각 픽셀 값에 가우시안값에 비례하는 크기의 랜덤 변수와 이미지에서 발견된 주요 구성 요소의 배수를 더한다.
Dropout은 서로 연결된 연결망(layer)에서 0부터 1 사이의 확률로 뉴런을 제거(drop)하는 방법이다. 아래의 그림 1 과 같이 dropout rate가 0.5라고 가정하면, Drop-out 이전에 4개의 뉴런끼리 모두 연결되어 있는 전결합 계층(Fully Connected Layer)에서 4개의 뉴런 각각은 0.5의 확률로 제거될지 말지 랜덤하게 결정된다. 위의 예시에서는 2개가 제거된 것을 알 수 있다. 즉, 꺼지는 뉴런의 종류와 개수는 오로지 랜덤하게 dropout rate에 따라 결정된다. Dropout Rate는 하이퍼파라미터이며 일반적으로 0.5로 설정합니다.
가중치 w 에 대한 업데이트는 위의 식과 같이 진행된다. (i : 반복 횟수, v : 모멘텀 변수, e: 학습률, <dl/dw>식 : i 번째 배치에서 W_i를 사용하여 구한 gradient의 평균)