오토 인코더

Vincent·2023년 6월 2일
0

인코더(encoder)와 디코더(decoder)를 통해 압축과 해제를 실행
• 인코더는 입력(𝑥)의 정보를 최대한 보존하도록 손실 압축을 수행
• 디코더는 중간 결과물(𝑧)의 정보를 입력(𝑥)과 같아지도록 압축 해제(복원)를 수행
• 복원을 성공적으로 하기 위해, 오토인코더(autoencoder)는 특징(feature)을 추출하는 방법을 자동으로 학습
• 필요한 정보와 필요없는 정보를 구분할 수 있게 됨

Encoder

• 복원에 필요한 정보를 중심으로 손실 압축을 수행
• 필요없는 정보(뻔한 특징)는 버릴 수도 있음
(e.g. 일반적인 사람의 얼굴을 학습할 때: 사람의 얼굴에서 눈은 2개다)

Bottleneck

• 입력(𝑥)에 비해 작은 차원으로 구성
• 따라서 정보의 선택과 압축이 발생, 차원에 따라 압축의 정도를 결정함
• 그러므로 𝑧 는 입력(𝑥)에 대한 feature vector라고 할 수 있다.
• 인코더에 통과시키는 것은 feature vector에 대한 embedding 과정이라고 볼 수 있음 (a.k.a Embedding Vector)
• 압축의 효율이 높아야 하므로, 입력에 비해 dense vector일 것.

Decoder

• 압축된 중간 결과물(𝑧)을 바탕으로 최대한 입력(𝑥)과 비슷하게 복원
• 보통 MSE Loss를 통해 최적화 수행
• 뻔한 정보는 주어지지 않더라도 어차피 알 수 있기에 복원 가능

Mapping to Hidden(Latent) Space

• 각 레이어의 결과물을 hidden vector라고 부름
• 모두 feature vector라고 볼 수 있음
• 비슷한 특징을 가진 샘플은 비슷한 hidden vector를 가질 것!
• 신경망(또는 레이어)을 통과시키는 것은 입력 공간(고차원 input space)에서 잠재 공간(저차원 latent space)로의 맵핑 과정

실습

model.py

autoencoder.py

flatten : 28 * 28 => 784

학습이 덜 되서 그런지 4와 9가 겹친다

profile
Frontend & Artificial Intelligence

0개의 댓글