즉, 판별자 네트워크 특징은 다음과 같습니다.
• 풀링층을 모두 없애고, 스트라이드 합성곱을 사용합니다.
• 배치 정규화를 이용하여 네트워크의 층이 많아도 안정적으로 기울기를 계산할 수 있도록 했습니다. 단 생성자 네트워크와 마찬가지로 배치 정규화를 모든 계층마다 추가하면 안정성이 떨어지는 문제가 있으므로 최초 입력층에서는 사용하지 않았습니다.
• 활성화 함수는 리키렐루를 사용하며, 최종 출력층에서는 시그모이드를 사용합니다.
Note ≡ 스트라이드 합성곱과 분수-스트라이드 합성곱
판별자 네트워크에서 사용하는 스트라이드 합성곱은 합성곱에 단순히 스트라이드를 적용한 것이라고 생각하면 됩니다. 이때 스트라이드(stride) 값을 1 이상의 정수로 사용하면 풀링과 마찬가지로 출력 크기를 줄일 수 있습니다. 예를 들어 다음 그림과 같이 스트라이드 합성곱을 이용하여 2×2 크기의 특성 맵을 추출할 수 있습니다.
▲ 그림 13-19 스트라이드 합성곱
생성자 네트워크에서 쓰는 분수-스트라이드 합성곱은 스트라이드 값을 1보다 작은 분수를 사용하여 출력 크기를 키웁니다. 예를 들어 특성 맵의 크기를 키우려면 2×2 크기의 특성 맵(다음 그림의 빨간색 박스 안의 파란색 부분)의 각 원소 사이와 바깥 부분에 모두 패딩(0)을 넣어 준 상태에서 3×3 필터로 합성곱을 수행하면 됩니다.
▲ 그림 13-20 분수-스트라이드 합성곱
그럼 왜 생성자 네트워크에서는 분수-스트라이드 합성곱을 사용하고, 판별자 네트워크에서는 스트라이드 합성곱을 사용할까요? 생성자 네트워크에서는 노이즈를 입력으로 받아 훈련 데이터셋의 이미지와 같은 공간 해상도를 갖는 이미지를 생성해야 하기 때문에 공간을 확장시켜야 하는 분수-스트라이드 합성곱이 필요합니다. 반면 판별자 네트워크는 실제 이미지와 생성자가 생성한 이미지 사이에서 어떤 이미지가 진짜인지 판별해야 하기 때문에 각 이미지의 특성을 추출할 수 있는 합성곱 연산을 수행합니다. 그리고 이때 스트라이드 합성곱을 사용하면 특성을 잘 추출할 수 있습니다.