07.6 CNN 시각화하기
CNN을 구성하는 합성곱 계층은 입력으로 받은 이미지 데이터에서 ‘무엇을 보고 있는’ 걸까요? 이번 절에서는 합성곱 계층을 시각화해서 CNN이 보고 있는 것이 무엇인지 알아보도록 하겠습니다.
7.6.1 1번째 층의 가중치 시각화하기
조금 앞에서 MNIST 데이터셋으로 간단한 CNN 학습을 해보았는데, 그때 1번째 층의 합성곱 계층의 가중치는 그 형상이 $(30, 1, 5, 5)$였습니다(필터 30개, 채널 1개, $5 \times 5$ 크기). 필터의 크기가 $5 \times 5$이고 채널이 1개라는 것은 이 필터를 1채널의 회색조 이미지로 시각화할 수 있다는 뜻입니다. 그럼 합성곱 계층(1층째) 필터를 이미지로 나타내봅시다. 여기에서는 학습 전과 후의 가중치를 비교해볼 텐데, 그 결과는 [그림 7-24]처럼 됩니다(소스 코드는 ch07/visualize_filter.py에 있습니다).
그림 7-24 학습 전과 후의 1번째 층의 합성곱 계층의 가중치 : 가중치의 원소는 실수이지만, 이미지에서는 가장 작은 값($0$)은 검은색, 가장 큰 값($255$)은 흰색으로 정규화하여 표시함

[그림 7-24]와 같이 학습 전 필터는 무작위로 초기화되고 있어 흑백의 정도에 규칙성이 없습니다. 한편, 학습을 마친 필터는 규칙성 있는 이미지가 되었습니다. 흰색에서 검은색으로 점차 변화하는 필터와 덩어리(블롭blob)가 진 필터 등, 규칙을 띄는 필터로 바뀌었습니다.
[그림 7-24]의 오른쪽같이 규칙성 있는 필터는 ‘무엇을 보고 있는’ 걸까요? 그것은 에지(색상이 바뀐 경계선)와 블롭(국소적으로 덩어리진 영역) 등을 보고 있습니다.
지니가 경계선(가로/세로 에지)과 동그란 얼룩(블롭) 안경을 쓰고 이미지를 바라보자, 규칙적인 흑백 격자 가중치들이 특정 방향의 경계선을 환하게 밝혀내는 모습을 도로시에게 보이고 있어요.
지니의 필터 시각화 브리핑
- 지니: “도로시, 1번째 합성곱 계층의 필터 가중치들을 그림으로 표현해 보면, 학습 전에는 규칙 없는 노이즈 상태였다가 학습이 끝난 후에는 에지(가로/세로 경계선)나 국소적 블롭(덩어리)을 정확하게 탐지하는 눈으로 진화한단다.”
- 도로시: “아! 이미지에서 세로 모양의 경계선이 나타날 때 흰색 픽셀로 강하게 불이 들어오는 거구나! 필터들이 각자 자기 담당 에지를 찾아서 감시하는 문지기 역할을 하는 거네!”
가령 왼쪽 절반이 흰색이고 오른쪽 절반이 검은색인 필터는 [그림 7-25]와 같이 세로 방향의 에지에 반응하는 필터입니다.
그림 7-25 가로 에지와 세로 에지에 반응하는 필터 : 출력 이미지 1은 세로 에지에 흰 픽셀이 나타나고, 출력 이미지 2는 가로 에지에 흰 픽셀이 많이 나온다.

[그림 7-25]는 학습된 필터 2개를 선택하여 입력 이미지에 합성곱 처리를 한 결과로, ‘필터 1’은 세로 에지에 반응하며 ‘필터 2’는 가로 에지에 반응하는 것을 알 수 있습니다.
이처럼 합성곱 계층의 필터는 에지나 블롭 등의 원시적인 정보를 추출할 수 있습니다. 이런 원시적인 정보가 뒷단 계층에 전달된다는 것이 앞에서 구현한 CNN에서 일어나는 일입니다.
도로시가 계층적 사다리를 올라갈 때마다, 사다리 1단(단순 경계선)에서 2단(텍스처 표면), 3단(바퀴나 얼굴 부품), 마지막 4단(완전한 개, 자동차)으로 시각 인지 대상이 입체적으로 고도화되는 계단식 특징 추출을 보여주고 있어요.
도로시의 계층적 특징 추출 이해
- 도로시: “어머! 1층 합성곱 필터들은 점이나 경계선 같은 아주 기초적인 정보만 보는데, 계층이 여러 겹 쌓이고 깊어질수록 텍스처, 타이어나 창문 같은 사물의 구체적 부품, 그리고 마지막에는 완전한 자동차나 동물 인형으로 뉴런의 타겟 정보가 엄청 추상화되어 가네!”
- 지니: “정확해! 그렇게 계층을 타고 올라가면서 단순한 픽셀값들이 점점 복잡한 사물의 ‘의미’로 통합 및 해석되는 것이 바로 딥러닝(Deep Learning)의 본질이란다.”
7.6.2 층 깊이에 따른 추출 정보 변화
앞 절의 결과는 1번째 층의 합성곱 계층을 대상으로 한 것이었습니다. 1번째 층의 합성곱 계층에서는 에지나 블롭 등의 저수준 정보가 추출된다 치고, 그럼 겹겹이 쌓인 CNN의 각 계층에서는 어떤 정보가 추출될까요? 딥러닝 시각화에 관한 연구[17][18]에 따르면, 계층이 깊어질수록 추출되는 정보(정확히는 강하게 반응하는 뉴런)는 더 추상화된다는 것을 알 수 있습니다.
[그림 7-26]은 일반 사물 인식(자동차나 개 등)을 수행한 8층의 CNN입니다. 이 네트워크 구조는 AlexNet이라 하는데(다음 절에서 설명합니다), 합성곱 계층과 풀링 계층을 여러 겹 쌓고, 마지막으로 완전연결 계층을 거쳐 결과를 출력하는 구조입니다. [그림 7-26]에서 블록으로 나타낸 것은 중간 데이터이며, 그 중간 데이터에 합성곱 연산을 연속해서 적용합니다.
그림 7-26 CNN의 합성곱 계층에서 추출되는 정보. 1번째 층은 에지와 블롭, 3번째 층은 텍스처, 5번째 층은 사물의 일부, 마지막 완전연결 계층은 사물의 클래스(개, 자동차 등)에 뉴런이 반응한다.[19]

딥러닝의 흥미로운 점은 [그림 7-26]과 같이 합성곱 계층을 여러 겹 쌓으면, 층이 깊어지면서 더 복잡하고 추상화된 정보가 추출된다는 것입니다. 처음 층은 단순한 에지에 반응하고, 이어서 텍스처에 반응하고, 더 복잡한 사물의 일부에 반응하도록 변화합니다. 즉, 층이 깊어지면서 뉴런이 반응하는 대상이 단순한 모양에서 ‘고급’ 정보로 변화해갑니다. 다시 말하면 사물의 ‘의미’를 이해하도록 변화하는 것입니다.
토토가 모니터 화면에 출력된 여러 합성곱 활성화 피처 맵(Feature Maps)을 짚으며, 특정 패턴에 따라 흰색 불빛들이 밝게 빛나며 활성화되는 모습을 관찰하고 있어요.
토토의 킁킁 피처 맵 검출
- 토토: “왈왈! (가로 에지 맵을 짚으며) 가로선에 흰색 신호가 가득 떴다 멍!”
- 도로시: “이미지가 입력될 때 각 필터들이 어떤 반응을 나타내는지 활성화 맵(Activation Map)을 띄워서 모니터링해 보니까, 신경망의 내부 생각 흐름이 투명하게 보이는구나!”