본문 바로가기
  • 컴공생의 공부 일기
  • 공부보단 일기에 가까운 것 같은
  • 블로그
Club|Project/Euron | AI,데이터분석 학회

🪼생성 모델 : 딥러닝 파이토치 교과서

by 정람지 2025. 3. 23.

딥러닝 파이토치 교과서 - 서지영 

13장. 생성 모델

 

 

🪼

오우 

못 봤던 예쁜 해파리 임티 발견


🪼생성 모델이란

주어진 데이터를 학습하여 데이터 분포를 따르는 유사한 데이터를 생성하는 모델

 

 

🪼생성 모델 개념

판별 모델 descriminate model

이미지를 분류하는 모델

<->

생성자 모델 generative model 

추출한 특성들의 조합을 이용하여 새로운 이미지를 생성

 

🪼생성 모델 유형

1) 변형 오토인코더 모델

- 모델의 확률 변수를 구함 ( 명시적 방법 )

 

2) GAN 모델

- 확률 변수를 이용하지 않음 ( 암시적 방법 )


🪼변형 오토인코더

이미지의 잠재 공간에서 샘플링하여 완전히 새로운 이미지나 기존 이미지를 변형하는 방식으로 학습을 진행

 

변형 오토인코더 == 오토인코더의 확장


🪼오토인코더란

입력을 출력으로 복사하는 신경망 

- 은닉측의 노드 수가 입력값보다 적다

=> 적은 수의 병목층 뉴런으로 데이터를 가장 잘 표현할 수 있는 방법 : 오토인코더 

 

 

구성 요소

1. 인코더 : 특성에 대한 학습 수행

2. 병목층(은닉층) : 뉴런 개수 최소계층 / 데이터의 압축 표현 

3. 디코더 :  압축 데이터를 원래대로 재구성 (입력에 가까운 출력 생성!)

4. 손실 재구성 

 

수학적 접근

 

오토인코더가 중요한 이유

1. 데이터 압축 

2. 차원의 저주 예방

3. 특성 추출


🪼변형 오토인코더 variational autoencoder

 

새롭게 생성된 데이터의 확률 분포에는 관심 없었던 오토인코더..

"동일한 이미지 출력"이 목표

 

하지만 변형 오토인코더는 표준편차와 평균을 이용하여 확률 분포를 만들고, 샘플링하여 디코더를 통과시켜 새로운 데이터를 생성!

=> 입력 데이터와 조금 다른 출력 데이터를 만들!

 

z 가우시안 분포 이용

=> 벡터를 랜덤하게 생성하여, 분포의 오차를 이용해 새로운 유사데이터 생성

 


 

잠깐! 

시간이 없네

원래 목표인 GAN 먼저 함

 

p696 까지 완

 


🪼 GAN - 생성적 적대 신경망이란

생성자와 판별자가 서로 경쟁하며 가짜 이미지를 진짜 이미지와 최대한 비슷하게 만들도록 학습을 진행

 

판별자 먼저 학습 -> 생성자 학습

 

생성자 : 분류에 성공할 확률을 낮춤

판별자 : 분류에 성공할 확률 높임

=> 경쟁적으로 발전!


🪼GAN 동작 원리

판별자 D 

이미지 x가 입력으로 주어졌을 때 

출력 D(x)가 진짜 이미지일 확률 반환

 

생성자 G

임의의 노이즈 데이터를 사용하여 모조 이미지 z(G(x)) 생성

 

 

판별자 학습 시, 실제 이미지는 높은 확률, 모조 이미지는 낮은 확률 반환하게 가중치 업데이트

 

 

 

GAN의 손실 함수

딥러닝 파이토치 교과서 - 서지영

 

판별자는 실제 이미지를 입력받을 경우 D(x)를 1로 예측

생성자가 잠재 벡터에서 생성한 모조 이미지 G(z)를 입력받을 경우 D(G(z))를 0으로 예측

->

생성자는 판별자가 모조 이미지 G(z)를 입력받을 경우 1로 예측하는 것이 목표!

 

 

판별자 D 
D(x) = 1 / D(G(z)) = 0
이 되게 업데이트
=> 
log(D(x)), log(1-D(G(z))) 모두 최대(1)가 되게 

생성자 G
D(G(z)) = 1
이 되게 업데이트
log(1-D(G(z))) 최소(0)가 되게 

 

둘의 파라미터를 번갈아 가며 업데이트하기

( 판별자 업데이트 시 생성자 고정 / 생성자 업데이트 시 판별자 고정 )


🪼GAN 파생 기술

gan 대결 학습 구도

=> 학습이 매우 불안정

한쪽으로 치우친 훈련? ㅜㅜ

 

이러한 제약 해결 모델 

=> DCGAN


🪼DCGAN

GAN + CNN

 

분수-스트라이드 합성곱 : 이용하여  이미지 형태로 출력 형태 바꾸기


🪼cGAN

GAN / DCGAN은 가짜 이미지 생성을 위해 임의의 노이즈 값을 사용

<->

cGAN : 출력에 어떤 조건을 주어 변형함 (임의의 노이즈 값  + 조건)

- 데이터 훈련 과정에서 인간이 통제할 수 있게 됨!

 

문자열 태그 붙이기 등 가능

딥러닝 파이토치 교과서 - 서지영


🪼CycleGAN

사진이 주어졌을 때 다른 사진으로 변형시키는 모델 (말을 얼룩말으로)

 

GAN / DCGAN은 가짜 이미지 생성을 위해 랜덤 노이즈 값을 사용

원하는 결과 얻기 힘듬ㅠㅠㅠ

<->

PIX2PIX / CycleGAN

로 해결

 

 

 

PIX2PIX

랜덤 노이즈 값이 아니라 이미지를 입력으로 받아

다른 스타일의 이미지를 출력하는

지도 학습 알고리즘

 

마찬가지로 

생성자-판별자 네트워크 이용

 

 

 

CycleGAN

그런데 PIX2PIX 쓰려면 데이터 쌍이 필요함 ( 동일한 이미지인데 채색이 다른 데이터 쌍 / 선화, 이미지 데이터 쌍 , 등 )

구하기 힘듬 ㅠㅠ

쌍을 이루지 않는 이미지로 학습할 수 있는 방법이 있나? 

=> CycleGAN

CycleGAN은 두 개의 데이터 쌍을 가짐!