DL

[DL 기초] 밑바닥부터 시작하는 딥러닝: 합성곱 신경망(CNN)

gomduribo 2023. 5. 20. 19:17

인턴하는 회사에서 진행하는 세미나 8주차의 과제로 사이토 고키의 밑바닥부터 시작하는 딥러닝의 7 - 합성곱 신경망 부분을 정리해 보고자 합니다.

 

 

합성곱 신경망(CNN)

이전까지 책에서 소개했던 신경망은 인접하는 계층의 모든 뉴런들이 서로 연결되어 있었습니다. 이를 Fully-connected layer 혹은 Affine 계층이라고 불렀습니다. 

 

기존 FC layer로 이뤄진 네트워크는 다음과 같은 구조를 가지고 있었습니다. 

 

 

이번장에서 소개할 CNN으로 이뤄진 네트워크는 다음과 같이 Convolution 층과 Pooling 이 추가 됩니다. 또한 마지막 출력단에 가까운 층에서는 FC layer를 사용하는 모습을 흔히 확인할 수 있습니다. 

 

 

모든 뉴런들이 완전히 연결되어 있는 FC layer의 문제점은 데이터의 형상이 무시된다는 것입니다. FC layer에 데이터를 입력하게 된다면 예를 들어 3차원의(세로, 가로, 채널) 데이터도 평평한 1차원으로 평탄화되어 입력됩니다. 이렇게 된다면, 이미지에 담겨있는 픽셀 간의 관계들과 패턴들이 무시될 것입니다.

하지만 CNN은 입력데이터를 평탄화하지 않고 형상을 유지시키기 때문에 데이터를 '제대로' 이해할 가능성이 있습니다. 

 

합성곱 연산

합성곱 계층에서는 합성곱 연산을 진행합니다. 합성곱 연산은 입력데이터에 필터(커널)를 일정 간격으로 이동하면서 적용합니다. 입력데이터와 필터의 서로 대응되는 원소끼리 곱한 후 총합을 구합니다. 

 

 

CNN에서는 필터의 매개변수가 학습가능한 가중치에 해당합니다. 

 

패딩(Padding)

합성곱 연산을 수행하기 전 입력데이터 주변을 특정값으로 채우기도 합니다. 이를 패딩이라고 하는데, 패딩은 출력크기를 조정할 목적으로 사용합니다. 합성곱 연산을 여러 번 반복하는 신경망에서는 합성곱 연산이 진행될 때마다 특징 맵이 작아져 나중에는 합성곱 연산을 진행할 수 없는 상황이 올 것입니다. 따라서 패딩을 적용한다면 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달될 수 있습니다. 

 

 

스트라이드(Stride)

필터가 입력데이터에 적용되는 위치의 간격을 스트라이드라고 합니다. 스트라이드를 키우면 출력을 크기는 작아질 것이고 패딩의 크기가 커지면 출력의 크기가 커질 것입니다. 

 

 

3차원 데이터의 합성곱 연산

RGB 채널을 가지는 컬러 이미지 같은 경우 3개의 채널을 가진 이미지일 것입니다. 그리고 이러한 이미지에 대한 합성곱연산이 진행될 때에는 입력 이미지와 필터의 합성곱 연산이 채널마다 수행되고 그 결과가 더해져서 하나의 출력이 도출됩니다. 여기에서 주의해야 할 점은 입력데이터의 채널 수와 필터의 채널수가 같아야 한다는 것입니다. 

 

 

그렇다면 합성곱 연산의 출력으로 다수의 채널을 내보내려면 어떻게 해야 할까요? 합성곱 계층에 들어오는 입력 데이터와 동일한 채널수를 가진 필터를 여러 묶음(출력으로 원하는 채널수만큼)을 사용하면 됩니다.  그림으로 나타내면 다음과 같을 것입니다. 

 

여기에 편향을 추가한다면 다음과 같을 것입니다.

 

 

앞서 완전연결 신경망에서도 그랬듯 CNN에서 배치처리를 한다면 다음과 같이 진행될 것입니다. 

 

 

풀링 계층(Pooling layer)

풀링은 세로와 가로 방향의 공간을 줄이는 연산입니다. 밑의 사진은 max pooling으로 2x2크기의 영역에서 가장 큰 원소를 꺼냅니다. 이러한 풀링 계층의 특징으로는 학습해야 할 매개변수가 없고, 입출력 데이터의 채널수가 변하지 않으며, 입력의 변화에 영향을 적게 받는다는 특징이 존재합니다. 

 

 

CNN 시각화하기

그렇다면 CNN을 구성하는 합성곱 계층은 입력으로 받은 이미지의 어떤 것을 보고 있는 것일까요? 

다음 그림은 학습 전과 후의 어떤  네트워크의 1층에 위치한 합성곱 계층의 가중치(필터)를 시각화한 것입니다. 

 

 

 

학습 전의 필터는 무작위로 초기화되어 흑백의 정도에 규칙성이 없지만, 학습 후에는 규칙성 있는 모습을 보입니다. 이는 학습가능한 가중치들의 모임인 필터들이 학습되어 에지, 블롭과 같은 영역을 보고 있음을 의미합니다. 이렇게 합성곱 계층의 필터는 에지나 블롭등의 원시적인 정보를 추출할 수 있습니다. 이러한 원시적인 정보가 뒷단 계층에 전달됩니다. 

 

그렇다면 1층이 아닌 다른 층에서는 어떤 정보가 추출될까요? 책에서는 AlexNet에서의 각 합성곱 계층에서 추출되는 정보를 설명하고 있습니다. 

 

 

이렇게 층이 깊어지면서 더 복잡하고 추상화된 정보가 추출됩니다. 3층은 텍스처를, 5층에서는 사물의 일부, 마지막 FC layer에서는 사물의 클래스를 추출한다고 합니다. 이렇게