더북(TheBook)

CAM의 원리를 살펴보기 위해 컨볼루션 신경망(CNN)에 대해 조금 더 생각해 보겠습니다. 15장에서 데이터가 입력되면 컨볼루션 레이어, 풀링 레이어에 통과시키는 것이 컨볼루션 신경망이라고 배웠지요. 그런데 이러한 레이어들을 통과시키는 이유가 뭘까요? 신경망 학습을 위해서는 입력된 2D 이미지들을 1차원 배열로 축소해야 하기 때문입니다. 차원을 줄이는 과정에서 공간 정보의 손실이 발생할 수밖에 없고, 이를 해소하기 위해 컨볼루션 신경망이 만들어진 것입니다. 이를 바꾸어 말하면, 컨볼루션 신경망 내부의 레이어들을 하나씩 거쳐 마지막 예측을 위한 단계까지 온 데이터들(이를 중간 맵이라고 함)은 입력 데이터의 속성을 잘 간직하고 있다는 의미가 됩니다.

CAM은 여기서 아이디어를 얻었습니다. 이 데이터를 1차원으로 축소시키는 Flatten 단계 직전에 개입해서 그때까지 만들어진 중간 맵들을 따로 모읍니다(). 그리고 그 중간 맵들 각각으로부터 평균값(Global Max Pooling, GAP)(중간 맵 안에 들어 있는 모든 값의 평균)을 뽑은 후(), 이 평균값과 최종 예측 사이에서 한 번 더 학습합니다(). 그러면 어떤 중간 맵이 최종 결정에 큰 역할을 하는지 알려 주는 가중치()를 얻게 되겠지요. 이 가중치를 각 중간 맵에 곱해 중요한 중간 맵은 가중하고 불필요한 중간 맵은 자연스럽게 없애면서 특징 맵()을 만들어 내는 것이 바로 CAM입니다. 같은 원리이지만, 평균값을 계산하기 위해 모델의 구조를 바꾸어야 하는 번거로움을 피하고자 평균값 대신 기울기를 이용하는 방법도 개발되었습니다. 이를 그레이디언트 CAM(Gradient CAM)이라고 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.