CNN visualization2 - layer activation & class visualization

1. layer activation

 

mid level feature와 high level feature를 분석하는 방법

 

모델의 layer의 activation map을 분석하여 layer가 어디에 집중하고 있는지를 파악하고자 했다

 

 

1-1) idea

 

분석하고자하는 특정 CNN layer의 채널을 선택

 

예시로 conv5 layer의 256개 채널중 14번째 채널을 선택

 

convolutional layer의 채널은 이미지를 받으면 그 이미지에 대해서 hidden node들이 얼마나 반응하는지 계산한 activation map을 출력한다

 

layer 채널별로 채널 크기 1인 activation map을 출력함

 

이미지를 넣어서 선택한 layer의 채널의 activation map을 저장

 

maximum activation value의 receptive field에 해당하는 input image의 crop을 구함

 

 

 

그것이 바로 선택한 layer 채널이 주어진 이미지를 파악하기 위해 가장 주목하는 부분이라고 생각할 수 있다.

 

 

동일한 layer 채널에서도 주어진 이미지의 class 정보를 파악하기 위해 주목하는 부분이 다른 것

 

이미지 class 별로 내재하는 힘에 의해 동일한 layer 채널에서도 activation map에서 max activation value가 다르다는 거지

 

사람도 생각해보면 그렇다 토끼를 보면 귀에 더 주목할 것이고 코끼리 보면 코에 더 주목할 것이고

 

 

2. class visualization

 

2-1) motivation

 

위에서 예제 데이터로 이미지의 class에 대해서 어떤 부분을 주목하는지 파악했지만

 

전체적인 그림을 보려면 학습한 네트워크가 근본적으로 어떤 class에 대해 어떻게 상상하고 있는지 파악하고 싶을 수 있다

 

 

새 같은 경우 주변 나뭇가지와 함께 새를 상상함

 

그래서 이 모델은 새를 학습할 때 나무들이 섞인 bias된 bird data를 학습했다는 것을 파악할 수 있음

 

개 같은 경우 개도 있지만 사람의 모습도 보임

 

그래서 이 모델은 개를 학습할 때 순수한 dog data가 아니라 사람들 모습이 섞인 bias된 dog data로 학습했구나라는 것을 파악할 수 있음

 

 

2-2) idea

 

주어진 이미지 tensor I를 CNN 함수 f에 넣어 출력한 class score는 f(I)

 

이 score가 최대가 되는 이미지 I를 찾는 문제라고 생각할 수 있음

 

근데 이제 이렇게만 하면 image tensor의 pixel값이 0~255를 넘어서 사람이 해석 불가능한 pixel값이 나와버릴 수 있음

 

그래서 regularization term을 추가하여 pixel 값들이 너무 커지지 않게 방지함

 

class visualization의 loss function

 

regularization term은 L2 loss를 쓰라고 나왔지만 L1 loss도 사실 가능하긴하다

 

 

2-3) flamingo class에 대한 class visualization 예시

 

flamingo는 이렇게 생겼다

 

 

 

1) regularization term을 쓰지 않았을 때

 

확실히 플라밍고 형상을 이해하기 어렵다

 

 

 

2) L2 regularization을 사용했을 때

 

flamingo 형상이 위에 비하면 조금 보이긴 한다

 

 

 

3) L1 regularization을 사용했을 때

 

재밌는 점은 다른 것과는 달리 검정색 부분이 나오는데 L1 regularization이 weight를 0으로 유도하는 성질 때문이다

 

 

 

2-4) 알고리즘

 

먼저 임의의 dummy image를 넣어 관심있는 class에 대해 예측 score를 추출

 

backpropagation을 통해 입력 이미지가 어떻게 변해야 이 class score가 최대가 되는지를 찾는다

 

 

구체적으로 위에서 제시한 loss function인 argmaxf(I)-reg(I)를 최대화시킨다.

 

argmaxf(I)-reg(I)를 사용할 경우 gradient ascent방법

 

-argmaxI f(I)+reg(I)를 사용할 경우 최소화시켜야하므로  gradient descent를 사용한다

 

gradient 방법으로 입력 이미지를 업데이트하며 과정을 반복한다

 

 

2-5) 주목할 점

 

특정 class에 대해 모델이 상상하는 것은 입력 이미지가 무엇이 되어야 특정 class를 분류할 score가 최대가 되는 것인지 알려주는 것

 

초기 입력이미지를 무엇을 주느냐에 따라 결과가 다름

 

정말로 위처럼 random image를 주느냐 진짜 제대로 된 이미지를 먼저 주느냐에 따라 적절하게 업데이트 되는 것이 다르다

 

바꿔말하면 초기값에 따라 결과가 다르다는 것으로 모델이 특정 class에 대해 상상하는 image를 여러개 나열하여 분석할 수도 있다

 

이것은 인간이랑 똑같은 거임 dog라는 class에 대해 상상해보라하면 여러개 상상할 수 있잖아 

 

 

TAGS.

Comments