[리뷰] GAN 인 액션



한빛미디어 출판사의 "GAN 인 액션(야쿠프 란그르, 블라디미르 보크 저/박해선 역)"를 읽고 작성한 리뷰입니다.

표지


GAN(Generative Adversarial Network)은 비지도 학습에 사용되는 인공지능 알고리즘으로, 제로섬 게임 틀 안에서 서로 경쟁하는 두 개의 신경 네트워크 시스템에 의해 구현된다.

두 개의 네트워크는 각각 생성자, 판별자로 불리는데 생성자는 새로운 데이터를 생성하는 네트워크이고 판별자는 가짜 데이터를 실제 데이터와 구별하는 네트워크이다.

생성자와 판별자는 서로 이기려는 경쟁을 지속한다. 마치 위조범이 더욱 그럴듯한 위작을 만들면 판별자가 위조품을 잡아내는 식의 경쟁이다.

GAN

본 도서는 워낙 유명한 In Action 시리즈 중 하나로 시리즈의 다른 책들과는 다르게 책의 분량이 슬림하다는 것이 신기했다. 책을 다 읽고 나중에 알게 된 사실이지만 예제의 일부를 텐서플로 허브(TFH)를 활용하기 때문이다.

아무래도 방대한 이론 설명, 수식의 전개, 복잡한 코드 구현으로 부터 벗어나 보다 중요한 핵심과 전체의 맥락에 집중할 수 있도록 저자의 의도가 이끈 구성이 아닌가 싶다.

그래서인지 곳곳에 다소 썰렁한(?) 개발자들의 농담이 숨어있다. 저자도 서문에서 일부러 이런 컨셉을 잡고 있음을 밝혔는데 취향이 비슷한 나로써는 요소요소 흥미롭게 읽을 수 있는 장치였다. 예를 들면 아래 그림처럼 말이다.

썰렁

이런 구성 측면 외에도 책이 마음에 들었던 점 한가지는 다양한 GAN의 모델을 소개하고 있다는 점이다. 책에서 다루고 있는 GAN과 관련된 모델만 해도 AE, VAE, GAN, DCGAN, MMGAN, NSGAN, WGAN, WGAN-GP, ProGAN, SGAN, CGAN, CycleGAN, RGAN, SAGAN, BigGAN에 이른다.

물론 하나하나의 모델을 이론적으로 자세히 알아보고 심층있게 구현하는 파트는 별로 없다. 필요한 모델의 레퍼런스는 이미 인터넷과 논문 등 널려있기 때문에, 인 액션 시리즈의 취지대로 전체 흐름을 파악하고 활용하는 스스로의 메타지식을 갖추는데 주안점을 두고 있는 듯 하다.

위에서 언급한 GAN의 여러 기법들을 모두 정리하고 싶으나 그러기엔 리뷰 분량에 걸맞지 않은 것 같아 책을 읽으며 인상깊었던 점을 중심으로 간략하게 정리해보려 한다.

GAN은 수학적으로 쉽지 않은 모델이기에 입문자들이 바로 이해하기 어렵다. 때문에 다른 GAN 서적들과 비슷하게 먼저 오토인코더 및 변이형 오토인코더를 설명하여 생성 모델을 이해하는데 초점을 맞춘 후 출발한다.

AE, VAE, GAN의 모델의 차이점을 명확하게 설명하고 있으며 아래 나오는 그림으로 명확하게 정리할 수 있다.

GAN과 AE차이

AE가 GAN이 탄생하는데 좋은 아이디어가 되었지만 그럼에도 GAN이 필연적으로 활용될 수 밖에 없는 이유에 대한 설명도 다루고 있다.

아래 그림과 같이 VAE 모델은 최대 가능도 추정을 적용해 분포의 모드가 하나라고 추정하기에 잘못된 결론이 이르게된다. 즉, 서로 다른 두 분포가 있다는 점을 알지 못하기에 점 추정 근처에 꼬리가 두꺼운 정규분포를 형성한다. 최대가능도추정

개인적으로 이 현상을 예전에 겪었을 때 잘못된 결과에 대한 원인을 쉽게 알지 못했다. 주위 지인에게 물어 꼬리가 두꺼운 정규분포의 결과로 원인을 추정하고 대충 알고 넘긴 부분인데 책 전반에 걸쳐 이런 통계학과 딥러닝의 경계에 필요한 지식들이 두루 소개되고 있어 인상깊었고 많은 도움이 되었다.

이어서 GAN 기본 모델으로 MNIST 손글씨를 흉내내는 예제를 실습하게 된다. 이를 통해 생성자 G와 판별자 D 각각의 비용함수 J를 정의하고 포드 피워드 신경망으로 훈련값을 갱신하는 절차를 상세히 알 수 있다.

결론적으로 생성자는 판별자의 거짓 양성을 최대화하고, 판별자는 거짓 양성과 거짓 음성 분류를 최소화하는데 목적을 두고 있음을 파악할 수 있다.

다음으로 GAN의 기본 모델에 CNN 모델을 결합한 DCGAN으로 MNIST 이미지를 생성하는 실습을하게 되는데 기본 모델에 비해 화질 등의 성능이 얼마나 개선되는지 뚜렷하게 확인할 수 있다. 이 과정에서 배치 정규화에 대해 심도있게 학습할 수 있다.

5장은 GAN의 핵심을 잘 전달하고 있는 장으로 개인적으로 가장 마음에 드는 파트이다. MMGAN, 비포화GAN(NSGAN), 와서스테인(EM) 거리를 종료 기준으로 활용한 WGAN 등의 비교를 통해 최근에 발전한 GAN의 핵심을 간략하고 쉽게 설명하고 있다.(물론 딥러닝 세계의 속도가 너무 빨라 이젠 최근에 등장한 기술이라 말하기 어려운 고전이 되어버린 것 같은 느낌이다.)

GAN핵심

6장에서는 고해상도 층의 점진적 향상을 통해 Full HD 화질의 사진을 생성할 수 있는 ProGAN을 학습한다. 이 파트에는 앞서 언급했던 텐서플로 허브를 활용하게 되는데 다른 책에선 아직 보지 못했던 방법인지라 이번 장을 통해 유용함을 체감할 수 있어 좋았다.

TFH

구글의 AutoML, 아마존의 세이지메이커 등에서도 보이는 트렌드이기에 익혀두면 좋은 기술이며 나아가 복잡한 코드 구현으로 숲을 잃고 헤매이지 않도록 보다 연구의 중요 아이디어에 집중할 수 있는 장점이 있다.

이어서 적은 레이블로도 높은 분류 정확도를 달성할 수 있는 SGAN, 훈련 중 레이블 부가정보를 활용하여 이미지 변환의 토대를 제공한 CGAN, 마지막으로 사과를 오렌지로 만드는 마법같은 CycleGAN을 실습한다.

실습과정은 이것으로 마치고 파트3에서 앞으로 배울 것들에 대한 소개가 이어진다. 딥러닝 왕초보 시절 학습 데이터에 불순한 의도를 입력해도 원하는대로 동작하는 모델이 생성될 수 있을까 궁금했었는데 역시나 GAN 모델의 해킹이라 할 수 있는 적대 샘플에 대해 다뤄본다.

GAN이 실제 활용되는 의료, 패션 분야의 비즈니스 모델 및 전망에 대해서도 살펴보고 마지막으로 위에서 구현한 모델보다 한단계 발전한 RGAN, SAGAN, BigGAN을 소개한다.

GAN은 과학보다는 예술에 가깝다는 명언을 끝으로 본 도서의 대단원도 막을 내린다.

앞서 언급했듯 전반적인 GAN의 발전사를 알맹이만 쏙쏙 빼먹는 느낌이 든다. 공부할 것이 많은 딥러닝의 세계에 TFH를 활용한 전달 방식도 마음에 들었다. GAN의 연구 및 실무자로 입문하는 분들께는 짧은 시간 대비 효율적인 학습 효과를 얻을 수 있을거란 생각이 들기에 누구보다 GAN 입문자에게 이 책을 추천하고 싶다.






© 2019.04. by theorydb

Powered by theorydb