수학/딥러닝 이론

[딥러닝] 합성곱 신경망(CNN) - CNN 시각화 하기

AI 꿈나무 2020. 10. 5. 22:17
반응형

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.

 


 

 

[딥러닝] 합성곱 신경망(CNN) - CNN 구현하기

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 을 공부하고 정리��

deep-learning-study.tistory.com

 이전 포스팅에서 CNN을 구현해보았습니다.

 이번에는 합성곱 계층을 시각화 해보겠습니다.

 

CNN 시각화하기

 CNN을 구성하는 합성곱 계층은 입력으로 받은 이미지 데이터에서 무엇을 보고 있는지 알아보도록 하겠습니다.

 

1. 1번째 층의 가중치 시각화하기

 이전에 MNIST 데이터셋으로 간단한 CNN 학습을 해보았는데, 그때 1번째 층의 합성곱 계층의 가중치는 그 형상이 (30, 1, 5, 5)였습니다.(필터 30개, 채널 1개, 5 X 5 크기).

 

 필터의 크기가 5X5이고 채널이 1개라는 것은 이 필터를 1채널의 회색조 이미지로 시각화할 수 있다는 뜻입니다.

 그럼 합성곱 계층(1층) 필터를 이미지로 나타내보겠습니다.

 

학습 전과 후의 1번째 층의 합성곱 계층의 가중치

 

 학습 전 필터는 무작위로 초기화되고 있어 흑백의 정도에 규칙성이 없습니다.

 한편, 학습을 마친 필터규칙성이 있는 이미지화 되었습니다.

 흰색에서 검은색으로 점차 변화하는 필터와 덩이리(블롭)가 진 필터 등, 규칙을 띄는 필터로 바뀌었습니다.

 

 그림의 오른쪽같이 규칙성 있는 필터는 '무엇을 보고 있는' 걸까요?

 그것은 에지와 블롭(국소적으로 덩어리진 영역) 등을 보고 있습니다.

 가령 왼쪽 절반이 흰색이고 오른쪽 절반이 검은색인 필터는 아래 그림과 같이 세로 방향의 에지에 반응하는 필터입니다.

 

 

 위 그림은 학습된 필터 2개를 선택하여 입력 이미지에 합성곱 처리를 한 결과로, '필터 1'은 세로 에지에 반응하며 '필터 2'는 가로 에지에 반응하는 것을 알 수 있습니다.

 

 이처럼 합성곱 계층의 필터는 에지나 블롭 등의 원시적인 정보를 추출할 수 있습니다.

 이런 원시적인 정보가 뒷단 계층에 전달된다는 것이 앞에서 구현한 CNN에서 일어나는 일입니다.

 

2. 층 깊이에 따른 추출 정보 변화

 앞의 결과느 1번째 층의 합성곱 계층을 대상으로 한 것이었습니다.

 1번째 층의 합성곱 계층에서는 에지나 블롭 등의 저수준 정보가 추추된다 치고, 그럼 겹겹이 쌓인 CNN의 각 계층에서는 어떤 정보가 추출될까요?

 

 계층이 깊어질수록 추출되는 정보(정확히는 강하게 반응하는 뉴런)는 더 추상화된다는 것을 알 수 있습니다.

 

 아래 그림은 일반 사물 인식(자동차나 개 등)을 수행한 8층의 CNN입니다.

 이 네트워크 구조는 AlexNet이라 하는데, 합성곱 계층과 풀링 계층을 여러 겹 쌓고, 마지막으로 완전연결 계층을 거쳐 결과를 출력하는 구조입니다.

 

 블록으로 나타낸 것은 중간 데이터이며, 그 중간 데이터에 합성곱 연산을 연속해서 적용합니다.

 

CNN의 합성곱 계층에서 추출되는 정보.

 

 딥러닝의 흥미로운 점은 위 그림과 같이 합성곱 계층을 여러 겹 쌓으면, 층이 깊어지면서 더 복잡하고 추상화된 정보가 추출된다는 것입니다.

 

 1번째 층은 에지와 블롭, 3번째 층은 텍스쳐, 5번째 층은 사물의 일부, 마지막 완전연결 계층은 사물의 클래스(개, 자동차 등)에 뉴런이 반응합니다.

 

 즉, 층이 깊어지면서 뉴런이 반응하는 대상이 단순한 모양에서 '고급' 정보로 변화해갑니다.

 다시 말하면 사물의 '의미'를 이해하도록 변화하는 것입니다.

 

반응형