AI 101
์คํ ์ธ์ฝ๋๋ ๋ฌด์์ธ๊ฐ?

이전에無監督 학습 기술에 대해 읽어보셨다면 “오토인코더”라는 용어를 접해 보셨을 것입니다. 오토인코더는 無監督 학습 모델이 개발되는 주요 방법 중 하나입니다. 그러나 오토인코더란 정확히 무엇일까요?
간단히 말해, 오토인코더는 데이터를 입력받아 데이터를 압축하고 인코딩한 다음 인코딩된 표현에서 데이터를 재구성하는 방식으로 작동합니다. 모델은 손실이 최소화되고 데이터가 가능한 한 원래 데이터와ใกล운 상태로 재구성될 때까지 훈련됩니다. 이 과정 통해 오토인코더는 데이터의 중요한 특징을 학습할 수 있습니다. 오토인코더의 간단한 정의이지만, 오토인코더에 대해 더 자세히 살펴보고 그 기능을 이해하는 것이 유익할 것입니다. 이 기사는 오토인코더의 구조와 응용 프로그램에 대해 설명하여 오토인코더의神秘를 풀어보도록 하겠습니다.
오토인코더란 무엇인가?
오토인코더는 신경망입니다. 신경망은 여러 계층으로 구성되며, 오토인코더의 정의는 입력 계층이 출력 계층과 정확히 같은 정보를 포함한다는 것입니다. 입력 계층과 출력 계층이 동일한 단위 수를 갖는 이유는 오토인코더가 입력 데이터를 복제하도록 설계되었기 때문입니다. 오토인코더는 데이터를 분석하고 재구성하여 입력 데이터의 복사본을 출력합니다.
오토인코더를 통해 이동하는 데이터는 입력에서 출력으로 직접 매핑되지 않습니다. 즉, 네트워크는 입력 데이터를 단순히 복사하지 않습니다. 오토인코더에는 세 가지 구성 요소가 있습니다. 입력(인코딩) 부분은 데이터를 압축하고, 중간 부분은 압축된 데이터(또는 병목 현상)를 처리하며, 출력(디코딩) 부분은 압축된 데이터를 원래 데이터와 같은 크기로 복원합니다. 데이터가 오토인코더에 입력되면 인코딩되어 더 작은 크기로 압축됩니다. 네트워크는 인코딩/압축된 데이터에 대해 훈련되고, 해당 데이터의 재구성을 출력합니다.
왜 입력 데이터를 단순히 재구성하는 네트워크를 훈련하고 싶을까요? 이유는 네트워크가 입력 데이터의 “본질” 또는 가장 중요한 특징을 학습하기 때문입니다. 네트워크를 훈련한 후, 특정 특징을 추가하거나 제거하여 유사한 데이터를 생성할 수 있는 모델을 만들 수 있습니다. 예를 들어, 노이즈가 있는 이미지에 오토인코더를 훈련한 다음 훈련된 모델을 사용하여 이미지에서 노이즈를 제거할 수 있습니다.
오토인코더 구조
오토인코더의 구조를 살펴보겠습니다. 여기서 오토인코더의 주요 구조에 대해 논의하겠습니다. 아래 섹션에서 설명할 일반 구조의 변형이 있습니다.

사진: Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)
이전에도 언급했듯이, 오토인코더는 기본적으로 세 가지 구성 요소로 나눌 수 있습니다. 인코더, 병목 현상, 디코더입니다.
오토인코더의 인코더 부분은 일반적으로 피드포워드, 밀접하게 연결된 네트워크입니다. 인코딩 계층의 목적은 입력 데이터를 받아서 차원ality를 줄인 잠재 공간 표현으로 압축하여 새로운 데이터 표현을 생성하는 것입니다.
코드 계층 또는 병목 현상은 압축된 데이터 표현을 다룹니다. 병목 현상 코드는 관찰된 데이터의 가장 관련된 부분, 즉 데이터 재구성을 위해 가장 중요한 특징을 결정하도록 주의 깊게 설계됩니다. 여기서 목표는 데이터를 보존해야 하는 측면과 버릴 수 있는 측면을 결정하는 것입니다. 병목 현상 코드는 표현 크기(표현이 얼마나 комп팩트한지)와 변수/특징 관련성 사이에서 균형을 잡아야 합니다. 병목 현상은 네트워크의 가중치와 편향에 요소별 활성화를 수행합니다. 병목 현상 계층은 때때로 잠재 표현 또는 잠재 변수라고도 합니다.
디코더 계층은 압축된 데이터를 받아서 원래 데이터와 같은 차원으로 복원하는 것을 담당합니다. 변환은 인코더에 의해 생성된 잠재 공간 표현을 사용하여 수행됩니다.
오토인코더의 가장 기본적인 구조는 피드포워드 구조로, 다층 퍼셉트론에서 사용되는 단일 계층 구조와 유사합니다. 일반적인 피드포워드 신경망과 마찬가지로, 오토인코더는 역전파를 통해 훈련됩니다.
오토인코더의 속성
다양한 유형의 오토인코더가 있지만, 모두 특정 속성을 공유합니다.
오토인코더는 자동으로 학습합니다. 레이블이 필요하지 않으며, 충분한 데이터가 주어지면 오토인코더를 특정 유형의 입력 데이터에서 높은 성능으로 훈련시키는 것이 쉽습니다.
오토인코더는 데이터 특정적입니다. 즉, 오토인코더는 이미 훈련된 데이터와 매우 유사한 데이터만 압축할 수 있습니다. 오토인코더는 또한 손실이 발생합니다. 즉, 모델의 출력은 입력 데이터보다 저하됩니다.
오토인코더를 설계할 때, 기계 학습 엔지니어는 네 가지 모델 하이퍼파라미터에 주의해야 합니다. 코드 크기, 계층 수, 계층당 노드 수, 손실 함수입니다.
코드 크기는 네트워크 중간 부분의 노드 수를 결정하며, 노드가 적으면 데이터가 더 압축됩니다. 깊은 오토인코더에서 계층 수는 엔지니어가 적절하다고 판단하는 任意의 수일 수 있지만, 인코더에서 계층당 노드 수는 인코더가 진행될수록 감소해야 합니다. 반면, 디코더에서는 반대가 적용되므로, 계층당 노드 수는 디코더 계층이 마지막 계층에 가까워질수록 증가해야 합니다. 마지막으로, 오토인코더의 손실 함수는 일반적으로 이진 교차 엔트로피 또는 평균 제곱 오차입니다. 이진 교차 엔트로피는 입력 데이터 값이 0-1 범위인 경우 적합합니다.
오토인코더 유형
위에서 언급했듯이, 기본 오토인코더 구조의 변형이 있습니다. 다양한 오토인코더 구조를 살펴보겠습니다.
스PARSE

사진: Michela Massi via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)
일반적인 오토인코더는 데이터를 압축하는 병목 현상을 통해 노드 수를 줄이는 방식으로 작동하지만, 스PARSE 오토인코더는 이러한 일반적인 작동 방식의 대안입니다. 스PARSE 네트워크에서, 은닉 계층은 인코더와 디코더 계층과 동일한 크기를 유지합니다. 대신, 계층 내의 활성화가 페널티를 받습니다. 이는 손실 함수가 입력 데이터의 통계적 특징을 더 잘 포착하도록 설정하는 것입니다. 즉, 스PARSE 오토인코더의 은닉 계층은 전통적인 오토인코더보다 더 많은 단위를 가지고 있지만,任意 시간에 활성화되는 단위의 비율은 제한됩니다. 가장 영향력 있는 활성화 함수는 보존되고, 다른 함수는 무시되며, 이는 네트워크가 입력 데이터의 가장 관련된 특징을 결정하도록 도와줍니다.
CONTRACTIVE
CONTRACTIVE 오토인코더는 데이터의 작은 변동에 대해 강건한 것으로 설계되며, 데이터의 일관된 표현을 유지합니다. 이는 손실 함수에 페널티를 적용함으로써 달성됩니다. 이 정규화 기술은 입력 인코더 활성화의 Jacobian 행렬의 Frobenius 노름에 기반합니다. 이 정규화 기술의 효과는 모델이 유사한 입력에 대해 유사한 인코딩을 생성하도록 강제하는 것입니다.
CONVOLUTIONAL
CONVOLUTIONAL 오토인코더는 데이터를 부분으로 나누고, 이러한 부분을 단순한 신호로 변환하여 새로운 데이터 표현을 생성합니다. CONVOLUTIONAL 신경망과 마찬가지로, CONVOLUTIONAL 오토인코더는 이미지 데이터 학습에 전문적이며, 이미지의 섹션을 순차적으로 이동하는 필터를 사용합니다. 인코딩 계층에서 생성된 인코딩은 이미지의 재구성, 반사, 또는 기하학적 변형을 위해 사용할 수 있습니다. 필터가 네트워크에 의해 학습되면, 충분히 유사한 입력에 대해 특징을 추출하는 데 사용할 수 있습니다.
DENOISING

사진: MAL via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)
DENOISING 오토인코더는 인코딩에 노이즈를 도입하여, 원래 입력 데이터의 훼손된 버전인 인코딩을 생성합니다. 이 훼손된 데이터는 모델을 훈련하는 데 사용되지만, 손실 함수는 출력 값을 원래 입력과 비교하여, 훼손된 입력과 비교하지 않습니다. 목표는 네트워크가 원래, 훼손되지 않은 이미지 버전을 재구성할 수 있도록 하는 것입니다. 훼손된 데이터와 원래 데이터를 비교하여, 네트워크는 데이터의 가장 중요한 특징과 중요하지 않은 특징/노이즈를 학습합니다. 즉, 모델이 훼손된 이미지를 제거하기 위해, 데이터의 가장 중요한 특징을 추출해야 합니다.
VARIATIONAL
VARIATIONAL 오토인코더는 데이터의 잠재 변수가 어떻게 분포하는지에 대한 가정을 통해 작동합니다. VARIATIONAL 오토인코더는 훈련 이미지의 특징/잠재 속성에 대한 확률 분포를 생성합니다. 훈련 중에, 인코더는 입력 이미지의 특징에 대한 잠재 분포를 생성합니다.

네트워크를 훈련하는 동안, 인코딩된 데이터가 분석되고, 인식 모델은 이미지의 평균과 표준 편차를 출력하여, 이러한 값에 기반한 분포를 생성합니다. 이는 잠재 상태에 대해 수행됩니다. 디코더는 해당 분포에서 랜덤 샘플을 추출하여, 네트워크의 초기 입력을 재구성하는 데 사용합니다.
오토인코더 응용 프로그램
오토인코더는 다양한 응용 프로그램에 사용될 수 있지만, 일반적으로 차원 감소, 데이터 노이즈 제거, 특징 추출, 이미지 생성, 시퀀스-시퀀스 예측, 추천 시스템과 같은 작업에 사용됩니다.
데이터 노이즈 제거는 이미지에서 노이즈/그레인을 제거하는 데 오토인코더를 사용하는 것입니다. 유사하게, 오토인코더는 다른 유형의 이미지 손상, 즉 블러리한 이미지 또는 일부가 누락된 이미지를 복원하는 데 사용할 수 있습니다. 차원 감소는 높은 용량 네트워크가 이미지의 유용한 특징을 학습하는 데 도움이 될 수 있으며, 오토인코더는 다른 유형의 신경망을 훈련하는 데 사용할 수 있습니다. 이는 오토인코더를 특징 추출에 사용하는 경우에도 마찬가지입니다.
이미지 생성의 경우, 오토인코더는 가짜 인간 이미지를 생성하거나, 애니메이션 캐릭터를 생성하는 데 사용할 수 있으며, 이는 얼굴 인식 시스템을 설계하거나 애니메이션의 특정 측면을 자동화하는 데 사용할 수 있습니다.
시퀀스-시퀀스 예측 모델은 데이터의 시간적 구조를 결정하는 데 사용할 수 있으며, 오토인코더는 시퀀스의 다음 이벤트를 생성하는 데 사용할 수 있습니다. 이러한 이유로, 오토인코더는 비디오를 생성하는 데 사용할 수 있습니다. 마지막으로, 깊은 오토인코더는 사용자 관심 패턴을 인식하여, 인코더가 사용자 참여 데이터를 분석하고, 디코더가 설정된 패턴에 맞는 추천을 생성하는 추천 시스템을 생성하는 데 사용할 수 있습니다.












