파이썬 날코딩으로 알고 짜는 딥러닝
13장 Autoencoder
JungGwig
2020. 12. 11. 15:28
1. 오토인코더
- 레이블 정보 없이 입력을 재현하는 방식으로 스스로 학습하는 비지도학습 방식의 신경망
- 입력 재현을 통해 데이터의 분포 특성 및 핵심 개념이나 패턴을 파악
- 인코더-디코더 구조를 갖음
- Encoder : 입력 데이터를 정보가 압축된 중간 표현에 해당하는 코드로 변환
- Decoder : 인코더에서 압축한 중간 표현으로부터 입력과 비슷한 출력 생성
- 입력 --(Encoder)--> 코드 --(Decoder)--> 출력
- 활용
- 보통 잘 학습된 인코더를 다른 용도로 활용한다.
- 오토인코더를 통해 학습된 인코더 --> 레이블 데이터가 적은 지도학습에 활용 ( 준지도 학습 )
- 레이블 없이 데이터 내용만으로 유사한 데이터를 찾는 시맨틱 해싱
- 코드
- 인코더에 의해 압축된 중간 표현, 디코더는 이 정보를 처리하여 출력 생성
- 코드의 용량은 하이퍼파라미터이며 일반적으로 입력에 비해 작은 크기로 지정한다.
- 코드 용량이 입력 크기 이상인 경우 간단한 복사 기능으로 손쉽게 입력 재현이 가능하여 학습이 제대로 이루어지지 않을 수 있음.
- 코드 용량이 작을수록 인코더는 입력 정보의 압축 필요성을 가지며 이 과정에서 입력 데이터가 갖는 유용하고 의미 있는 패턴들을 포착할 수 있다
2. 잡음 제거용 오토인코더
- 잡음 주입기 (noise layer)를 통해 오토인코더 입력에 노이즈를 추가
- 이는 학습 과정에서만 사용하고 평가 및 일반화 단계에서는 제거한다.
- Loss Fusion에서는 디코더 출력과 잡음이 주입되지 않은 원본 데이터을 비교한다. 이를 통해 잡음을 제거하는 효과를 얻음
3. Semantic Hashing
- Semantic Search : 콘텐츠 사이의 내용상 유사성을 기준으로 검색 지원
- Hashing Search : 적절한 해싱 키 생성 메커니즘을 이용해 인덱싱 및 검색 지원
- Semantic Hashing = Semantic Search + Hashing Search
- Generate Hashing Key
- 내용상 유사성을 키 값에 반영할 수 있도록 설계
- 잘 학습된 오토인코더의 인코더 활용 가능
- 이진 벡터 형태의 해싱 코드
- n 비트의 벡터를 이용해 2^n 개의 해싱 공간 구별 가능
- 오토인코더를 이용한 Semantic Hashing
- 인코더가 생성하는 유사 이진 코드 형태의 코드를 해싱 키로 활용
- 유사 이진 코드
- 원소 값이 0 or 1은 아니지만 전체적으로 0 or 1 주변으로 밀집하여 분포
- 인코더 최상단에 시그모이드 함수를 두면 쉽게 생성 가능
- 반올림을 이용해 모든 원소 값을 0 or 1인 완전 이진 코드로 변환
- 장점
- 오토인코딩 학습을 통해 쉽게 유사 이진 코드 생성 가능
- 이진 코드 각 비트 값의 의미가 학습을 통해 자동 결정
- 완전 이진 코드 변환 전의 유사 이진 코드를 Semantic 유사도 산출에 활용 가능