딥러닝 모델이 어느 부분을 보고 판단하는지 알 수 있는 Attribution Method에 대한 포스팅입니다. 영국의 Odin-Vision이라는 회사의 기술을 연구하다가 알게된 내용들 입니다. 급하게 작성하느라 제대로 정리되지 않았습니다 ㅠㅠ
Attribution Methods란?
Attribution Methods (AMs)는 CNN기반의 모델 예측에 기여하는 요소들을 수치화(스칼라화)해 설명력을 높이기 위한 작업입니다. 이를 다음과 같이 분류할 수 있습니다.
AM의 접근 방식
- input의 feature에 따라: initial input이 output에 미치는 영향을 탐구
- 모델의 구성 요소 (ex. 특정 레이어)에 따라: 특정 layer의 activation을 탐구
AM의 attribution 추출 방식
- gradient-based(기울기 기반): model의 그레디언트로부터 속성 추출
- perturbation-based(섭동 기반): input에 교란을 주며 속성 추출
Primary attribution methods
1) Perturbation-based methods (섭동 기반 기법)
- perturbation-based AM은 서로 다른 (변형된) input feature가 들어왔을 때의 결과 변화를 비교하는 기법. → backpropagation이 필요없음
- neural network 이외에 decision tree, SVM 등의 기법에도 적용될 수 있음
- Tabular Data에서 feature 1, feature 2, feature 3이 있을 때, 각 feature를 빼고 예측을 해보며 어느 feature가 가장 중요한지 판단
- Image Data에서는 masking, shifting, blur 등을 통해 이미지에 변화를 주고, 해당 픽셀이 예측 결과에 얼마나 영향을 미쳤는지 분석
Occlusion methods
- 이미지의 일부분을 가림 (mask)
- 한 픽셀씩 가려서 세세한 attribution을 추출할 수도 있으나, 이는 해당 픽셀의 독립적인 수치만 계산해 다른 픽셀들과의 연관을 알기어려움
- 동시에 여러곳을 가려 너무 세분화되어있진 않더라도 correlation을 파악할 수 있도록 함
occlusion method 예시
- occlusion 패치 크기뿐만 아니라, 뭘로 대체하냐도 풀어야할 과제로 남음. 단순히 검정색 mask로 대체하면 distribution 자체가 달라짐
- 이 문제를 완화하기위해 blur 기법을 활용. 이외에 다른 방법들도 있으나 비용 발생 + 어려움
2) Gradient-based methods
Saliency, Deconvolution, Guided Backpropagation
- 이 세가지는 각자 개발되었지만, 이론적 근거는 같음
- Saliency는 그 중에서 가장 간단 → input feature에 따른 output의 gradient를 나타냄
- 이 attribution 크기가 곧 model의 예측에 영향을 주기위해 필요한 input feature의 변화량으로 해석될 수 있음
- Deconvolution과 Guided Backpropagation은 동일한 방법이지만 약간의 수정이 있음
Integrated Gradients, GradientSHAP
- baseline image x’ 에서 직선 하나를 그어 만든 x를 input으로 사용
- Integrated Gradients의 추출 공식은 다음과 같음
- GradientSHAP도 비슷한 방법으로 계산하는데, x`에서 일종의 노이즈를 준 image를 사용함
Guided GradCAM
- Guided GradCAM은 GradCAM과 Guided Backpropagation을 기반으로 만든 기법
- layer K의 feature map activation을 기반으로하는 attribution을 계산함
- GradCAM은 fine-grained 디테일을 잡아내지 못하는데, Guided GradCAM이 이를 해결함
Layer attribution Methods
- Primary attribution method가 input feature가 output에 미친 영향을 시각화 했다면, layer attribution method는 모델의 각 layer가 미친 영향을 평가함
- Odin-Vision의 모델은 resnet101을 기반으로 이는 33개의 residual block을 가지고 있고 이를 네 개의 layer로 나누면 각각 3 blocks, 4 blocks, 23 blocks, 3 blocks로 나눌 수 있음
Layer Integrated Gradient
- Intergrated Gradient의 변형 → layer에 importance score를 할당함
Layer and Guided GradCAM
- 기존의 CAM은 적은 수의 class가 있을 때 사용가능
- Layer GradCAM은 target output의 그레디언트를 각 output channel에 대해 결합하고 모든 channel의 평균 그레디언트를 곱한 값
- Guided GradCAM은 특정한 layer의 pixel의 activation을 보여줌
Ref
https://dreamgonfly.github.io/blog/lime/
https://www.turing.ac.uk/research/publications/data-study-group-final-report-odin-vision
'Data Science' 카테고리의 다른 글
python natsort로 파일을 "이름 순으로" 정렬해보자 (1) | 2022.04.25 |
---|---|
python split-folders로 이미지 데이터 분리하기 (train/val/test) (0) | 2022.03.24 |
TPOT을 이용한 머신러닝 자동화 (AutoML with python), 파라미터 튜닝까지 (0) | 2021.12.15 |
pandas dataframe에서 apply의 진척도 보기 (progress_apply()) (2) | 2021.09.13 |
python numpy - argsort() 정렬 전 인덱스 활용하기 (0) | 2021.01.08 |