AI는 모델의 가중치(weight)를 최적화하는 과정만 믿으면 해당 모델이 올바르게 학습하고 있는지 판단하기 어렵다.
만약 모델이 잘못된 부분을 학습하여 답을 한다면?! 생각보다 위험한 결과를 가져올 수 있기 때문에 올바르게 학습되고 있는지 확인하는 것이 좋다.
해당 모델이 잘 학습되고 있는지 볼 수 있는 방법으로는 CAM이 있다.
CAM은 Class Activation Map으로 모델이 어떤 곳을 보고 어떤 클래스임을 짐작하고 있는지 확인할 수 있는 지도이다.
CAM은 일반적인 CNN이 커널 윈도우에 따라 특성을 추출하므로 CNN레이어를 거친 특성 맵에도 입력값의 위치정보가 유지된다.
따라서 특성 맵의 정보를 이미지 검출(Detection)이나 세그멘테이션 등의 문제를 푸는데 이용하기도 한다.
CAM은 CNN레이어를 거쳐 뽑아낸 특성 맵에 대해 GAP을 적용한 후 소프트맥스 레이어(softmax 활성화함수를 가지고 bias가 없는 FC layer)를 적용한다.
모든 위치의 활성화 정도를 더해준 것과 달리 각 x,y위치에서 k개의 채널만 더해주어 위치 정보가 남도록 하는 방법을 사용하여 이를 통해 얻어진 CAM은 각 위치에서 채널별 활성화 정도의 가중합(Mc(x,y))을 구한다.
이는 모델이 클래스 c에 대해 각 위치를 얼마나 보고 있는지를 나타낸 것이라고 할 수 있다.
코드 예시
출처: 아이펠 부산 1기 기록