본문 바로가기

Deep Learning/cs231n Lecture

Lec 12. Visualizing and Understanding CNN

이번 lecture에서는 CNN이 이미지 관련 task를 처리할 때 그 내부에서는 어떤 일이 일어나는지에 대한 해석을 공부한다.

 

First Layer

Filter as an image

먼저, 가장 직관적으로 이해할 수 있는 첫 번째 convolution layer을 살펴본다. 첫 번째 conv. layer의 필터 dimension은 F*F*3이다. Depth는 항상 3인데, 왜냐하면 CNN의 input인 이미지의 depth가 R, G, B 채널에 의해 3이고, convolution 연산에서 input과 filter의 depth는 일치하기 때문이다. Depth가 3이기 때문에, 필터를 F*F 픽셀 크기의 RGB 이미지로 출력할 수 있고, 이는 유용한 해석을 제공한다.

cs231n lecture slide 12, p5

위의 그림은 몇몇 유명한 CNN의 첫 번째 conv. layer의 필터들을 이미지로 출력한 것이다. 

 

Template matching: What are those filters looking for?

필터들을 각각 oriented edge, angle, opposing color 등을 나타내는데, 이미지에서 이러한 특징이 나타나는 부분을 찾는 것이다. 필터들이 서로 다르게 생겼으므로, 각 필터마다 서로 다른 특징을 이미지 내에서 찾는다. 이는 inner product 연산을 template matching으로 생각하는 것과 같은 맥락에서 이해할 수 있는데, 예를 들어 왼쪽 아래에서 오른쪽 위 방향으로 그어진 주황색, 파란색 대각선 무늬의 필터와 convolution을 하면 이미지 내에서 주황색, 파란색 대각선 무늬가 나타난 정도를 모든 위치에 대해서 탐색한다는 것이다. (Convolution 연산의 대상이 되는 필터와 input patch를 각각 길게 1차원 벡터로 늘어뜨린다면 두 벡터 간 inner product 연산과 본질적으로 같다)

 

이렇게 각각의 필터마다 서로 다른 특징의 activation 정도를 이미지 내에서 탐색하게 되며, 각각의 필터마다 2D activation map을 만든다. AlexNet의 경우 64개의 필터가 존재하므로, conv. layer를 통과한 결과는 64개의 2D activation map이다.

 

이 접근법이 이후 conv. layer에 대해서는 동일하게 적용되지는 않는데, 왜냐하면 activation map이 한 번 만들어진 뒤부터는 spatial interpretation이 더 이상 원본 이미지만큼 직관적이지 않기 때문이다.

 

Last Layer

마지막 conv. layer를 통과한 output을 flatten하면 4,096 크기의 벡터를 얻는다. (CNN 구조마다 벡터의 크기는 다를 수 있지만, 강의 자료를 기준으로 한다)

Nearest Neighbor Again?

Lecture 2에서 KNN(K Nearest Neighbor) 방식의 이미지 분류를 다루었는데, 이 때는 pixel들이 span하는 공간 상에서의 이미지 벡터 간 거리를 지표로 사용하였다. 그러나, KNN의 경우 test time의 비효율성도 문제였고, 이미지 픽셀 간 거리는 이미지 분류라는 맥락에서 충분한 의미를 갖지 못했다는 한계가 있었다.

 

대신, CNN의 마지막 conv. layer를 통과한 이 4,096 크기의 벡터들이 span하는 공간 상에서의 거리를 지표로 사용해볼 수 있다. 물론 여기서도 분류는 fc layer와 softmax를 거친 score 벡터를 통해 진행하지만, nearest neighbor를 통해 결과에 대한 유용한 해석을 할 수 있다는 것이다.

cs231n lecture slide 12, p8

강의 슬라이드에서 보듯이, 왼쪽은 픽셀 간 거리를 기준으로 nearest neighbor를 수행한 것인데, 이 때는 픽셀 간 거리가 가깝다고 해서 꼭 같은 class에 속하지는 않는 경우가 많다. 하지만, 오른쪽에 4,096 크기의 벡터 간 거리를 기준으로 한다면, 이번에는 서로 거리가 가까운 것들이 같은 class에 속하는 것을 볼 수 있다. 즉, CNN을 통과하여 얻은 4,096 크기의 벡터는 이미지의 feature를 뽑아낸 것으로 볼 수 있고, 강의 자료에서도 이들이 만들어내는 공간을 feature space라고 표현하였다.

 

Intermediate Layers

Intermediate layer들에 대해서는 처음과 끝 layer처럼 한 번에 보기에 직관적이지는 않기 때문에, 이에 대한 해석을 제공하기 위한 여러 연구들이 있어왔다. 강의에서 다룬 몇 가지 접근법들을 정리한다.

Maximally activating patches

각각의 뉴런은 특정한 형태의 feature에 대해 receptive한데, 여러 가지 이미지를 CNN에 통과시키면서 특정 한 개의 뉴런의 값을 확인하는 것이다. 뉴런의 activation 값이 크도록 만드는 input image patch를 출력하고 관찰함으로써, 이 뉴런이 어떤 형태의 feature를 인지하는지에 대한 이해를 할 수 있다.

cs231n lecture slide 12, p12

위 그림에서 맨 위 행의 경우 공통적으로 원 형태가 나타난다. 다른 행도 각각 공통적인 특징을 지닌다.

 

Occlusion experiments

CNN에 의해 어떤 이미지가 코끼리로 분류된 상황을 생각해보자. Occlusion experiment는 이미지의 어떤 부분이 코끼리로의 분류에 가장 많은 영향을 끼쳤는가를 분석한다. 이를 위해 이미지의 여러 위치에 mask를 씌우면서 CNN의 결과를 확인한다. 특정 위치에 mask를 씌웠을 때 코끼리 score가 많이 낮아진다면, 그 위치가 코끼리로의 분류에 중요했다는 분석을 얻을 수 있다. 이를 히트맵으로 출력한다면, 중요한 위치에 대한 map을 얻을 수 있다.

cs231n lecture slide 12, p13

코끼리의 경우, 대략 양쪽 귀와 긴 코를 중심으로 occlusion을 했을 때 score가 낮게 나왔고, 이 영역이 코끼리로의 판단에 중요했다는 것이다.

 

Optimization with gradient ascent

다음으로는 위 방법들을 좀 더 일반적인 optimization의 형태로 제안한 방법을 살펴볼 것인데, 아래 논문을 참고하면 좀 더 구체적인 내용을 알 수 있다.

 

Yosinski et al, Understanding Neural Networks Through Deep Visualization, ICML DL Workshop, 2014

 

위 논문은 크게 두 가지 방법을 제안하는데, 첫 번째 방법은 중간 layer의 결과의 경우 depth가 3이 아니므로 RGB 이미지로 출력할 수는 없으나, 여러 개의 흑백 이미지로 출력할 수 있으므로 이를 통해 유용한 해석을 얻을 수 있다는 것이다. 예를 들어, conv5 layer의 151번째 channel을 13*13 이미지로 출력하면 사람이나 동물의 얼굴에 해당하는 영역이 높게 activation 되는 것을 확인할 수 있다.

Understanding Neural Networks Through Deep Visualization, Figure 2

 

두 번째 방법은 임의의 unit에 대해 높은 activation을 일으키는 이미지를 optimization으로 찾는 것이다. Optimization 수식은 다음과 같다.

a_i는 CNN 내의 임의의 뉴런에 해당하는데, 이 논문의 첫 번째 방법에서 나온 conv5 layer의 151번째 channel 값일 수도 있고, output인 score 벡터의 한 element일 수도 있다. 이의 activation을 최대화시키는 x를 찾는데, regularization term도 포함되어 있다. Regularization term에 대한 대략적인 이해를 하자면, 만약 이것이 없다면 뉴런의 특징보다 픽셀의 절댓값이 큰 영향을 미칠 수 있다. 그래서 픽셀의 절댓값이 클수록 적절히 penalty를 줌으로써 뉴런의 특징에 의해 최적의 값을 찾도록 하는 역할을 하는 것이다.

 

Fc layer를 통과한 마지막 score output의 서로 다른 class element를 unit으로 하여 위 optimization을 수행했을 때, 이에 대한 최적의 input을 RGB 이미지로 나타낸 그림이 논문에 아래와 같이 제시되어 있다.

Understanding Neural Networks Through Deep Visualization, Figure 4