요약
저번 분기 읽었고 학습했던 논문, 개념 공유하였습니다.
추후 진행을 위한 계획 및 일정 공유하였습니다.
정기모임이 격주이지만 자료와 논문을 공유하기에는 짧다는것에 공감 매주 모임을 진행하는 것으로 합의 하였습니다.
GAN과 AE위주의 논문 리뷰 및 학습 진행하였고 저번 분기에 필요성을 느낀 부분들 체크, 저번 분기에서의 목표의식을 그대로 가져와 text to image와 image to text를 연결하는 GAN을 설계하는 것을 목표로 진행하는 것에 공감 관련 논문, 자료를 학습하는데 목표를 두고 진행하였습니다.
전반적으로 저번분기에 대한 학습과 GAN에 대한 전반적인 이해와 관련 지식을 학습하는 것을 위한 주차들이였습니다.
진행 내용
각 연구원 별 공유 내용 요약 정리하겠습니다. 저번 분기에서 처럼 여러 주제의 논문을 다양하게 읽어보는 것보다 이번 분기에는 각각의 주제를 intensive하게 읽어보고 공부하는 방향으로 진행하였고 각 주제별 이야기를 연구원 각자 정리 공유 토론하는 방식으로 진행하였습니다.
도미래 연구원
1 주차 미팅 관련
1. Generative Adversarial Nets 논문 리딩
1주차에는 논문 리딩 및 mnist를 이용하여 직접 구현해보았습니다.
논문 리딩에 있어 GAN에 대한 이론적 개념인 minimax problem을 가장 우선적으로 이해하고자 했습니다.
* arg max D에 있어서는 목적함수를 극대화하는 분류망 D를 찾는 것
- 앞의 항은 진짜 그림을 넣었을 때 목적함수의 값이며
- 뒤의 항은 D(G(z))를 극소화하는 값을 찾아 뒤의 항의 전체를 극대화 해야함을
정리하게 되었습니다.
즉 , 진짜 그림을 넣으면 큰 값을 , 가짜 그림을 넣으면 작은 값을 출력하도록 D를 학습하는 것입니다.
*arg min G는 목적함수를 최소화하는 G를 찾는 것으로 G는 둘쨰 항에만 속해있기 때문에 D(G(z))를 극대화하는 G를 생성해야합니 다.
따라서 D를 잘 속일 수 있도록 G를 학습시키는 것을 의미합니다.
해당 개념은 http://keunwoochoi.blogspot.com/2016/12/generative-adversarial-network-gan.html 를 참고하여 정리하였습니다.
직접 구현해본 결과 30000에폭을 돌렸으며 결과는 다음과 같이 출력되었습니다.
keunwoochoi.blogspot.com
번역 - Generative Adversarial Network (GAN) 설명
최근우 연구 관련 블로그.
Pasted image at 2018-12-10, 5:57 PM
2. 배치 정규화
배치 정규화와 관련하여 논문을 짧게 읽었습니다. 짧은 리딩 및 1주차 미팅을 통해 배치 정규화의 필요성을 정리해보았습니다.
- 각각 batch 에 행하는 normalization으로 학습속도의 증가 및 learning rate에 신경 쓸 필요가 없다
- overfitting이 방지되어 dropout의 필요성이 감소됨
이렇게 정리해봤는데 이렇게 하는게 맞나요 ㅠㅠㅠ 정말 부족한 실력이네요 ㅠㅠ 따끔한 충고와 피드백은 환영입니다
2주차에 공부했던 것입니다.
2주차 미팅에 관련하여
1. CGAN
2주차에는 CGAN 논문 리딩 및 코드 실습을 진행해보았습니다.
코드에 있어서는 주로 기존 original GAN과 차이점을 찾아보고
왜 그 코드를 추가했는지 의미를 파악해 보았습니다.
CGAN을 간단히 정의(?)해 본다면 'original GAN은 어떤 이미지를 생성할지
제어하지 못한다. 그래서 condition을 추가하여 이미 생성과 관련된 condition을 부여하여 이미지 생성을 가이드 한다.'라고 정의해보았습니다.
또한 keras로 구현한 CGAN을 https://github.com/eriklindernoren/Keras-GAN/blob/master/cgan/cgan.py를 참고하여 구현해보았습니다. 결과물은 다음과 같이 출력됩니당
홍은영 연구원
<Generative Adversarial Nets 논문리딩>
저번주에 못했던 논문리딩을 하였고, 3.Adversarial nets와 4.Theoretical Results을 중점적으로 공부하였습니다.
- GAN의 minmax problem을 풀기위해 먼저 G를 FIX 시키고 max V(G,D) 부분을 풀어 극값이 존재한다는것을 알았습니다
- 그 다음 min {maxV(G,D)} 부분을 풀면 값이 −log(4)+2⋅JSD(p data ||p g )로 나오고 JSD가 거리 이므로 최소값은 -log4로 존재한다는 것을 알수 있었습니다. (그때 해는 pg = pdata)
- 이번 논문 리딩을 통해 GAN의 목적함수에 대한 이해를 높일 수 있었으며 다음 논문은 adversarial autoencoder를 읽도록 하겠습니다
김인수 연구원
0. Generative Adversarial Networks 개요
Generative adversarial Networks는 주어진 Dataset 자체를 기반으로 하지만 실제로 관측된 적 없는 가짜의, 실제로 일어나지 않은 데이터를 만들어낸다. GAN은 그런 가짜 데이터를 만들어 낼 수 있는 후술할 Generator 라는 일종의 데이터 생성기(1.3.)를 포함하고 있다.
1.1. Motivation : 필요성
GAN으로 만들어낸 데이터는 원본의(gan을 train, test하는 데 쓰인) 데이터인지 GAN이 만들어 낸 데이터인지 구분할 수 없다. 본 적 없는 데이터를 만들어 내므로 각광받게 되었다.
1.2. GAN의 목적함수
GAN을 training할 때의 목적함수(1.3)는 원본과 만들어 낸 것 양자를 discriminator가 구분할 수 없는 수준을 목표한다. GAN의 학습이 마쳐진 상태에서 이 목표는 달성(1.4)된다. 양자의 구분은 인간의 눈이 아니라 Discriminator라는 분류기가 대신한다. 그러므로 Discriminator는 data가 진짜 데이터인지, 만들어낸 데이터인지를 구분하는 역할을 한다.
분류(discriminator) 성공률의 측면에서 보면, GAN으로 만들어낸 이미지와 실제 이미지가 1:1 비율로 제시된 상태에서 육안으로(train하는 동안에는 discriminator이겠지만) 어느 것이 진짜인지 분류하고자 한다고 했을 때 분류성공률을 ½로 만든다면 이미지를 효율적으로 분류해내지 못하고 통계적 비율로 완전히 random guessing 한 것과 다를바 없으므로, GAN은 진짜 이미지를 만드는 데 성공한 것이라고 볼 수 있을 것이다.
1.3. GAN의 구성과 목적함수
GAN은 discriminator와 Generator의 두 별개의 네트워크로 이루어져 있다. 애초에 서로 적대적인(adversarial) 두 네트워크로 구성되었다는 데서 GAN이라는 이름을 얻었는데, 경찰과 위조지폐범이라는 표현을 통해 처음 알려진 이 두 네트워크는 Discriminator와 Generator라는 이름을 갖고 있으며, 각 네트워크는 다른 네트워크와 연관된 자기만의 loss 함수를 가지고 있다.
Discriminator and Generator :
min (G) max (D) V (D, G) = EX∼pdata(X) [log(D(X))]+ Ez∼pz(z) [log(1 − D(G(z)))]
1.4. Generator
일반적 Generative model과 다르게 GAN의 Generator는 데이터의 실제 분포를 직접적이나 간접적 방법을 통해 추정하지 못한 상태에서도 마치 실제 분포를 알고 있는 것처럼 데이터를 만들어낼 수 있다. 실제 세상의 데이터를 모사할 수 있는 충분한 정보의 차원을 지닌 벡터값 을 generator에 넣고 fake 데이터를 생성해내면 된다. 벡터값이 따르는 분포는 아무 분포로나 가정해도 되고, uniform한 distribution 또는 적은 parameter로 나타낼 수 있는 간단한 수식 중 하나인 Gaussian distribution을 사용하기도 한다. z는 자체로는 아무런 의미가 없으나 generator를 통하면 실제 데이터 x와 동일한 차원의 데이터로 복원되므로(G(z)), 실제 데이터의 정보를 암호화된 형태로 담고 있다고 볼 수 있다.
김현우 연구원
Dropout: A Simple Way to Prevent Neural Networks from Overfitting
Deep neural network는 비선형적인 Hidden layer를 여러 개 가지고 있다.
Training data가 한정되어 있을때, Hidden layer가 늘어나서 신경망이 커지면 Overfitting이 일어날 확률이 높아진다.
그렇게 Overfitting문제를 해결하기 위해 고안된 방법 중 하나가 Dropout이다.
Forward pass로 data를 전달할 때 난수를 사용해서, Input layer, Hidden layer의 일부 neuron을 0으로 만드는 방법이다.
여기서 일부 neuron을 0으로 만드는 것은 제외시키는 것과 같은 효과이다.
Motivation - 한 부모의 유전자의 반과 변이유전자 반의 결합으로 자식세대를 만들 수 있는데, 무작위의 유전과 결합했을 때 더 강건한 자식 세대를 만들 수 있다고 나와있다.
- 실험 - MNIST, Street View House Numbers, CIFAR-10 and CIFAR-100, ImageNet의 이미지 데이터 셋으로 학습해봄.
- Marginalizing Dropout - Dropout은 neural network의 state of hidden units에 noise를 추가하는 방법을 볼 수 있다.
우리는 noize를 무시한 결과 발생하는 모델의 class를 탐구했다고 나온다. 이 모델들은 deterministic versions of dropout으로 볼 수 있다.
그래서 Deterministic algorithms이 제안됨.
- 결론 -
Dropout은 Overfitting을 줄여 신경망을 개선하는 기술
표준 역전파 학습은 Training data에는 적용되지만 보이지 않는 data에는 일반화되지 않은 취약한 Co-adaptation을 구축함. Random dropout은 숨겨진 특정 장치의 존재를 신뢰하지 못하게 해서 Co-adaptation을 깰 수 있음.
Dropout을 사용해 SVHN, ImageNet, CIFAR-100 및 MNIST에서 최첨단의 결과를 얻음.
Dropout은 쉽게, 반복적으로 Overfitting해버리는 큰 모델에게 핵심 아이디어다.
Dropout을 가속화하는 것은 미래의 일을 위한 흥미로운 방향이다.
강우람 연구원
text to image GAN에 관하여 간단 히 정리 리뷰 하였고 저번기수에서 진행하였던 자료들중 DCGAN, CGAN, 그리고 약간의 자연어처리관련 내용을 리뷰 하였고
전반적인 NN설계 방법론에 관련된 논문들을 정리 리뷰 하였습니다. batchnorm, Dropout 등을 이야기하였고 inception module, 1*1 Convolution에 대해 잠깐 언급하였습니다.