메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

GAN 첫걸음

파이토치 신경망 입문부터 연예인 얼굴 생성까지

한빛미디어

번역서

절판

  • 저자 : 타리크 라시드
  • 번역 : 고락윤
  • 출간 : 2021-03-10
  • 페이지 : 280 쪽
  • ISBN : 9791162243954
  • 물류코드 :10395
  • 초급 초중급 중급 중고급 고급
4.5점 (28명)
좋아요 : 3

인류에겐 이런 GAN 입문서가 필요했다 

 

『신경망 첫걸음』으로 전 세계 수포자들에게 희망을 준 타리크 라시드가 쓴 파이토치 GAN 입문서. 원리만 알면 머신러닝 분야의 최신 기술 GAN 역시 어렵지 않다. 쉽게 가르쳐주는 사람이 없었던 것뿐이다. 손 글씨부터 풀컬러 연예인 얼굴까지 GAN으로 이미지를 생성해보며 안락하게 GAN을 익힐 수 있게 구성했다. 수학 공식은 줄이고 친절한 그림과 문장으로 개념 원리를 알려준다. 

 

 

출판사 리뷰

 

멋진 아이디어는 누구나 쉽게 배울 수 있어야 한다 

세계에서 가장 안락한 GAN 입문서 

2014년 등장한 GAN은 빠르게 발전하는 머신러닝 분야에서 특히 폭발적인 관심을 모았습니다. 인간이 보기에 그럴듯한 새로운 결과를 기계가 알아서 생성한다는 건 혁신이었습니다. 신경망 분야의 세계적인 석학인 얀 르쿤은 GAN을 “최근 10년 동안 머신러닝 분야에서 나온 제일 멋진 아이디어”라고 평하기도 했습니다. 

GAN에 대한 연구는 현재도 활발히 진행 중이지만, 신경망과 마찬가지로 원리만 알면 GAN 역시 어렵지 않습니다. 쉽게 가르쳐주는 사람이 없었던 것뿐입니다. 『신경망 첫걸음』으로 전 세계 수포자들에게 희망을 준 타리크 라시드가 이번에는 GAN 입문서를 썼습니다. 멋진 아이디어는 간결하고 쉬운 설명으로 많은 사람에게 알려질 때 더욱 빛난다는 저자의 신념이 책 곳곳에서 고스란히 전해집니다. 

『신경망 첫걸음』과 마찬가지로 수학 공식은 줄이고 친절한 그림과 문장으로 개념 원리를 알려줍니다. 기존 신경망에 비해 구현이 까다로울 수 있지만, 파이토치와 구글 코랩을 사용해 구현 시 어려움을 겪지 않게 배려했습니다. 1부에서 파이토치와 신경망 기초를 배우고, 2부에서 MNIST 손 글씨부터 풀컬러 연예인 얼굴까지 GAN으로 생성하며, 3부에서는 합성곱 GAN과 조건부 GAN 등 더 고급 기법을 살펴봅니다. 그림으로 합성곱을 설명하는 챕터 하나만 봐도, 이 책이 세상 어떤 딥러닝 자료보다 친절하다는 사실을 알 수 있습니다. 

 

 

추천사

 

제가 읽은 머신러닝, 파이토치, GAN 분야 도서 중에서 최고의 책이었습니다. 설명 순서를 극도로 잘 구성해서 복잡한 아이디어도 이해하기 무척 쉬웠습니다. 세상 모든 교재를 이렇게 쓰면 참 좋겠습니다.

- 토머스 롤리 (아마존 독자)

 

GAN을 설명하는 블로그, 논문, 교과서, 동영상은 많지만, 학교 수학만 아는 사람도 이해할 수 있게 설명하는 건 이 책뿐입니다. 저자의 전작 『신경망 첫걸음』을 읽어봤다면 왜 그 책이 아마존 베스트셀러 1위인지 잘 알 겁니다. 저자는 어떤 걸 가르치고 어떤 건 다루지 않을지 숙고하여 가능한 한 많은 사람이 좌절하지 않고 가이드를 따라올 수 있게 했습니다.

- 제임스 (굿리즈 독자)

 

상세_700_tyle-vaj-vertical.jpg

타리크 라시드 저자

타리크 라시드

20년 경력의 베테랑 개발자. 어려서부터 과학, 수학, 컴퓨팅에서 오는 아름다움을 사랑했다. 많은 멋진 아이디어가 너무 어렵게 가르쳐진다고 생각해, 아름다운 아이디어를 간명하게 바꿔 누구나 이해하고 접근할 수 있게 하는 일을 사명으로 삼게 되었다.

물리학 학사와 머신러닝 및 데이터 마이닝 석사 학위가 있다. 런던 파이썬 미트업 그룹을 이끌고 있으며, 강연이나 워크숍을 즐긴다. 본업은 주로 기술 및 디지털 전략 수립으로, 디자인 싱킹을 활용하려 노력한다. 오픈소스를 무척 좋아하고 영국 정부의 오픈소스 혁신 사업을 이끌기도 했다.

 

 

고락윤 역자

고락윤

소프트웨어 엔지니어로 시작해 데이터 분석 모델링 업무를 거쳐 현재는 구글에서 모바일 앱 관련 컨설턴트로 근무 중이다. 서울대학교 경영학과를 졸업했으며, 캐글 메달을 다수 보유하고 있다. 『누구나 쉽게 스칼라+플레이』(한빛미디어, 2016)를 집필했고, 『브라이틱스와 함께하는 데이터 분석』(하우, 2020)을 공저했다.

 

[PART 1 파이토치와 신경망 기초] 

  

CHAPTER 1 파이토치 기본

구글 코랩

파이토치 텐서

파이토치를 이용한 자동 기울기 계산

계산 그래프

핵심 정리

 

CHAPTER 2 파이토치로 만드는 첫 번째 신경망

MNIST 이미지 데이터셋

MNIST 데이터 얻기

데이터 살펴보기

간단한 신경망

훈련 시각화하기

MNIST 데이터셋 클래스

분류기 훈련시키기

신경망에 쿼리하기

분류기의 성능

 

CHAPTER 3 성능 향상 기법

손실함수

활성화 함수

옵티마이저

정규화

복합적 성능 향상 기법

핵심 정리

 

CHAPTER 4 CUDA 기초

넘파이 대 파이썬

엔비디아 CUDA

CUDA를 파이썬에서 사용하기

핵심 정리

 

 

[PART 2 튼튼한 GAN 만들기]

  

CHAPTER 5 GAN 개념

이미지 생성하기

적대적 훈련

GAN 훈련

훈련하기 어려운 GAN

핵심 정리

 

CHAPTER 6 단순한 1010 패턴

실제 데이터 소스

판별기 만들기

판별기 테스트하기

생성기 만들기

생성기 결과 확인하기

GAN 훈련하기

핵심 정리

 

CHAPTER 7 손으로 쓴 숫자 훈련

데이터셋 클래스

MNIST 판별기

판별기 테스트하기

MNIST 생성기

생성기 결과 확인하기

GAN 훈련하기

모드 붕괴

GAN 훈련 성능 향상하기

시드로 실험하기

핵심 정리

 

CHAPTER 8 얼굴 이미지

컬러 이미지

CelebA 데이터셋

계층적 데이터 형식

데이터 가져오기

데이터 살펴보기

데이터셋 클래스

판별기

판별기 테스트하기

GPU 가속

생성기

생성기 결과 확인하기

GAN 훈련하기

핵심 정리

 

 

[PART 3 흥미로운 GAN 기법]

  

CHAPTER 9 합성곱 GAN

메모리 소비

지역화된 이미지 특성

합성곱 필터

커널 가중치 학습하기

특성의 계층구조

MNIST CNN

CelebA CNN

각자 실험해보기

핵심 정리

 

CHAPTER 10 조건부 GAN

조건부 GAN 구조

판별기

생성기

훈련 반복문

차트 그리기

조건부 GAN 결과 확인하기

핵심 정리

 

CHAPTER 11 결론

참 잘했어요!

앞으로 할 일

GAN을 사용하는 데 대한 책임

머신러닝은 정말 멋집니다!

 

 

[APPENDIX 부록]

APPENDIX A 이상적인 손실값

APPENDIX B GAN의 우도 학습

APPENDIX C 합성곱 예제

APPENDIX D 불안정한 학습

APPENDIX E 감사의 말 등

딥러닝을 배우지 마라 대신 딥러닝을 이용해서 서비스를 만드는 방법을 배워라 라는 말을 본적이 있다. 다른 딥러닝 책은 어려운 수학 공식이나 이론부터 설명하는데 비해 이 책은 직접 따라하면서 익힐 수 있다는 점에서 좋았다.

특히나 파이토치로 직접 텐서의 개념을 설명한 부분이 좋았다. 

내용을 따라하는 동안 특별히 어려운 점은 없었고 내용에서도 막히는 부분은 없었다.

 

타리크 라시드 씨가 <신경망 첫걸음>에 이어 을 내놓았습니다.

<신경망 첫걸음>이 제게 참 유익했기에 이번 책도 평소 관심사와 엮여서 무척 기대했습니다. 팀 업무에 쓸 머신러닝 학습 데이터가 부족해서 만들어 볼까 생각해 왔던 중이었기 때문입니다.

내용은 정말 알찹니다. 저자가 입문자인 독자를 배려하여 Google Colab을 써서 실습하도록 했기에 장소에 구애 받지 않고 공부하기에도 딱 좋습니다.

그러나 읽고 나서 첫번째로 들었던 생각은 독자 대상이 좀 애매하지 않은가 하는 의문이었습니다. 이 책은 <신경망 첫걸음> 다음으로 나오기는 했지만 후속작은 아닌 모양입니다. <신경망 첫걸음>을 실습까지 마친 독자에게는 초반이 다소 심심할 수 있습니다. 반대로 읽지 않았던 독자는 전작을 신경 쓸 필요 없이 설치와 설정을 거의 신경 쓰지 않아도 되는 Colab 환경에서 맘편히 GAN 공부를 시작할 수 있습니다.

두번째로 든 생각은 너무 짧다는 아쉬움이었습니다. GAN하면 먼저 떠오르는 사람 얼굴 합성을 좀 다루다 끝나는 느낌을 받았습니다. 사진을 명화 스타일로 변환하기도 기대했는데 말입니다. 저자는 머리말에서부터 GAN의 모든 것을 다루지 않는다고 선언했으니 원망할 도리는 없습니다. 이 책이 잘 팔려서 GAN 두걸음 같은 후편이 나와줘도 좋겠습니다. 홀로서기를 달성한 개발자라면 이 책만으로도 충분하긴 할 겁니다. 좀 더 곱씹어 보고 실습하며 체득하렵니다. 그게 정석이겠습니다.

KakaoTalk_20210322_151022182.jpg

저는 어렸을때부터 인공지능에 대해 관심이 많았지만 정작 직접적으로 접하는것은 이 책을 리뷰하면서 처음 접해보았습니다.

제가 이 책을 선택한 이유는 이 책이 인공지능에 대해 제작하는 책은 아니지만 현재 정보화시대에 인공지능이 가져야할 기능들에 대해 나와있어 인공지능 프로그래밍을 기본적으로 학습한 사람이라도 알아야 하는 필수 도서라고 생각해서 이 책을 선택하였습니다.

 

이 책의 특성은 현재같은 정보화시대에서 인공지능이 가져야하는 필수 판단 기능들을 알려주고 실습할수 있게 해주는 점입니다. 또한 인공지능을 활용한 얼굴 이미지 생성 같은 다른 분야에 적용할 수 있는 방법을 알려줍니다.

 

 

요즘 대기업에서는 A.I 및 IoT를 위해 머신러닝에 대해 개발을 추진하는 추세입니다딥러닝이란 기술은 인간의 뇌구조를 묘사한 뉴럴 네트웍에 기반한 기술이고 굉장히 다양한 일들을 하고 있는데 예전에는 단순히 로봇에 학습을 시켜서 사람을 따라하게 만들었지만 이제는 로봇뿐만 아니라 스피커청소기등등이 자신들이 가지고 있는 학습 데이터에 기반해서 판단을 내리고 행동하는 초연결시대로 나아가기 위한 기술이기 때문입니다그래서 구글삼성같은 IT관련 대기업들은 이미 머신러닝에 관련돈 기술자들을 교육해서 키워내는등 첫번째 선두로 등장하기 위해 엄청난 경쟁을 벌이고 있을 정도로 21세기의 핵심 기술중 하나입니다. 또한 정보화시대에 자신의 중요정보를 보호하기 위한 기술에서 인공지능을 활용하는 사례까 점차 늘어나고 있는 추세이며 이 또한 21세기의 핵심 기술중 하나입니다.

 

구성

Chapter 1: 파이토치 기본

Chapter 2: 파이토치로 만드는 첫 번째 신경망

Chapter 3: 성능 향상 기법

Chapter 4: CUDA 기초

Chapter 5: GAN 개념

Chapter 6: 단순한 1010 패턴

Chapter 7: 손으로 쓴 숫자 훈련

Chapter 8: 얼굴 이미지

Chapter 9: 합성 GAN

Chapter 10: 조건부 GAN

Chapter 11: 결론

APPENDIX A: 이상적인 손실값

APPENDIX B: GAN의 우도 학습

APPENDIX C: 합성곱 예제

APPENDIX D: 불안정한 학습

APPENDIX E: 감사의 말 등

 

파트별로 나누어 봤을때 책에서 나와있는 것처럼 1~4장은 파이토치와 CUDA기본 및 함수에 대해 설명하고 있고 5~ 8장은 GAN 훈련법 및 학습법에 대해 9~11장은 GAN의 조건판별 및 합성곱에 대해 설명하고 있습니다. 마지막으로 부록이 있는데 여기는 모든 과정을 정독하신후에 학습하시는 약간 심화과정이라고 생각하시면 될것 같습니다.

 

개인적인 생각으로 학습은 인공지능, 머신러닝, 딥러닝을 1부터 시작해야하는 초보자이신 분들께서는 일단은 인공지능에 대해 기본적인 지식을 학습하신 후에 1장부터 시작하시면 좋을것 같고 어느정도 경험이 있으신 분들(인공지능, 머신러닝, 딥러닝에 대해 기초적인 지식은 숙지하고 있다.)은 일단 파이토치와 CUDA의 개념을 한번 보시고 5장부터, 그리고 현재 지식이 어느정도 풍부하시거나 현직에서 인공지능에 대해 프로그래밍 해보셨거나 머신러닝, 딥러닝을 다뤄보신 분들도 파이토치와 CUDA의 개념을 한번 보시고 5장부터 학습하시는 것이 좋을것 같습니다.

그리고 초보자분들은 이 책을 학습하시기전에 인공지능, 머신러닝, 딥러닝에 관한 책들을 필수적으로 한번쯤 읽어보신후에 학습하시는 것을 강하게 추천드립니다. 기초적인 지식없이 시작하시면 이해하시는데 어려움이 많을것 같습니다. 그러니 개념과 프로그래밍 방법에 대해 기본적이나마라도 학습하시고 보시기 바랍니다.

 

그리고 개인적으로 약간의 단점이 프로그래밍 테스트 실습을 할 수 있는 기본적인 인공지능 프로그램이나 인공지능 프로그램을 코딩하는 방법이 있었으면 좋았을것 같습니다. 대부분 기능부분으로 구성되어 있어 초심자가 접하기에는 좀 난해한 면이 있는것 같습니다.

 

GAN은 새로운 무언가를 만들어낸 다는 점에서 우리가 흔히 알고 있는 머신러닝, 딥러닝과는 또 다른 영역이다.

이러한 것들을 통칭해서 소위 AI라고 하는 분야 발전은 가히 상상하기 힘든 속도로 나아가고 있다.

GAN은 그간의 전통적(?)인 신경망에 비해 최근 몇년에 들어 그 개념의 정립과 발전이 시작된 그야말로 따끈따끈한 영역중 하나이고 발전 가능성 또한 무궁무진하다, 그리고 Generative에서도 알 수 있듯 새로운 것을 만들어낸다는 관점에서 우리가 흔히들 이야기 하는 인공지능의 부정적 영향에 대해 근접한 부분이 아닌가 싶기도 하다.

 

난 GAN이라는게 있다는 것을 알고 있었지만 앞서말한 전통적 신경망이나 딥러닝을 따라가기에도 버거워 들여다볼 기회가 그간에는 없었으나 작년에 대학원 수업을 통해 조금이나마 들여다볼 기회가 있었다.

그때 사용했던 교재가 바로 '미술관에 GAN 딥러닝 실전 프로젝트'이다.

GAN을 공부하는 사람들이 많이들 사본 책으로 생성모델링 -> VAE -> GAN으로 이론적 고찰과 이를 통해 그리고, 글쓰고, 작곡하고 게임을 가르쳐보는 순으로 응용/확장해서 살펴볼 수도록 잘짜여진 책으로 기억이 된다.

그럼에도 불구하고 머신러닝, 딥러닝에 내공이 깊지 않은 사람으로 GAN 입문서로 조금 버거웠던 것도 사실이다.(책은 정말 잘 써진듯... ^^)

 

그리고 몇개월 뒤 새롭게 맞딱드린 'GAN 첫걸음', 제목에서 알 수 있듯이 작정하고 만든 GAN 입문서임을 짐작할 수 있다.

이 책은 GAN 입문서가 맞다, 내용과 구성을 봐도 딱 GAN을 시작하는 사람이 보기에 좋게 쓰여져 있다.

책도 IT기술서와 달리 일반적인 자기개발서 등과 같은 크기로 IT기술서 특히나 요즘 가장 핫한 분야인 인공지능 관련 책으로 보여지지 않을 정도로 신경을 썼다.

책은 GAN이 작동하는 기본 원리부터 알고싶어하는 그리고 그것을 직접 만들어가면서 이해해보고 싶은 사람들은 위해 최대한 배려를 했다고 생각한다. 

IT경력이 출중하거나 인공지능 분야의 지식이나 업력이 많지 않더라도 충분이 부담없는 언어로 설명하고 많은 이미지를 활용하여 풀어나가고 있기 때문에 입문서로 손색이 없다.

실습환경 역시 구글코렙을 기반으로 하고 있어, 개발환경 구성 등에 구애받지 않고, GPU가 구비되어 있지 않더라도 책의 내용을 충실하게 따라해볼 수 있다.

실습에 사용되는 데이터들도 인공지능 입문시 흔히들 사용하는 기본적인 데이터, 예를들면 MNIST 등을 사용하기에 거부감이 없을꺼라 생각한다.

단지 하고자하는 의지대로 따라가면 어느순간 마지막 장, 마지막 소스를 돌려보고 있을꺼다, 이 책은 그러한 목적으로 쓰여있다.

 

개인적으로 생각해보면 GAN을 공부해보고 싶고 입문하고자 하는 사람은 'GAN 첫걸음' -> '미술관에 GAN 딥러닝 실전 프로젝트' 순으로 공부해보면 어떨까 하는 생각을 해봤다.

 

※ 본 리뷰는 IT 현업개발자로서 한빛미디어 리뷰어로 출판사로부터 제공받아 읽고 작성한 글입니다.

2E7DDEE0-5314-4B82-9688-9207CCD45EDD.jpeg

 

부제) 파이토치 신경망 입문부터 연예인 얼굴 생성까지

 

신경망에 대한 입문서로 가볍게 공부할 수 있지 않을까 하는 기대감으로 시작했다. 

책은 총 3부로 이루어져 있다. 1부에서는 파이토치와 신경망 기초에 대해 다루고 2부부터 본격적으로 GAN에 들어간다. 

책을 다 따라가다 보면 기본적인 신경망과 GAN에 대한 이해정도는 쌓을수 있다. 

 

사실 GAN 첫걸음이라 쓰고 파이토치 첫걸음이라고 읽어야 하지 않을까 하는 생각이 들 정도로 파이토치에 대한 이해가 없던 나에게 파이토치 입문용으로도 적절했다.

 

신경망의 개념 하나하나 알기 쉽게 소개해준다는 점, 그림을 통해 직관적으로 이해를 돕는다는 점이 초보자인 내게 반갑게 다가왔다. 

많은 독자들이 비슷한 반가움을 얻을수 있을것같다.

GAN에 대한 부분은 간단한 패턴부터 시작해서 코드로 설명해주고 추가로 어떤 문제들을 맞닥뜨릴수 있는지 학습해간다. 

실행은 google colab 활용으로 별도의 환경구성없이 바로 실행해볼수 있고 예제의 이미지 데이터셋도 오픈데이터로 활용해볼수 있다.

 

학습 이후 GAN의 다음 단계로 넘어가기 위한 좋은 입문서임에 틀림없다.

 

- 책 소개

 

 

 

기존 '신경망 첫걸음'은 못봤지만 '3분 딥러닝 텐서플로우 맛'은 당시에 정말 훌륭한 책으로 기억한다.

겉으로 보기에는 정말 얇은 책인데 그 어떤 자료보다 딥러닝을 쉽고 친숙하게, 그리고 내용도 빠짐 없이 챙기고 있다.

 

아마도 첫걸음 시리즈도 3분 시리즈와 유사한 컨셉으로 쓰여진 책인 것 같다.

3분 시리즈도 텐서플로우 이후에 파이토치가 나왓듯

첫걸음에서는 신경망 입문 이후에 GAN이라는 강력한 주제로 출판이 되었다.

 

위에서도 적었듯이 머신러닝 딥러닝 관련한 분야와 서적들은 요즘 홍수처럼 쏟아지기 때문에

각자의 상황에 적합한 도서를 찾는 것도 중요하다.

 

여기서 GAN 첫걸음의 경우 다른 쪽을 하나도 접하지 않았어도

처음으로 GAN을 접하기에 무리가 없도록 쓰여져있다.

 

물론 다른 분야를 조금 접했다 하더라도 파이토치는 별로 다뤄보지 못했다면

우리가 그동안 파이토치를 왜 건들지 않았는지를 알고 있듯 정말 친절하게 차근차근 설명해준다.

 

- 책 내용 예시

 

딥러닝을 처음 접하거나 새로운 기술을 접할 때 모두의 필수코스인 MNIST 이미지로 파이토치를 소개하고 있다. 이미 1단원에서 파이토치를 하나하나 살을 발라서 설명해주기 때문에 실습하듯이 쭉쭉 진행할 수 있겠다.

 

 

이후에도 진도를 쭉쭉 나가서 정말 짧은 시간 안에 GAN까지 안착하게 해준다.

위에서 입문자도 소화할 수 있는 책이라고 했는데

그러다보니 이미 GAN을 접해본 분이 GAN을 좀 더 깊이 다뤄보고자 한다면

이 책이 좀 아쉬울 수 있다.

 

목차에서도 볼 수 있듯이 생각보다 앞에서 다루는 비중이 GAN 못지 않게 차지하고 있기 때문에

제목에 비해서는 GAN이 조금 부족하다고 느낄 수도 있을 것 같다.

 

하지만 기본적인 개념과 수학적 설명은 우리의 이해를 돕기에 충분히 자세하게 되어있었다. 

 

 



# 책은 한빛미디어 나는리뷰어다로 받았습니다.

 

20210321_215415_HDR.jpg

 

 

 보라보라 책표지도 예쁨.

 

중학교 1학년 때, 무슨생각이었는지 Python이랑C언어 독학해서 만든 프로그램도 없었으면서 "오 이거 재밌겠다!"라는 생각으로 딥러닝과 머신러닝 책을 도서관에서 잔뜩 빌려다 읽었다.

 

무조건 라즈베리파이에서Tensorflow를 설치해서 딥러닝을 할꺼라는 이상한 집착때문에 책만 읽고, 예제도 제대로못돌려 봤지만 말이다.

 

지금생각하면 GTX1050달린이 놑북에서도 간단한 GAN 예제돌리면 한시간 반 걸려서 책과는 다른 결과물을 주고 가는데 왜 굳이불쌍한 라즈베리파이3을 괴롭혔는지 모르겠다.

 

 

어쨌든,

결국 라즈베리파이에서 텐서플로설치는 실패했지만 지금까지 내가인공지능 관련 책을 포기하지 않고 계속 읽고, 이 분야에 계속 관심을 갖게 해준 책이 있었다.

신경망 첫걸음. 

이 책에선 무려 라즈베리파이 제로로 인공신경망을 돌린다!

간단한 예제였지만, 20분이나걸린다.

 

어쨌든 이 책이 아니었으면"딥러닝인가 머신러닝인가 하는거 재미 하나도 없네" 하고, C언어나 Python책은 배게가 되었을지도 모른다.

 

집착하던 텐서플로는 아니었지만 이 책을 따라해서 매우 간단한예제를 라즈베리파이로 돌리는데 성공했고, 관심없던 컴퓨터에 조금 찾아보면서 내가 바보짓을 하고 있다는것을깨달았다.

 

 

그 후 널럴한 자유학기제 시간을 이용해 다른친구들 학교에서 샌안드레아스볼때 나는 미분을 이해하려고 하고 있었고, 

대충 인공신경망이 뭐하는건지 조금씩 감을 잡기 시작했다.

 

결론은 이 책 쓰신분 최고고,쓰신분 새로나온책 읽었다는거다.

 

GAN: 생성 적대적 신경망(Generative Adversarial Network)

 

간단히 요약하면

하나는 만들어내고(Generative)

하나는 그거를 판별하고,

정답이랑 비슷해질때까지

싸운다(Adversarial)

비슷해진다 판단하면 그걸 출력하는 Network.

 

 

자세한 건 책 참고.

 

어쨌든 이번 책도 꽤 어렵지 않고, 이해하기 쉽게 설명해준다.

이해했다고 착각했을수도 있지만,몇번 더 읽다보면 완전히 이해했다 할 수 있을 것 같다.

 

덤으로 Pytorch까지가르쳐준다!!

 

저번책에선 "미분을 시켜봅시다. " 하면서 쉽게 설명하지만 어려운 쪽에 속하는 내용이었는데 이제는 그냥

 

y.backward()

 

이거면 미분된다.

매우 간단하다.

 

그러면 파이토치나 텐서플로같은 프레임워크만 배우면 쉽게 만들수있는가?

그건 아닌 것 같다.

 

일단 사용하긴 간단하긴 하지만,

그래도 CNN, GAN 같은네트워크가 어떤 순서로 돌아가는지도 알아야하고, 언제 무슨 활성화 함수를 넣어야하고,

 

왜 출력이 ㄻㄴ어ㅣㅣㄴㅇ러ㅏ;ㅁㄴㅇ러ㅏㅣ; 하게 생겨서 제대로 작동되지 않는지 알려면

위의 '신경망 첫걸음'이나 '밑바닥부터 시작하는 딥러닝'같은책으로 딥러닝용 프레임웤 없이 최소한의 라이브러리만으로 작성된 신경망 코드를 돌려볼 필요가 있을 것 같다.

 

 

나처럼 라즈베리파이갖고 무작정 텐서플로 설치해서 딥러닝 공부한다고시작해서 혼자 딥러닝 배우는 사람이면 말이다.

 

 

뭐 대학가면 다 가르쳐주겠지만.

 

 

 

다시 책 이야기를 더 하자면,이번 책은 구글의 COLAB을 이용해 진행한다.

그래도 1050이라는조그만 외장 그래픽 달린 노트북 있다고, 직접 주피터 노트북에 작성하면서 해봤는데, 시간적인 면에서 성능좋은 코랩쓰는게 훨씬 낫다.

 

책에선 손글씨나 얼굴사진으로 예제를 실행하는데 조만간 동아리시간에 가능하다면 "안녕"합성네트워크 같은거만들면 재밌겠다는 생각이 들었다.

 

그리고 합성곱 GAN같은것도설명하는데, 완전연결에 기초를 둔 GAN보다 성능도 좋고, 메모리도 적게 사용한다고 한다.

대신 CNN의 정보가지역화된 정보고 전체적 관계는 학습하지 않아서 얼굴사진을 사용하면 부조화같은게 생기는 단점이 있다고 하는데, 아마구글링 해보면 해결책이 있지 않을까 싶다.

 

이건 재밌을 것 같은데, 학교에서읽느라 못 돌려봄.

 

 

 

 

나중에, 예제 한번씩더 돌리면서 복습해보던지 해야겠다.



 

참 시간이 빠르다고 느끼는 것이 처음 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

 

출처: https://talkingaboutme.tistory.com/entry/Book-Make-your-first-GAN-with-pytorch [자신에 대한 고찰]

GAN 첫걸음은 GAN이 어떻게 작동하는 지에 관해 자세히 설명한 책입니다.

 

다른 딥러닝 책에서는 GAN은 마지막 부분에 잠시 들어가는 정도 이기 때문에, GAN은 그림체 배우기 또는 오토 인코더와 비슷한 느낌일 것이라고 생각할 수 있는데, GAN의 학습 과정, 실패한[과적화한] GAN 등등, 꽤 진지하게 파헤치는 부분이 많은 책입니다.   

 

첫걸음이라는 제목만큼 처음부터 알려줘서, 기초적인 지식이 없어도 충분히 읽을 수 있습니다. 물론 앞에서부터 전체 1/3이 딥러닝을 배우신 분들에게는 지겨운 기초 쌓기 부분이라는 점이지만, 이 부분을 보충할 수 있을 정도로,  나머지 2/3이 충분히 흥미롭다고 생각합니다.(그래서 저는 기초 부분을 스킵했습니다.)

 

기초적이 부분과는 별개로 유용한 꿀팁이 상당히 많은 것도 특징입니다. 대부분 딥러닝 책들의 경우, 사용할 프레임워크에 맞는 환경 설정에 그치는 경우가 많은 데, 이 책에서는 GPU 사용량 확인이나 CUDA에 대한 부분까지도 어느 정도 설명해 두었습니다. 

 

해당 책은 코랩으로 실습하도록 했는 데, 컴퓨터가 안좋은 분과 개개인 컴퓨터는 편차가 있어서, 제대로 설명을 읽었더라도 코드가 실행이 안 되는 경우를 막기 위해서라고 생각합니다. 특히 후반부는 rgb 이미지를 이용한 것이라서 개인 컴퓨터가 안 좋은 경우에는 분명히 고생할 것이라고 생각합니다.

 

저도 코랩을 따라서 하는 것을 추천 드리는 데, 요새 새 컴퓨터로 바꿔서 엄청 나쁜 컴퓨터도 아니지만, 구글 드라이브와 연동해서 구글 계정만 있어도 학교 컴퓨터나 노트북에서도 바로 이어할 수 있기 때문에, 매우 편하기 때문입니다.

 

 

 

코드 역시, 단순한 코드여서 굳이 코드로 치지 않아도 이해할 정도여서 그냥 읽기만 해도 괜찮은 책입니다.

GAN을 단순히 스타일 복제에 대한 것이라고 생각했던 분이라면 꽤나 신선한 충격을 줄 것이라고 생각합니다. 

 

 

오늘 리뷰할 책은 [GAN 첫걸음] 이다. 

 
 
사실 GAN 책은 한빛 책으로 작년에 하나 사서 본적이 있다.
 
물론 다 보지는 못했지만 대충 어떤 내용인지는 파악했다. 그런데 시간이 지나니까 머리 속에서 사라져서
 
뭘 봤는지 기억이 거의 나질 않는다. 그런 와중에 [GAN 첫걸음]을 다시 봐서 갑자기 "복습" 을 하게 된 기분이다.

 

표지 2021-03-21 15.55.09.jpg

 

 
 
일단 이 책은 분량이 적어서(300페이지도 안된다) 부담 없어 좋았다. 

물론 그만큼 내용은 적을테니까 어떤 책을 더 봐야 할지는 알아서 각자 판단해야 한다.

나름 번역도 매끄럽고 이해하기에 괜찮은 편이었다.

아마 전에 텐서플로우 기반으로 딥러닝을 약간(?) 공부해 본 경험이 있어서일꺼라 생각한다.

초급자용이라고 되어 있지만 내 생각에는 딥러닝을 전혀 모르는 사람이라면 무리수일거라 예상한다.

그리고 장점이자 단점이 될 수도 있는게... GAN에 대한 내용은 실제 분량의 절반 정도만 차지하는걸로 보인다.

그 이유는 초보자를 위해 딥러닝이나 CNN 등에 대한 내용을 조금씩 설명을 다 하고 있기 때문이다.

하지만 컬러판 인쇄로 되어 있어서 가독성도 좋았고 그림 보기에도 좋았다.

 

2021-03-21 15.55.39.jpg

 


곳곳에 소스 코드를 설명하는 부분에서도 컬러로 구분 되어 있어서 좋았다.

2021-03-21 15.56.51.jpg

 


 

실제로 예제를 실행해보려고 노트북에 설치된 쥬피터 노트북을 실행하고 파이토리를 설치하려했으나, 

에러가 나서 실패하고 책 설명대로 구글 코랩으로 실행해보았다. 

구글 코랩으로 하더라도 파이토치 설치나 버전에 대한 언급이 전혀 없는 것은 좀 아쉬운 점이라고 할 수 있다. 

어쨌든 구글 드라이브에 업로드해서 여러 예제들을 실행해봤다.

아래 그림을 보기 위해서는 20분 이상 실행해야만 볼 수 있는 예제이다. 딥러닝 공부하려면 인내심도 필요하다.

 

실행결과.png

 


사실 이런 책은 애매하다. 개인적인 생각으로는 초보자를 위한 책이라기 보다는, 

일단 다른 책을 봤거나 기반 지식이 있는 사람이 다시 정리하기에 적당한 책으로 보인다.

* 한빛 미디어 도서 서평단 <나는 리뷰어다 2021> 

* 두 번째 도서! - GAN 첫걸음

궁금한 분야였지만 귀차니즘과 어려운 공부라는 압도감에 미뤄왔던 인공 지능!

서평단 도서 선택지에 있는 김에 신청했는데 덜컥 당첨됐다..

* 도서 서평단 시스템은 희망 도서 3권을 선택하여 그중 랜덤으로 한 권이 발송된다

 

 

GAN 첫걸음

요즘 더 화두에 오르고 있는 인공 지능과 관련된 책이다

* 인공 지능: 인간의 학습/지각/추론 능력 등을 인공적으로 구현한 시스템

* 인공 신경망: 인공 지능을 구현하기 위해 인공적으로 뉴런을 구현한 알고리즘 구조를 일컫는 말

인공 신경망을 구현하는 여러 라이브러리 중 파이토치를 사용하여 간단한 실습과 추가 설명으로 인공지능에 대한 첫걸음을 제시한다 

종종 지식 정보 책들의 소개글을 보면 초급자들도 쉽게 읽을 수 있단 소개와 달리 불친절한 설명들을 접하는데 이 책은 변수, 조건문, 소스 주소 등이 일일이 적혀있고 실습 없이 이해 가능할 정도로 설명하고 있다

기울기 등 미분 이야기가 나오는 점도 수학이라 말하기 애매한 수준이며 그마저도 쉽게 풀이한다

기억에 남는 내용 중 하나는 파이토치에서는 파이 토치를 텐서에 값을 저장한다는 점인데, 이는 결과 값만 저장하는 일반적인 변수와 달리 기울기 등 숫자 이상의 추가 정보를 저장한다는 것이다 그리고 이를 토대로 데이터의 출처, 데이터 간 연관성 등은 결정된다

사실 책의 내용을 어느정도 이해했지만 주 내용이 인공 지능&인공 신경망의 기초 지식 및 실습이라 후기를 어떻게 작성해야 할지 모르겠다 나의 미천한 지식도 한 몫하기에 GAN을 알고 싶다면 그냥 구매해서 읽으라고 말하고 싶다




도입과 느낌

힌빛미디어의 첫걸음 시리즈 중 하나인 GAN 첫걸음을 읽었습니다. 제일 처음 이 책을 마주하고 든 생각은 '너무 얇은데?' 였습니다. 그리고 읽고나서 느낀 것은 이 얇은 책에 입문을 위한 모든 것이 담겨있다는 것이었습니다. 물론 딥러닝에 처음 입문하는 사람들이 이 책을 찾을거란 생각은 안하지만, 맨 앞 챕터에서 신경망에 대한 짧지 않은 내용을 첨부한것도 초심자들을 위해 나름 괜찮다고 느꼈습니다. 전체적인 구성은 신경망 기초, GAN 기초, GAN 확장 으로 책이 이루어져있습니다. 내용적인 부분 이외에도 깔끔한 디자인과 얇은 구성으로 카페에 들고가서 가볍게 공부하기에 좋았습니다.

 누구에게 이 책을 추천할 수 있을까? 

딥러닝에 대한 기본적인 ( 신경망, 배치 등) 이론들을 알고있는 상태에서 GAN을 공부해보고 싶은 사람들에게 추천하고 싶습니다. 무엇보다 수식없이 단순한 일러스트로 소개를 시작하는 부분이 입문자에게 친숙하게 다가갈 수 있을 것이라고 생각했습니다. 

또한 이미 다른 딥러닝 모델들을 잘 알고있고, GAN에 대한 개념적인 부분과 구현의 부분을 하루~이틀동안 빠르게 살펴보길 원하시는 분들도 좋은 책이 될 것입니다. 저도 GAN에 깊숙한 이론이 아니라 가장 베이스가 되는 개념과 Pytorch이 구현 느낌을 빠르게 파악하길 원했고, 제 목적과 이 책이 딱 들어맞다고 생각을 했습니다.

Pytorch가 익숙하지 않다면요?

그렇기 때문에 존재하는게 챕터 1이기도 합니다. 물론 신경망 이론에 익숙하지 않으신 분들을 위해 존재하는 파트기도 하지만, 기존 텐서플로우 사용자들이 어떻게 파이토치에서 신경망이 구현되는지 차이에 익숙해지기 위한 부분이라고도 생각합니다. 또한 파이토치는 파이썬 유저들에게 파이써닉하게 코드를 짤 수 있다는 가장 매력있는 장점으로 최근 많은 인기를 끌고 있기도 합니다! 이번 기회에 파이토치를 사용해보는 것도 좋다고 생각합니다.

다음 단계는?

이 책을 통해 GAN을 더 공부하고 싶고, GAN을 활용한 다른 task를 다뤄보고 싶으면 모델의 수식에 대한 어느정도의 이해가 필요하다고 생각합니다. 구글에 generative adversarial networks survey, review, tutorial 등을 검색해서 이 책을 통해 익힌 기본 개념에 수식을 더해서 더욱 풍부한 지식을 만들어 나갈 수 있을 것입니다. 

 

최근에 다른 생성모델을 공부하면서 느낀 점은 수식과 이론을 함께 시작하는 것은 상당히 고된 일이었습니다. 이런 간결한 구성으로 이루어진 입문서가 없다면 이런 저런 논문이나 영어 문서들을 뒤져가며 수식+이론+구현 3박자의 적절한 균형을 이루면서 공부를 해야하는데 아무 조언자없이 스스로 이런 공부를 해나가는 것은 쉽지 않습니다.

이 리뷰를 보고 책을 읽게 된다면 신나는 GAN 공부를 위한 밑바탕을 만들어갈 수 있는 기회가 되었으면 좋겠습니다.

 

본 포스터는 한빛미디어에서 [나는 리뷰어다]를 통해 책을 지원받아 작성한 리뷰 포스터입니다. 먼저 저는 대학원생이고 대학원에서 파이썬과 파이토치를 이용해서 딥러닝 연구를 하고 있음을 미리 밝힙니다. 책을 읽고 난 느낌부터 말하자면 책 자체가 쉽게 쓰였고 수식적인 부분이 나오지 않습니다. 그래서 GAN이 어떤 컨셉인지 알고 싶은 분들에게는 도움이 될 것 같습니다. 하지만, 앞의 280페이지에서 100페이지 정도가 파이썬, 딥러닝 기초이고 40페이지 정도가 부록입니다. 실제로 GAN에 대해서 다루는 부분이 절반밖에 안 되는 점이 아쉬웠습니다. 그리고 책 자체는 각각의 부분이 그림으로 같이 설명이 되어서 이해하기가 쉬웠습니다. 하지만, 수식적으로 어떤 식으로 작동하는지에 대해서는 많은 언급이 없었습니다. 개인적으로 GAN을 공부하면서 가장 어려웠던 점은 수식들이 어떤 의미를 가지는지 이론적인 부분들이었습니다. (대학원에 들어와서 베이지안을 공부하고 jaejunyoo.blogspot.com/2017/01/generative-adversarial-nets-2.html 부분의 설명을 봐도 어렵네요...) 하지만, 책에서는 이론적인 부분들에 대해서는 언급이 없고 실습에 대한 부분만 나옵니다. 그러기에 "엄밀한 수식적인 이해보다는 GAN이 무엇인지 알고 코드로 돌려보고 싶은 사람들"이 읽으면 생각합니다.

 

1. 소개

 

출처 : http://www.yes24.com/Product/Goods/97559774

 

yes24의 GAN 첫걸음에 대한 소개를 보면, "GAN의 원리를 알면 익힐 수 있게 구성된 책"이라는 표현이 나옵니다. 수식적인 부분이 없고 그림으로 설명이 되었기에 어떤 식의 원리로 GAN이 돌아가고 코드를 어떻게 짜야하는지 쉽게 이해할 수 있습니다. 

목차 

[PART 1 파이토치와 신경망 기초]
CHAPTER 1 파이토치 기본
CHAPTER 2 파이토치로 만드는 첫 번째 신경망
CHAPTER 3 성능 향상 기법
CHAPTER 4 CUDA 기초

[PART 2 튼튼한 GAN 만들기]
CHAPTER 5 GAN 개념
CHAPTER 6 단순한 1010 패턴
CHAPTER 7 손으로 쓴 숫자 훈련
CHAPTER 8 얼굴 이미지

[PART 3 흥미로운 GAN 기법]
CHAPTER 9 합성곱 GAN
CHAPTER 10 조건부 GAN
CHAPTER 11 결론

책의 구성을 보면 파이토치와 딥러닝의 기초에 대해서 먼저 살펴봅니다. 이후 GAN의 기초와 이를 응용한 기법들에 대해서 순차적으로 다룹니다. 하지만 책의 비중이 PART1은 100페이지, 90페이지, 45페이지로 GAN 부분에 많이 할당되지 않은 게 아쉬운 구성이기도 합니다. 

 

2. 내용 

책의 구성은 아래와 같이 모든 설명에 이미지가 첨부되어서 설명되어집니다. Image Classificiation 부분부터 시작해서, 

 

 

GAN의 기본 컨셉인 Generator 부분과 DisCriminator 부분이 싸우는 형식을 아래와 같이 표현한 부분입니다. 

 

 

 

3. 소감 

가벼운 마음으로 읽기에는 굉장히 좋은 책이었습니다. 최근 Semi-Supervised Learning, Self Supervised Learning 쪽에 관심이 있어서 Survery를 보고 있습니다. 거기에 꼭 나오는 테크닉 중 하나가 GAN을 이용한 방법들이었습니다. 그러기에 기대하는 마음으로 책을 읽었습니다. 내용의 구성은 개인적으로는 마음에 들지는 않았습니다. 너무 기초적인 내용부터 책이 시작되었기 때문입니다. 하지만, "첫걸음"이라는 제목에 충실한다면 좋은 책인 것 같습니다. 수식적인 부분은 제외하고 그림적인 부분으로 GAN에 대해서 설명을 하고 코드에 대한 설명도 자세하기에 읽으면서도 어떤 내용인지 쉽게 이해가 갔기 때문입니다. 하지만, GAN에 대해 어느 정도 기초 지식이 있고 논문에 나오는 GAN의 테크닉들을 이해하고 연구하시는 분들에게는 추천하고 싶지는 않은 책입니다. 위에 말했듯이 책이 쉬운 편이기 때문입니다. GAN을 아예 모르는 분들이라면 이 책을 기반으로 기본기를 쌓고 다음 스탭으로 넘어가는 입문서로는 좋은 책입니다. 

  • 이 책을 펴기 전 내 상태를 한 마디로 표현하면 이렇다.
	def __init__(self):	super().__init__()        self.데이터분석_경험 = True    self.머신러닝_경험 = True    self.numpy_경험 = True    self.pandas_경험 = True    self.matplotlib_경험 = True        # epsilon @numpy    eps = np.finfo("float").eps          self.딥러닝_경험 = eps    self.텐서플로_경험 = eps    self.케라스_경험 = eps        # out of my world    self.파이토치_경험 = None    self.GAN_경험 = None    

 

  • 글자 그대로, 데이터분석과 (딥러닝 제외) 머신러닝을 주로 해 왔다.
    • 주어진 상황이 그랬다.
    • 딥러닝을 해야지 해야지 하면서 눈앞의 프로젝트에 치였고
    • 연구데이터를 다루다 보니 전처리에 집중하는 일이 많았다.
    • 최신의 알고리즘보다 고전 방정식 하나를 더 적용하는게 이득이었고
    • 잘 맞는 예측결과보다 물리적 설명력이 더 중요할 뿐이었다.
  • 하지만 최근 백만 단위의 데이터를 다루면서 딥러닝 욕심과 필요성이 생겼다.
    • 대세는 파이토치라는 말을 들은지 오래였고
    • 데이터 생성이 필요해지면서 GAN에 관심이 갔다.
    • 그리고 이 책을 만났다.

 

  • 저 상태의 내게 잘 맞는 책이다.
    • 경험이 없다고 pytorch와 GAN을 아예 모르는 것은 아니다.
    • 여기저기서 개념 수준의 이야기는 많이 주워들었는데 손 끝에 옮겨본 적이 없을 뿐.
    • 첫걸음을 표방하는 이 책은 딱 나에게 맞는 수준의 난이도와 설명을 제공하고 있다.
    • 나와 비슷한 수준의 독자에게는 적절한 도움이 되리라 생각한다.
  • pytorch 문법과 GAN 개념 설명이 간결하다.
    • 저자의 전작인 신경망 첫걸음의 후속작이다.
    • 디테일이 생략되어 눈 앞의 코드를 이해하는데 집중하게 해 준다.
    • pytorch 코드 설명이 최소한에 머무른다.
    • 문법이 어렵지 않기는 하지만 tensorflow와 keras 경험이 없었더라면 조금은 어려웠을지도 모르겠다.
    • GAN도 복잡한 수식을 가지고 설명하지 않는다.
    • 오토인코더를 반으로 자른 encoder와 decoder를 구현하는 것으로 설명을 시작한다.
    • 모드 붕괴(mode collapse)를 해결하는 과정마저도 코드 업데이트를 통해 간단하게 짚는다.
    • 수식이 전혀 없기 때문에 기초를 중시하는 분이라면 반가워하지 않을지도 모르겠다.

  • 하루 안에 pytorch와 GAN의 첫걸음을 뗄 수 있다.
    • 집중할 수만 있다면, 이 책 전체를 읽고 모든 코드를 만들어보는 데 하루가 걸리지 않는다.
    • 과거 seaborn 튜토리얼 전체를 필사하는 데 이틀이 꼬박 걸린 적이 있다.
    • 하루 : 이틀 이라는 시간 비율 뿐 아니라
    • pytorch + GAN : 시각화 라는 무게감을 생각하면 말도 안되는 쾌속이다.
    • 첫걸음이라는 제목처럼 입문서라는 목적에 걸맞는 구성과 분량이다.

  • 딱 입문서. 거기까지.
    • 어떤 일을 할 때 가장 어려운 점은 "시작하려는 마음을 먹는 것"이고,
    • 시작하려는 마음을 먹은 다음에는 "내가 뭔가 하고 있다"는 느낌을 받기까지가 참 지루하다.
    • 이 책은 이 두 가지를 단기간에 넘어가게 해 줌으로써 심리적인 장벽을 효과적으로 낮춰준다.
    • 이것으로 B5 크기, 280 페이지 분량의 입문서로서는 역할을 충실히 다 하고 있다고 생각한다. 
    • 하지만 내가 pytorch로 뭔가를 하기에,
      GAN을 내 업무에 적용하기에 충분할 것이라는 생각은 하지 않는다.
    • pytorch는 공홈을 뒤지고 커뮤니티에 질문을 쏟아내야 할 것이고,
      GAN은 "왜 내 데이터는 안되는거야" 하다가 수식의 세계에 한번쯤은 발을 담궈야 할 것이다.

  • 사실 뭔가 홀린 느낌도 든다.
    • 학부때 열역학 강의를 하신 교수님께서 강의를 정말 잘 하셨더랬다.
    • 그 어려운 열역학 개념부터 예시까지 수업시간에 듣고 있으면 아~ 하고 다 아는 것 같은데,
    • 막상 시험공부를 하면서 혼자 보면 이게 무슨 소리더라 하는 나 혼자 바보된 듯한 느낌.
    • 이 책을 1회독하고 덮은 지금 느낌이 학부 열역학 수업을 마친 뒤의 쉬는시간 같다.
    • pytorch를 멀리서만 볼 때의 막연한 두려움이 사라진 덕에 내일 출근하면 곧장 import torch를 할테지만,
    • 분명히 뭔가 제대로 돌아가지 않는 구석이 있을 것임을 경험으로 알고 있기에 괜히 찜찜하다.
    • 그리고 그 찜찜함은 지금 이후의 내 손가락 움직임으로 메워나갈 수 밖에 없음을 알고 있다.

  • 이런 분께 권합니다.
    • 파이토치, GAN을 멀리서 바라보며 해야 되는데, 해야 되는데만 수 개월째 반복해오신 분들.
    • 당장 시작하세요. 그 날 안에 밀린 숙제를 해결하는 시원함을 얻을 수 있습니다.

  • 이런 분은 한번 고민해보시는 게 좋을 것 같습니다.
    • GAN에 대해서 제대로 알고 싶으신 분들.
    • 이 책이 나쁘다는 뜻이 아니라, 아마 이 책으로는 성이 차지 않으실 것 같습니다.
    • 이 책을 디딤돌 삼아 다른 책으로 점프하시는 용도로는 권해드리고 싶습니다.
    • 저도 그럴 겁니다. :)

인공지능에 대해 궁금할 때, 머신러닝/딥러닝에 대해 알고 싶을 때 보는 책

책에 있는 코드를 하나하나 따라 실습해보면 자동으로 딥러닝에 대해 이해할 수 있는 책

중간중간 결과를 확인하면 다음 단계가 궁금하여 계속 보게 되는 책입니다.

 

https://blog.naver.com/pysoft/222282348750

[ GAN is ... ]

 

AI가 만든 얼굴이라던지, 오바마 전미국대통령의 fake 영상이라던지 하는 뉴스를 들어보았을 것이다.

이런 것들을 만들어낼 수 있는 가장 대표적인 기술적 배경이 바로 GAN 이다.

 

아래 영상을 보면 바로 어떤 것인지 알 수 있다.

 

 

 

 

GAN은 "Generative Adversarial Network"의 줄임말인데, 풀어보면 아래와 같이 말할 수 있다.

  • Generative: 생성(Generation) 모델을 이용하여, 진짜 데이터와 같이
  • Adversarial: 두 개의 모델을 적대적(Adversarial)으로 경쟁시키며 발전 시키는
  • Network: 인공신경망(Artificial Neural Network)

 

"GAN"은 라벨(정답)이 없는 데이터를 가지고 학습을 하는 비지도학습의 한 유형이다.

GAN에 대한 가장 대표적인 설명은 "위조지폐범"과 "경찰"이다.

 

 

GAN

 

 

위조지폐범(생성모델)은 진짜와 구분이 어렵도록 위조지폐(가짜 데이터)를 계속 생성하고,

경찰(분류모델)은 진짜와 가짜를 계속 분류하면서 50%의 확률 정도가 될 때까지 계속 진행을 하는 방식이다.

 

 

 

[ This book is ... ]

 

서두가 길었다 ^^

 

GAN에 대해서 알려주는 괜찮은 책이 이번에 한빛미디어에서 출간되었다.

책의 제목은 "GAN 첫걸음" !!!

 

 

GAN 첫걸음 - 표지

 

 

예쁜 보라색으로 깔끔한 폰트로 제목이 적혀있는 표지를 갖고 있는 조금 작은 크기(신국판 규격 정도?!)의 책이다.

거기에다가 지금 이 글을 적고 있는 시점에서보면 나온지 얼마 안되는 따끈따끈한 책이다.

 

 

GAN 첫걸음 - 초판

 

 

이 책의 지은이는 "타리크 라시드"이다.

 

 

GAN 첫걸음 - 지은이

 

 

"타리크 라시드"는 이 책에 앞서서 다른 책을 출간했었다.

 

신경망 첫걸음 - 10점
타리크 라시드 지음, 송교석 옮김/한빛미디어

 

어떻게 보면 위 책의 다음 2권과 같은 위치에 있는 것이 바로 이 책 "GAN 첫걸음"인 것 같다.

물론, "신경망 첫걸음"을 보지 않고 바로 "GAN 첫걸음"을 본다고 하여 문제가 되지는 않는다.

 

 

GAN 첫걸음 - 대상 독자

 

 

책에 쓰여져 있는 것처럼, 기초부터 알고 싶은 사람을 배려해서 쓰여져 있기 때문이다.

 

하지만, 아무리 그래도 최소한 Machine Learning에 대한 기초적인 지식이 있으면 조금 더 읽기 수월할 것이고

"신경망 첫걸음"을 먼저 읽었다면 더더욱 읽고 이해하기 좋을 것이다.

 

 

[ Prerequisite ]

 

이 책은 기본적으로

"구글 코랩(Google Colab)" 환경에서 "파이토치(PyTorch)" 라이브러리를 이용하여 GAN을 구현한다.

 

친절하게도 이 책에서는 "Chapter1 파이토치 기본"에서

기본적인 실습 환경과 배경 지식에 대해서 친절하게 설명을 해주고 있다.

 

그러다가 PyTorch의 기본 데이터 형태인 텐서(tensor)에 대해서까지 Part1에서 설명을 해준다.

 

 

practice ]

 

"Chapter2 파이토치로 만드는 첫 번째 신경망"에서는

유명한 MNIST 데이터셋을 이용해 PyTorch로 신경망을 만드는 과정을 꼼곰히 설명해주고 있다.

 

"Chapter3 성능 향상 기법"에서는 조금 더 성능을 높이기 위한

손실함수, 활성화 함수, 옵티마이저, 정규화 등에 대해서 설명한다.

 

"Chapter4 CUDA 기초"에서는 AI 하면 떠오르는 GPU를

어떻게 사용할 수 있는지에 대해서 친절하게 설명해준다.

 

여기까지가 "Part1 파이토치와 신경망 기초"에 해당한다.

 

[ lesson ]

 

본격적인 GAN에 대한 학습은 "Part2 튼튼한 GAN 만들기"로 분류되어 있는

"Chapter5 GAN 개념"부터 "Chapter8 얼굴 이미지"까지로 이루어져 있고,

 

"Part3 흥미로운 GAN 기법"에서는 조금 더 고급스러운(?)

'Chapter9 합성곱 GAN', 'Chapter10 조건부 GAN'에 대해서 설명해주고 있다.

 

 

 

[ My Opinion is ... ]

 

아직 이 책의 끝까지 공부해보지는 못했지만 지금까지 공부하면서 느낀 점을 적어보면...

 

책이 나름 친절하고 쉽게 설명해주고자 노력했지만,

그렇다고 해서 Machine Learning이 뭔지도 공부하지 않은 상태에서 접하기에는 어려울 수 밖에 없다.

 

또한 책에서 심심찮게 보이는 "신경망 첫걸음에서 뭐뭐를 해봤었다"와 같이

이 책을 보기 전에 "신경망 철걸음"을 보고와야 되는 것처럼 되어 있는 점은 조금 아쉬웠다.

 

하지만,

최소한 "Machine Learning"에 대해서 조금이라도 공부를 해보신 분이라면

GAN에 대해서 공부하기 위해 이 책을 추천할 수 있을 것 같다.

 

어려운 수학 공식에 대한 설명 보다는

구글 코랩에서 PyTorch를 직접 구현해보며 공부할 수 있다는 점은 정말 좋았다.

 

직접 해보면서 공부하는 것을 좋아하시는 분에게는 정말 정말 적극 추천한다!!!

블로그 리뷰의 마지막 부분을 퍼왔습니다. 

자세한 내용은

https://blog.naver.com/ab415/222282280589

여기로 와주세요

.

.

.

 


입문서의 역할을 충실하게 해주고 있고,


어려운 GAN을 친절하게 풀어서 설명해주고 있다.

 

앞부분에서는 기초적인 Tensor에 대한 내용부터 시작해서

 

 

 

PyTorch와 역전파,

 

 

 

GAN에 대한 개념과 간단한 예제부터 MNIST, 얼굴 데이터를 사용한 실습,

 

 

합성곱을 활용한 GAN, Conditional GAN까지

 

기존의 프레임워크의 공식 Document보다도 쉽게 GAN의 기본부터 잘 알려주고 있다.

 

 


무엇보다 딱딱할 수도 있는 공돌이, 프로그래머들의 책들의 느낌과는 다른

 


직접 누군가가 필기를 해둔 노트를 보듯한 그림들이 있다. 칙칙할 수 있는 책이 한결 보기 편하다.

 


이전에 여러 책을 봐왔지만, 생각보다 완성도도 높고,

 


GAN에 대해서 정말 들어만 보았고 + PyTorch로 공부를 시작하겠다

 


하면 Youtube의 Pytorch 기본 영상과 함께 이 책을 통해서 시작을 해도 전혀 부족하지 않다고 생각한다

 


주변에 Computer Vision으로 관심이 있다고 하면,


주저없이 입문서로 이 책을 추천해 줄 것이다.

 


현재 시중에는 대부분 TensorFlow에 대한 책들이 많이 있지만,


그에 비해서 PyTorch에 대한 책은 적다.


이정도의 책이라면 부담없이 PyTorch로 시작을 할 수 있고,


(내 생각으론..) Computer Vision의 개꿀잼 영역인 GAN에 대해서 공부하면서


입덕(?)하기에 더할나위 없이 좋은 책이라고 생각한다.


원했던 책이라서 그런지...


이번 리뷰는 너무나도 만족스러웠다.

 

 

기초적인 딥러닝을 친절하게 설명해주고 이후 Vanilla GAN과 Conditional GAN을 설명해줍니다.

 

입문으로 보기에 적절한 책입니다.

딥러닝에 입문하거나 GAN이라는 분야에 관심 있어서 공부해보고 싶은 초보자들 또는 이 분야에 공부하다가 막힌 분들은 읽어보는 것을 추천드립니다. 누군가 GAN을 공부하기 위해서 뭘 봐야 한다고 저에게 물으면 전 이 책을 추천할 것 같습니다.

유리천장을 뚫고 한 단계 올라 간 느낌이 든 것은 '타리크 리시드'의 '신경망 첫걸음'

이라는 책이었습니다.

어려운 알고리즘이나 모델에 대한 설명이 없어 혹자는 '너무 쉬운 책이다.'라고 평하지만,

가장 기본이 되는 이론을 설명해 주는 책이었습니다.

지금도 딥러닝을 처음 공부하는 사람들에게 권하는 여러 책들 중 한 권입니다.

이 분의 'GAN 첫걸음'이 번역되어 출판된다는 소리에 GAN의 여러 책을 읽었었지만,

한번 읽어야겠다는 생각을 했습니다.

이 책은 다른 책에서 설명하고 있는 최신 GAN 모델에 대한 설명은 없습니다.

하지만 GAN을 알기 위해 알아야 할 가장 기본이 되는 내용을 쉽게 설명을 해주고 있습니다.

 

IMG_9715.JPG

 

 

파이토치 기본에 대한 설명도 1장부터 이해하기 쉽게 쓰여 있기 때문에 처음 접하는 개발자도 손쉽게 파이토치를 사용할 수 있습니다.

저는 이 책에서 '6 단순한 1010 패턴' 부분은 재미있게 읽었습니다. 1010 패턴을 생성자가 생성할 수 있도록 판별자와 생성자가 서로 적대적 학습을 하는 단수한 모델입니다.

GAN의 개념을 이미지가 아니라 이런 숫자 패턴에 적용할 수 있다는 점이 그동안 잊고 있었던 GAN이 이렇게 폭넓게 쓰일 수 있다는 점을 다시금 깨닫게 해줬습니다.

"이 글은 한빛미디어 '나는 리뷰어다.' 서평단 자격으로 작성된 글입니다."

GAN(Generative Adversarial Network, 생성적 적대 신경망)은 서로 경쟁하는 두 개의 신경망(생성자, 판별자)으로 구현된다. 생성자는 새로운 데이터를 생성하며, 판별자는 가짜와 실제를 구별한다. 생성자와 판별자는 서로 이기려는 경쟁을 지속하는데 위조범이 그럴듯한 모조품을 만들면 판별자가 잡아내는 식의 경쟁이다.

말이 쉽지 GAN을 배우려고 책을 펴면 이상한 것들을 새로 배워야 한다. 오토인코더 부터 시작해서 G와 D가 팽팽하게 서로 당기고 있는 이상한 긴 수식, Likelihood에서 부터 각종 확률과 분포 등등..

반면 이 책은 GAN을 처음 접하거나 어려워 포기했던 이들에게 제 격인 책인 것 같다. 내 기억이 맞다면 오토 인코더라는 말은 한마디도 안나왔다. 대표적으로 눈에 띄는 장점을 정리하면 다음과 같다.

  • GAN의 핵심을 3단계로 정리하고 예제로 구현하는 부분은 그 어느 책보다도 전달력이 뛰어났다.

  • 반드시 필요한 것만 간추려 알려주고 있어 완급 조절이 훌륭한 책이다.

  • 계보(AE, VAE, GAN, DCGAN, MMGAN, NSGAN, WGAN, WGAN-GP, ProGAN, SGAN, CGAN, CycleGAN, RGAN, SAGAN, BigGAN에 이르는…) 흐름이 아닌 모드 붕괴, 경사하강법 등 문제 인식에 초점을` 맞춘 접근법이 마음에 들었다.

  • 난이도는 쉬운 반면, 다루는 깊이는 논쟁이 되고 있는 연구까지 다루고 있다.

  • 아마도 GAN, 딥러닝, PyTorch 셋 다 몰라도 이 책이라면 무난히 GAN의 세계에 입성할 수 있을 것 같다. 정말 쉽다.

간단한 장점만으로는 설명이 부족한 것 같아 전체적인 구성 및 책을 읽으며 인상깊었던 핵심 내용들을 위주로 아래와 같이 정리해 보았다.


  • 파트 1 : 준비과정
    먼저 PyTorch와 Colab의 기초를 배운다. Define By Run 방식의 계산 그래프를 토대로 자동 미분을 실습하는 과정을 통해 PyTorch의 활용법과 직관적인 장점을 느낄 수 있다.

    다음으로 MNIST 손글씨 분류 신경망을 만들어 본다. Pandas와 Matplotlib으로 MNIST 데이터가 어떻게 생겼는지 열어본 후, 기본적인 네트워크를 구성한다. 오차를 정의하는 손실함수, 가중치 학습 방법인 옵티마이저, train() 함수 등을 만들며 신경망의 기본을 다진다.

    이어서 만든 모델의 성능을 단계적으로 아래와 같이 향상시킨다.

    • 손실함수 : MSE -> BCE
    • 활성화함수 : Sigmoid -> LeakyReLU
    • 옵티마이저 : SGD -> Adam
    • 정규화 적용 : LayerNorm()
      위 단계를 거쳐 모델의 성능을 87%에서 97%까지 끌어올리는데, 딥러닝의 성능 개선을 위한 일반적인 방법을 핵심만 잘 간추리고 있다.

    다음으로 CUDA는 어떻게 활용하는지, 성능은 얼마나 향상되는지 측정해본다.

    • Vectorization : Python(for) -> Numpy(행렬) / 1500배 성능 향상
    • CUDA : Numpy(CPU) -> CUDA(GPU) / 150배 성능 향상

    파트1은 정리하자면 딥러닝과 PyTorch의 기본을 복습하는 장이다. 이미 둘을 잘 알고 있다면 건너 뛰어도 무방하다.

    하지만 스스로 딥러닝이 부족하다고 느껴진다면 반드시 꼼꼼하게 익히고 넘어가야 한다. 판별자가 딥러닝 모델과 거의 유사하기 때문이다. 판별자도 제대로 만들기 어렵다면 더욱 까다로운 생성자 혹은 판별자와 생성자 간 통신을 이해하기 어려울 것이다.

    GAN을 배우고 처음으로 맞닥드렸던 난관이 모드 붕괴였는데 아마 대부분 공통적으로 겪는 현상이 아닌가 싶다. 뒤에 이를 해결하기 위해서 딥러닝의 성능 개선 방법을 미리 익혀두는 것은 필수이며, 이를 확실히 알기 위해서는 딥러닝의 기초가 필수다. 또 이를 위해 PyTorch이나 Colab 실습 환경 사용법을 숙지해야 함은 말할 필요도 없다.

    이처럼 큰 집을 만들기 위해 초보자들도 쉽게 따라할 수 있도록 벽돌을 아래부터 하나씩 차곡차곡 쌓아올리는 구성이 인상적이었다.


  • 파트2 : GAN의 핵심
    먼저 GAN의 핵심 개념을 살펴보자.
    • MNIST 신경망이 아무 그림이나 Input으로 받아 0 ~ 9(10개)를 Output으로 내보내는 과정은 정보가 줄어드는 압축이라고 볼 수 있다. 이를 뒤집어 10개의 숫자를 입력하여 어떤 그림이 나오도록 확대하면 이미지를 만들어 낼 수 있을 것이다. 원핫 인코딩 벡터가 그 예인데, 대신 평균적인 같은 결과만 나온다는 것이 문제이다. 3을 넣으면 항상 똑같이 생긴 3 모양의 그림이 나오는 셈이다.

    • 여기에서 착안된 구조가 GAN이다. 책에서는 GAN의 핵심을 다음과 같이 3단계로 잘 정리하고 있다.

      • 1단계 : 실제 데이터로 판별기 학습. 레이블은 True(1).1단계_107p

      • 2단계 : 생성기가 만든 데이터로 판별기 학습. 레이블은 False(0).2단계_108p

      • 3단계 : 생성기 생성 및 훈련. 생성기의 결과를 판별기가 판단 후 오차 역전파법으로 생성기 가중치 업데이트. 단, 판별자의 가중치는 업데이트 하지 않음.3단계_108p

    이어서 3개의 예제를 실습한다. 코드 구현을 통해 핵심 개념을 파악할 수 있음은 물론, GAN에서 겪게 되는 어려움인 모드 붕괴 등의 해결책을 익힐 수 있다.

    • 1010패턴
      [1,0,1,0]의 데이터를 입력받아 동일한 [1,0,1,0]을 생성하는 심플한 GAN을 만들어 본다.(엄밀히 1은 0.8 ~ 1.0의 임의의 수치를, 0은 0.0 ~ 0.2의 임의 수치를 의미한다.)

      비슷한 결과를 만들어내는 이 작업이 무슨 의미가 있냐 할 수 있겠지만 군더더기를 다 걷어냄으로써 핵심만 볼 수 있는 효과가 있는 매력적인 예제이다. 위의 3단계 핵심 개념에 맞춰 구현한 소스 코드는 아래와 같다. PyTorch답게 직관적이다.

      							    # 1단계 : 판별기 훈련(참 데이터)    D.train(generate_real(), torch.FloatTensor([1.0]))    # 2단계 : 판별기 훈련(거짓(생성기) 데이터)    # D가 훈련되지 않도록 detach()로 계산 그래프에서 떼어내므로 자동 미분 불가    # 생성기 인자가 0.5이므로 [1,0,1,0] 패턴은 등장하기 어렵다    D.train(G.forward(torch.FloatTensor([0.5])).detach(), torch.FloarTensor([0.0]))    # 3단계 : 생성기 훈련    # D의 오차가 전달되어 G의 가중치를 갱신    G.train(D, torch.FloatTensor([0.5]), torch.FloatTensor([1.0]))
      						

      이 예제에서 또 하나의 눈여겨볼 점은 손실 그래프를 그리면 0.25 값이 나온다는 사실이다. G의 인자로 활용된 0.5가 평균제곱(MSE)되어 0.25가 되었기 때문이다.

    • MNIST
      이 예제의 핵심은 모드 붕괴이다. 아래 그림과 같이 생성기가 하나 혹은 일부 클래스만 만들게 되는 현상으로 아직도 연구가 진행중이다.

      모드붕괴_146p

      생성기가 판별기 성능을 앞선 후, 실제에 결과가 가깝게 나오는 꿀 지점을 발견하여 그 이미지를 계속 만들어 낸다는 것이 이를 설명하는 그럴듯한 이론이다.

      예제에서는 손실함수 및 활성화함수 변경, 정규화, 생성기 입력을 정규화 하고 늘리는 방법 등을 통해 모드 붕괴를 개선한다.

      또 눈여겨 볼 점은 G와 D의 균형점에서 BCELoss()의 값이 0.693 정도의 값으로 수렴하는 것이 이상적임을 설명해준다. 이는 이진 교차 엔트로피에서 예상되는 손실 ln(2)의 값으로 부록 “이상적인 손실값” 부분에서 보다 심도 있게 다룬다.

      더불어 입력 시드를 더할 경우 이미지가 겹쳐 보이는(예를 들면 : 3모양 + 5모양 = 겹치면 8 모양) 현상이 나타나지만, 뺄 경우 직관적으로 예측이 불가능한 결과를 보이는 연구도 언급한다.

      이처럼 난이도는 쉬운 반면 다루는 깊이는 논쟁이 되고 있는 연구에 이르고 있어 이 또한 책의 장점이라 할 수 있겠다.

    • 얼굴이미지 생성
      이 예제의 핵심은 RGB, HDF5, CUDA 활용이다. 그리고 드디어 Likelihood의 개념이 등장하기 시작한다. (재미있는 것은 저자분이 예제마다 운이 좋게도 테슬라 T4를 얻었다고 자랑하신다. 아무래도 코랩 Pro나 유료 서비스를 이용하시는 것 같은데 은근 귀여우심..ㅎㅎ)

      얼굴_189p


  • 파트3 : 합성곱과 조건부 GAN
    이 파트에서는 GAN의 품질을 조금 더 높힐 수 있는 방법들을 다룬다. CNN을 활용하는 DCGAN, 메모리 공간복잡도 측정법, GELU 활성화 함수가 소개된다.

    특히, CNN의 구조를 직관적으로 잘 설명하고 있고 - 왠만한 딥러닝만 집중으로 다루는 책보다 훨씬 낫다 - 부록에서는 CNN 네트워크 설계 방법과 관련된 Tip을 다루고 있다. 예전에 들었던 앤드루 응 교수님의 코세라 대표 강의 Deep Learning Specialization보다도 핵심을 더 잘 요약했다고 생각한다.부록_264p

    CNN의 적용한 결과 위 얼굴이미지 예제에 비해 윤곽선이 또렸해 졌음을 확인할 수 있다.CNN적용_222p

    이어서 조건부 GAN 파트에서는 레이블과 Input 관계를 학습하는 것에 초점을 맞춰 특정 레이블에만 조건부로 집중하여 품질을 향상시켜 본다.

    마지막으로 부록에서는 위에 언급한 것들을 제외하고도 GAN의 우도 학습이나, f = xy 같은 심플한 함수로 불안정한 학습과 경사학습법의 한계를 다룬다. GAN의 심화 단계로 넘어가기 위한 필수 개념들을 심플하게 잘 전달하고 있다.부록_268p


끝으로 대부분의 기술서들과 달리 열정만 있으면 실력이 없어도 익힐 수 있는 차별화된 장점을 갖춘 멋진 책이라는 점을 강조하며 리뷰를 마친다.


GAN첫걸음.png



이보다 GAN을 쉽게 설명한 책은 없다!

2018년 10월 크리스티 경매장에서 약5억원에 낙찰된 자화상이 인공지능의 신경망이 그린 그림이란 뉴스를 접했을 때 너무나 놀라웠거 어떻게 그게 가능할까 궁금했던 기억이 났다. 이 새로운 신경망이 적대적 훈련이라는 기법으로 훈련되었고 그 구조를 생성적 적대 신경망인 GAN이라는 것이였다.

GAN은 우리가 인공지능은 창조적인 것까지는 넘 볼수없을거라는 생각을 깰 수 있게 한 기술인 것이다.

이 책은 GAN이 작동하는 원리를 기초부터 배울 수 있는 책으로 개념을 이해하고 따라하는 방식으로 되어 있다.

이 책을 보기전에 <신경망첫걸음(한빛미디어)>에서 신경망이 더 자세히 설명되어 있으며 GAN을 이해하는 데 도움이 되는 미분, 경사하강법에도 더 자세히 알 수 있으니 먼저 보고 GAN첫걸음을 읽어보는 것도 추천한다.

 

저자의 한마디를 빌리자면 독자 중 한 사람이라도 GAN이 무엇이고 어떻게 동작하는지 이해하지 못한다면 그건 저자의 책임이라고 써 있을 정도니 이책이 얼마나 GAN의 이해와 실습에 탄탄한 책인지를 알 수 있을 것이다.

 

<차례>

part1. 파이토치와 신경망 기초

- 파이토치 기본

- 파이토치로 만드는 첫 번째 신경망

- 성능 향상 기법

- CUDA 기초

part2. 튼튼한 GAN 만들기

-GAN개념

-단순한 1010 패턴

-손으로 쓴 숫자 훈련

-얼굴이미지

part3. 흥미로운 GAN 기법

-합성곱 GAN

-조건부 GAN

 

 



 

한빛미디어에서 제공받는 책으로 해당 리뷰를 작성하였습니다.

책표지!

1

OOO 첫걸음 책은 가볍게 들고 다니면서 읽어보기 좋다. 실습을 진행하지 않더라도, 얇은 책의 절반을 ‘기초’나 ‘개념’에 투자하기 때문에 대학원에서 머신러닝 공부할 때 많은 도움을 받았다. 이 책을 한빛미디어에서 받고, 내심 기다하는 바가 있었다. GAN에 대해서 가볍게 진행하겠지라고 생각했고, 당연히 TF를 기반으로 쉬운 예제를 돌릴 것으로 예상했다. 예상은 빗나갔다. 책 표지에 작게 적혀있는데, 못보고 지나쳤다.

2

이 책은 TF를 사용하지 않는다. 해당 교재는 파이토치(PyTorch)를 사용한다. 현재 학계에서 출판되는 논문의 경우 TF가 아니라 파이토치를 사용하는 경우가 많아서, 논문을 읽고 구현할 때 TF와 파이토치 두 가지를 모두 사용할 수 있어야 한다. 그런데 대부분의 딥러닝 교재가 당연하게도 TF를 중심으로 진행되기 때문에 PyTorch를 배우기 쉽지 않다. 교재가 흔하지 않고, 출판된 교재 자체가 기본적인 내용을 다루고 있기 때문에 아쉬운 점이 많다.

이 교재는 PyTorch를 Colab에서 기초부터 진행하고 있기 때문에 손쉬게 진행할 수 있다. 실습 환경 구성이 매우 쉽기 때문에 여타의 교재에 비해서 손쉽게 시작할 수 있다. 나도 4월에 이 책으로 스터디를 한 번 진행해 볼까 싶을 정도로 쉽게 잘 만들어진 교재다.

오홋!

3

GAN에 대해서 접근 방식이 코드를 위주로 진행하고, 수식을 소개하는 부분이 논문 수준(즉, 중간 계산을 생각보다 많이 건너뜀)이기 때문에 GAN을 상세히 배우기 보다는 파이토치를 사용해서 가볍게 접근하는 분들에게 유용하다. 딥러닝의 경우 대부분의 연구자들이 분야별로 자신만의 영역을 구축하는 경향이 강하기 때문에 GAN에 관심이 있는 초급 연구자나, 딥러닝 개발자라면 이 책으로 시작해서 TF를 병행해서 배워본다면 좋을 듯 싶다. 연구자라면 어짜피 둘 다 해야 된는데 TF보다 파이토치 쪽 자료를 먼저 해보는걸 추천한다.

수식 표현이 맘에 든다

 

GAN 첫걸음

 

파이토치 신경망 입문부터 연예인 얼굴 생성까지!

 

 

1.jpg

 

2.jpg

 

 

 

#GAN #파이토치 #인공지능 #신경망

 

#한빛미디어 #인공지능개발 #인공지능공부 #인공지능강의

 

#데이터분석 #데이터과학 #데이터분석강의 #머신러닝 #딥러닝

 

 

들어가기에 앞서 이 서적을 보기 전, 신경망 첫걸음이라는 서적을

 

먼저 보고 학습하시면 더 많은 이해와 도움이 될 것이라 생각합니다.

 

 

 

 

 

DAY 1, 2, 3

 

 

3.jpg

 

4.jpg

 

5.jpg

 

6.jpg

 

 

1챕터는 크게 어렵지 않습니다, 주피터 노트북이나 구글 코랩을 이용하여 작업하는 내용이 대부분이고 모듈 사용, 파이토치 텐서, 계산법 등 처음 접하시더라도 재미있는 내용이 주를 이루고 있습니다 ^^

 

파이토치는 파이썬 기반의 머신러닝 프레임워크입니다. 넘파이와 마찬가지로 숫자로 이루어진 행렬을 다룰 수 있게 도와줍니다. 또한 머신러닝을 쉽게 해줄 다양하고 편리한 도구와 함수를 제공하기 때문에 해당 서적에서는 파이토치 모듈을 이용해 소개하고 있습니다.

 

파이토치의 주요 기능 중 하나인 기울기를 위한 자동 계산에 대해서도 나오니, 꼭 어렵더라도 실습해보시고 넘어가세요 ^^

 

2챕터부터 재미있는 친구들이 나오기 시작합니다.

 

 

데이터를 얻고 살펴보고 간단한 신경망부터 훈련 시각화하는 방법까지 좋은 내용을 담고 있습니다.

 

분류기를 훈련시키고 신경망에 쿼리 하는 내용까지 정말 주옥같은 내용이 담겨있고 필수적인 내용이 담겨있는 챕터라고 생각됩니다.

 

 

3챕터에는 훈련이 어떻게 진행되는지 손실 값을 시각화하는 것부터 정규화까지 내용을 다루고 있습니다.

 

많이 어려울 수 있는 챕터라고 생각합니다.

 

더 나은 성능을 구축하기 위해 여러 개념이 등장하는데, 처음 하시는 분들은 상당히 까다로울 수 있으니 정독하시길 권장해드립니다.

 

 

 

 

 

DAY 4, 5, 6

 

7.jpg

 

8.jpg

 

9.jpg

 

10.jpg

 

 

 

중요하지 않은 챕터가 없지만 4챕터는 엔디비아 CUDA에 대하여 다루고 있습니다. 정말 필수적입니다.

 

단일 연산에서는 CPU 처리 속도가 높을 수 있지만, 방대한 양의 데이터를 다루려면 GPU는 필수이기 때문입니다.

 

CPU는 굉장히 많은 연산 코어를 통해 특정한 작업을 굉장히 빠르게 합니다.

 

우리가 알고 있는 그래픽 관련 연산이 빠르다고 생각하지만 머신러닝 분야 관련 계산을 하는 데에도 굉장히 빠른 성능을 자랑합니다.

 

 

조금 힘들고 지루한 3, 4챕터(?)를 지나고 5, 6챕터부터 GAN이 등장합니다.

 

GAN의 개념과 훈련과정과 생성기, 판별기를 각각 따로 시각화하는 것 등 저도 처음 접하는 내용이 나옵니다.

 

굉장히 재미있게 읽었던 챕터입니다.

 

 

GAN을 훈련하는 좋은 방법은 단계에 맞춰 훈련하는 것으로 실제 데이터를 미리 살펴보고 판별기가 적어도 실제 데이터와 임의의 노이즈를 구별하도록 학습할 수 있을 성능은 지니는지 확인 후 훈련되지 않은 생성기가 올바른 형태의 데이터를 만들어내는지 확인합니다.

 

그리고 손실이 어떻게 변하는지 시각화 과정을 거칩니다.

 

이렇게 앞 장에서 GAN의 많은 기능을 코드로 구현하고 실제로 사용해보면 7챕터에서는 실제 손으로 쓴 숫자 훈련에 대하여 다룹니다.

 

데이터 셋을 사용하고 판별하며 테스트하는 과정을 실제 코드로 구현해봅니다, 또한 생성기 결과를 확인하고 GAN 훈련을 거쳐 성능을 향상시키고 시드로 실험까지 해봅니다. 굉장히 많은 작업을 거치고 중요한 이론이 많이 나오지만, 막상 리뷰에 다 적을 수는 없어 안타깝습니다.

 

그만큼 매우 좋은 서적이라는 생각이 드네요! 꼭 구매해서 보세요.

 

 

 

 

 

DAY 7, 8, 9

 

 

11.jpg

 

12.jpg

 

13.jpg

 

14.jpg

 

 

8챕터는 7챕터와 같이 파트 2 부분이라 7챕터 후 이어서 바로 진행하시는 것을 추천해 드립니다.

 

9, 10챕터에서는 합성곱 GAN, 조건부 GAN이라는 개념에 대하여 등장합니다.

 

합성 곱은 특성 맵을 산출하기 위해 이미지에 커널을 적용하는 것입니다. 특정 커널은 이미지에서 지역화된 특성을 찾아낼 수 있다고 합니다. 신경망의 합성곱 레이어는 주어진 작업에 대해 좋은 커널을 학습할 수 있습니다. 즉, 신경망에서 어떤 이미지 특성이 제일 쓸모 있는지 일일이 알려주지 않아도 된다는 뜻입니다. 합성 곱을 이용하는 신경망은 완전 연결 신경망보다 더 나은 성능을 보입니다.

 

합성곱 신경망에 기초를 둔 GAN은 이미지를 저, 중, 고의 계층구조로 만듭니다. 완전 연결 신경망을 기초로 하는 GAN보다 더 나은 성능을 보인다고 알려졌습니다.

 

조건부 GAN은 일반적인 GAN과 달리, 원하는 클래스의 데이터 생성이 가능합니다.

 

훈련 시 판별기에 이미지를 보강해서 전달하며, 생성기에는 클래스 레이블을 통해 시드가 투입되어야 합니다.

 

조건부 GAN은 레이블 정보를 받지 않은 일반적인 GAN보다 좋은 이미지 품질의 데이터를 생산합니다.

 

 

 

 

 

 

DAY 10

 

 

15.jpg

 

main.jpg

 

 

머신러닝은 정말 멋집니다!

 

후기 : 윤리적으로 학습하는 습관을 기릅시다.

 

 

GAN으로는 사실과 가까운 인공 데이터를 만들 수 있습니다. 이를 오용하면 그 파급효과가 상당히 클 수 있습니다. 몇몇 단체는 안전하고, 윤리적이며, 책임감 있게 머신러닝이 사용될 수 있게 프레임워크와 가이드라인을 만들고 있습니다.

 

추후에 여러분의 학습 결과가 사람들에게 영향을 미칠 수 있다고 생각한다면 이 점에 대해서도 한번 생각해 보기 바랍니다.

 

- GAN 첫걸음 中 -

 

 

머신러닝, 딥러닝은 정말 재미있는 분야입니다.

 

저도 데이터 분석부터 천천히 공부하여 지금은 인공지능 분야까지 공부를 시도하고 있고

 

산출물과 어플리케이션, 웹 사이트를 구축해보거나 해당 데이터를 판별하는 시스템을 많이

 

작품화하려고 노력하였습니다.

 

쉽지 않았고 지금도 쉽지 않지만, 정말 재미있고 무한대로 응용이 가능한 분야임에는 확실한 것 같습니다.

 

아직 하수지만, 인공지능이 산출물과 작품, 결과물과 연구성으로 평가받는 분야이다 보니

 

개발해서 실제 작품으로 출시했을 때를 기억하며, 최대한 많이 공부해서 작품으로 응용해보려고 노력하고 있습니다.

 

더 나은 인류와 미래사회를 위해

 

파이팅입니다.

 

리뷰를 마치며!

 



인공지능 서적들의 대부분이 원리를 알려주기 위해 수학공식을 나열해 놓는다.

 

이게 맞는거지만.. 나같은 수포자들에겐 너무 힘든 부분중 하나....

 

이 책에서는 나같은 사람들이 거부감 없이 책을 읽을 수 있게 수학공식보다는 이해하기 쉬운 설명으로..

 

차근 차근 설명을 하고 있다는게 최대 장점이다.

 

 

최근의 인공지능 분야가 엄청난 성장세를 보이고 있습니다. 기업들은 인공지능 개발자를 많이 찾고 있는데 아직 그 수요를 못 쫓아가고 있습니다. 인공지능은 이제 우리 삶에 깊숙하게 들어와서 많은 변화가 일어나고 있습니다. 컴퓨터가 단순 계산 명령어만 처리 하는것이 아니라 창의적인 처리 할수 있는 기술이 바로 GAN입니다. 이 책에서는 GAN에 대해서 어떻게 배워야 하는지 하나 하나 배울수 있습니다. 이책을 보기전에 먼저 머신러닝, 딥러닝에 대한 기초 지식을 가지고 있어야 여기서 배우는 신경망에 대해서 이해 할수 있을 겁니다. 그리고 파이썬 기본 문법과 파이토치에 대해서도 약간의 지식이 있으면 좀더 이해하는데 도움이 될것입니다.


이 책은 GAN의 입문서로서 기초 이론과 실전 예제 까지 PART 3부분으로 구성되어 있습니다. 

1부는 파이토치와 신경망 기초로 간단한 이미지 분류기를 만들어 보고 파이토치에 대해 배우고 신경망에 대한 지식을 배울수 있습니다.

1장 파이토치 기본

2장 파이토치로 만드는 첫 번째 신경망

3장 성능 향상 기법

4장 CUDA 기초


2부는 튼튼한 GAN 만들기로 적대적 훈련을 소개하고, 점차 복잡한 GAN을 구성해 봅니다. 처음에는 간단한 1010 패턴에 대해 알아보고, 손으로 쓴 단색 숫자 이미지를 거쳐 마지막으로는 풀컬러 얼굴 이미지로 학습을 합니다.

5장 GAN 개념

6장 단순한 1010 패턴

7장 손으로 쓴 숫자 훈련

8장 얼굴 이미지


3부는 흥미로운 GAN 기법로 GAN의 핵심 아이디어를 조금 더 확장해서 합성곱 신경망을 적용하고, 조건적 GAN을 통해 원하는 클래스의 데이터를 생성해봅니다.

9장 합성곱 GAN

10장 조건부 GAN

11장 결론

 

인공지능을 배우는 방법 중 가장 좋은 방법은 바로 배운 것을 그대로 실습 해보는 것입니다. 이책에서는 입문자들도 쉽게 따라 할수 있도록 이론과 실습 코드에 대해서 잘 안내 하고 있습니다. GAN으로 만들어낸 인공 데이터로 어떻게 새로운 산업에 접목하여 발전을 할수 있을지 기대가 됩니다.

코랩을 이용한 무료 분석환경. 기초부터 심화까지 단계별 학습과정. 

딥러닝을 이미지 분석으로 시작하시는 분들에게 추천드리는 책입니다.

많은 사람들이 인공지능에 관심을 가지고 있으며

한 번쯤은 인공지능 관련 서적을 찾아보았을 듯 하다.

그럼에도 인공지능 관련 분야를 전공하지 않은 사람이라면 조금은 어렵기도 한 분야이다.

그래서 요즘엔 정말 쉽게 쓴 인공지능 관련 서적들이 많이 나오고 있다.

개발자인 본인도 인공지능에 관심을 갖고자 책을 접하게 되었다.

이 책은 머신러닝 분야 연구를 위한 기초 입문서이다.

GAN이 동작하는 원리를 기초부터 알고 싶은 사람과

업계 표준 도구로 GAN을 만들어보고 싶은 사람을 위해 쓰였다.

이 책은 구글 코랩 환경을 바탕으로 설명하고 있으며

예제 코드를 자세히 설명하면서 쉽게 따라 할 수 있도록 하였다.

설명을 최대한 쉽게 하려한 흔적이 보인다.
문장이 어렵지 않아서 가독성이 좋다.
그렇지만 빠르게 볼 수 있는 자기계발서는 아니기 때문에 금방 완독할 수준은 아니다.

GAN에 대해서 가볍게 첫걸음을 걷고자 한다면... [GAN 첫걸음]을 추천한다.

 

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스(mnist_train&test) 2024-01-30 다운로드
DOWNLOAD 예제소스(img_align_celeba_20000) 2024-01-30 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
GAN 첫걸음
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
GAN 첫걸음
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
GAN 첫걸음
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0