딥러닝 파이토치 교과서 - 서지영
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은 두 개의 데이터 쌍을 가짐!
'Club|Project > Euron | AI,데이터분석 학회' 카테고리의 다른 글
Generative Adversarial Nets : 발표 정리 (0) | 2025.03.25 |
---|---|
✳️ [GAN: Generative Adversarial Nets] 논문 리뷰 (0) | 2025.03.24 |
🧠 Transformer architecture (0) | 2025.03.20 |
✳️ [GAN: Generative Adversarial Nets] 논문 공부 (0) | 2025.03.20 |
✳️ [Attention Is All You Need] 발표 (0) | 2025.03.18 |