CNN hyperparameter
CNN hyperparameter CNN Hyper-parameter 뉴럴 네트워크에서 하이퍼의 종류는 매우 많고 그 중요성도 매우 크다. 설명하기 전에 간략하게 CNN의 기본 구조에 대해 적고 가야겠다. CNN은 이미지 데이터를 다룰 때 주로 쓰인다. 이미지 데이터에 대해 알아야 할 것이 있다. 이미지의 크기는 가로x세로x깊이로 나타내고, 하나의 픽셀은 0~255 값 중 하나를 갖게 된다. 이미지의 깊이는 3으로 RGB를 나타낸다. 초매개변수의 적정값에 대한 결론부터 얘기하면, 레이어의 갯수, 즉 깊이,를 늘리는 데에 초점을 맞추어 조절해야 한다. 이제 개인적인 생각으로 초매개변수를 어떻게 정하면 좋을지 적어보겠다. 레이어의 갯수(=깊이) 네트워크를 어떻게 구성할 것인가가 될 것이다. 생각을 해보자. 뉴럴 네트워크의 깊이가 깊어질수록 정확도는 높아지는가? 뉴럴 네트워크는 인간의 뇌를 모방해서 만든 기술이다. 인간의 뇌는 수 많은 일련의 뉴런의 연결로 이루어져 있는데, 뉴럴 네트워크의 최종 목표 또한 그럴 것이다. 그러므로 깊어져야 할 것이다. 그럼 무작정 깊이를 늘리면 정확도가 높아지는가? ResNet이 나오기 전까지는 그렇지 않았다. 20개의 레이어가 56개의 레이어보다 정확도가 높았다. 그 이유는 무엇인가? Gradient Vanishing/Exploding, Degradation 현상 때문이었다. Gradient의 문제는 주로 활성(Activation) 함수와 연관이 있는데, 시그모이드 활성 함수를 보면 x 값이 양의 값으로 큰 값을 갖거나 음의 값으로 작은 값을 갖질수록 Gradient가 0으로 수렴하게 된다. 이 문제를 해결하기 위해 Batch normalization이 나왔다. mini-batch마다 각 층의 input을 normalization하는 방법으로 어느정도 해결했다. Batch normalization을 사용하면 initialization을 크게 신경쓰지 않아도 된다. 또한 opt