- 2019년 11월 30일 오전 11:12
- 조회수: 10918
REFERENCES
INFORMATION
- 2019년 12월 6일
- 오후 1시 ~
- 고려대학교 신공학관 218호
TOPIC
OVERVIEW
장소 : 고려대학교 신공학관 218호
주제 : Grad-CAM(Class Activation Map)
발표자 : 백인성
요약: 성능이 좋은 예측 모델을 구축해 미래를 정확히 예측하는 것은 중요한 일이다. 하지만 실제 현실 세계에서는
발표자 후기
오늘은 Grad_CAM 주제로 세미나를 진행하였다. 연구실 세미나는 2번째로 진행하는 것이었는데 지난번보다 논문에 대해 더 이해를 잘하고 준비했다는 사실이 기뻤다. Grad_CAM은 CAM(Class Activation Map)이 등장한 뒤 1년 뒤에 나온 방법론이다. 먼저 CAM은 CNN(Convolutional Neural Network) 구조에서 마지막 부분에 GAP(Global Average Pooling)을 넣어 이미지 내 분류 결과에 영향력을 크게 준 주요 요소를 찾는 방법론이다. CAM에서 중요한 것은 CNN 구조 마지막에 GAP을 사용했고, GAP을 통해 각 feature 별 요약 값(평균)을 구한 뒤, 그 값과 분류 결과와 연결되는 weight를 활용해서 주요 요소를 찾는다는 것이다. 결국 중요한 것은 마지막 feature 값과 분류 결과와 연결 된 weight값을 활용해 주요 요소를 찾는다는 것이다. 하지만 CAM 방법론은 항상 모델 마지막 부분에 GAP을 넣어야 하기 때문에 딥러닝 모델을 구축할 때 제한이 생긴다. 따라서 GAP을 사용하지 않고 CNN모델 마지막 feature값과 연결 될 수 있는 weight를 활용할 수 있는 방법이 무엇일지에 대한 고민 끝에 나온 방법론이 Grad_CAM이다. Grad_CAM은 feature와 연결 된 weight를 gradient를 구하는 방식으로 구한다. 따라서 원래 딥러닝 모델 구조를 수정하지 않고도 CAM 값을 구할 수 있게 된다. 그래서 Grad_CAM은 Generalize CAM이라고도 불린다. 이번에 세미나를 준비하면서 느낀 점은 좋은 방법론이란 그 내용이 심플해서 이해하기 쉽지만 해당 방법론이 가지는 영향력이 강한 것이라고 생각했다. 나도 이와 같은 방법론을 만들고자 고민하고 노력해야겠다는 생각을 했다. 세미나 시간 동안 집중해서 들어주고 다양한 조언도 해준 동료 연구원들과 교수님께 감사하다고 말씀드리고 싶다.
청취자 후기
금일 세미나는 Grad_CAM에 대한 주제로 인성이 형이 발표했다. 딥러닝 분야에서는 예측 및 분류를 진행할 때, 결과에 대한 해석을 하는 것이 쉽지 않았다. 그래서 딥러닝 결과 해석을 하기 위한 XAI에 대해 연구가 다양하게 이루어지고 있다. 발표 주제인 CAM은 결과에 대한 원인 분석 및 해석을 진행하기 위해 적용하는 기법으로 널리 사용되고 있다. Grad_CAM 이전의 CAM은 Convolution layer를 통과 후 마지막 Feature map에서 Global average pooling (GAP)을 적용해 예측 및 분류 결과에 대한 원인 분석 및 해석을 진행한다. Grad_CAM은 CAM과 달리 마지막 Feature map에 GAP를 적용하지 않고 바로 각 Feature map의 pixel 개수에 대한 노드와 완전 연결 구조를 이루어 진행한다. 이렇게 연결된 구조에 가중치를 가지고 결과에 대한 원인 분석을 하게 된다. 따라서 이미지의 각 pixel별로 원인 분석이 가능하게 되며 CAM보다 더욱 세밀하고 자세한 해석이 가능하게 된다. 프로젝트를 진행하면서 딥러닝을 적용할 때 원인 분석 및 해석은 쉽지 않은 작업이다. 최근 나도 CAM을 적용해보면서 결과에 대한 해석이 아쉬웠는데 이번 발표의 내용인 Grad_CAM을 적용해 보다 더 자세한 해석을 진행해볼 예정이다.
오랜만에 연구실 논문 세미나가 진행되었으며 주제는 Gradient-weighted Class Activation Mapping (Grad-CAM)이었다. Convolutional Neural Network의 결과를 직접적, 시각적으로 해석하기 위한 다양한 연구들 중 Class Activation Map은 굉장히 직관적이면서도 효율적인 방법이다. 모델의 해석력을 확보하기 위해 꽤 예전에 제안된 방법론임에도 불구하고 현재 많은 알고리즘에 적용되고 있다. CAM은 CNN의 Global Average Pooling 레이어을 직접적으로 이용한다. 예측 클래스에 연결되어 있는 weight 값을 feature에 곱한 다음 모든 feature를 합한다. 그 다음 input image와 size를 맞춰주기 위해 upsampling을 진행하면 되는 간단한 방식이다. 하지만, GAP 구조만을 사용해야 한다는 단점이있으며 이를 극복하기 위해 제안된 방법이 Grad-CAM이다. Grad-CAM은 class의 확률값을 각 픽셀에 대한 미분함으써, '해당 픽셀이 움직였을때 바뀌는 클래스 확률의 변화'를 weight로 새롭게 정의한다. 이를 통해 굳이 GAP를 사용하지 않아도 되는 장점을 갖게 된다. Attention은 모델을 학습시키는 과정에서 찾아야 하는 추가적인 weight가 있는 반면, CAM 계열 방법은 모든 모델을 학습한 이후의 사후 처리를 통해 간단하게 계산할 수 있다. 모델에 대한 정량적인 평가도 중요하지만, 이미지나 텍스트 같은 자연 데이터에서는 결과에 대한 원인을 시각적으로 이해할 수 있는 정성적인 평가도 중요한 만큼 많은 연구가 필요한 분야라고 생각한다.
이번 세미나는 Grad-CAM 을 주제로 백인성연구원이 진행하였다. 딥러닝이 지속적으로 발전하면서 예측이나 분류를 진행할 때 단순히 결과만 보여주는것이 아니라 왜 그런 결과를 나타내었는지, 또한 데이터의 어떤 부분이 그런 결과를 얻는데 주요하게 작용하였는지 확인해 주는 방법론들이 많이 등장하고 있다. 오늘 주제인 Grad-CAM 은 기본적인 CAM의 끝단 GAP 레이어를 FCN 구조로 대체한 것이다. CAM 은 많이 알려진것 처럼 마지막 피쳐맵에 있는 데이터를 가중치를 주어 합한 결과를 보는 것인데 GAP 의 특수성 때문에 마지막 레이어만 병합할 수 있었다. Grad-CAM 은 FCN 을 사용하여 특정 레이어만 병합할 수 있던 한계를 극복한 모델이라고 생각되었다. 단순한 변화이지만 CAM의 구조를 일반화 시키는 결과를 얻었다고 볼수 있다. 그동안 CAM 에 대한 대략적인 동작원리만 이해하고 있었는데, 오늘 세미나를 통하여 정확히 알 수 있는 계기가 되었고 추가적으로 Grad-CAM 또한 배울 수 있어 개인적으로 도움이 많이 되었다. 흥미로운 주제를 쉽게 잘 설명해 준 유익한 세미나였다.
오늘 전체세미나는 'Gradient-weighted class activation map (Grad-CAM)'을 주제로 인성이형이 진행하였다. 최근 이미지 형태로 이루어진 데이터(2, 3차원 데이터) 인식에 효과적인 CNN(convolutional neural network)를 기반으로 한 예측값에 따른 원인분석을 위한 연구가 활발히 이루어지고 있다. 먼저 초창기에 제안된 class activation map (CAM) 은 마지막 convolutional layer로부터 도출된 feature map을 대상으로 GAP(global average pooling) 을 적용하여 평균값(average values)을 도출하고, 평균값과 레이블(label)에 대한 weight를 각 feature map 의 중요도로 보고 이미지 내 중요구역을 강조할 수 있다. 여기에 GAP 대신 dense layer 를 적용하여, dense layer 내 각 node에 대한 gradient (feature map 내 요소가 한단위 변할 때 y label에 변화량)을 기반으로 중요구역을 강조하는것이 Grad-CAM이다. 짜임새 있는 설명 자료와 쉬운 설명으로 이해하기 수월했다. 오늘 세미나로 Grad-CAM과 CAM의 차이를 명확히 구분지을 수 있었고, 현재 진행하고 있는 Game AI 프로젝트에 적용 예정으로 말해주었는데 중요시점과 중요 이미지 구역을 강조하는데 효과적으로 적용될 것으로 생각한다. 프로젝트에 응용하는 것에서 더 나아가 연구 성과로도 잘 이어질 수 있도록 발전시키면 좋을 것 같다.
금일 세미나는 Grad_CAM(Class Activation Map) 에 대한 내용이었다. CAM은 Image Classification 문제에 대해 높은 예측성능을 보이지만, 그것에 대한 원인을 파악하기 힘든 문제 상황에서, 이를 Global Average Pooling(GAP)를 이용해 해결한 방법론이다. 하지만 CAM을 적용하기 위해서는 마지막 히든 레이어의 형태가 Fully Connected 여야 한다는 가정이 있었다. Gram-CAM은 마지막 히든 레이어 형태에 관계 없이 적용할 수 있도록 Feature map을 flatten 하여 예측 모델의 원인을 탐지하게 한 방법론이다. CAM 계열의 알고리즘은 분류, 회귀 등 단일 출력 변수에 대해 적용가능한 것으로 알려져 있다. Image Classification 뿐만 아니라 Image Segmentation에 대해 적용할 수 있을까라는 생각이 들었다. 해당 Task는 예측 결과 자체가 예측의 원인으로도 볼 수 있다. 하지만 Feature map에 대한 설명은 불가능하다. 하지만 Grad CAM을 수정하여, Segmentation Task의 특정 클래스에 대한 예측 결과를 Feature map 단계에서 설명할 수 있다면 Image Segmentation에 대해서도 원인 해석력이 증가할 것으로 기대한다. 현재 진행하고 있는 프로젝트에 이를 적용하여, Feature map 단위의 설명을 시도해보아야겠다. 세미나 주제를 알기 쉽게 설명해준 인성이 형에게 감사를 표한다.
Grad-GAM은 마지막 convolutional layer에 들어가는 어떤 임의의 타겟 컨셉(e.g. 이미지 분류에서 ‘강아지’클래스)의 gradient를 사용하여, 해당 타겟을 예측하는데에 있어서 중요한 부분을 대략적으로 강조해주는 대략적인 localization map을 생성해준다. 기존 방식들(CAM)과는 다르게, Grad-CAM은 기존의 다양한 CNN 모델(1~3)에서 구조적인 변화나 재학습 없이 사용이 가능하다. (1) FC layer가 있는 CNN (e.g. VGG) / (2) 구조화된 출력(e.g. captioning)을 위한 CNN / (3) Multi-modal input(e.g. Visual QA)이나 강화학습을 다루는 CNN 에 대해서 말이다.
이미지 분류 모델 측면에서 볼 때, Grad-CAM의 localization map은 (a)모델이 예측에 실패하는 경우에 인사이트를 줄 수 있으며, (b)기존의 weakly-supervised localization 분야 SOTA모델보다 좋은 성능 내며, (c)adversarial pertubation 공격에 강건하며, (d) 기존 모델을 변경하지 크게 않는 선에서 좋은 성능을 내며, (e) 데이터셋의 bias를 감지함으로써 모델 일반화를 하는데 도움을 준다.
금일 세미나는 Grad-CAM에 대해 인성이 형이 발표를 해주었다. 그렇지 않아도 최근 참석한 데이터마이닝 이후 Grad-CAM에 관심이 가던 차여서, 더욱 관심을 가지고 청취를 했다. 그동안의 딥러닝 모델들은 Black-Box였기에 input에 대한 output의 출력만 존재하여 이를 해석하기에 어려움이 있었다. 딥러닝 모델이 해석 가능성을 확보하게 되면 여러 장점을 가지게 되는데, 모델의 부족한 부분을 보다 쉽게 Tracking할 수 있고, 실제 현장의 사용자들에게 설명이 가능하다는 신뢰성을 확보할 수 있다는 점이 대표적이다. Grad-CAM은 이미지 분류 문제에서 관심 영역을 식별 가능하도록 히트맵 형태로 보여주는 설명가능한 딥러닝 모델 중 하나이다. 초창기 제안되었던 CAM은 output layer와 마지막 convolution layer 사이에 무조건 GAP나 GMP layer가 위치해야 연산이 가능하다는 단점이 있었다. Grad-CAM은 이러한 단점을 해결하여 거의 모든 CNN모델에 적용이 가능하도록 했다. 즉, GAP와의 연관성을 이용해서 CAM을 구하는 것이 아닌, Gradient를 이용해서 CAM을 구한다. 평소 흥미있던 주제에 대해 자세한 설명을 해준 인성이 형에게 깊은 감사를 표한다.
금일 세미나는 Grad_CAM(Class Activation Map) 에 대해 진행되었다. CAM의 경우 이미지 분류 에서 큰 장점을 보여주는데 기존에는 개와 고양이를 분류할때 어떤 포인트로 인해 분류가 되었는지 알지 못했는데 CAM을 이용하면서 이미지의 어떤 부분이 분류하는데 큰 영향을 끼쳤는지 알게 해 주었다. 즉 모델의 결과의 타당함을 직관적으로 보여줄수 있고 예측 결과에 대한 원인 분석과 향후 대처까지 할 수 있게 되었다. 기본적인 CAM 모델 컨셉은 CNN 으로 분류를 진행 할때 마지막 Convolution Layer 단계 이후 Global Average Pooling 을 적용하여 대표할 수 있는 값을 확인 할 수 있는 방법이었다. 마지막에 Layer 에서 사용하는 이유는 마지막 convolution feature map 이 앞쪽의 정보들을 누적해서 가지고 있는 최종 정보량이기 때문이다. Grad-CAM은 꼭 Global Average Pooling을 사용하지 않아도 되도록 어느 Layer 에서든 사용될수 있도록 해주는 방법이다. Gradient를 통해 기울기를 구하여 GAP 을 사용하지 않아도 계산을 할 수 있도록 해주었고 또한 어떤layer든 Gradient 계산을 통해 대표값을 뽑아낼 수 있는 장점이 있다. 또한 모델구조를 변형하지 않아도 되기 때문에 언제든지 적용 가능한 모델이다. 그동안 CAM 에 대해 간단한 이해만 가지고 있었는데 이번 세미나를 통해 CAM 뿐 아니라 Grad_CAM 을 알게되어 좋았다.
금일 세미나는 Grad-CAM이라는 주제로 백인성 군이 발표해 주었다. Grad-CAM은 Gradient-weighted Class Activation Mapping의 약자로 Convolution neural network(CNN)에서 분류를 진행하였을 때 분류에 가장 영향을 많이 주었던 부분을 보여줌으로써 인해 해당 모델이 실험 데이터 뿐만 아니라 실제 적용되었을 때에도 신뢰성 있는 분류를 진행할 수 있을지 없을지를 가늠할 수 있게 해주는 Explainable CNN의 기법 중 하나이다. Grad-CAM은 2016년 CVPR(Computer Vision and Pattern Recognition)에 발표된 Class Activation MAP(CAM)의 업그레이드 버전으로 2017년 ICCV(International Conference on Computer Vision)에서 발표되었다. GAM은 Explainable CNN의 가장 대표적인 기법으로 CNN의 마지막 단계에 Global Average Pooling(GAP) 층을 넣고 해당 층의 분류 weight를 반영하여 중요도를 판단하는 방법이다. 이에 반하여 Grad-GAM은 GAP 층이 없이 Fully connected layer 자체의 weight를 이용하기 때문에 GAP층을 넣는 변형을 하지 않아도 되고, CNN의 마지막 층이 아닌 중간 중간에 중요도를 산출할 수 있다는 장점을 갖는다. 사실 CAM 기법은 올 초에 한번 세미나에서 언급된 적이 있었는데 금번 세미나에서 보다 업그레이드 된 그림과 예시를 통해 이해하기 쉽게 설명해주어 보다 확실하게 이해할 수 있었던 세미나였다. 연구실 동료들에게 잘 이해되도록 자료를 고생해서 만들어준 백인성 군에게 고맙다는 말을 전하고 싶다.
이번 학기는 여러 학회들과 행사 때문에 굉장히 오랜만에 듣는 세미나였다. 이번 주제는 Grad-CAM으로 Gradient를 바탕으로 기존의 CAM의 개념을 확장시켰다. CAM의 경우 마지막 layer에서 Global average pooling을 이용하여 평균적으로 어느 정도 영향력을 미쳤는지 판단한다.
하지만 Grad CAM의 경우 gradient를 이용하여 마지막 레이어 뿐 아니라 다른 레이어에서도 중요도를 구할 수 있다. 그렇기 때문에 어느 단계에서, 어느 채널에서는 어떤 부분이 중요한지 각 레이어별로 모두 구할 수 있게 되었다. 또한 이 논문에서는 counterfactual explanation을 제시했는데, 이것은 사진에 개와 고양이가 있을 때 개를 찾아내기 위해 고양이를 배제하는 방법이다. 이는 고양이를 찾는 모델에서 찾아낸 gradient들에 (-)를 곱하는 것으로 진행할 수 있다. 이 외에도 실제 featuremap의 값 대신 gradient를 이용하기 때문에 얻어지는 장점들이 많다. 기존 CAM보다 정확도가 높아지는 것은 물론 VQA(Visual Question Answering)에서도 더 유리하다. 이처럼 기존의 CAM이라는 아이디어에서 확장하여 더 많은 것들이 가능하게 되었다. 새로운 발견들에 대해서 항상 관심을 가지고 있어야 가능한 연구인 것 같다.
이번 세미나는 Grad_CAM에 관련된 주제로 진행되었다. Grad_CAM은 CNN 모델에서 Gradient를 활용해 예측 결과에 대한 원인을 해석할 수 있는 모델이다. CAM 구조는 기존 CNN구조의 최종 분류 예측 전에 거치는 fully connected layer 대신에 Global Average Pooling(GAP)의 구조를 사용한다. Global Average Pooling을 통해 각 feature별 평균값을 구하고 예측값에 따라 weight가 달라진다. 마지막 convolution layer만 가지고도 원인 분석이 가능한 이유는 원본 자료로부터 요약된 정보이기 때문이다.
Grad_CAM은 GAP층을 사용하지 않고 마지막 layer가 아니더라도 gradient를 활용해 각 클래스 별 weight를 계산한다. 여기서의 gradient는 feature map 내의 위치 값이 한 단위 변화할 때 y(특정 클래스가 될 확률)의 변화량을 의미한다. 이렇게 새롭게 weight를 정의함으로써 어떤 layer가 예측의 주요 원인이 되었는지 해석 가능하다. Grad_CAM은 모델 구조를 변형하지 않고도 해석 불가능한 딥러닝의 한계점을 보안한 흥미로운 모델이라고 생각했다. 이미지 데이터 분석에 흥미를 가지고 있는데 초보자의 눈높이에서도 이해하기 쉽게 설명해주신 인성오빠께 감사하고 CAM, Grad_CAM에 대해 알 수 있는 유익한 시간이었다.