과학

딥러닝 시리즈 ) GAN의 원리가 몰까요

안녕 개붕쓰들아

난 예전에 딥러닝을 정말 알기쉽게 써봄으로 읽판에 글을 남겼었어

여기 개드립간 글에서 여러모로 토론도 해보고 ai 파는 대학원생들이 정말 많단걸 느꼈는데

생각보다 딥러닝에 대해서는 많이들 안 썼더라구?

그래서 내가 틈새시장으로 딥러닝에 대해서 슬~슬 써보려고 해

 

일단 내가 서술할 방향은

- 아무 베이스도 없는 사람도 쉽게 이해할 수 있게

- 최대한 수학적 수식을 배제하고 직관적으로

- 하지만 원리 자체는 정확하게

으로 쓰는게 목표야!

 

오늘 다룰건 GAN 이란건데

예~전에 썼던 글을 보니 한 개붕이 요즘 핫하다고 다뤄달라고 하더라구

근데 사실 GAN 자체는 2014년에 나온거고 2016년에 빵터지더니

요즘은 잘 모르겠다?? 정체기 비스무리하게 온거같아

WGAN 이후론 마땅한 해결책도 없는거같고

 

아무튼 왜 GAN을 골랐느냐하면

생각보다 원리가 재미있기도 하고

내가 세미나에서 다룬 주제라서 그냥 내가 공부한걸 정리한 겸 쓰려구 해 ㅎㅎ

 
1. GAN의 약자가 모임

Generative adversarial Network의 약자야

생성적 적대 신경망... 이란건데

풀어보자면

Generative - 무언가를 만드는!

adversarial - 정 반대의 역할을 하는 뭔가가 있는! 적이 있는!

network - 네트워크... 신경망임

이야

말 그대로 뭔가 만드는 녀석인데, 정 반대의 역할을 하는 뭔가가 있다는거지.

 
2. 그럼 역할이 모임

GAN은 위에서 말했듯 말 그대로 만든다는거야.

그럼 도대체 뭘 만든다는걸까?

 

gan gogh 이미지 검색결과

 

아마 개붕이들 이런 그림 한번쯤 봤을거야

인공지능이 무려 이런걸 만든다!! 사람이 그린것과 구분이 안 된다!!

라면서 GAN이라는 단어를 조금이라도 들어봤을지 몰라

맞아 이게 바로 GAN의 역할이야.

바로

"원래 그림과 구별되지 않을 만큼

그럴듯한 그림을 만들어 내는 것" 이야.

 
3. '원래 그림'..?

 

근데 여기서 잠깐! 원래 그림이란건 뭘까?

우리가 원래 그림을 말할 때는, 사람이 그린 그림을 말하잖아.

우리는 뭘 기준으로 사람이 그린 그림을 말하고, 인공지능이 만든 그림을 말할까..?

아니, 인공지능이 만든 그림이란게 따로 있나...?

사실 인공지능이 만든 그림이란건 "사람이 그린거같지 않은 그림" 을 말하는 거 아닐까?

 

오... 그렇다면 내가 위에서 말한 큰따옴표로 둘러친 "역할"을 잘 수행하려면

'사람이 그린거같은 그림'이 도대체 어떤 느낌인지 알아야

반대로 '사람이 그린거같은 그림'을 만들어낼 수 있단거네!

너무 당연한 말인가..?

 

좋아. 근데 문제가 하나 있어.

사람이 그린거같은 그림은 전 세계에 너무나 많이 존재해.

그러니까, 답안이 딱 하나만 있는게 아니란거야.

 

예를 들어 사람의 키와 몸무게가 아닌 것을 고르시오 해보자.

1. 150 50 / 2. 200 10

정답이 2번인 것은 누구라도 알겠지.

근데 이걸 딱 정답이다 라고 프로그래밍 시킨다면. 과연 다른 보기가 주어져도 풀 수 있을까?

3. 300 50

이 보기가 틀렸는지 구별해낼 수 있겠냐 이거야.

 

우리는 대충 사람의 키와 몸무게가 대충 어느 범주에 속한다

이정도면~ 사람의 키와 몸무게다. 이 원리를 알고 있잖아.

그렇다면 기계한테 '사람의 키와 몸무게를 맞추는 방법'을 알려주려면

이 원리를 알려줘야겠지!

이 원리는 다른 말로 하자면 '사람의 키와 몸무게는 대충 어느 범주에 속한다' 라는거겠지!

 

다시 위의 문제로 돌아가보자.

'사람이 그린거같은 그림...'

사람들은 얼마든지 그림을 그려낼 수 있을거고, 우리는 그 그림을 맞춰낼 능력이 있어.

이정도면~ 사람이 그린 그림이다. 이 원리.

그렇다면 다시 반대로, 우리가 기계에게 알려줄 것은

"사람이 그린 그림은 대충 어느 범주다" 라는 거겠네!

 

즉, '사람이 그린거같은 그림'을 그리기 위해 알아야 할 것은

'사람이 그린 그림은 대충 어느 범주다' 라는 것이야!

 

 

4. 그럼 원래 그림의 범주를 알아내면 되겠네?

 

좋아. 그럴수 있으면 정말 좋지.

여태까지 GAN 이전의 많은 생성 프로그램들은 최대한 이 범주를 직접 알아내려고 기를 썼어.

그래야 사람이 만든거같은 그림을 그려낼 수 있을테니까.

근데 아무리 생각해도 너무너무 복잡한거야!

그것도 그렇잖아... 사람이 그린 그림의 범주? 수학적으로도 계산하기 토나오는데

이걸 어떻게 컴퓨터한테 코딩을 해...

 

놀랍게도 2014년 전까지는 모두들 이걸 직접 시도하고 있었어...

딥러닝이 화제가 되기 전까지는 말이야.

딥러닝의 원리는 간단해. 복잡한 정보를 혼자 학습하는거지.

혼자서 이게 정답이랑 먼가? 정답이랑 가까운가?

이렇게 바꿔야 하나? 이걸 판단하면서 학습을 한다는거지.

 

그 마법과도 같은 딥러닝이 나오자, 한 사람은 이렇게 생각을 해.

이 범주를 수학적으로 계산하지 말고 딥러닝한테 맡겨버리면 어떨까?

아주 좋은 접근이긴 한데, 구체적으로 어떻게?

 

5. 딥러닝에 한계라도 있어?

하지만 단순히 딥러닝이라고 여태까지와 크게 다르진 않아...

제아무리 딥러닝이라 할지라도

'문제'와 그에 대한 '정확한 정답' , 그리고 그와 반대되는 '오답'을 정해줘야 학습이 돼.

우리가 수학 문제를 풀 때 선생님이 채점을 해주잖아?

만약 채점을 안 해준다면 우리는 뭐가 맞고 뭐가 틀린지 알 수 없겠지.

그러면 학습 자체가 이루어지질 않잖아.

채점이 없으면 우린 항상 0만 도배해놔도 되겠지... 어차피 죄다 정답인거나 다름없어~~

딥러닝도 교묘해서 '오답'이 없으면 똑같은짓을 해.

 

자, 그럼 기존의 딥러닝을 적용하자면

'정확히 사람이 그린 그림' 과 '정확히 사람이 그리지 않은 그림'을 집어넣어야 학습이 돼.

아니 그러면 이제 정확히 사람이 그리지 않은 그림도 생각해내야겠네?

컴퓨터가 막 랜덤한 픽셀 찍어내면 그게 사람이 그리지 않은 그림인가???

그럼 픽셀에 규칙만 있으면 사람이 그린 그림이야???

 

그래서 그 사람은 하나를 더 생각해냈어.

좋아, 정확히 사람이 그리지 않은 그림이 필요하다 이거지?

그것도 딥러닝한테 맡겨버리자!

 
6. 딥러닝한테 뭐랑 뭐를 맡긴거지? 정리좀

 

그럼 우리는 딥러닝한테 이 두가지를 맡겼어.

첫번째. 사람이 그린 그림의 범주를 예측하는 일

두번째. 사람이 그리지 않은 그림을 그려내는 일

 

어라? 그럼 맨 처음에 내가 말했던 GAN의 두번째 키워드

adversarial - 정 반대의 역할을 하는 뭔가가 있는! 적이 있는!

이 여기 있는거같네?

 

자. 자. 딥러닝의 원리로 넘어가서

이 두가지 일의 정답과 오답을 정해보자.

그러면 두 역할 모두 학습을 통해 잘 수행할 수 있을거야.

 

첫번째. 사람이 그린 그림의 범주를 예측하는 일

정답 : 사람이 그린 그림, 오답 : 사람이 그리지 않은 그림

 

두번째. 사람이 그리지 않은 그림을 그려내는 일

정답 : 음?

잠시만 이거 있잖아. 정답을 꼭 명백히! 사람이 그리지 않은 그림을 그려야겠어?

최대한 사람이 그린 그림과 비슷한 그림을 그려낸다면 어때? 속는셈치고 해보자.

그래 그럼 다시 해보자

 

두번째. 사람이 그리지 않은 그림을 그려내는 일

정답 : 최대한 사람이 그린거같은 그림, 오답 : 누가봐도 사람이 그리지 않은 그림

 

뭐야, 첫번째랑 두번째랑 어째 정답 오답이 비슷하다?

하지만 명확한 차이를 구분해야돼!

첫번째의 역할과 두번째의 역할은 명확하게 다르다는 것!

진짜 사람이 그린 그림과 최대한 사람이 그린거같은 그림은 전혀 다르다는 것!

 

7. 아 뭔가 거의 감이 잡힌거같은데...?

그래서 그 사람은 마지막 화룡점정을 추가해.

아니 그렇다면, 최대한 사람이 그린거같은 그림은 결국 사람이 그리지 않았다는거잖아?

그럼 그걸 오답으로 넣어도 되겠네?

그걸 오답으로 넣는다면, 제아무리 비슷해 보여도 딥러닝이 알아서 구분해주겠네?

 

아니... 그럼 무한동력이잖아?!

사람이 그린건지 구분하고, 그럴듯한 그림을 그리고, 또 그걸 사람이 그린건지 구분하고, 또 그럼 그럴듯한 그림을 그리고...

 

53243CA24629EB0032.gif : 이것이 블리치다.gif

 

그러면 첫번째 역할인 '구분'은

사람이 그린 그림의 범주를 정확하게 알게 될거고

두번째 역할인 '생성'은

사람이 그린거같은 그림을 만들어낼 수 있겠다!!

 

이게 바로 GAN이야.

뭔가 발상이 으마무시하지 않아?

무려 무한동력을 프로그램으로 구현하다니. 이제 온 세상을 지배할수도 있겠네... 갓파고님...

 

근데 세상은 그렇게 만만치가 않아서

갓파고가 세상을 아직 지배하진 못했어...

여기에도 수많은 문제가 생겼거든

문제에 대해서는 반응이 좋으면 더 써볼게

 

 

 

 

딥러닝이란 용어를 애매하게 쓴 것도 있고

오답, 정답같은 표현도 정확하진 않은데

아무튼 GAN에 대한 개념을 최대한 쉽게 푸느라고 다 좀 헐겁게 썼어 ㅜㅜ

질문 있으면 아무거나 댓글에 남겨줘

57개의 댓글

@잉텔

어라 그럼 슈퍼레졸루션 쪽은 이제 vae 쓰려나

0

gan 짤도 좀 넣으면 좋을듯

다음은 vit ㄱㄱ

0
2021.02.16
@소프트웨어전공

트랜스포머임?? 아직 트랜스포머는 리뷰를 못했음 ㅜㅜ 나중에 하게될듯

0
@공정한비교

넹 이미지 쪽에선 핫했어요

겐 다음 트렌드라 볼 수 있을듯요

0
2021.02.16

결국 원리는 컴퓨터가 랜덤생성을 하고 그 이미지를 판단하는 컴퓨터가 채점을 해서 사람이 그린건지 컴퓨터가 그린건지 구분이 안될때까지 랜덤생성을 반복하는거다 이거제?

0
2021.02.16
@난나야나

그부분은 다음편에 쓰려고 하는데, 정확하게는 그 생성을 하는 법을 배우는 것이니 랜덤생성은 아님. 나머지는 맞음.

0
2021.02.16
@난나야나

지폐위조범과 FBI 생각함댐

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
489 [과학] 방사선에 관하여_20210422 14 ptrtype01 0 10 시간 전
488 [과학] 日 자민당 의원이 공개한 원전오염수 성분 31 SOLEUS 16 2 일 전
487 [과학] ??? : 한국이 오염수 더 많이 방류한다 빼애액 24 SOLEUS 13 2 일 전
486 [과학] 일본의 방사능 기준치가 신용받지 못하는 이유 68 뭘까요 1 3 일 전
485 [과학] 도쿄의 암 발생률. 27 뭘까요 5 3 일 전
484 [과학] 일본은 과연 후쿠시마 인근만 방사능에 오염돼었을까? 13 뭘까요 9 3 일 전
483 [과학] 일본이 주장하는 후쿠시마의 방사능량은 서울과 같다는게 사... 31 뭘까요 14 3 일 전
482 [과학] 일본 후쿠시마 오염수 방류 팩트정리 21 뭘까요 7 4 일 전
481 [과학] 자바로 프로그래밍에 입문할래요: 1.4. 배열 (1) 13 스비니 7 7 일 전
480 [과학] 약사가 쓴 az백신과 혈전에 관한 글 110 pipo 40 14 일 전
479 [과학] 자바로 프로그래밍에 입문할래요: 1.3. 조건문과 반복문 (2) 21 스비니 4 16 일 전
478 [과학] 사회과학계에서 밝혀졌던 "보이루"의 실체 13 안티파굳 23 17 일 전
477 [과학] 피임약은 어떻게 임신을 예방할까? 33 동식 18 22 일 전
476 [과학] 자바로 프로그래밍에 입문할래요: 1.3. 조건문과 반복문 (1) 11 스비니 2 26 일 전
475 [과학] 급성 방사선 장해의 치료 역사, 그리고 방법은 무엇일까? 20 바른말고운말하는사람 7 29 일 전
474 [과학] 자바로 프로그래밍에 입문할래요: 1.2. 내장 자료형 (2) 23 스비니 5 2021.03.23
473 [과학] 자바로 프로그래밍에 입문할래요: 1.2. 내장 자료형 (1) 14 스비니 4 2021.03.20
472 [과학] [의약] 아스트라제네카 백신은 정말 위험할까?? (FDA승인과 ... 15 Cassiiopeia 19 2021.03.19
471 [과학] 자바로 프로그래밍에 입문할래요: 0.0. 여는 글, 1.1. 첫 프... 21 스비니 8 2021.03.16
470 [과학] 접종 후 경증 이상반응에 대한 대응 방안 [펌] 8 헬테이커 10 2021.03.10