더북(TheBook)

discriminator.add(LeakyReLU(0.2))

첫 번째 층의 활성화 함수는 LeakyReLU를 사용하겠습니다. LeakyReLU 함수 모양을 보면 음수의 값은 특정한 기울기를 보입니다. 여기에서는 그 기울기 값을 (0.2)로 설정합니다.

discriminator.add(Dense(units=256))

이 신경망의 두 번째 층은 256개의 노드(units=256)로 구성되어 있습니다.

discriminator.add(LeakyReLU(0.2))

두 번째 층의 활성화 함수는 LeakyReLU를 사용하겠습니다. LeakyReLU 함수 모양을 보면 음수의 값은 특정한 기울기를 보입니다. 여기에서는 그 기울기 값을 (0.2)로 설정합니다.

discriminator.add(Dense(units=1, activation='sigmoid'))

최종 출력되는 값은 1개(units=1)입니다. 판별자가 하는 것은 데이터의 진위 여부를 판단하는 것입니다. 데이터가, 생성자가 만든 것인지 진짜 손글씨인지 구분합니다. 따라서 진짜면 1을, 가짜면 0이라는 숫자를 보여줍니다. 이때 활성화 함수는 시그모이드(activation='sigmoid')입니다.

discriminator.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.0002, beta_1=0.5))

오차 값(loss)은 이항 교차 엔트로피(binary_crossentropy)를 사용합니다. 진짜인지 가짜인지 같이 두 개 중 하나로 구분하는 신경망이기 때문입니다. GAN을 만들려면 이전보다는 조금 더 정교하게 옵티마이저를 사용해야 합니다. 따라서 옵티마이저는 Adam으로, 학습 속도(학습률)를 0.0002로, 베타 최적화 값을 0.5로 설정하였습니다.

TIP

이항 교차 엔트로피에 대한 설명은 6.2절을 참고하세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.