logo

오토인코더 (자동부호기) 📂머신러닝

오토인코더 (자동부호기)

정의

두 자연수 $m \ll n$에 대해서, 함수 $f : \mathbb{R}^{n} \to \mathbb{R}^{m}$를 부호기encoder라 한다. 함수 $g : \mathbb{R}^{m} \to \mathbb{R}^{n}$를 복호기decoder라 한다. 이때 $h = g \circ f$가 $h(x) = x$를 만족하면, 오토인코더autoencoder, 자동부호기라 한다.

설명

부호기는 함숫값의 차원이 변수의 차원보다 작기 때문에, 데이터를 압축하고 암호화하는 역할을 한다고 볼 수 있다. 반면 복호기는 압축/암호화된 데이터를 다시 복원하는 역할을 한다. 만약 $x = h(x)$를 만족하는 $h = g \circ f$를 찾을 수 있다면, $f$는 $x$를 작은 차원으로 잘 압축하고, $g$는 압축된 데이터를 원래의 차원으로 복원하는 데 성공한 것이다. 오토인코더가 소개된지 얼마 되지 않았을 때 이는 차원축소와 같은 데이터의 압축 관점에서 주로 사용되었지만, 최근2024-12-09에는 생성 모델에서도 많이 활용되고 있다. 1

오토인코더가 데이터의 압축 관점에서 유용하려면, $m$이 $n$보다 충분히 작아야한다. 그런 경우에 $x = h(x)$를 정확히 만족하는 $h$를 찾는 것은 불가능하며, 최대한 $x \approx h(x)$를 만족하는 $h$를 찾는 것이 목표가 된다. (물론 수학적으로는 $m = n - 1$만 되어도 $x = h(x)$를 만족하는 $h$를 찾을 수 없다.)

U-net은 이미지에 대한 오토인코더에 스킵커넥션을 추가한 구조이다.


  1. Ian Goodfellow, Deep Learning, p557-558 ↩︎