CNN visualization1 - First filter visualization

1. CNN visualization의 기본

 

CNN은 단순히 학습가능한 convolution layer와 nonlinear activation의 연속으로 이루어진 연산기

 

학습을 잘하면 인간 성능 이상으로 좋은 성능을 보이기도 하는데

 

도대체 왜 잘되는 걸까? 단순히 학습을 하니까?

 

학습을 통해 convolution filter은 도대체 무엇을 배우길래 잘하는 걸까?

 

혹은 어떤 경우는 쉽게 안되는 경우도 많고 성능도 잘 안나오는 경우도 많은데 그것은 왜 안되는걸까?

 

CNN이라는 건 입력이 주어지면 출력이 나오는 black box같은 기계로 생각할 수 있다

 

 

왜 안되는지 알고자 그 안을 뜯어보면 복잡한 가중치와 복잡한 연결들로 이루어져 사람이 이해하기가 어렵다

 

만약 CNN안에서 무슨 일이 일어나는지 사람이 이해하기 쉽게 visualization할 수 있다면?

 

왜 성능이 좋고, 어떻게 하면 성능이 더 좋아질지 확인하면서 학습이 가능

 

 

2. ZFNet example

 

CNN의 역연산인 deconvolution을 통해 각 위치에서 CNN이 어떤 지식을 배웠는지 눈으로 확인하는 visualization을 시도했다

 

저레벨에서 단순히 방향성있는 선, 동그란 block같은 영상처리 필터부터 고레벨로 갈수록 의미가 눈에 보이는 내용을 학습하고 있다

 

 

 

2013 ImageNet에서 우승했으며 단순히 눈에 보기 좋게하기 위함이 아니라 학습을 더욱 잘하기 위한 기술이라는 것을 보여준다

 

 

3. filter visualization

 

CNN에서 보통 first filter를 visualization하여 어떻게 행동하는지를 파악한다

 

 

보면 어떤 부분은 이미지의 컬러를 탐지하는 것 같고

 

어떤 부분은 edge를 탐지하는 것 같고

 

어떤 부분은 각도를 보는 것 같고 filter 부분마다 관심있게 보는 부분이 다르다

 

이 filter에 activation 시킨 activation map도 시각화가 가능하다

 

activation map이 각 filter 위치가 관심있게 보는 부분에 맞는 특징을 가진다?

 

색이 안보이는건 filter 하나 통과시키면 1채널로만 나오니까 그래

 

 

4. high layer visualization

 

고차원의 layer는 보통 visualization하지는 않는다

 

고차원으로 갈수록 filter 차원수가 높아 사람이 직관적으로 알아보기 어려운 재미있는 형태로 나오지 않고 추상화되어 나온다

 

사람이 해석이 가능해야 의미가 있거든

 

심지어 뒤 layer로 갈수록 앞 layer의 특성이 누적 합성되니까 단독 visualization은 사실 큰 의미 없다

 

전체적인 Neural network를 분석하기 위해 모델의 행동을 분석하는 방법부터

 

모델이 내린 output이 어째서 그렇게 나왔는지 분석하는 방법들이 연구되고 있다

 

 

TAGS.

Comments