Variational AutoEncoder 를 이해하기 위한 기초
첫 번째 Encoder 이해하기
인코더란?

예를 들어, 0 ~ 9까지의 정보를 누른 걸 1, 안 누른 걸 0으로 해서 10개의 0 혹은 1로 저장했다고 했을 때, 이 정보들을 좀 더 효율적으로 나타나기 위해 이진법으로 표현하여 0000부터 1001까지 4개의 0 혹은 1로 압축해서 표현이 가능

이렇게 데이터 공간을 압축해서 정보를 표현하는 방식이 인코딩
인코딩을 수행하는 회로, 알고리즘을 인코더
그런데 이렇게 인코딩 된 데이터는 다시 원래 데이터로 돌아갈 수 있어야 의미가 있음.
ex) 0000은 0을 나타내는 버튼이었다는 점, 0001은 1를 나타낸다는 점, 이런식으로하여 다시 되돌아갈 수 있어야 네 개의 0,1비트로 10개 중 어떤 버튼이 눌렸는 지 라는 정보를 인코딩해서 표현할 수 있음.
이렇게 인코딩된 정보를 원본 정보로 복원하는 것을 디코딩이라고 함.

예를 들어 32x32 이미지가 있다고 했을 때, 이 이미지 데이터는 세 개의 숫자 RGB로 이루어진 픽셀이 32x32 = 1024, 각 픽셀이 3개이니까 총 3072개 숫자를 -> 512개 숫자로만 나타낸다면?

이미지를 인코딩했다고 말할 수 있음.
그러면 이 압축된 정보 숫자 512개, 이 인코딩으로부터 원본이미지, 세 게의 숫자 RGB로 이루어진 3*1024 개로 돌아갈 수 있으면 인코딩이 잘 수행된거임.
알아둬야할 인코더의 특성
1. 인코딩에는 "가정(assumption)"이 필요하다
예를들어 위의 고양이 이미지에는 패턴이 존재.
예시 가정1 : 꼭지점 세 픽셀은 숫자 범위 0.1이내
예시 가정2 : 가운데 쯤엔 동그란 패턴이 항상 나타난다
이러한 가정이 있어야 3072개의 숫자를 더 적은숫자로 표현이 가능함.
2. 인코딩 공식은 하나뿐인 게 아니다.
예를들어, 이전의 이진법으로 표현했던 인코딩방법 이외의 대충 무작위 순서로 인코딩도 가능함. 단, 이진법 숫자가 중복되자만 않으면 됨.
인코딩은 정보(숫자들)를 더 적은 개수의 숫자로 나타내는 방법
인코딩으로 줄인 것을 디코딩(복원)이 돼야 인코딩이 의미가 있음
더 적은 개수로 숫자로 줄인다는 건
원본 데이터가 가질 수 있는 숫자 범위의 모든 경우의 수를 다 따지면 당연히 불가능함.
원본 데이터들이 어떤 가정이 들어있어야 의미 있는 인코딩 수행이 가능함.
인코딩은 꼭 하나의 공식만 있는 건 아님.