이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다.
CNN을 구성하는 합성곱 계층은 입력으로 받은 이미지를 데이터에서 '무엇으로 보고 있는' 걸까? 이번 절에서는 합성곱 계층을 시각화해서 CNN이 보고있는 것이 무엇인지 알아보도록 하겠다.
1. 1번째 층의 가중치 시각화 하기
앞에서 MNIST 데이터셋으로 간단한 CNN 학습을 해보았는데, 그때 번째 층의 합성곱 계층의 가중치는 그 형상이 (30,1,5,5) 였다. (필터 30개, 채널 1개, 5x5크기). 필터의 크기가 5x5이고 채널이 1개라는 것은 이 필터를 1채널의 회색조 이미지로 시각화할 수 있다는 뜻이다. 그럼 합성곱 계층(1층째) 필터를 이미지로 나타내보자.
학습전 필터는 무작위로 초기화되고 있어 흑백의 정도에 규칙성이 없다. 한편 학습을 마친 필터는 규칙성 있는 이미지가 되었다. 흰색에서 검은색으로 점차 변화하는 필터와 덩어리(블롭blob)가 진 필터 등, 규칙을 띄는 필터로 바뀌었다.
오른쪽 그림같이 규칙성 있는 필터는 에지(색상이 바뀐 경계선)와 블롭(국소적으로 덩어리진 영역)등을 보고 있다. 가령 왼쪽 절반이 흰색이고 오른쪽 절반이 검은색인 필터는 다음 그림과 같이 세로 방향의 에지에 반응하는 필터이다.
이처럼 합성곱 계층의 필터는 에지나 블롭 등의 원시적인 정보를 추출할 수 있다. 이런 원시적인 정보가 뒷단 계층에 전달된다는 것이 앞에서 구현한 CNN에서 일어나는 일이다.
2. 층 깊이에 따른 추출 정보 변화
딥러닝 시각화 연구에 따르면, 계층이 깊어질수록 추출되는 정보는 더 추상화된다는 것을 알 수 있다.
처음 층은 단순한 에지에 반응하고, 이어서 텍스처에 반응하고, 더 복잡한 사물의 일부에 반응하도록 변화한다. 즉, 층이 깊어지면서 뉴런이 반응하는 대상이 단순한 모양에서 '고급' 정보로 변화해 간다. 다시 말하면 사물의 '의미'를 이해하도록 변화하는 것이다.
3. 대표적인 CNN
LeNet은 손글씨 숫자를 인식하는 네트워크로, 1998년에 제안되었다. 다음 그림과 같이 합성곱 계층과 풀링 계층을 반복하고, 마지막으로 완전연결 계층을 거치면서 결과를 출력한다.
LeNet과 현재의 CNN을 비교하면 몇 가지 면에서 차이가 있다. 첫 번째 차이는 활성화 함수인데 LeNet은 시그모이드 함수를 사용하는 데 반해, 현재는 주로 ReLU를 사용한다. 또, 원래의 LeNet은 서브샘플링을 하여 중간 데이터의 크기를 줄이지만 현재는 최대 풀링이 주류이다.
AlexNet은 2012년에 발표되어 딥러닝 열풍을 일으키는 데 큰 역할을 했다.
AlexNet은 합성곱 계층과 풀링 계층을 거듭하며 마지막으로 완전연결 계층을 거쳐 결과를 출력한다. LeNet에서 큰 구조는 바뀌지 않지만, AlexNet에서는 다음과 같은 변화를 주었다.
결론
'Deep learning > 모델 구현' 카테고리의 다른 글
21. 수치미분 (0) | 2021.09.28 |
---|---|
20. 변수와 함수 (0) | 2021.09.28 |
18. CNN(5) - CNN 구현하기 (0) | 2021.04.25 |
17. CNN(4) - 합성곱/풀링 계층 구현하기 (0) | 2021.04.25 |
16. CNN(3) - 풀링 계층 (0) | 2021.04.25 |