
CNN의 내부에서 어떤일이 일어나고 있는지에 대해서 알아보겠습니다.
CNN의 input으로 이미지가 들어가게 되고 내부에서 어떤 과정을 거쳐서 class score와 같은 output을 얻어냅니다. CNN의 내부를 분석하려면 어떻게 해야 할까요?

가장 간단한 방법중 하나는 첫번째 layer를 확인하는 것입니다. 첫번째 layer에 있는 filter를 단순히 시각화시키는 것 만으로도 이 filter가 이미지의 어느부분을 보고있는지 확인할 수 있습니다.
사진을 보면 첫번째 layer의 filter들은 oriented edges를 감지하는 것을 볼 수 있습니다. 어떤 cnn모델을 학습하든지 첫번째 layer는 이런식으로 oriented edges 나 opposing color같은 것을 찾아낼 것입니다.

중간단계에서도 visualization을 할 수 있지만 이해할 수 있는 정보를 얻기는 어렵습니다.

마지막 layer도 visualization을 진행할 수 있습니다. 그중 한가지 방법은 Nearest Neighbor를 이용하는 것입니다. 왼쪽처럼 pixel space가 아닌 오른쪽의 feature space에서는 pixel 값의 차이가 크더라도 semantic content한 특징들을 잘 찾아내는 것을 볼 수 있습니다.