본문 바로가기

소프트웨어 자문 및 개발/AI: 인공지능, 머신러닝, 딥러닝

(6)
GAN을 공부할 때는 파이참을 써 보세요. 소프트웨어 개발을 한다거나, 기존에 작성되어 있던 소프트웨어를 연구해 본다거나 학습을 하려 할 때에 쓸 수 있는 도구는 다양합니다. 그 중에서도 주피터 노트북은 학습 시에 자주 사용되는 도구입니다. 하지만 저는 주피터 노트북보다는 파이참을 추천합니다. 파이참의 디버깅 기능을 사용하면 GAN의 실행 과정을 낱낱이 분해해 볼 수 있습니다. 무엇보다도 이 실행 과정에 쓰이는 각종 객체들의 내용을 실시간으로 확인해 볼 수 있어서 좋습니다. 파이참은 유료판과 무료판이 있으며, 무료판만으로도 거의 모든 기능을 사용해 볼 수 있습니다. 처음에는 손에 익히기 어려울지 몰라도 일단 익히고 나면 참 만들어진 통합개발환경(IDE)이구나라는 생각이 저절로 들 것이라고 생각합니다.
다양한 GAN 아키텍처를 케라스로 구현해 둔 곳 GAN 아키텍처는 참 다양합니다. 이렇게나 다양한 GAN 아키텍처를 친절하게 케라스(Keras)라는 프레임워크로 구현해 둔 곳이 있습니다. 주소는 https://github.com/eriklindernoren/Keras-GAN입니다. GAN을 연구한다면 꼭 들러볼 만한 곳입니다.
GAN을 고안한 사람은 누구일까? 그리고 최신 GAN 아키텍처는? GAN(generative adversarial networks, 생성적 적대 신경망)을 고안한 사람은 이안 굿펠로우(Ian Goodfellow)입니다. 그가 GAN을 고안하기 전에도 여러 생성 모델(generative models)이 있었습니다. 모두 무언가를 생성해 내는 데 쓰이던 것들입니다. 하지만 기존(legacy) 생성 모델들에는 저마다 문제가 있었고, 이안 굿펠로우는 GAN을 다룬 그의 논문에서 이러한 문제들을 정리해 두었습니다. 이에 관한 내용이 제가 번역한 책, (2019, 위키북스 펴냄, 박진수 옮김)의 앞 부분에 번역되어 실려 있으니 이 부분을 참고하시면 됩니다. 이 이후로 처음 나왔던 GAN(보통 '바닐라 GAN'이라고 부릅니다)을 변형한 GAN 아키텍처들이 아주 많이 나왔습니다. 대..
GAN을 어디에 응용할 수 있을까요. GAN을 응용할 만한 분야는 정말로 많습니다. 일단 GAN(생성적 적대 신경망)이라는 이름에서 알 수 있듯이 무언가를 생성해 내는 일을 거의 다 할 수 있을 걸로 보입니다. '생성'이라는 말이 낯설다면 '창작'이라는 말로 대신해도 됩니다. 그러므로 무언가를 '창작'해 내는 일을 거의 다 GAN으로 할 수 있습니다. 그렇다면 사람들이 무언가를 창작해 내는 일로는 어떤 것들이 있을까요? 우선 생각나는 건 작사, 작곡, 작시, 작문, 작화, 작명입니다. 노랫말을 짓고, 곡을 쓰고, 시를 짓고, 글을 쓰고, 그림을 그리고, 이름을 만들어 내는 일 같은 것들 말입니다. 이게 다가 아닙니다. 뉴스 기사를 쓰는 일, 설계도를 그리는 일, 번역하는 일, 의료 영상을 만들어 내는 일, 사진의 해상도를 높이는 일, 사진을..
GAN을 연습하는 데 필요한 컴퓨터 용량 GAN(generative adversarial networks)으로 해 볼 만한 일은 참으로 많습니다. 우리가 흔히 '창작'이라고 부르는 일과 '모작'이라고 부르는 일들을 GAN으로 해 볼 수 있습니다. 이와 같은 작업이 얼마나 난해하느냐에 따라서 GAN을 배우고, 만들고, 쓰는 데 필요한 컴퓨터 시스템의 용량이 달라질 것입니다. 이번 글에서는 GAN을 배우는 데 필요한 최소한의 사양을 추천해 보려고 합니다. CPU: 최신 세대 i5 이상 RAM: 32GB 이상 GPU: GTX1060 이상(현재는 이게 단종된 것 같으므로, 이에 필적하는 그래픽 카드 이상) 이 정도만 있어도 GAN 모델을 배우는 데는 지장이 없을 것으로 보입니다. 다만, GAN 모델은 학습횟수(즉, 에포크 수)가 많을수록 잘 학습되는 ..
GAN이란 무엇인가? GAN이란 generative adversarial networks의 약자입니다. 우리말로 그대로 번역하자면 '생성적 적대 망'이라고 할 수 있습니다. 그렇지만 보통 '생성적 적대 신경망'이라거나 '적대적 생성 신경망'이라고 부릅니다. 이렇게 부르는 게 귀찮은 사람은 영어 약자를 그대로 발음해 그냥 '갠' 또는 '간'이라고도 부릅니다. 이건 수많은 인공 신경망 아키텍처 중에서도 독특한 구조로 되어 있습니다. 두 개의 인공 신경망이 서로 대항하며 훈련함으로써 궁극적으로는 가장 뛰어난 능력을 보이는 신경망이 되게 하는 구조입니다. 이 때 서로 대항하는 각 신경망을 하나는 '생성기(generator)'라고 하고 또 다른 하나는 '판별기(discriminator)'라고 합니다. 이 GAN은 다양한 생성 모델 중..