오토 인코더 란?

Aug 17 2020

저는 학생이고 기계 학습을 공부하고 있습니다. 저는 심층 생성 모델 , 특히 오토 인코더VAE (variational autoencoder)에 초점을 맞추고 있습니다.

개념을 이해하려고하는데 몇 가지 문제가 있습니다.

지금까지 오토 인코더가 입력 (예 : 이미지) 을 받아 데이터 세트 의 기본 기능 을 포함해야하는 잠복 공간 으로 축소하고 인코딩 작업을 수행 한 다음 작업을 통해이 이미지를 축소하려고 합니다. 의 복호 , 인한 부호화 부에 일부 정보를 잃어버린 이미지 reconstrunct.

그 후 손실 함수를 이용하여 잠재 공간을 재구성하여 잠재 특성을 얻습니다.

VAE에 대해 확률 적 접근 방식을 사용하므로 가우스의 평균 anv 공분산을 배워야합니다.

지금까지 이것이 제가 이해 한 것입니다.

내가 정말로 명확하지 않은 것은 우리가 오토 인코더와 VAE로 무엇을 배우려고하는지입니다.

나는 이미지가 웃는 얼굴에 비웃지 않고 흑백 이미지가 컬러 이미지로 변하는 예를 보았습니다.

하지만 주요 개념을 이해하지 못합니다. 즉, 오토 인코더는 무엇을합니까?

필요한 사람이 볼 수 있도록 여기에 내가 공부 한 곳의 몇 가지 출처를 추가합니다.

  1. https://hackernoon.com/autoencoders-deep-learning-bits-1-11731e200694
  2. https://www.youtube.com/watch?v=yFBFl1cLYx8
  3. https://www.youtube.com/watch?v=9zKuYvjFFS8

답변

11 cag51 Aug 18 2020 at 07:56

자동 인코더는 무엇을합니까?

가장 간단한 자동 인코더는 고차원 이미지 (예 : 100K 픽셀)를 저 차원 표현 (예 : 길이 10의 벡터)으로 가져온 다음 이 10 개의 특징 사용 하여 원본 이미지를 재구성합니다. 인간과의 비유를 상상할 수 있습니다. 나는 누군가를보고 설명 ( "키가 크고 검은 머리, ...") 한 다음 그들이 어떻게 생겼는지 잊어 버린 후에는 내 노트 만 사용하여 스케치하려고합니다.

우리는 무엇을 배우려고합니까?

즉, 왜 귀찮게합니까? 몇 가지 이유 :

  • 차원 감소 : 10 개의 기능이 100K 픽셀보다 훨씬 편리합니다. 예를 들어, 10 차원 공간에서 클러스터링하여 분류를 수행 할 수 있습니다 (100K 차원 공간에서의 클러스터링은 다루기 어렵습니다).
  • 의미 론적 의미 : 모든 것이 순조롭게 진행되면 10 개의 기능 각각에 몇 가지 분명한 "설명"이 있습니다. 예를 들어, 하나의 값을 조정하면 주제가 더 오래 보이게됩니다 (일반적으로 그렇게 간단하지는 않지만). 변환, 회전 등에 의해 영향을받는 픽셀 값과 반대입니다.
  • 예외 인식 : 개에 대해 자동 인코더를 훈련하면 일반적으로 개 사진을 인코딩하고 디코딩하는 데 효과적입니다. 그러나 내가 고양이를 넣으면 아마도 끔찍한 일을 할 것입니다. 출력이 입력과 같지 않기 때문에 말할 수 있습니다. 따라서 자동 인코더가 잘못된 작업을 수행하는 장소를 찾는 것은 이상을 찾는 일반적인 방법입니다.

나는 이미지가 웃지 않는 얼굴에서 웃는 얼굴로, 또는 흑백 이미지에서 컬러 이미지로 바뀌는 예를 보았습니다.

자동 인코더에는 다양한 유형이 있습니다. 위에서 설명한 것은 가장 단순한 종류입니다. 또 다른 일반적인 유형은 "잡음 제거"자동 인코더입니다. 원본 이미지를 재구성하는 대신 목표는 원본 이미지와 관련이 있지만 다른 이미지를 구성하는 것입니다.

이에 대한 고전적인 예는 노이즈 제거 (따라서 이름)입니다. 깨끗한 이미지를 가져 와서 많은 노이즈를 추가하고 자동 인코더를 통해 실행 한 다음 자동 인코더가 깨끗한 이미지 를 생성하도록 보상 할 수 있습니다. 따라서 입력 (노이즈 이미지)은 실제로 원하는 출력 (깨끗한 이미지)과 다릅니다. 당신이 제공하는 예는 비슷합니다.

이러한 유형의 자동 인코더를 설계 할 때 어려움은 일반적으로 손실입니다. 자동 인코더가 올바른 작업을 수행했는지 여부를 알려주는 메커니즘이 필요합니다.

VAE에 대해 확률 적 접근 방식을 사용하므로 가우스의 평균과 공분산을 배워야합니다.

VAE는 세 번째 유형의 자동 인코더입니다. 수학적으로 잘 기초되어 있기 때문에 약간 특별합니다. 임시 메트릭이 필요 하지 않습니다. 수학은 여기에서 다루기에는 너무 복잡하지만 핵심 아이디어는 다음과 같습니다.

  • 우리는 잠재 공간이 연속적이기를 원합니다. 각 클래스를 잠재 공간의 자체 모서리에 할당하는 대신 잠재 공간이 잘 정의되고 연속적인 모양 (즉, 가우시안)을 갖기를 원합니다. 이것은 잠재 공간이 의미 상 의미를 갖도록 강제하기 때문에 좋습니다.
  • 그림과 잠재 공간 간의 매핑은 결정적이기보다는 확률 적이어야합니다. 동일한 피사체가 여러 이미지를 생성 할 수 있기 때문입니다.

따라서 워크 플로는 다음과 같습니다.

  • 이전처럼 이미지로 시작합니다.
  • 이전과 마찬가지로 인코더는 벡터 (예 : 길이 200)를 결정합니다.
  • 그러나 그 벡터는 잠재 공간이 아닙니다. 대신이 벡터를 매개 변수로 사용하여 잠복 공간을 정의합니다. 예를 들어 잠복 공간을 100 차원 가우시안으로 선택할 수 있습니다. 100 차원 가우스는 각 차원에서 평균과 표준 편차가 필요합니다. 이것이 길이 200 벡터를 사용하는 것입니다.
  • 이제 확률 분포가 있습니다. 이 분포에서 한 점을 샘플링합니다. 이것은 잠재 공간에서 이미지의 표현입니다.
  • 이전과 마찬가지로 디코더는이 벡터를 새로운 "출력"(예 : 200K 길이의 벡터)으로 변환합니다.
  • 그러나이 "출력"은 출력 이미지가 아닙니다. 대신이 200K 매개 변수를 사용하여 100K 차원 가우스를 정의합니다. 그런 다음이 분포에서 한 지점을 샘플링합니다. 이것이 바로 출력 이미지입니다.

물론 가우스에 특별한 것은 없습니다. 다른 모수 분포를 쉽게 사용할 수 있습니다. 실제로 사람들은 일반적으로 가우스를 사용합니다.

이것은 때때로 다른 자동 인코더보다 더 나은 결과를 제공합니다. 당신이 볼 때 또한, 당신은 가끔 흥미로운 결과를 얻을 수 사이에 당신의 잠재 공간의 클래스. 클러스터 중심에서 잠복 공간에서 이미지의 거리는 때때로 불확실성과 관련이 있습니다.

더욱이, 이러한 고차원 가우시안이 엄격한 수학적 의미에서 확률 분포 라는 좋은 속성이 있습니다. 주어진 이미지가 주어진 클래스에 속할 확률을 근사합니다. 따라서 VAE가 딥 러닝의 "손 흔들림"을 극복하고 모든 것을 확고한 베이지안 확률 론적 기반에 되돌릴 수 있다는 생각이 있습니다. 하지만 물론 이것은 근사치 일 뿐이며 근사치에는 많은 심층 신경망이 포함되어 있으므로 현재 손을 흔들고있는 것이 많습니다.

그건 그렇고, 저는 인터뷰 중에이 질문을 사용하는 것을 좋아합니다. 놀라운 수의 사람들이 VAE에 대한 경험이 있다고 주장하지만 실제로 VAE가 "일반"AE와 다르다는 것을 깨닫지 못합니다.

10 hH1sG0n3 Aug 17 2020 at 22:06

오토 인코더에 대해 쉽게 생각할 수있는 방법은 다음과 같습니다. 침해의 prticlar pice가 축소되거나 다른 요소가 반영된 reprsentaton에서 얼마나 잘 재구성 될 수 있는지입니다. 여기까지왔다면 원래 103 자 중 92 자만 사용하여 이전 문장을 성공적으로 재구성했음을 의미합니다.

보다 구체적으로, 오토 인코더는 감독되지 않는 방식으로 효율적인 데이터 코딩을 학습하도록 훈련 된 신경망입니다. 목표는 잡음과 같은 "중요하지 않은"신호를 무시하도록 네트워크를 훈련시켜 주어진 데이터 세트의 표현을 학습하는 것입니다. 일반적으로 AE는 차원 감소를 위해 고려됩니다.

실제로 AE

  • 처음에 입력 데이터를 잠복 공간 표현으로 압축합니다.
  • 이 잠재 공간 표현의 출력을 재구성합니다.
  • 재구성 손실로 정의되는 입력과 출력의 차이를 계산합니다.

이 훈련 루프에서 AE는이 재구성 손실을 최소화하여 출력이 가능한 한 입력과 유사하도록합니다.

3 JoshPurtell Aug 17 2020 at 23:04

오토 인코더를 고려할 때 도움이되는 한 가지 접근 방식은 다음과 같은 결과입니다. PCA와 같은 방법은 입력 공간에서 최대 변동 축을 식별하는 반면, 오토 인코더에 비선형 활성화 함수를 도입하면 최대 축을 식별 할 수 있습니다. 공간의 (잠재적으로) 비선형 변환에 포함 된 변화.

예를 들어, 데이터 고려

함수에 따라 분배를
어디에
. 여기서 목표는 입력을 1 차원 압축으로 저장하는 것입니다. PCA 접근 방식은 상당한 손실을 초래할 수 있지만 (지원이 충분히 큰 경우) 비선형 성을 가진 자동 인코더는 변환 공간에서 기본 내장 축을 대략적으로 사전 이미지가있는 축으로 식별 할 수 있습니다
. 입력 공간, 따라서 훨씬 적은 손실을 가져올 것입니다. 오토 인코더 훈련 체계는 .NET에서 선형 사전 이미지로 변환 공간을 생성하는 변환 펑터를 근사화하는 작업으로 생각할 수 있습니다
. 그런 다음 오토 인코더는의 선형 이미지에있는 입력을 저장하는 방식으로 작동합니다
.

비선형 활성화 함수가 없으면 오토 인코더는 기본적으로 PCA와 동일하게됩니다. 그 이유를 고려하는 것이 유용한 연습 일 수 있습니다.