본 포스팅은 Coursera – Generative Adversarial Networks 과정을 참고하였습니다.
안녕하세요~
오늘은 GAN에 대해 좀 직관적으로 설명을 해보고자 합니다.
수식이 없이 직관적으로 설명하기 때문에 조금 더 쉽게 이해 하실 수 있을 것 같습니다.
GAN은 현실적인 물체를 만들어내는데 강력한 모델로 실제 존재하는 것과 만들어 낸 것을 구별
하기 힘들 정도 입니다.
예를 들면, 지난 시간에 봤던 사람 얼굴 생성이 그 예입니다.
GAN은 Generator와 Discriminator를 만들어 가면서 학습을 하는데, 이 둘을 경쟁시키면서 학습을 진행합니다.
이번 시간에는 generator와 discriminator의 목적과, 두 사이의 경쟁에 대해 알아보고자 합니다. 이 것들은 두개의 다른 neural network입니다.
Generator는 discriminator를 속이기 위해 진짜처럼 보이는 가짜들을 생성하는 법을 배웁니다.
Discriminator는 무엇이 진짜이고 무엇이 가짜인지를 구별하는 법을 배웁니다.
여러분은 generator를 그림 위조범이라고 생각하고 discriminator를 미술품 감정사라고 생각하시면 쉬울 것 같습니다.
Generator는 가짜 그림을 가능한 진짜 같도록 위조하기 위해 노력하고, 그 위조품이 discriminator(미술품 감정사)를 속일 수 있기를 바라는 것입니다.
여기 그림들이 있습니다. 고흐의 별이 빛나는 밤에와 몽크의 절규라는 작품이 있습니다.
이것들은 꽤나 괜찮아 보입니다.
반면에 미술품 감정사(discriminator)는 여기서 실제 진품과 그림 위조범(generator)에 의해
만들어진 가품이 어떤 것인지 판별합니다.
보라색 박스로 된 것들이 가품이고 녹색 박스로 된 것들이 진품입니다.
여러분이 이 예를 통해 조금 이해하셨는지 모르겠지만, discriminator를 속이기 위해,
generator는 실제와 더 흡사한 그림을 위조하려고 노력 할 것입니다.
그리고 discriminator는 generator에서 생성된 가품을 잡기 위해 심지어 정말 비슷한 복제품에도 속지 않는 방법을 배우려고 노력할 것입니다.
이 게임을 시작하기 위해서, Generator가 유명한 그림을 그리길 원한다면,
여러분이 필요한 것은 몇몇 유명한 그림들과 같은 실제 이미지들의 데이터 셋입니다.
처음에 Generator는 사실 그다지 정교하지 않습니다. 진짜처럼 보이는 예술작품을 만드는 법을 모르기 때문에, 초기 Generator는 위의 그림처럼 그림 그리려는 강아지 같습니다.
무엇을 해야될지 아무것도 모르는 상태인 것이죠.
게다가, generator는 실제 이미지를 볼 수 없습니다. 만들어야 할 그림이 어떻게 생겼는지
알 수 없습니다. 이것은 generator에 있어서, 특히 초기에는 매우 어려운 일입니다.
상상해보세요! 여러분이 화가인데 실체가 없는 사람의 모습을 그려야 된다고 생각해보면정말 어떻게 그려야 할 지 감이 안오지 않을까요? 하지만 그려야 할 사람의 사진이 주어진다면 그래도 정보가 있기 때문에 어떻게 그려야 할지 대충 감이 올 것입니다.
그래서 초기에 generator는 정말 말도 안되는 그림을 생성합니다.
Discriminator는 초기에 무엇이 진짜이고 무엇이 가짜인지 확실히 알지 못하는
기본적인 판별자입니다.
위에 그림에서 베레모를 쓴 강아지로 묘사되고, 미술품 감정사가 되려고 노력합니다. Generator와는 다르게 Discriminator는 실제 작품을 보는 것을 허락합니다.
그것은 가짜들과도 뒤죽박죽이고, discriminator는 어느것이 어떤 것인지 모릅니다.
discriminator는 작품이 진짜인지 가짜인지를 결정하는 방법을 파악하고 배우게 됩니다.
이제 경쟁을 시작하기 위해, 실제 예술작품을 사용하여 discriminator를 훈련시키면
어떤 이미지가 실제인지 알 수 있습니다. 그래서 그것이 그를 결정짓고 나면, 이것이 진짜처럼
보일지도 모릅니다. 여러분은 실제로 그렇다고 대답합니다.
그것은 진짜이거나 아니거나, 그것은 가짜입니다.
이렇게 하면, 이렇게 잘 그려지지 않은 이미지, 약간 더 나은 이미지, 실제 이미지를 구별할 수 있는 판별기를 얻을 수 있습니다.
물론 discriminator는 이런 이미지들을 랜덤하게 받아서 판단합니다.
그래서 어떤게 진짜고 가짜인지 사전에 알지 못합니다.
두 클래스(진짜, 가짜)를 결정한 것이 옳거나 그른지 여부에 관계없이 어떤 것이 진짜인지,
어떤 것이 가짜인지를 discriminator가 판단하고 나서 학습할 때 말해줍니다.
그리고 generator가 일련의 그림을 생성 할 때, generator는 discriminator가 자신이 생성한그림에 할당 한 점수(5%, 40%, 80% real)를 보고 어떤 방향으로 진행하고 개선해야하는지 알게 됩니다.
첫 번째 그림보다, 두 번째 그림이 좀 더 사실적으로 보입니다. 아마도 generator가 이제부터좀 더 사실적으로 칠하기 시작할지도 모릅니다?! 아직 거기까지는 아니지만, 모나리자의 얼굴을 그리는 날까지 계속해서 발전해 나가려고 할 것입니다!
또한 Discriminator는 Generator로 부터 각 라운드마다 점점 더 사실적인 이미지를 받기 때문에 시간이 지나면서 개선이 됩니다. 기억해야 될 것은 Discriminator는, 실제 이미지와 가짜 이미지를 모두 받으며, 이미지들은 섞여 있습니다.
이 이미지는 Generator에 의해 위의 그림과 같이 더 좋아지고 Discriminator는 예리한 눈과 예리한 시선을 발전시키려고 합니다. 그래서 여기 Generator에 의해 만들어진 이 이미지는 60% 진짜입니다. Discriminator는 이 것이 60% 진짜라고 말한 후에 이 것은 진짜가 아니고, 실제로 가짜라고 말합니다.
많은 라운드가 지나면 Generator는 구별하기가 더 어려운 그림을 만들기 시작합니다. Discriminator가 진품과 가품을 구별하는 것이 불가능하고, Generator가 충분히 만족할만한 가짜 이미지를 만들어내면 게임이 종료됩니다.
정리하면!
Generator의 목표는 Discriminator에게 보여준 생성한 이미지가 진짜라고 믿게 하는 것입니다.
Discriminator의 목표는 진짜와 가짜를 정확하게 구별하는 것이고, 두 모델 모두 서로 경쟁에서 배울 수 있습니다.
Generator에 의해 생성된 이미지가 Discriminator를 속일 정도로 멋진 이미지를 만들 때 까지 경쟁하면서 말입니다.
다음 시간 부터는 이러한 직관을 가지고 어떻게 이러한 경쟁이 작동하는지 더 깊게 알아보겠습니다.
감사합니다.
'Artificial Intelligence > GAN' 카테고리의 다른 글
Week 1 : Intro to GANs - Real Life GANs (0) | 2021.03.04 |
---|---|
Week 1 : Intro to GANs - Generative Models (2) | 2021.03.04 |
댓글