해당 글은 CS231n 12강 Visualization and Understanding 의 내용을 공부하고 재구성하여 정리한 글입니다
여름방학에 해당 주제로 발표를 맡게 되었고, 그때의 자료를 공유하고자 합니다!
Introduction
cs231n의 12강은 시각화를 통해서 우리가 CNN모델을 "이해하는 것"을 목적에 두고 있습니다.
그래서 CNN내부에서는 어떤일이 일어나고 있었길래 분류가 되는가를 "이해하고자" 합니다!
그래서 왜 우리가 시각화를 통해서 CNN구조를 이해해야 하는가!
그동안의 딥러닝 모델들은 블랙박스 모델이라고 불리면서 원하는 문제를 잘 풀어내기는 하지만
어떻게, 무엇을 근거로 그러한 결과가 나왔는지를 알 수 없었습니다.
그림에서는 사과라는 간단한 예시를 넣어놨지만
만약 분류해야 하는 것이 사과가 아니라 암세포를 찾아내야 하는 것이라면 어떻게 될까요?
예를들어서 99%의 정확도로 암을 진단하는, 딥러닝으로 학습시킨 AI 가 있다고 가정을 해보면
이 AI 가 어떤 환자를 암으로 진단했는데 현대의 의료기술로는 암이라는 증거를 찾을 수 없었다면
그렇다면 이 AI는 학습하는 과정에서 자신만의 기준을 찾았다는 것인데
그것은 굉장히 중요한 발견일 수 있지만 그것을 설계한 사람도 증명해 낼 수 없습니다. 인공지능 판사의 경우도 마찬가지구요..
이 때문에 이러한 중요한 문제들에 대해서 AI가 사람을 완전히 대체하기보다는 아직까지는 보조적인 역할로 사용하고 있다고 합니다.
만약 딥러닝의 블랙박스 안을 볼 수 있다면 현존하는 많은 문제들을 해결할 수 있겠죠?
그래서 우리는 이걸 배워서..!
그래서 저희는 딥러닝 모델이 대충 아무렇게나 분류하는게 아니라
딥러닝 모델이 의미있는 행동을 통하여 문제를 해결하고 있음을 증명하고 이러한 것들을 이해하는 것이 목적입니다.
또 이렇게 시각화를 하게 되면 성능을 개선하기 위해 누락 된 것이 무엇인지 이해하는 데 도움이 됩니다.
이제 이러한 인공지능의 행동을 시각화로 이해를 해보려고 합니다!
그래서 해당 강의는 이 질문 두가지로 시작이 됩니다.
첫번째는 CNN은 어떤 종류의 feature를 찾는 것일까?
두번째는 CNN의 내부를 분석하려면 어떤 테크닉이 필요할까? 입니다.
Visualization
먼저 내부에 저희가 Visualization할 수 있는 대상들은 대표적으로 두가지가 있습니다.
activation map과 weight 인데요, 생김새는 위와 같습니다.
하지만 이 weight visualization은 앞쪽 레이어에서는 나름대로 엣지라던가, 보색등 저희가 무엇을 찾고있는지를 대략적으로 파악할 수 있겠지만,
뒷단으로 갈수록 점점 해석하기가 힘들어 집니다.
따라서 네트워크 중간 레이어의 필터들이 무엇을 찾고 있는지 알아내려면 조금 더 고급진 기법들이 필요하게 됩니다.
이런 기법에 대해서 다음글에서 설명해 드리도록 하겠습니다! 계속 가볼까요?
Dataset Visualization
또 한가지 Visualization 하여 이해할 만한 것으로는 Dataset이 있습니다.
Dataset을 Visualization하게 되면 사진에 적혀있듯이 데이터셋 상에 포함된 전체 이미지 들에 대한
예측결과의 일반적 경향성과 예측 결과들 간의 거리관계 등을 알 수 있습니다.
여기서 일반적경향성, 거리관계 이것들이 무엇을 의미하는지 좀 더 설명해 보도록 하겠습니다.
Dimension Reduction
설명에 앞서서, Dimension Reduction에 대해서 설명을 해드릴건데,
왜 갑자기 뜬금없이 차원을 줄여야 하는가에 대해서 설명해 드리겠습니다.
일단 Feature의 수가 많으면 사진에 적혀있는 것과 같은 문제들이 발생됩니다.
Dimension Reduction
그래서 Feature수가 많아서 안좋은건 알겠는데, Visualization과 무슨 관계가 있는가!
예를들어 저희가 FC(Fully Connected)레이어를 통해 4096차원의 특징벡터들을 뽑아냈다고 한다면,
이때 이 4096각각이 뭐 색이 됐든 모양이됐든 각각의 Feature를 갖게 될텐데
이러한 Feature들을 4096차원에서 보기에는 시각화하기도 힘들 뿐더러, 한다고 하더라도 우리가 이해하기 힘들겁니다.
그래서 2차원으로 줄입니다. 그러면 데이터들이 저희가 보기 쉽도록 2차원으로 변환이 됐으니 이해하기가 수월하겠죠?
따라서 차원을 줄이는 것이 필요합니다.
또한 이렇게 시각화 하면 Feature들이 어디에 몰려있고, 얼만큼 떨어져 있는지를 직관적으로 이해하기 쉽게 됩니다.
따라서 Dataset을 시각화 하게 되면 Data들의 일반적경향성, 거리관계를 알 수 있게 됩니다.
Pixel Nearest Neighbor vs Feataure Nearest Neighbor
이때 앞 슬라이드에서 나온 Feature Space가 정말 중요한데요!
이미지에 대해서 Nearest Neigbor를 뽑아보면
왼쪽은 Pixel관점에서의 Nearest Neighbor이고, 오른쪽은 Feature관점에서의 Nearest Neighbor 입니다.
Pixel관점은 이게 하얀색 강아지이건, 하얀색 대걸레이건
비슷한 위치에 있는 흰색 덩어리면 Nearest Neighbor라고 판단할 겁니다.
그런데 Feature관점으로 이 사진들을 바라보게 된다면 이게 왼쪽에 있는 코끼리이건, 오른쪽에 있는 코끼리이건
상아가 달려있고, 코가 길고, 색상은 대략 이런 색상을 가진 비슷한 특징들을 지닌 사진들
즉 Feature Space상에서 가까운 친구들을 Nearest Neighbor라고 판단할 겁니다.
PCA
다시 차원 축소로 돌아와서, 그래서 그 많은 Dimension들을 어떻게!!
의미를 크게 손상시키지 않게 축소를 해서 저희가 알아듣기 쉽게 바꿀까?
강의에서는 PCA와 t-SNE 방법 두가지를 소개합니다.
그 중 PCA를 간단하게 설명하자면 PCA는 원본 데이터를 저차원으로 linear mapping 합니다.
예를 들어 2차원에 이렇게 데이터가 있다고 하고, 이 데이터들을 1차원으로 축소하고 싶다고 한다면
저희가 할 수 있는건 제일 먼저 축에 대해서 정사영을 내려보는 것입니다.
그렇게 되면 파랑색과 빨강색이 겹치는 구간이 여기 보이는 C 구간만큼 생기게 됩니다.
PCA로 저희가 하는 목적은 저 C 영역을 최소화 하도록 촤원 축소를 수행하는건데
이는 데이터의 분산을 최대화 하도록 차원축소를 진행해서 간접적으로 달성할 수 있습니다.
이 때 c구간이 최소화 되어서 선택된 축을 주성분(Principal component)이라고 합니다.
Feature vector들을 분산 큰순서대로 sorting 해서 저희가 원하는 차원값만큼 뽑아냅니다.
이때 뽑아낸 vector들은 선형독립상태, 즉 orthogonal 해야합니다.
t-SNE
근데 이 PCA가 Visualization을 하다보면 프로젝션 과정에서 오른쪽 처럼 데이터가 섞여서 나올때가 있었고
따라서 해석하기 힘든 부분이 있었습니다 따라서 visualization에서 쓰기에는 힘든 부분이 존재했고
이러한 PCA의 단점을 해결한 t-SNE 방법을 사용하게 됩니다.
무조건 t-SNE가 좋다는게 아니라 visualization 용으로쓰기에는 PCA보다 t-SNE가 더 좋다고 합니다.
단점은 PCA보다 연산량이 많아서 느리다는 점이 있습니다.
다음 글(Visualization and Understanding (2))에서는
특징 시각화에 대한 내용에 대해서 설명해 드리겠습니다!
감사합니다!:D
'IT > AI' 카테고리의 다른 글
[Google Machine Learning Boot Camp] Tensorflow Certification 취득 후기 (0) | 2021.01.10 |
---|---|
[논문리뷰] An Imporved Faster R-CNN for Small Object Detection (2) | 2021.01.10 |
[CS231n] 12. Visualization and Understanding (3) (0) | 2020.12.25 |
[CS231n] 12. Visualization and Understanding (2) (0) | 2020.12.25 |