VAE VAE란 input x를 잘 설명하는 feature를 추출하여 latent vector z에 담고 x와 유사하지만 완전히 새로운 데이터를 생성하는 모델이다. 일반적으로 feature는 Gaussian distribution을 따르고 input x를 잘 설명하는 feature를 찾기 위해서 latent z는 평균과 분산값을 가진다. $$ z \longrightarrow x $$ $$ p_{\theta}(z) \longrightarrow p_{\theta}(x \mid z^{(i)}) $$ p(z): latent vector z의 확률밀도함수(Gaussian) p(x|z): 주어진 z에서 특정 x가 나올 조건부 확률에 대한 확률밀도함수 θ: 모델의 파라미터 구조 input x를 Encoder에 통과시..
GAN의 문제 a) Overfitting b) 상속 부족 c) Mode Collapse d) Mode Dropping GAN의 성능 평가 정해진 Label이 없는데 어떤 방식으로 GAN 모델의 성능을 평가해야 할까? Generative Adversarial Networks의 성능을 평가하는 것을 쉽지 않다. 객관적인 평가 기준이 없기 때문이다 성능 평가를 할 수 없다는 것은 훈련 중 최종 GAN 모델 선택 GAN 기능을 시연하기 위해 생성된 영상을 선택 GAN의 아키텍처 비교 GAN의 구성 비교 등을 할 수 없는 문제가 발생하고 가장 최적의 모델을 찾지 못하게 된다. Manual Evaluation 사람이 직접 평가하는 방법으로 각 epoch 마다 생성된 이미지를 보고 평가한다. 이 방법은 매우 간단하지..
1010 pattern Generator, Discriminator 구현 GAN 이미지 생성전에 간단한 pattern을 학습해 보자! 모델의 큰 그림은 이렇게 된다. import torch import torch.nn as nn from tqdm import tqdm import pandas import matplotlib.pyplot as plt import random import numpy 실습을 시작하기에 앞서 필요한 라이브러리를 import 해준다. DATA Real def generate_real(): #real_data = torch.FloatTensor([1, 0, 1, 0]) 이것이 실제 값이지만 실제로 이런 값은 없기에 아래의 식을 사용함 real_data = torch.FloatTen..
https://pasongsong.tistory.com/287 [GAN] GAN의 개념 GAN Generative Adversarial Network 주로 이미지 생성에 자주 쓰이는 모델로 학습 데이터 셋과 유사한 이미지를 만들도록 학습 됨. 백쿼리 backquery 기본적으로 신경망은 데이터셋의 정보를 감소하고 정제 pasongsong.tistory.com 앞에서 GAN은 Generator와 Discriminator를 가지고 있고 이를 훈련하여 실제 이미지와 유사한 이미지를 만들어 낼 수 있다는 것을 알았다. 그럼 훈련은 어떻게 하는 것인가? GAN 학습 판별기에 실제 데이터를 1이라고 알려준다. 판별기에 가짜 데이터를 0이라고 알려준다. 판별기에 생성기의 결과를 보여주고, 생성기의 결과가 1이여야 한..
GAN (Generative Adversarial Network) 이미지 생성에 자주 쓰이는 모델로 학습 데이터 셋과 유사한 이미지를 만들도록 학습됨. unlabeled data를 사용하며 Generator는 데이터의 확률 분포를 학습함 파란색 점선: Discriminator distribution 검은색 점선: Real data distribution 초록색 실선: Fake data distribution Generator가 실제 이미지의 분포를 학습하는 과정이며 Discriminator는 Generator의 학습 방향을 안내함 백쿼리 backquery 기본적으로 신경망은 데이터셋의 정보를 감소하고 정제하고 축약하는 과정에 쓰인다 -> CNN의 classification을 예시로 들면 3x32x32의 ..
GANs Generative Adverial Networks 기존의 VAE는 L2loss (픽셀별로 값들이 근접해야 함) 로 인해 blurry한 이미지가 나오는 문제가 있고 복잡하고 고차원인 학습 분포로부터 데이터를 샘플링하는 것이 불가능하기 때문에 Gan이 탄생하였다 Generative를 위해 Neural Network를 이용하여 Random noise를 입력으로 주어 Output을 뽑아낸다. 문제 -> 각 샘플이 어떤 학습 이미지로 매핑되느지 알 수 없음(복원 불가능) 해결책 -> Discriminator network를 이용하여 생성된 이미지가 분포 내에 속하는지 판단함 즉, DIscriminator network 와 Generator network를 이용하여 학습한다 (Two - player ga..
VAE (Variational AutoEncoder) Decoder(생성)을 학습시키기 위해 Encoder를 붙인 것 Network를 학습시켜 train data x가 나올 확률을 구하는 것이 목적임 random noise로 부터 원하는 결과를 얻을 수 있을까? 라는 의문에서 시작됨 구조 Encoder: 학습 데이터를 Latent Variable Vector로 변환함 Latent Variable Vetor: 고양이 특징들이 담겨져있음 Decoder: Latent Variable Vector를 받아 학습 데이터와 비슷한 데이터를 만듦 입출력을 비교하여 loss를 도출함 -> 비지도 학습 Sampling 전의 벡터는 후의 벡터보다 2배 더 많다 (평균과, 분산이 각각 들어있기 때문) z분포에서 z를 변환받음..
Generation model의 학습방법을 이해하기 위해서 알고 가야함 생성 모델의 개념 확률 변수 (Random variable): 시행의 결과에 따라 값이 결정되는 변수 확률 질량 함수 (Probability mass function): 이산 확률 변수 x의 분포를 나타내는 함수로, 함수 값이 곧 확률임 확률 밀도 함수 (Probability density function) : 연속 확률 변수 x의 분포를 나타내는 함수로, 밀도의 넓이가 곧 확률임 input data를 확률 변수로 본다면 64 x 64 x 3의 차원을 가지는 벡터로 표현될 수 있음 각각 64 x 74 x 3 벡터의 확률값을 추정해볼 수 있음 Pdata(x)는 확률 밀도 함수로 실제 이미지들의 정확한 분포를 나타내고 우리는 이와 비슷한..