Bamboo is coming

Guided Grad-CAM 본문

논문

Guided Grad-CAM

twenty 2023. 8. 10. 17:14

 

 

GBP(Guided Backpropagation)

GBP(Guided Backpropagation)는 심층 신경망을 위한 시각화 기술입니다. 목표는 모델의 특정 출력으로 이어지는 입력 이미지의 중요한 기능을 식별하는 것입니다. 특히 CNN(Convolutional Neural Networks)의 내부 작동에 대한 더 나은 이해를 제공하는 데 사용됩니다.

 

Guided Backpropagation을 이해하기 위해 먼저 일반 backpropagation을 이해합시다.

일반 역전파 (Backpropagation)
역전파는 네트워크의 각 가중치에 대한 손실 함수의 기울기를 계산하는 데 사용되는 방법입니다. 여기에는 두 단계가 포함됩니다.

Forward Pass: 주어진 입력에 대한 네트워크의 출력을 계산합니다.
Backward Pass: 체인 규칙을 적용하여 각 가중치에 대한 손실 함수의 기울기를 계산합니다.
역방향 통과 중에 출력 레이어에서 시작하여 입력 레이어로 이동하면서 네트워크의 각 노드(뉴런)에 대한 손실 기울기가 계산됩니다.

유도 역전파 (Guided Backpropagation)
Guided Backpropagation은 표준 역전파 알고리즘을 수정하여 CNN에 대한 보다 명확한 시각화를 제공합니다. 특히 표준 역전파의 긍정적인 기여와 뉴런의 긍정적인 활성화를 결합합니다.

작동 방식은 다음과 같습니다.

뉴런의 ReLU 활성화: CNN에서는 ReLU(Rectified Linear Unit) 활성화 기능이 일반적입니다. 모든 음수 값을 0으로 설정하고 양수 값은 변경하지 않고 그대로 두어 비선형성을 도입합니다.
ReLU를 사용한 역전파: 역방향 패스 동안 그래디언트는 양수 또는 음수가 될 수 있습니다. Guided Backpropagation의 직관은 기능이 중요하려면 활성화와 기울기가 모두 양수여야 한다는 것입니다. 둘 중 하나가 음수이면 0으로 설정됩니다.
역전파 수정 사항:
ReLU 활성화를 통해 역전파할 때 ReLU에 대한 입력이 음수이면 그래디언트는 0으로 설정됩니다(역전파 중 ReLU의 표준 동작).
Guided Backpropagation은 추가 제약 조건을 도입합니다. 그래디언트(역전파 값)가 음수인 경우에도 0으로 설정됩니다. 따라서 Guided Backpropagation의 역전파 동안 ReLU 뉴런의 출력 기울기는 입력과 기울기가 모두 양수인 경우에만 양수입니다.
직감과 사용:
양의 변화도와 활성화만 고려함으로써 Guided Backpropagation은 출력에 긍정적인 영향을 미치는 입력 이미지의 특징에 초점을 맞춥니다. 음수 활성화가 있거나 출력 값을 감소시키는 기능을 억제합니다.

안내된 역전파로 생성된 시각화는 표준 역전파보다 더 명확하고 집중적인 경향이 있습니다. 그들은 다음을 돕습니다.

입력 이미지의 어떤 부분이 네트워크를 활성화했는지 이해합니다.
주어진 출력에 대한 영향 영역을 시각적으로 검사하여 모델을 디버깅하고 개선합니다.
예측을 할 때 CNN이 "보거나" "집중"할 수 있는 것에 대한 통찰력을 얻습니다.
이전에 제공한 코드에서 GuidedBackpropReLU 클래스는 Guided Backpropagation 원칙을 통합하는 ReLU 활성화의 사용자 지정 구현입니다. 이는 역방향 전달 중에 양수 활성화에서 오는 양수 기울기만 다시 흐르도록 허용합니다. 다른 모든 그라디언트는 0으로 설정됩니다.

 

제목1

  • 1이 수정으로 역전파 중에 원하는 출력에 긍정적인 영향을 미치는 긍정적인 활성화만 고려됩니다.
  • 2Guided Backpropagation은 시각화 기술입니다. 특정 출력에 가장 (긍정적인) 영향을 미친 입력 이미지의 영역을 강조 표시하는 것을 목표로 합니다. 음수 기울기를 0으로 설정하면 이 메서드는 관심 클래스에 긍정적인 영향을 미치는 기능만 시각화되도록 합니다.
  • 3

제목2

 

이 코드는 GuidedBackpropReLU라는 사용자 지정 PyTorch autograd 함수를 정의합니다. 심층 신경망을 위한 시각화 기술인 Guided Backpropagation과 함께 사용하도록 특별히 설계된 표준 ReLU 작업을 수정한 것입니다.

 

saved_tensors, save_for_backward

saved_tensors, save_for_backward는 autograd Function 중 하나임.

저장된 텐서 접근: backward 메소드에서는 self.saved_tensors를 호출하여 저장한 텐서를 검색할 수 있습니다. 저장한 모든 텐서를 저장한 순서대로 포함하는 튜플을 반환합니다.

제공된 코드에서:

input_img, output = self.saved_tensors

이 줄은 forward 패스 중에 저장된 input_img 및 output 텐서를 가져옵니다.

고려 사항: 한 가지 주의해야 할 점은 역방향 계산에 꼭 필요한 텐서만 저장해야 한다는 것입니다. 너무 많은 텐서나 불필요한 텐서를 저장하면 메모리 사용량이 늘어납니다. 또한 기울기가 있는 텐서를 저장하면 안 됩니다(즉, requires_grad=True로 생성된 텐서). save_for_backward 메서드는 리프가 아닌 텐서를 위한 것입니다. 기울기로 텐서를 저장하면 예기치 않은 동작이 발생할 수 있습니다.
본질적으로 save_for_backward는 순방향 패스에서 역방향 패스로 데이터를 전달하는 메커니즘을 제공하여 사용자 정의 autograd 함수에 대한 정확하고 효율적인 그래디언트 계산을 가능하게 합니다.

Comments