본문 바로가기
인공지능 (AI)

34번째 이야기 - 합성곱, 커널, 입력 이미지, 가중합, 합성곱층

by Ψβ⅓ 2024. 6. 2.

 

 

일단 위 그림에서 합성곱 연산의 식을 보고, 왜 저런 계산이 나왔는지를 이해해보시면 좋습니다.

다음글에서 이어서 마저 살펴보도록 하죠!

 

 

합성곱 연산의 식

 

 

합성곱 필터(커널)는 입력 이미지 위를 이동하면서 입력 이미지 전체를 커버합니다. 이 과정에서 입력 이미지가 여러번 중첩되므로, 수용 범위가 넓어진다는 장점이 있습니다.

어쨌든, 커널이 한번 움직일 때마다 픽셀 단위로 가중합이 계산되어 필터 중심에 해당하는 픽셀의 새로운 값이 결정됩니다. 이런 식으로 특징 맵이 만들어지게 됩니다.

기억합시다. 합성곱층은 합성곱 연산을 통해 이미지 데이터의 특징 학습이 일어나는 곳입니다. 이미지 특징 학습의 결과물이 바로 특징 맵이고, 이 특징 맵을 기반으로 전결합층에서 시험 데이터에 대해 '분류' 작업을 시행합니다.

필터(커널)는 숫자가 담긴 행렬입니다. 신경망에서의 가중치의 역할을 담당함을 잊지 마세요!

 

 

 

 

입력 이미지에 모서리 탐지 커널 적용

 

그런데 말입니다? 합성곱 층에서 합성곱 필터의 개수가 하나가 아닐 수도 있나요?

, 사실 합성곱 층에는 하나 혹은 그 이상의 합성곱 필터가 존재합니다. 사실, 필터의 수만큼 합성 곱 연산으로 생성된 이미지인 특징 맵이 출력되기 때문에 , 합성곱 필터의 수가 많을수록 생성되는 특징 맵의 개수도 많아져, 출력이 깊어집니다.

필터 수가 많아지면 특징 맵이 증가하고, 픽셀 즉, 신경망의 노드가 증가하게 되는 효과를 일으켜 더 복잡한 패턴을 탐지할 수 있게 됩니다. 물론 반대급부로 계산 복잡도가 증가하는 것을 감수하여야 할 겁니다.

다음 글에서는 커널의 사이즈, 그리고 스트라이드와 패딩에 대해서 살펴보며 합성곱층에서 벌어지는 특징의 학습에 대해 마저 살펴보도록 하겠습니다.

 

 

 

 

합성곱층에는 합성곱 필터가 여러개 있습니다. 그 필터의 개수만큼 특징 맵이 생성되기 때문에 이 필터의 개수가 다음 층의 깊이를 결정한다 할 수 있습니다.

합성곱 필터를 활용한 합성곱 연산은 다음과 같이 이뤄집니다.

 

합성곱 연산 1단계

 

합성곱 연산 2단계

 

합성곱 연산 3단계

 

 

케라스로 합성곱층을 구현한다면 다음의 코드로 간단히 정리됩니다.

from keras.layers import Conv2D model.add(Conv2D(filters=16, kernel_size=2, strides='1', padding='same', activation='relu'))

코드를 보면 알 수 있듯이 합성곱층에는 5개의 인자(하이퍼파라미터)가 있습니다.

먼저, filters는 합성곱 필터의 개수를 의미합니다. 말씀드렸듯 출력의 깊이를 좌우합니다.

두 번째로, kernel_size는 합성곱 필터(커널) 행렬의 크기를 의미합니다. 통상적으로 2 × 2, 3 × 3, 5 × 5 이렇게 주로 사용합니다.

세 번째로, strides는 스트라이드이고, 네번째로 padding은 패딩이라고 부릅니다. 잠시 후에 스트라이드와 패딩을 따로 설명을 드리도록 하죠.

다섯번째로 activation은 활성화 함수이며 은닉층에서는 주로 ReLU를 사용한다 일전에 말씀드렸었습니다.

딥러닝에서의 하이퍼파라미터는 신경망의 성능 개선을 위해 사람이 세팅해준 후, 조절해줘야하는 오디오의 볼륨 손잡이와 같은 것이라 말씀드렸었습니다. 이 하이퍼파라미터 값을 경험적으로 잘 설정할 수 있어야 좋은 특징 학습을 할 수 있는 합성곱층을 만들 수 있게 되는 것이죠.

다음 글에서는 이 하이퍼파라미터 값들에 대해 개별적으로 조금 더 자세히 살펴보도록 하겠습니다.

댓글