Introduce
객체인식에는 기계학습이 사용되며, 기계학습은 큰 데이터 셋, 강력한 모델, 과적합을 감소시킬 수 있는 기술이 필요하다. 이에 더해 객체 인식을 하기 위해서는 labeled image가 필요한데, labeled image는 각 이미지가 내용이나 특징을 나타내는 클래스와 관련된 식별자를 가지고 있는 이미지를 뜻한다. 하지만 labeled image는 상대적으로 적은 편이기 때문에 라벨을 보존, 변형, 보강함으로써 간단한 인식 작업이 가능할 정도로 데이터를 늘릴 수 있다. 예로 Mnist 숫자 인식 작업 오류율이 사람과 비슷한 0.3% 미만이 나오기도 하였다. 하지만 사실적 객체의 경우 변동성이 크기 때문에 더 많은 데이터 셋이 필요하다. 이러한 데이터 셋 부족 문제는 예전부터 거론되던 문제였고 최근에서야 충분한 labeled images를 확보할 수 있게 되었다.
최근 존재하는 빅데이터 셋은 22000개 카테고리에서 1500만 이상의 고해상도 labeled images로 구성된 LabelMe를 포함한다. 큰 데이터 셋을 학습하기 위해 큰 학습능력을 지닌 모델이 필요해졌고 이를 위해 CNN이 소개되었다. CNN(Convolutional Neural Networks, 합성곱 신경망)는 깊이 및 폭 변경을 통해 용량을 제어할 수 있으며, 이미지 특성에 강력하고 정확한 가정을 할 수 있다는 장점을 가지고 있다. 큰 규모의 고해상도 이미지를 학습시키기 위해 CNN을 사용하기에는 막대한 비용이 든다는 어려움이 존재했으나 GPU가 지속적인 발전에 따라 이러한 어려움이 해소되고 있다. 최근 GPU는 2D 컨볼루션의 최적화된 구현과 함께 규모가 큰 CNN을 훈련하기에 용이하다. 이를 통해 충분한 labeled images로 인한 과적합의 감소와 발전된 GPU로 인한 막대한 비용의 감소로 AlexNet을 제작할 수 있게 되었다. AlexNet은 5개의 컨볼루션 레이어, 3개의 FC 레이어로 총 8개의 레이어로 구성되있다. 또한 AlexNet은 1000-way softmax로 구성되었으며 2개의 GPU를 가지고 학습에 5~6일 정도 소요된다는 특징을 갖는다.
https://jarikki.tistory.com/26
https://blog.naver.com/intelliz/221709190464
Data Set
본 논문의 AlexNet에서는 1000개의 카테고리에 약 1000개의 이미지가 있는 ImageNet의 하위 세트인 ILSVRC를 사용했으며 Amazon Mechanical Turk 크라우드 소싱 도구를 사용하여 라벨을 지정했다. ILSVRC는 가변해상도 이미지로 구성되어 있어 일정한 입력 크기가 필요했기 때문에 고정해상도를 256X256으로 맞춰주었다.
The Architecture
1. Relu Nonlinearity
AlexNet에서는 활성함수로 Relu를 사용했다. 활성함수는 입력 신호의 총합을 출력 신호로 변환하는 함수로, Relu 함수의 경우 입력 신호의 총합이 0이하이면 0을 출력 신호로 주고, 그렇지 않다면 입력 신호를 그대로 출력 신호로 준다. 논문에서 제시한 이미지에 따르면 Relu 함수와 Tanh 함수 간의 'Error rate가 0.25에 도달하기 위한 epoch 수'를 비교했을 때 Relu 함수가 약 6배 빠르게 수렴하는 것을 확인할 수 있다. 이처럼 AlexNet과 같이 대규모 데이터 셋과 많은 레이어를 가진 모델에서는 포화 비선형 함수인 Sigmoid 함수나 Tanh 함수에 비해 Relu 함수의 효율이 훨씬 좋기 때문에 Relu 함수를 사용하였다.
2. Training on Multiple GPUs
AlexNet에서는 메모리 부족 문제로 인하여 두개의 GPU를 이용해 병렬 처리를 진행시키다가 하나의 layer에만 GPU 학습을 통합시키는 방식을 사용하였다.
AlexNet에서는 위에서 언급된 바와 같이 5개의 Conv layers와 3개의 FC layers를 가지고 있다. 여기서 1,2,4,5 번째의 Conv layer에서는 같은 GPU 내에서의 커널만 사용할 수 있게 했고, 3번째 Conv layer와 3개의 FC layer에서는 모든 커널을 사용할 수 있게 하였다. 그 결과 Top 5 error가 1.2%, Top 1 error가 1.7% 절감되었다.
3. Local Response Normalization(LRN)
측면억제(Lateral inhibition)란 실제 뇌세포의 증상으로 강한 뉴런의 활성화가 근처 다른 뉴런의 활동을 억제시키는 현상을 뜻한다. Relu 함수의 경우 하나의 입력 값이 무한히 커진다면 출력 값 또한 같이 커지기 때문에 측면억제에 의해 다른 값들이 발현되기 어렵다는 단점이 존재한다.
때문에 LRN을 사용하여 Activation Map의 같은 위치에 있는 픽셀을 정규화함으로써 측면억제를 방지할 수 있다.
4. Overlapping Pooling
CNN에서 Pooling은 컨볼루션을 통해 얻은 특성맵의 크기를 줄이기 위해 사용된다. AlexNet에서는 풀링커널이 움직이는 보폭인 stride가 커널 사이즈보다 작게 하는 Overlapping Pooling을 사용하였다. Overlapping Pooling에서는 stride가 풀링 커널보다 작아, 이름 그대로 풀링 커널이 중첩되어 지나갈 수 있게 하는 풀링이다.
Reducing Overfitting
과적합이란 모델이 학습할 때 학습 데이터 셋에 지나치게 최적화되어 학습 데이터 셋 내의 데이터를 예측할 때는 잘 작동하지만, 정작 새로운 데이터들을 예측하는데 어려움을 겪는 문제를 말한다. AlexNet에서는 과적합 문제를 해결하기 위해 두가지 방법을 사용했다.
1. Data Augumentation
데이터 증강법(Data Augumentation)은 데이터를 다양하게 변형함으로써 새로운 데이터를 생성해내 데이터 풀을 증가시키는 방법이다. 이 논문에서는 두가지 방법을 소개하고 있는데 flip과 crop이 바로 그것이다. flip은 좌우 반전을 통해 기존의 이미지를 두배로 증가시키는 것이고 crop은 이미지의 일부분을 잘라 이미지를 다양하게 변형시키는 방식이다.
이 논문에서는 모델을 테스트 할 때, 하나의 이미지에 대해 4개의 코너와 센터에 crop을 적용하여 5개의 이미지를 뽑아내고, 이를 다시 flip하여 한장의 이미지로부터 총 10개의 이미지를 생성해냈다. 그 후 각각 얻은 이미지로부터 얻은 softmax 값의 평균값을 사용했다고 한다.
Data Augumetation의 또 다른 방법으로 RGB channel 값의 변화를 주는 방법인 Jittering을 사용했다. 이를 위해 학습 이미지의 RGB 픽셀 값에 대한 주성분 분석(PCA)을 수행하였다. PCA란 가장 보편적으로 사용되는 차원 축소 기법 중 하나로 기존 데이터 분포를 최대한 보존하면서 고차원 데이터를 저차원 데이터로 변환하는 기법을 말한다. 이처럼 모델이 증강된 데이터(PCA로 데이터에서 가장 중요한 특징을 추출해 만들어진)를 통해 학습을 하면 모델이 더 다양한 색상에 대해 학습을 할 수 있고, 이로 인해 성능을 더 향상된다. Jittering을 통해 이미지의 밝기나 색상이 변해도 이미지를 인식할 수 있도록 하여 Top 1 error rate를 1% 이상 줄일 수 있었다.
https://velog.io/@swan9405/PCA
2. Dropout
Dropout은 layer의 각 뉴런들을 일정한 확률(drop-out rate)로 제거하는 기법이다. 제거된 뉴런들은 순전파(forward pass)나 역전파(back-propagation)에 영향을 주지 않는다. 이러한 Dropout 기법으로 인해 가중치가 큰 특정 뉴런에 의존하여 편향적인 출력값이 나오는 것을 방지할 수 있다.
위와 같이 Dropout이 적용된 결합 계층을 realization이라 하는데, 모든 realization의 출력값에 평균을 취하면(ensemble) 모든 뉴런을 사용한 전결합 계층의 출력값을 얻을 수 있다.
https://heytech.tistory.com/127
Details of Learning
모델 훈련 방법으로는 Stochastic Gradient Descent 방식을 사용하였다. 기존의 경사하강법이 모든 데이터에 대해 계산을 하는 반면에 Stochastic Gradient Descent 방식은 전체 훈련 데이터 셋을 작게 나눈 mini-batch를 사용한다는 특징이 있다. 이 방식은 Local minma(극소점이 아닌 기울기가 0이 되는 지점)보다 Global minima(극소점)에 수렴할 가능성이 크고, 계산 속도가 훨씬 빠르다. 또한 momentum은 9, weight decay는 0.0005로 작은 값을 주어 모델의 훈련 오류를 감소시켰다.
가중치 갱신 방식은 아래와 같은 식을 사용하였고
평균이 0, 표준편차를 0.01인 정규분포를 사용하여 가중치 초기화를 해주었다.
편향(bias)는 첫 번째와 세 번째 Conv layer은 0으로 하고 나머지는 1으로 하였다. 이를 통해 학습 초기에 Relu 함수를 양수로 만들어 학습을 가속시킬 수 있었다.
초기에 학습률은 모든 layer에 대해 0.01로 설정하였고, 학습 도중에 validation error의 개선이 없을 시에는 수동으로 10을 나눠주었다. 결과적으로는 학습률의 감소가 3번 이루어졌다.
120만개의 이미지를 90 epoch 학습시키는데 6일이 걸렸으며 두 대의 GTX 580 그래픽 카드를 사용했다.
'개인공부 > 데이터 사이언스' 카테고리의 다른 글
GAN 논문 리뷰 (2) | 2024.02.13 |
---|---|
BERT 논문 리뷰 (2) | 2024.02.13 |
Attention Is All You Need 논문 리뷰 (1) | 2024.02.13 |
편향과 분산 (0) | 2024.01.11 |
앙상블 기법 (0) | 2024.01.11 |