[도서 리뷰] 텐서플로 2.x와 케라스로 구축하는 생성적 적대 신경망 GAN 인 액션
이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.
얼마 전에 작년의 엔비디아 발표에서 젠슨황의 키노트 발표가 인공지능에 의해 만들어진 영상이라는 뉴스가 화제가 되었었다. 지난 해 키노트를 보면서 만들어진 영상이라는 의심은 전혀 할 수 없을 정도로 젠슨황의 키노트는 거의 완벽에 가까웠다. 닮은 꼴 연예인을 찾는다든지 신생아의 초음파 사진으로 출생했을 때의 이미지를 유추해 낸다든지 인공지능을 통한 이미지 구현을 볼 때마다 GAN을 제대로 익혀보고 싶다는 생각이 들었는데 한빛미디어의 “나는 리뷰어다”를 통해 이 책을 읽어보게 되었다.
일단 GAN 이 무엇인지 알아보자. 위키백과에 의하면 GAN은 다음과 같이 정의하고 있다.
생성적 적대 신경망(生成的敵對神經網, 영어: Generative Adversarial Network; GAN)은 비지도 학습에 사용되는 인공지능 알고리즘으로, 제로섬 게임 틀 안에서 서로 경쟁하는 두 개의 신경 네트워크 시스템에 의해 구현된다. 이 개념은 2014년에 이안 굿펠로우(Ian. j. Goodfellow)에 의해 발표되었다.
선수 지식
기본적인 모델의 학습과 예측 과정을 이해하고 있어야 한다. 책 초반부에도 나와 있지만 파이썬, 머신러닝, 딥러닝에 대한 기초 지식을 필요로 한다. 이에 대한 기초 지식이 없다면 파이썬으로 기본적인 인공신경망 모델을 학습하고 읽는 것을 추천한다. 머신러닝 모델에서 훈련/예측 데이터셋을 나누고 모델을 생성하여 학습, 평가, 과소/과대적합, 하이퍼파라미터 튜닝 등을 이해할 수 있어야 책에 등장하는 딥러닝 용어에 당황하지 않을 수 있다. 기본적인 머신러닝과 딥러닝, 텐서플로에 대한 지식 없이 접근 하면 읽기 어려운 책이다.
텐서플로와 케라스
텐서플로2에서 케라스 API를 사용하는 방법으로 구현이 되어 있다. 그래서 텐서플로의 시퀀셜 레이어로 모델을 만드는 방법을 이해하고 있는 상태에서 다양한 GAN 모델을 응용해 보고자 하는 독자에게 적합한 책이다.
GAN 기본 이해
- MNIST를 통한 기본적인 손글씨 생성
- GAN과 오토인코더를 통한 데이터 생성
- 합성곱 신경망(CNN)과 DCGAN
최신 GAN 모델
- GAN훈련의 어려움과 노하우를 알아보고
- ProGAN, SGAN, CGAN, CycleGAN 을 소개하고 있다.
- 그리고 윤리를 비롯한 향후 전망까지 제시한다.
AI 윤리를 다뤄준 것도 인상적이었다. 실제 사진과 같은 합성 이미지를 만드는 GAN이 악용 될 수도 있기 때문에 구글 AI원칙 등을 소개 하고 있다.
얼마 전의 엔비디아 젠슨황 키노트 사례에서와 같이 실존하는 인물을 정말 실제처럼 만들 수 있기 때문에 기술을 다룰 때 꼭 고려해야할 문제가 아닐까 싶다.
300쪽이 조금 안 되는 분량과 적당한 두께로 GAN의 핵심을 익혀볼 수 있는 책이었다. 그리고 역자분이 코드마다 주석을 워낙 꼼꼼하게 달아주셔서 소스코드도 편하게 읽을 수 있었다.
- 깃허브 저장소 : https://bit.ly/gan-git
- 정오표 블로그 : https://bit.ly/gan-in-action