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

사진: 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 오토인코더는 데이터의 작은 변형에 대해 강건한 표현을 유지하도록 설계되었습니다. 이는 손실 함수에 패널티를 적용함으로써 달성됩니다. 이 정규화 기술은 입력 인코더 활성화의 자코비안 행렬의 프로베니우스 노름에 기반합니다. 이 정규화 기술의 효과는 모델이 일관된 데이터 표현을 구성하도록 강제하는 것입니다. 즉, 유사한 입력은 유사한 인코딩을 갖습니다.
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 오토인코더는 훈련 이미지/잠재 속성의 다양한 특징에 대한 확률 분포를 생성합니다. 훈련 중에 인코더는 입력 이미지의 다양한 특징에 대한 잠재 분포를 생성합니다.

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












