자기 회귀 모델 — PixelCNN

심층 생성 모델로 숫자 만들기!

월터 휴고 로페즈 Pinaya , 페드로 F. 다 코스타 , 그리고 제시카 Dafflon

여러분 안녕하세요! 이것은 현대 자기 회귀 모델에 대한 시리즈의 첫 번째 게시물입니다. 이 시리즈에서 다룰 주제는 다음과 같습니다.

요약

  1. 자기 회귀 모델 — PixelCNN
  2. 컬러 이미지 모델링
  3. 수용 필드에서 PixelCNN의 사각 지대
  4. 사각 지대 수정 — Gated PixelCNN
  5. Gated PixelCNN을 사용한 조건부 생성
  6. 잘린 컨볼 루션이있는 Gated PixelCNN
  7. 성능 향상 — PixelCNN ++
  8. 샘플링 시간 개선 — Fast PixelCNN ++
  9. 주의 메커니즘 사용 — PixelSNAIL
  10. 다양한 고화질 이미지 생성 — VQ-VAE 2

시작하자!

소개

생성 모델은 지난 몇 년 동안 많은 관심을 받아온 비지도 학습 모델의 중요한 클래스입니다. 학습 데이터와 동일한 데이터 세트에서 나온 것처럼 보이는 새 샘플을 생성하는 방법을 학습하는 것이 목표 인 모델 클래스로 정의 할 수 있습니다. 훈련 단계에서 생성 모델은 밀도 추정 의 핵심 작업을 해결하려고합니다 . 밀도 추정에서 우리의 모델 은 관측 불가능한 확률 밀도 함수 인 pdata ( x ) 와 가능한 한 유사한 추정값 — pmodel ( x ) — 구성하는 법을 배웁니다 . 생성 모델이 기존 샘플을 복사하여 붙여 넣는 것이 아니라 배포에서 새 샘플을 구성 할 수 있어야한다는 점을 언급하는 것이 중요합니다. 모델을 성공적으로 학습 한 후에는 이미지 인 페인팅, 채색 및 초 고해상도와 같은 재구성 형식에서 아트 워크 생성에 이르기까지 다양한 응용 프로그램에 사용할 수 있습니다.

이 확률 밀도 추정을 수행하는 데 사용할 수있는 몇 가지 다른 접근 방식이 있습니다.

  1. GAN (Generative Adversarial Network) 은 모델이 암시 적 밀도 추정을 수행하는 접근 방식을 사용합니다 . 이 경우 명시 적으로 pmodel ( x )을 정의하지 않고 pmodel ( x ) 에서 샘플을 생성 할 수있는 모델을 학습합니다 . 모델은 데이터를 생성하지만 관측 확률에 대한 지식을 제공하지 않거나 조건부 로그 우도 함수를 지정하지 않는 확률 적 절차를 학습합니다.
  2. VAE (Variational Autoencoder)명시 적 밀도 추정을 사용 하지만 직접 최적화 할 수없는 잠재 변수로 다루기 힘든 밀도 함수를 정의합니다. 따라서 모델을 훈련하기 위해 대신 우도 하한 ( 근사 밀도 )을 유도하고 최적화합니다 . 증거 하한 (ELBO)을 최대화하여 데이터의 로그 가능성을 최적화합니다 (자세한 내용은 여기여기 에서 찾을 수 있음 ).
  3. 자기 회귀 (AR) 모델 은 학습 데이터의 가능성을 최대화하기 위해 다루기 쉬운 명시 적 밀도 모델을 생성합니다 ( 다루기 쉬운 밀도 ). 따라서 이러한 방법을 사용하면 데이터 관찰 가능성을 계산하고 생성 모델의 평가 메트릭을 쉽게 얻을 수 있습니다.

이러한 조건 (즉, 순서 지정 및 조건부 분포의 곱)은 주로 자기 회귀 모델을 정의합니다.

이제 큰 도전 은 이러한 조건부 우도 p (x ᵢ | x₁,…, x ᵢ ₋ ₁)를 계산하는 것 입니다. 다루기 쉽고 확장 가능한 표현 모델에서 이러한 복잡한 분포를 어떻게 정의 할 수 있습니까? 한 가지 해결책은 심층 신경망과 같은 범용 근사치를 사용하는 것입니다.

PixelCNN

DeepMind는 2016 년에 PixelCNN ( Oord et al., 2016 )을 도입했으며이 모델은 가장 유망한 자기 회귀 생성 모델 제품군 중 하나를 시작했습니다. 그 이후로 음성 , 비디오고해상도 사진생성 하는 데 사용되었습니다 .

VQ-VAE-2를 사용하여 생성 된 이미지 (링크)

PixelCNN은 매개 변수에서 픽셀 간의 종속성 분포를 캡처하는 심층 신경망입니다. 두 공간 차원을 따라 이미지에서 한 번에 하나의 픽셀을 순차적으로 생성합니다.

관심 픽셀 i (빨간색)는 모든 이전 픽셀 (파란색)에 의해 정의됩니다. PixelCNN은 심층 신경망을 따라 컨볼 루션 레이어를 사용하여 연관성을 모델링 할 수 있습니다.

회선 연산을 사용하여 PixelCNN은 이미지의 모든 픽셀 분포를 병렬로 학습 할 수 있습니다. 그러나 특정 픽셀의 확률을 결정할 때 표준 컨볼 루션 레이어의 수용 필드는 자기 회귀 모델의 순차 예측을 위반합니다. 중앙 픽셀의 정보를 처리 할 때 컨벌루션 필터는 이전 픽셀뿐만 아니라 출력 특성 맵을 계산하기 위해 주변의 모든 픽셀을 고려합니다. 그런 다음 마스크 가 채택되어 아직 예측되지 않은 픽셀의 정보 흐름을 차단합니다.

마스킹 된 컨벌루션 레이어

마스킹은 고려해서는 안되는 모든 픽셀을 제로화하여 수행 할 수 있습니다. 구현에서 값이 1과 0 인 컨벌루션 필터와 동일한 크기의 마스크가 생성되었습니다. 이 마스크는 컨볼 루션 연산을 수행하기 전에 가중치 텐서와 곱해졌습니다. PixelCNN에는 두 가지 유형의 마스크가 있습니다.

  • 마스크 유형 A :이 마스크는 첫 번째 컨벌루션 레이어에만 적용됩니다. 마스크의 중앙 픽셀을 제로화하여 관심 픽셀에 대한 액세스를 제한합니다. 이렇게하면 모델이 예측하려는 픽셀에 액세스하지 못하도록 보장합니다 (아래 그림에서 빨간색).
  • 마스크 유형 B :이 마스크는 모든 후속 컨벌루션 레이어에 적용되며 픽셀에서 자신으로의 연결을 허용하여 마스크 A의 제한을 완화합니다. 이것은 첫 번째 레이어의 픽셀 예측을 설명하기 위해 중요합니다.
마스크 A는 첫 번째 컨벌루션 레이어에서만 사용됩니다. 마스크 B는 다른 모든 레이어에서 사용되어 관심있는 픽셀에 중심을 둔 컨볼 루션 연산의 정보가 네트워크를 따라 전파됩니다.

건축물

Oord et al. 2016 년 PixelCNN은 다음 아키텍처를 사용합니다. 첫 번째 레이어는 7x7 필터가있는 마스킹 된 컨볼 루션 (유형 A)입니다. 그런 다음 15 개의 잔차 블록이 사용되었습니다. 각 블록은 마스크 유형 B와 표준 1x1 컨벌루션 레이어가있는 3x3 컨벌루션 레이어의 조합으로 데이터를 처리합니다. 각 컨볼 루션 계층 사이에는 비선형 성 ReLU가 있습니다. 마지막으로, 잔여 블록에는 잔여 연결도 포함됩니다.

PixelCNN의 아키텍처.

블록 시퀀스 이후 네트워크에는 1x1 필터가있는 표준 컨볼 루션 레이어를 사용하는 RELU-CONV-RELU-CONV 레이어 체인이 있습니다. 그런 다음 출력 레이어는 픽셀의 가능한 모든 값 중에서 값을 예측하는 소프트 맥스 레이어입니다. 모델의 출력은 입력 이미지 (각 픽셀에 대한 출력 값을 원하기 때문에)와 가능한 값 수 (예 : 256 강도 레벨)를 곱한 것과 동일한 공간 형식을 갖습니다.

여기서는 Tensorflow 2.0 프레임 워크를 사용한 네트워크 아키텍처 구현을 보여주는 스 니펫을 제공합니다.

전처리

PixelCNN의 입력 값은 [0, 1] 범위로 조정되었습니다. 이 전처리 과정에서 더 낮은 수의 강도 레벨에서 픽셀 값을 양자화 할 수있었습니다. 구현에서 먼저 두 가지 강도 수준으로 훈련 된 모델을 제시 한 다음 모든 256 수준으로 훈련했습니다. 문제의 복잡성이 낮기 때문에 (픽셀의 확률 분포에서 고려할 수있는 값이 적기 때문에) 더 적은 수준의 데이터에서 모델이 더 잘 수행되었음을 알 수 있습니다.

대상 데이터는 픽셀의 강도를 나타내는 범주 (정수) 값에 해당합니다.

모델 평가

PixelCNN에는 교육하기 쉬운 방법이 있습니다. 모델 은 훈련 데이터의 가능성을 최대화하여 매개 변수를 학습합니다 .

대부분의 최적화 문제는 최소화 문제로 정의되므로 일반적으로 사용되는 트릭은 훈련 목표를 NLL ( 음수 로그 가능도) 의 최소화로 변환하는 것 입니다.

이후 P (xᵢ | θ) 층 softmax를 출력하는 확률에 대응하는 상기 NLL은 동등 크로스 엔트로피 손실 -지도 학습에 일반적으로 사용되는 손실 함수 함수. 또한 NLL은 생성 방법 간의 성능을 비교하는 데 사용되는 메트릭입니다 (nats 단위 또는 픽셀 당 비트 사용).

추론

PixelCNN은 자기 회귀 모델이므로 추론은 순차적으로 이루어집니다. 픽셀 단위로 생성해야합니다. 먼저 모델에 0을 전달하여 이미지를 생성합니다. 값이 다른 모든 픽셀과 독립적으로 모델링되므로 첫 번째 픽셀에 영향을주지 않아야합니다. 그래서 우리는 순방향 패스를 수행하고 그 분포를 얻습니다. 분포가 주어지면 다항 확률 분포에서 값을 샘플링합니다. 그런 다음 샘플 픽셀 값으로 이미지를 업데이트하고 모든 픽셀 값이 생성 될 때까지이 프로세스를 반복합니다. 여기에서는 PixelCNN을 사용하여 MNIST 데이터 세트를 사용하여 150 epoch 후에 샘플을 생성했습니다. 생성 된 각 이미지에는 4 단계의 픽셀 강도가 있습니다.

시작점으로 부분적으로 가려진 이미지에 동일한 샘플링 프로세스를 사용할 수 있습니다.

이제 우리는 256 레벨의 픽셀 강도로 이미지를 생성하도록 훈련하거나 모델링하려고했습니다.

256 강도 레벨로 생성 된 숫자.
부분적으로 가려진 이미지.

이 샘플링 프로세스는 모든 픽셀이 한 번에 생성되는 다른 생성 모델 (VAE 및 GAN)과 비교할 때 상대적으로 느립니다. 그러나 최근 발전은 캐시 된 값을 사용하여 샘플링 시간을 단축했습니다 (Fast PixelCNN ++, 다음 게시물에서 다룹니다).

결론

PixelCNN 모델의 장점은 공동 확률 학습 기술이 다루기 쉽고 경사 하강 법을 사용하여 학습 할 수 있다는 것입니다. 근사치가 없습니다. 우리는 이전의 모든 픽셀 값이 주어지면 각 픽셀 값을 예측하려고합니다. PixelCNN은 음의 로그 가능성을 최소화하여 훈련되기 때문에 다른 접근법 (예 : 내쉬 평형을 찾는 데 필요한 GAN)과 비교할 때 훈련이 더 안정적입니다. 그러나 샘플 생성이 순차적 (픽셀 단위)이므로 원래 PixelCNN은 확장 성 문제로 어려움을 겪습니다. 다음 포스트에서는 RGB 채널이있는 데이터 세트에서 PixelCNN 모델을 훈련시킬 것입니다.

참고 문헌

Suggested posts

딥 러닝 및 MovieLens 데이터를 활용하여 영화 추천 예측 (2 부)

딥 러닝 및 MovieLens 데이터를 활용하여 영화 추천 예측 (2 부)

작성자 : Annie Phan, Drew Solomon, Yuyang Li 및 Roma Coffin 개요 : 이전 게시물에 이어 이제 우리의 주요 목표는 추천 작업 응용 프로그램을위한 협업 필터링을위한 새로운 딥 러닝 아키텍처를 구현하는 것입니다. 특히 변압기 개발 및 튜닝을 목표로합니다.

계층화 된 정규화 : 추가 정보를 사용하여 신경망의 성능 향상

EEG 기반 감정 분류 데이터 세트에서 연구 된 심층 신경망 훈련을위한 새로운 정규화 방법.

계층화 된 정규화 : 추가 정보를 사용하여 신경망의 성능 향상

몇 달 전, 저는 뇌 영상 방법을 개발할 때 가장 어려운 문제인 참가자들 간의 EEG 활동의 열악한 동질성에 빠르게 직면했을 때 EEG 기록을 사용하여 유발 된 감정을 분류하는 방법을 연구하기 시작했습니다. 이 문제는 그림 1을 사용하여 쉽게 설명 할 수 있으며, 플롯은 먼저 각 비디오 및 참가자에 대한 각 EEG 기록에 대한 특징을 추출한 다음 데이터를 포함하기 위해 차원 감소 도구 UMAP를 구현하여 얻었습니다.

Related posts

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

고유 분해 및 SVD에 유용한 기저의 선형 대수 개념 이해이 기사에서는 고유 분해 또는 특이 값 분해 (SVD)와 같은 행렬 분해 방법을 이해하는 흥미로운 방법 인 기저 개념에 대해 알아 봅니다. 정의 기본은 벡터 공간 (벡터 집합)을 설명하는 데 사용되는 좌표계입니다.

판다와 에라스무스 연구 교환 분석

판다와 에라스무스 연구 교환 분석

Erasmus 프로그램 2011-12에서 발생한 20 만 개의 연구 교환으로 데이터 세트를 분석 한 결과 1987 년 이후 Erasmus 프로그램은 매년 수십만 명의 유럽 학생들에게 한 학기 또는 1 년을 해외에서 보낼 기회를 다른 유럽에서 보낼 수있는 기회를 제공합니다. 경제적 인 지원뿐만 아니라 쉬운 교환 과정을 제공합니다. 유럽의 다양한 사람, 언어 및 문화에 대한 마음과 마음을 열어주는 정말 귀중한 경험입니다.

데이터 과학을위한 8 가지 기본 통계 개념

… 평범한 영어로 설명

데이터 과학을위한 8 가지 기본 통계 개념

통계는 "수량 데이터의 수집, 분석, 해석 및 표현을 다루는 수학의 한 분야"입니다. 프로그래밍과 기계 학습을 혼합하면 데이터 과학의 핵심 기술에 대해 꽤 잘 설명 할 수 있습니다.

데이터 과학의 9 가지 거리 측정

일반적인 거리 측정의 장점과 함정

데이터 과학의 9 가지 거리 측정

감독되거나 감독되지 않는 많은 알고리즘은 거리 측정을 사용합니다. 유클리드 거리 또는 코사인 유사성과 같은 이러한 측정은 종종 k-NN, UMAP, HDBSCAN 등과 같은 알고리즘에서 찾을 수 있습니다.