인공지능/공부

딥러닝개론 10 ~ 11 장 AutoEncoder

이게될까 2024. 6. 15. 14:39
728x90
728x90

비지도학습(self-supervised learning)로 Encoder와 Decoder로 이루어져 있으며 타겟이 자기 자신인 모델이다.

인코더 - 오리지널 데이터가 압축된다 => 효과적으로 압축하기 위해 뉴럴넷을 어떻게 만들어야 하는가
디코더 - 압축된 정보를 통해 다시 복구한다. => 압축을 효과적으로 하면 입출력이 같아진다.
병목층(은닉층, Latentspace) - 모델의 뉴런 개수가 최소인 계층 == 차원이 가장 낮은 입력 데이터의 압축 표현

데이터 압축을 할 때 사용하고, 패턴이 아닌 잡음을 날릴 수 있다.

인코더 - z (latent space) = h(x(input))
디코더 - y = g(z) = g(h(x))
Loss - ||x - y||^2

변형 - 색칠하기, 피쳐 변환, 차원 줄이기, 노이즈 줄이기, 워터마크 지우기, 이상탐지, 딥러닝 기반 무선 송수신기, PCA

이상탐지 - 정상 데이터만 학습한 후 이상탐지에 사용한다.
이상 데이터를 넣으면 전혀 보지 못한 데이터가 나온다.

딥러닝 기반 무선 송수신기 - 중간 중간 로스를 따져서 각 블록이 제대로 확인하는지 확인 

가중치 묶기 - 인코더와 디코더가 대칭인 경우 사용한다. 
학습 속도를 높이고, 오버피팅 위험을 줄인다.
이거 애매한데 transpose하면 안된다고 교수님이 그러셨는데,,,

https://medium.com/@lmayrandprovencher/building-an-autoencoder-with-tied-weights-in-keras-c4a559c529a2

 

Building an Autoencoder with Tied Weights in Keras

A hands-on tutorial to implement tied weights autoencoders in Keras and develop intuitions about how they work.

medium.com

https://www.researchgate.net/figure/tied-weights-linear-fully-connected-multi-view-autoencoder_fig2_306258062

찾아 본 것들은 전부다 Transpose가 맞는데 왜 교수님...

층을 나누어 학습하기 - 천제 층을 그룹핑하여 각 그룹별로 학습을 진행해도 된다.
인코더와 디코더의 기능이 다르므로 모델이 복잡해지면 각각 학습해도 된다.

비지도 학습에서 pretraining으로 오토 인코더 사용
디코더를 때고 latent space를 분류기로 사용해도 된다.

잡음 제거 - input에 노이즈를 더해주거나 Dropout을 통해 잡음을 넣어줘 원본을 만들도록 진행한다.

 

자동 채색 실습

인코더에서 CNN쓰고,
디코더에서는 FCN 사용했다.
채색 문제에서는 디코더에서 CNN이 오히려 악조건
Input에 채색 정보는 없다 -> 디코더에서 만들어야 된다.
-> CNN으로 만들기 힘들다.

728x90