[졸업 연구] 생성 모델이란?

2한나·2025년 3월 24일

졸업연구

목록 보기
3/13

딥러닝 파이토치 교과서 13장 생성 모델이란? 공부

생성 모델이란

생성 모델 개념

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

판별자 모델

  • 이미지를 분류하는 것
  • 이미지를 정확히 분류하고자 해당 이미지를 대표하는 특성들을 잘 찾는 것을 목표로 한다.

생성자 모델

  • 판별자 모델에서 추출한 특성들의 조합을 이용하여 새로운 개와 고양이 이미지를 생성하는 것
  • 입력 이미지에 대한 데이터 분포 p(x)를 학습하여 새로운 이미지를 생성하는 것을 목표로 한다.

생성 모델의 유형

명시적 방법

  • 확률 변수 p(x)를 정의하여 사용
  • 대표적인 모델: 변형 오토인코더
  • 오토인코더는 이미지의 잠재 공간*에서 샘플링하여 완전히 새로운 이미지나 기존 이미지를 변형하는 방식으로 학습 진행

암시적 방법

  • 확률변수 p(x)에 대한 정의 없이 p(x)를 샘플링*하여 사용
  • 대표적인 모델: GAN
  • GAN은 생성자와 판별자가 서로 경쟁하면서 가짜 이미지를 진짜 이미지와 최대한 비슷하게 만들도록 학습을 진행

샘플링: 모집단의 데이터에서 최대한 모집단과 유사한 일부 데이터를 추출하는 과정
잼재공간: 숫자 5이미지를 입력하면 인코더는 숫자 5를 받아서 분석한 후 2차원 좌표평면, 예를 들어 (5,5)에 표현한다. 이때 숫자 5 이미지를 고차원 데이터라고 하며 좌표평면에 표현된 벡터는 점 (5,5)에 해당된다. 이떄, 2차원 좌표 평면을 잠재공간이라고 한다.


변형 오토인코더

오토인코더란?

오토인코더

  • 단순히 입력을 출력으로 복사하는 신경망으로, 은닉층의 노드 수가 입력 값보다 적은 것이 특징이다.

입력을 출력으로 복사하는 이유?

  • 은닉층때문
  • 오토인코더의 은닉층은 입력과 출력의 뉴런보다 훨씬 적다. 즉, 적은 수의 은닉층 뉴력으로 데이터를 가장 잘 표현할 수 있는 방법이 오토인코더이다.

오토인코더의 4가지 주요 부분

  • 인코더: 인지 네트워크, 특성에 대한 학습을 수행
  • 은닉층: 모델의 뉴런 개수가 최소인 계층, 차원이 가장 낮은 입력 데이터의 압축 표현이 포함됨
  • 디코더: 생성 네트워크, 은닉층에서 압축된 데이터를 원래대로 재구성하는 역할을 함. (최대한 입력에 가까운 출력을 생성하도록)
  • 손실 재구성: 오토인코더는 압축된 입력을 출력층에서 재구성하며, 손실함수는 입력과 출력의 차이를 가지고 계산한다.

오토인코더가 중요한 이유

  • 데이터 압축: 데이터 압축은 메모리 측면에서 상당한 장점이다. 오토인코더를 이용하면 이미지나 음성 파일의 중요 특성만 압축하면 용량이 작아지며 품질도 좋아진다.
  • 차원의 저주 예방: 오토인코더는 특성 개수를 줄여주기 때문에 데이터 차원이 감소하여 차원의 저주를 피할 수 있다.
  • 특성 추출: 오토인코더는 비지도 학습으로 자동으로 중요한 특성을 찾아준다.

수학적 접근

  • 입력 x와 출력 y는 같은 차원(R)에 존재한다는 가정하에 입력 데이터를 인코더 네트워크에 통과시켜 압축된 잠재 벡터 z값을 얻는다. 이때 z를 구하는 공식: z = h(x)
  • 압축된 z 벡터에서 입력 데이터와 크기가 같은 출력 값은 다음과 같이 계산한다. y = g(z) = z(h(x))
  • 이때 손실 값은 입력 값 x와 디코더를 통과한 y값의 차이로 다음과 같이 계산한다.
  • 즉, 디코더 네트워크를 통과한 출력 값은 입력값의 크기와 같아야 한다.


변형 오토인코더

오토인코더와의 비교

오토인코더

  • 차원을 줄이는 것이 목표이기 때문에 새롭게 생성된 데이터의 확률 분포에는 관심이 없다.
  • 목적: 데이터 벡터에 대한 차원을 축소하여 실제 이미지와 동일한 이미지를 출력하는 것

변형 오토인코더

  • 표준편차와 평균을 이용하여 확률 분포를 만들고, 거기에서 샘플링하여 디코더를 통과시킨 후 새로운 데이터를 만들어 낸다.
  • 입력 데이터와 조금 다른 출력 데이터를 만들어 내는데, 중요한 특성의 파라미터를 담고 있는 z 분포에서 벡터를 랜덤하게 샘플링하고 이 분포의 오차를 이용하여 입력 데이터와 유사한 다량의 데이터를 만들어낸다.
  • 목적: 데이터가 만들어지는 확률 분포를 찾아 비슷한 데이터를 생성하는 것

변형 오토인코더의 인코더와 디코더

  • q(z|x): x를 입력받아 잠재 벡터 z와 대응되는 평균과 분산을 구하는 네트워크 (인코더 네트워크)
  • p(x|z): z를 입력받아 x와 대응되는 평균과 분산을 구하는 네트워크 (디코더 네트워크)

적대적 생성 신경망 (GAN)

GAN 개념

GAN 생성 모델: 생성자판별자가 각각 존재하여 서로 적대적으로 학습하는 모델
- 생성자: 최대한 진짜와 비슷한 데이터를 생성
- 판별자: 진짜와 가짜를 구별

GAN 학습 방법

  • 판별자를 먼저 학습시킨 후 생성자를 학습시키는 과정을 반복한다.
  • 판별자 학습 : 아래 과정을 거쳐 판별자는 실제 이미지를 진짜로 분류하고, 모조 이미지를 가짜로 분류한다.
    1. 실제 이미지를 입력해서 네트워크가 해당 이미지를 진짜로 분류하도록 학습
    2. 생성자가 생성한 모조 이미지를 입력해서 해당 이미지를 가짜로 분류하도록 학습
  • 이와 같은 학습 과정을 반복하면 판별자와 생성자가 서로 적대적인 경쟁자로 인식하여 모두 발전하게 된다. 결과적으로 생성자는 진짜 이미지에 완벽히 가까울 정도의 유사한 모조 이미지를 만들고, 이에 따라 판별자는 실제 이미지와 모조 이미지를 구분할 수 없게 된다.

GAN 동작 원리

GAN 구조

GAN은 생성자판별자 네트워크가 서로 적대적으로 경쟁하며 학습을 진행한다.

  • 생성자 G판별자 D를 속이려고 원래 이미지와 최대한 비슷한 이미지를 만들도록 학습한다.
  • 반대로 판별자 D는 원래 이미지와 생성자 G가 만든 이미지를 구분하도록 학습을 진행한다.

판별자 D

  • 주어진 입력 이미지가 진짜 이미지인지 가짜 이미지인지 구별하는 것
  • 이미지 x가 입력으로 주어졌을 때 판별자 D의 출력에 해당하는 D(x)는 진짜 이미지일 확률을 반환한다.

생성자 G

  • 판별자 D가 진짜인지 가자짜인지 구분할 수 없을 만큼 진짜와 같은 모조 이미지를 노이즈 데이터를 사용하여 만들어낸다.

예시상황

  • 실제 이미지인 알파벳 z가 입력으로 주어짐
  • 판별자는 z를 학습
  • 생성자는 임의의 노이즈 데이터를 사용하여 모조 이미지를 생성함
  • 이를 다시 판별자 D의 입력으로 주면 판별자는 실제 이미지일 확률을 반환함

GAN 손실 함수

  • 수식에서 판별자 D는 실제 이미지 x를 입력받을 경우 D(x)를 1로 예측하고, 생성자가 잠재 벡터에서 생성한 모조 이미지 G(z)를 입력받을 경우 D(G(z))를 0으로 예측함
  • 판별자가 모조 이미지 G(z)를 입력받을 경우 1로 예측하도록 하는 것이 목표

0개의 댓글