티스토리 뷰

-5장 이상은 죽어도 안보겠다는 생각으로 게시물 작성하기 (일부 지난 과제 ppt 활용) 

일단 GAN과 text to Image 를 좀 알아봤음. 

 -https://www.slideshare.net/NaverEngineering/1-gangenerative-adversarial-network

 -https://arxiv.org/pdf/1406.2661.pdf

   -https://www.youtube.com/watch?v=odpjk7_tGY0 굳이 먹여주는데 입 안벌릴 필요 없음(스압)

더보기
generative model의 목적은 입력데이터의 분포를 학습하는 것
미치지 않고서야 저걸 input으로 넣었을리는 없음. 저것은 내가 이해한 대로라면, x1,x2,x3를 통해 (학습을 통해만든건아니고 통계적으로 만들었을 때의 뭔가 같음) .p_data 에서 변방에있는 임의의 x4(픽셀을 만졌다?) 좌표에서는 결과가 저렇게 나온다는 뜻임
변방이라서 저게 발현할 확률도 적다는 뜻으로 이해함(끄덕)
목표는 P(x) 와 같은 결과..같은 분포를 같은 P_model(X) 를 갖는 것! (그래야 인풋style 하면서도 인풋과 다른 값을 생성할 수가 있다고!)
이게 뭔 뜻이냐 하면은 Discriminator인 구분자와 generator인 생성자로 하여금 구분자는 실제 값을 맞추는 것이 목표고, 생성자는 구분자가 구분못하게끔 헷갈리는 걸 생성하는 것을 목표로 하란 뜻이다. log 로 하는 이유는 그래야 지수화 되어서 계산이 편리하기 때문으로 알고 있다. E_(x~pdata) 는 실제 데이터 안에서 D가 "이놈 진짜야"라는 걸 잘 맞추라는 의미에서 들어가 있고, Ez~p_z 는 가짜데이터에 대해서 "이놈 가짜야!"라고 구분시키라는 의미에서 들어가 있다. D입장에서는 이걸 맞춘다.. 즉 D(g(z)) 라는 것은 1이 되면 모작을 진품으로 판명했다는 뜻이다 ㅠㅠ 그렇기에 가짜는 가짜라고 해야.. 하는 데 음 그럼 log 1이 되지 않나? (아무렴어때 log 0보다는 큼! 그렇단 것은 max V한 D의 목적에 부합함)

G는 D를 속여서 최소값을 만들게 하는 것인데, 1항에서는 쪽쓸 수 없으니 2항에서 최대한 D를 벗겨먹어야 한다. 2항 값을 log 0을 만들면 할 수 있다. 

이부분에 대해서 sigmoid는 -1~0이고 tanh 는 -1~1이잖슴? 그걸 임의로 막거나 알아서 0~1 로 나오게끔 학습이 된다고 강의에서는 설명한 것 같다.

https://youtu.be/odpjk7_tGY0?t=821 

예제도 있다고 함 : https://github.com/yunjey/pytorch-tutorial

학습 초기의 기울기 이슈.. 왼쪽을 보면 갈 길이 구만리 인데 기울기가 너무 완만함.
그래서 학습초기에는 logx 를 최대화 시키는 쪽으로 진행했다고 한다. 경험론적으로 이안굳펠로씨가 알아냈다고 함. 아직 머리로 이해를 못했는데 negative log likely hood 최소화를 log-likely hood 를 최대화 하는 방식으로 식을 재정의 했다고 함.
질문 기울기 큰 상태에서 잘못된 방향으로 가면 어떻게 교정하나요? A : 그래서 초기화를 잘해야돼요

 

시간나면 볼 것 

   - DCgan  - pooling을 안씀 대신 strid =2 의 conv를 썼음. adam optimizer를 씀. (값이 현업에서 자주 쓰인다고 함) 

DC gan에서는 특정 latent vector z를 가지고 산술적 연산이 가능해!
여성을 더하지 않으면 의미없는 이미지가 나온다고 해석 할 수 있다(고 한다. )

   - LSGAN(least Squares GAN)

구분자를 속여서 직선(blue line) 에서 멀어진 건 좋은데 실데이터(red dot)  한테도 멀어져버린 생성데이터(pink) ㅋㅋ
ls를 쓰면 Discrinator가 '확실하게 틀린' (높은 값을 줬는데 잘못됨 ㅠ) 경우에 대해서도 least squre 를 통해  generator를 실데이터 쪽으로  잘 유도 할 수 있다.

Sgan 

이것도 others class ; outlier 로 볼 수 있겠지? 디스플레이 얼룩 일할 때 너무 힘들었는데 이제 발전이 좀 되었나?
ac gan의 경우 틀린경우에도 그냥 fake가 아니라 fake 하고도 2라고 알아맞추게 한다고 함. (오..) 발표자님 개인해석으로 는 유일하게 D로 하여금 augmentation training 의 이점 도 있지 않은가 하는 생각이 들었다고 하심

//질문에서 one/hot 으로 분류하는 지점에 =대해서 2라고하면 trended 하게 그냥 번듯한 2 하나만 (다른 스타일없이) generate 되는 거 아니냐고 40분쯤에 이야기했는데 그런거 없이 잘 generate 된다고 함

 -Auxiliary Classifier ACGAN

inception score

CycleGAN (유명한 Cgan!!) -main idea is closely perfectly same as DiscoGAN

latent를 받지않고 이미지를받아서 encoder decoer 식으로 작동함
이미지를 유지하고 싶어서 재구성을 시켜봄 그러고 비교를 하는 거임. 충분히 '원복'시켰는지 데이터는 1만장정도. 근데 논문만큼 잘나오진않았음

https://github.com/yunjey/mnist-svhn-transfer 

-stackGAN

해상도 높은 건 생성이 안되서 upsampling 용으로 단계를 하나씩 더 만듦 z는 너무 커도, 너무 작아도 안됨 z1024 로 할때랑 128로 했을 때랑 별 차이가 없었음 왜였을까? (51분) 왜 하얀새를 넣엇을때 알아서 하얀새가 생성되는 걸가?
ㅏㅣㅏ

 

BEGAN (boundary equilibrium) - 기존 gan은 loss 가 없는데 (노답이라) convergence measure 롤 세워서 그걸 loss 처럼 썼다. (경험론적으로 설정한 점이 다소 있음) 

 

이경우엔 테스트 이미지를 input으로 해서 생성한 이미지와 L2 norm 하는 거임..오..  g(z)에서 생성한 이미지에서 x를 빼는 거임. 과적합되지 않을려나.  biased 될것같은뎅

 

stride 를 필터마다 다르게 주는 건 어떠냐는 질문이 들어왔었다. 

-seq2seq 활용가능성에 대해서 번역 fake korean discriminator 같은 이야기 하시며 <끝>

 - http://proceedings.mlr.press/v48/reed16.pdf

Generative Adversarial Text to Image Synthesis (GATIS )라고 함. 

 -Auxiliary Classifier ACGAN

inception score

BEGAN (boundary equilibrium) - 기존 gan은 loss 가 없는데 (노답이라) convergence measure 롤 세워서 그걸 loss 처럼 썼다. (경험론적으로 설정한 점이 다소 있음) 

----

1. GAN을 봤다. 이안굳펠로는 굉장히 겸손하게 이것이 기존 마르코프 chain을 쓰는 형식의 모델들보다 낫지는 않아도 마르코프체인을 뺀 것이 유의미하고 또한 경쟁할 만 한 것이라고 했다. D와 G를 만들어 한 스텝에서 하나씩 학습시켰고, (G만 너무 학습되면 G가 input에 쏠려 분산이 낮아지는데 이를 Helvetica scenario 라고함), 그렇게 함으로써 D의 분포는 점점 찐데이터분포와 G데이터분포를 분류하게 되고 그렇게 함으로써 G데이터분포가 찐데이터에게 수렴하도록 유도된다는 것을 보여줬다. (08:13)2. GATIS를 보자.