오토인코더가 중요한 이유는 다음 세 가지 때문입니다.
1. 데이터 압축: 데이터 압축은 메모리 측면에서 상당한 장점입니다. 오토인코더를 이용하여 이미지나 음성 파일의 중요 특성만 압축하면 용량도 작고 품질도 더 좋아집니다.
2. 차원의 저주(curse of dimensionality) 예방: 차원의 저주 문제를 예방할 수 있습니다. 오토인코더는 특성 개수를 줄여 주기 때문에 데이터 차원이 감소하여 차원의 저주를 피할 수 있습니다.
3. 특성 추출: 오토인코더는 비지도 학습으로 자동으로 중요한 특성을 찾아 줍니다. 예를 들어 눈 모양, 털 색, 꼬리 길이 등 개의 중요한 특성을 자동으로 찾아 줍니다.
이제 파이토치에서 오토인코더를 구현해 볼 텐데, 그동안 진행했던 모델과는 다르게 조금 복잡할 수 있으니 반드시 예제를 실습하면서 이해하기 바랍니다.
예제는 다음 그림과 같은 구조의 오토인코더를 사용합니다.
▲ 그림 13-5 오토인코더의 예제
먼저 필요한 라이브러리를 호출합니다.
코드 13-1 라이브러리 호출
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import Dataset, DataLoader
import matplotlib.pylab as plt
import torchvision.datasets as datasets
import torchvision.transforms as transforms
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")