부본 오토인코더란 무엇입니까? - Unite.AI
Rescale 미팅 예약

AI 101

오토인코더란 무엇입니까?

mm
업데이트 on

이전에 비지도 학습 기술에 대해 읽어본 적이 있다면 '라는 용어를 접했을 수도 있습니다.오토 인코더". 오토인코더는 비지도 학습 모델이 개발되는 주요 방법 중 하나입니다. 그런데 오토인코더가 정확히 무엇입니까?

간단히 말해서, 자동 인코더는 데이터를 가져와서 데이터를 압축 및 인코딩한 다음 인코딩 표현에서 데이터를 재구성하는 방식으로 작동합니다. 모델은 손실이 최소화되고 데이터가 최대한 가깝게 재현될 때까지 훈련됩니다. 이 과정을 통해 오토인코더는 데이터의 중요한 특징을 학습할 수 있습니다. 이것이 자동 인코더의 빠른 정의이지만 자동 인코더를 자세히 살펴보고 작동 방식을 더 잘 이해하는 것이 좋습니다. 이 기사에서는 자동 인코더와 해당 응용 프로그램의 아키텍처를 설명하면서 자동 인코더를 이해하기 위해 노력할 것입니다.

오토인코더란 무엇입니까?

자동 인코더 신경망입니다. 신경망은 여러 계층으로 구성되며 자동 인코더의 정의 측면은 입력 계층이 출력 계층만큼 많은 정보를 포함한다는 것입니다. 입력 레이어와 출력 레이어의 유닛 수가 정확히 같은 이유는 오토인코더가 입력 데이터를 복제하는 것을 목표로 하기 때문입니다. 데이터를 분석하고 감독되지 않은 방식으로 재구성한 후 데이터 복사본을 출력합니다.

오토인코더를 통해 이동하는 데이터는 입력에서 출력으로 바로 매핑되지 않습니다. 즉, 네트워크가 입력 데이터를 복사하는 것만이 아닙니다. 오토인코더에는 데이터를 압축하는 인코딩(입력) 부분, 압축된 데이터(또는 병목 현상)를 처리하는 구성 요소, 디코더(출력) 부분의 세 가지 구성 요소가 있습니다. 데이터가 오토인코더에 입력되면 인코딩된 다음 더 작은 크기로 압축됩니다. 그런 다음 네트워크는 인코딩/압축된 데이터에 대해 교육을 받고 해당 데이터의 재생산을 출력합니다.

그렇다면 주어진 데이터를 재구성하기 위해 네트워크를 훈련시키려는 이유는 무엇입니까? 그 이유는 네트워크가 입력 데이터의 "본질" 또는 가장 중요한 기능을 학습하기 때문입니다. 네트워크를 훈련시킨 후 특정 대상 기능을 추가하거나 빼서 유사한 데이터를 합성할 수 있는 모델을 만들 수 있습니다. 예를 들어 거친 이미지에 대해 오토인코더를 훈련시킨 다음 훈련된 모델을 사용하여 이미지에서 그레인/노이즈를 제거할 수 있습니다.

오토인코더 아키텍처

이제 살펴 보자 오토인코더의 구조. 여기에서 오토인코더의 주요 아키텍처에 대해 논의할 것입니다. 아래 섹션에서 논의할 이 일반 아키텍처에는 변형이 있습니다.

사진: Wikimedia Commons를 통한 Michela Massi,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

앞에서 언급한 바와 같이 자동 인코더는 기본적으로 인코더, 병목 현상 및 디코더의 세 가지 구성 요소로 나눌 수 있습니다.

오토인코더의 인코더 부분은 일반적으로 피드포워드 방식의 조밀하게 연결된 네트워크입니다. 인코딩 레이어의 목적은 입력 데이터를 가져와 잠재 공간 표현으로 압축하여 차원이 감소된 데이터의 새로운 표현을 생성하는 것입니다.

코드 계층 또는 병목 현상은 데이터의 압축된 표현을 처리합니다. 병목 현상 코드는 관찰된 데이터의 가장 관련성이 높은 부분을 결정하거나 다른 방식으로 데이터 재구성에 가장 중요한 데이터의 기능을 지정하도록 신중하게 설계되었습니다. 여기서 목표는 보존해야 하는 데이터 측면과 폐기할 수 있는 측면을 결정하는 것입니다. 병목 현상 코드는 표현 크기(표현이 얼마나 간결한지)와 변수/기능 관련성이라는 두 가지 고려 사항의 균형을 맞춰야 합니다. 병목 현상은 네트워크의 가중치와 편향에 대해 요소별 활성화를 수행합니다. 병목 현상 계층은 잠재 표현 또는 잠재 변수라고도 합니다.

디코더 계층은 압축된 데이터를 가져와 변경되지 않은 원본 데이터와 동일한 차원의 표현으로 다시 변환하는 역할을 합니다. 변환은 인코더에 의해 생성된 잠재 공간 표현으로 수행됩니다.

오토인코더의 가장 기본적인 아키텍처는 다층 퍼셉트론에서 사용되는 단층 퍼셉트론과 매우 유사한 구조를 가진 피드 포워드 아키텍처입니다. 일반 피드 포워드 신경망과 마찬가지로 자동 인코더는 역전파를 사용하여 훈련됩니다.

오토인코더의 속성

다양한 유형의 오토인코더가 있지만 모두 이를 통합하는 특정 속성이 있습니다.

오토인코더는 자동으로 학습합니다. 레이블이 필요하지 않으며 충분한 데이터가 제공되면 특정 종류의 입력 데이터에서 자동 인코더가 고성능에 도달하기 쉽습니다.

오토인코더는 데이터에 따라 다릅니다. 이는 오토인코더가 이미 학습한 데이터와 매우 유사한 데이터만 압축할 수 있음을 의미합니다. 자동 인코더도 손실이 있습니다. 즉, 입력 데이터에 비해 모델의 출력이 저하됩니다.

오토인코더를 설계할 때 기계 학습 엔지니어는 코드 크기, 레이어 수, 레이어당 노드, 손실 함수 등 4가지 모델 하이퍼파라미터에 주의를 기울여야 합니다.

코드 크기는 네트워크의 중간 부분을 시작하는 노드 수를 결정하고 더 적은 수의 노드가 데이터를 더 많이 압축합니다. 딥 오토인코더에서 레이어 수는 엔지니어가 적절하다고 생각하는 모든 수일 수 있지만 레이어의 노드 수는 인코더가 진행됨에 따라 감소해야 합니다. 한편, 디코더에서는 그 반대입니다. 즉, 디코더 레이어가 최종 레이어에 접근함에 따라 레이어당 노드 수가 증가해야 합니다. 마지막으로 오토인코더의 손실 함수는 일반적으로 이진 교차 엔트로피 또는 평균 제곱 오차입니다. 이진 교차 엔트로피는 데이터의 입력 값이 0 – 1 범위에 있는 경우에 적합합니다.

오토인코더 유형

위에서 언급했듯이 기존 자동 인코더 아키텍처의 변형이 존재합니다. 다양한 오토인코더 아키텍처를 살펴보겠습니다.

부족한

사진: Wikimedia Commons를 통한 Michela Massi, CC BY SA 4.0(https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

오토인코더는 일반적으로 노드 축소를 통해 데이터를 압축하는 병목 현상이 있지만, 희소 오토인코더s는 일반적인 운영 형식의 대안입니다. 희소 네트워크에서 숨겨진 계층은 인코더 및 디코더 계층과 동일한 크기를 유지합니다. 대신 주어진 레이어 내의 활성화에 불이익을 주어 손실 함수가 입력 데이터의 통계적 특징을 더 잘 캡처하도록 설정합니다. 다른 말로 하면, 스파스 오토인코더의 은닉층에는 기존 오토인코더보다 더 많은 단위가 있지만 특정 시간에 특정 비율만 활성화됩니다. 가장 영향력 있는 활성화 기능은 보존되고 다른 기능은 무시되며, 이 제약 조건은 네트워크가 입력 데이터의 가장 두드러진 기능만 결정하는 데 도움이 됩니다.

수축성

수축성 자동 인코더 데이터의 작은 변화에 대해 탄력적으로 설계되어 데이터의 일관된 표현을 유지합니다. 이는 손실 함수에 페널티를 적용하여 수행됩니다. 이 정규화 기술은 입력 인코더 활성화에 대한 Jacobian 행렬의 Frobenius 표준을 기반으로 합니다. 이 정규화 기술의 효과는 모델이 유사한 입력이 유사한 인코딩을 갖는 인코딩을 구성하도록 강제한다는 것입니다.

길쌈

컨벌루션 오토인코더 데이터를 하위 섹션으로 분할한 다음 이러한 하위 섹션을 함께 합산되는 간단한 신호로 변환하여 데이터의 새로운 표현을 생성함으로써 입력 데이터를 인코딩합니다. 컨볼루션 신경망과 유사하게 이미지 데이터 학습에 특화된 컨볼루션 오토인코더는 이미지 전체를 섹션별로 이동하는 필터를 사용합니다. 인코딩 계층에서 생성된 인코딩은 이미지를 재구성하거나 이미지를 반영하거나 이미지의 기하 구조를 수정하는 데 사용할 수 있습니다. 필터가 네트워크에 의해 학습되면 이미지의 특징을 추출하기 위해 충분히 유사한 입력에 사용할 수 있습니다.

노이즈 제거

사진: Wikimedia Commons를 통한 MAL, CC BY SA 3.0(https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

노이즈 제거 자동 인코더 인코딩에 노이즈를 도입하여 원래 입력 데이터의 손상된 버전인 인코딩을 생성합니다. 이 손상된 버전의 데이터는 모델을 교육하는 데 사용되지만 손실 함수는 출력 값을 손상된 입력이 아닌 원래 입력과 비교합니다. 목표는 네트워크가 이미지의 손상되지 않은 원본 버전을 재현할 수 있도록 하는 것입니다. 손상된 데이터를 원본 데이터와 비교함으로써 네트워크는 데이터의 어떤 기능이 가장 중요하고 어떤 기능이 중요하지 않거나 손상되었는지 학습합니다. 즉, 모델이 손상된 이미지의 노이즈를 제거하려면 이미지 데이터의 중요한 특징을 추출해야 합니다.

변형

변형 자동 인코더 데이터의 잠재 변수가 어떻게 분포되어 있는지에 대한 가정을 통해 작동합니다. Variational Autoencoder는 훈련 이미지/잠재 속성의 다양한 특징에 대한 확률 분포를 생성합니다. 학습할 때 인코더는 입력 이미지의 다양한 기능에 대한 잠재 분포를 생성합니다.

 

모델은 이산 값 대신 가우시안 분포로 특징 또는 이미지를 학습하기 때문에 새로운 이미지를 생성하는 데 사용할 수 있습니다. 가우시안 분포는 벡터를 생성하기 위해 샘플링되며, 이 벡터는 이 샘플 벡터를 기반으로 이미지를 렌더링하는 디코딩 네트워크에 공급됩니다. 기본적으로 모델은 교육 이미지의 공통 기능을 학습하고 이러한 기능이 발생할 확률을 할당합니다. 그런 다음 확률 분포를 사용하여 이미지를 리버스 엔지니어링하여 원본 트레이닝 이미지와 유사한 새 이미지를 생성할 수 있습니다.

네트워크를 훈련할 때 인코딩된 데이터를 분석하고 인식 모델은 두 개의 벡터를 출력하여 이미지의 평균과 표준편차를 도출합니다. 이러한 값을 기반으로 분포가 생성됩니다. 이것은 다른 잠재 상태에 대해 수행됩니다. 그런 다음 디코더는 해당 분포에서 무작위 샘플을 가져와 네트워크에 대한 초기 입력을 재구성하는 데 사용합니다.

오토인코더 애플리케이션

오토인코더는 광범위하게 사용할 수 있습니다. 다양한 응용, 하지만 일반적으로 차원 감소, 데이터 노이즈 제거, 특징 추출, 이미지 생성, 시퀀스 간 예측 및 추천 시스템과 같은 작업에 사용됩니다.

데이터 노이즈 제거는 오토인코더를 사용하여 이미지에서 그레인/노이즈를 제거하는 것입니다. 마찬가지로 오토인코더를 사용하여 흐릿한 이미지 또는 이미지 누락 섹션과 같은 다른 유형의 이미지 손상을 복구할 수 있습니다. 차원 감소는 고용량 네트워크가 이미지의 유용한 기능을 학습하는 데 도움이 될 수 있습니다. 즉, 오토인코더를 사용하여 다른 유형의 신경망 훈련을 강화할 수 있습니다. 이는 특징 추출에 오토인코더를 사용하는 경우에도 마찬가지입니다. 오토인코더는 다른 모델을 훈련시키기 위해 다른 훈련 데이터 세트의 특징을 식별하는 데 사용될 수 있기 때문입니다.

이미지 생성 측면에서 오토인코더는 얼굴 인식 시스템을 설계하거나 애니메이션의 특정 측면을 자동화하는 응용 프로그램이 있는 가짜 인간 이미지 또는 애니메이션 캐릭터를 생성하는 데 사용할 수 있습니다.

Sequence to sequence 예측 모델은 데이터의 시간적 구조를 결정하는 데 사용할 수 있습니다. 이러한 이유로 자동 인코더를 사용하여 비디오를 생성할 수 있습니다. 마지막으로 딥 오토인코더는 사용자 관심과 관련된 패턴을 선택하여 추천 시스템을 만드는 데 사용할 수 있습니다. 인코더는 사용자 참여 데이터를 분석하고 디코더는 설정된 패턴에 맞는 추천을 생성합니다.

전문 분야의 블로거 및 프로그래머 기계 학습 깊은 학습 주제. 다니엘은 다른 사람들이 사회적 이익을 위해 AI의 힘을 사용하도록 돕기를 희망합니다.