Ian Goodfellow와 다른 연구자들이 논문에서 생성적 적대 네트워크를 소개한 지 2년 후 Yann LeCun은 적대적 훈련을 "지난 10년 동안 ML에서 가장 흥미로운 아이디어"라고 불렀습니다. GAN은 흥미롭고 유망하지만 완전히 다른 관점에서 전통적인 AI 문제를 해결하는 생성 모델 제품군의 일부일 뿐입니다. 이 기사에서는 세 가지 일반적인 생성 모델을 비교할 것입니다.
머신러닝을 생각할 때 가장 먼저 떠오르는 것은 판별 알고리즘일 것입니다. 판별 모델은 특성을 기반으로 입력 데이터의 레이블 또는 카테고리를 예측하는 것으로 모든 분류 및 예측 솔루션의 핵심입니다. 이러한 모델과 달리 생성 알고리즘은 데이터에 대한 스토리를 전달하고 데이터가 생성된 방식에 대한 가능한 설명을 제공하는 데 도움이 됩니다. 특징을 레이블에 매핑하는 판별 알고리즘과 달리 생성 모델은 레이블이 지정된 특징을 예측하려고 합니다.
레이블 y와 모델이 정의한 특성 x 사이의 관계를 구별하고 "y를 어떻게 얻나요?"라는 질문에 대답하는 모델을 생성합니다. 생성 모델 모델은 P(Observation/Cause)이며, Bayes의 정리를 사용하여 P(Cause/Observation)를 계산합니다. 이러한 방식으로 그들은 p(x|y), y에 대한 x의 확률, 또는 레이블이나 클래스가 주어진 특징의 확률을 포착할 수 있습니다. 따라서 실제로 생성 알고리즘은 분류자로도 사용될 수 있습니다. 아마도 개별 클래스의 분포를 모델링하기 때문일 것입니다.
생성 알고리즘은 많지만 심층 생성 모델 범주에 속하는 가장 인기 있는 모델은 VAE(Variational Autoencoder), gan 및 흐름 기반 모델입니다.
VAE(Variational Autoencoder)는 "잠재 공간에서 관측값에 대한 확률적 설명을 제공"하는 생성 모델입니다. 간단히 말해서 이는 VAE가 잠재 속성을 확률 분포로 저장한다는 것을 의미합니다.
변형 자동 인코더(Kingma & Welling, 2014) 또는 VAE의 아이디어는 변이 베이지안 및 그래픽 모델 방법에 깊이 뿌리를 두고 있습니다.
표준 오토인코더는 2개의 유사한 네트워크, 즉 인코더와 디코더로 구성됩니다. 인코더는 입력을 받아 더 작은 표현으로 변환하며, 디코더는 이를 다시 원래 입력으로 변환하는 데 사용할 수 있습니다. 입력을 변환하는 잠재 공간과 인코딩 벡터가 있는 공간은 연속적이지 않을 수 있습니다. 이는 생성 모델의 문제입니다. 우리 모두는 잠재 공간에서 무작위로 샘플링하거나 연속 잠재 공간에서 입력 이미지의 변형을 생성하기를 원하기 때문입니다.
변형 오토인코더에는 연속적인 잠재 공간이 있어 무작위 샘플링과 보간이 더 편리합니다. 이를 달성하기 위해 인코더의 숨겨진 노드는 인코딩 벡터를 출력하지 않고 대신 동일한 크기의 두 벡터(평균 벡터와 표준 편차 벡터)를 출력합니다. 각 숨겨진 노드는 자신을 가우스 분포로 간주합니다. 여기서 평균 및 표준편차 벡터의 i번째 요소는 i번째 확률변수의 평균 및 표준편차 값에 해당합니다. 우리는 이 분포 벡터에서 샘플링하고 디코더는 입력 벡터의 확률 분포에서 무작위로 샘플링합니다. 이 프로세스는 무작위 생성입니다. 즉, 동일한 입력에 대해 평균과 표준 편차가 일정하게 유지되면 실제 인코딩은 각 패스마다 달라집니다.
오토인코더의 손실은 재구성 손실(출력이 입력과 얼마나 유사한지)과 잠재 손실(숨겨진 노드가 정규 분포에 얼마나 가까운지)을 최소화하는 것입니다. 잠재적 손실이 작을수록 인코딩할 수 있는 정보가 적어서 재구성 손실이 증가하므로 잠재적 손실과 재구성 손실 사이에는 트레이드오프(trade-off)가 있습니다. 잠재적 손실이 작으면 생성된 이미지가 훈련 이미지와 너무 유사하여 성능이 저하됩니다. 재구성 손실이 작을수록 훈련 중 재구성된 이미지 효과는 더 좋지만 생성된 새 이미지는 재구성된 이미지와 상당히 다르기 때문에 적절한 균형을 찾아야 합니다.
VAE는 순차 및 비순차, 연속 또는 불연속, 심지어 레이블이 지정되거나 지정되지 않은 다양한 유형의 데이터를 처리할 수 있으므로 매우 강력한 생성 도구가 됩니다.
그러나 VAE의 주요 단점 중 하나는 생성되는 출력이 흐릿하다는 것입니다. Dosovitskiy와 Brox가 지적했듯이 VAE 모델은 종종 비현실적이고 모호한 샘플을 생성합니다. 이는 데이터 분포를 복구하고 손실 함수를 계산하는 방식으로 인해 발생합니다. Zhao 등의 2017년 논문에서는 변형 베이지안 방법을 사용하지 않고 VAE를 수정하여 출력 품질을 향상할 것을 제안했습니다.
생성적 적대 신경망(GAN)은 새로운 콘텐츠를 생성할 수 있는 딥 러닝 기반의 생성 모델입니다. GAN 아키텍처는 Ian Goodfellow et al의 "Generative Adversarial Networks"라는 제목의 2014년 논문에서 처음 설명되었습니다.
GAN은 두 가지 하위 모델, 즉 새로운 예제를 생성하는 생성기 모델과 예제를 실제 또는 가짜(생성된)로 분류하려고 시도하는 판별기 모델을 사용하는 지도 학습 접근 방식을 사용합니다.
Generator: 문제 영역에서 새로운 그럴듯한 예를 생성하기 위한 모델입니다.
Discriminator: 예제를 실제(도메인에서) 또는 가짜(생성)로 분류하는 데 사용되는 모델입니다.
두 모델은 경쟁자로 훈련을 받습니다. 생성기는 샘플 데이터를 직접 생성합니다. 상대편인 판별자는 훈련 데이터에서 추출한 샘플과 생성기에서 추출한 샘플을 구별하려고 시도합니다. 이러한 경쟁 프로세스는 판별기 모델이 절반 이상 참 또는 거짓을 판단하지 못할 때까지 훈련 중에 계속됩니다. 이는 생성기 모델이 매우 현실적인 데이터를 생성하고 있음을 의미합니다.
판별자가 실제 샘플과 가짜 샘플을 성공적으로 식별하면 해당 매개변수는 변경되지 않은 채 보상을 받습니다. 생성기가 실수하면 처벌을 받고 해당 매개변수가 업데이트됩니다. 이상적인 세계에서는 판별자가 차이를 구분할 수 없고 "불확실함"(예: 50% 참 또는 거짓)을 예측할 때마다 생성기가 입력 도메인에서 완벽한 복사본을 생성할 수 있습니다.
하지만 여기에서는 각 모델이 다른 모델을 압도할 수 있습니다. 판별자가 너무 좋으면 0이나 1에 매우 가까운 값을 반환하게 되고 생성자는 업데이트된 그래디언트를 가져오는 데 어려움을 겪게 됩니다. 생성기가 너무 좋으면 판별기의 약점을 이용하여 거짓 부정이 발생합니다. 따라서 두 신경망은 각각의 학습률을 통해 비슷한 "기술 수준"을 달성해야 합니다. 이는 GAN이 훈련하기 어려운 이유 중 하나이기도 합니다.
생성기는 고정 길이의 무작위 벡터를 입력으로 사용하고 정의된 도메인 내에서 샘플을 생성합니다. 이 벡터는 가우스 분포에서 무작위로 추출됩니다. 훈련 후에는 이 다차원 벡터 공간의 포인트가 문제 영역의 포인트와 일치하여 데이터 분포의 압축된 표현을 형성합니다. 이 단계는 VAE와 유사합니다. 잠재변수로 구성된 공간. GAN의 생성기는 잠재 공간에서 선택된 포인트의 평균을 계산합니다. 잠재 공간에서 추출된 새로운 점은 생성기 모델에 대한 입력으로 제공될 수 있으며 새롭고 다른 출력 예제를 생성하는 데 사용될 수 있습니다. 훈련 후에 생성기 모델은 유지되어 새 샘플을 생성하는 데 사용됩니다.
판별자 모델은 예제를 입력(훈련 데이터 세트의 실제 샘플 또는 생성기 모델에서 생성됨)으로 취하고 (생성된) 진짜 또는 가짜의 이진 클래스 레이블을 예측합니다. 판별자는 일반적인(이해하기 쉬운) 분류 모델입니다.
훈련 과정이 끝나면 판별자는 생성자에 관심이 있기 때문에 폐기됩니다. 물론 판별자는 다른 목적으로도 사용될 수 있습니다.
GAN은 실행 가능한 샘플을 생성할 수 있지만 원본 GAN에도 단점이 있습니다.
Flow 기반 생성 모델은 다루기 쉬운 샘플링과 잠재 변수 추론을 갖춘 정확한 로그 우도 모델입니다. 흐름 기반 모델은 관찰의 정확한 로그 가능성을 계산할 수 있도록 이전 샘플에 여러 가지 가역적 변환을 적용합니다. 이전 두 알고리즘과 달리 이 모델은 데이터 분포를 명시적으로 학습하므로 손실 함수는 음의 로그 가능성입니다.
비선형 독립 성분 분석에서 흐름 모델 f는 고차원 확률 변수 x를 표준 가우스 잠재 변수 z=f(x)에 매핑하는 가역 변환으로 구성됩니다. 흐름 모델 설계의 핵심 아이디어는 임의의 전단사 함수가 될 수 있고 간단한 가역 변환을 중첩하여 형성될 수 있다는 것입니다. 요약하자면, 흐름 모델 f는 f(x) =f1о····fL(x)와 같은 일련의 가역적 흐름으로 구성되며, 각 fi는 다루기 쉬운 역행렬과 다루기 쉬운 야코비 행렬 모드를 갖습니다.
흐름 기반 모델에는 두 가지 주요 범주가 있습니다. 정규화된 흐름이 있는 모델과 기본 모델의 성능을 향상시키려는 자동 회귀 흐름이 있는 모델입니다.
많은 기계 학습 문제의 경우 우수한 밀도 추정을 수행하는 것이 필수적입니다. 그러나 이는 본질적으로 복잡합니다. 딥 러닝 모델에서 역전파를 수행해야 하는 경우 파생 상품을 효율적으로 계산할 수 있도록 내장된 확률 분포가 충분히 단순해야 합니다. 대부분의 실제 분포는 훨씬 더 복잡하지만 전통적인 솔루션은 잠재 변수 생성 모델에서 가우스 분포를 사용하는 것입니다. RealNVP 또는 Glow와 같은 정규화된 흐름(NF) 모델은 분포에 대한 강력한 근사치를 제공합니다. 일련의 가역 변환 함수를 적용하여 단순 분포를 복잡한 분포로 변환합니다. 일련의 변환을 통해 변수 변환 정리에 따라 원래 변수는 새로운 변수로 반복적으로 대체될 수 있으며 최종적으로 최종 목표 변수의 확률 분포를 얻습니다.
정규화된 흐름의 흐름 변환이 자기회귀 모델로 구성되어 벡터 변수의 각 차원이 이전 차원의 조건을 만족하는 경우 흐름 모델의 이러한 변화를 자기회귀 흐름이라고 합니다. 이는 표준화된 프로세스를 갖춘 모델에 비해 한 단계 발전된 것입니다.
일반적으로 사용되는 자동 회귀 흐름 모델은 이미지 생성을 위한 PixelCNN과 1차원 오디오 신호를 위한 WaveNet입니다. 그것들은 모두 일련의 인과적 컨볼루션(순서를 고려하는 컨볼루션 작업)으로 구성됩니다. 특정 타임스탬프에서의 예측은 과거에 관찰된 데이터만 사용합니다. PixelCNN에서는 마스크 커널에 의해 인과 컨볼루션이 수행됩니다. 그리고 WaveNet은 여러 타임스탬프를 통해 출력을 미래 시간으로 이동합니다.
Flow 기반 모델은 개념적으로 복잡한 분포를 모델링하는 데 매우 친숙하지만 최신 자기회귀 모델과 비교하면 밀도 추정 성능 문제로 인해 제한됩니다. 흐름 모델은 처음에는 GAN의 대안으로 좋은 출력을 생성할 수 있지만 흐름 기반 모델은 GAN보다 동일한 해상도의 이미지를 생성하는 데 몇 배 더 오래 걸리기 때문에 학습 계산 비용에 상당한 차이가 있습니다.
모든 알고리즘에는 정확성과 효율성 측면에서 장점과 한계가 있습니다. GAN과 프로세스 기반 모델은 일반적으로 VAE보다 실제 이미지에 더 가깝거나 더 잘 생성되지만 후자는 프로세스 기반 모델보다 더 빠른 시간과 더 나은 매개변수 효율성을 제공합니다.
다음은 세 가지 모델의 비교 요약입니다. GAN은 병렬성 때문에 매우 효율적이지만 되돌릴 수는 없습니다. 대조적으로, 흐름 모델은 가역적이지만 효율적이지 않은 반면, vae는 가역적이고 효율적이지만 병렬로 계산할 수 없습니다. 이러한 특성을 바탕으로 실제 사용 시 출력, 훈련 프로세스 및 효율성 간의 균형을 이룰 수 있습니다.
위 내용은 생성 모델 VAE, GAN 및 흐름 기반 모델의 상세 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!