4.2.3 합성곱과 풀링의 반복
첫 번째 maxPooling2d 층을 조사했으므로 이제 코드 4-1에 정의된 합성곱 신경망의 다음 두 층에 초점을 맞춰 보겠습니다.
model.add(tf.layers.conv2d( {kernelSize: 3, filters: 32, activation: 'relu'})); model.add(tf.layers.maxPooling2d({poolSize: 2, strides: 2}));
이 두 층은 앞의 두 층을 똑같이 반복한 것입니다(conv2d 층의 filters 설정이 더 크고 inputShape 매개변수가 없는 것만 다릅니다). 합성곱 층과 풀링 층으로 구성된 이런 반복 구조는 합성곱 신경망에서 자주 등장합니다. 이 구조는 계층적으로 특성을 추출하는 중요한 역할을 수행합니다. 이 말의 의미를 이해할 수 있도록 이미지에 있는 동물을 분류하는 작업을 위해 훈련한 합성곱 신경망을 생각해 보죠. 합성곱 신경망의 시작 부분에서는 합성곱 층의 필터(즉, 채널)가 직선, 곡선, 모서리 같은 저수준의 기하학적 특성을 인코딩할 수 있습니다. 이런 저수준 특성이 고양이 눈, 코, 귀 같은 복잡한 특성으로 변환됩니다(그림 4-6 참조). 합성곱 신경망의 마지막에 있는 층은 이미지에 고양이가 있는지 인코딩할 수 있습니다. 층을 많이 쌓을수록 표현이 더 추상적이 되고 특성에서 픽셀 수준의 값이 제거됩니다. 하지만 이런 추상적인 특성이 합성곱 신경망의 작업에서 높은 정확도를 달성하는 데 필요한 것입니다. 예를 들어 이미지에 있는 고양이를 감지하는 일입니다. 또한, 이런 특성을 수동으로 만들지 않고 지도 학습을 통해 자동으로 데이터에서 추출합니다. 이것이 1장에서 딥러닝의 핵심으로 설명했던 층별 표현 변환의 전형적인 예입니다.