● 일단 위 그림에서 합성곱 연산의 식을 보고, 왜 저런 계산이 나왔는지를 이해해보시면 좋습니다.
● 다음글에서 이어서 마저 살펴보도록 하죠!
● 합성곱 필터(커널)는 입력 이미지 위를 이동하면서 입력 이미지 전체를 커버합니다. 이 과정에서 입력 이미지가 여러번 중첩되므로, 수용 범위가 넓어진다는 장점이 있습니다.
● 어쨌든, 커널이 한번 움직일 때마다 픽셀 단위로 가중합이 계산되어 필터 중심에 해당하는 픽셀의 새로운 값이 결정됩니다. 이런 식으로 특징 맵이 만들어지게 됩니다.
● 기억합시다. 합성곱층은 합성곱 연산을 통해 이미지 데이터의 특징 학습이 일어나는 곳입니다. 이미지 특징 학습의 결과물이 바로 특징 맵이고, 이 특징 맵을 기반으로 전결합층에서 시험 데이터에 대해 '분류' 작업을 시행합니다.
● 필터(커널)는 숫자가 담긴 행렬입니다. 신경망에서의 가중치의 역할을 담당함을 잊지 마세요!
● 그런데 말입니다? 합성곱 층에서 합성곱 필터의 개수가 하나가 아닐 수도 있나요?
● 네, 사실 합성곱 층에는 하나 혹은 그 이상의 합성곱 필터가 존재합니다. 사실, 필터의 수만큼 합성 곱 연산으로 생성된 이미지인 특징 맵이 출력되기 때문에 , 합성곱 필터의 수가 많을수록 생성되는 특징 맵의 개수도 많아져, 출력이 깊어집니다.
● 필터 수가 많아지면 특징 맵이 증가하고, 픽셀 즉, 신경망의 노드가 증가하게 되는 효과를 일으켜 더 복잡한 패턴을 탐지할 수 있게 됩니다. 물론 반대급부로 계산 복잡도가 증가하는 것을 감수하여야 할 겁니다.
● 다음 글에서는 커널의 사이즈, 그리고 스트라이드와 패딩에 대해서 살펴보며 합성곱층에서 벌어지는 특징의 학습에 대해 마저 살펴보도록 하겠습니다.
● 합성곱층에는 합성곱 필터가 여러개 있습니다. 그 필터의 개수만큼 특징 맵이 생성되기 때문에 이 필터의 개수가 다음 층의 깊이를 결정한다 할 수 있습니다.
● 합성곱 필터를 활용한 합성곱 연산은 다음과 같이 이뤄집니다.
● 케라스로 합성곱층을 구현한다면 다음의 코드로 간단히 정리됩니다.
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를 사용한다 일전에 말씀드렸었습니다.
● 딥러닝에서의 하이퍼파라미터는 신경망의 성능 개선을 위해 사람이 세팅해준 후, 조절해줘야하는 오디오의 볼륨 손잡이와 같은 것이라 말씀드렸었습니다. 이 하이퍼파라미터 값을 경험적으로 잘 설정할 수 있어야 좋은 특징 학습을 할 수 있는 합성곱층을 만들 수 있게 되는 것이죠.
● 다음 글에서는 이 하이퍼파라미터 값들에 대해 개별적으로 조금 더 자세히 살펴보도록 하겠습니다.
'인공지능 (AI)' 카테고리의 다른 글
36번째 이야기 - 케라스, 스트라이드, 패팅, 손실함수, 풀링(pooling) (0) | 2024.06.02 |
---|---|
35번째 이야기 - 커널 사이즈, 스트라이드, 패딩, 합성곱 신경망 (1) | 2024.06.02 |
33번째 이야기 - 합성곱 신경망, CNN, 합성곱층, Convolution layer (0) | 2022.11.21 |
32번째 이야기 - 다중퍼셉트론, MLP, 합성곱 신경망, CNN, 다중퍼셉트론 단점 (0) | 2022.11.21 |
31번째 이야기 - 모의 담금질(Simulated Annealing) 알고리즘, 경사하강법, gradient descent (0) | 2022.11.21 |
댓글