CS/NLP
[NLP] Auto Encoder (1)
sliver__
2022. 8. 11. 00:40
728x90
[오토인코더 & GAN]
- 지도 없이도 latent representation 또는 coding, 입력 데이터의 밀집을 표현하는 인공 신경망
- 입력보다 훨씬 낮은 차원을 가지므로 차원 축소 및 시각화에 유용하다.
- Generative model은 훈련 데이터와 매우 비슷한 새로운 데이터를 생성한다.
- GAN은 이미지 편집, 초해상도, 데이터 증식 등에 사용된다.
- 오토인코더는 데이터를 효율적으로 표현하는 방법을 배우게 한다.
- GAN은 생성자/판별자로 구성된다.
- Adversarial traning
[인코더 & 디코더]
- 인코더 ( Encoder )
- 입력을 내부 표현으로 바꾼다
- 디코더 ( Decoder )
- 내부 표현을 출력으로 바꾸는 디코더 ( 또는 generative model )
- 오토인코더가 입력을 재구성하기 때문에 출력을 reconstruction이라고 부른다.
- cost function은 construction이 input과 다를 때 벌점을 부과하는 reconstruction loss를 포함한다.
- undercomplete는 내표의 표현이 입력 데이터보다 저차원이다.
[과소완전 선형 오토인코더로 PCA 수행]
- 단순한 PCA를 수행하기 위해서는 활성화 함수를 사용하지 않으며 비용 함수는 MSE이다.
- 동일한 데이터 셋이 입력과 타깃이다.
- 오토인코더는 데이터에 분산이 가능한 많이 보존되도록 데이터를 투영할 최상의 2D 평면을 찾는다 ( 입력 : 3D )
[적층 오토인코더]
- 오토인코더도 은닉층을 여러 개 가질 수 있다.
- stacked autoencoder 또는 deep autoencoder 라고 한다.
- 오토인코더가 너무 강력해진다면 각각의 입력 데이터를 임의의 한 숫자로 매핑하도록 학습하고 디코더는 임의의 숫자로 매핑을 학습하게 된다.
- 이럴 경우 reconstruction은 완벽하지만 유용한 데이터 표현을 학습하지 못할 것이다.
- stacked autoencoder의 기준은 코딩 층을 기준으로 대칭이다.
[가중치 묶기]
- 오토인코더가 대칭일 땐 디코더의 가중치와 인코더의 가중치를 묶는게 일반적인 방법이다.
- 모델에 있는 가중치의 수를 절반으로 줄여서 훈련 속도를 높이고 과대적합의 위험을 줄여준다.
- N개의 층을 갖고 $W_{L}$이 L번째 층의 가중치를 나타낸다고 했을 때 (첫 번째 은닉층, N/2는 코딩 층, N은 출력층) 디코더 층의 가중치는 $ W_{N-L+1} = W_{L}^{T} $ 이다.
[한 번에 오토인코더 한 개씩 훈련하기]
- 한 번에 전체 오토인코더를 훈련하는 것보다 오토인코더 하나를 훈련하고 이를 쌓아올려서 한 개의 적층 오토인코더를 만들 수 있다.
- 많은 오토 인코더를 훈련해 아주 깊은 적층 오토인코더를 만들 수 있다.
[합성곱 오토인코더]
- convolution autoencoder : 이미지에 대한 오토인코더
- 합성곱층과 풀링 층으로 구성된 일반적인 CNN
- 인코더 : 공간 방향의 차원을 줄이고 channel을 늘린다.
- 디코더 : 이미지 스케일을 늘리고 channel을 원본 차원으로 돌린다.
[순환 오토인코더]
- 시계열이나 텍스트와 같은 시퀀스에 대한 오토인코더를 recurrent autoencoder로 만들 수 있다.
- 인코더 : 입력 시퀀스를 하나의 벡터로 합축하는 시퀀스-투-벡터 RNN
- 디코더 : 벡터 - 투 - 시퀀스 RNN
728x90