오토인코더와 잠재 공간(Autoencoder and latent space)
입력을 좁은 병목(잠재 공간, latent space)으로 압축했다가 다시 펼쳐 원래 입력을 되살리도록 학습하는 신경망(neural network). 선형이고 제곱 오차를 쓰면 주성분 분석(principal component analysis)과 같은 부분공간(subspace)을 찾고, 잠재 공간에 정규분포(normal distribution)를 입힌 변분 오토인코더(variational autoencoder)는 새 자료를 만드는 생성 모델(generative model)이 된다.
사람들의 키와 몸무게를 적은 점들은 평면에 흩어져 있지만 대체로 한 방향으로 길게 늘어서 있습니다. 그렇다면 점 하나를 수 두 개 대신 하나로 적어도 크게 잃지 않을 것입니다. 오토인코더(autoencoder)는 이 생각을 학습으로 바꿉니다. 인코더 f가 입력 x를 더 짧은 벡터(vector) z = f(x)로 줄이고, 디코더 g가 z에서 x̂ = g(z)를 되살립니다. 그리고 되살린 것이 원래와 가깝도록, 곧 아래 복원 오차(reconstruction error)가 작도록 f와 g를 함께 학습합니다.
정답 이름표는 필요 없습니다. 입력 자신이 정답입니다. z가 사는 좁은 공간을 잠재 공간이라 합니다.
가장 단순한 경우를 봅시다. 아래 점 40개는 평균(mean)이 원점에 오도록 옮겨 둔 2차원 자료입니다. 인코더는 단위 벡터 w와의 내적(dot product) z = w·x로 점을 수 하나로 줄이고, 디코더는 x̂ = z w로 그 수를 다시 점으로 펼칩니다. 그러니 x̂는 x를 w 방향 직선에 내린 정사영(orthogonal projection)입니다. 청록 화살표 w를 끌어 돌려 보세요.
분홍 선분이 점마다의 복원 오차입니다. 지금 평균 제곱 오차(mean squared error)는
이것은 이 자료만의 우연이 아닙니다. 1989년 피에르 발디와 쿠르트 호르니크는 활성화 함수(activation function)가 없는(선형) 오토인코더를 제곱 오차로 학습시킬 때를 분석했습니다. 공분산 행렬의 고유값이 서로 다르면, 모든 극소가 최소이고(나머지 임계점은 안장점(saddle point)), 그때 폭이 k인 병목이 펼치는 공간은 위에서부터 k개의 주성분이 펼치는 공간과 같습니다. 인코더와 디코더를 따로 학습하면 그 공간 안의 기저는 주성분과 다르게 비스듬할 수 있지만, 공간 자체는 같습니다. 선형대수(linear algebra)로 말하면 이것은 자료 행렬(matrix)의 가장 좋은 계수 k 근사이고, 특잇값 분해(singular value decomposition)에서 큰 특잇값(singular value) k개만 남기는 것(에카르트–영 정리, Eckart–Young theorem)과 같습니다.
비선형으로. 인코더와 디코더를 여러 층의 신경망으로 바꾸면 직선이나 평면이 아닌 휘어진 면을 따라 압축할 수 있습니다. 2006년 제프리 힌턴과 루슬란 살라후트디노프는 깊은 오토인코더로 손글씨 숫자와 얼굴 사진을 30차원으로 줄여, 같은 차원의 주성분 분석보다 훨씬 잘 되살리는 것을 보였습니다. 다만 병목이 넓거나 망이 너무 유연하면 입력을 그대로 베끼는 법을 배울 뿐입니다. 그래서 병목을 좁히거나, 입력에 잡음을 섞고 깨끗한 원본을 되살리게 하거나(잡음 제거 오토인코더(denoising autoencoder), 2008년), z의 대부분이 0이 되도록 벌점을 줍니다. 이렇게 얻은 잠재 공간에서는 비슷한 입력이 가까이 놓이는 경향이 있지만, 공간이 고르게 채워진다는 보장은 없습니다. 아무 z나 골라 디코더에 넣으면 알아볼 수 없는 것이 나오기 쉽습니다.
변분 오토인코더. 2013년 디데릭 킹마와 막스 웰링의 변분 오토인코더(VAE)는 잠재 공간에 모양을 입혔습니다. 인코더는 z 하나 대신 정규분포
이 값은 μ = 0, σ = 1일 때만 0이고, 예컨대 μ = 1, σ = 0.5라면 약 0.82 나트입니다. μ²항은 점마다의 분포를 원점 둘레로 모으고,
쓰임. 잠재 공간의 좌표는 자료를 요약하는 새 변수여서, 차원을 줄여 그림으로 보거나 다른 모델의 입력으로 씁니다. 복원 오차가 유난히 큰 입력은 학습 자료와 다르게 생겼을 가능성이 크므로, 이상한 거래나 고장 난 기계를 찾는 데 쓰기도 합니다. 다만 다르게 생겼다는 것이 곧 잘못되었다는 뜻은 아닙니다. 학습한 압축기로도 씁니다. 첫 Stable Diffusion은 512 × 512 × 3 = 786,432개의 수인 그림을 오토인코더로 64 × 64 × 4 = 16,384개의 수(48분의 1)로 줄인 뒤 그 안에서 확산 모델(diffusion model)을 돌립니다. 얼마나 줄이면 얼마나 틀릴 수밖에 없는지는 율–왜곡 이론(rate–distortion theory)이 다룹니다. 입력의 일부를 가리고 나머지로 되살리게 하는 학습은 그림 모델의 사전 학습(가린 오토인코더, masked autoencoder)에 쓰이고, 같은 생각을 낱말에 쓴 가린 언어 모델(masked language model)은 BERT의 학습 방법입니다.
이어지는 곳. 선형 오토인코더가 찾는 방향은 주성분 분석의 주성분이고, 그 계산의 속살은 고유벡터와 특잇값 분해에 있습니다. 복원이 정사영이라는 사실은 정사영과 내적에서, 고차원 자료를 왜 줄여야 하는지는 차원의 저주(curse of dimensionality)에서 이어집니다. VAE의 벌점은 쿨백–라이블러 발산, 그 벌점이 끌어당기는 모양은 정규분포이고, 보이지 않는 변수를 두고 가능도(likelihood)의 하한(lower bound)을 키우는 방법은 EM 알고리즘(algorithm)과 같은 뿌리를 가집니다. 압축의 이론적 한계는 율–왜곡 이론에서, 잠재 공간 안에서 그림을 만드는 방법은 확산 모델에서 볼 수 있습니다. 예측하는 과제로 얻은 또 하나의 잠재 공간은 단어 임베딩(word embedding)이고, 깊은 오토인코더를 되살린 사람 가운데 하나가 힌턴입니다.
이 개념이 나오는 긴 글
이 개념을 언급하는 페이지
- 주성분 분석
… 코사인 변환⟧으로 거의 같은 효과를 얻습니다. 입력을 좁은 병목으로 압축했다가 되살리도록 학습하는 신경망인오토인코더는, 선형이고 제곱 오차를 쓰면 주성분들이 펼치는 것과 같은 부분공간을 찾습니다. 비선형으로 바꾸면 휘어진 …
- 차원의 저주
… 고차원 공간 속 낮은 차원의 곡면 근처에 놓인 경우가 많아서, 주성분 분석이나 그것을 비선형으로 넓힌오토인코더같은 차원 축소가 저주를 누그러뜨립니다. 마할라노비스 거리처럼 공분산을 추정해야 하는 방법은 차원이 …
- 기계 학습
… 함께 나오는 낱말들로 낱말의 뜻을 벡터로 적는 단어 임베딩, 입력을 좁은 병목으로 압축했다가 되살리는오토인코더가 그 예입니다. 마지막으로 강화 학습 은 정답 대신 보상으로 배웁니다. 바둑을 두는 프로그램은 수마다 …
- EM 알고리즘과 가우스 혼합
… 계산할 수 없을 때 q를 계산하기 쉬운 분포로 제한하고 하한 B를 키우면 변분 추론이 되고, 이 하한이변분 오토인코더의 학습 목적 함수이고, 확산 모델의 학습 목적 함수도 이 하한에서 출발해 유도됩니다. 혼합 분포를 …
- 특잇값 분해
… 볼 수 있음을 보였습니다. 신경망에서도 같은 답이 나옵니다. 평균을 뺀 데이터로 숨은 단위가 k개인 선형오토인코더를 학습시켜 제곱 오차를 가장 작게 만들면, 배운 부분공간은 처음 k개 주성분이 펼치는 부분공간과 …
- 인공지능
… 그림을 읽는 합성곱 신경망, 순서가 있는 자료를 읽는 순환 신경망, 자료를 압축해 표현을 배우는오토인코더, 잡음에서 그림을 만드는 확산 모델. 행동을 고르는 문제. 보상으로 배우는 강화 학습, 수를 미리 …
- 확산 모델
… 부풀리는 방법(분류기 없는 안내)이 흔히 쓰입니다. 2022년의 Stable Diffusion은 그림을오토인코더로 작은 잠재 공간에 압축한 뒤 그 안에서 확산을 돌려 계산을 줄였습니다(잠재 확산). 걸음마다 잡음을 …