본문 바로가기

Deep Learning71

17.6 Denoising AutoEncoder Denoising AutoEncoder * autoencoder를 훈련시킬 때 일부러 원본에 noise를 추가하는 방식을 사용하면 더욱 효율적인 결과를 얻을 수 있게 된다. 더 자세히 설명하자면, autoencoder의 encoder부분에서 원본 데이터를 입력 받은 후 noise(Gaussian noise같은 random한 noise)를 추가하거나, dropout을 사용해 원본 데이터의 일부를 의도적으로 훼손하는 방법을 사용해 특징 vector를 구성하고, 이 특징 vector로부터 decoder가 원본 데이터를 복원하는 훈련을 하는 방법을 사용하는 것이다. 1) Gaussian noise 사용 tf.random.set_seed(42) np.random.seed(42) denoising_encoder =.. 2021. 12. 26.
17.5 Recurrent AutoEncoder Recurrent AutoEncoder * 만약 시계열 데이터나, 텍스트 데이터를 처리해야 할 경우라면, Dense layer로 autoencoder를 구성하는 것 보다 lstm layer를 사용하는 것이 좋은 성능을 기대할 수 있을 것이다. recurrent_encoder = keras.models.Sequential([ keras.layers.LSTM(100, return_sequences=True, input_shape=[28, 28]), keras.layers.LSTM(30) ]) recurrent_decoder = keras.models.Sequential([ keras.layers.RepeatVector(28, input_shape=[30]), keras.layers.LSTM(100, retu.. 2021. 12. 26.
17.4 Convolutional AutoEncoder Convolutional AutoEncoder * 이미지를 다룰 경우 convolution layer를 사용해야 더 좋은 결과를 얻을 수 있다는 것을 알고 있을 것이다. 2D 이미지를 1차원 vector로 flatten해서 Dense layer에 집어넣어 연산하는 것 보다 이미지를 그대로 사용해(정확히는 그대로 사용하는 것 처럼 처리) 공간상의 정보를 보존하는 방법을 사용하는 것이 훨씬 결과가 좋다. * autoencoder도 마찬가지로 convolution layer를 사용하는 것이 이미지 처리에서 성능이 좋다. 이미지 처리를 위한 encoder decoder를 구성할 때 encoder부분에서는 일반적인 CNN 구조를 사용한다. convolution layer를 통과하고 maxpooling layer를.. 2021. 12. 26.
17.3 Stacked AutoEncoder Stacked AutoEncoder란 * 우리가 최초로 17.1 에서 살펴보았던 autoencoder의 구조의 경우 input layer, hidden layer, output layer로 이뤄진 가장 기본적인 autoencoder였다. 여기서 hidden layer의 개수를 늘린 것을 stacked autoencoder 혹은 deep autoencoder라고 부른다. * 이렇게 hidden layer를 늘리는 것은 autoencoder가 더 복잡한 처리를 가능하게 하겠지만, 한 편으로 일반적으로 network가 deep해질 때 생기는 overfitting등의 문제가 발생할 수 있기 때문에 과도하게 deep한 network를 구성하지 않도록 주의해야 한다. 케라스를 이용하여 stacked autoenco.. 2021. 12. 23.