기계학습에서 인코더와 디코더
정의
데이터 집합 이 주어졌다고 하자. 기계학습의 맥락에서 인코더encoder, 부호기란, 적당한 집합 ()에 대해서 다음과 같은 함수를 말한다.
다음과 같은 를 디코더decoder, 복호기라고 한다.
설명
정보이론의 맥락에서 인코더의 역할은 정보를 압축하는 것에 초점을 둔다. 압축의 목적은 통신내용의 보안을 위해 암호를 만들기 위함이거나, 저장공간등을 효율적으로 사용하기 위함일 수도 있다.
기계학습의 맥락에서도 여전히 인코더는 정보를 압축하는 역할을 한다. 데이터의 차원이 낮아져야 메모리를 아끼고 계산시간이 줄어들기 때문이다. 정보이론에서와 다르게 기계학습에서의 인코더는 또 하나의 중요한 역할을 갖는데, 바로 데이터의 특징 추출이다. 인코더란 입력받은 데이터로부터 데이터가 가지는 어떤 잠재된 특징을 출력하는 함수인 것이다. 그래서 인코더의 출력을 잠재 변수latent variable나 특징 벡터feature vector라고 부르기도 하고, 인코더에 데이터를 입력하여 출력을 얻는 과정을 특징 추출feature extraction이라고 한다. 인코더는 데이터의 차원을 줄이면서도, 데이터가 가지는 특징을 잘 보존하하고 추출하는 것이 중요하다. 반대로 디코더는 인코더가 출력한 잠재 변수를 원래의 데이터로 복원하는 역할을 한다.
기계학습에서 인코더의 출력에 의미를 부여하고, 데이터의 특징을 추출하는 것에 집착하는 이유는 인공신경망이 블랙박스 알고리즘이기 때문이다. 전통적인 암호, 압축 기술은 인코더의 구조나 원리가가 명시적이고 어떻게 작동하는지 알 수 있기 때문에 그 출력이 어떻게 생겼는지는 관심없다. 하지만 딥러닝에서 인공신경망은 그저 손실함수가 줄어드는 방향으로 최적화된 것이기 때문에 압축 원리를 정확히 이해하거나 명확하게 설명할 수 없다. 그래서 추출된 특징 벡터들을 시각화하거나 클러스터링하여 그 의미가 잘 보존되었는지를 확인하는 것이다.