https://papers.nips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf
생략
생략
논문에서 사용한 GPU는 GTX 580 3GB이고 network를 train하기 위해서는 120만장의 image가 사용되어야 한다고 판단 했기 때문에 이는 충분하지 않아 GPU를 2개 사용하여 연산을 spread한다. 또한 본 연구에서 사용하는 GPU는 cross-GPU parallelization이 잘되어 host memory를 거치지 않고 GPU상호간의 직접 읽고 쓰는것이 가능하다.
중요하게 생각한 병렬화를 이용한 실험계획은 kernel ( channel of filter ) 을 반반 나누어 각각의 GPU로 보내어 GPU들이 특정 layer에서만 상호 작용 한다는 additional trick을 사용하는 것이다.
( 논문에서는 communicate라고 표현 했는데 이는 kernel을 반반 나누어 서로 다른 GPU로 보내고 중간에 서로 합치는 행동을 하는데 이를 표현한것. )
이렇게 하여 단일 GPU에서의 kernel을 반으로 하였을 때 보다 error가 top-1은 1.7%, top-5는 1.2% 줄어들었다.
Activation을 Relu function으로 사용하는 경우 양수의 값이면 limit가 없으므로 normalization이 필수 이다.
다만 현재는 batch normalization을 사용한다.
전반적인 Architecture를 다시 보면
그림 사이사이가 layer. ( input이 227이 맞다. )
순서대로 5개의 Convolutions 3개의 Dense. 다음 1,000개로 구분하는 softmax.
2,4,5번째 layer는 바로이전의 layer에서만 연산을 받고 이는 단일 GPU이다.
1,2번째에는 Response-normalization layer가 적용되었다.
모든 layer의 output에는 Relu가 적용되었다.
Overfitting은 보통 parameter가 너무 많거나, 과도하게 train을 할때 train dataset에서만 적합하고 실제 목적인 주어지지 않은 test data set에서는 오히려 적합하지 않는 경우를 말한다.
다음은 overfitting을 방지하기 위한 두 가지 방법이다.
Overfitting을 방지하기 위한 가장 쉬운 방법은 train dataset을 label-preserving하면서 임의로 늘리는 것이다.
이에는 반전, 색 변화, 회전 등등 여러 방법이 있다.
이렇게 하면 왜 overfitting이 완화되는지는 쉽게 이해할 수 있다.
예를들어 image classification 문제라고 생각해보자
주어진 데이터가 cat image이고 모두 오른쪽을 보고 있다고 해보자. 이렇게 train 시킨 weight는 왼쪽을 보고있는 고양이를 cat이라고 인지하지 못할 확률이 크다. 즉, Overfitting이다.
따라서 input image을 회전도 시키고 좌우 상하 반전도 시켜서 train 했다고 해보자. 그렇면 input cat image에 대한 다양성이 증가 하게 된다. 즉, original train dataset에는 없는 data가 만들어 지지만 새로운 image가 아니며 보통의 cat image를 학습할 수 있는 재료가 된다.
본 논문에서는 두가지의 augmentation을 사용하였고 이는 아주 작은 계산만을 필요로 하기에 추가적으로 저장량이 늘어나지 않는다.
첫번째는 image translations and horizontal reflection이다.
256×256에서 224 × 224로 뽑고 좌우반전을 한다.
따라서 (256-224)×(256-224)×2 = 2,048배 증가하였다.
( 227이 맞는데 그럼 이게 안맞음. 그럼 224가 맞고 첫번째 convolution에서 padding을 넣은건가? )
Test할때도 augmentation을 사용하여 10배로 증가시킨다.
이후 10개의 image에 대한 average softmax value를 사용하였다.
RGB pixel에 PCA ( 주성분 분석 )를 적용.
이렇게 하여 overfitting도 방지하고 top-1 error도 1% 감소하였다.
p=0.5이고 test시에는 다 살리고 data에 0.5.
SGD , batch size = 128 , momentum = 0.9 , equal learning rate for all layers이고 training하면서 줄였다.
Weight decay = 0.0005
Regulizer의 역할 뿐 아니라 training error도 감소시켰다.
zero-mean Gaussian distribution with std = 0.01
Relu이므로 He initial 쓰면 된지 않냐라고 생각할 수 있는데 이 논문 이후에 He initial 나왔다.
https://arxiv.org/abs/1502.01852
생략
두번째 GPU에서는 첫번째 GPU보다 color에 구애받았다.
이러한 특성은 initial weight value와 무관한게 계속 나타났다. ?!!!!