티스토리 뷰

Hobby/Book

[Book] GAN을 처음 시작하는 사람들을 위한 책

생각많은 소심남 2021. 3. 21. 19:32

(해당 포스트에서 소개하고 있는 "GAN 첫걸음" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 

GAN 첫걸음

손 글씨부터 풀컬러 연예인 얼굴까지 GAN으로 이미지를 생성해보며 안락하게 GAN을 익힐 수 있게 구성했다. 수학 공식은 줄이고 친절한 그림과 문장으로 개념 원리를 알려준다.

www.hanbit.co.kr

참 시간이 빠르다고 느끼는 것이 처음 GAN과 관련된 책을 리뷰했었던 것이 2019년 말이었는데, 이제 3권 정도 리뷰를 했다. 2014년 Ian Goodfellow가 NIPS 2014 tutorial에서 처음 소개한 Generative Adversarial Network(GAN)이란 기술이 다양한 분야에 접목되기도 하고, 이를 활용하려는 사람들이 많아지기에 이렇게 사람들에게 쉽게 기술의 내면을 알려주기 위한 입문 서적도 나온게 아닐까 싶다. 물론 기술 자체를 벗어나, GAN이 만들어내는 출력물은 정말로 신경망이 창작을 하면 이런 결과물이 나오는 걸까 하는 신기함이 생긴다. 

사실 지금처럼 이런 입문 책이 나오기 전까지는 GAN의 내면적인 이론이나, 구현에 대해서 자세한 설명이 담긴 책이 없었다. 앞에서 리뷰한 책들 정도가 그나마 선도적으로 GAN의 다양한 형태나 기술에 대해서 소개하고 번역된 책이었지, 대부분은 학회에 출판된 논문을 리뷰하거나, 유투브에 올라온 설명을 듣고 이해하는 수준에만 그쳤었다. 그래도 이렇게 분량이 짧으면서도 GAN의 핵심에 대해서 알기 쉽게 소개한 책이 나왔기에 여기에 궁금함을 가지고 찾는 사람들에게는 좋은 입문서가 되지 않을까 생각한다.

그림 1. GAN 첫걸음

이 책은 한빛미디어에서 출간하는 첫걸음 시리즈 중 GAN에 특화된 내용을 담고 있고, 사실 책 시리즈를 이미 알고 있는 사람들이라면 알겠지만, 전반적으로 책의 크기나 양이 그렇게 크지 않다. 그래서 처음에는 GAN에 담긴 수학적인 이론이나 기법이 이 얇은 책안에 다 담길 수 있을까 하는 생각이 조금 들긴 했었다.

딱 결론부터 이야기하자면, 이 책에는 수학 공식이나 복잡한 증명이 거의 없다.(그나마 있는 내용은 부록에 포함된 loss 계산에만 나올뿐 내용 중에는 공식이 전혀 없다.) 물론 실제 논문에서 증명시 사용된 KL Divergence나 Jansen-Shannon Divergence, Conditional Probability 같은 개념은 단순한 표현 정도로만 넘어가 있기 때문에, 뭔가 이 책을 바탕으로 새로운 GAN 기법을 공부해보겠다 하는 사람한테는 책의 목적과 맞지 않을 수 있다. 서두에도 나와있는 내용이지만 저자의 의도는 "다양한 배경에 속한 독자에게 최대한 많이 다가가고자 했으며, 독자가 GAN을 이해하고 직접 만들어보며 흥미를 느끼도록 집필했습니다" 였다. 그만큼이나 책의 전개 내용은 코드를 하나씩 실행해보면서 결과를 보면서 원리를 이해하는 방향으로 진행된다. 아마 예시들이 대부분 Jupyter notebook로 제공되는 부분도 그런 의도가 있지 않았을까 하는 생각을 해본다.

조금 더 책의 내용에 대해서 기술해보자면, 전체적인 구현은 PyTorch로 진행되고, 처음에는 PyTorch와 Google Colab, 그리고 GPU 활용법에 대한 설명을 한 이후에 MNIST를 GAN에 적용한 케이스를 소개한 후, 마지막으로 간단한 GAN인 Convolutional GAN과 Conditional GAN에 CelebA dataset를 적용시켜서 실제 결과물을 확인하는 구성으로 되어 있다. 사실 개인적으로 아쉬운 부분은 책은 전체가 300여 페이지 정도 되는데, PyTorch 기본에 대한 설명이 약 1/3 정도 할애되어 있는 부분이었다. 사람마다 어떤 기본이 되어 있을지 모르기에 프레임워크에 대한 설명이 들어가 있었겠지만, 오히려 이 부분으로 인해서 GAN의 핵심적인 내용이 조금 덜 소개되지 않았을까 싶다. 개인적으로는 이런 기술을 계속 접하고, 활용하는 입장에서 첫걸음 책보다는 마지막 걸음(?) 같은 책이 있으면 좋겠는데.... 여튼 개인적인 의견이었고, 코드를 통해서 실제로 실행시켜고 원리를 이해하려는 사람에게는 그 목적에 맞는 책일 것이다.

참고로 저자가 운영하는 강의 사이트도 있는데, 관심있는 사람이라면 한번 참고해도 좋을 것 같다.

 

Make Your First GAN Using PyTorch - Learn Interactively

This course is an introduction to Generative Adversarial Networks (GANs) and a practical step-by-step tutorial on making your own with PyTorch. Through this course, you will learn how to build GANs with industry-standard tools. In the first section, you wi

www.educative.io

 

댓글