본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

이론

비선형 차원축소, 딥러닝 기반 차원 축소, Autoencoder

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .

https://standout.tistory.com/1779

 

입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와 차원축소 Dimensionality Reduction하

차원Dimension입력변수의 개수.사람 등록을 위해 키, 몸무게, 나이가 필요하다면 이 3개가 차원이 된다 .x=(170,65,20)즉 위 벡터는 3개의 요소를 가지므로 3차원 공간의 한 점이 된다. 차원의 저주Curse o

standout.tistory.com

 

 

 

 

차원축소의 방법에는 특성선택, 특성추출이있다. 

https://standout.tistory.com/1780

 

차원축소의 방법: 특성선택 & 특성추출(선형 & 비선형)

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .차원축소에는 대표적으로 선형차원축소와 비선형 차원축소가있다. Autoencoder는 비선형 차

standout.tistory.com

 

 

 

 

특성추출에서의 비선형차원축소 방법중 아래의 방법을 확인해보자 . 

Autoencoder는 비선형 차원축소방법에 포함되나 보통 별도의 딥러닝 기반 차원 축소 카테고리로 분류하기도한다.

 

 

Autoencoer:

딥러닝 기반 차원축소로

입력 - encode -(잠재공간)- decoder - 출력 으로 중앙의 잠재공간에 압축된 저차원이 들어간다.

 

784 차원 이미지를 32차원으로 줄이고 추후 복원하면서 학습과정에서 핵심특징만 남길 수 있다 .

위에서의 PCA, LDA, t-SNE, UMAP이 전통적인 차원 축소기법이라면 Autoencoer은 딥러닝 기반 차원 축소기법. 

https://standout.tistory.com/1781

 

선형차원축소, PCA Principal Component Analysis: 가장 기본적인 차원축소

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .https://standout.tistory.com/1779 입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와

standout.tistory.com

https://standout.tistory.com/1782

 

선형차원축소, LDA Linear Discriminant Analysis

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .https://standout.tistory.com/1779 입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와

standout.tistory.com

https://standout.tistory.com/1783

 

비선형 차원축소, t-SNE, t-distributed Stochastic Neighbor Embedding

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .https://standout.tistory.com/1779 입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와

standout.tistory.com

https://standout.tistory.com/1784

 

비선형 차원축소, UMAP , Uniform Manifold Approximation and Projection

입력변수 개수를 차원, 차원의 저주를 보완하기위해 혹은 시각화하기위한 과정을 차원축소라고 한다 .https://standout.tistory.com/1779 입력변수의 개수 차원 Dimension, 차원의 저주 Curse of Dimensionality 와

standout.tistory.com

 

 

pytorch nn.Module 신경망 클래스를 상속해 압축담당 encoder, 여기서 z=self.encoder 잠재공간이 생성된다.

784 픽셀로 표현하던것을 32개 숫자로 압축해 정보를 담고있고,

decoder로 원래 크기로 복원하는 것. 이때 Sigmoid 출력범위를 0~1로 제한해 픽셀값 표현에 적합하도록 한다 .

 

 

nn.Linear(784,128)
nn.Linear(128,32)이 압축기라면

nn.Linear(32,128)
nn.Linear(128,784)이 복원기.

import torch
import torch.nn as nn
class Autoencoder(nn.Module):
def __init__(self ):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(784, 128),
nn.ReLU(),
nn.Linear(128, 32)
)
self.decoder = nn.Sequential(
nn.Linear(32, 128),
nn.ReLU(),
nn.Linear(128, 784),
nn.Sigmoid()
)
def forward(self, x):
z = self.encoder(x)
out = self.decoder(z)
return out

 

 

autoencoder는 원래 pca/lda/t-sns/umap처럼 예쁘게 분리되는것이 목적이 아니다.  그들의 목적이 차원축소 + 시각화라면 autoencoder의 목적은 입력 이미지 - 압축 - 복원이 목적으로숫자 3 이미지를 다시 만들어내는것이 목표이다.

 

 

 

 

원본이미지와 복원이미지를 비교해보자.