6. CNN Visualization

유승우·2022년 5월 12일
0

  • black box 모델인 CNN의 내부 동작을 가시화하는 방법들에 대해 설명
  • CNN을 구성해서 어떤 task의 데이터셋으로 입력과 출력을 주고 학습을 했음에도 잘 되지 않는 경우가 있는데 이 때는 왜 안되는걸까? 를 알아보기 위해 시각화를 진행한다.

ZFNet


  • deconvolution을 이용한 visualization을 시도한 연구
  • 이 연구를 통해 낮은 계층에서는 조금 더 방향성이 있는 선을 찾는 filter들을 확인할 수 있었고, 높은 계층으로 갈 수록 high level의 의미가 있다는 것을 파악할 수 있었다.
  • visualization은 단순히 눈이 호강하기 위해 하는 것이 아닌 CNN이 어떤 부분을 보고 어떻게 파악하는지를 조금이라도 알 수 있는 중요한 부분이다.

filter visualization


  • Alexnet의 첫 번째 layer해보면 filter를 시각화할 수 있을 뿐만 아니라 activation map도 visualization할 수 있다.
  • activation map은 filter마다 결과가 한 channel로 나오기 때문에 흑백으로 표현이 되며, 이를 시각화 함으로 각 필터의 특징을 파악할 수 있다.
  • 뒤쪽 layer는 차원 수가 높기 때문에 visualization을 하기 어렵고, 앞쪽 layer와 합성되면서 더욱 더 추상적인 역할을 하기에 사람이 해석할 수 있는 정보가 별로 없기에 잘 하지 않는다.

Types of neural network vaisualization


  • NN을 분석하기 위한 다양한 방법이 연구되고 있는데 크게 두 가지로 나눌 수 있다.
  1. 크게 모델 자체의 특성을 분석하는데 강점을 둔 방법 (focus on models)
  2. 하나의 입력 데이터부터 어떻게 이런 결론을 내었는지 출력을 통해 확인하는 방법 (focus on data)

Analysis of model behaviors


  • Nearest neighbors in a feature space

    • Nearest neighbors 방법을 통해 하나의 입력과 비슷한 이미지를 클러스터링 하여 출력
    1. 미리 학습된 neural network를 준비하고 fc layer에서 특징을 추출할 수 있도록 준비를 한다.

    2. 각 입력 영상을 넣으면 고차원 공간에 각 위치들의 특징을 저장할 수 있다.

    3. 질의를 하기 위해 하나의 query를 넣으면 특징을 뽑을 수 있고, 고차원의 공간상에서 이와 거리가 가까운(유사한) 영상을 출력하게 된다.

  • 고차원의 특징들은 시각화하기 어렵기 때문에, 차원 축소를 통해 이를 보고자 한다.

  • Dimensionality reduction

    • t-distributed stochastic neighbor embedding(t-SNE)

    • 10개의 class를 2차원 공간에 맞게 시각화

    • 몇몇의 점 외에는 각 클래스끼리 잘 분포가 되어있는 것을 볼 수 있다.

    • 나아가 각 class별로 해석이 가능한데 예를들어 3,5,8 class가 비슷한 특성을 가져 분류할 때 헷갈릴 수 있겠구나 라는 해석이 가능

  • Layer activation

    • layer의 activation을 분석하여 모델의 특성을 파악하는 방법
  • Maximally activating patches

    • layer activation의 patch를 뜯어서 분석하는 방법이 있다.
    • hidden layer의 한 채널에서 가장 높은 값을 가지고 있는 위치 근방 patch를 뜯어와 출력
    • 이 방법은 국부적인 패치만 보기 때문에 중간 계층을 분석하는데 적합하다
    1. 분석하고자 하는 특정 layer과 channel을 정한다.
    2. 데이터를 backbone network에 넣어 각 layer의 특징을 뽑고 저장한다.
    3. 가장 큰 값을 가지는 위치를 파악하고, 입력 도메인에서 해당 값의 receptive field를 계산하여 패치를 뜯어온다.
  • Class visualization

    • 위와 같은 합성 영상을 만들기 위해서는 간단한 연산이 아닌 최적화를 통해 영상을 찾아나가는 과정을 거쳐야 한다.
    • loss : I=argmaxf(I)Reg(I)I^* = argmaxf(I) - Reg(I)
      • f(I) : 관심갖는 class의 score (강아지에 대한 score)

      • 낮은 class score를 높이는 입력 영상 I를 찾아라.

      • 하지만, score를 높이는 영상을 찾다보면 더 이상 영상이 아닌 것들도 찾을 수 있기에 우리가 이해할 수 있는 영상을 찾기 위해 Regularization term을 추가한다.

    1. 임의의 영상으로 CNN 모델에 입력으로 넣은 후 관심 class score를 추출
    2. 역전파를 통해 입력값의 gradient를 구하고 target score를 높여주기 위해 loss에 -값을 취해 그대로 경사하강법을 적용하여 업데이트
    3. 업데이트 된 영상에 대해 1~2과정을 반복
    • 이러한 방법은 초기 입력에 따라 다양한 결과를 얻어볼 수 있으며, 모델이 하나의 class에 대해 어떤 이미지를 상상하고 있는지는 여러번 이 과정을 거치고 생성된 다양한 영상들의 패턴을 분석한다.

Model decision explanation


  1. Saliency test 1

    • 영상이 주어졌을 때 영상이 제대로 판정되기 위한 각 영역의 중요도를 추출

    • Occlusion map

      1. class에 대한 확률값을 출력하는 모델 neural network 생성해준다
      2. 입력으로 코끼리라고 생각되는 영상을 A라는 큰 패치를 사용하는 occlusion으로 가려서 넣어준다.
      3. 이 때 이 영상을 코끼리라고 판단할 확률을 생성한다.
    • occlusion을 이용해 물체의 중요한 부분을 가리면 score가 확 줄어들게 되는 것을 활용하여map으로 표현한다.

  2. Saliency test 2

    • 역전파를 이용하여 특정 이미지를 분류해보고 최종 결론이 나온 class에 결정적으로 영향을 미친 부분이 어디인지 나타내는 기법
    1. 특정 입력 영상을 넣고 class score를 구한다.
    2. 역전파를 통해 입력 영상까지 진행하여 얻어진 gradient를 절대값 혹은 제곱을 구한다.
      • 절대값 이나 제곱을 취하는 이유는 부호보다는 gradient가 민감하게 변하는 부분을 파악하기 위해서이다.
    3. 1~2를 반복하여 누적해서 사용할 수 있다.
    • 입력 영상에 대해 어떤 부분을 민감하게 보았는지를 파악할 수 있다.

    Backpropagation-based salinecy


    • 일반적으로 CNN에서는 ReLU를 사용하는데, forward pass에서 음수가 나온 부분은 0으로 masking된다.

    • 그것을 다시 역전파를 하면 위의 사진과 같이 음수가 발생할 수 있지만, salinecy에서는 역전파를 할 때의 기준으로 음수를 masking을 진행한다.

    • 더 나아가 forward와 backward 모두 음수를 마스킹 하는 Guided backprop가 있다.

    • 위의 세가지 방법을 이용해서 나타나는 결과는 다음과 같다.

CAM


  • 가장 많이 사용되는 visualization 알고리즘으로 부드러운 heatmap과 같은 형태로 표현한다.

  • neural network의 activation map에 GAP을 사용하여 하나의 fc layer를 통과하게 하여 최종적으로 classification을 한다.

  • 위의 구조를 수식으로 표현하면 모두 선형으로 이루어져 있기에 순서를 바꿀 수 있으며, 바뀐 순서에 따라 공간정보를 포함하는 CAM부분을 표현할 수 있다.

  • 이를 통해 공간 정보를 주지 않음에도 객체의 위치까지 찾을 수 있다.

  • CAM을 사용하기 위해서는 마지막 단이 GAP과 fc layer로 이루어져 있어야 하기에 모델을 변형해야하고 이로 인해 성능이 떨어지는 문제가 생길 수 있다.

Grad-CAM


  • 모든 모델이 CAM처럼 설계될 수 없으므로 구조를 변경하지 않으며 CAM을 뽑을 수 있게 하는 Grad-CAM이 나타났다.
  • 이전에는 입력 영상까지 역전파를 진행했다면 이번에는 우리가 관심을 가지고 있는 activation map까지만 진행한다.
  • 현재 task에서 class score를 변화시키는 loss로부터 역전파 gradient를 구하게 되고, 공간축으로 GAP를 적용하여 각 채널의 gradient를 구하게 된다.
  • 이를 activation map을 결합하기 위한 가중치로 사용하여 선형 결합과 ReLU를 사용하여 Grad-CAM을 나타낼 수 있다.

  • 이렇게 Grad-CAM을 이용하면 CNN 뒷단이 classfier가 붙던 RNN이 붙던 상관없이 출력할 수 있다.
  • 나아가 sharp하지만 class에 대한 구분성이 떨어지는 Gudided backprop와 rough하고 smooth한 특성들을 가지고 있는 grad-cam을 결합하여 사용함으로서 해당 class에 대한 전체적인 특징을 잘 나타낼 수 있는 grad-cam으로 유도할 수 있다.

0개의 댓글