적대적 생성 신경망 (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 |