Study/머신러닝

적대적 생성 신경망(Generative Adversarial Networks)

김 도경 2025. 1. 9. 21:28
적대적 생성 신경망 (Generative Adversarial Networks)

 

  • 적대적 생성 신경망 (Generative Adversarial Networks, GANs)
    - Generative (생성) / Adversarial (적대적) / 신경망 (Networks)
    - 적대적으로 학습하는 신경망들로 구성되며, 생성 모델로써 활용함

  • 생성 모델 관점에서의 VAE와 GANs의 차이
    - VAE의 생성 방식: 입력 분포를 근사하는 과정에서 규제 (Regularization)을 주며 데이터를 생성
    - GANs의 생성 방식: 생성된 데이터와 실제 데이터를 판별하고 속이는 과정을 거치며 생성 모델을 개선

  • GANs 구조
    - 데이터를 생성하는 생성 모델 (Generator)과 데이터의 진위를 구별하는 판별 모델 (Discriminator)로 구성
      - 생성 모델: 임의의 노이즈를 입력으로 받아 생성된 데이터를 출력
      - 판별 모델: 생성된 데이터를 입력으로 받아 실제 데이터인지 (Real) 생성된 데이터인지 (Fake)를 출력

  • GANs 목적
    - GANs는 생성 모델의 분포와 판별 모델의 예측을 지속적으로 갱신하면서 학습됨 (학습 과정에서 (a) → (d)로 바뀜)
    - GANs 훈련 과정
    (a) 임의의 초기 분포로부터 생성 모델이 데이터를 생성
    (b) 판별 모델이 분류; 판별 모델 갱신
    (c) 갱신된 판별 모델을 고정; 생성 모델 갱신
    (d) 반복 과정을 거쳐 생성 모델은 판별 모델이 구별할 수 없는 수준의 데이터를 생성
    - 검정색 점선: 입력 데이터 분포; 파란색 점선: 판별 모델의 예측; 초록색 실선: 생성 모델의 분포
    - x 수평선: 입력 데이터 분포의 일부; z 수평선: 샘플링되는 도메인

  • GANs 목적 함수
    - GANs는 생성 모델과 판별 모델 두 개의 모델로 구성, 둘은 적대적으로 학습됨 (min & max) : Two-Player Zero-Sum Game
       - 판별 모델: 실제와 생성된 데이터를 정확하게 구별해야 함 : 판별 모델은 다음의 목적 함수를 “최대화”
       - 생성 모델: 실제와 유사한 데이터를 생성하여 판별자를 속여야 함 : 생성 모델은 다음의 목적 함수를 “최소화”

  • GANs 목적 함수의 최적값
    - GANs의 목적 함수는 생성 데이터 분포와 실제 데이터 분포가 동일한 pg = pdata에서 최적
        - 최적 상태에서 목적 함수의 최적 값은 -log4로 수렴

  • GANs 학습 방식
    - 두 모델이 서로 적대적인 방향으로 훈련
    - 적대적 학습: 생성 모델은 판별 모델의 출력값을 최소화; 판별 모델은 출력값을 최대화
    - 손실 함수의 최소화 문제: 기울기 하강 ⇔ 최대화 문제: 기울기 상승
  • GANs 학습 in Practice
    - GANs 목적 함수는 실제로 잘 동작하지 않음 → 생성된 데이터 G(z)에 대한 판별 모델의 기울기 문제
        - 학습이 필요한 구간에서 더 평평한 기울기를 가짐: 역전파 시에 더 약한 신호가 전달
    - 판별 모델의 기울기를 조정하면 학습이 더 잘 될 것 = 평평한 기울기를 가파르게
        - 생성자 기준에서 판별 모델이 정답을 맞출 가능성을 최소화하는 것 대신, 틀릴 가능성을 최대화
    - 모드 붕괴 (Mode Collapse) 현상이 발생할 수 있음
        - 판별 모델을 속일 수 있는 일부 데이터만을 계속해서 생성하는 현상

  • 다양한 손실 함수에 대해 일반화 f-GANs
    - 두 개의 모델을 학습하는 것은 굉장히 불안정하며 여전히 풀어야 할 문제
    - 학습에 유리한 목적 함수를 찾는 것

  • GANs 생성 결과
    - StyleGAN-3 (Alias-Free GANs) : 계층 구조의 GANs

  • VAE와 GANs의 생성 결과 비교
    - VAE의 결과물은 상대적으로 흐릿하고, 입력 데이터와 유사한 형태로 생성
    - GANs의 결과물은 상대적으로 뚜렷하고, 입력 데이터와 다른 형태의 데이터를 생성
조건부 생성 모델

- 조건을 입력 받아 원하는 의미를 갖는 데이터를 생성하는 생성 모델
- 범주(카테고리)부터 영상의 전체 구조(레이아웃)에 이르기까지 다양한 입력을 조건으로 받음
- 높은 다양성과 품질을 동시에 누릴 수 있으나 수집하기 더 까다로운 데이터를 필요로함

  • 조건부 생성 모델 – 일반 생성 모델의 한계
    - 생성 모델: 임의의 잠재 벡터로부터 데이터를 생성
       - 데이터를 잘 생성하나 그들의 의미는 제어할 수 없음
    - 다양한 활용을 위해 생성 데이터의 의미 제어 방법이 필요함( 데이터 증강, 영상 편집 … )
    - 임의의 잠재 벡터 + 조건 정보를 추가하여 데이터를 생성

  • 조건부 GANs 목적 함수
    - 생성 모델에 입력되는 잠재 벡터와, 판별 모델에 입력되는 조건부 벡터가 추가된 형태
        - 판별 모델이 입력받은 데이터가 실제 데이터와 유사하더라도 입력된 조건을 만족하지 않으면 0을 출력

  • 다양한 조건부 GANs
    - 판별자가 조건을 고려하는 다양한 방식
       - conditional adversarial net
       -  ACGAN
       - ProjGAN
       - ContraGAN
    - 생성자가 조건을 입력받는 다양한 방식
       - Generator Network

  • 다양한 모드 기반의 조건부 생성
    - 범주를 표현하는 벡터뿐 아니라, 텍스트, 이미지, 오디오 등으로부터 다양한 조건부 생성이 가능
         - 조건부 생성 모델은 경우 더욱 다양한 조건을 지원하는 방향으로 발전중

    - Pix2pix (2017): 이미지 대 이미지 변환
    - LostGANs (2019) : 레이아웃 대 이미지 변환
    - Speech2image (2020): 오디오 대 이미지 변환
    - GigaGAN (2023): 텍스트 대 이미지 변환
이미지 대 이미지
  • 이미지 대 이미지 변환 : 전통적 접근
    - 이미지를 입력으로 받아 원하는 이미지를 출력하는 것
         - 최근에는 조건부 생성 모델을 이용하여 원하는 이미지를 생성하는 방법들이 주를 이룸
    - 이미지 변환의 대표적인 예시: 색상 변환, 낮밤 변환, 스케치 채색 등
         - 조건부 GANs 이전에는 각 태스크별 모델과 손실 함수를 각각 정의해야 했음
    - 기존의 방식은 주어진 이미지를 회귀 모델을 통해 변환한 후, 타겟 이미지와 손실을 계산하여 개선하는 방식
    - 픽셀 요소별 L1 손실 혹은 L2 손실을 주로 활용

    - 한계
       - 변환된 이미지를 생성하는 것이 아니라 회귀 모델로 픽셀값을 예측하는 것이므로 흐릿한 이미지가 만들어짐
       - 평균 / 중간 값을 예측하는 한계가 있음

  • Pix2pix (2017)
    - 쌍이 있는 이미지 변환 기술
    - 이미지 쌍이 있는 조건부 생성 모델 기반의 이미지 대 이미지 변환 프레임워크를 제안
        - 이미지 특성별로 회귀 모형을 만드는 것이 아닌, 생성 모델이 변환된 이미지를 생성

    - 생성모델
        - U-Net 기반의 생성 모델을 활용 – 인코더-디코더 구조에 건너뜀 연결 (Skip Connection)을 추가한 구조
        - 이미지 대 이미지 변환에서는 영상 세부 사항을 잘 유지하는 것이 중요
    - 판별 모델
        - GANs의 판별 모델은 저해상도 모델에 더 적합하므로, 고해상도를 위한 패치 기반의 판별 모델이 필요
        - PatchGANs의 판별 모델 구조를 차용
    - 손실함수
        - 조건부 GANs의 손실 함수 + 원본 이미지와의 유사성을 위한 L1 정규화 (Regularization) 항 추가
    - 결과 분석
        - 단순 인코더-디코더가 아닌 건너뜀 연결 구조를 활용하여 더 좋은 이미지를 생성
        - 정규화 (Regularization) 항이 없이도 잘 생성되지만, 정규화가 추가될 때 더 잘 생성함
    - 한계점
        - 데이터가 반드시 쌍으로 존재해야 하기에, 데이터를 확보하는 것이 어려움
        - ex) 같은 위치의 다른 계절, 같은 위치와 같은 자세의 얼룩말과 말 …

  • CycleGAN (2017)
    - 쌍이 없는 이미지 변환 기술
    - Pix2pix로부터 시작된 이미지 대 이미지 변환 기술들은 쌍이 존재하는 데이터셋으로만 구현이 가능
        - 현실의 문제에는 쌍이 없는 데이터셋이 훨씬 더 많음

    - 주요 아이디어
        - Cycle Consistent: 상호 변환이 가능한 것; 한국어→영어 변환이 가능하다면, 영어→한국어 변환도 가능해야 함
        - 입력 이미지로 복원 가능한 정도까지만 이미지를 변환하도록 하여 원본 손실을 최소화

    - 손실 함수: 수식
        - 실제 이미지와 생성된 이미지의 도메인이 동일하게 하는 GAN 손실 함수 활용
        - Cycle Consistency를 위한 L1정규화 기반의 손실 함수를 추가
            - 정방향: x→G(x)→F(G(x)) ≈ x; 역방향: y→F(y)→G(F(y)) ≈ y
    - 손실 함수: 직관적 이해
         - Cycle Consistency 정방향: x→G(x)→F(G(x)) ≈ x; 역방향: y→F(y)→G(F(y)) ≈ y

    - 결과 분석
         - CycleGAN은 양방향 변환이 가능하도록 학습이 되었으므로, 양방향 모두 우수한 결과를 보임
         - 단순 변환을 넘어서, 입력 이미지에 대한 의미를 유지하고 있다는 점이 핵심

  • BiCycleGAN (2017)
    - 하나의 입력, 다양한 출력
    - 하나의 영상이 다른 도메인에서 여러 양상으로 그려질 수 있음

  • StarGAN (2017)
    - 여러 도메인간 변환
    - 세 개 이상의 도메인간 변환을 수행함

  • InstaGAN (2019)
    - 형태 차이가 큰 도메인간 변환
    - 모양이 매우 다른 객체간 변환을 가능하게 함

  • LostGANs (2019)
    - 공간 구조로부터 이미지 생성
    - 다양한 이미지 생성 분야에서 좋은 성과가 있었지만, 공간 구조를 포함하는 형태의 연구는 많지 않았음
    - 공간 구조로부터 이미지를 생성해낸다는 것은 이미지 매핑 보존이 가능하다는 것
    - 이미지 매핑 보존을 기반으로 위치 이동 등 이미지 재구성까지 가능

  • SPADE (GauGAN, 2019)
    - 의미 공간으로부터 이미지 생성
    - 의미 분할 정보를 이용하기 때문에 이미지 생성 단계에서 객체 추가, 변경 등이 가능
    - 같은 의미 영역에 대해 다양한 데이터를 생성해낼 수 있음

  • HyperStyle (2022)
    - Pretrained GAN을 활용한 이미지 변환
    - 이미지만을 활용해 학습한 모델의 잠재 공간을 분석, 활용해 이미지 변환에 활용
텍스트 대 이미지
  • GAN-CLS (2016)
    - 텍스트 입력으로부터 이미지 생성
    - 문장은 단어보다 이미지를 풍부하고 유연하게 설명할 수 있음
        - 언어 입력으로부터 이미지를 생성할 수 있다면, 더 풍부한 이미지 생성 가능!
    - 텍스트 입력으로부터 이미지 생성: 어려움
    - 텍스트 생성은 순차적으로 단어를 생성하므로, 생성 시 더 많은 정보를 얻을 수 있음
    - 이미지는 한 번에 생성되므로 중요한 시각적 정보를 잘 인코딩하는 텍스트 특징 표현을 훈련해야 함

- 손실 함수 (GAN-CLS)
    - 기존의 GANs 손실 함수는 실제 이미지 + 정확한 설명 (참), 생성 이미지 + 정확한 설명 (거짓)만 고려
    - 실제 이미지 + 부정확한 설명 (거짓), 생성된 이미지 + 정확한 설명 (거짓) 도 고려해야 함

- 손실 함수: 개선된 버전 (GAN-INT-CLS)
     - 기존 방식: 훈련 텍스트와 훈련 이미지를 일대일로 매칭한 것을 훈련하기 때문에 테스트 시 성능 하락
     - 텍스트 특징 벡터에 대한 보간법 (interpolation)을 이용하여 완화

- 결과 분석
     - 텍스트 정보를 입력으로 하여 이미지를 생성하는 데에 성공
     - 손실 함수에 텍스트와 보간법을 모두 적용하였을 때 가장 좋은 결과물을 생성함

  • GigaGAN (2023)
    - GANs를 활용한 고해상도 텍스트 대 이미지 생성
    - 다른 생성 모델처럼 모델의 규모와 데이터를 매우 크게 만들어 학습, 텍스트 기반으로 고해상도 이미지를 생성함

    - Multi-stage Generation : 저화질 생성 이후 고화질 변환 모델로 화질 개선 작업 수행
        - 기존 Text-to-image 의 패러다임을 따름

    - 생성 모델 - Deep dive
       - 전역 정보를 통해 스타일을 생성하고, 지역 정보는 피라미드형 구조에 계속하여 조건 정보로 활용
       - 이미지-이미지 셀프 어텐션, 이미지-텍스트 크로스 어텐션 활용
       - 텍스트에 따라 유동적으로 컨볼루션 커널을 생성하는 적응형 샘플 커널 선택 기술을 도입

1. 입력 받은 텍스트를 사전 훈련된 CLIP 인코더와 레이어 T 를 통해 임베딩
2. 스타일 네트워크 M 는 스타일 벡터 w 를 출력
3. 생성 네트워크 G̃는 텍스트 임베딩과 스타일을 입력으로 받아 이미지를 생성

- 판별 모델
    - 생성 모델과 유사하게 축소되는 피라미드 형태로 구성 – 각 단계별로 독립적으로 판별 + 매 단계마다 텍스트 입력

- 결과 분석
   - 전역 정보를 활용하기 때문에 주어진 텍스트에 대한 보간이 잘 이루어짐
   - 생성 과정에서 지역 정보를 계속 조건으로 주기 때문에 독립적인 잠재 공간을 유지하며 스타일 변환이 가능

'Study > 머신러닝' 카테고리의 다른 글

자연언어처리란?  (0) 2025.01.10
Generation-확산모델  (0) 2025.01.10
Generation-오토 인코더  (0) 2025.01.09
Generation-생성 모델 평가지표  (0) 2025.01.09
Generation-생성 모델  (2) 2025.01.09