수학 개념 지도
딥러닝과 언어 모델

오토인코더와 잠재 공간(Autoencoder and latent space)

입력을 좁은 병목(잠재 공간⁠, latent space⁠)으로 압축했다가 다시 펼쳐 원래 입력을 되살리도록 학습하는 신경망⁠(neural network)⁠. 선형이고 제곱 오차를 쓰면 주성분 분석⁠(principal component analysis)⁠과 같은 부분공간⁠(subspace)⁠을 찾고, 잠재 공간에 정규분포⁠(normal distribution)⁠를 입힌 변분 오토인코더⁠(variational autoencoder)⁠는 새 자료를 만드는 생성 모델⁠(generative model)⁠이 된다.

min⁡f, g  1n∑i=1n∥xi−g(f(xi))∥2\min_{f,\,g}\; \frac1n \sum_{i=1}^{n} \bigl\lVert x_i - g\bigl(f(x_i)\bigr) \bigr\rVert^2
먼저 보면 좋은 개념신경망주성분 분석

사람들의 키와 몸무게를 적은 점들은 평면에 흩어져 있지만 대체로 한 방향으로 길게 늘어서 있습니다. 그렇다면 점 하나를 수 두 개 대신 하나로 적어도 크게 잃지 않을 것입니다. 오토인코더⁠(autoencoder)⁠는 이 생각을 학습으로 바꿉니다. 인코더 f가 입력 x를 더 짧은 벡터⁠(vector)⁠ z = f(x)로 줄이고, 디코더 g가 z에서 x̂ = g(z)를 되살립니다. 그리고 되살린 것이 원래와 가깝도록, 곧 아래 복원 오차⁠(reconstruction error)⁠가 작도록 f와 g를 함께 학습합니다.

min⁡f, g  1n∑i=1n∥xi−g(f(xi))∥2\min_{f,\,g}\; \frac1n \sum_{i=1}^{n} \bigl\lVert x_i - g\bigl(f(x_i)\bigr) \bigr\rVert^2

정답 이름표는 필요 없습니다. 입력 자신이 정답입니다. z가 사는 좁은 공간을 잠재 공간이라 합니다.

가장 단순한 경우를 봅시다. 아래 점 40개는 평균⁠(mean)⁠이 원점에 오도록 옮겨 둔 2차원 자료입니다. 인코더는 단위 벡터 w와의 내적⁠(dot product)⁠ z = w·x로 점을 수 하나로 줄이고, 디코더는 x̂ = z w로 그 수를 다시 점으로 펼칩니다. 그러니 x̂는 x를 w 방향 직선에 내린 정사영⁠(orthogonal projection)⁠입니다. 청록 화살표 w를 끌어 돌려 보세요. 첫 주성분으로

분홍 선분이 점마다의 복원 오차입니다. 지금 평균 제곱 오차⁠(mean squared error)⁠는 이고, 가장 작게는 까지 줄일 수 있습니다. 점에 마우스를 올리면 그 점의 z와 복원값이 뜹니다. 피타고라스 정리⁠(Pythagorean theorem)⁠로 한 점의 길이 제곱은 직선 방향 성분의 제곱 z²과 오차의 제곱으로 나뉩니다. 점들의 길이 제곱의 평균은 w와 상관없이 정해져 있으니, 오차를 줄이는 것은 z²의 평균을 키우는 것과 같습니다. 자료의 평균이 원점이라 z의 평균도 0이므로, z²의 평균은 곧 z의 분산입니다. 자료가 가장 넓게 퍼진 방향, 곧 공분산 행렬⁠(covariance matrix)⁠의 첫 고유벡터⁠(eigenvector)⁠가 답이고, 이것이 주성분 분석의 첫 주성분입니다. 오른쪽 그래프에서 오차는 w의 각도를 따라 오르내리고 180°마다 되풀이됩니다(w와 −w는 같은 직선입니다). 가장 낮은 오차는 공분산 행렬의 둘째 고유값⁠(eigenvalue)⁠, 가장 높은 오차는 첫째 고유값과 같습니다.

이것은 이 자료만의 우연이 아닙니다. 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 하나 대신 정규분포 N(μ(x),σ(x)2)N\bigl(\mu(x), \sigma(x)^2\bigr)를 내고, 디코더는 거기서 뽑은 z로 x를 되살립니다. 손실은 복원 오차에, 인코더가 낸 분포와 표준정규분포⁠(standard normal distribution)⁠ 사이의 쿨백–라이블러 발산⁠(Kullback–Leibler divergence)⁠을 더한 것입니다. 1차원이면 이 항은 닫힌 식으로 계산되고, 좌표마다 독립⁠(independence)⁠인 여러 차원이면 좌표별 값을 더합니다.

DKL(N(μ,σ2) ∥ N(0,1))=12(μ2+σ2−1−ln⁡σ2)D_{\mathrm{KL}}\bigl(N(\mu, \sigma^2)\,\big\|\,N(0, 1)\bigr) = \tfrac12\bigl(\mu^2 + \sigma^2 - 1 - \ln \sigma^2\bigr)

이 값은 μ = 0, σ = 1일 때만 0이고, 예컨대 μ = 1, σ = 0.5라면 약 0.82 나트입니다. μ²항은 점마다의 분포를 원점 둘레로 모으고, σ2−1−ln⁡σ2\sigma^2 - 1 - \ln\sigma^2항은 σ가 0으로 좁아지지 않게 막습니다. 그래서 점마다의 분포가 서로 겹치며 잠재 공간의 빈틈이 줄어듭니다. 학습이 끝나면 표준정규분포에서 z를 뽑아 디코더에 넣는 것만으로 새 자료를 만들 수 있는 것은 이 때문입니다. 복원 오차를 디코더 분포(정규분포)의 음의 로그 가능도⁠(log-likelihood)⁠로 읽으면, 두 항의 합은 자료의 로그 가능도에 대한 하한(증거 하한⁠(evidence lower bound)⁠, ELBO)의 부호를 바꾼 것입니다. 그래서 이 손실을 줄이는 것은 최대가능도법⁠(maximum likelihood)⁠을 어림하는 일이 됩니다. 뽑기가 끼어 있으면 미분⁠(differentiation)⁠할 수 없을 것 같지만, z=μ+σε (ε∼N(0,1))z = \mu + \sigma\varepsilon\ (\varepsilon \sim N(0,1))로 쓰면 무작위성이 ε으로 옮겨 가서 μ와 σ로는 보통처럼 역전파⁠(backpropagation)⁠할 수 있습니다(재매개변수화⁠, reparameterization⁠). VAE가 만든 그림은 흐릿한 편이라는 것이 널리 알려진 약점입니다. 제곱 오차는 여러 그럴듯한 답의 평균을 가장 좋은 답으로 치는데, 여러 그림의 평균은 흐릿하기 때문이라는 설명이 흔합니다.

쓰임. 잠재 공간의 좌표는 자료를 요약하는 새 변수여서, 차원을 줄여 그림으로 보거나 다른 모델의 입력으로 씁니다. 복원 오차가 유난히 큰 입력은 학습 자료와 다르게 생겼을 가능성이 크므로, 이상한 거래나 고장 난 기계를 찾는 데 쓰기도 합니다. 다만 다르게 생겼다는 것이 곧 잘못되었다는 뜻은 아닙니다. 학습한 압축기로도 씁니다. 첫 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)⁠이고, 깊은 오토인코더를 되살린 사람 가운데 하나가 힌턴입니다.

관련 인물제프리 힌턴

이 개념이 나오는 긴 글

신경망과 기계 학습 배우는 기계 예를 보여 주면 규칙을 스스로 찾는 기계. 1958년의 퍼셉트론에서 오늘의 심층 신경망까지, 그 밑바닥에는 미분과 연쇄법칙이 있다.

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념