"What I cannot create, I do not understand"
- Richard Feynman (Theoretical Physicist)
리처드 파인먼의 띵언이며
"내가 창조할 수 없는 것, 나는 이해할 수 없다." 라는 뜻을 갖고있다.
GAN이 기존 데이터셋에서 온 것처럼 보이는 새로운 이미지를 생성한다면, 이들이 실제로 데이터셋을 이해하고 있는 것일까?
아마도 아닐 것, 하지만 GAN은 생성자(Generator)와 판별자(Discriminator)로 구성되어 있어, 데이터셋에 대해 많은 것을 학습하게된다.
돈을 위조해서 전문가(마피아)에게 팔고 싶어하는 야심 찬 젊은 범죄자를 상상해보자.
마피아는 위조지폐가 진짜인지 가짜인지 판별하는 데 있어 전문가임에 틀림없다.
따라서 처음에는 위조 지폐가 쉽게 식별된다.
범죄자는 이를 통해 개선을 거듭하며 점점 더 진짜처럼 보이는 지폐를 만들게 되게된다.
동시에, 마피아는 위조 지폐를 식별하는 능력이 향상되며, 두 사람은 서로 경쟁하며 발전을 한다.
저번엔 실패했지만, 다시한번 가짜 지폐를 만들어서 진짜 지폐와 가짜 지폐를 섞어서 마피아에게 건넸다.
하지만 마피아는 아직도부족하다며 돌려보낸다.
그는 계속해서 가짜 돈을 만들고, 그가 기본적으로 마피아를 거의 속이는데
매우 능숙하거나 기본적으로 대부분의 시간 동안 그를 속이는 지점에 도달할 때까지
계속해서 개선한다.
범죄자는 위조 화폐를 더 잘 만들것이며, 마피아는 속임수를 더 잘 알아챌 거다.
따라서 둘 다 동시에 좋아진다.
그리고 그것이 아주 좋은 품질의 가짜 화폐, 가짜 위조 화폐로 이어지게 된다.
이처럼 두 사람이 서로 경쟁하며 발전하는것,
이것이 GAN이 만들어지는 방식이다.
생성자 네트워크는 젊은 범죄자
판별자 네트워크는 전문가
생성자는 랜덤 데이터를 입력받아 가짜 데이터를 생성하고, 판별자는 이를 받아 진짜인지 가짜인지를 예측한다.
GAN의 구조를 시각화 한것이다.
흐름은 아래와 같은데
잠재 공간 + 노이즈 -> 생성자 (가짜 이미지 생성) + 실제 이미지 -> 판별자 -> 판별자가 맞았는가? -> 훈련
여기서 잠재 공간은 고차원 데이터의 숨겨진 구조를 표현하는 저차원 공간이다.
이는 주로 데이터의 중요한 특징을 요약한 벡터 형태로 나타내어
데이터의 본질적인 패턴이나 분포를 보다 간결하게 표현할 수 있도록 해준다.
임의의 노이즈로 부터 잠재 공간을 추출하여 생성자는 이를 이용해서
실제 데이터와 유사한 가짜 데이터를 만드며
이 과정을 통해 생성자는 잠재 공간의 다양한 지점을 탐색하며
데이터의 다양한 특성을 학습하게 된다.
간단히 말해, 잠재 공간은 복잡한 데이터를 압축된 형태로 표현한 공간으로, 이를 통해 GAN은 새로운 데이터를 생성할 수 있다.