코드는 함수형태로 되어 있어 개념이해를 먼저 하시는게 여러모로 좋은 듯 합니다.
코드는 케라스를 활용하면 아래 내용으로 인자값 설정만 해주면 됩니다.
from keras.layers import Conv2D model.add(Conv2D(filters=16, kernel_size=2, strides='1', padding='same', activation='relu'))
● 스트라이드와 패딩의 목적을 정리해봅시다. 하나는 이미지의 중요 디테일을 놓치지 않고 다음 층으로 전달하기 위함입니다(스트라이드가 1이고, 패딩을 사용하면 이미지 크기를 같게 유지할 수 있음).
● 두 번째는 이미지의 공간적 정보 계산의 부하를 적절한 수준으로 감소시키기 위함입니다. 제로 패딩을 통해 출력의 크기를 유지하면서도 값을 0으로 내어 적절히 무시할 수 있게 합니다.
● 합성곱에서 중요하게 세팅해주어야 하는 하이퍼파라미터 5개를 살펴보았습니다. 합성곱층의 수가 늘어나면 신경망이 학습해야 하는 파라미터의 수가 기하급수적으로 늘어나게 됩니다. 즉, 계산 복잡도가 증가하고, 학습 시간도 늘어나게 됩니다.
● 기억합시다. 손실함수의 값을 줄이고, 정확도를 증가시키는 것이 신경망 학습의 목표입니다. 그러나 계산 복잡도에 따른 학습 시간은 Trade-Off의 관계입니다. 즉, 신경망 학습의 목표 만큼이나 계산 복잡도를 줄여 학습 시간을 줄이는 것은 매우 중요합니다.
● 그렇다면 파라미터의 개수를 줄여 계산 복잡도를 줄여주어야 한다는 말인데(...) 방법이 없을까요?
● 네, 이제 합성곱층 바로 다음 단계인 풀링(Pooling)에 대해 살펴볼 차례가 되었군요. 다음 글에서 풀링(Pooling)층이 왜 존재하며, 여기에서 어떤 일이 벌어지는지 살펴보도록 하겠습니다.
● 미리 위 그림의 의미를 잘 살펴보면 다음 글이 도움이 됩니다.
● 입력층에서 28×28×1의 이미지가 합성곱층에서는 28×28×10의 차원으로 깊이가 깊어집니다(1에서 10으로 두꺼워짐).
● 이렇게 증가한 파라미터로 인한 계산복잡도를 줄여주기 위해 풀링층이 있습니다.
● 풀링층에서는 28×28×10 사이즈의 특성맵이 14×14×10으로 변합니다. 깊이는 그대로 인데 이미지 가로, 세로의 사이즈가 줄었네요. 아하?! 여기에 풀링층의 핵심이 있습니다.
<합성곱 신경망에서의 이미지 압축 프로그램! 풀링층을 살펴봅시다>
● 위 그림의 예에서는 합성곱 신경망에서 합성곱 층을 통과하면 입력층의 28×28×1 이미지가 28×28×10의 특징맵으로 바뀝니다. 즉, 깊이가 깊어지게 되어(마치 부피가 증가하는 것처럼) 최적화해야 할 파라미터의 수가 급격히 늘어나게 된다고 말씀드렸습니다.
● 파라미터의 수가 증가하면 학습 시간이 오래 걸립니다. 바쁘다 바빠 현대사회에서 이런 단점은 치명적입니다. 이를 극복하게 해주는 것이 바로 이번 글에서 설명드릴 풀링층입니다.
● 풀링(Pooling) 또는 서브샘플링(Subsampling)이라 불리는 이 층은 신경망의 가로와 세로의 크기를 줄여 다음 층으로 전달하는 파라미터의 수를 감소시켜줍니다.
● 즉, 풀링층의 목적은 다시 한번 말씀 드리지만 합성곱에서 만든 특징 맵(28×28×10)을 다운 샘플링(14×14×10)해서 파라미터의 수를 줄여 계산 복잡도를 낮춰주는 데 있습니다.
● 보통 CNN에서는 합성곱층 사이에 풀링층을 끼우는 형태를 취합니다.
● 그렇다면 풀링층에서는 어떻게 입력과 출력의 사이즈(28×28×10)를 14×14×10으로 줄일 수 있는 것일까요? 그것이 궁금합니다.
● 합성곱층에서는 합성곱 연산이 이루어지듯, 풀링층에서도 풀링 연산이 행해집니다. 풀링 연산에는 최대 풀링과 평균 풀링이 있습니다. 먼저 가장 흔히 쓰이는 최대 풀링을 다음 글에서 살펴보죠.
'인공지능 (AI)' 카테고리의 다른 글
38번째 이야기 - 풀링층, 이미지 압축 작용, 최대 풀링, 커널 윈도우 (1) | 2024.06.02 |
---|---|
37번째 이야기 - 풀링, 풀링 연산, 최대 풀링, 평균 풀링 (0) | 2024.06.02 |
35번째 이야기 - 커널 사이즈, 스트라이드, 패딩, 합성곱 신경망 (1) | 2024.06.02 |
34번째 이야기 - 합성곱, 커널, 입력 이미지, 가중합, 합성곱층 (0) | 2024.06.02 |
33번째 이야기 - 합성곱 신경망, CNN, 합성곱층, Convolution layer (0) | 2022.11.21 |
댓글