[핸즈온 머신러닝] 제 15장 정리
📗강의노트/핸즈온 머신러닝

[핸즈온 머신러닝] 제 15장 정리

728x90
반응형

15강. 오토인코더

< Keyword >


AutoEncodoer :

비지도로 입력 데이터의 효율적인 표현인 coding을 학습할 수 있는 신경망이다. 간단하게 생각해보면 입력을 출력으로 복사하는 것 뿐이다.


  • Encoder : 입력을 내부 표현으로 바꿔준다.
    ( recognition network )
  • Decoder : 내부 표현을 출력으로 바꿔준다.
    ( generative network )

출력과 입력의 개수는 동일해야한다.


재구성 (Reconstruction) 손실 :

오토인코더가 입력을 재구성하기 때문에 출력을 종종 재구성이라고 한다. 비용 함수는 재구성(출력)이 입력과 다를 때 모델에 패널티를 부과하는 ‘재구성 손실’을 포함한다.

# Outputs = 출력 / X = 입력
# MSE / Cross-Entropy를 사용할 수도 있다. 
reconstruction_loss = tf.reduce_mean(tf.square(outputs - X))


과소완전 (Undercomplete) :

내부 표현이 입력 데이터보다 저차원일 때를 말함.
ex) 입력 데이터(3) > 내부 표현(2)


오토인코더의 형태 :

  • 잡음제거 오토인코더 :
    입력에 잡음을 추가하고, 노이즈가 없는 원본 입력을 복원하도록 훈련시키는 것. 노이즈가 있으므로 단순히 입력을 출력으로 복사하는 것이 아니라 데이터에 있는 패턴을 찾아야한다. 가우시안 잡음이거나 드롭아웃으로 잡음을 발생시킬 수 있다.
# Gaussian Noise
X = tf.placeholder(tf.float32,shape=[None,28*28])
X_noise = X + 1.0 + tf.random.normal(tf.shape(X))

# Dropout
dropout_rate = 0.3
training = tf.placeholder_with_default(False,shape=(),name='training')

X = tf.placeholder(tf.float32,shape=[None,28*28])
X_drop = tf.layers.dense(X,dropout_rate,training=training)
  • 희소 오토인코더 :
    비용 함수에 적절한 항을 추가하여 오토인코더가 코딩층에서 활성화되는 뉴런 수를 감소시키도록 만든다.
    먼저 코딩층의 실제 희소 정도를 측정해야 한다. 이를 위해 전체 훈련 배치에 대해 코딩층의 평균적인 활성화를 계산한다.
    예를 들어 한 뉴련의 평균 활성화가 0.3이고 목표 희소 정도가 0.1이라면 이 뉴런은 덜 활성화되도록 규제되어야 한다. 간단하게는 비용함수에 (0.30.1)2을 추가하는 것이다.
    하지만 MSE보다 KL-Divergence가 더 강한 그레디언트를 갖기에 이를 사용한다.

DKL(p||q)=ip(i)logp(i)q(i)

여기서는 코딩층에서 뉴런이 활성화될 목표 확률 p, 실제 확률 q사이의 발산을 측정한다.

DKL(p||q)=plogpq+(1p)log1p1q

식의 왼쪽은 활성화 된 경우, 오른쪽은 활성화되지 않은 경우를 계산한다.

sparsity_loss = tf.reduce_sum(kl_divergence(target,real))


VAE (Variational AutoEncoder) :

확률적 오토인코더, 생성 오토인코더이다.

주어진 입력에 대해 바로 코딩을 바로 만드는 대신, 가우시안 분포에서 샘플링한 μ,σ를 이용한다. 디코딩은 보통과 같다. (가우시안 분포로부터 랜덤한 코딩을 샘플링해 디코딩하면 된다.)

비용 함수는 이전의 재구성 손실과, latent loss가 존재한다.

latent_loss = 0.5 * tf.reduce_sum(tf.square(sigma) + 
tf.square(mu) - 1 - tf.log(eps + tf.square(sigma))


다른 오토인코더들 :

  • 수축 오토인코더 (CAE) :
    학습하는 동안 입력에 대한 코딩의 변화율이 작도록 제약을 받음.
  • 적대적 생성 네트워크 (GAN) :
    판별자와 생성자간의 minimax game. GAN 리뷰 참고!


728x90
반응형