Input $x$에 대한 뉴런의 output $f$에 대한 함수를 모델링할 때는 주로 $f(x) = tanh(x)$ 혹은 $f(x) = (1+e^{-x})^{-1}$과 같은 saturating nonlinearities를 사용
gradient descent를 통한 훈련 시간을 고려했을 때, $f(x) = max(0,x)$와 같은 non-saturating nonlinearity가 더 빠름
이러한 비선형성을 가진 뉴런을 Rectified Linear Unit(ReLUs)라고 함
ReLUs를 통해 학습하는 Deep convolutional neural networks는 $tanh$보다 몇 배 더 빠르게 훈련
💡 saturating vs non-saturating nonlinearities : saturating activation function은 input $x$의 값을 [-1,1], [0,1] 등의 형태로 제한을 한다. 본 논문에서 언급한 tanh 혹은 sigmoid와 같은 activation function은 각각 [-1,1]과 [0,1]로 input $x$의 출력 값의 범위를 지정하게 된다. tanhsigmoid반대로 non-saturating activation function은 $\displaystyle \lim_{z \to \infty }f(x) = \infty$를 만족한다. ReLU의 경우 $f(x) = max(0,x)$로 non-saturating activation function이다. ReLU
4개의 convolutional layers로 구성된 neural network에서 ReLUs를 사용하는 경우 tanh보다 6배 더 빨리 25%의 training error rate에 도달
각 네트워크에 대한 learning rates는 최대한 빠르게 학습하기 위해 독립적으로 구성
Response normalization은 top-1/top-5 error rates를 각각 1.4%, 1.2% 감소
💡 Local Response Normalization : LRN(Local Response Normalization)은 현재는 Batch Normalization의 등장으로 잘 사용되지 않는 정규화 기법이다. 이는 CNN 커널이 이미지를 스캔할 때 특정 픽셀값이 다른 픽셀에 비해 지나치게 높은 값을 가지고 있어 주변에 큰 영향력을 끼치는 것을 억제시키는 일반화 방법 중 하나이다. sigmoid나 tanh 같은 활성화 함수는 saturating nonlinearity 함수로, 데이터의 속성에 따라 편차가 심하면 saturating이 심해져 기울기 소실(gradient vanishing)을 유발할 수 있다. 그러나 ReLU는 non-saturating nonlinearity 함수이기 때문에 input data의 정규화가 필요 없다는 장점이 있지만, 양수값을 뉴런에 그대로 전달하기 때문에 너무 큰 값이 전달되면 주변의 낮은 값이 뉴런에 전달되는 것을 막을 수 있다. 즉, convolution 연산이나 pooling 시에 매우 높은 하나의 픽셀 값이 주변의 픽셀에 영향을 미치는 것이다. 따라서 이를 예방하기 위해 같은 activation map의 같은 위치에 있는 픽셀끼리 정규화를 해주는 LRN이 등장했다.
본 논문에서는 LRN을 측면 억제(later inhibition)의 형태로 구현된다고 하는데, 이는 강한 자극이 주변의 약한 자극을 전달하는 것을 막는 현상을 말한다. 이에 대한 유명한 그림으로 헤르만 격자(Herran grid)가 있다. 해당 그림을 보면 검은 사각형 안에 흰색의 선이 지나고 있는데, 흰색의 선에 집중하지 않으면 회색 점이 보이지만, 흰색 선에 집중하면 다시 회색 점이 보이지 않는다. 이는 흰색으로 둘러싸인 측면에서 억제를 발생시키기 때문에 발생하는 것이다.헤르만 격자
이미지 데이터에 대한 overfitting을 감소시키기 위해 가장 쉽고 흔히 사용되는 방법은 label-preserving transformations을 사용해 데이터셋의 크기를 늘리는 것
두 가지 방법을 통해 data augmentation을 수행하며, transformed images는 연산량이 매우 적어 저장 공간에 저장할 필요 없이 바로 연산이 가능
transformed images는 CPU에서 Python 코드에 의해 생성되며, GPU는 이전 이미지 배치에 대해 학습을 진행
이러한 data augmentation 기법은 사실상 계산이 필요 없음
첫 번째 방법은 generating image translations와 좌우반전(horizontal reflections)을 통한 data augmentation
$(256 \times 256)$ 크기의 images에서 랜덤한 $(224 \times 224)$ patches를 추출 및 해당 패치에 대한 horizontal reflections을 통해 모델 학습
모델 아키텍처에서 input images의 크기가 $(224 \times 224)$로 표시된 이유
training set의 크기가 2048배 $(32 \times 32 \times 2 = 2048)$ 증가
하지만 이를 통해 생성된 데이터는 물론 상호 의존성이 매우 높음
horizontal reflection을 수행해도 label에는 변화가 없으므로 label-preserving transformation
이 방식이 없었다면 네트워크에 상당한 과적합이 발생하여 훨씬 더 작은 네트워크를 사용해야 함
테스트 시에는 모든 이미지 데이터를 2,048배 하는 것이 아닌 $(224 \times 224)$ 크기의 4개의 corner patches, 1개의 center patch와 각각의 좌우반전까지 총 10개의 patches를 추출
10개의 patches들에 대한 모델의 softmax layer에서 만들어진 결과 값을 평균하여 사용
horizontal reflections 및 random crops
💡 AlexNet의 Input size : 논문에서는 AlexNet의 input image size가 $(224 \times 224 \times 3)$으로 명시되어 있다. 그러나 코드 구현 등을 살펴보면 $(227 \times 227 \times 3)$이 맞다. 아마 논문에서는 실수로 잘못 나타낸 것으로 보인다. 사이즈를 수정할 경우, 위에서 training set의 크기는 1682배 $(27 \times 27 \times 2 = 1682)$ 늘어나는 것이 맞다. 그러나 논문에서 언급하는 2048배의 경우 image size가 $(224 \times 224 \times 3)$이어야 맞는데, 어떤 것이 정답인지는 밝혀진 바가 없다.
두 번째 방법은 training images의 RGB channels의 강도(intensities)를 바꾸어주는 것
ImageNet training set에 대한 RGB 픽셀 값의 집합에 PCA를 수행
각 training image에 대하여 PCA를 통해 발견한 principal components에 random variable을 곱한 값을 더해줌
이를 통해 원본 이미지 데이터의 주요한 특성은 변하지 않으며, RGB 값을 변화시켜 색상 및 밝기만 변화
dropout은 훈련 중에는 약 1/2의 비용만 발생하는 매우 효율적인 model combination 기법
각 hidden layer 뉴런의 output을 0.5의 확률로 0으로 설정
이렇게 dropped out된 뉴런은 forward pass에 기여하지 않으며, backpropagation에도 참여 x
input이 주어질 때마다 신경망은 다른 아키텍처를 샘플링하지만, 모든 아키텍처는 가중치를 공유
뉴런들 간의 복잡한 co-adaptations을 감소
test 시에는 dropout을 적용하지 않으며, 모든 outputs에 0.5를 곱함
dropout은 처음 두 개의 fully-connected layer에 적용하였으며, converge에 필요한 iteration이 2배 가량 증가
dropout
💡 Dropout : Dropout은 임의의 뉴런을 일정 확률로 드랍하여 학습에 참여하지 않도록 하는 방법이다. 데이터를 신경망에 통과시키는 과정인 feed-forward에서 해당 뉴런이 생략되며, back-propagation에서도 자연스럽게 제외된다. 여기서 드랍되는 노드는 매 미니배치마다 이항분포(binomial distribution)을 활용하여 랜덤으로 선정된다. 이 때 노드의 드랍 확률 $p$가 하이퍼파라미터가 되며, 본 논문에서는 0.5를 설정했다.
추론(inference) 과정에서는 드랍되는 노드 없이 모든 노드가 항상 추론에 참여하여 모든 단위가 예측 단계에서 고려된다. 이러한 추론 과정에서 가장 중요한 점은 가중치 파라미터 $W$에 확률 $p$를 곱해주어야 한다는 것이다. 이는 각 layer에서 모든 뉴런을 전달받기 때문에 최종 가중치는 훨씬 커질 거지는 것을 방지하기 위해서이다.
ILSVRC-2010에서 Top-1, Top-5 test set error rates가 각각 37.5%와 17.0%로 기존 best performance의 성능을 앞섬
$1 CNN$ : 본 논문에서 제시한 CNN 모델의 성능(18.2%)
$5 CNNs$ : 5개의 비슷한 CNN 모델들의 예측값을 평균(16.4%)
$1 CNN*$ : 마지막 pooling layer에 6번째 convolutional layer를 추가시켜 전체 ImageNet Fall 2011(1,500만 개의 이미지, 22,000개의 카테고리)를 분류한 후 ILSVRC-2012에서 fine-tuning(16.6%)
$7 CNNs*$ : ImageNet Fall 2011을 통해 사전 학습한 2개의 CNN 모델들과 앞서 언급한 5개의 CNN 모델들의 예측값을 평균(15.3%)
💡 본 논문은 거대한 CNN 모델을 통해 이미지 분류 성능을 향상시킨 첫 번째 모델인 AlexNet에 관한 논문이다. AlexNet은 먼저 ReLU 활성화 함수를 통해 학습 속도를 향상시키고, Multiple GPUs를 통해 학습 속도 향상 및 하나의 GPU가 가지고 있었던 용량적인 제한을 완화시켰으며, Local Response Normalization을 통해 ReLU 활성화 함수를 위한 generalization, 그리고 Overlapping Pooling 등을 적용하여 성능을 향상 시켰다. 또한 Overfitting을 감소시키기 위해 랜덤한 patches를 추출한 후 horizontal reflections과 훈련 데이터의 RGB channels에 대한 intensities를 변화시키는 data augmentation, 그리고 선택적인 뉴런을 사용하는 Dropout을 적용하였다.
지금와서 해당 논문을 보면 모델 구조적인 측면에서 이제는 사용하지 않는 방법들도 있고, 뭔가 특별한 부분은 없다. 그러나 CNN을 활용하여 처음으로 거대한 양의 데이터를 학습시키는데 성공했고, 이를 통해 엄청난 성능 향상을 이끌어낸 첫 논문이기 때문에 의미가 있는 것 같다.
Input x에 대한 뉴런의 output f에 대한 함수를 모델링할 때는 주로 f(x)=tanh(x) 혹은 f(x)=(1+e−x)−1과 같은 saturating nonlinearities를 사용
gradient descent를 통한 훈련 시간을 고려했을 때, f(x)=max(0,x)와 같은 non-saturating nonlinearity가 더 빠름
이러한 비선형성을 가진 뉴런을 Rectified Linear Unit(ReLUs)라고 함
ReLUs를 통해 학습하는 Deep convolutional neural networks는 tanh보다 몇 배 더 빠르게 훈련
💡 saturating vs non-saturating nonlinearities : saturating activation function은 input x의 값을 [-1,1], [0,1] 등의 형태로 제한을 한다. 본 논문에서 언급한 tanh 혹은 sigmoid와 같은 activation function은 각각 [-1,1]과 [0,1]로 input x의 출력 값의 범위를 지정하게 된다. tanhsigmoid반대로 non-saturating activation function은 limz→∞f(x)=∞를 만족한다. ReLU의 경우 f(x)=max(0,x)로 non-saturating activation function이다. ReLU
4개의 convolutional layers로 구성된 neural network에서 ReLUs를 사용하는 경우 tanh보다 6배 더 빨리 25%의 training error rate에 도달
각 네트워크에 대한 learning rates는 최대한 빠르게 학습하기 위해 독립적으로 구성
Response normalization은 top-1/top-5 error rates를 각각 1.4%, 1.2% 감소
💡 Local Response Normalization : LRN(Local Response Normalization)은 현재는 Batch Normalization의 등장으로 잘 사용되지 않는 정규화 기법이다. 이는 CNN 커널이 이미지를 스캔할 때 특정 픽셀값이 다른 픽셀에 비해 지나치게 높은 값을 가지고 있어 주변에 큰 영향력을 끼치는 것을 억제시키는 일반화 방법 중 하나이다. sigmoid나 tanh 같은 활성화 함수는 saturating nonlinearity 함수로, 데이터의 속성에 따라 편차가 심하면 saturating이 심해져 기울기 소실(gradient vanishing)을 유발할 수 있다. 그러나 ReLU는 non-saturating nonlinearity 함수이기 때문에 input data의 정규화가 필요 없다는 장점이 있지만, 양수값을 뉴런에 그대로 전달하기 때문에 너무 큰 값이 전달되면 주변의 낮은 값이 뉴런에 전달되는 것을 막을 수 있다. 즉, convolution 연산이나 pooling 시에 매우 높은 하나의 픽셀 값이 주변의 픽셀에 영향을 미치는 것이다. 따라서 이를 예방하기 위해 같은 activation map의 같은 위치에 있는 픽셀끼리 정규화를 해주는 LRN이 등장했다.
본 논문에서는 LRN을 측면 억제(later inhibition)의 형태로 구현된다고 하는데, 이는 강한 자극이 주변의 약한 자극을 전달하는 것을 막는 현상을 말한다. 이에 대한 유명한 그림으로 헤르만 격자(Herran grid)가 있다. 해당 그림을 보면 검은 사각형 안에 흰색의 선이 지나고 있는데, 흰색의 선에 집중하지 않으면 회색 점이 보이지만, 흰색 선에 집중하면 다시 회색 점이 보이지 않는다. 이는 흰색으로 둘러싸인 측면에서 억제를 발생시키기 때문에 발생하는 것이다.헤르만 격자
이미지 데이터에 대한 overfitting을 감소시키기 위해 가장 쉽고 흔히 사용되는 방법은 label-preserving transformations을 사용해 데이터셋의 크기를 늘리는 것
두 가지 방법을 통해 data augmentation을 수행하며, transformed images는 연산량이 매우 적어 저장 공간에 저장할 필요 없이 바로 연산이 가능
transformed images는 CPU에서 Python 코드에 의해 생성되며, GPU는 이전 이미지 배치에 대해 학습을 진행
이러한 data augmentation 기법은 사실상 계산이 필요 없음
첫 번째 방법은 generating image translations와 좌우반전(horizontal reflections)을 통한 data augmentation
(256×256) 크기의 images에서 랜덤한 (224×224)patches를 추출 및 해당 패치에 대한 horizontal reflections을 통해 모델 학습
모델 아키텍처에서 input images의 크기가 (224×224)로 표시된 이유
training set의 크기가 2048배 (32×32×2=2048) 증가
하지만 이를 통해 생성된 데이터는 물론 상호 의존성이 매우 높음
horizontal reflection을 수행해도 label에는 변화가 없으므로 label-preserving transformation
이 방식이 없었다면 네트워크에 상당한 과적합이 발생하여 훨씬 더 작은 네트워크를 사용해야 함
테스트 시에는 모든 이미지 데이터를 2,048배 하는 것이 아닌 (224×224) 크기의 4개의 corner patches, 1개의 center patch와 각각의 좌우반전까지 총 10개의 patches를 추출
10개의 patches들에 대한 모델의 softmax layer에서 만들어진 결과 값을 평균하여 사용
horizontal reflections 및 random crops
💡 AlexNet의 Input size : 논문에서는 AlexNet의 input image size가 (224×224×3)으로 명시되어 있다. 그러나 코드 구현 등을 살펴보면 (227×227×3)이 맞다. 아마 논문에서는 실수로 잘못 나타낸 것으로 보인다. 사이즈를 수정할 경우, 위에서 training set의 크기는 1682배 (27×27×2=1682) 늘어나는 것이 맞다. 그러나 논문에서 언급하는 2048배의 경우 image size가 (224×224×3)이어야 맞는데, 어떤 것이 정답인지는 밝혀진 바가 없다.
두 번째 방법은 training images의 RGB channels의 강도(intensities)를 바꾸어주는 것
ImageNet training set에 대한 RGB 픽셀 값의 집합에 PCA를 수행
각 training image에 대하여 PCA를 통해 발견한 principal components에 random variable을 곱한 값을 더해줌
이를 통해 원본 이미지 데이터의 주요한 특성은 변하지 않으며, RGB 값을 변화시켜 색상 및 밝기만 변화
dropout은 훈련 중에는 약 1/2의 비용만 발생하는 매우 효율적인 model combination 기법
각 hidden layer 뉴런의 output을 0.5의 확률로 0으로 설정
이렇게 dropped out된 뉴런은 forward pass에 기여하지 않으며, backpropagation에도 참여 x
input이 주어질 때마다 신경망은 다른 아키텍처를 샘플링하지만, 모든 아키텍처는 가중치를 공유
뉴런들 간의 복잡한 co-adaptations을 감소
test 시에는 dropout을 적용하지 않으며, 모든 outputs에 0.5를 곱함
dropout은 처음 두 개의 fully-connected layer에 적용하였으며, converge에 필요한 iteration이 2배 가량 증가
dropout
💡 Dropout : Dropout은 임의의 뉴런을 일정 확률로 드랍하여 학습에 참여하지 않도록 하는 방법이다. 데이터를 신경망에 통과시키는 과정인 feed-forward에서 해당 뉴런이 생략되며, back-propagation에서도 자연스럽게 제외된다. 여기서 드랍되는 노드는 매 미니배치마다 이항분포(binomial distribution)을 활용하여 랜덤으로 선정된다. 이 때 노드의 드랍 확률 p가 하이퍼파라미터가 되며, 본 논문에서는 0.5를 설정했다.
추론(inference) 과정에서는 드랍되는 노드 없이 모든 노드가 항상 추론에 참여하여 모든 단위가 예측 단계에서 고려된다. 이러한 추론 과정에서 가장 중요한 점은 가중치 파라미터 W에 확률 p를 곱해주어야 한다는 것이다. 이는 각 layer에서 모든 뉴런을 전달받기 때문에 최종 가중치는 훨씬 커질 거지는 것을 방지하기 위해서이다.
💡 본 논문은 거대한 CNN 모델을 통해 이미지 분류 성능을 향상시킨 첫 번째 모델인 AlexNet에 관한 논문이다. AlexNet은 먼저 ReLU 활성화 함수를 통해 학습 속도를 향상시키고, Multiple GPUs를 통해 학습 속도 향상 및 하나의 GPU가 가지고 있었던 용량적인 제한을 완화시켰으며, Local Response Normalization을 통해 ReLU 활성화 함수를 위한 generalization, 그리고 Overlapping Pooling 등을 적용하여 성능을 향상 시켰다. 또한 Overfitting을 감소시키기 위해 랜덤한 patches를 추출한 후 horizontal reflections과 훈련 데이터의 RGB channels에 대한 intensities를 변화시키는 data augmentation, 그리고 선택적인 뉴런을 사용하는 Dropout을 적용하였다.
지금와서 해당 논문을 보면 모델 구조적인 측면에서 이제는 사용하지 않는 방법들도 있고, 뭔가 특별한 부분은 없다. 그러나 CNN을 활용하여 처음으로 거대한 양의 데이터를 학습시키는데 성공했고, 이를 통해 엄청난 성능 향상을 이끌어낸 첫 논문이기 때문에 의미가 있는 것 같다.