인공지능 개발자 수다(유튜브 바로가기) 자세히보기

컴퓨터 비전

[Computer vision] 오토인코더 (Autoencoder)

Suya_03 2024. 3. 10. 21:54

목차

    반응형

    1. 오토인코더란

    오토인코더(Autoencoder)는 입력 데이터를 압축한 후 다시 복원하는 능력을 학습하는 인공 신경망입니다. 기본적으로 오토인코더는 두 부분으로 구성됩니다. 인코더와 디코더.

    1.1. 인코더

    • 이 부분은 입력 데이터를 받아서, 그 데이터의 압축된 표현을 생성합니다. 이 압축된 표현을 '잠재 공간(latent space)' 또는 '잠재 표현(latent representation)'이라고 합니다. 잠재 공간은 원본 데이터의 중요한 특징을 포착하되, 데이터의 차원을 줄여서 표현하는 것이 목표입니다.

    1.2. 디코더

    • 디코더는 잠재 공간에서의 표현을 받아 원본 데이터와 같은 형태의 출력을 생성합니다. 목표는 디코더가 생성한 출력이 가능한 원본 입력 데이터와 유사하도록 만드는 것입니다.

    오토인코더의 학습 과정에서는 인코더와 디코더를 함께 훈련시켜, 입력 데이터를 가능한 정확하게 복원하도록 만듭니다. 이 과정에서 오토인코더는 입력 데이터의 중요한 특징을 자동으로 학습하게 됩니다.

     

    오토인코더는 데이터 압축, 노이즈 제거, 차원 축소, 특징 추출 등 다양한 작업에 사용될 수 있습니다. 그러나 오토인코더는 데이터의 일반적인 압축 알고리즘과는 다르게, 특정한 데이터에 대해 학습된 후에만 효과적으로 작동합니다. 즉, 오토인코더는 학습 중에 보지 못한 새로운 데이터 유형에 대해서는 잘 작동하지 않을 수 있습니다.

     

     

     

    2. 오토 인코더 모델 코드

    파이토치를 이용한 코드 예시

    # 오토인코더 모델 정의
    class Autoencoder(nn.Module):
        def __init__(self):
            super(Autoencoder, self).__init__()
            # 인코더
            self.encoder = nn.Sequential(
                nn.Linear(28 * 28, 128),
                nn.ReLU(True),
            )
            # 디코더
            self.decoder = nn.Sequential(
                nn.Linear(128, 28 * 28),
                nn.Sigmoid(),
            )
    
        def forward(self, x):
            x = self.encoder(x)
            x = self.decoder(x)
            return x

     

     

    3. 오토인코더 전체 코드

    전체 코드를 보려면 github에서 확인하세요 (링크)

    반응형