Real Late Starter

Stanford cs231n : Lecture 12 | Visualizing and Understanding 학습정리 본문

Study

Stanford cs231n : Lecture 12 | Visualizing and Understanding 학습정리

조슈아박 2020. 1. 10. 20:23

※ 참고블로그

https://kevinthegrey.tistory.com/147

 

3. Convolutional Networks / L2. Convolutional Neural Networks - Visualizing CNNs

Visualizing CNNs(Pt. 1) - 이미지 픽셀에서 CNN이 패턴을 발견해 내는 그 과정을 시각화하여 확인해보자. - 앞서 CNN이 어떻게 작동하는지 이해하기 위해선 activation map과 콘볼루션 레이어를 - 시각화 하여 보..

kevinthegrey.tistory.com

http://research.sualab.com/introduction/2019/10/23/interpretable-machine-learning-overview-2.html

 

Interpretable Machine Learning 개요: (2) 이미지 인식 문제에서의 딥러닝 모델의 주요 해석 방법

앞선 글에서 머신러닝 모델에 대한 해석력 확보를 위한 Interpretable Machine Learning(이하 IML)의 개요를 다뤘습니다. 이번 글에서는 IML에 대한 지금까지의 이해를 바탕으로, 많은 분들이 관심을 가지고 계실 딥러닝 모델에 대한 주요 IML 방법론들에 대해 알아보고자 합니다.

research.sualab.com

1. What's going on insdie ConvNets?

- 컨볼루션 네트워크 안에서 어떤 작용들이 일어나는가에 대해서 공부한다.

- 어떻게 관련된 특징들(features)을 찾는지 원리에 대해 이해한다.

- CNN 안에서의 blackbox라고 할 수 있는 중간 영역에서는 어떤 일들이 일어나는가?

 

첫 번째 Layer를 살펴 보면 oriented edges나 픽셀에서의 흑백의 선, 밝기, 다양한 굴곡과 위치, 반대 색상들을 추출해낸다.

어떤 이미지를 넣던간에 첫 번째 Layer에서 나온 이미지들을 보면 엣지들이나 색상들이 아웃풋으로 나오는 것을 볼 수 있다.

이 모습은 첫 레이어의 weight들을 학습한 결과이다. 

 

질문 : 왜 필터의 가중치들을 시각화하는 건가?

답변 : 필터들이 어떤것을 찾고 추출하는지를 보여주기 위함이다. 

 

2번 째 레이어와 3번 째 레이어를 시각화해보면 위에 같은 이미지들을 볼 수 있다. 하지만 인풋 이미지와 관련되어 보여지는 것이 아니기 때문에 직관적이지 않고 대개 흑백이미지들로 구성되어있다.

 

이것이 시사하는 것은 이미지가 처음 Conv 레이어를 지났을 때, 어떤 액티베이션 패턴들이 나타나는 지 확인하고 그 다음 Conv 레이어로 들어갈 때 어떤 이미지들이 들어가는지를 확인 할 수 있다는 것이다.

 

마지막 레이어를 보면 4096 차원의 벡터로 이미지들이 변환되고 벡터를 Nearest Neighbors를 통해 벡터들의 거리를 계산한다.

왼쪽에 있는 사진들은 픽셀을 기준으로 근접 이웃을 사용하여 분류한 모습인데 잘 못 분류 되어있는 사진들을 볼 수 있다.

중간의 이미지는 CNN을 사용하여 분류한 것인데 코끼리가 왼쪽에 있던 오른쪽에 있던, 특징을 추출하여 벡터 계산을 한 것이기 때문에 정확하게 분류하는 것을 볼 수 있다.

 

또한 위의 예제는 AlexNet의 예제인데, 이미지들의 Loss를 따로 계산하지는 않지만, 다른 경우에는 Contrast Loss나 Triplet Loss 같은 Loss Function들을 사용하여 Loss를 계산하고 Metric 계산을 하는 경우도 있다.

다음은 PCA (Principal Component Analysis)로 고차원의 벡터를 2차원 형태로 축소하여 시각화한 모습이다.

4096차원을 2차원으로 압축하여 feature space를 직관적으로 살펴볼 수 있다.

PCA 이외에 또 강력한 알고리즘이 있는데 t-SNE는 t-분포가 적용된 stochastic neighbor embeddings를 이용한다.

이는 비선형 차원 축소 방법이다. 주로 feature들을 시각화 할 때 사용한다.

 

다음은 CNN이 이미지를 분류할 때 결정적으로 어떤 특징점을을 가지고 분류를 했는지 보여주는 실험이다.

같은 라벨의 이미지들에 회색의 임의의 박스를 전부 넣었을 때 이 회색 박스가 분류를하는데 결정적으로 작용한다는 결과이다.

밑의 카드 사진을 보면 카트 부분이 빨갛게 되있는 것을 볼 수 있다. 이는 네트워크가 이미지 분류를 위해서 해당 이미지 픽셀 부분에 대해 실제 신경을 쓰고 있다는 것을 의미한다.

 

이러한 시각화 과정은 네트워크가 어떤 종류의 계산을 하고 어떻게 학습을 하는지를 사람이 이해하기 위한 도구로 사용된다.

 

다음은 Saliency Maps라는 방법이다. 어떤 픽셀이 분류를하는데 결정적으로 작용하는 가를 확인 할 수 있다. 강아지의 사진을 어떻게 강아지라고 분류하는지를 확인해 볼 수 있는데 이미지의 gradient들을 계산하여 강아지의 형태를 특징점으로 인식하고 그것을 통해 분류하는 방법이다. 밑의 사진을 보면 컴퓨터가 계산해서 나타난 강아지의 outline이 나타난다.

 

다음으로는 guided Backpropagation을 사용하여 ConvNet이 추출한 특징점들을 복원하여 사람이 더욱 쉽게 알 수 있도록하는 방법이다. ReLU 함수를 역으로 사용하여 positive한 특징들을 활성화 시켜 어떤 부분에서 분류를 결정했는지 확인 할 수 있는 방법이다. 

 

Gradient Ascent라는 방법을 사용하여 이미지를 시각화하는 방법도 있다. 앞서 나온 backprop과 함께 사용한다. 우리가 CNN을 사용하면서 학습한 weight는 고정시켜놓고, backprop을 사용하여 중요한 특징점을 찾고 gradient ascent를 사용해 그 부분을 극대화하여 이미지를 시각화하는 것이다.

 

이 과정에서 L2 Normalize가 사용되는데 한 특징점에 대해 원래 이미지 처럼 복원하는 과정에서 과대적합되는 것을 방지하기 위함이다.

 

Gradient Ascent는 원래의 어떤 인풋이미지가 네트워크를 활성화시키는 가를 알아보는 방법이다.

Gradient Ascent를 통해 이미지 안의 픽셀을 NN의 중간이나 클래스의 점수를 통해서 최대화하는 것이다.

두개의 과정으로 이루어진다.

1. 어떤 점수 또는 뉴런 값을 최대화 한다.

2. 이것을 통해 자연스러운 이미지 처럼 바꾼다.

 

여기서 Normalize를 하는 이유는 gradient가 최대화 되면서 사람이 알 수 없는 노이즈 같은 이미지를 변환되는 것을 막기 위함이다. 자연스러운 이미지형태로 만들어 네트워크가 어떻게 인식하는 가를 보기위해 사용한다.

 

다음은 앞서서 본 특징점을 추출하고 그것을 자연스러운 이미지로 변환하는 점에서 착안하여 이미지를 교란하고 바보로 만드는 방법?을 알아본다.

이것은 이후에 배울 GAN과 관련이 있는 것으로 보이며 GAN 역시 이런 부분에서 착안하여 나온 것이 아닌가 하는 생각이 든다.

 

# Q : 왜 Network의 중간 과정을 아는 것이 마지막에서 분류라던지의 결과를 이해하는 것에 도움이 되는가?

A : 중간 과정을 시각화하는 것은 딥러닝 전체의 공통적인 비판과 관련이 있다. 딥러닝에 대한 주된 비판은 blackbox라고 불리는 중간 과정을 통해 학습하면 인풋을 이렇게 넣었는 아웃풋이 이렇게 훌륭하게 나왔는데 중간 과정을 모르기 때문에 네트워크를 믿을 수가 없고 사람들로 하여금 어떤 결정하는데 왜 그런 결정을 했는지 설명 할 수가 없다는 것이다.

그렇기 때문에 기존의 머신러닝 기법들도 이러한 Blackbox를 해석할 수 있도록 연구해왔고 CNN 또한 blackbox 속을 이해하고 해석할 수 있도록 네트워크를 뜯어 보고 시각화하는 것이다.

 

다음은 DeepDream이라는 알고리즘인다. 앞서서 했던 convnet을 통해 특징점을 추출하고 최대화하여 시각화하는 것을 적용하여 하늘 이미지에서 특징점을 추출하고 그것을 이미지에 계속 반복적으로 합성을하는 작업을 하게되면 이러한 결과가 나타난다. 이미지에 이상한 생명체들이 나온 이유는 사용한 가중치 값이 imageNet 등의 데이터 셋의 학습된 weights를 사용했기 때문으로 보인다.

이러한 과정을 다른 데이터셋의 가중치로 하게되면 또 다른 괴상한 그림들이 나오게 된다.

 

Summary 

 

Many Methods for understanding CNN representations

 

Activataions : Nearest neighbors, Dimensionality reduction, maximal patches, occlusion

Gradients : Saliency Maps, class visualization, fooling images, feature inversion

Fun : DeepDream, Style Transfer

 

'Study' 카테고리의 다른 글

Tableau Specialist 자격증 합격 후기 & 팁  (13) 2020.09.13
분류 모델 성능 평가지표  (2) 2020.02.16