입력 데이터를 압축시키고 다시 확장해서 결과 데이터를 입력 데이터와 최대한 동일하게 만들기 위해
파라미터를 학습시키는 Auto Encoder에 대해서 알아보겠습니다.
1. Auto Encoder 란?
- 입력 데이터를 압축시켜 축소 한 후 다시 확장하여 결과 데이터를 입력 데이터와 동일하게 만드는 딥 뉴럴 네트워크 모델.
- 특징 학습 , 차원 축소, 표현 학습 등에 많이 사용 됨
- 입력 데이터를 label로 삼아 학습하기때문에 self-supervised learning이라고도 하고
- y 값이 존재하지 않는다는 점에서 Unsupervised Learning으로 분류되기도 한다.
https://mc.ai/auto-encoder-in-biology/
위에 그림을 보면 손글씨 이미지 숫자 1을 모델에 넣은 후 결과값으로 동일한 이미지 1을 출력하는 오토 인코더로 보인다.
입력 데이터인 784개의 뉴련을 500개, 300개, 2 개로 압축시킴으로써 입력 데이터에서 대표적인 특징을 추출한다.
이를 기반으로 다시 300개, 500개 뉴런으로 확장시켜 최종적으로 입력 데이터와 똑같은 사이즈 784개의 뉴런 개수로 최종 값을 출력시키는 것이다.
여기서 이미지를 압축 시키는 부분은 Encoder / 확장 시키는 부분은 Decoder라고 부른다.
2. Stacked Auto Encoder
Auto Encoder는 보통 Stacked Auto Encoder 구조로 많이 활용된다. (대칭적 구조)
우선은 Input layer의 입력 데이터를 압축시켜 가장 대표적인 특성을 추출하는 층은 Encoded Layer에 있는 노드.
결과 데이터가 입력 데이터에 얼마나 동일하게 출력될 것인지 좌지우지 하는 중요한 역할을 한다고 한다.
만약 출력데이터가 입력 데이터와 동일하지 않게 출력이 된다면 Encoded Layer의 노드 개수가 적은 것이 원인 일 가능성이 크다.
3. Denoising Auto Encoder(DAE)
DAE는 임의의 데이터인 노이즈 데이터를 제거하거나 노이즈를 일부러 추가해 중요한 특징을 추출하도록 하는 Auto Encoder
멀쩡한 이미지에 노이즈를 첨가하는 이유는...?
학습 데이터는 깨끗한 이미지겠지만 실제 Test데이터는 노이즈가 첨가되어있을 수 있기때문이다.
깨끗한 원본 이미지로만 모델을 학습시켰다면 노이즈가 첨가된 데이터가 들어왔을때 이미지를 제대로 복구하지 못하는 현상이 발생할 수 있다.( 오버피팅 방지)
이제 실제 코드를 이용해서 확인해보자.
오토인코더 실습 1
1. 신경망 구성
2. 데이터 로드 / 정규화
3. 모델 학습 (x_train, x_test)
4. 모델 예측 결과 값
입력값과 예측값을 비교해보았을 때 흐리지만 꽤 비슷한 이미지가 출력되는 것을 확인 할 수 있습니다.
다음시간에는 GAN에 대해서 알아보도록 하겠습니다.
'AI' 카테고리의 다른 글
추천시스템 | 비즈니스 적용사례 | 추천시스템의 어려움들 | 추천시스템 파이프라인 (1) | 2023.12.03 |
---|---|
GAN(Generative Adversarial Network)에 대해서 알아보자 (0) | 2022.01.17 |
[자연어처리] 영화 리뷰 데이터로 평점을 예측해보자 (0) | 2022.01.13 |
RNN:: LSTM이란 무엇일까 (0) | 2022.01.12 |
[자연어처리] KoNLPy를 이용한 형태소 분석, 품사 태깅 (0) | 2021.12.27 |