# VAE

CEVAE / Causal Effect Inference with Deep Latent-Variable Models
"Causal Effect Inference with Deep Latent-Variable Models"은 2017년 NIPS (Neural Information Processing Systems) 컨퍼런스에서 발표된 논문입니다. 이 논문은 딥러닝과 잠재 변수 모델을 사용하여 인과 효과(Causal Effect)를 추론하는 방법을 다루고 있습니다. Abstract 관찰 데이터에서 인과 효과(causal effects)를 추론하는 가장 중요한 측면은 원인과 결과 모두에 영향을 미치는 혼동변수(confounders)를 처리하는 것 혼동변수란 원인(약물 투여 등)과 그 결과 모두에 영향을 미치는 요소들, 잠재적 교란변수 예를 들어, 특정 치료가 환자에게 어떤 영향을 미치는지를 파악하는 것이 포함 연구는 confounders를 요약하는 알려지지 않은 잠재 공간과 causal effects를 동시에 추정하는 방법을 제안

Auto-Encoding Variational Bayes 논문 리뷰
Auto-Encoding Variational Bayes Variational Auto Encoder, VAE 모델로 잘 알려져 있는 논문이다. Method 이 논문은 특이하게도 Related works가 없다,, 대신 현재 문제 상황에 대해서 정확하게 짚고 넘어간다. $x$는 데이터를, $z$는 $x$를 잘 설명할 수 있는 latent vector를 의미한다. 파라미터는 $\theta$와 $\phi$ 두 종류가 있는데, 이는 $z$, $x$ 사이의 분포를 잘 설명하기 위해 우리가 학습시켜야 할 파라미터이다. 여기서 우리의 목

기계학습과 MLE 관계
관점의 차이 일반 딥러닝 태스크에서는, 우리가 원하는 출력 $f_\theta (x)$가 정답과 가까워지는 것을 목표로 한다. 이를 위해 역전파를 이용할 때에는 출력 $f_\theta (x)$과 정답 $y$의 차이를 Loss Function이라고 정의하고, 두 값의 차이를 줄이는 방향으로 학습을 진행한다. MLE 관점으로 볼 때는 네트워크 출력 값(확률 분포) $f_\theta (x)$ 가 주어졌을 때, 정답 $y$가 나올 확률(Likelihood)가 최대가 되기를 목표로 한다. 즉, Deep Neural network $f\theta (x)$뿐만 아니라, 분포 $p(*|f\theta (x))$가 어떤 분포를 따를 지 가정하고 가야한다. VAE 전반적인 VAE의 간단 설명 
Bayesian inference
What is Bayesian inference [ ](https://towardsdatascience.com/naive-bayes-classifier-bayes-inference-central-limit-theorem-python-c-implementation-bdffb3b35de) Bayesian inference는 목표로 하는 "특정한 분포"를 inference(추론)하는 방법중의 하나이다. 이 포스팅에서는 목표로 하는 특정 분포를, Data를 생성하는 분포로 생각하고 정리하는 것이 Bayesian inference를 이해하는데 도움이 될 것이다. Prior Distribution Bayesian inference를 알아보기 전에, 다음 내용을 가정해야 한다. >"세상의 Data는 이
내가 보려고 만든 논문리뷰 01 - 1 : Auto Encoding Variational Bayes (VAE)
내가 보려고 만든 Paper Review 01 : "Auto Encoding Variational Bayes", Diederik P.Kingma et al. ICML 2015 [origianl paper link: https://arxiv.org/abs/1503.03585] > * ※ 주의 드립니다! * 아직 저도 수학, 딥러닝, 머신러닝 마스터가 아니기 때문에 잘못된 개념 설명이 들어있을 수 있습니다. 참고용으로 봐주시고, 제가 참고한 자료의 원문을 보시면서 공부하시는 걸 추천드리겠습니다. Manifold Hypothesis "Data is concentrated around a lower dimensional fold." manifold 공간에 있는 representation z(latent space)를 찾는 것이 generative model의 목표이다. Maximum Lik

오토인코더(AutoEncoder)
본 포스팅은 이활석님의 'AutoEncoder의 모든 것'에 대한 강연 자료를 바탕으로 학습을 하며 정리한 문서입니다.관련 컨텐츠는 아래에서 가져왔습니다. 구체적으로 알고 싶으시다면 아래 영상을 보기를 적극 추천합니다. https://www.youtube.com/watch?v=rNh2CrTFpm4 Unsupervised learning Representation learning = Efficit coding learning Generative model learning Dimensionality reduction (중요한 부분) notlinear Dimensionality reduction wiki 입력과 출력이 동일한 구조. 오토인코더를 학습할때: unsupervised learnig, loss는 negative ML로 해석
Auto-Encoding Variational Bayes
1. Introduction 1-1 Difficulty of Mean-field Approach* assumes that all variables of the model(data, latent, parameters) are independent (but they are not!) simplifies the calculation, but can have poor approximations for complex models with dependent variables, which requires solving intractable expectations *mean-field approach? 👉 commonly used method in VB for choosing the form of the approximate posterior 1-2 Auto-Encoding Variational Bayes (AEVB) in order to overcome such

VQ-VAE(Neural Discrete Representation Learning)
VA-VAE는 Autoencoder 구조에서 codebook을 더한 구조입니다. codebook이란 이산 데이터로 매핑되는 집합으로, 연속적인 데이터를 이산 데이터로 변환합니다. CodeBook을 기본적으로 vector를 요소로 가지는 리스트 입니다. input이 Encoder를 지나 출력으로 어떠한 vector가 나오면, codebook의 모든 vector들 간 distance를 계산합니다. 그 다음 Codebook의 vector들 중에서 encoder의 출력vector와 가장 거리가 짧은 vector를 찾습니다. 그리고 그 벡터를 decode에 넣어 학습을 진행합니다. 그림으로 쉽게 알려드리겠습니다. 강아지 이미지를 encoder에 넣어 vector $z_e(x)$가 출력되신 것을 볼 수가 있습니다.

Auto Encode와 VAE의 직관적 이해1
참고: https://www.youtube.com/watch?v=o_peo6U7IRM&list=PLCsGBQ3i2iIWOssGekIwgic0DxmDA9-ya KeyWord > Auto encoder VAE GAN MSE KL-Divergence Manifold Latent probability Likelihood 인공지능 역사를 잠깐 살펴보면 1969년 Marvin Minsky가 Perceptrons로 실제 문제를 해결 X, XOR 문제 해결 못함 주장 (인공지능 암흑기) 1974년 Paul webos박사과정 backpropagation의 활성, XOR해결 (인공지능 연구 부활 움직임) 1982년 John Hopfield "Neural networks and physical systems with emergent collective computational abilities" 상호결합형 신경망 모델로서 연상기억이나 최적화 문제를 병렬적
TIL 2023-04-06
Deep Generative Model AI 이미지 생성은 이 세상에 존재하지는 않지만 있을 법한 이미지를 생성하는 기술입니다. 새로운 이미지를 생성하는 방법에 대해 알아보겠습니다. 일단 이미지의 자연스러움에 대해 알아보면, 이미지의 자연스러움이란 인간이 느끼기에 이미지의 여러 특징이 지금까지 경험했던 특징과 비슷했다는 것입니다. 예를 들어, 이미지 상에서 어떤 물체가 바퀴가 4개 달려있고 번호판이 있으며 아스팔트 위에 있으면, 자연스럽게 이것은 차라고 인식합니다. 따라서, 자연스러우면서 기존에 없던 이미지를 생성하기 위해서는 기존 특징의 분포를 학습하고, 그 분포에 맞는 랜덤한 값을 이용하여 이미지를 생성하면 됩니다. AE AutoEncoder(AE)는 Encoder 부분과 Decoder 부분으로 이루어진 생성 모델입니다. 입력값을 인코더를 통해 특정한 latent 공간의 latent vector로 만든 후 latent vector를 디코더를 통해 값을 출력합니
GAN(Generative Adversarial Networks) 모델, VAE
VAE $ GAN VAE 변이형 오토 인코더 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt VAE 수식 K = tf.keras.backend class Sampling(tf.keras.layers.Layer): def call(self, input): mean, log_var = input return K.randomnormal(tf.shape(logvar)) * K.exp(log_var/2) + mean VAE : 변이형 오토 인코더 coding_size = 10 input_layer = tf.keras.layers.Input(shape=[28, 28]) 2차원 데이터 이기 때문에 펴줘야 함. outputs = tf.keras.layers.Flatten()(input_layer) outputs = tf.keras.layers.Den

[코드구현] Auto-Encoding Variational Bayes (VAE)
Auto-Encoding Variational Bayes VAE_MNIST.ipynb 이론으로 알아본 VAE를 실습해보자. 목표는 VAE 모델을 학습시켜 MNIST 이미지를 생성하는 것이다. 일련의 과정은 colab에서 진행하였다. 라이브러리 준비 필요한 라이브러리를 준비한다. PyTorch를 이용할 것이고, 데이터는 torchvision의 MNIST 데이터를 가져올 것이다. 시각화와 진행도 확인을 위해 각각 , 을 가져왔다. 하이퍼파라미터 설정 하이퍼파라미터를 한 곳에서 결정할 수 있도록 딕셔너리를 정의하였다. 데이터셋 준비 torchvision에서 제공하는 MNIST 데
Auto Encoder
AE -> VAE -> AAE 정의에서 부터 어떤 특징(장단점)이 있고 어떤 식으로 모델이 발전해 나가는 지 파악해보자. > Auto Encoders 정의 입력과 출력이 동일한 형태를 가지는 신경망이며 차원 축소를 목적으로 feature detection, classification을 비지도 학습의 형태로 학습하는 신경망입니다. 비지도 학습이므로 라벨이 없이 데이터만 주어진 상황에서 학습한다. 목적: Encoder가 Latent Feature를 뽑아내기 위함. > Encoder, Decoder, Latent Feature로 이루어져있습니다. Decoder는 latent feature가 제대로 추출되었는 지 확인하는 역할을 하고 backpropagation으로 검사 및 확인합니다. latent

[논문분석] Auto-Encoding Variational Bayes (VAE)
Auto-Encoding Variational Bayes [YouTube] 오토인코더의 모든것 [github.io] Variational AutoEncoder [arXiv] Tutorial on Variational Autoencoders Variational AutoEncoder (이하 VAE)는 AutoEncoder 구조를 가진 생성모델이다. 하지만 AutoEncoder와 구조만 같을 뿐, 목적은 완전히 다르다. VAE를 알아보기에 앞서 AutoEncoder가 무엇인지 간단하게 알아보자. AutoEncoder AutoEncoder는
[딥러닝] Reparameterization Trick
본 블로그의 모든 글은 직접 공부하고 남기는 기록입니다. 잘못된 내용이나 오류가 있다면 언제든지 댓글 남겨주세요. Reparameterization Trick Reparameterization Trick은 주로 sampling 연산을 미분할 수 없어서 backprop을 사용하지 못하는 문제를 해결하기 위해 사용합니다. sampling 과정을 바로 미분할 수 없으니, sampling 연산 과정의 파라미터를 바꿔서 미분이 가능하도록 변환하는 기법입니다. 설명만 보면 간단해 보이지만, Varitional Inference를 비롯하여 그 맥락을 함께 살펴보면 꽤 복잡합니다. 차근차근 살펴보도록 하겠습니다. Objective 임의의 모델을 $f\theta(x)$, input data를 $x\sim p\theta(x)$라고 가정해 보겠습니다. 이 때 우리는 모델의 파라미터 $\theta$를 최적화하고 싶습니다. 이 모델을 최적화하는데 필요한 loss functi

Generative Model 시리즈1
필수적으로 알고가기 discriminative(판별 모델) vs generative model(생성 모델) 참고 사이트 : https://ratsgo.github.io/generative model/2017/12/17/compare/ discriminative model discriminative model 이란 Input Data : X가 주어질 때 레이블 Y가 나타날 조건부확률 p(Y|X)를 직접적으로 반환하는 모델이다. 이는 레이블 정보가 있어야 하기에 지도학습(Supervised Learning) 에 해당하며,

정보량부터 VAE까지
정보량이란? > 정보량의 기원은 어떤 내용을 표현하기 위해 물어야 하는 최소한의 질문 개수에서 출발합니다. 질문개수 = $log_2$(가능한 결과의 수)로 정의할 수 있으며 해당 내용을 처음 정립한 R.V.L Hartley는 논문에서 정보를 $H$로 표현합니다. 즉 $H$ = $nlog$($s$) = $log$($s^n$) 여기서 $n$은 받는 정보의 개수, $s$는 각 선택에서 가능한 결과의 가지수입니다. Entropy란? 불확실성(랜덤성)이 적으면 더 적은 정보량을 생성한다. 모든 사건이 같은 확률로 일어나는 것이 가장 불확실하다. 이를 식으로 정립한 것이 바로 Claude Shannon이며, Shannon은 이 불확실성의 측정을 'Entropy'라고 불렀으며 $H$라고 표시하였고 단위를 bit라고 하였습니다. '이산확률분포'일 때 '가능한 결과의 수'는 해당 사건 발생확률의 역수입니다. 위의 계산을 일반화 하면 다음과 같은 식이 도출됩

[Stable Diffusion 정복기: AutoEncoder? 인코딩이 뭔데]
1. Auto Encoder? 인코딩이 뭔데 """인코딩이 뭔데! 나 빨리 VAE 공부하러 가야된다고!""" 인코딩이라는 것은 간단하게 말해서 zip파일과 같은 '압축'이라고 생각하면 된다. 압축을 이용하면 2차원의 이미지를 숫자 몇개 만으로도 표현할 수 있게 된다! (고차원의 이미지를, 저차원으로.) 그리고 이것이 Auto Encoder의 목표이다. 이미지를 어떻게 숫자 몇개로 압축하는지 이해가 안된다면, 간단한 예시를 한 번 보자. 0부터 9까지의 숫자들에 대한 손글씨 이미지들이 있다.근데, 흑백이라서 한 픽셀에 0부터 255까지의 값을 가질 수 있고, 그게 28x28 사이즈의 이미지이기에 256^(28*28) = 2의 6272승이라는 무지막지한 경우의 수가 생긴다. 그런데 우리는 이 이미지를 3가지 요소로 간단하게 분석할 수 있다.1. 0~9 중에 어떤 숫자인지2. 대충 어떤 글씨체인지3. 선
케라스 창시자에게 배우는 딥러닝 - 8장
8장 생성 모델을 위한 딥러닝 LSTM으로 텍스트 생성하기 언어 모델(language model) : 이전 토큰들이 주어졌을 때 다음 토큰의 확률을 모델링할 수 있는 네트워크, 언어 모델은 언어의 통계적 구조인 잠재 공간을 탐색한다. 초기 텍스트 문자열을 주입하고 새로운 글자나 단어들 생성한다. (한번에 여러개도 가능하다.) 생성된 출력을 다시 입력 데이터로 넣고 이 과정을 반복한다. 텍스트 corpus에서 N개의 글자로 이루어진 문자열을 추출하여 주입하고 N + 1 번째 글자를 예측하도록 훈련한다. 즉 출력은 다음 글자의 소프트맥스(확률 분포)이고 이 LSTM을 글자 수준의 신경망 언어 모델(character-level neural language model)이라고 한다. 모델의 샘플링 전략의 중요성과 유형(탐욕적 샘플링과, 확률적 샘플링)을 소개하고, 실습해본다. (p.357) 딥드림 딥드림 : 합성곱 신경망이 학습한 표현