생성적 적대 신경망(Generative Adversarial network)은 GAN 혹은 GANs(networks)이라고 표기하며, 한국에서는 간이라고 많이 말하지만 영어 발음으로는 겐, 갠이라 발음한다.
보통 한가지에 치중된 신경망 모델들과 다르게 GAN은 2가지(생성자, 판별자) 종류의 신경망을 가지고 있으며, 이를 통해서 진짜 같은 가짜를 만들어내는 것을 목표로 두고 있는 딥러닝(Deep Learning) 알고리즘이다.
GAN 단어의 의미
생성적(Generative)
일단 메인이 되는 것은 바로 생성이라고 할 수 있으며 GAN의 첫번째 단어인 Generative(생성적)는 바로 데이터를 스스로 생성하는 생성자(Generator)를 뜻한다. 데이터를 생성하는 것은 훈련 세트에 따라 결정되기에 예를 들어 고흐의 작품처럼 만들고 싶을 경우 고흐의 작품 데이터셋을 준비하면 된다.
적대적(Adversial)
생성적이라는 것이 생성자를 뜻한다면 적대적은 판별자를 의미하는 것이라 착각할 수 있겠지만, 적대적이라는 의미는 생성자와 판별자 사이의 관계를 뜻한다.
생성자가 모조품을 진짜처럼 계속 만들어내는 과정에 있어서 판별자는 점점 더 진짜 같은 모조품들을 감별해야 하며 서로 이기고 지는 싸움을 수없이 반복하면서 모델은 더욱 정교해지고 성장해 나가게 된다.
신경망(Networks)
마지막에 사용된 신경망은 단어 그대로 GAN은 신경망으로 구현된 알고리즘이라는 것이다. GAN을 구현하기 위해서 한가지의 신경망만 사용되지 않으며 FNN(피드포워드 신경망)부터 U-Net까지 다양하다.
GAN의 동작이해
GAN의 모델을 이해하기 위해서는 수학적인 지식과 상당한 딥러닝 지식이 필요하지만, 개념적으로 이해하는 방법으로는 최초로 GAN을 고안한 이안 굿펠로(Ian Goodfellow)가 자주 사용하는 위조 화폐의 예시가 있다.
지폐의 모조품을 만들려는 지폐 위조범을 생성자(Generator)라고 하고 위조범을 잡기 위해서 형사가 지폐를 판별한다고 할 때 형사가 위조 화폐를 판별해 냈다면 생성자는 이를 피드백으로 받아서 다른 시도로 모조품을 만들어 내고 형사가 감별을 하는지를 통해서 결국에는 구별이 힘든 모조품을 만들어 낸다.
여기서 핵심은 Generator라고 할 수 있을 것이다. 모조품을 판별해 내는 것은 분류 모델이기 때문에 특별히 새로운 기술은 아니기 때문이다. 생성자는 위 이미지처럼 Random Input 값으로 구성된 벡터를 생성해 내서 모조품을 만들어 내는데 이때 판별자는 훈련 데이터에 있는 실제 샘플(여기서는 진짜인지 가짜인지 레이블된 지폐 데이터)을 토대로 학습 모델을 만들었을 것이고, 모조품이 진짜인지 가짜인지 예측 확률을 통해서 감별해내며 판별자는 수많은 모조품들을 판별할수록 자체적으로도 성능이 향상되게 된다.
GAN의 활용사례
패션, 예술 및 광고
첫번째 고흐에 대해서 설명을 한 것처럼 특정 작품을 따라할 수 있는 능력을 가지고 있으며 GAN을 잘 활용할 수 있다면 가상의 패션 모델 사진을 만들수도 있게 된다. 예를 들어 가상의 모델을 만들어 내고, 여기에 현실의 옷을 입힌다던지...
비디오 게임
기존 비디오 게임의 저해상도 버전을 GAN을 통해 선명한 2D 텍스쳐 이미지를 만들어 낸다. GAN을 사용해서 재탄생한 예로는 스퀘어(Square)의 명작 RPG 게임인 파이널판타지(Final Fantisy) VIII, Final Fantasy가 대표적이라 할 수 있다.
영화산업
최근 들어 이미 사망한 배우를 현실 세계로 소환하거나 배우의 과거의 모습을 재현하는 경우가 많아졌는데 이런 케이스 역시 GAN으로 만들 수 있을 것이다.
딥페이크(Deep Fake)
최근 가짜 포르노 영상을 만들면서 악의적인 AI의 대명사가 되어버린 딥페이크 역시 GAN을 기반으로 만들어진 영상 합성 모델이다.
참고자료
Generative adversarial network - wikipedia
'인공지능 및 데이터과학 > 인공지능 기술' 카테고리의 다른 글
[데이터전처리] 레이블 인코딩(Label Encoding) 기법 (0) | 2021.06.07 |
---|---|
희소 표현과 분산 표현, 차원의 저주 (0) | 2021.03.11 |
[Python] 파이썬으로 얼굴의 특징값(Face Landmark) 가져오기 (0) | 2021.01.10 |
원핫 인코딩(One-Hot Encoding) 개념과 구현해보기 (1) | 2020.08.01 |
선의보다 악의가 더 많은 AI의 어두운 기술, 딥페이크(Deep Fake) (0) | 2020.01.24 |