hyeonzzz's Tech Blog

[boostcourse] CNN Visualization (1) : 동작 원리 본문

Deep Learning/CV

[boostcourse] CNN Visualization (1) : 동작 원리

hyeonzzz 2024. 6. 17. 18:11

CNN Visualization (1) : 동작 원리

CNN Visualization

: Convoultional Neural Network를 시각화한다는 것

 

 

우리가 지금까지 다뤄온 CNN은 학습가능한 파리미터와 non-linear activation 함수로 이뤄진 단순한 연산기라고 볼 수 있습니다. 허나 적절한 학습 과정을 거치면 인간 이상의 성능을 보여주기도 하는데요.

  • 내부적으로 어떤 원리를 거쳐 이러한 결과를 만들어낼 수 있는 것일까요?
  • CNN 내부의 convolution filter들을 어떤 정보를 학습하는 것일까요?
  • 논문의 방법에 따라 직접 학습을 시켜보면 잘되는 경우도 있지만 잘 되지 않는 경우도 있습니다. 잘 되지 않는 경우에는 어떤 것을 잘못 설정하여 학습이 잘 진행이 되지 않는 것일까요?

CNN의 내부는 블랙박스 구조에 가깝기 때문에 이러한 질문에 대답하기란 상당히 까다로운 문제입니다. 이러한 질문에 답하기 위한 도구로써 CNN Visualization을 소개합니다.

 

Vanilla Example: Filter Visualization

 

위의 그림을 통해 convolution의 역연산인 deconvolution을 활용하여 CNN layer들이 각 위치에 따라서 어떠한 지식을 배우는지 시각화해 본 연구를 확인하실 수 있습니다. 그 결과 낮은 계층에서는 가로/세로 무늬, 동그란 형태의 물체 등 보다 구체적인 방향성에 대한 정보를 담고있는 필터를 확인할 수 있었고, 높은 계층으로 갈수록 보다 추상적이고 의미론적인 정보를 담고있는 필터를 확인할 수 있었습니다.

 

Filter weight visualization

 

위의 그림에서 AlexNet에 filter weight visualization을 적용한 결과를 확인하실 수 있습니다.

AlexNet의 첫 번째 conv. layer의 filter는 11x11x3의 사이즈를 가지기 때문에 color image로 시각화할 수 있습니다. 그 결과를 확인해보면 컬러 디텍터(detector), 각도 디텍터, 블록 디텍터 등의 다양한 기본적인 operation을 학습한 필터를 확인할 수 있습니다. 여기서 activation을 취한 뒤 시각화한 결과도 확인할 수 있습니다. Channel size가 1이기 때문에 흑백 이미지로 시각화되며, 45도 대각에 대한 성분을 강하게 검출하거나 자잘한 디테일에 집중하는 필터를 확인할 수 있습니다.

이렇게 간단한 시각화 방법을 활용하여 CNN의 내부 필터가 어떤 정보에 집중하고 있는지 직관적으로 확인해볼 수 있었습니다.

 

왜 첫 layer만 해석하고 두번째, 세번째 layer는 해석하려하지 않을까?

  • 뒤쪽 layer는 필터의 차원수가 높아서 사람이 알아볼 수 있는 형태가 아닙니다.
  • 뒤쪽 layer의 필터들은 앞쪽 layer와 합성이 되어서 더 추상적인 형태입니다. 단독으로 visualization하는게 큰 의미가 없습니다.

 

어떻게 Neural Network를 시각화할까?

  • 왼쪽 : 모델을 이해하기 위한 노력
  • 오른쪽 : 데이터 결과를 분석하는데 초점

위와 같이 블랙박스에 가까운 딥러닝 모델을 분석하고 설명하기 위한 다양한 시각화 방법이 연구되어 왔습니다. 크게 모델의 행동, 동작 방식을 분석하는 흐름의 방법들과 모델의 예측 결과를 설명하는 흐름의 방법으로 분류할 수 있습니다.